diff --git a/Assets/Editor/Translation/scriptcanvas_en_us.ts b/Assets/Editor/Translation/scriptcanvas_en_us.ts index 7b8361c879..6d436b7caf 100644 --- a/Assets/Editor/Translation/scriptcanvas_en_us.ts +++ b/Assets/Editor/Translation/scriptcanvas_en_us.ts @@ -62164,7 +62164,7 @@ An Entity can be selected by using the pick button, or by dragging an Entity fro HANDLER_TAGGLOBALNOTIFICATIONBUS_ONENTITYTAGADDED_OUTPUT0_NAME Simple Type: EntityID C++ Type: const EntityId& - Entity + EntityID HANDLER_TAGGLOBALNOTIFICATIONBUS_ONENTITYTAGADDED_OUTPUT0_TOOLTIP @@ -62202,7 +62202,7 @@ An Entity can be selected by using the pick button, or by dragging an Entity fro HANDLER_TAGGLOBALNOTIFICATIONBUS_ONENTITYTAGREMOVED_OUTPUT0_NAME Simple Type: EntityID C++ Type: const EntityId& - Entity + EntityId HANDLER_TAGGLOBALNOTIFICATIONBUS_ONENTITYTAGREMOVED_OUTPUT0_TOOLTIP @@ -81852,7 +81852,7 @@ The element is removed from its current parent and added as a child of the new p HANDLER_SPAWNERCOMPONENTNOTIFICATIONBUS_ONENTITYSPAWNED_OUTPUT1_NAME Simple Type: EntityID C++ Type: const EntityId& - Entity + EntityID HANDLER_SPAWNERCOMPONENTNOTIFICATIONBUS_ONENTITYSPAWNED_OUTPUT1_TOOLTIP @@ -89198,7 +89198,7 @@ The element is removed from its current parent and added as a child of the new p HANDLER_ENTITYBUS_ONENTITYACTIVATED_OUTPUT0_NAME Simple Type: EntityID C++ Type: const EntityId& - Entity + EntityID HANDLER_ENTITYBUS_ONENTITYACTIVATED_OUTPUT0_TOOLTIP @@ -89236,7 +89236,7 @@ The element is removed from its current parent and added as a child of the new p HANDLER_ENTITYBUS_ONENTITYDEACTIVATED_OUTPUT0_NAME Simple Type: EntityID C++ Type: const EntityId& - Entity + EntityID HANDLER_ENTITYBUS_ONENTITYDEACTIVATED_OUTPUT0_TOOLTIP diff --git a/Assets/Engine/EngineAssets/Slices/DefaultLevelSetup.slice b/Assets/Engine/EngineAssets/Slices/DefaultLevelSetup.slice index 1b7dfdf40d..b82c482c4f 100644 --- a/Assets/Engine/EngineAssets/Slices/DefaultLevelSetup.slice +++ b/Assets/Engine/EngineAssets/Slices/DefaultLevelSetup.slice @@ -145,7 +145,7 @@ - + diff --git a/Assets/Engine/Entities/GeomCache.ent b/Assets/Engine/Entities/GeomCache.ent deleted file mode 100644 index e7a63190c3..0000000000 --- a/Assets/Engine/Entities/GeomCache.ent +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cf441215a769562f88aa20711aee68dadcbf02597d1e2270547055e8e6aec6a3 -size 77 diff --git a/Assets/Engine/Scripts/Entities/Render/GeomCache.lua b/Assets/Engine/Scripts/Entities/Render/GeomCache.lua deleted file mode 100644 index b496aecd8d..0000000000 --- a/Assets/Engine/Scripts/Entities/Render/GeomCache.lua +++ /dev/null @@ -1,178 +0,0 @@ ----------------------------------------------------------------------------------------------------- --- --- Copyright (c) Contributors to the Open 3D Engine Project. --- For complete copyright and license terms please see the LICENSE at the root of this distribution. --- --- SPDX-License-Identifier: Apache-2.0 OR MIT --- --- --- ----------------------------------------------------------------------------------------------------- -Script.ReloadScript("scripts/Utils/EntityUtils.lua") - -GeomCache = -{ - Properties = { - geomcacheFile = "EngineAssets/GeomCaches/defaultGeomCache.cax", - bPlaying = 0, - fStartTime = 0, - bLooping = 0, - objectStandIn = "", - materialStandInMaterial = "", - objectFirstFrameStandIn = "", - materialFirstFrameStandInMaterial = "", - objectLastFrameStandIn = "", - materialLastFrameStandInMaterial = "", - fStandInDistance = 0, - fStreamInDistance = 0, - Physics = { - bPhysicalize = 0, - } - }, - - Editor={ - Icon = "animobject.bmp", - IconOnTop = 1, - }, - - bPlaying = 0, - currentTime = 0, - precacheTime = 0, - bPrecachedOutputTriggered = false, -} - -function GeomCache:OnLoad(table) - self.currentTime = table.currentTime; -end - -function GeomCache:OnSave(table) - table.currentTime = self.currentTime; -end - -function GeomCache:OnSpawn() - self.currentTime = self.Properties.fStartTime; - self:SetFromProperties(); -end - -function GeomCache:OnReset() - self.currentTime = self.Properties.fStartTime; - self.bPrecachedOutputTriggered = true; - self:SetFromProperties(); -end - -function GeomCache:SetFromProperties() - local Properties = self.Properties; - - if (Properties.geomcacheFile == "") then - do return end; - end - - self:LoadGeomCache(0, Properties.geomcacheFile); - - self.bPlaying = Properties.bPlaying; - if (self.bPlaying == 0) then - self.currentTime = Properties.fStartTime; - end - - self:SetGeomCachePlaybackTime(self.currentTime); - self:SetGeomCacheParams(Properties.bLooping, Properties.objectStandIn, Properties.materialStandInMaterial, Properties.objectFirstFrameStandIn, - Properties.materialFirstFrameStandInMaterial, Properties.objectLastFrameStandIn, Properties.materialLastFrameStandInMaterial, - Properties.fStandInDistance, Properties.fStreamInDistance); - self:SetGeomCacheStreaming(false, 0); - - if (Properties.Physics.bPhysicalize == 1) then - local tempPhysParams = EntityCommon.TempPhysParams; - self:Physicalize(0, PE_ARTICULATED, tempPhysParams); - end - - self:Activate(1); -end - -function GeomCache:PhysicalizeThis() - local Physics = self.Properties.Physics; - EntityCommon.PhysicalizeRigid(self, 0, Physics, false); -end - -function GeomCache:OnUpdate(dt) - if (self.bPlaying == 1) then - self:SetGeomCachePlaybackTime(self.currentTime); - end - - if (self:IsGeomCacheStreaming() and not self.bPrecachedOutputTriggered) then - local precachedTime = self:GetGeomCachePrecachedTime(); - if (precachedTime >= self.precacheTime) then - self:ActivateOutput("Precached", true); - self.bPrecachedOutputTriggered = true; - end - end - - if (self.bPlaying == 1) then - self.currentTime = self.currentTime + dt; - end -end - -function GeomCache:OnPropertyChange() - self:SetFromProperties(); -end - -function GeomCache:Event_Start(sender, val) - self.bPlaying = 1; -end - -function GeomCache:Event_Stop(sender, value) - self.bPlaying = 0; -end - -function GeomCache:Event_SetTime(sender, value) - self.currentTime = value; -end - -function GeomCache:Event_StartStreaming(sender, value) - self.bPrecachedOutputTriggered = false; - self:SetGeomCacheStreaming(true, self.currentTime); -end - -function GeomCache:Event_StopStreaming(sender, value) - self:SetGeomCacheStreaming(false, 0); -end - -function GeomCache:Event_PrecacheTime(sender, value) - self.precacheTime = value; -end - -function GeomCache:Event_Hide(sender, value) - self:Hide(1); -end - -function GeomCache:Event_Unhide(sender, value) - self:Hide(0); -end - -function GeomCache:Event_StopDrawing(sender, value) - self:SetGeomCacheDrawing(false); -end - -function GeomCache:Event_StartDrawing(sender, value) - self:SetGeomCacheDrawing(true); -end - -GeomCache.FlowEvents = -{ - Inputs = - { - Start = { GeomCache.Event_Start, "any" }, - Stop = { GeomCache.Event_Stop, "any" }, - SetTime = { GeomCache.Event_SetTime, "float" }, - StartStreaming = { GeomCache.Event_StartStreaming, "any" }, - StopStreaming = { GeomCache.Event_StopStreaming, "any" }, - PrecacheTime = { GeomCache.Event_PrecacheTime, "float" }, - Hide = { GeomCache.Event_Hide, "any" }, - Unhide = { GeomCache.Event_Unhide, "any" }, - StopDrawing = { GeomCache.Event_StopDrawing, "any" }, - StartDrawing = { GeomCache.Event_StartDrawing, "any" }, - }, - Outputs = - { - Precached = "bool", - }, -} diff --git a/AutomatedTesting/Assets/Physics/Collider_PxMeshAutoAssigned/SphereBot/r0-b_body.fbx.assetinfo b/AutomatedTesting/Assets/Physics/Collider_PxMeshAutoAssigned/SphereBot/R0-B_Body.fbx.assetinfo similarity index 100% rename from AutomatedTesting/Assets/Physics/Collider_PxMeshAutoAssigned/SphereBot/r0-b_body.fbx.assetinfo rename to AutomatedTesting/Assets/Physics/Collider_PxMeshAutoAssigned/SphereBot/R0-B_Body.fbx.assetinfo diff --git a/AutomatedTesting/Assets/Physics/Collider_PxMeshConvexMeshCollides/SphereBot/r0-b_body.fbx.assetinfo b/AutomatedTesting/Assets/Physics/Collider_PxMeshConvexMeshCollides/SphereBot/R0-B_Body.fbx.assetinfo similarity index 100% rename from AutomatedTesting/Assets/Physics/Collider_PxMeshConvexMeshCollides/SphereBot/r0-b_body.fbx.assetinfo rename to AutomatedTesting/Assets/Physics/Collider_PxMeshConvexMeshCollides/SphereBot/R0-B_Body.fbx.assetinfo diff --git a/AutomatedTesting/CMakeLists.txt b/AutomatedTesting/CMakeLists.txt index dee9d73aea..1c5382ba4b 100644 --- a/AutomatedTesting/CMakeLists.txt +++ b/AutomatedTesting/CMakeLists.txt @@ -8,11 +8,12 @@ if(NOT PROJECT_NAME) cmake_minimum_required(VERSION 3.20) + include(cmake/CompilerSettings.cmake) project(AutomatedTesting LANGUAGES C CXX VERSION 1.0.0.0 ) - include(EngineFinder.cmake OPTIONAL) + include(cmake/EngineFinder.cmake OPTIONAL) find_package(o3de REQUIRED) o3de_initialize() else() diff --git a/AutomatedTesting/Gem/Code/enabled_gems.cmake b/AutomatedTesting/Gem/Code/enabled_gems.cmake index e6a4d6ca37..3915fd36da 100644 --- a/AutomatedTesting/Gem/Code/enabled_gems.cmake +++ b/AutomatedTesting/Gem/Code/enabled_gems.cmake @@ -54,6 +54,7 @@ set(ENABLED_GEMS AWSMetrics PrefabBuilder AudioSystem + Terrain Profiler Multiplayer ) diff --git a/AutomatedTesting/Gem/PythonTests/AWS/Windows/aws_metrics/aws_metrics_automation_test.py b/AutomatedTesting/Gem/PythonTests/AWS/Windows/aws_metrics/aws_metrics_automation_test.py index 34b2217916..6f3113d771 100644 --- a/AutomatedTesting/Gem/PythonTests/AWS/Windows/aws_metrics/aws_metrics_automation_test.py +++ b/AutomatedTesting/Gem/PythonTests/AWS/Windows/aws_metrics/aws_metrics_automation_test.py @@ -14,6 +14,7 @@ from datetime import datetime import ly_test_tools.log.log_monitor from AWS.common import constants +from AWS.common.resource_mappings import AWS_RESOURCE_MAPPINGS_ACCOUNT_ID_KEY from .aws_metrics_custom_thread import AWSMetricsThread # fixture imports @@ -200,6 +201,59 @@ class TestAWSMetricsWindows(object): for thread in operational_threads: thread.join() + @pytest.mark.parametrize('level', ['AWS/Metrics']) + def test_realtime_and_batch_analytics_no_global_accountid(self, + level: str, + launcher: pytest.fixture, + asset_processor: pytest.fixture, + workspace: pytest.fixture, + aws_utils: pytest.fixture, + resource_mappings: pytest.fixture, + aws_metrics_utils: pytest.fixture): + """ + Verify that the metrics events are sent to CloudWatch and S3 for analytics. + """ + # Remove top-level account ID from resource mappings + resource_mappings.clear_select_keys([AWS_RESOURCE_MAPPINGS_ACCOUNT_ID_KEY]) + # Start Kinesis analytics application on a separate thread to avoid blocking the test. + kinesis_analytics_application_thread = AWSMetricsThread(target=update_kinesis_analytics_application_status, + args=(aws_metrics_utils, resource_mappings, True)) + kinesis_analytics_application_thread.start() + + log_monitor = setup(launcher, asset_processor) + + # Kinesis analytics application needs to be in the running state before we start the game launcher. + kinesis_analytics_application_thread.join() + launcher.args = ['+LoadLevel', level] + launcher.args.extend(['-rhi=null']) + start_time = datetime.utcnow() + with launcher.start(launch_ap=False): + monitor_metrics_submission(log_monitor) + + # Verify that real-time analytics metrics are delivered to CloudWatch. + aws_metrics_utils.verify_cloud_watch_delivery( + AWS_METRICS_FEATURE_NAME, + 'TotalLogins', + [], + start_time) + logger.info('Real-time metrics are sent to CloudWatch.') + + # Run time-consuming operations on separate threads to avoid blocking the test. + operational_threads = list() + operational_threads.append( + AWSMetricsThread(target=query_metrics_from_s3, + args=(aws_metrics_utils, resource_mappings))) + operational_threads.append( + AWSMetricsThread(target=verify_operational_metrics, + args=(aws_metrics_utils, resource_mappings, start_time))) + operational_threads.append( + AWSMetricsThread(target=update_kinesis_analytics_application_status, + args=(aws_metrics_utils, resource_mappings, False))) + for thread in operational_threads: + thread.start() + for thread in operational_threads: + thread.join() + @pytest.mark.parametrize('level', ['AWS/Metrics']) def test_unauthorized_user_request_rejected(self, level: str, diff --git a/AutomatedTesting/Gem/PythonTests/AWS/Windows/client_auth/aws_client_auth_automation_test.py b/AutomatedTesting/Gem/PythonTests/AWS/Windows/client_auth/aws_client_auth_automation_test.py index 198fb934d9..077a068a18 100644 --- a/AutomatedTesting/Gem/PythonTests/AWS/Windows/client_auth/aws_client_auth_automation_test.py +++ b/AutomatedTesting/Gem/PythonTests/AWS/Windows/client_auth/aws_client_auth_automation_test.py @@ -12,6 +12,7 @@ import pytest import ly_test_tools.log.log_monitor from AWS.common import constants +from AWS.common.resource_mappings import AWS_RESOURCE_MAPPINGS_ACCOUNT_ID_KEY # fixture imports from assetpipeline.ap_fixtures.asset_processor_fixture import asset_processor @@ -70,6 +71,41 @@ class TestAWSClientAuthWindows(object): halt_on_unexpected=True, ) assert result, 'Anonymous credentials fetched successfully.' + + @pytest.mark.parametrize('level', ['AWS/ClientAuth']) + def test_anonymous_credentials_no_global_accountid(self, + level: str, + launcher: pytest.fixture, + resource_mappings: pytest.fixture, + workspace: pytest.fixture, + asset_processor: pytest.fixture + ): + """ + Test to verify AWS Cognito Identity pool anonymous authorization. + + Setup: Updates resource mapping file using existing CloudFormation stacks. + Tests: Getting credentials when no credentials are configured + Verification: Log monitor looks for success credentials log. + """ + # Remove top-level account ID from resource mappings + resource_mappings.clear_select_keys([AWS_RESOURCE_MAPPINGS_ACCOUNT_ID_KEY]) + + asset_processor.start() + asset_processor.wait_for_idle() + + file_to_monitor = os.path.join(launcher.workspace.paths.project_log(), constants.GAME_LOG_NAME) + log_monitor = ly_test_tools.log.log_monitor.LogMonitor(launcher=launcher, log_file_path=file_to_monitor) + + launcher.args = ['+LoadLevel', level] + launcher.args.extend(['-rhi=null']) + + with launcher.start(launch_ap=False): + result = log_monitor.monitor_log_for_lines( + expected_lines=['(Script) - Success anonymous credentials'], + unexpected_lines=['(Script) - Fail anonymous credentials'], + halt_on_unexpected=True, + ) + assert result, 'Anonymous credentials fetched successfully.' def test_password_signin_credentials(self, launcher: pytest.fixture, diff --git a/AutomatedTesting/Gem/PythonTests/AWS/Windows/core/test_aws_resource_interaction.py b/AutomatedTesting/Gem/PythonTests/AWS/Windows/core/test_aws_resource_interaction.py index 949186ad50..59c517fd1c 100644 --- a/AutomatedTesting/Gem/PythonTests/AWS/Windows/core/test_aws_resource_interaction.py +++ b/AutomatedTesting/Gem/PythonTests/AWS/Windows/core/test_aws_resource_interaction.py @@ -18,6 +18,7 @@ import ly_test_tools.environment.process_utils as process_utils import ly_test_tools.o3de.asset_processor_utils as asset_processor_utils from AWS.common import constants +from AWS.common.resource_mappings import AWS_RESOURCE_MAPPINGS_ACCOUNT_ID_KEY # fixture imports from assetpipeline.ap_fixtures.asset_processor_fixture import asset_processor @@ -141,3 +142,51 @@ class TestAWSCoreAWSResourceInteraction(object): 'The expected file wasn\'t successfully downloaded.' # clean up the file directories. shutil.rmtree(s3_download_dir) + + @pytest.mark.parametrize('expected_lines', [ + ['(Script) - [S3] Head object request is done', + '(Script) - [S3] Head object success: Object example.txt is found.', + '(Script) - [S3] Get object success: Object example.txt is downloaded.', + '(Script) - [Lambda] Completed Invoke', + '(Script) - [Lambda] Invoke success: {"statusCode": 200, "body": {}}', + '(Script) - [DynamoDB] Results finished']]) + @pytest.mark.parametrize('unexpected_lines', [ + ['(Script) - [S3] Head object error: No response body.', + '(Script) - [S3] Get object error: Request validation failed, output file directory doesn\'t exist.', + '(Script) - Request validation failed, output file miss full path.', + '(Script) - ']]) + def test_scripting_behavior_no_global_accountid(self, + level: str, + launcher: pytest.fixture, + workspace: pytest.fixture, + asset_processor: pytest.fixture, + resource_mappings: pytest.fixture, + aws_utils: pytest.fixture, + expected_lines: typing.List[str], + unexpected_lines: typing.List[str]): + """ + Setup: Updates resource mapping file using existing CloudFormation stacks. + Tests: Interact with AWS S3, DynamoDB and Lambda services. + Verification: Script canvas nodes can communicate with AWS services successfully. + """ + + resource_mappings.clear_select_keys([AWS_RESOURCE_MAPPINGS_ACCOUNT_ID_KEY]) + log_monitor, s3_download_dir = setup(launcher, asset_processor) + write_test_data_to_dynamodb_table(resource_mappings, aws_utils) + + launcher.args = ['+LoadLevel', level] + launcher.args.extend(['-rhi=null']) + + with launcher.start(launch_ap=False): + result = log_monitor.monitor_log_for_lines( + expected_lines=expected_lines, + unexpected_lines=unexpected_lines, + halt_on_unexpected=True + ) + + assert result, "Expected lines weren't found." + + assert os.path.exists(os.path.join(s3_download_dir, 'output.txt')), \ + 'The expected file wasn\'t successfully downloaded.' + # clean up the file directories. + shutil.rmtree(s3_download_dir) diff --git a/AutomatedTesting/Gem/PythonTests/AWS/common/resource_mappings.py b/AutomatedTesting/Gem/PythonTests/AWS/common/resource_mappings.py index 5f01ecdbf8..988d5bf1fc 100644 --- a/AutomatedTesting/Gem/PythonTests/AWS/common/resource_mappings.py +++ b/AutomatedTesting/Gem/PythonTests/AWS/common/resource_mappings.py @@ -102,3 +102,17 @@ class ResourceMappings: def get_resource_name_id(self, resource_key: str): return self._resource_mappings[AWS_RESOURCE_MAPPINGS_KEY][resource_key]['Name/ID'] + + def clear_select_keys(self, resource_keys=None) -> None: + """ + Clears values from select resource mapping keys. + :param resource_keys: list of keys to clear out + """ + with open(self._resource_mapping_file_path) as file_content: + resource_mappings = json.load(file_content) + + for key in resource_keys: + resource_mappings[key] = '' + + with open(self._resource_mapping_file_path, 'w') as file_content: + json.dump(resource_mappings, file_content, indent=4) \ No newline at end of file diff --git a/AutomatedTesting/Gem/PythonTests/Atom/TestSuite_Main.py b/AutomatedTesting/Gem/PythonTests/Atom/TestSuite_Main.py index d183ca12be..b4de39ae98 100644 --- a/AutomatedTesting/Gem/PythonTests/Atom/TestSuite_Main.py +++ b/AutomatedTesting/Gem/PythonTests/Atom/TestSuite_Main.py @@ -41,6 +41,10 @@ class TestAutomation(EditorTestSuite): class AtomEditorComponents_DisplayMapperAdded(EditorSharedTest): from Atom.tests import hydra_AtomEditorComponents_DisplayMapperAdded as test_module + @pytest.mark.test_case_id("C36525661") + class AtomEditorComponents_EntityReferenceAdded(EditorSharedTest): + from Atom.tests import hydra_AtomEditorComponents_EntityReferenceAdded as test_module + @pytest.mark.test_case_id("C32078121") class AtomEditorComponents_ExposureControlAdded(EditorSharedTest): from Atom.tests import hydra_AtomEditorComponents_ExposureControlAdded as test_module @@ -57,10 +61,18 @@ class TestAutomation(EditorTestSuite): class AtomEditorComponents_HDRColorGradingAdded(EditorSharedTest): from Atom.tests import hydra_AtomEditorComponents_HDRColorGradingAdded as test_module + @pytest.mark.test_case_id("C32078116") + class AtomEditorComponents_HDRiSkyboxAdded(EditorSharedTest): + from Atom.tests import hydra_AtomEditorComponents_HDRiSkyboxAdded as test_module + @pytest.mark.test_case_id("C32078117") class AtomEditorComponents_LightAdded(EditorSharedTest): from Atom.tests import hydra_AtomEditorComponents_LightAdded as test_module + @pytest.mark.test_case_id("C36525662") + class AtomEditorComponents_LookModificationAdded(EditorSharedTest): + from Atom.tests import hydra_AtomEditorComponents_LookModificationAdded as test_module + @pytest.mark.test_case_id("C32078123") class AtomEditorComponents_MaterialAdded(EditorSharedTest): from Atom.tests import hydra_AtomEditorComponents_MaterialAdded as test_module @@ -98,5 +110,9 @@ class TestAutomation(EditorTestSuite): class AtomEditorComponents_ReflectionProbeAdded(EditorSharedTest): from Atom.tests import hydra_AtomEditorComponents_ReflectionProbeAdded as test_module + @pytest.mark.test_case_id("C36525666") + class AtomEditorComponents_SSAOAdded(EditorSharedTest): + from Atom.tests import hydra_AtomEditorComponents_SSAOAdded as test_module + class ShaderAssetBuilder_RecompilesShaderAsChainOfDependenciesChanges(EditorSharedTest): from Atom.tests import hydra_ShaderAssetBuilder_RecompilesShaderAsChainOfDependenciesChanges as test_module diff --git a/AutomatedTesting/Gem/PythonTests/Atom/atom_utils/atom_component_helper.py b/AutomatedTesting/Gem/PythonTests/Atom/atom_utils/atom_component_helper.py index 50cc15f7e8..9f37873557 100644 --- a/AutomatedTesting/Gem/PythonTests/Atom/atom_utils/atom_component_helper.py +++ b/AutomatedTesting/Gem/PythonTests/Atom/atom_utils/atom_component_helper.py @@ -172,8 +172,7 @@ def create_basic_atom_level(level_name): entity_position=default_position, components=["HDRi Skybox", "Global Skylight (IBL)"], parent_id=default_level.id) - global_skylight_asset_path = os.path.join( - "LightingPresets", "greenwich_park_02_4k_iblskyboxcm_iblspecular.exr.streamingimage") + global_skylight_asset_path = os.path.join("LightingPresets", "default_iblskyboxcm.exr.streamingimage") global_skylight_asset_value = asset.AssetCatalogRequestBus( bus.Broadcast, "GetAssetIdByPath", global_skylight_asset_path, math.Uuid(), False) global_skylight.get_set_test(0, "Controller|Configuration|Cubemap Texture", global_skylight_asset_value) diff --git a/AutomatedTesting/Gem/PythonTests/Atom/atom_utils/atom_constants.py b/AutomatedTesting/Gem/PythonTests/Atom/atom_utils/atom_constants.py index 817ff1fad0..ef9e90802b 100644 --- a/AutomatedTesting/Gem/PythonTests/Atom/atom_utils/atom_constants.py +++ b/AutomatedTesting/Gem/PythonTests/Atom/atom_utils/atom_constants.py @@ -57,11 +57,13 @@ class AtomComponentProperties: def camera(property: str = 'name') -> str: """ Camera component properties. + - 'Field of view': Sets the value for the camera's FOV (Field of View) in degrees, i.e. 60.0 :param property: From the last element of the property tree path. Default 'name' for component name string. :return: Full property path OR component name if no property specified. """ properties = { 'name': 'Camera', + 'Field of view': 'Controller|Configuration|Field of view' } return properties[property] @@ -202,11 +204,13 @@ class AtomComponentProperties: def grid(property: str = 'name') -> str: """ Grid component properties. + - 'Secondary Grid Spacing': The spacing value for the secondary grid, i.e. 1.0 :param property: From the last element of the property tree path. Default 'name' for component name string. :return: Full property path OR component name if no property specified. """ properties = { 'name': 'Grid', + 'Secondary Grid Spacing': 'Controller|Configuration|Secondary Grid Spacing', } return properties[property] @@ -231,11 +235,13 @@ class AtomComponentProperties: def hdri_skybox(property: str = 'name') -> str: """ HDRi Skybox component properties. + - 'Cubemap Texture': Asset.id for the cubemap texture to set. :param property: From the last element of the property tree path. Default 'name' for component name string. :return: Full property path OR component name if no property specified. """ properties = { 'name': 'HDRi Skybox', + 'Cubemap Texture': 'Controller|Configuration|Cubemap Texture', } return properties[property] @@ -259,12 +265,16 @@ class AtomComponentProperties: Look Modification component properties. Requires PostFX Layer component. - 'requires' a list of component names as strings required by this component. Use editor_entity_utils EditorEntity.add_components(list) to add this list of requirements.\n + - 'Enable look modification' Toggle active state of the component True/False + - 'Color Grading LUT' Asset.id for the LUT used for affecting level look. :param property: From the last element of the property tree path. Default 'name' for component name string. :return: Full property path OR component name if no property specified. """ properties = { 'name': 'Look Modification', 'requires': [AtomComponentProperties.postfx_layer()], + 'Enable look modification': 'Controller|Configuration|Enable look modification', + 'Color Grading LUT': 'Controller|Configuration|Color Grading LUT', } return properties[property] @@ -274,12 +284,14 @@ class AtomComponentProperties: Material component properties. Requires one of Actor OR Mesh component. - 'requires' a list of component names as strings required by this component. Only one of these is required at a time for this component.\n + - 'Material Asset': the material Asset.id of the material. :param property: From the last element of the property tree path. Default 'name' for component name string. :return: Full property path OR component name if no property specified. """ properties = { 'name': 'Material', 'requires': [AtomComponentProperties.actor(), AtomComponentProperties.mesh()], + 'Material Asset': 'Default Material|Material Asset', } return properties[property] diff --git a/AutomatedTesting/Gem/PythonTests/Atom/golden_images/AreaLight_1.ppm b/AutomatedTesting/Gem/PythonTests/Atom/golden_images/AreaLight_1.ppm index 0725999dcf..8695f6bb93 100644 --- a/AutomatedTesting/Gem/PythonTests/Atom/golden_images/AreaLight_1.ppm +++ b/AutomatedTesting/Gem/PythonTests/Atom/golden_images/AreaLight_1.ppm @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:954d7d0df47c840a24e313893800eb3126d0c0d47c3380926776b51833778db7 +oid sha256:aee1fd4d5264e5ef1676b507409ce70af6358cf1ff368d9aeb17f7b2597dfbca size 6220817 diff --git a/AutomatedTesting/Gem/PythonTests/Atom/golden_images/AreaLight_2.ppm b/AutomatedTesting/Gem/PythonTests/Atom/golden_images/AreaLight_2.ppm index 3a45bd31e3..d45d3f1581 100644 --- a/AutomatedTesting/Gem/PythonTests/Atom/golden_images/AreaLight_2.ppm +++ b/AutomatedTesting/Gem/PythonTests/Atom/golden_images/AreaLight_2.ppm @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e81c19128f42ba362a2d5f3ccf159dfbc942d67ceeb1ac8c21f295a6fd9d2ce5 +oid sha256:d4787cdafbcc2fe71c1cb3f1da53a249db839a9df539a9e88be43ccd6d8e4d6a size 6220817 diff --git a/AutomatedTesting/Gem/PythonTests/Atom/golden_images/AreaLight_3.ppm b/AutomatedTesting/Gem/PythonTests/Atom/golden_images/AreaLight_3.ppm index 15d679b784..0661ead69f 100644 --- a/AutomatedTesting/Gem/PythonTests/Atom/golden_images/AreaLight_3.ppm +++ b/AutomatedTesting/Gem/PythonTests/Atom/golden_images/AreaLight_3.ppm @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5e20801213e065b6ea8c95ede81c23faa9b6dc70a2002dc5bced293e1bed989f +oid sha256:5fac5bf41c9b16b6fbd762868e5cf514376af92d6ef7ebb9e819f024f1a3e1a7 size 6220817 diff --git a/AutomatedTesting/Gem/PythonTests/Atom/golden_images/AreaLight_4.ppm b/AutomatedTesting/Gem/PythonTests/Atom/golden_images/AreaLight_4.ppm index 85c083a386..a7fc77f0ec 100644 --- a/AutomatedTesting/Gem/PythonTests/Atom/golden_images/AreaLight_4.ppm +++ b/AutomatedTesting/Gem/PythonTests/Atom/golden_images/AreaLight_4.ppm @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e250f812e594e5152bf2d6f23caa8b53b78276bfdf344d7a8d355dd96cb995c0 +oid sha256:7a23969670499524725535e8be7428b55b6f3e887cc24e2e903f7ea821a6d1a5 size 6220817 diff --git a/AutomatedTesting/Gem/PythonTests/Atom/golden_images/AreaLight_5.ppm b/AutomatedTesting/Gem/PythonTests/Atom/golden_images/AreaLight_5.ppm index d575de761e..7404ab3ccc 100644 --- a/AutomatedTesting/Gem/PythonTests/Atom/golden_images/AreaLight_5.ppm +++ b/AutomatedTesting/Gem/PythonTests/Atom/golden_images/AreaLight_5.ppm @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:95be359041f8291c74b335297a4dfe9902a180510f24a181b15e1a5ba4d3b024 +oid sha256:2f1f4d8865c56ed7f96f339c39e5feb4e0dbc6c6a8b4a7843b4166381b06b00d size 6220817 diff --git a/AutomatedTesting/Gem/PythonTests/Atom/golden_images/AtomBasicLevelSetup.ppm b/AutomatedTesting/Gem/PythonTests/Atom/golden_images/AtomBasicLevelSetup.ppm index ef41b6cf77..acfbe57900 100644 --- a/AutomatedTesting/Gem/PythonTests/Atom/golden_images/AtomBasicLevelSetup.ppm +++ b/AutomatedTesting/Gem/PythonTests/Atom/golden_images/AtomBasicLevelSetup.ppm @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:07e09d3eb5bf0cee3d9b3752aaad40f3ead1dcc5ddd837a6226fadde55d57274 +oid sha256:5d4ee5641e19eef08dd6b93d2f4054a1aae2165325416ed2cbf0b8243f2c0b06 size 6220817 diff --git a/AutomatedTesting/Gem/PythonTests/Atom/golden_images/SpotLight_1.ppm b/AutomatedTesting/Gem/PythonTests/Atom/golden_images/SpotLight_1.ppm index bbbd127929..3104088689 100644 --- a/AutomatedTesting/Gem/PythonTests/Atom/golden_images/SpotLight_1.ppm +++ b/AutomatedTesting/Gem/PythonTests/Atom/golden_images/SpotLight_1.ppm @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:118e43e4b915e262726183467cc4b82f244565213fea5b6bfe02be07f0851ab1 +oid sha256:55c8f0d1790bb12660b7557630efca297b2a1b59e6c93167a2563da79e0a8255 size 6220817 diff --git a/AutomatedTesting/Gem/PythonTests/Atom/golden_images/SpotLight_2.ppm b/AutomatedTesting/Gem/PythonTests/Atom/golden_images/SpotLight_2.ppm index 8e716fabcc..287ec406e1 100644 --- a/AutomatedTesting/Gem/PythonTests/Atom/golden_images/SpotLight_2.ppm +++ b/AutomatedTesting/Gem/PythonTests/Atom/golden_images/SpotLight_2.ppm @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dc2ce3256a6552975962c9e113c52c1a22bf3817d417151f6f60640dd568e0fa +oid sha256:082ff368b621e12b083d96562a0889b11a1d683767a74296cbe6d8732830e9e8 size 6220817 diff --git a/AutomatedTesting/Gem/PythonTests/Atom/golden_images/SpotLight_3.ppm b/AutomatedTesting/Gem/PythonTests/Atom/golden_images/SpotLight_3.ppm index 6b6a5a5d6e..9de8785f65 100644 --- a/AutomatedTesting/Gem/PythonTests/Atom/golden_images/SpotLight_3.ppm +++ b/AutomatedTesting/Gem/PythonTests/Atom/golden_images/SpotLight_3.ppm @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:287d98890b35427688999760f9d066bcbff1a3bc9001534241dc212b32edabd8 +oid sha256:78cc62d89782899747875b41abee57c2efdfacf4c8af6511c88f82d76eaae4ca size 6220817 diff --git a/AutomatedTesting/Gem/PythonTests/Atom/golden_images/SpotLight_4.ppm b/AutomatedTesting/Gem/PythonTests/Atom/golden_images/SpotLight_4.ppm index eb05228cc2..93acc14dbc 100644 --- a/AutomatedTesting/Gem/PythonTests/Atom/golden_images/SpotLight_4.ppm +++ b/AutomatedTesting/Gem/PythonTests/Atom/golden_images/SpotLight_4.ppm @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:66e91c92c868167c850078cd91714db47e10a96e23cc30191994486bd79c353f +oid sha256:3d6719326f4dacae278d1723090ce1182193b793f250963af8be4b2c298e8841 size 6220817 diff --git a/AutomatedTesting/Gem/PythonTests/Atom/golden_images/SpotLight_5.ppm b/AutomatedTesting/Gem/PythonTests/Atom/golden_images/SpotLight_5.ppm index 5e12edc46d..9cd58caae5 100644 --- a/AutomatedTesting/Gem/PythonTests/Atom/golden_images/SpotLight_5.ppm +++ b/AutomatedTesting/Gem/PythonTests/Atom/golden_images/SpotLight_5.ppm @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d950d173f5101820c5e18205401ca08ce5feeff2302ac2920b292750d86a8fa4 +oid sha256:9e492bb394fb18fb117f8a5b61cd2789922f9d6e88fc83189b5b6d59ffb1c3ef size 6220817 diff --git a/AutomatedTesting/Gem/PythonTests/Atom/golden_images/SpotLight_6.ppm b/AutomatedTesting/Gem/PythonTests/Atom/golden_images/SpotLight_6.ppm index d442d90287..136eecbaaf 100644 --- a/AutomatedTesting/Gem/PythonTests/Atom/golden_images/SpotLight_6.ppm +++ b/AutomatedTesting/Gem/PythonTests/Atom/golden_images/SpotLight_6.ppm @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:72eddb7126eae0c839b933886e0fb69d78229f72d49ef13199de28df2b7879db +oid sha256:caca85f7728f660daae36afc81d681ba2de2377c516eb3c637599de5c94012aa size 6220817 diff --git a/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomEditorComponents_EntityReferenceAdded.py b/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomEditorComponents_EntityReferenceAdded.py new file mode 100644 index 0000000000..dddcca64fa --- /dev/null +++ b/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomEditorComponents_EntityReferenceAdded.py @@ -0,0 +1,158 @@ +""" +Copyright (c) Contributors to the Open 3D Engine Project. +For complete copyright and license terms please see the LICENSE at the root of this distribution. + +SPDX-License-Identifier: Apache-2.0 OR MIT +""" + + +class Tests: + creation_undo = ( + "UNDO Entity creation success", + "UNDO Entity creation failed") + creation_redo = ( + "REDO Entity creation success", + "REDO Entity creation failed") + entity_reference_creation = ( + "Entity Reference Entity successfully created", + "Entity Reference Entity failed to be created") + entity_reference_component = ( + "Entity has an Entity Reference component", + "Entity failed to find Entity Reference component") + enter_game_mode = ( + "Entered game mode", + "Failed to enter game mode") + exit_game_mode = ( + "Exited game mode", + "Couldn't exit game mode") + is_visible = ( + "Entity is visible", + "Entity was not visible") + is_hidden = ( + "Entity is hidden", + "Entity was not hidden") + entity_deleted = ( + "Entity deleted", + "Entity was not deleted") + deletion_undo = ( + "UNDO deletion success", + "UNDO deletion failed") + deletion_redo = ( + "REDO deletion success", + "REDO deletion failed") + + +def AtomEditorComponents_EntityReference_AddedToEntity(): + """ + Summary: + Tests the Entity Reference component can be added to an entity and has the expected functionality. + + Test setup: + - Wait for Editor idle loop. + - Open the "Base" level. + + Expected Behavior: + The component can be added, used in game mode, hidden/shown, deleted, and has accurate required components. + Creation and deletion undo/redo should also work. + + Test Steps: + 1) Create an Entity Reference entity with no components. + 2) Add Entity Reference component to Entity Reference entity. + 3) UNDO the entity creation and component addition. + 4) REDO the entity creation and component addition. + 5) Enter/Exit game mode. + 6) Test IsHidden. + 7) Test IsVisible. + 8) Delete Entity Reference entity. + 9) UNDO deletion. + 10) REDO deletion. + 11) Look for errors. + + :return: None + """ + + import azlmbr.legacy.general as general + + from editor_python_test_tools.editor_entity_utils import EditorEntity + from editor_python_test_tools.utils import Report, Tracer, TestHelper + from Atom.atom_utils.atom_constants import AtomComponentProperties + + with Tracer() as error_tracer: + # Test setup begins. + # Setup: Wait for Editor idle loop before executing Python hydra scripts then open "Base" level. + TestHelper.init_idle() + TestHelper.open_level("", "Base") + + # Test steps begin. + # 1. Create an Entity Reference entity with no components. + entity_reference_entity = EditorEntity.create_editor_entity(AtomComponentProperties.entity_reference()) + Report.critical_result(Tests.entity_reference_creation, entity_reference_entity.exists()) + + # 2. Add Entity Reference component to Entity Reference entity. + entity_reference_component = entity_reference_entity.add_component( + AtomComponentProperties.entity_reference()) + Report.critical_result( + Tests.entity_reference_component, + entity_reference_entity.has_component(AtomComponentProperties.entity_reference())) + + # 3. UNDO the entity creation and component addition. + # -> UNDO component addition. + general.undo() + # -> UNDO naming entity. + general.undo() + # -> UNDO selecting entity. + general.undo() + # -> UNDO entity creation. + general.undo() + general.idle_wait_frames(1) + Report.result(Tests.creation_undo, not entity_reference_entity.exists()) + + # 4. REDO the entity creation and component addition. + # -> REDO entity creation. + general.redo() + # -> REDO selecting entity. + general.redo() + # -> REDO naming entity. + general.redo() + # -> REDO component addition. + general.redo() + general.idle_wait_frames(1) + Report.result(Tests.creation_redo, entity_reference_entity.exists()) + + # 5. Enter/Exit game mode. + TestHelper.enter_game_mode(Tests.enter_game_mode) + general.idle_wait_frames(1) + TestHelper.exit_game_mode(Tests.exit_game_mode) + + # 6. Test IsHidden. + entity_reference_entity.set_visibility_state(False) + Report.result(Tests.is_hidden, entity_reference_entity.is_hidden() is True) + + # 7. Test IsVisible. + entity_reference_entity.set_visibility_state(True) + general.idle_wait_frames(1) + Report.result(Tests.is_visible, entity_reference_entity.is_visible() is True) + + # 8. Delete Entity Reference entity. + entity_reference_entity.delete() + Report.result(Tests.entity_deleted, not entity_reference_entity.exists()) + + # 9. UNDO deletion. + general.undo() + Report.result(Tests.deletion_undo, entity_reference_entity.exists()) + + # 10. REDO deletion. + general.redo() + Report.result(Tests.deletion_redo, not entity_reference_entity.exists()) + + # 11. Look for errors and asserts. + TestHelper.wait_for_condition(lambda: error_tracer.has_errors or error_tracer.has_asserts, 1.0) + for error_info in error_tracer.errors: + Report.info(f"Error: {error_info.filename} {error_info.function} | {error_info.message}") + for assert_info in error_tracer.asserts: + Report.info(f"Assert: {assert_info.filename} {assert_info.function} | {assert_info.message}") + + +if __name__ == "__main__": + from editor_python_test_tools.utils import Report + Report.start_test(AtomEditorComponents_EntityReference_AddedToEntity) diff --git a/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomEditorComponents_GlobalSkylightIBLAdded.py b/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomEditorComponents_GlobalSkylightIBLAdded.py index db8f2daaee..7f0c38e289 100644 --- a/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomEditorComponents_GlobalSkylightIBLAdded.py +++ b/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomEditorComponents_GlobalSkylightIBLAdded.py @@ -151,7 +151,7 @@ def AtomEditorComponents_GlobalSkylightIBL_AddedToEntity(): Report.result(Tests.is_visible, global_skylight_entity.is_visible() is True) # 8. Set the Diffuse Image asset on the Global Skylight (IBL) entity. - diffuse_image_path = os.path.join("LightingPresets", "greenwich_park_02_4k_iblskyboxcm.exr.streamingimage") + diffuse_image_path = os.path.join("LightingPresets", "default_iblskyboxcm.exr.streamingimage") diffuse_image_asset = Asset.find_asset_by_path(diffuse_image_path, False) global_skylight_component.set_component_property_value( AtomComponentProperties.global_skylight('Diffuse Image'), diffuse_image_asset.id) @@ -161,7 +161,7 @@ def AtomEditorComponents_GlobalSkylightIBL_AddedToEntity(): AtomComponentProperties.global_skylight('Diffuse Image'))) # 9. Set the Specular Image asset on the Global Light (IBL) entity. - specular_image_path = os.path.join("LightingPresets", "greenwich_park_02_4k_iblskyboxcm.exr.streamingimage") + specular_image_path = os.path.join("LightingPresets", "default_iblskyboxcm.exr.streamingimage") specular_image_asset = Asset.find_asset_by_path(specular_image_path, False) global_skylight_component.set_component_property_value( AtomComponentProperties.global_skylight('Specular Image'), specular_image_asset.id) diff --git a/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomEditorComponents_HDRiSkyboxAdded.py b/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomEditorComponents_HDRiSkyboxAdded.py new file mode 100644 index 0000000000..0f96bc5424 --- /dev/null +++ b/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomEditorComponents_HDRiSkyboxAdded.py @@ -0,0 +1,177 @@ +""" +Copyright (c) Contributors to the Open 3D Engine Project. +For complete copyright and license terms please see the LICENSE at the root of this distribution. + +SPDX-License-Identifier: Apache-2.0 OR MIT +""" + + +class Tests: + creation_undo = ( + "UNDO Entity creation success", + "UNDO Entity creation failed") + creation_redo = ( + "REDO Entity creation success", + "REDO Entity creation failed") + hdri_skybox_entity_creation = ( + "HDRi Skybox successfully created", + "HDRi Skybox failed to be created") + hdri_skybox_component = ( + "Entity has an HDRi Skybox component", + "Entity failed to find HDRi Skybox component") + cubemap_property_set = ( + "Cubemap property set on HDRi Skybox component", + "Couldn't set Cubemap property on HDRi Skybox component") + enter_game_mode = ( + "Entered game mode", + "Failed to enter game mode") + exit_game_mode = ( + "Exited game mode", + "Couldn't exit game mode") + is_visible = ( + "Entity is visible", + "Entity was not visible") + is_hidden = ( + "Entity is hidden", + "Entity was not hidden") + entity_deleted = ( + "Entity deleted", + "Entity was not deleted") + deletion_undo = ( + "UNDO deletion success", + "UNDO deletion failed") + deletion_redo = ( + "REDO deletion success", + "REDO deletion failed") + + +def AtomEditorComponents_HDRiSkybox_AddedToEntity(): + """ + Summary: + Tests the HDRi Skybox component can be added to an entity and has the expected functionality. + + Test setup: + - Wait for Editor idle loop. + - Open the "Base" level. + + Expected Behavior: + The component can be added, used in game mode, hidden/shown, deleted, and has accurate required components. + Creation and deletion undo/redo should also work. + + Test Steps: + 1) Create an HDRi Skybox with no components. + 2) Add an HDRi Skybox component to HDRi Skybox. + 3) UNDO the entity creation and component addition. + 4) REDO the entity creation and component addition. + 5) Enter/Exit game mode. + 6) Test IsHidden. + 7) Test IsVisible. + 8) Delete HDRi Skybox. + 9) UNDO deletion. + 10) REDO deletion. + 11) Look for errors. + + :return: None + """ + + import os + + import azlmbr.legacy.general as general + + from editor_python_test_tools.asset_utils import Asset + from editor_python_test_tools.editor_entity_utils import EditorEntity + from editor_python_test_tools.utils import Report, Tracer, TestHelper + from Atom.atom_utils.atom_constants import AtomComponentProperties + + with Tracer() as error_tracer: + # Test setup begins. + # Setup: Wait for Editor idle loop before executing Python hydra scripts then open "Base" level. + TestHelper.init_idle() + TestHelper.open_level("", "Base") + + # Test steps begin. + # 1. Create an HDRi Skybox with no components. + hdri_skybox_entity = EditorEntity.create_editor_entity( + AtomComponentProperties.hdri_skybox()) + Report.critical_result(Tests.hdri_skybox_entity_creation, + hdri_skybox_entity.exists()) + + # 2. Add an HDRi Skybox component to HDRi Skybox. + hdri_skybox_component = hdri_skybox_entity.add_component( + AtomComponentProperties.hdri_skybox()) + Report.critical_result( + Tests.hdri_skybox_component, + hdri_skybox_entity.has_component(AtomComponentProperties.hdri_skybox())) + + # 3. UNDO the entity creation and component addition. + # -> UNDO component addition. + general.undo() + # -> UNDO naming entity. + general.undo() + # -> UNDO selecting entity. + general.undo() + # -> UNDO entity creation. + general.undo() + general.idle_wait_frames(1) + Report.result(Tests.creation_undo, not hdri_skybox_entity.exists()) + + # 4. REDO the entity creation and component addition. + # -> REDO entity creation. + general.redo() + # -> REDO selecting entity. + general.redo() + # -> REDO naming entity. + general.redo() + # -> REDO component addition. + general.redo() + general.idle_wait_frames(1) + Report.result(Tests.creation_redo, hdri_skybox_entity.exists()) + + + # 5. Set Cubemap Texture on HDRi Skybox component. + skybox_cubemap_asset_path = os.path.join("LightingPresets", "default_iblskyboxcm.exr.streamingimage") + skybox_cubemap_material_asset = Asset.find_asset_by_path(skybox_cubemap_asset_path, False) + hdri_skybox_component.set_component_property_value( + AtomComponentProperties.hdri_skybox('Cubemap Texture'), skybox_cubemap_material_asset.id) + get_cubemap_property = hdri_skybox_component.get_component_property_value( + AtomComponentProperties.hdri_skybox('Cubemap Texture')) + Report.result(Tests.cubemap_property_set, get_cubemap_property == skybox_cubemap_material_asset.id) + + + # 6. Enter/Exit game mode. + TestHelper.enter_game_mode(Tests.enter_game_mode) + general.idle_wait_frames(1) + TestHelper.exit_game_mode(Tests.exit_game_mode) + + # 7. Test IsHidden. + hdri_skybox_entity.set_visibility_state(False) + Report.result(Tests.is_hidden, hdri_skybox_entity.is_hidden() is True) + + # 8. Test IsVisible. + hdri_skybox_entity.set_visibility_state(True) + general.idle_wait_frames(1) + Report.result(Tests.is_visible, hdri_skybox_entity.is_visible() is True) + + # 9. Delete hdri_skybox entity. + hdri_skybox_entity.delete() + Report.result(Tests.entity_deleted, not hdri_skybox_entity.exists()) + + # 10. UNDO deletion. + general.undo() + Report.result(Tests.deletion_undo, hdri_skybox_entity.exists()) + + # 11. REDO deletion. + general.redo() + Report.result(Tests.deletion_redo, not hdri_skybox_entity.exists()) + + # 12. Look for errors or asserts. + TestHelper.wait_for_condition(lambda: error_tracer.has_errors or error_tracer.has_asserts, 1.0) + for error_info in error_tracer.errors: + Report.info(f"Error: {error_info.filename} {error_info.function} | {error_info.message}") + for assert_info in error_tracer.asserts: + Report.info(f"Assert: {assert_info.filename} {assert_info.function} | {assert_info.message}") + + +if __name__ == "__main__": + from editor_python_test_tools.utils import Report + Report.start_test(AtomEditorComponents_HDRiSkybox_AddedToEntity) diff --git a/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomEditorComponents_LookModificationAdded.py b/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomEditorComponents_LookModificationAdded.py new file mode 100644 index 0000000000..afb8033426 --- /dev/null +++ b/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomEditorComponents_LookModificationAdded.py @@ -0,0 +1,211 @@ +""" +Copyright (c) Contributors to the Open 3D Engine Project. +For complete copyright and license terms please see the LICENSE at the root of this distribution. + +SPDX-License-Identifier: Apache-2.0 OR MIT +""" + + +class Tests: + creation_undo = ( + "UNDO Entity creation success", + "UNDO Entity creation failed") + creation_redo = ( + "REDO Entity creation success", + "REDO Entity creation failed") + look_modification_creation = ( + "Look Modification Entity successfully created", + "Look Modification Entity failed to be created") + look_modification_component = ( + "Entity has a Look Modification component", + "Entity failed to find Look Modification component") + look_modification_disabled = ( + "Look Modification component disabled", + "Look Modification component was not disabled") + postfx_layer_component = ( + "Entity has a PostFX Layer component", + "Entity did not have an PostFX Layer component") + look_modification_enabled = ( + "Look Modification component enabled", + "Look Modification component was not enabled") + enable_look_modification_parameter_enabled = ( + "Enable look modification parameter enabled", + "Enable look modification parameter was not enabled") + color_grading_lut_set = ( + "Entity has the Color Grading LUT set", + "Entity did not the Color Grading LUT set") + enter_game_mode = ( + "Entered game mode", + "Failed to enter game mode") + exit_game_mode = ( + "Exited game mode", + "Couldn't exit game mode") + is_visible = ( + "Entity is visible", + "Entity was not visible") + is_hidden = ( + "Entity is hidden", + "Entity was not hidden") + entity_deleted = ( + "Entity deleted", + "Entity was not deleted") + deletion_undo = ( + "UNDO deletion success", + "UNDO deletion failed") + deletion_redo = ( + "REDO deletion success", + "REDO deletion failed") + + +def AtomEditorComponents_LookModification_AddedToEntity(): + """ + Summary: + Tests the Look Modification component can be added to an entity and has the expected functionality. + + Test setup: + - Wait for Editor idle loop. + - Open the "Base" level. + + Expected Behavior: + The component can be added, used in game mode, hidden/shown, deleted, and has accurate required components. + Creation and deletion undo/redo should also work. + + Test Steps: + 1) Create an Look Modification entity with no components. + 2) Add Look Modification component to Look Modification entity. + 3) UNDO the entity creation and component addition. + 4) REDO the entity creation and component addition. + 5) Verify Look Modification component not enabled. + 6) Add PostFX Layer component since it is required by the Look Modification component. + 7) Verify Look Modification component is enabled. + 8) Enable the "Enable Look Modification" parameter. + 9) Add LUT asset to the Color Grading LUT parameter. + 9) Enter/Exit game mode. + 10) Test IsHidden. + 11) Test IsVisible. + 12) Delete Look Modification entity. + 13) UNDO deletion. + 14) REDO deletion. + 15) Look for errors. + + :return: None + """ + + import os + + import azlmbr.legacy.general as general + + from editor_python_test_tools.asset_utils import Asset + from editor_python_test_tools.editor_entity_utils import EditorEntity + from editor_python_test_tools.utils import Report, Tracer, TestHelper + from Atom.atom_utils.atom_constants import AtomComponentProperties + + with Tracer() as error_tracer: + # Test setup begins. + # Setup: Wait for Editor idle loop before executing Python hydra scripts then open "Base" level. + TestHelper.init_idle() + TestHelper.open_level("", "Base") + + # Test steps begin. + # 1. Create an Look Modification entity with no components. + look_modification_entity = EditorEntity.create_editor_entity(AtomComponentProperties.look_modification()) + Report.critical_result(Tests.look_modification_creation, look_modification_entity.exists()) + + # 2. Add Look Modification component to Look Modification entity. + look_modification_component = look_modification_entity.add_component( + AtomComponentProperties.look_modification()) + Report.critical_result( + Tests.look_modification_component, + look_modification_entity.has_component(AtomComponentProperties.look_modification())) + + # 3. UNDO the entity creation and component addition. + # -> UNDO component addition. + general.undo() + # -> UNDO naming entity. + general.undo() + # -> UNDO selecting entity. + general.undo() + # -> UNDO entity creation. + general.undo() + general.idle_wait_frames(1) + Report.result(Tests.creation_undo, not look_modification_entity.exists()) + + # 4. REDO the entity creation and component addition. + # -> REDO entity creation. + general.redo() + # -> REDO selecting entity. + general.redo() + # -> REDO naming entity. + general.redo() + # -> REDO component addition. + general.redo() + general.idle_wait_frames(1) + Report.result(Tests.creation_redo, look_modification_entity.exists()) + + # 5. Verify Look Modification component not enabled. + Report.result(Tests.look_modification_disabled, not look_modification_component.is_enabled()) + + # 6. Add PostFX Layer component since it is required by the Look Modification component. + look_modification_entity.add_component(AtomComponentProperties.postfx_layer()) + Report.result( + Tests.postfx_layer_component, + look_modification_entity.has_component(AtomComponentProperties.postfx_layer())) + + # 7. Verify Look Modification component is enabled. + Report.result(Tests.look_modification_enabled, look_modification_component.is_enabled()) + + # 8. Enable the "Enable look modification" parameter. + look_modification_component.set_component_property_value( + AtomComponentProperties.look_modification('Enable look modification'), True) + Report.result(Tests.enable_look_modification_parameter_enabled, + look_modification_component.get_component_property_value( + AtomComponentProperties.look_modification('Enable look modification')) is True) + + # 9. Set the Color Grading LUT asset on the Look Modification entity. + color_grading_lut_path = os.path.join("ColorGrading", "TestData", "Photoshop", "inv-Log2-48nits", + "test_3dl_32_lut.azasset") + color_grading_lut_asset = Asset.find_asset_by_path(color_grading_lut_path, False) + look_modification_component.set_component_property_value( + AtomComponentProperties.look_modification('Color Grading LUT'), color_grading_lut_asset.id) + Report.result( + Tests.color_grading_lut_set, + color_grading_lut_asset.id == look_modification_component.get_component_property_value( + AtomComponentProperties.look_modification('Color Grading LUT'))) + + # 10. Enter/Exit game mode. + TestHelper.enter_game_mode(Tests.enter_game_mode) + general.idle_wait_frames(1) + TestHelper.exit_game_mode(Tests.exit_game_mode) + + # 11. Test IsHidden. + look_modification_entity.set_visibility_state(False) + Report.result(Tests.is_hidden, look_modification_entity.is_hidden() is True) + + # 12. Test IsVisible. + look_modification_entity.set_visibility_state(True) + general.idle_wait_frames(1) + Report.result(Tests.is_visible, look_modification_entity.is_visible() is True) + + # 13. Delete Look Modification entity. + look_modification_entity.delete() + Report.result(Tests.entity_deleted, not look_modification_entity.exists()) + + # 14. UNDO deletion. + general.undo() + Report.result(Tests.deletion_undo, look_modification_entity.exists()) + + # 15. REDO deletion. + general.redo() + Report.result(Tests.deletion_redo, not look_modification_entity.exists()) + + # 16. Look for errors and asserts. + TestHelper.wait_for_condition(lambda: error_tracer.has_errors or error_tracer.has_asserts, 1.0) + for error_info in error_tracer.errors: + Report.info(f"Error: {error_info.filename} {error_info.function} | {error_info.message}") + for assert_info in error_tracer.asserts: + Report.info(f"Assert: {assert_info.filename} {assert_info.function} | {assert_info.message}") + + +if __name__ == "__main__": + from editor_python_test_tools.utils import Report + Report.start_test(AtomEditorComponents_LookModification_AddedToEntity) diff --git a/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomEditorComponents_SSAOAdded.py b/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomEditorComponents_SSAOAdded.py new file mode 100644 index 0000000000..15f40f8b70 --- /dev/null +++ b/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomEditorComponents_SSAOAdded.py @@ -0,0 +1,182 @@ +""" +Copyright (c) Contributors to the Open 3D Engine Project. +For complete copyright and license terms please see the LICENSE at the root of this distribution. + +SPDX-License-Identifier: Apache-2.0 OR MIT +""" + + +class Tests: + creation_undo = ( + "UNDO Entity creation success", + "UNDO Entity creation failed") + creation_redo = ( + "REDO Entity creation success", + "REDO Entity creation failed") + ssao_creation = ( + "SSAO Entity successfully created", + "SSAO Entity failed to be created") + ssao_component = ( + "Entity has a SSAO component", + "Entity failed to find SSAO component") + ssao_disabled = ( + "SSAO component disabled", + "SSAO component was not disabled.") + postfx_layer_component = ( + "Entity has a PostFX Layer component", + "Entity did not have an PostFX Layer component") + ssao_enabled = ( + "SSAO component enabled", + "SSAO component was not enabled.") + enter_game_mode = ( + "Entered game mode", + "Failed to enter game mode") + exit_game_mode = ( + "Exited game mode", + "Couldn't exit game mode") + is_visible = ( + "Entity is visible", + "Entity was not visible") + is_hidden = ( + "Entity is hidden", + "Entity was not hidden") + entity_deleted = ( + "Entity deleted", + "Entity was not deleted") + deletion_undo = ( + "UNDO deletion success", + "UNDO deletion failed") + deletion_redo = ( + "REDO deletion success", + "REDO deletion failed") + + +def AtomEditorComponents_SSAO_AddedToEntity(): + """ + Summary: + Tests the SSAO component can be added to an entity and has the expected functionality. + Screen Space Ambient Occlusion (SSAO) is a PostFX shadow lighting effect. + + Test setup: + - Wait for Editor idle loop. + - Open the "Base" level. + + Expected Behavior: + The component can be added, used in game mode, hidden/shown, deleted, and has accurate required components. + Creation and deletion undo/redo should also work. + + Test Steps: + 1) Create a SSAO entity with no components. + 2) Add SSAO component to SSAO entity. + 3) UNDO the entity creation and component addition. + 4) REDO the entity creation and component addition. + 5) Verify SSAO component not enabled. + 6) Add PostFX Layer component since it is required by the SSAO component. + 7) Verify SSAO component is enabled. + 8) Enter/Exit game mode. + 9) Test IsHidden. + 10) Test IsVisible. + 11) Delete SSAO entity. + 12) UNDO deletion. + 13) REDO deletion. + 14) Look for errors. + + :return: None + """ + + import azlmbr.legacy.general as general + + from editor_python_test_tools.editor_entity_utils import EditorEntity + from editor_python_test_tools.utils import Report, Tracer, TestHelper + from Atom.atom_utils.atom_constants import AtomComponentProperties + + with Tracer() as error_tracer: + # Test setup begins. + # Setup: Wait for Editor idle loop before executing Python hydra scripts then open "Base" level. + TestHelper.init_idle() + TestHelper.open_level("", "Base") + + # Test steps begin. + # 1. Create a SSAO entity with no components. + ssao_entity = EditorEntity.create_editor_entity(AtomComponentProperties.ssao()) + Report.critical_result(Tests.ssao_creation, ssao_entity.exists()) + + # 2. Add SSAO component to SSAO entity. + ssao_component = ssao_entity.add_component(AtomComponentProperties.ssao()) + Report.critical_result( + Tests.ssao_component, + ssao_entity.has_component(AtomComponentProperties.ssao())) + ssao_component.get_property_tree() + # 3. UNDO the entity creation and component addition. + # -> UNDO component addition. + general.undo() + # -> UNDO naming entity. + general.undo() + # -> UNDO selecting entity. + general.undo() + # -> UNDO entity creation. + general.undo() + general.idle_wait_frames(1) + Report.result(Tests.creation_undo, not ssao_entity.exists()) + + # 4. REDO the entity creation and component addition. + # -> REDO entity creation. + general.redo() + # -> REDO selecting entity. + general.redo() + # -> REDO naming entity. + general.redo() + # -> REDO component addition. + general.redo() + general.idle_wait_frames(1) + Report.result(Tests.creation_redo, ssao_entity.exists()) + + # 5. Verify SSAO component not enabled. + Report.result(Tests.ssao_disabled, not ssao_component.is_enabled()) + + # 6. Add PostFX Layer component since it is required by the SSAO component. + ssao_entity.add_component(AtomComponentProperties.postfx_layer()) + Report.result( + Tests.postfx_layer_component, + ssao_entity.has_component(AtomComponentProperties.postfx_layer())) + + # 7. Verify SSAO component is enabled. + Report.result(Tests.ssao_enabled, ssao_component.is_enabled()) + + # 8. Enter/Exit game mode. + TestHelper.enter_game_mode(Tests.enter_game_mode) + general.idle_wait_frames(1) + TestHelper.exit_game_mode(Tests.exit_game_mode) + + # 9. Test IsHidden. + ssao_entity.set_visibility_state(False) + Report.result(Tests.is_hidden, ssao_entity.is_hidden() is True) + + # 10. Test IsVisible. + ssao_entity.set_visibility_state(True) + general.idle_wait_frames(1) + Report.result(Tests.is_visible, ssao_entity.is_visible() is True) + + # 11. Delete SSAO entity. + ssao_entity.delete() + Report.result(Tests.entity_deleted, not ssao_entity.exists()) + + # 12. UNDO deletion. + general.undo() + Report.result(Tests.deletion_undo, ssao_entity.exists()) + + # 13. REDO deletion. + general.redo() + Report.result(Tests.deletion_redo, not ssao_entity.exists()) + + # 14. Look for errors and asserts. + TestHelper.wait_for_condition(lambda: error_tracer.has_errors or error_tracer.has_asserts, 1.0) + for error_info in error_tracer.errors: + Report.info(f"Error: {error_info.filename} {error_info.function} | {error_info.message}") + for assert_info in error_tracer.asserts: + Report.info(f"Assert: {assert_info.filename} {assert_info.function} | {assert_info.message}") + + +if __name__ == "__main__": + from editor_python_test_tools.utils import Report + Report.start_test(AtomEditorComponents_SSAO_AddedToEntity) diff --git a/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomGPU_BasicLevelSetup.py b/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomGPU_BasicLevelSetup.py index 92c555127a..127b3e5b5f 100644 --- a/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomGPU_BasicLevelSetup.py +++ b/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomGPU_BasicLevelSetup.py @@ -6,30 +6,70 @@ SPDX-License-Identifier: Apache-2.0 OR MIT """ -# fmt: off -class Tests : - camera_component_added = ("Camera component was added", "Camera component wasn't added") - camera_fov_set = ("Camera component FOV property set", "Camera component FOV property wasn't set") - directional_light_component_added = ("Directional Light component added", "Directional Light component wasn't added") - enter_game_mode = ("Entered game mode", "Failed to enter game mode") - exit_game_mode = ("Exited game mode", "Couldn't exit game mode") - global_skylight_component_added = ("Global Skylight (IBL) component added", "Global Skylight (IBL) component wasn't added") - global_skylight_diffuse_image_set = ("Global Skylight Diffuse Image property set", "Global Skylight Diffuse Image property wasn't set") - global_skylight_specular_image_set = ("Global Skylight Specular Image property set", "Global Skylight Specular Image property wasn't set") - ground_plane_material_asset_set = ("Ground Plane Material Asset was set", "Ground Plane Material Asset wasn't set") - ground_plane_material_component_added = ("Ground Plane Material component added", "Ground Plane Material component wasn't added") - ground_plane_mesh_asset_set = ("Ground Plane Mesh Asset property was set", "Ground Plane Mesh Asset property wasn't set") - hdri_skybox_component_added = ("HDRi Skybox component added", "HDRi Skybox component wasn't added") - hdri_skybox_cubemap_texture_set = ("HDRi Skybox Cubemap Texture property set", "HDRi Skybox Cubemap Texture property wasn't set") - mesh_component_added = ("Mesh component added", "Mesh component wasn't added") - no_assert_occurred = ("No asserts detected", "Asserts were detected") - no_error_occurred = ("No errors detected", "Errors were detected") - secondary_grid_spacing = ("Secondary Grid Spacing set", "Secondary Grid Spacing not set") - sphere_material_component_added = ("Sphere Material component added", "Sphere Material component wasn't added") - sphere_material_set = ("Sphere Material Asset was set", "Sphere Material Asset wasn't set") - sphere_mesh_asset_set = ("Sphere Mesh Asset was set", "Sphere Mesh Asset wasn't set") - viewport_set = ("Viewport set to correct size", "Viewport not set to correct size") -# fmt: on +class Tests: + camera_component_added = ( + "Camera component was added", + "Camera component wasn't added") + camera_fov_set = ( + "Camera component FOV property set", + "Camera component FOV property wasn't set") + directional_light_component_added = ( + "Directional Light component added", + "Directional Light component wasn't added") + enter_game_mode = ( + "Entered game mode", + "Failed to enter game mode") + exit_game_mode = ( + "Exited game mode", + "Couldn't exit game mode") + global_skylight_component_added = ( + "Global Skylight (IBL) component added", + "Global Skylight (IBL) component wasn't added") + global_skylight_diffuse_image_set = ( + "Global Skylight Diffuse Image property set", + "Global Skylight Diffuse Image property wasn't set") + global_skylight_specular_image_set = ( + "Global Skylight Specular Image property set", + "Global Skylight Specular Image property wasn't set") + ground_plane_material_asset_set = ( + "Ground Plane Material Asset was set", + "Ground Plane Material Asset wasn't set") + ground_plane_material_component_added = ( + "Ground Plane Material component added", + "Ground Plane Material component wasn't added") + ground_plane_mesh_asset_set = ( + "Ground Plane Mesh Asset property was set", + "Ground Plane Mesh Asset property wasn't set") + hdri_skybox_component_added = ( + "HDRi Skybox component added", + "HDRi Skybox component wasn't added") + hdri_skybox_cubemap_texture_set = ( + "HDRi Skybox Cubemap Texture property set", + "HDRi Skybox Cubemap Texture property wasn't set") + mesh_component_added = ( + "Mesh component added", + "Mesh component wasn't added") + no_assert_occurred = ( + "No asserts detected", + "Asserts were detected") + no_error_occurred = ( + "No errors detected", + "Errors were detected") + secondary_grid_spacing = ( + "Secondary Grid Spacing set", + "Secondary Grid Spacing not set") + sphere_material_component_added = ( + "Sphere Material component added", + "Sphere Material component wasn't added") + sphere_material_set = ( + "Sphere Material Asset was set", + "Sphere Material Asset wasn't set") + sphere_mesh_asset_set = ( + "Sphere Mesh Asset was set", + "Sphere Mesh Asset wasn't set") + viewport_set = ( + "Viewport set to correct size", + "Viewport not set to correct size") def AtomGPU_BasicLevelSetup_SetsUpLevel(): @@ -77,19 +117,17 @@ def AtomGPU_BasicLevelSetup_SetsUpLevel(): import os from math import isclose - import azlmbr.asset as asset - import azlmbr.bus as bus import azlmbr.legacy.general as general import azlmbr.math as math import azlmbr.paths + from editor_python_test_tools.asset_utils import Asset from editor_python_test_tools.editor_entity_utils import EditorEntity - from editor_python_test_tools.utils import Report, Tracer, TestHelper as helper + from editor_python_test_tools.utils import Report, Tracer, TestHelper + from Atom.atom_utils.atom_constants import AtomComponentProperties from Atom.atom_utils.screenshot_utils import ScreenshotHelper - MATERIAL_COMPONENT_NAME = "Material" - MESH_COMPONENT_NAME = "Mesh" SCREENSHOT_NAME = "AtomBasicLevelSetup" SCREEN_WIDTH = 1280 SCREEN_HEIGHT = 720 @@ -98,24 +136,24 @@ def AtomGPU_BasicLevelSetup_SetsUpLevel(): def initial_viewport_setup(screen_width, screen_height): general.set_viewport_size(screen_width, screen_height) general.update_viewport() - result = isclose( - a=general.get_viewport_size().x, b=SCREEN_WIDTH, rel_tol=0.1) and isclose( - a=general.get_viewport_size().y, b=SCREEN_HEIGHT, rel_tol=0.1) - - return result + TestHelper.wait_for_condition( + function=lambda: isclose(a=general.get_viewport_size().x, b=SCREEN_WIDTH, rel_tol=0.1) + and isclose(a=general.get_viewport_size().y, b=SCREEN_HEIGHT, rel_tol=0.1), + timeout_in_seconds=4.0 + ) with Tracer() as error_tracer: # Test setup begins. # Setup: Wait for Editor idle loop before executing Python hydra scripts then open "Base" level. - helper.init_idle() - helper.open_level("", "Base") + TestHelper.init_idle() + TestHelper.open_level("", "Base") # Test steps begin. # 1. Close error windows and display helpers then update the viewport size. - helper.close_error_windows() - helper.close_display_helpers() + TestHelper.close_error_windows() + TestHelper.close_display_helpers() + initial_viewport_setup(SCREEN_WIDTH, SCREEN_HEIGHT) general.update_viewport() - Report.critical_result(Tests.viewport_set, initial_viewport_setup(SCREEN_WIDTH, SCREEN_HEIGHT)) # 2. Create Default Level Entity. default_level_entity_name = "Default Level" @@ -123,168 +161,167 @@ def AtomGPU_BasicLevelSetup_SetsUpLevel(): math.Vector3(0.0, 0.0, 0.0), default_level_entity_name) # 3. Create Grid Entity as a child entity of the Default Level Entity. - grid_name = "Grid" - grid_entity = EditorEntity.create_editor_entity(grid_name, default_level_entity.id) + grid_entity = EditorEntity.create_editor_entity(AtomComponentProperties.grid(), default_level_entity.id) # 4. Add Grid component to Grid Entity and set Secondary Grid Spacing. - grid_component = grid_entity.add_component(grid_name) - secondary_grid_spacing_property = "Controller|Configuration|Secondary Grid Spacing" + grid_component = grid_entity.add_component(AtomComponentProperties.grid()) secondary_grid_spacing_value = 1.0 - grid_component.set_component_property_value(secondary_grid_spacing_property, secondary_grid_spacing_value) + grid_component.set_component_property_value( + AtomComponentProperties.grid('Secondary Grid Spacing'), secondary_grid_spacing_value) secondary_grid_spacing_set = grid_component.get_component_property_value( - secondary_grid_spacing_property) == secondary_grid_spacing_value + AtomComponentProperties.grid('Secondary Grid Spacing')) == secondary_grid_spacing_value Report.result(Tests.secondary_grid_spacing, secondary_grid_spacing_set) # 5. Create Global Skylight (IBL) Entity as a child entity of the Default Level Entity. - global_skylight_name = "Global Skylight (IBL)" - global_skylight_entity = EditorEntity.create_editor_entity(global_skylight_name, default_level_entity.id) + global_skylight_entity = EditorEntity.create_editor_entity( + AtomComponentProperties.global_skylight(), default_level_entity.id) # 6. Add HDRi Skybox component to the Global Skylight (IBL) Entity. - hdri_skybox_name = "HDRi Skybox" - hdri_skybox_component = global_skylight_entity.add_component(hdri_skybox_name) - Report.result(Tests.hdri_skybox_component_added, global_skylight_entity.has_component(hdri_skybox_name)) + hdri_skybox_component = global_skylight_entity.add_component(AtomComponentProperties.hdri_skybox()) + Report.result(Tests.hdri_skybox_component_added, global_skylight_entity.has_component( + AtomComponentProperties.hdri_skybox())) # 7. Add Global Skylight (IBL) component to the Global Skylight (IBL) Entity. - global_skylight_component = global_skylight_entity.add_component(global_skylight_name) - Report.result(Tests.global_skylight_component_added, global_skylight_entity.has_component(global_skylight_name)) + global_skylight_component = global_skylight_entity.add_component(AtomComponentProperties.global_skylight()) + Report.result(Tests.global_skylight_component_added, global_skylight_entity.has_component( + AtomComponentProperties.global_skylight())) # 8. Set the Cubemap Texture property of the HDRi Skybox component. - global_skylight_image_asset_path = os.path.join( - "LightingPresets", "greenwich_park_02_4k_iblskyboxcm_iblspecular.exr.streamingimage") - global_skylight_image_asset = asset.AssetCatalogRequestBus( - bus.Broadcast, "GetAssetIdByPath", global_skylight_image_asset_path, math.Uuid(), False) - hdri_skybox_cubemap_texture_property = "Controller|Configuration|Cubemap Texture" + global_skylight_image_asset_path = os.path.join("LightingPresets", "default_iblskyboxcm.exr.streamingimage") + global_skylight_image_asset = Asset.find_asset_by_path(global_skylight_image_asset_path, False) hdri_skybox_component.set_component_property_value( - hdri_skybox_cubemap_texture_property, global_skylight_image_asset) + AtomComponentProperties.hdri_skybox('Cubemap Texture'), global_skylight_image_asset.id) Report.result( Tests.hdri_skybox_cubemap_texture_set, hdri_skybox_component.get_component_property_value( - hdri_skybox_cubemap_texture_property) == global_skylight_image_asset) + AtomComponentProperties.hdri_skybox('Cubemap Texture')) == global_skylight_image_asset.id) # 9. Set the Diffuse Image property of the Global Skylight (IBL) component. # Re-use the same image that was used in the previous test step. - global_skylight_diffuse_image_property = "Controller|Configuration|Diffuse Image" + global_skylight_diffuse_image_asset_path = os.path.join( + "LightingPresets", "default_iblskyboxcm_ibldiffuse.exr.streamingimage") + global_skylight_diffuse_image_asset = Asset.find_asset_by_path(global_skylight_diffuse_image_asset_path, False) global_skylight_component.set_component_property_value( - global_skylight_diffuse_image_property, global_skylight_image_asset) + AtomComponentProperties.global_skylight('Diffuse Image'), global_skylight_diffuse_image_asset.id) Report.result( Tests.global_skylight_diffuse_image_set, global_skylight_component.get_component_property_value( - global_skylight_diffuse_image_property) == global_skylight_image_asset) + AtomComponentProperties.global_skylight('Diffuse Image')) == global_skylight_diffuse_image_asset.id) # 10. Set the Specular Image property of the Global Skylight (IBL) component. # Re-use the same image that was used in the previous test step. - global_skylight_specular_image_property = "Controller|Configuration|Specular Image" + global_skylight_specular_image_asset_path = os.path.join( + "LightingPresets", "default_iblskyboxcm_iblspecular.exr.streamingimage") + global_skylight_specular_image_asset = Asset.find_asset_by_path( + global_skylight_specular_image_asset_path, False) global_skylight_component.set_component_property_value( - global_skylight_specular_image_property, global_skylight_image_asset) + AtomComponentProperties.global_skylight('Specular Image'), global_skylight_specular_image_asset.id) global_skylight_specular_image_set = global_skylight_component.get_component_property_value( - global_skylight_specular_image_property) + AtomComponentProperties.global_skylight('Specular Image')) Report.result( - Tests.global_skylight_specular_image_set, global_skylight_specular_image_set == global_skylight_image_asset) + Tests.global_skylight_specular_image_set, + global_skylight_specular_image_set == global_skylight_specular_image_asset.id) # 11. Create a Ground Plane Entity with a Material component that is a child entity of the Default Level Entity. ground_plane_name = "Ground Plane" ground_plane_entity = EditorEntity.create_editor_entity(ground_plane_name, default_level_entity.id) - ground_plane_material_component = ground_plane_entity.add_component(MATERIAL_COMPONENT_NAME) + ground_plane_material_component = ground_plane_entity.add_component(AtomComponentProperties.material()) Report.result( - Tests.ground_plane_material_component_added, ground_plane_entity.has_component(MATERIAL_COMPONENT_NAME)) + Tests.ground_plane_material_component_added, + ground_plane_entity.has_component(AtomComponentProperties.material())) # 12. Set the Material Asset property of the Material component for the Ground Plane Entity. ground_plane_entity.set_local_uniform_scale(32.0) ground_plane_material_asset_path = os.path.join("Materials", "Presets", "PBR", "metal_chrome.azmaterial") - ground_plane_material_asset = asset.AssetCatalogRequestBus( - bus.Broadcast, "GetAssetIdByPath", ground_plane_material_asset_path, math.Uuid(), False) - ground_plane_material_asset_property = "Default Material|Material Asset" + ground_plane_material_asset = Asset.find_asset_by_path(ground_plane_material_asset_path, False) ground_plane_material_component.set_component_property_value( - ground_plane_material_asset_property, ground_plane_material_asset) + AtomComponentProperties.material('Material Asset'), ground_plane_material_asset.id) Report.result( Tests.ground_plane_material_asset_set, ground_plane_material_component.get_component_property_value( - ground_plane_material_asset_property) == ground_plane_material_asset) + AtomComponentProperties.material('Material Asset')) == ground_plane_material_asset.id) # 13. Add the Mesh component to the Ground Plane Entity and set the Mesh component Mesh Asset property. - ground_plane_mesh_component = ground_plane_entity.add_component(MESH_COMPONENT_NAME) - Report.result(Tests.mesh_component_added, ground_plane_entity.has_component(MESH_COMPONENT_NAME)) - ground_plane_mesh_asset_path = os.path.join("Objects", "plane.azmodel") - ground_plane_mesh_asset = asset.AssetCatalogRequestBus( - bus.Broadcast, "GetAssetIdByPath", ground_plane_mesh_asset_path, math.Uuid(), False) - ground_plane_mesh_asset_property = "Controller|Configuration|Mesh Asset" + ground_plane_mesh_component = ground_plane_entity.add_component(AtomComponentProperties.mesh()) + Report.result(Tests.mesh_component_added, ground_plane_entity.has_component(AtomComponentProperties.mesh())) + ground_plane_mesh_asset_path = os.path.join("TestData", "Objects", "plane.azmodel") + ground_plane_mesh_asset = Asset.find_asset_by_path(ground_plane_mesh_asset_path, False) ground_plane_mesh_component.set_component_property_value( - ground_plane_mesh_asset_property, ground_plane_mesh_asset) + AtomComponentProperties.mesh('Mesh Asset'), ground_plane_mesh_asset.id) Report.result( Tests.ground_plane_mesh_asset_set, ground_plane_mesh_component.get_component_property_value( - ground_plane_mesh_asset_property) == ground_plane_mesh_asset) + AtomComponentProperties.mesh('Mesh Asset')) == ground_plane_mesh_asset.id) # 14. Create a Directional Light Entity as a child entity of the Default Level Entity. - directional_light_name = "Directional Light" directional_light_entity = EditorEntity.create_editor_entity_at( - math.Vector3(0.0, 0.0, 10.0), directional_light_name, default_level_entity.id) + math.Vector3(0.0, 0.0, 10.0), AtomComponentProperties.directional_light(), default_level_entity.id) # 15. Add Directional Light component to Directional Light Entity and set entity rotation. - directional_light_entity.add_component(directional_light_name) + directional_light_entity.add_component(AtomComponentProperties.directional_light()) directional_light_entity_rotation = math.Vector3(DEGREE_RADIAN_FACTOR * -90.0, 0.0, 0.0) directional_light_entity.set_local_rotation(directional_light_entity_rotation) Report.result( - Tests.directional_light_component_added, directional_light_entity.has_component(directional_light_name)) + Tests.directional_light_component_added, directional_light_entity.has_component( + AtomComponentProperties.directional_light())) # 16. Create a Sphere Entity as a child entity of the Default Level Entity then add a Material component. sphere_entity = EditorEntity.create_editor_entity_at( math.Vector3(0.0, 0.0, 1.0), "Sphere", default_level_entity.id) - sphere_material_component = sphere_entity.add_component(MATERIAL_COMPONENT_NAME) - Report.result(Tests.sphere_material_component_added, sphere_entity.has_component(MATERIAL_COMPONENT_NAME)) + sphere_material_component = sphere_entity.add_component(AtomComponentProperties.material()) + Report.result(Tests.sphere_material_component_added, sphere_entity.has_component( + AtomComponentProperties.material())) # 17. Set the Material Asset property of the Material component for the Sphere Entity. sphere_material_asset_path = os.path.join("Materials", "Presets", "PBR", "metal_brass_polished.azmaterial") - sphere_material_asset = asset.AssetCatalogRequestBus( - bus.Broadcast, "GetAssetIdByPath", sphere_material_asset_path, math.Uuid(), False) - sphere_material_asset_property = "Default Material|Material Asset" - sphere_material_component.set_component_property_value(sphere_material_asset_property, sphere_material_asset) + sphere_material_asset = Asset.find_asset_by_path(sphere_material_asset_path, False) + sphere_material_component.set_component_property_value( + AtomComponentProperties.material('Material Asset'), sphere_material_asset.id) Report.result(Tests.sphere_material_set, sphere_material_component.get_component_property_value( - sphere_material_asset_property) == sphere_material_asset) + AtomComponentProperties.material('Material Asset')) == sphere_material_asset.id) # 18. Add Mesh component to Sphere Entity and set the Mesh Asset property for the Mesh component. - sphere_mesh_component = sphere_entity.add_component(MESH_COMPONENT_NAME) + sphere_mesh_component = sphere_entity.add_component(AtomComponentProperties.mesh()) sphere_mesh_asset_path = os.path.join("Models", "sphere.azmodel") - sphere_mesh_asset = asset.AssetCatalogRequestBus( - bus.Broadcast, "GetAssetIdByPath", sphere_mesh_asset_path, math.Uuid(), False) - sphere_mesh_asset_property = "Controller|Configuration|Mesh Asset" - sphere_mesh_component.set_component_property_value(sphere_mesh_asset_property, sphere_mesh_asset) + sphere_mesh_asset = Asset.find_asset_by_path(sphere_mesh_asset_path, False) + sphere_mesh_component.set_component_property_value( + AtomComponentProperties.mesh('Mesh Asset'), sphere_mesh_asset.id) Report.result(Tests.sphere_mesh_asset_set, sphere_mesh_component.get_component_property_value( - sphere_mesh_asset_property) == sphere_mesh_asset) + AtomComponentProperties.mesh('Mesh Asset')) == sphere_mesh_asset.id) # 19. Create a Camera Entity as a child entity of the Default Level Entity then add a Camera component. - camera_name = "Camera" camera_entity = EditorEntity.create_editor_entity_at( - math.Vector3(5.5, -12.0, 9.0), camera_name, default_level_entity.id) - camera_component = camera_entity.add_component(camera_name) - Report.result(Tests.camera_component_added, camera_entity.has_component(camera_name)) + math.Vector3(5.5, -12.0, 9.0), AtomComponentProperties.camera(), default_level_entity.id) + camera_component = camera_entity.add_component(AtomComponentProperties.camera()) + Report.result(Tests.camera_component_added, camera_entity.has_component(AtomComponentProperties.camera())) # 20. Set the Camera Entity rotation value and set the Camera component Field of View value. camera_entity_rotation = math.Vector3( DEGREE_RADIAN_FACTOR * -27.0, DEGREE_RADIAN_FACTOR * -12.0, DEGREE_RADIAN_FACTOR * 25.0) camera_entity.set_local_rotation(camera_entity_rotation) - camera_fov_property = "Controller|Configuration|Field of view" camera_fov_value = 60.0 - camera_component.set_component_property_value(camera_fov_property, camera_fov_value) + camera_component.set_component_property_value(AtomComponentProperties.camera('Field of view'), camera_fov_value) azlmbr.camera.EditorCameraViewRequestBus(azlmbr.bus.Event, "ToggleCameraAsActiveView", camera_entity.id) Report.result(Tests.camera_fov_set, camera_component.get_component_property_value( - camera_fov_property) == camera_fov_value) + AtomComponentProperties.camera('Field of view')) == camera_fov_value) # 21. Enter game mode. - helper.enter_game_mode(Tests.enter_game_mode) - helper.wait_for_condition(function=lambda: general.is_in_game_mode(), timeout_in_seconds=4.0) + TestHelper.enter_game_mode(Tests.enter_game_mode) + TestHelper.wait_for_condition(function=lambda: general.is_in_game_mode(), timeout_in_seconds=4.0) # 22. Take screenshot. ScreenshotHelper(general.idle_wait_frames).capture_screenshot_blocking(f"{SCREENSHOT_NAME}.ppm") # 23. Exit game mode. - helper.exit_game_mode(Tests.exit_game_mode) - helper.wait_for_condition(function=lambda: not general.is_in_game_mode(), timeout_in_seconds=4.0) + TestHelper.exit_game_mode(Tests.exit_game_mode) + TestHelper.wait_for_condition(function=lambda: not general.is_in_game_mode(), timeout_in_seconds=4.0) # 24. Look for errors. - helper.wait_for_condition(lambda: error_tracer.has_errors or error_tracer.has_asserts, 1.0) - Report.result(Tests.no_assert_occurred, not error_tracer.has_asserts) - Report.result(Tests.no_error_occurred, not error_tracer.has_errors) + TestHelper.wait_for_condition(lambda: error_tracer.has_errors or error_tracer.has_asserts, 1.0) + for error_info in error_tracer.errors: + Report.info(f"Error: {error_info.filename} {error_info.function} | {error_info.message}") + for assert_info in error_tracer.asserts: + Report.info(f"Assert: {assert_info.filename} {assert_info.function} | {assert_info.message}") if __name__ == "__main__": diff --git a/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_GPUTest_BasicLevelSetup.py b/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_GPUTest_BasicLevelSetup.py index 645447e6de..1641b529ae 100644 --- a/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_GPUTest_BasicLevelSetup.py +++ b/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_GPUTest_BasicLevelSetup.py @@ -106,8 +106,7 @@ def run(): components=["HDRi Skybox", "Global Skylight (IBL)"], parent_id=default_level.id ) - global_skylight_image_asset_path = os.path.join( - "LightingPresets", "greenwich_park_02_4k_iblskyboxcm_iblspecular.exr.streamingimage") + global_skylight_image_asset_path = os.path.join("LightingPresets", "default_iblskyboxcm.exr.streamingimage") global_skylight_image_asset = asset.AssetCatalogRequestBus( bus.Broadcast, "GetAssetIdByPath", global_skylight_image_asset_path, math.Uuid(), False) global_skylight.get_set_test(0, "Controller|Configuration|Cubemap Texture", global_skylight_image_asset) diff --git a/AutomatedTesting/Gem/PythonTests/CMakeLists.txt b/AutomatedTesting/Gem/PythonTests/CMakeLists.txt index bec49185bd..800f347359 100644 --- a/AutomatedTesting/Gem/PythonTests/CMakeLists.txt +++ b/AutomatedTesting/Gem/PythonTests/CMakeLists.txt @@ -56,6 +56,9 @@ add_subdirectory(streaming) ## Smoke ## add_subdirectory(smoke) +## Terrain ## +add_subdirectory(Terrain) + ## AWS ## add_subdirectory(AWS) diff --git a/AutomatedTesting/Gem/PythonTests/EditorPythonTestTools/editor_python_test_tools/editor_entity_utils.py b/AutomatedTesting/Gem/PythonTests/EditorPythonTestTools/editor_python_test_tools/editor_entity_utils.py index 9e857ed8bc..59e454479c 100644 --- a/AutomatedTesting/Gem/PythonTests/EditorPythonTestTools/editor_python_test_tools/editor_entity_utils.py +++ b/AutomatedTesting/Gem/PythonTests/EditorPythonTestTools/editor_python_test_tools/editor_entity_utils.py @@ -132,6 +132,7 @@ class EditorEntity: def __init__(self, id: azlmbr.entity.EntityId): self.id: azlmbr.entity.EntityId = id + self.components: List[EditorComponent] = [] # Creation functions @classmethod @@ -279,7 +280,7 @@ class EditorEntity: ), f"Failure: Could not add component: '{new_comp.get_component_name()}' to entity: '{self.get_name()}'" new_comp.id = add_component_outcome.GetValue()[0] components.append(new_comp) - + self.components.append(new_comp) return components def get_components_of_type(self, component_names: list) -> List[EditorComponent]: diff --git a/AutomatedTesting/Gem/PythonTests/EditorPythonTestTools/editor_python_test_tools/hydra_editor_utils.py b/AutomatedTesting/Gem/PythonTests/EditorPythonTestTools/editor_python_test_tools/hydra_editor_utils.py index 985e32ede5..19aa6e9d3c 100644 --- a/AutomatedTesting/Gem/PythonTests/EditorPythonTestTools/editor_python_test_tools/hydra_editor_utils.py +++ b/AutomatedTesting/Gem/PythonTests/EditorPythonTestTools/editor_python_test_tools/hydra_editor_utils.py @@ -57,6 +57,10 @@ def add_level_component(component_name): level_component_list, entity.EntityType().Level) level_component_outcome = editor.EditorLevelComponentAPIBus(bus.Broadcast, 'AddComponentsOfType', [level_component_type_ids_list[0]]) + if not level_component_outcome.IsSuccess(): + print('Failed to add {} level component'.format(component_name)) + return None + level_component = level_component_outcome.GetValue()[0] return level_component diff --git a/AutomatedTesting/Gem/PythonTests/Physics/TestSuite_Main.py b/AutomatedTesting/Gem/PythonTests/Physics/TestSuite_Main.py index b64fbb5656..fb2744deda 100644 --- a/AutomatedTesting/Gem/PythonTests/Physics/TestSuite_Main.py +++ b/AutomatedTesting/Gem/PythonTests/Physics/TestSuite_Main.py @@ -91,4 +91,16 @@ class TestAutomation(TestAutomationBase): @revert_physics_config def test_C15425929_Undo_Redo(self, request, workspace, editor, launcher_platform): from .tests import Physics_UndoRedoWorksOnEntityWithPhysComponents as test_module - self._run_test(request, workspace, editor, test_module) \ No newline at end of file + self._run_test(request, workspace, editor, test_module) + + @pytest.mark.GROUP_tick + @pytest.mark.xfail(reason="Test still under development.") + def test_Tick_InterpolatedRigidBodyMotionIsSmooth(self, request, workspace, editor, launcher_platform): + from .tests.tick import Tick_InterpolatedRigidBodyMotionIsSmooth as test_module + self._run_test(request, workspace, editor, test_module) + + @pytest.mark.GROUP_tick + @pytest.mark.xfail(reason="Test still under development.") + def test_Tick_CharacterGameplayComponentMotionIsSmooth(self, request, workspace, editor, launcher_platform): + from .tests.tick import Tick_CharacterGameplayComponentMotionIsSmooth as test_module + self._run_test(request, workspace, editor, test_module) diff --git a/AutomatedTesting/Gem/PythonTests/Physics/TestSuite_Main_Optimized.py b/AutomatedTesting/Gem/PythonTests/Physics/TestSuite_Main_Optimized.py index 3d668a2085..0661c6742b 100644 --- a/AutomatedTesting/Gem/PythonTests/Physics/TestSuite_Main_Optimized.py +++ b/AutomatedTesting/Gem/PythonTests/Physics/TestSuite_Main_Optimized.py @@ -60,7 +60,7 @@ class EditorSingleTest_WithFileOverrides(EditorSingleTest): class TestAutomationWithPrefabSystemEnabled(EditorTestSuite): global_extra_cmdline_args = ['-BatchMode', '-autotest_mode', - 'extra_cmdline_args=["--regset=/Amazon/Preferences/EnablePrefabSystem=true"]'] + '--regset=/Amazon/Preferences/EnablePrefabSystem=true'] @staticmethod def get_number_parallel_editors(): diff --git a/AutomatedTesting/Gem/PythonTests/Physics/tests/tick/Tick_CharacterGameplayComponentMotionIsSmooth.py b/AutomatedTesting/Gem/PythonTests/Physics/tests/tick/Tick_CharacterGameplayComponentMotionIsSmooth.py new file mode 100644 index 0000000000..fe718d7247 --- /dev/null +++ b/AutomatedTesting/Gem/PythonTests/Physics/tests/tick/Tick_CharacterGameplayComponentMotionIsSmooth.py @@ -0,0 +1,99 @@ +""" +Copyright (c) Contributors to the Open 3D Engine Project. +For complete copyright and license terms please see the LICENSE at the root of this distribution. + +SPDX-License-Identifier: Apache-2.0 OR MIT + +Test Case Title : Verify that an entity with a character gameplay component moves smoothly. +""" + + +# fmt: off +class Tests(): + create_entity = ("Created test entity", "Failed to create test entity") + character_controller_added = ("Added PhysX Character Controller component", "Failed to add PhysX Character Controller component") + character_gameplay_added = ("Added PhysX Character Gameplay component", "Failed to add PhysX Character Gameplay component") + enter_game_mode = ("Entered game mode", "Failed to enter game mode") + exit_game_mode = ("Exited game mode", "Failed to exit game mode") + character_motion_smooth = ("Character motion passed smoothness threshold", "Failed to meet smoothness threshold for character motion") +# fmt: on + + +def Tick_CharacterGameplayComponentMotionIsSmooth(): + """ + Summary: + Create entity with PhysX Character Controller and PhysX Character Gameplay components. + Verify that the motion of the character controller under gravity is smooth. + + Expected Behavior: + 1) The motion of the character controller under gravity is a smooth curve, rather than an erratic/jittery movement. + + Test Steps: + 1) Load the empty level + 2) Create an entity + 3) Add a PhysX Character Controller Component and PhysX Character Gameplay component + 4) Enter game mode and collect data for the character controller's z co-ordinate and the time values for a series of frames + 5) Check if the motion of the character controller was sufficiently smooth + + :return: None + """ + # imports + import os + import azlmbr.legacy.general as general + import azlmbr.math as math + from editor_python_test_tools.editor_entity_utils import EditorEntity as Entity + from editor_python_test_tools.utils import Report + from editor_python_test_tools.utils import TestHelper as helper + from editor_python_test_tools.asset_utils import Asset + import numpy as np + + # constants + COEFFICIENT_OF_DETERMINATION_THRESHOLD = 1 - 1e-4 # curves with values below this are not considered sufficiently smooth + + helper.init_idle() + # 1) Load the empty level + helper.open_level("", "Base") + + # 2) Create an entity + test_entity = Entity.create_editor_entity("test_entity") + Report.result(Tests.create_entity, test_entity.id.IsValid()) + + azlmbr.components.TransformBus( + azlmbr.bus.Event, "SetWorldTranslation", test_entity.id, math.Vector3(0.0, 0.0, 0.0)) + + # 3) Add character controller and character gameplay components + character_controller_component = test_entity.add_component("PhysX Character Controller") + Report.result(Tests.character_controller_added, test_entity.has_component("PhysX Character Controller")) + character_gameplay_component = test_entity.add_component("PhysX Character Gameplay") + Report.result(Tests.character_gameplay_added, test_entity.has_component("PhysX Character Gameplay")) + + # 4) Enter game mode and collect data for the rigid body's z co-ordinate and the time values for a series of frames + t = [] + z = [] + helper.enter_game_mode(Tests.enter_game_mode) + general.idle_wait_frames(1) + game_entity_id = general.find_game_entity("test_entity") + for frame in range(100): + t.append(azlmbr.components.TickRequestBus(azlmbr.bus.Broadcast, "GetTimeAtCurrentTick").GetSeconds()) + z.append(azlmbr.components.TransformBus(azlmbr.bus.Event, "GetWorldZ", game_entity_id)) + general.idle_wait_frames(1) + helper.exit_game_mode(Tests.exit_game_mode) + + # 5) Test that the z vs t curve is sufficiently smooth (if the interpolation is not working well, the curve will be less smooth) + # normalize the t and z data + t = np.array(t) - np.mean(t) + z = np.array(z) - np.mean(z) + # fit a polynomial to the z vs t curve + fit = np.poly1d(np.polyfit(t, z, 4)) + residual = fit(t) - z + # calculate the coefficient of determination (a measure of how closely the polynomial curve fits the data) + # if the coefficient is very close to 1, then the curve fits the data very well, suggesting that the rigid body motion is smooth + # if the coefficient is significantly less than 1, then the z values vary more erratically relative to the smooth curve, + # indicating that the motion of the rigid body is not smooth + coefficient_of_determination = (1 - np.sum(residual * residual) / np.sum(z * z)) + Report.result(Tests.character_motion_smooth, bool(coefficient_of_determination > COEFFICIENT_OF_DETERMINATION_THRESHOLD)) + + +if __name__ == "__main__": + from editor_python_test_tools.utils import Report + Report.start_test(Tick_CharacterGameplayComponentMotionIsSmooth) diff --git a/AutomatedTesting/Gem/PythonTests/Physics/tests/tick/Tick_InterpolatedRigidBodyMotionIsSmooth.py b/AutomatedTesting/Gem/PythonTests/Physics/tests/tick/Tick_InterpolatedRigidBodyMotionIsSmooth.py new file mode 100644 index 0000000000..19e79355d9 --- /dev/null +++ b/AutomatedTesting/Gem/PythonTests/Physics/tests/tick/Tick_InterpolatedRigidBodyMotionIsSmooth.py @@ -0,0 +1,98 @@ +""" +Copyright (c) Contributors to the Open 3D Engine Project. +For complete copyright and license terms please see the LICENSE at the root of this distribution. + +SPDX-License-Identifier: Apache-2.0 OR MIT + +Test Case Title : Verify that a rigid body with "Interpolate motion" option selected moves smoothly. +""" + + +# fmt: off +class Tests(): + create_entity = ("Created test entity", "Failed to create test entity") + rigid_body_added = ("Added PhysX Rigid Body component", "Failed to add PhysX Rigid Body component") + enter_game_mode = ("Entered game mode", "Failed to enter game mode") + exit_game_mode = ("Exited game mode", "Failed to exit game mode") + rigid_body_smooth = ("Rigid body motion passed smoothness threshold", "Failed to meet smoothness threshold for rigid body motion") +# fmt: on + + +def Tick_InterpolatedRigidBodyMotionIsSmooth(): + """ + Summary: + Create entity with PhysX Rigid Body component and turn on the Interpolate motion setting. + Verify that the position of the rigid body varies smoothly with time. + + Expected Behavior: + 1) The motion of the rigid body under gravity is a smooth curve, rather than an erratic/jittery movement. + + Test Steps: + 1) Load the empty level + 2) Create an entity + 3) Add rigid body component + 4) Enter game mode and collect data for the rigid body's z co-ordinate and the time values for a series of frames + 5) Check if the motion of the rigid body was sufficiently smooth + + :return: None + """ + # imports + import os + import azlmbr.legacy.general as general + import azlmbr.math as math + from editor_python_test_tools.editor_entity_utils import EditorEntity as Entity + from editor_python_test_tools.utils import Report + from editor_python_test_tools.utils import TestHelper as helper + from editor_python_test_tools.asset_utils import Asset + import numpy as np + + # constants + COEFFICIENT_OF_DETERMINATION_THRESHOLD = 1 - 1e-4 # curves with values below this are not considered sufficiently smooth + + helper.init_idle() + # 1) Load the empty level + helper.open_level("", "Base") + + # 2) Create an entity + test_entity = Entity.create_editor_entity("test_entity") + Report.result(Tests.create_entity, test_entity.id.IsValid()) + + azlmbr.components.TransformBus( + azlmbr.bus.Event, "SetWorldTranslation", test_entity.id, math.Vector3(0.0, 0.0, 0.0)) + + # 3) Add rigid body component + rigid_body_component = test_entity.add_component("PhysX Rigid Body") + rigid_body_component.set_component_property_value("Configuration|Interpolate motion", True) + azlmbr.physics.RigidBodyRequestBus(azlmbr.bus.Event, "SetLinearDamping", test_entity.id, 0.0) + Report.result(Tests.rigid_body_added, test_entity.has_component("PhysX Rigid Body")) + + # 4) Enter game mode and collect data for the rigid body's z co-ordinate and the time values for a series of frames + t = [] + z = [] + helper.enter_game_mode(Tests.enter_game_mode) + general.idle_wait_frames(1) + game_entity_id = general.find_game_entity("test_entity") + for frame in range(100): + t.append(azlmbr.components.TickRequestBus(azlmbr.bus.Broadcast, "GetTimeAtCurrentTick").GetSeconds()) + z.append(azlmbr.components.TransformBus(azlmbr.bus.Event, "GetWorldZ", game_entity_id)) + general.idle_wait_frames(1) + helper.exit_game_mode(Tests.exit_game_mode) + + # 5) Test that the z vs t curve is sufficiently smooth (if the interpolation is not working well, the curve will be less smooth) + # normalize the t and z data + t = np.array(t) - np.mean(t) + z = np.array(z) - np.mean(z) + # fit a polynomial to the z vs t curve + fit = np.poly1d(np.polyfit(t, z, 4)) + residual = fit(t) - z + # calculate the coefficient of determination (a measure of how closely the polynomial curve fits the data) + # if the coefficient is very close to 1, then the curve fits the data very well, suggesting that the rigid body motion is smooth + # if the coefficient is significantly less than 1, then the z values vary more erratically relative to the smooth curve, + # indicating that the motion of the rigid body is not smooth + coefficient_of_determination = (1 - np.sum(residual * residual) / np.sum(z * z)) + Report.result(Tests.rigid_body_smooth, bool(coefficient_of_determination > COEFFICIENT_OF_DETERMINATION_THRESHOLD)) + + +if __name__ == "__main__": + from editor_python_test_tools.utils import Report + Report.start_test(Tick_InterpolatedRigidBodyMotionIsSmooth) diff --git a/AutomatedTesting/Gem/PythonTests/Physics/utils/FileManagement.py b/AutomatedTesting/Gem/PythonTests/Physics/utils/FileManagement.py index 22a41de4ea..017bb672a4 100644 --- a/AutomatedTesting/Gem/PythonTests/Physics/utils/FileManagement.py +++ b/AutomatedTesting/Gem/PythonTests/Physics/utils/FileManagement.py @@ -218,6 +218,7 @@ class FileManagement: src_file_path = os.path.join(src_path, src_file) if os.path.exists(target_file_path): fs.unlock_file(target_file_path) + os.makedirs(target_path, exist_ok=True) shutil.copyfile(src_file_path, target_file_path) @staticmethod diff --git a/AutomatedTesting/Gem/PythonTests/Prefab/TestSuite_Main.py b/AutomatedTesting/Gem/PythonTests/Prefab/TestSuite_Main.py index 479915752f..3c07105417 100644 --- a/AutomatedTesting/Gem/PythonTests/Prefab/TestSuite_Main.py +++ b/AutomatedTesting/Gem/PythonTests/Prefab/TestSuite_Main.py @@ -12,7 +12,6 @@ import pytest import os import sys -from ly_test_tools import LAUNCHERS sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../automatedtesting_shared') from base import TestAutomationBase @@ -28,38 +27,38 @@ class TestAutomation(TestAutomationBase): batch_mode=batch_mode, autotest_mode=autotest_mode) - def test_PrefabLevel_OpensLevelWithEntities(self, request, workspace, editor, launcher_platform): - from .tests import PrefabLevel_OpensLevelWithEntities as test_module + def test_OpenLevel_ContainingTwoEntities(self, request, workspace, editor, launcher_platform): + from Prefab.tests.open_level import OpenLevel_ContainingTwoEntities as test_module self._run_prefab_test(request, workspace, editor, test_module) - def test_PrefabBasicWorkflow_CreatePrefab(self, request, workspace, editor, launcher_platform): - from .tests import PrefabBasicWorkflow_CreatePrefab as test_module + def test_CreatePrefab_WithSingleEntity(self, request, workspace, editor, launcher_platform): + from Prefab.tests.create_prefab import CreatePrefab_WithSingleEntity as test_module self._run_prefab_test(request, workspace, editor, test_module) - def test_PrefabBasicWorkflow_InstantiatePrefab(self, request, workspace, editor, launcher_platform): - from .tests import PrefabBasicWorkflow_InstantiatePrefab as test_module + def test_InstantiatePrefab_ContainingASingleEntity(self, request, workspace, editor, launcher_platform): + from Prefab.tests.instantiate_prefab import InstantiatePrefab_ContainingASingleEntity as test_module self._run_prefab_test(request, workspace, editor, test_module) - def test_PrefabBasicWorkflow_CreateAndDeletePrefab(self, request, workspace, editor, launcher_platform): - from .tests import PrefabBasicWorkflow_CreateAndDeletePrefab as test_module + def test_DeletePrefab_ContainingASingleEntity(self, request, workspace, editor, launcher_platform): + from Prefab.tests.delete_prefab import DeletePrefab_ContainingASingleEntity as test_module self._run_prefab_test(request, workspace, editor, test_module) - def test_PrefabBasicWorkflow_CreateAndReparentPrefab(self, request, workspace, editor, launcher_platform): - from .tests import PrefabBasicWorkflow_CreateAndReparentPrefab as test_module + def test_ReparentPrefab_UnderAnotherPrefab(self, request, workspace, editor, launcher_platform): + from Prefab.tests.reparent_prefab import ReparentPrefab_UnderAnotherPrefab as test_module self._run_prefab_test(request, workspace, editor, test_module, autotest_mode=False) - def test_PrefabBasicWorkflow_CreateReparentAndDetachPrefab(self, request, workspace, editor, launcher_platform): - from .tests import PrefabBasicWorkflow_CreateReparentAndDetachPrefab as test_module + def test_DetachPrefab_UnderAnotherPrefab(self, request, workspace, editor, launcher_platform): + from Prefab.tests.detach_prefab import DetachPrefab_UnderAnotherPrefab as test_module self._run_prefab_test(request, workspace, editor, test_module, autotest_mode=False) - def test_PrefabBasicWorkflow_CreateAndDuplicatePrefab(self, request, workspace, editor, launcher_platform): - from .tests import PrefabBasicWorkflow_CreateAndDuplicatePrefab as test_module + def test_DuplicatePrefab_ContainingASingleEntity(self, request, workspace, editor, launcher_platform): + from Prefab.tests.duplicate_prefab import DuplicatePrefab_ContainingASingleEntity as test_module self._run_prefab_test(request, workspace, editor, test_module) - def test_PrefabComplexWorflow_CreatePrefabOfChildEntity(self, request, workspace, editor, launcher_platform): - from .tests import PrefabComplexWorflow_CreatePrefabOfChildEntity as test_module + def test_CreatePrefab_UnderAnEntity(self, request, workspace, editor, launcher_platform): + from Prefab.tests.create_prefab import CreatePrefab_UnderAnEntity as test_module self._run_prefab_test(request, workspace, editor, test_module, autotest_mode=False) - def test_PrefabComplexWorflow_CreatePrefabInsidePrefab(self, request, workspace, editor, launcher_platform): - from .tests import PrefabComplexWorflow_CreatePrefabInsidePrefab as test_module + def test_CreatePrefab_UnderAnotherPrefab(self, request, workspace, editor, launcher_platform): + from Prefab.tests.create_prefab import CreatePrefab_UnderAnotherPrefab as test_module self._run_prefab_test(request, workspace, editor, test_module, autotest_mode=False) diff --git a/AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabComplexWorflow_CreatePrefabOfChildEntity.py b/AutomatedTesting/Gem/PythonTests/Prefab/tests/create_prefab/CreatePrefab_UnderAnEntity.py similarity index 94% rename from AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabComplexWorflow_CreatePrefabOfChildEntity.py rename to AutomatedTesting/Gem/PythonTests/Prefab/tests/create_prefab/CreatePrefab_UnderAnEntity.py index dec44d52be..5033c1da9c 100644 --- a/AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabComplexWorflow_CreatePrefabOfChildEntity.py +++ b/AutomatedTesting/Gem/PythonTests/Prefab/tests/create_prefab/CreatePrefab_UnderAnEntity.py @@ -5,7 +5,7 @@ For complete copyright and license terms please see the LICENSE at the root of t SPDX-License-Identifier: Apache-2.0 OR MIT """ -def PrefabComplexWorflow_CreatePrefabOfChildEntity(): +def CreatePrefab_UnderAnEntity(): """ Test description: - Creates two entities, parent and child. Child entity has Parent entity as its parent. @@ -18,7 +18,7 @@ def PrefabComplexWorflow_CreatePrefabOfChildEntity(): from editor_python_test_tools.editor_entity_utils import EditorEntity from editor_python_test_tools.prefab_utils import Prefab - import PrefabTestUtils as prefab_test_utils + import Prefab.tests.PrefabTestUtils as prefab_test_utils prefab_test_utils.open_base_tests_level() @@ -49,4 +49,4 @@ def PrefabComplexWorflow_CreatePrefabOfChildEntity(): if __name__ == "__main__": from editor_python_test_tools.utils import Report - Report.start_test(PrefabComplexWorflow_CreatePrefabOfChildEntity) + Report.start_test(CreatePrefab_UnderAnEntity) diff --git a/AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabComplexWorflow_CreatePrefabInsidePrefab.py b/AutomatedTesting/Gem/PythonTests/Prefab/tests/create_prefab/CreatePrefab_UnderAnotherPrefab.py similarity index 94% rename from AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabComplexWorflow_CreatePrefabInsidePrefab.py rename to AutomatedTesting/Gem/PythonTests/Prefab/tests/create_prefab/CreatePrefab_UnderAnotherPrefab.py index e14fc96449..429da49434 100644 --- a/AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabComplexWorflow_CreatePrefabInsidePrefab.py +++ b/AutomatedTesting/Gem/PythonTests/Prefab/tests/create_prefab/CreatePrefab_UnderAnotherPrefab.py @@ -5,7 +5,7 @@ For complete copyright and license terms please see the LICENSE at the root of t SPDX-License-Identifier: Apache-2.0 OR MIT """ -def PrefabComplexWorflow_CreatePrefabInsidePrefab(): +def CreatePrefab_UnderAnotherPrefab(): """ Test description: - Creates an entity with a physx collider @@ -17,7 +17,7 @@ def PrefabComplexWorflow_CreatePrefabInsidePrefab(): from editor_python_test_tools.editor_entity_utils import EditorEntity from editor_python_test_tools.prefab_utils import Prefab - import PrefabTestUtils as prefab_test_utils + import Prefab.tests.PrefabTestUtils as prefab_test_utils prefab_test_utils.open_base_tests_level() @@ -54,4 +54,4 @@ def PrefabComplexWorflow_CreatePrefabInsidePrefab(): if __name__ == "__main__": from editor_python_test_tools.utils import Report - Report.start_test(PrefabComplexWorflow_CreatePrefabInsidePrefab) + Report.start_test(CreatePrefab_UnderAnotherPrefab) diff --git a/AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabBasicWorkflow_CreatePrefab.py b/AutomatedTesting/Gem/PythonTests/Prefab/tests/create_prefab/CreatePrefab_WithSingleEntity.py similarity index 84% rename from AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabBasicWorkflow_CreatePrefab.py rename to AutomatedTesting/Gem/PythonTests/Prefab/tests/create_prefab/CreatePrefab_WithSingleEntity.py index cae105a9a9..80f4c0e596 100644 --- a/AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabBasicWorkflow_CreatePrefab.py +++ b/AutomatedTesting/Gem/PythonTests/Prefab/tests/create_prefab/CreatePrefab_WithSingleEntity.py @@ -5,7 +5,7 @@ For complete copyright and license terms please see the LICENSE at the root of t SPDX-License-Identifier: Apache-2.0 OR MIT """ -def PrefabBasicWorkflow_CreatePrefab(): +def CreatePrefab_WithSingleEntity(): CAR_PREFAB_FILE_NAME = 'car_prefab' @@ -13,7 +13,7 @@ def PrefabBasicWorkflow_CreatePrefab(): from editor_python_test_tools.utils import Report from editor_python_test_tools.prefab_utils import Prefab - import PrefabTestUtils as prefab_test_utils + import Prefab.tests.PrefabTestUtils as prefab_test_utils prefab_test_utils.open_base_tests_level() @@ -26,4 +26,4 @@ def PrefabBasicWorkflow_CreatePrefab(): if __name__ == "__main__": from editor_python_test_tools.utils import Report - Report.start_test(PrefabBasicWorkflow_CreatePrefab) + Report.start_test(CreatePrefab_WithSingleEntity) diff --git a/AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabBasicWorkflow_CreateAndDeletePrefab.py b/AutomatedTesting/Gem/PythonTests/Prefab/tests/delete_prefab/DeletePrefab_ContainingASingleEntity.py similarity index 83% rename from AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabBasicWorkflow_CreateAndDeletePrefab.py rename to AutomatedTesting/Gem/PythonTests/Prefab/tests/delete_prefab/DeletePrefab_ContainingASingleEntity.py index bbebd70e04..919168019e 100644 --- a/AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabBasicWorkflow_CreateAndDeletePrefab.py +++ b/AutomatedTesting/Gem/PythonTests/Prefab/tests/delete_prefab/DeletePrefab_ContainingASingleEntity.py @@ -5,14 +5,14 @@ For complete copyright and license terms please see the LICENSE at the root of t SPDX-License-Identifier: Apache-2.0 OR MIT """ -def PrefabBasicWorkflow_CreateAndDeletePrefab(): +def DeletePrefab_ContainingASingleEntity(): CAR_PREFAB_FILE_NAME = 'car_prefab' from editor_python_test_tools.editor_entity_utils import EditorEntity from editor_python_test_tools.prefab_utils import Prefab - import PrefabTestUtils as prefab_test_utils + import Prefab.tests.PrefabTestUtils as prefab_test_utils prefab_test_utils.open_base_tests_level() @@ -29,4 +29,4 @@ def PrefabBasicWorkflow_CreateAndDeletePrefab(): if __name__ == "__main__": from editor_python_test_tools.utils import Report - Report.start_test(PrefabBasicWorkflow_CreateAndDeletePrefab) + Report.start_test(DeletePrefab_ContainingASingleEntity) diff --git a/AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabBasicWorkflow_CreateReparentAndDetachPrefab.py b/AutomatedTesting/Gem/PythonTests/Prefab/tests/detach_prefab/DetachPrefab_UnderAnotherPrefab.py similarity index 89% rename from AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabBasicWorkflow_CreateReparentAndDetachPrefab.py rename to AutomatedTesting/Gem/PythonTests/Prefab/tests/detach_prefab/DetachPrefab_UnderAnotherPrefab.py index bdf77c4bf3..5c97f0b032 100644 --- a/AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabBasicWorkflow_CreateReparentAndDetachPrefab.py +++ b/AutomatedTesting/Gem/PythonTests/Prefab/tests/detach_prefab/DetachPrefab_UnderAnotherPrefab.py @@ -5,7 +5,7 @@ For complete copyright and license terms please see the LICENSE at the root of t SPDX-License-Identifier: Apache-2.0 OR MIT """ -def PrefabBasicWorkflow_CreateReparentAndDetachPrefab(): +def DetachPrefab_UnderAnotherPrefab(): CAR_PREFAB_FILE_NAME = 'car_prefab' WHEEL_PREFAB_FILE_NAME = 'wheel_prefab' @@ -18,7 +18,7 @@ def PrefabBasicWorkflow_CreateReparentAndDetachPrefab(): from editor_python_test_tools.editor_entity_utils import EditorEntity from editor_python_test_tools.prefab_utils import Prefab - import PrefabTestUtils as prefab_test_utils + import Prefab.tests.PrefabTestUtils as prefab_test_utils prefab_test_utils.open_base_tests_level() @@ -48,4 +48,4 @@ def PrefabBasicWorkflow_CreateReparentAndDetachPrefab(): if __name__ == "__main__": from editor_python_test_tools.utils import Report - Report.start_test(PrefabBasicWorkflow_CreateReparentAndDetachPrefab) + Report.start_test(DetachPrefab_UnderAnotherPrefab) diff --git a/AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabBasicWorkflow_CreateAndDuplicatePrefab.py b/AutomatedTesting/Gem/PythonTests/Prefab/tests/duplicate_prefab/DuplicatePrefab_ContainingASingleEntity.py similarity index 83% rename from AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabBasicWorkflow_CreateAndDuplicatePrefab.py rename to AutomatedTesting/Gem/PythonTests/Prefab/tests/duplicate_prefab/DuplicatePrefab_ContainingASingleEntity.py index 2479ae549e..e611303fbb 100644 --- a/AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabBasicWorkflow_CreateAndDuplicatePrefab.py +++ b/AutomatedTesting/Gem/PythonTests/Prefab/tests/duplicate_prefab/DuplicatePrefab_ContainingASingleEntity.py @@ -5,14 +5,14 @@ For complete copyright and license terms please see the LICENSE at the root of t SPDX-License-Identifier: Apache-2.0 OR MIT """ -def PrefabBasicWorkflow_CreateAndDuplicatePrefab(): +def DuplicatePrefab_ContainingASingleEntity(): CAR_PREFAB_FILE_NAME = 'car_prefab' from editor_python_test_tools.editor_entity_utils import EditorEntity from editor_python_test_tools.prefab_utils import Prefab - import PrefabTestUtils as prefab_test_utils + import Prefab.tests.PrefabTestUtils as prefab_test_utils prefab_test_utils.open_base_tests_level() @@ -29,4 +29,4 @@ def PrefabBasicWorkflow_CreateAndDuplicatePrefab(): if __name__ == "__main__": from editor_python_test_tools.utils import Report - Report.start_test(PrefabBasicWorkflow_CreateAndDuplicatePrefab) + Report.start_test(DuplicatePrefab_ContainingASingleEntity) diff --git a/AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabBasicWorkflow_InstantiatePrefab.py b/AutomatedTesting/Gem/PythonTests/Prefab/tests/instantiate_prefab/InstantiatePrefab_ContainingASingleEntity.py similarity index 85% rename from AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabBasicWorkflow_InstantiatePrefab.py rename to AutomatedTesting/Gem/PythonTests/Prefab/tests/instantiate_prefab/InstantiatePrefab_ContainingASingleEntity.py index a701802cd4..a81608ee8a 100644 --- a/AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabBasicWorkflow_InstantiatePrefab.py +++ b/AutomatedTesting/Gem/PythonTests/Prefab/tests/instantiate_prefab/InstantiatePrefab_ContainingASingleEntity.py @@ -5,7 +5,7 @@ For complete copyright and license terms please see the LICENSE at the root of t SPDX-License-Identifier: Apache-2.0 OR MIT """ -def PrefabBasicWorkflow_InstantiatePrefab(): +def InstantiatePrefab_ContainingASingleEntity(): from azlmbr.math import Vector3 @@ -15,7 +15,7 @@ def PrefabBasicWorkflow_InstantiatePrefab(): from editor_python_test_tools.prefab_utils import Prefab - import PrefabTestUtils as prefab_test_utils + import Prefab.tests.PrefabTestUtils as prefab_test_utils prefab_test_utils.open_base_tests_level() @@ -30,4 +30,4 @@ def PrefabBasicWorkflow_InstantiatePrefab(): if __name__ == "__main__": from editor_python_test_tools.utils import Report - Report.start_test(PrefabBasicWorkflow_InstantiatePrefab) + Report.start_test(InstantiatePrefab_ContainingASingleEntity) diff --git a/AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabLevel_OpensLevelWithEntities.py b/AutomatedTesting/Gem/PythonTests/Prefab/tests/open_level/OpenLevel_ContainingTwoEntities.py similarity index 96% rename from AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabLevel_OpensLevelWithEntities.py rename to AutomatedTesting/Gem/PythonTests/Prefab/tests/open_level/OpenLevel_ContainingTwoEntities.py index 0eb7e86a9e..787d7000d2 100644 --- a/AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabLevel_OpensLevelWithEntities.py +++ b/AutomatedTesting/Gem/PythonTests/Prefab/tests/open_level/OpenLevel_ContainingTwoEntities.py @@ -14,7 +14,7 @@ class Tests(): # fmt:on -def PrefabLevel_OpensLevelWithEntities(): +def OpenLevel_ContainingTwoEntities(): """ Opens the level that contains 2 entities, "EmptyEntity" and "EntityWithPxCollider". This test makes sure that both entities exist after opening the level and that: @@ -70,4 +70,4 @@ def PrefabLevel_OpensLevelWithEntities(): if __name__ == "__main__": from editor_python_test_tools.utils import Report - Report.start_test(PrefabLevel_OpensLevelWithEntities) + Report.start_test(OpenLevel_ContainingTwoEntities) diff --git a/AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabBasicWorkflow_CreateAndReparentPrefab.py b/AutomatedTesting/Gem/PythonTests/Prefab/tests/reparent_prefab/ReparentPrefab_UnderAnotherPrefab.py similarity index 89% rename from AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabBasicWorkflow_CreateAndReparentPrefab.py rename to AutomatedTesting/Gem/PythonTests/Prefab/tests/reparent_prefab/ReparentPrefab_UnderAnotherPrefab.py index 1cbc591c29..2c460a3298 100644 --- a/AutomatedTesting/Gem/PythonTests/Prefab/tests/PrefabBasicWorkflow_CreateAndReparentPrefab.py +++ b/AutomatedTesting/Gem/PythonTests/Prefab/tests/reparent_prefab/ReparentPrefab_UnderAnotherPrefab.py @@ -5,7 +5,7 @@ For complete copyright and license terms please see the LICENSE at the root of t SPDX-License-Identifier: Apache-2.0 OR MIT """ -def PrefabBasicWorkflow_CreateAndReparentPrefab(): +def ReparentPrefab_UnderAnotherPrefab(): CAR_PREFAB_FILE_NAME = 'car_prefab' WHEEL_PREFAB_FILE_NAME = 'wheel_prefab' @@ -18,7 +18,7 @@ def PrefabBasicWorkflow_CreateAndReparentPrefab(): from editor_python_test_tools.editor_entity_utils import EditorEntity from editor_python_test_tools.prefab_utils import Prefab - import PrefabTestUtils as prefab_test_utils + import Prefab.tests.PrefabTestUtils as prefab_test_utils prefab_test_utils.open_base_tests_level() @@ -45,4 +45,4 @@ def PrefabBasicWorkflow_CreateAndReparentPrefab(): if __name__ == "__main__": from editor_python_test_tools.utils import Report - Report.start_test(PrefabBasicWorkflow_CreateAndReparentPrefab) + Report.start_test(ReparentPrefab_UnderAnotherPrefab) diff --git a/AutomatedTesting/Gem/PythonTests/PythonAssetBuilder/AssetBuilder_test_case.py b/AutomatedTesting/Gem/PythonTests/PythonAssetBuilder/AssetBuilder_test_case.py index 8d418222ce..112fd013bf 100644 --- a/AutomatedTesting/Gem/PythonTests/PythonAssetBuilder/AssetBuilder_test_case.py +++ b/AutomatedTesting/Gem/PythonTests/PythonAssetBuilder/AssetBuilder_test_case.py @@ -8,42 +8,54 @@ import azlmbr.bus import azlmbr.asset import azlmbr.editor import azlmbr.math -import azlmbr.legacy.general -def raise_and_stop(msg): - print (msg) +print('Starting mock asset tests') +handler = azlmbr.editor.EditorEventBusHandler() + +def on_notify_editor_initialized(args): + # These tests are meant to check that the test_asset.mock source asset turned into + # a test_asset.mock_asset product asset via the Python asset builder system + mockAssetType = azlmbr.math.Uuid_CreateString('{9274AD17-3212-4651-9F3B-7DCCB080E467}', 0) + mockAssetPath = 'gem/pythontests/pythonassetbuilder/test_asset.mock_asset' + assetId = azlmbr.asset.AssetCatalogRequestBus(azlmbr.bus.Broadcast, 'GetAssetIdByPath', mockAssetPath, mockAssetType, False) + if (assetId.is_valid() is False): + print(f'Mock AssetId is not valid! Got {assetId.to_string()} instead') + else: + print(f'Mock AssetId is valid!') + + assetIdString = assetId.to_string() + if (assetIdString.endswith(':528cca58') is False): + print(f'Mock AssetId {assetIdString} has unexpected sub-id for {mockAssetPath}!') + else: + print(f'Mock AssetId has expected sub-id for {mockAssetPath}!') + + print ('Mock asset exists') + + # These tests detect if the geom_group.fbx file turns into a number of azmodel product assets + def test_azmodel_product(generatedModelAssetPath): + azModelAssetType = azlmbr.math.Uuid_CreateString('{2C7477B6-69C5-45BE-8163-BCD6A275B6D8}', 0) + assetId = azlmbr.asset.AssetCatalogRequestBus(azlmbr.bus.Broadcast, 'GetAssetIdByPath', generatedModelAssetPath, azModelAssetType, False) + assetIdString = assetId.to_string() + if (assetId.is_valid()): + print(f'AssetId found for asset ({generatedModelAssetPath}) found') + else: + print(f'Asset at path {generatedModelAssetPath} has unexpected asset ID ({assetIdString})!') + + test_azmodel_product('gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_z_positive_1.azmodel') + test_azmodel_product('gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_z_negative_1.azmodel') + test_azmodel_product('gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_y_positive_1.azmodel') + test_azmodel_product('gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_y_negative_1.azmodel') + test_azmodel_product('gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_x_positive_1.azmodel') + test_azmodel_product('gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_x_negative_1.azmodel') + test_azmodel_product('gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_center_1.azmodel') + + # clear up notification handler + global handler + handler.disconnect() + handler = None + + print('Finished mock asset tests') azlmbr.editor.EditorToolsApplicationRequestBus(azlmbr.bus.Broadcast, 'ExitNoPrompt') -# These tests are meant to check that the test_asset.mock source asset turned into -# a test_asset.mock_asset product asset via the Python asset builder system -mockAssetType = azlmbr.math.Uuid_CreateString('{9274AD17-3212-4651-9F3B-7DCCB080E467}', 0) -mockAssetPath = 'gem/pythontests/pythonassetbuilder/test_asset.mock_asset' -assetId = azlmbr.asset.AssetCatalogRequestBus(azlmbr.bus.Broadcast, 'GetAssetIdByPath', mockAssetPath, mockAssetType, False) -if (assetId.is_valid() is False): - raise_and_stop(f'Mock AssetId is not valid! Got {assetId.to_string()} instead') - -assetIdString = assetId.to_string() -if (assetIdString.endswith(':528cca58') is False): - raise_and_stop(f'Mock AssetId {assetIdString} has unexpected sub-id for {mockAssetPath}!') - -print ('Mock asset exists') - -# These tests detect if the geom_group.fbx file turns into a number of azmodel product assets -def test_azmodel_product(generatedModelAssetPath): - azModelAssetType = azlmbr.math.Uuid_CreateString('{2C7477B6-69C5-45BE-8163-BCD6A275B6D8}', 0) - assetId = azlmbr.asset.AssetCatalogRequestBus(azlmbr.bus.Broadcast, 'GetAssetIdByPath', generatedModelAssetPath, azModelAssetType, False) - assetIdString = assetId.to_string() - if (assetId.is_valid()): - print(f'AssetId found for asset ({generatedModelAssetPath}) found') - else: - raise_and_stop(f'Asset at path {generatedModelAssetPath} has unexpected asset ID ({assetIdString})!') - -test_azmodel_product('gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_z_positive_1.azmodel') -test_azmodel_product('gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_z_negative_1.azmodel') -test_azmodel_product('gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_y_positive_1.azmodel') -test_azmodel_product('gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_y_negative_1.azmodel') -test_azmodel_product('gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_x_positive_1.azmodel') -test_azmodel_product('gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_x_negative_1.azmodel') -test_azmodel_product('gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_center_1.azmodel') - -azlmbr.editor.EditorToolsApplicationRequestBus(azlmbr.bus.Broadcast, 'ExitNoPrompt') +handler.connect() +handler.add_callback('NotifyEditorInitialized', on_notify_editor_initialized) diff --git a/AutomatedTesting/Gem/PythonTests/Terrain/CMakeLists.txt b/AutomatedTesting/Gem/PythonTests/Terrain/CMakeLists.txt new file mode 100644 index 0000000000..9f8ba06829 --- /dev/null +++ b/AutomatedTesting/Gem/PythonTests/Terrain/CMakeLists.txt @@ -0,0 +1,24 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS) + + ly_add_pytest( + NAME AutomatedTesting::TerrainTests_Main + TEST_SUITE main + TEST_SERIAL + PATH ${CMAKE_CURRENT_LIST_DIR}/TestSuite_Main.py + RUNTIME_DEPENDENCIES + Legacy::Editor + AZ::AssetProcessor + AutomatedTesting.Assets + COMPONENT + Terrain + ) + +endif() diff --git a/AutomatedTesting/Gem/PythonTests/Terrain/EditorScripts/TerrainPhysicsCollider_ChangesSizeWithAxisAlignedBoxShapeChanges.py b/AutomatedTesting/Gem/PythonTests/Terrain/EditorScripts/TerrainPhysicsCollider_ChangesSizeWithAxisAlignedBoxShapeChanges.py new file mode 100644 index 0000000000..f4c2a19884 --- /dev/null +++ b/AutomatedTesting/Gem/PythonTests/Terrain/EditorScripts/TerrainPhysicsCollider_ChangesSizeWithAxisAlignedBoxShapeChanges.py @@ -0,0 +1,89 @@ +""" +Copyright (c) Contributors to the Open 3D Engine Project. +For complete copyright and license terms please see the LICENSE at the root of this distribution. + +SPDX-License-Identifier: Apache-2.0 OR MIT +""" + +#fmt: off +class Tests(): + create_test_entity = ("Entity created successfully", "Failed to create Entity") + add_axis_aligned_box_shape = ("Axis Aligned Box Shape component added", "Failed to add Axis Aligned Box Shape component") + add_terrain_collider = ("Terrain Physics Heightfield Collider component added", "Failed to add a Terrain Physics Heightfield Collider component") + box_dimensions_changed = ("Aabb dimensions changed successfully", "Failed change Aabb dimensions") + configuration_changed = ("Terrain size changed successfully", "Failed terrain size change") +#fmt: on + +def TerrainPhysicsCollider_ChangesSizeWithAxisAlignedBoxShapeChanges(): + """ + Summary: + Test aspects of the Terrain Physics Heightfield Collider through the BehaviorContext and the Property Tree. + + Test Steps: + Expected Behavior: + The Editor is stable there are no warnings or errors. + + Test Steps: + 1) Load the base level + 2) Create test entity + 3) Start the Tracer to catch any errors and warnings + 4) Add the Axis Aligned Box Shape and Terrain Physics Heightfield Collider components + 5) Change the Axis Aligned Box Shape dimensions + 6) Check the Heightfield provider is returning the correct size + 7) Verify there are no errors and warnings in the logs + + + :return: None + """ + + from editor_python_test_tools.editor_entity_utils import EditorEntity + from editor_python_test_tools.utils import TestHelper as helper + from editor_python_test_tools.utils import Report, Tracer + import azlmbr.legacy.general as general + import azlmbr.physics as physics + import azlmbr.math as azmath + import azlmbr.bus as bus + import sys + import math + + SET_BOX_X_SIZE = 5.0 + SET_BOX_Y_SIZE = 6.0 + EXPECTED_COLUMN_SIZE = SET_BOX_X_SIZE + 1 + EXPECTED_ROW_SIZE = SET_BOX_Y_SIZE + 1 + helper.init_idle() + + # 1) Load the level + helper.open_level("", "Base") + + # 2) Create test entity + test_entity = EditorEntity.create_editor_entity("TestEntity") + Report.result(Tests.create_test_entity, test_entity.id.IsValid()) + + # 3) Start the Tracer to catch any errors and warnings + with Tracer() as section_tracer: + # 4) Add the Axis Aligned Box Shape and Terrain Physics Heightfield Collider components + aaBoxShape_component = test_entity.add_component("Axis Aligned Box Shape") + Report.result(Tests.add_axis_aligned_box_shape, test_entity.has_component("Axis Aligned Box Shape")) + terrainPhysics_component = test_entity.add_component("Terrain Physics Heightfield Collider") + Report.result(Tests.add_terrain_collider, test_entity.has_component("Terrain Physics Heightfield Collider")) + + # 5) Change the Axis Aligned Box Shape dimensions + aaBoxShape_component.set_component_property_value("Axis Aligned Box Shape|Box Configuration|Dimensions", azmath.Vector3(SET_BOX_X_SIZE, SET_BOX_Y_SIZE, 1.0)) + add_check = aaBoxShape_component.get_component_property_value("Axis Aligned Box Shape|Box Configuration|Dimensions") == azmath.Vector3(SET_BOX_X_SIZE, SET_BOX_Y_SIZE, 1.0) + Report.result(Tests.box_dimensions_changed, add_check) + + # 6) Check the Heightfield provider is returning the correct size + columns = physics.HeightfieldProviderRequestsBus(bus.Broadcast, "GetHeightfieldGridColumns") + rows = physics.HeightfieldProviderRequestsBus(bus.Broadcast, "GetHeightfieldGridRows") + Report.result(Tests.configuration_changed, math.isclose(columns, EXPECTED_COLUMN_SIZE) and math.isclose(rows, EXPECTED_ROW_SIZE)) + + helper.wait_for_condition(lambda: section_tracer.has_errors or section_tracer.has_asserts, 1.0) + for error_info in section_tracer.errors: + Report.info(f"Error: {error_info.filename} {error_info.function} | {error_info.message}") + for assert_info in section_tracer.asserts: + Report.info(f"Assert: {assert_info.filename} {assert_info.function} | {assert_info.message}") + +if __name__ == "__main__": + + from editor_python_test_tools.utils import Report + Report.start_test(TerrainPhysicsCollider_ChangesSizeWithAxisAlignedBoxShapeChanges) diff --git a/AutomatedTesting/Gem/PythonTests/Terrain/EditorScripts/Terrain_SupportsPhysics.py b/AutomatedTesting/Gem/PythonTests/Terrain/EditorScripts/Terrain_SupportsPhysics.py new file mode 100644 index 0000000000..e68b0932c2 --- /dev/null +++ b/AutomatedTesting/Gem/PythonTests/Terrain/EditorScripts/Terrain_SupportsPhysics.py @@ -0,0 +1,164 @@ +""" +Copyright (c) Contributors to the Open 3D Engine Project. +For complete copyright and license terms please see the LICENSE at the root of this distribution. + +SPDX-License-Identifier: Apache-2.0 OR MIT +""" + +#fmt: off +class Tests(): + create_terrain_spawner_entity = ("Terrain_spawner_entity created successfully", "Failed to create terrain_spawner_entity") + create_height_provider_entity = ("Height_provider_entity created successfully", "Failed to create height_provider_entity") + create_test_ball = ("Ball created successfully", "Failed to create Ball") + box_dimensions_changed = ("Aabb dimensions changed successfully", "Failed change Aabb dimensions") + shape_changed = ("Shape changed successfully", "Failed Shape change") + entity_added = ("Entity added successfully", "Failed Entity add") + frequency_changed = ("Frequency changed successfully", "Failed Frequency change") + shape_set = ("Shape set to Sphere successfully", "Failed to set Sphere shape") + test_collision = ("Ball collided with terrain", "Ball failed to collide with terrain") + no_errors_and_warnings_found = ("No errors and warnings found", "Found errors and warnings") +#fmt: on + +def Terrain_SupportsPhysics(): + """ + Summary: + Test aspects of the TerrainHeightGradientList through the BehaviorContext and the Property Tree. + + Test Steps: + Expected Behavior: + The Editor is stable there are no warnings or errors. + + Test Steps: + 1) Load the base level + 2) Create 2 test entities, one parent at 512.0, 512.0, 50.0 and one child at the default position and add the required components + 2a) Create a ball at 600.0, 600.0, 46.0 - This position is not too high over the heightfield so will collide in a reasonable time + 3) Start the Tracer to catch any errors and warnings + 4) Change the Axis Aligned Box Shape dimensions + 5) Set the Vegetation Shape reference to TestEntity1 + 6) Set the FastNoise gradient frequency to 0.01 + 7) Set the Gradient List to TestEntity2 + 8) Set the PhysX Collider to Sphere mode + 9) Disable and Enable the Terrain Gradient List so that it is recognised + 10) Enter game mode and test if the ball hits the heightfield within 3 seconds + 11) Verify there are no errors and warnings in the logs + + + :return: None + """ + + from editor_python_test_tools.editor_entity_utils import EditorEntity + from editor_python_test_tools.utils import TestHelper as helper, Report + from editor_python_test_tools.utils import Report, Tracer + import editor_python_test_tools.hydra_editor_utils as hydra + import azlmbr.math as azmath + import azlmbr.legacy.general as general + import azlmbr.bus as bus + import azlmbr.editor as editor + import math + + SET_BOX_X_SIZE = 1024.0 + SET_BOX_Y_SIZE = 1024.0 + SET_BOX_Z_SIZE = 100.0 + + helper.init_idle() + + # 1) Load the level + helper.open_level("", "Base") + helper.wait_for_condition(lambda: general.get_current_level_name() == "Base", 2.0) + + #1a) Load the level components + hydra.add_level_component("Terrain World") + hydra.add_level_component("Terrain World Renderer") + + # 2) Create 2 test entities, one parent at 512.0, 512.0, 50.0 and one child at the default position and add the required components + entity1_components_to_add = ["Axis Aligned Box Shape", "Terrain Layer Spawner", "Terrain Height Gradient List", "Terrain Physics Heightfield Collider", "PhysX Heightfield Collider"] + entity2_components_to_add = ["Vegetation Reference Shape", "Gradient Transform Modifier", "FastNoise Gradient"] + ball_components_to_add = ["Sphere Shape", "PhysX Collider", "PhysX Rigid Body"] + terrain_spawner_entity = hydra.Entity("TestEntity1") + terrain_spawner_entity.create_entity(azmath.Vector3(512.0, 512.0, 50.0), entity1_components_to_add) + Report.result(Tests.create_terrain_spawner_entity, terrain_spawner_entity.id.IsValid()) + height_provider_entity = hydra.Entity("TestEntity2") + height_provider_entity.create_entity(azmath.Vector3(0.0, 0.0, 0.0), entity2_components_to_add,terrain_spawner_entity.id) + Report.result(Tests.create_height_provider_entity, height_provider_entity.id.IsValid()) + # 2a) Create a ball at 600.0, 600.0, 46.0 - This position is not too high over the heightfield so will collide in a reasonable time + ball = hydra.Entity("Ball") + ball.create_entity(azmath.Vector3(600.0, 600.0, 46.0), ball_components_to_add) + Report.result(Tests.create_test_ball, ball.id.IsValid()) + # Give everything a chance to finish initializing. + general.idle_wait_frames(1) + + # 3) Start the Tracer to catch any errors and warnings + with Tracer() as section_tracer: + # 4) Change the Axis Aligned Box Shape dimensions + box_dimensions = azmath.Vector3(SET_BOX_X_SIZE, SET_BOX_Y_SIZE, SET_BOX_Z_SIZE) + terrain_spawner_entity.get_set_test(0, "Axis Aligned Box Shape|Box Configuration|Dimensions", box_dimensions) + box_shape_dimensions = hydra.get_component_property_value(terrain_spawner_entity.components[0], "Axis Aligned Box Shape|Box Configuration|Dimensions") + Report.result(Tests.box_dimensions_changed, box_dimensions == box_shape_dimensions) + + # 5) Set the Vegetaion Shape reference to TestEntity1 + height_provider_entity.get_set_test(0, "Configuration|Shape Entity Id", terrain_spawner_entity.id) + entityId = hydra.get_component_property_value(height_provider_entity.components[0], "Configuration|Shape Entity Id") + Report.result(Tests.shape_changed, entityId == terrain_spawner_entity.id) + + # 6) Set the FastNoise Gradient frequency to 0.01 + Frequency = 0.01 + height_provider_entity.get_set_test(2, "Configuration|Frequency", Frequency) + FrequencyVal = hydra.get_component_property_value(height_provider_entity.components[2], "Configuration|Frequency") + Report.result(Tests.frequency_changed, math.isclose(Frequency, FrequencyVal, abs_tol = 0.00001)) + + # 7) Set the Gradient List to TestEntity2 + propertyTree = hydra.get_property_tree(terrain_spawner_entity.components[2]) + propertyTree.add_container_item("Configuration|Gradient Entities", 0, height_provider_entity.id) + checkID = propertyTree.get_container_item("Configuration|Gradient Entities", 0) + Report.result(Tests.entity_added, checkID.GetValue() == height_provider_entity.id) + + # 8) Set the PhysX Collider to Sphere mode + shape = 0 + hydra.get_set_test(ball, 1, "Shape Configuration|Shape", shape) + setShape = hydra.get_component_property_value(ball.components[1], "Shape Configuration|Shape") + Report.result(Tests.shape_set, shape == setShape) + + # 9) Disable and Enable the Terrain Gradient List so that it is recognised + editor.EditorComponentAPIBus(bus.Broadcast, 'EnableComponents', [terrain_spawner_entity.components[2]]) + + general.enter_game_mode() + + general.idle_wait_frames(1) + + # 10) Enter game mode and test if the ball hits the heightfield within 3 seconds + TIMEOUT = 3.0 + + class Collider: + id = general.find_game_entity("Ball") + touched_ground = False + + terrain_id = general.find_game_entity("TestEntity1") + + def on_collision_begin(args): + other_id = args[0] + if other_id.Equal(terrain_id): + Report.info("Touched ground") + Collider.touched_ground = True + + handler = azlmbr.physics.CollisionNotificationBusHandler() + handler.connect(Collider.id) + handler.add_callback("OnCollisionBegin", on_collision_begin) + + helper.wait_for_condition(lambda: Collider.touched_ground, TIMEOUT) + Report.result(Tests.test_collision, Collider.touched_ground) + + general.exit_game_mode() + + # 11) Verify there are no errors and warnings in the logs + helper.wait_for_condition(lambda: section_tracer.has_errors or section_tracer.has_asserts, 1.0) + for error_info in section_tracer.errors: + Report.info(f"Error: {error_info.filename} {error_info.function} | {error_info.message}") + for assert_info in section_tracer.asserts: + Report.info(f"Assert: {assert_info.filename} {assert_info.function} | {assert_info.message}") + + +if __name__ == "__main__": + + from editor_python_test_tools.utils import Report + Report.start_test(Terrain_SupportsPhysics) + diff --git a/AutomatedTesting/Gem/PythonTests/Terrain/TestSuite_Main.py b/AutomatedTesting/Gem/PythonTests/Terrain/TestSuite_Main.py new file mode 100644 index 0000000000..c5eec74c08 --- /dev/null +++ b/AutomatedTesting/Gem/PythonTests/Terrain/TestSuite_Main.py @@ -0,0 +1,27 @@ +""" +Copyright (c) Contributors to the Open 3D Engine Project. +For complete copyright and license terms please see the LICENSE at the root of this distribution. + +SPDX-License-Identifier: Apache-2.0 OR MIT + +""" + +# This suite consists of all test cases that are passing and have been verified. + +import pytest +import os +import sys + +from ly_test_tools import LAUNCHERS +from ly_test_tools.o3de.editor_test import EditorTestSuite, EditorSharedTest + +@pytest.mark.SUITE_main +@pytest.mark.parametrize("launcher_platform", ['windows_editor']) +@pytest.mark.parametrize("project", ["AutomatedTesting"]) +class TestAutomation(EditorTestSuite): + + class test_AxisAlignedBoxShape_ConfigurationWorks(EditorSharedTest): + from .EditorScripts import TerrainPhysicsCollider_ChangesSizeWithAxisAlignedBoxShapeChanges as test_module + + class test_Terrain_SupportsPhysics(EditorSharedTest): + from .EditorScripts import Terrain_SupportsPhysics as test_module diff --git a/AutomatedTesting/Gem/PythonTests/Terrain/__init__.py b/AutomatedTesting/Gem/PythonTests/Terrain/__init__.py new file mode 100644 index 0000000000..f5193b300e --- /dev/null +++ b/AutomatedTesting/Gem/PythonTests/Terrain/__init__.py @@ -0,0 +1,6 @@ +""" +Copyright (c) Contributors to the Open 3D Engine Project. +For complete copyright and license terms please see the LICENSE at the root of this distribution. + +SPDX-License-Identifier: Apache-2.0 OR MIT +""" diff --git a/AutomatedTesting/Gem/PythonTests/assetpipeline/ap_fixtures/bundler_batch_setup_fixture.py b/AutomatedTesting/Gem/PythonTests/assetpipeline/ap_fixtures/bundler_batch_setup_fixture.py index 35d7982ded..9281d5947e 100755 --- a/AutomatedTesting/Gem/PythonTests/assetpipeline/ap_fixtures/bundler_batch_setup_fixture.py +++ b/AutomatedTesting/Gem/PythonTests/assetpipeline/ap_fixtures/bundler_batch_setup_fixture.py @@ -158,7 +158,7 @@ def bundler_batch_setup_fixture(request, workspace, asset_processor, timeout) -> else: cmd.append(f"--{key}") if append_defaults: - cmd.append(f"--project-path={os.path.join(workspace.paths.engine_root(), workspace.project)}") + cmd.append(f"--project-path={workspace.paths.project()}") return cmd # ****** diff --git a/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/asset_bundler_batch_tests.py b/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/asset_bundler_batch_tests.py index 7f85e5e317..f5e5642573 100755 --- a/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/asset_bundler_batch_tests.py +++ b/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/asset_bundler_batch_tests.py @@ -88,214 +88,6 @@ class TestsAssetBundlerBatch_WindowsAndMac(object): bundler_batch_helper.call_bundles(help="") bundler_batch_helper.call_bundleSeed(help="") - @pytest.mark.BAT - @pytest.mark.assetpipeline - @pytest.mark.test_case_id("C16877175") - @pytest.mark.skip("'animations/animationeditorfiles/sample1.animgraph' missing, needs investigation") - def test_WindowsAndMac_CreateAssetList_DependenciesCorrect(self, workspace, bundler_batch_helper): - r""" - Tests that an asset list created maps dependencies correctly. - testdependencieslevel\level.pak and lists of known dependencies are used for validation - - Test Steps: - 1. Create an asset list from the level.pak - 2. Create Lists of expected assets in the level.pak - 3. Add lists of expected assets to a single list - 4. Compare list of expected assets to actual assets - """ - helper = bundler_batch_helper - - # Create the asset list file - helper.call_assetLists( - addSeed=r"levels\testdependencieslevel\level.pak", - assetListFile=helper['asset_info_file_request'] - ) - - assert os.path.isfile(helper["asset_info_file_result"]) - - # Lists of known relative locations of assets - default_level_assets = [ - "engineassets/texturemsg/defaultnouvs.dds", - "engineassets/texturemsg/defaultnouvs.dds.1", - "engineassets/texturemsg/defaultnouvs.dds.2", - "engineassets/texturemsg/defaultnouvs.dds.3", - "engineassets/texturemsg/defaultnouvs.dds.4", - "engineassets/texturemsg/defaultnouvs.dds.5", - "engineassets/texturemsg/defaultnouvs.dds.6", - "engineassets/texturemsg/defaultnouvs.dds.7", - "engineassets/texturemsg/defaultnouvs_ddn.dds", - "engineassets/texturemsg/defaultnouvs_ddn.dds.1", - "engineassets/texturemsg/defaultnouvs_ddn.dds.2", - "engineassets/texturemsg/defaultnouvs_ddn.dds.3", - "engineassets/texturemsg/defaultnouvs_ddn.dds.4", - "engineassets/texturemsg/defaultnouvs_ddn.dds.5", - "engineassets/texturemsg/defaultnouvs_spec.dds", - "engineassets/texturemsg/defaultnouvs_spec.dds.1", - "engineassets/texturemsg/defaultnouvs_spec.dds.2", - "engineassets/texturemsg/defaultnouvs_spec.dds.3", - "engineassets/texturemsg/defaultnouvs_spec.dds.4", - "engineassets/texturemsg/defaultnouvs_spec.dds.5", - "engineassets/textures/defaults/16_grey.dds", - "engineassets/textures/cubemap/default_level_cubemap.dds", - "engineassets/textures/cubemap/default_level_cubemap.dds.1", - "engineassets/textures/cubemap/default_level_cubemap.dds.2", - "engineassets/textures/cubemap/default_level_cubemap.dds.3", - "engineassets/textures/cubemap/default_level_cubemap.dds.4", - "engineassets/textures/cubemap/default_level_cubemap_diff.dds", - "engineassets/materials/water/ocean_default.mtl", - "engineassets/textures/defaults/spot_default.dds", - "engineassets/textures/defaults/spot_default.dds.1", - "engineassets/textures/defaults/spot_default.dds.2", - "engineassets/textures/defaults/spot_default.dds.3", - "engineassets/textures/defaults/spot_default.dds.4", - "engineassets/textures/defaults/spot_default.dds.5", - "materials/material_terrain_default.mtl", - "textures/skys/night/half_moon.dds", - "textures/skys/night/half_moon.dds.1", - "textures/skys/night/half_moon.dds.2", - "textures/skys/night/half_moon.dds.3", - "textures/skys/night/half_moon.dds.4", - "textures/skys/night/half_moon.dds.5", - "textures/skys/night/half_moon.dds.6", - "engineassets/materials/sky/sky.mtl", - "levels/testdependencieslevel/level.pak", - "levels/testdependencieslevel/terrain/cover.ctc", - "levels/testdependencieslevel/terraintexture.pak", - ] - - sequence_material_cube_assets = [ - "textures/test_texture_sequence/test_texture_sequence000.dds", - "textures/test_texture_sequence/test_texture_sequence001.dds", - "textures/test_texture_sequence/test_texture_sequence002.dds", - "textures/test_texture_sequence/test_texture_sequence003.dds", - "textures/test_texture_sequence/test_texture_sequence004.dds", - "textures/test_texture_sequence/test_texture_sequence005.dds", - "objects/_primitives/_box_1x1.cgf", - "materials/test_texture_sequence.mtl", - "objects/_primitives/_box_1x1.mtl", - "textures/_primitives/middle_gray_checker.dds", - "textures/_primitives/middle_gray_checker.dds.1", - "textures/_primitives/middle_gray_checker.dds.2", - "textures/_primitives/middle_gray_checker.dds.3", - "textures/_primitives/middle_gray_checker.dds.4", - "textures/_primitives/middle_gray_checker.dds.5", - "textures/_primitives/middle_gray_checker_ddn.dds", - "textures/_primitives/middle_gray_checker_ddn.dds.1", - "textures/_primitives/middle_gray_checker_ddn.dds.2", - "textures/_primitives/middle_gray_checker_ddn.dds.3", - "textures/_primitives/middle_gray_checker_ddn.dds.4", - "textures/_primitives/middle_gray_checker_ddn.dds.5", - "textures/_primitives/middle_gray_checker_spec.dds", - "textures/_primitives/middle_gray_checker_spec.dds.1", - "textures/_primitives/middle_gray_checker_spec.dds.2", - "textures/_primitives/middle_gray_checker_spec.dds.3", - "textures/_primitives/middle_gray_checker_spec.dds.4", - "textures/_primitives/middle_gray_checker_spec.dds.5", - ] - - character_with_simplified_material_assets = [ - "objects/characters/jack/jack.actor", - "objects/characters/jack/jack.mtl", - "objects/characters/jack/textures/jack_diff.dds", - "objects/characters/jack/textures/jack_diff.dds.1", - "objects/characters/jack/textures/jack_diff.dds.2", - "objects/characters/jack/textures/jack_diff.dds.3", - "objects/characters/jack/textures/jack_diff.dds.4", - "objects/characters/jack/textures/jack_diff.dds.5", - "objects/characters/jack/textures/jack_diff.dds.6", - "objects/characters/jack/textures/jack_diff.dds.7", - "objects/characters/jack/textures/jack_spec.dds", - "objects/characters/jack/textures/jack_spec.dds.1", - "objects/characters/jack/textures/jack_spec.dds.2", - "objects/characters/jack/textures/jack_spec.dds.3", - "objects/characters/jack/textures/jack_spec.dds.4", - "objects/characters/jack/textures/jack_spec.dds.5", - "objects/characters/jack/textures/jack_spec.dds.6", - "objects/characters/jack/textures/jack_spec.dds.7", - "objects/default/editorprimitive.mtl", - "engineassets/textures/grey.dds", - "animations/animationeditorfiles/sample0.animgraph", - "animations/motions/jack_death_fall_back_zup.motion", - "animations/animationeditorfiles/sample1.animgraph", - "animations/animationeditorfiles/sample0.motionset", - "animations/motions/rin_jump.motion", - "animations/animationeditorfiles/sample1.motionset", - "animations/motions/rin_idle.motion", - "animations/motions/jack_idle_aim_zup.motion", - ] - - spawner_assets = [ - "slices/sphere.dynamicslice", - "objects/default/primitive_sphere.cgf", - "test1.luac", - "test2.luac", - ] - - ui_canvas_assets = [ - "fonts/vera.ttf", - "fonts/vera.font", - "scriptcanvas/mainmenu.scriptcanvas_compiled", - "fonts/vera.fontfamily", - "ui/canvas/start.uicanvas", - "fonts/vera-italic.font", - "ui/textureatlas/sample.texatlasidx", - "fonts/vera-bold-italic.ttf", - "fonts/vera-bold.font", - "ui/textures/prefab/button_normal.dds", - "ui/textures/prefab/button_normal.sprite", - "fonts/vera-italic.ttf", - "ui/textureatlas/sample.dds", - "fonts/vera-bold-italic.font", - "fonts/vera-bold.ttf", - "ui/textures/prefab/button_disabled.dds", - "ui/textures/prefab/button_disabled.sprite", - ] - - wwise_and_atl_assets = [ - "libs/gameaudio/wwise/levels/testdependencieslevel/test_dependencies_level.xml", - "sounds/wwise/test_bank3.bnk", - "sounds/wwise/test_bank4.bnk", - "sounds/wwise/test_bank5.bnk", - "sounds/wwise/test_bank1.bnk", - "sounds/wwise/init.bnk", - "sounds/wwise/499820003.wem", - "sounds/wwise/196049145.wem", - ] - - particle_library_assets = [ - "libs/particles/milestone2particles.xml", - "textures/milestone2/particles/fx_launchermuzzlering_01.dds", - "textures/milestone2/particles/fx_launchermuzzlering_01.dds.1", - "textures/milestone2/particles/fx_launchermuzzlering_01.dds.2", - "textures/milestone2/particles/fx_launchermuzzlering_01.dds.3", - "textures/milestone2/particles/fx_launchermuzzlering_01.dds.4", - "textures/milestone2/particles/fx_launchermuzzlering_01.dds.5", - "textures/milestone2/particles/fx_sparkstreak_01.dds", - "textures/milestone2/particles/fx_launchermuzzlefront_01.dds", - "textures/milestone2/particles/fx_launchermuzzlefront_01.dds.1", - "textures/milestone2/particles/fx_launchermuzzlefront_01.dds.2", - "textures/milestone2/particles/fx_launchermuzzlefront_01.dds.3", - "textures/milestone2/particles/fx_launchermuzzlefront_01.dds.4", - "textures/milestone2/particles/fx_launchermuzzlefront_01.dds.5", - ] - - lens_flares_library_assets = ["libs/flares/flares.xml", "textures/lights/flare01.dds"] - - expected_assets_list = default_level_assets - expected_assets_list.extend(sequence_material_cube_assets) - expected_assets_list.extend(character_with_simplified_material_assets) - expected_assets_list.extend(spawner_assets) - expected_assets_list.extend(ui_canvas_assets) - expected_assets_list.extend(wwise_and_atl_assets) - expected_assets_list.extend(particle_library_assets) - expected_assets_list.extend(lens_flares_library_assets) # All expected assets - - # Get actual calculated dependencies from the asset list created - actual_assets_list = [] - for rel_path in helper.get_asset_relative_paths(helper["asset_info_file_result"]): - actual_assets_list.append(rel_path) - - assert sorted(actual_assets_list) == sorted(expected_assets_list) @pytest.mark.BAT @pytest.mark.assetpipeline @@ -310,9 +102,9 @@ class TestsAssetBundlerBatch_WindowsAndMac(object): 3. Read and store contents of asset list into memory 4. Attempt to create a new asset list in without using --allowOverwrites 5. Verify that Asset Bundler returns false - 6. Verify that file contents of the orignally created asset list did not change from what was stored in memory + 6. Verify that file contents of the originally created asset list did not change from what was stored in memory 7. Attempt to create a new asset list without debug while allowing overwrites - 8. Verify that file contents of the orignally created asset list changed from what was stored in memory + 8. Verify that file contents of the originally created asset list changed from what was stored in memory """ helper = bundler_batch_helper seed_list = os.path.join(workspace.paths.engine_root(), "Assets", "Engine", "SeedAssetList.seed") # Engine seed list @@ -919,7 +711,7 @@ class TestsAssetBundlerBatch_WindowsAndMac(object): # Extra arguments for pattern comparison cmd.extend([f"--filePatternType={pattern_type}", f"--filePattern={pattern}"]) if workspace.project: - cmd.append(f'--project-path={project_name}') + cmd.append(f'--project-path={workspace.paths.project()}') return cmd # End generate_compare_command() @@ -960,7 +752,7 @@ class TestsAssetBundlerBatch_WindowsAndMac(object): output_mac_asset_list = helper.platform_file_name(last_output_arg, platform) # Build execution command - cmd = generate_compare_command(platform_arg, workspace.project) + cmd = generate_compare_command(platform_arg, workspace.paths.project()) # Execute command subprocess.check_call(cmd) @@ -995,7 +787,7 @@ class TestsAssetBundlerBatch_WindowsAndMac(object): f"--comparisonRulesFile={rule_file}", f"--comparisonType={args[1]}", r"--addComparison", - f"--project-path={workspace.project}", + f"--project-path={workspace.paths.project()}", ] if args[1] == "4": # If pattern comparison, append a few extra arguments @@ -1117,7 +909,7 @@ class TestsAssetBundlerBatch_WindowsAndMac(object): "--addDefaultSeedListFiles", "--platform=pc", "--print", - f"--project-path={workspace.project}" + f"--project-path={workspace.paths.project()}" ], universal_newlines=True, ) @@ -1189,7 +981,7 @@ class TestsAssetBundlerBatch_WindowsAndMac(object): # Make sure file gets deleted on teardown request.addfinalizer(lambda: fs.delete([bundle_result_path], True, False)) - bundles_folder = os.path.join(workspace.paths.engine_root(), workspace.project, "Bundles") + bundles_folder = os.path.join(workspace.paths.project(), "Bundles") level_pak = r"levels\testdependencieslevel\level.pak" bundle_request_path = os.path.join(bundles_folder, "bundle.pak") bundle_result_path = os.path.join(bundles_folder, @@ -1243,23 +1035,64 @@ class TestsAssetBundlerBatch_WindowsAndMac(object): 2. Verify file was created 3. Verify that only the expected assets are present in the created asset list """ - expected_assets = [ + expected_assets = sorted([ "ui/canvases/lyshineexamples/animation/multiplesequences.uicanvas", - "ui/textures/prefab/button_normal.sprite" - ] + "ui/textures/prefab/button_disabled.tif.streamingimage", + "ui/textures/prefab/tooltip_sliced.tif.streamingimage", + "ui/textures/prefab/button_normal.tif.streamingimage" + ]) + # Printing these lists out can save a step in debugging if this test fails on Jenkins. + logger.info(f"expected_assets: {expected_assets}") + + skip_assets = sorted([ + "ui/scripts/lyshineexamples/animation/multiplesequences.luac", + "ui/scripts/lyshineexamples/unloadthiscanvasbutton.luac", + "fonts/vera.fontfamily", + "fonts/vera-italic.font", + "fonts/vera.font", + "fonts/vera-bold.font", + "fonts/vera-bold-italic.font", + "fonts/vera-italic.ttf", + "fonts/vera.ttf", + "fonts/vera-bold.ttf", + "fonts/vera-bold-italic.ttf" + ]) + logger.info(f"skip_assets: {skip_assets}") + + expected_and_skip_assets = sorted(expected_assets + skip_assets) + # Printing both together to make it quick to compare the results in the logs for a test failure on Jenkins + logger.info(f"expected_and_skip_assets: {expected_and_skip_assets}") + + # First, generate an asset info file without skipping, to get a list that can be used as a baseline to verify + # the files were actually skipped, and not just missing. + bundler_batch_helper.call_assetLists( + assetListFile=bundler_batch_helper['asset_info_file_request'], + addSeed="ui/canvases/lyshineexamples/animation/multiplesequences.uicanvas" + ) + assert os.path.isfile(bundler_batch_helper["asset_info_file_result"]) + assets_in_no_skip_list = [] + for rel_path in bundler_batch_helper.get_asset_relative_paths(bundler_batch_helper["asset_info_file_result"]): + assets_in_no_skip_list.append(rel_path) + assets_in_no_skip_list = sorted(assets_in_no_skip_list) + logger.info(f"assets_in_no_skip_list: {assets_in_no_skip_list}") + assert assets_in_no_skip_list == expected_and_skip_assets + + # Now generate an asset info file using the skip command, and verify the skip files are not in the list. bundler_batch_helper.call_assetLists( assetListFile=bundler_batch_helper['asset_info_file_request'], addSeed="ui/canvases/lyshineexamples/animation/multiplesequences.uicanvas", - skip="ui/textures/prefab/button_disabled.sprite,ui/scripts/lyshineexamples/animation/multiplesequences.luac," - "ui/textures/prefab/tooltip_sliced.sprite,ui/scripts/lyshineexamples/unloadthiscanvasbutton.luac,fonts/vera.fontfamily,fonts/vera-italic.font," - "fonts/vera.font,fonts/vera-bold.font,fonts/vera-bold-italic.font,fonts/vera-italic.ttf,fonts/vera.ttf,fonts/vera-bold.ttf,fonts/vera-bold-italic.ttf" + allowOverwrites="", + skip=','.join(skip_assets) ) + assert os.path.isfile(bundler_batch_helper["asset_info_file_result"]) assets_in_list = [] for rel_path in bundler_batch_helper.get_asset_relative_paths(bundler_batch_helper["asset_info_file_result"]): assets_in_list.append(rel_path) + assets_in_list = sorted(assets_in_list) + logger.info(f"assets_in_list: {assets_in_list}") + assert assets_in_list == expected_assets - assert sorted(assets_in_list) == sorted(expected_assets) @pytest.mark.BAT @pytest.mark.assetpipeline diff --git a/AutomatedTesting/Gem/PythonTests/automatedtesting_shared/base.py b/AutomatedTesting/Gem/PythonTests/automatedtesting_shared/base.py index cbb6102a44..41d693cb60 100755 --- a/AutomatedTesting/Gem/PythonTests/automatedtesting_shared/base.py +++ b/AutomatedTesting/Gem/PythonTests/automatedtesting_shared/base.py @@ -165,7 +165,7 @@ class TestAutomationBase: for line in f.readlines(): error_str += f"|{log_basename}| {line}" except Exception as ex: - error_str += "-- No log available --" + error_str += f"-- No log available ({ex})--" pytest.fail(error_str) diff --git a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/AssetBrowser_SearchFiltering.py b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/AssetBrowser_SearchFiltering.py index 33c48c7a77..7366faafdc 100644 --- a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/AssetBrowser_SearchFiltering.py +++ b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/AssetBrowser_SearchFiltering.py @@ -62,7 +62,7 @@ def AssetBrowser_SearchFiltering(): from editor_python_test_tools.utils import Report from editor_python_test_tools.utils import TestHelper as helper - def verify_files_appeared(model, allowed_asset_extentions, parent_index=QtCore.QModelIndex()): + def verify_files_appeared(model, allowed_asset_extensions, parent_index=QtCore.QModelIndex()): indexes = [parent_index] while len(indexes) > 0: parent_index = indexes.pop(0) @@ -71,7 +71,7 @@ def AssetBrowser_SearchFiltering(): cur_data = cur_index.data(Qt.DisplayRole) if ( "." in cur_data - and (cur_data.lower().split(".")[-1] not in allowed_asset_extentions) + and (cur_data.lower().split(".")[-1] not in allowed_asset_extensions) and not cur_data[-1] == ")" ): Report.info(f"Incorrect file found: {cur_data}") @@ -94,16 +94,21 @@ def AssetBrowser_SearchFiltering(): Report.info("Asset Browser is already open") editor_window = pyside_utils.get_editor_main_window() app = QtWidgets.QApplication.instance() - - # 3) Type the name of an asset in the search bar and make sure only one asset is filtered in Asset browser + + # 3) Type the name of an asset in the search bar and make sure it is filtered to and selectable asset_browser = editor_window.findChild(QtWidgets.QDockWidget, "Asset Browser") search_bar = asset_browser.findChild(QtWidgets.QLineEdit, "textSearch") search_bar.setText("cedar.fbx") asset_browser_tree = asset_browser.findChild(QtWidgets.QTreeView, "m_assetBrowserTreeViewWidget") - model_index = pyside_utils.find_child_by_pattern(asset_browser_tree, "cedar.fbx") - pyside_utils.item_view_index_mouse_click(asset_browser_tree, model_index) + asset_browser_table = asset_browser.findChild(QtWidgets.QTreeView, "m_assetBrowserTableViewWidget") + found = await pyside_utils.wait_for_condition(lambda: pyside_utils.find_child_by_pattern(asset_browser_table, "cedar.fbx"), 5.0) + if found: + model_index = pyside_utils.find_child_by_pattern(asset_browser_table, "cedar.fbx") + else: + Report.result(Tests.asset_filtered, found) + pyside_utils.item_view_index_mouse_click(asset_browser_table, model_index) is_filtered = await pyside_utils.wait_for_condition( - lambda: asset_browser_tree.indexBelow(asset_browser_tree.currentIndex()) == QtCore.QModelIndex(), 5.0) + lambda: asset_browser_table.currentIndex() == model_index, 5.0) Report.result(Tests.asset_filtered, is_filtered) # 4) Click the "X" in the search bar. diff --git a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/AssetBrowser_TreeNavigation.py b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/AssetBrowser_TreeNavigation.py index b4f0dc7f6c..ecc77778cc 100644 --- a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/AssetBrowser_TreeNavigation.py +++ b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/AssetBrowser_TreeNavigation.py @@ -84,8 +84,8 @@ def AssetBrowser_TreeNavigation(): # 3) Collapse all files initially main_window = editor_window.findChild(QtWidgets.QMainWindow) - asset_browser = pyside_utils.find_child_by_hierarchy(main_window, ..., "Asset Browser") - tree = pyside_utils.find_child_by_hierarchy(asset_browser, ..., "m_assetBrowserTreeViewWidget") + asset_browser = pyside_utils.find_child_by_pattern(main_window, text="Asset Browser", type=QtWidgets.QDockWidget) + tree = pyside_utils.find_child_by_pattern(asset_browser, "m_assetBrowserTreeViewWidget") scroll_area = tree.findChild(QtWidgets.QWidget, "qt_scrollarea_vcontainer") scroll_bar = scroll_area.findChild(QtWidgets.QScrollBar) tree.collapseAll() diff --git a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/Docking_BasicDockedTools.py b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/Docking_BasicDockedTools.py index 2a91e7a374..6683fc952a 100644 --- a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/Docking_BasicDockedTools.py +++ b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/Docking_BasicDockedTools.py @@ -140,13 +140,13 @@ def Docking_BasicDockedTools(): # 2.5,6) Send a console command. console_line_edit = console.findChild(QtWidgets.QLineEdit, "lineEdit") - console_line_edit.setText("t_Scale 2") + console_line_edit.setText("t_simulationTickScale 2") QtTest.QTest.keyClick(console_line_edit, QtCore.Qt.Key_Enter) - general.get_cvar("t_Scale") - Report.result(Tests.docked_console_works, general.get_cvar("t_Scale") == "2") + general.get_cvar("t_simulationTickScale") + Report.result(Tests.docked_console_works, general.get_cvar("t_simulationTickScale") == "2") # Reset the altered cvar - console_line_edit.setText("t_Scale 1") + console_line_edit.setText("t_simulationTickScale 1") QtTest.QTest.keyClick(console_line_edit, QtCore.Qt.Key_Enter) run_test() diff --git a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/EntityOutliner_EntityOrdering.py b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/EntityOutliner_EntityOrdering.py new file mode 100644 index 0000000000..e4575d4d17 --- /dev/null +++ b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/EntityOutliner_EntityOrdering.py @@ -0,0 +1,146 @@ +""" +Copyright (c) Contributors to the Open 3D Engine Project. +For complete copyright and license terms please see the LICENSE at the root of this distribution. + +SPDX-License-Identifier: Apache-2.0 OR MIT +""" + + +class Tests: + entities_sorted = ( + "Entities sorted in the expected order", + "Entities sorted in an incorrect order", + ) + + +def EntityOutliner_EntityOrdering(): + """ + Summary: + Verify that manual entity ordering in the entity outliner works and is stable. + + Expected Behavior: + Several entities are created, some are manually ordered, and their order + is maintained, even when new entities are added. + + Test Steps: + 1) Open the empty Prefab Base level + 2) Add 5 entities to the outliner + 3) Move "Entity1" to the top of the order + 4) Move "Entity4" to the bottom of the order + 5) Add another new entity, ensure the rest of the order is unchanged + """ + + import editor_python_test_tools.pyside_utils as pyside_utils + import azlmbr.legacy.general as general + from editor_python_test_tools.utils import Report + from editor_python_test_tools.utils import TestHelper as helper + from PySide2 import QtCore, QtWidgets, QtGui, QtTest + + # Grab the Editor, Entity Outliner, and Outliner Model + editor_window = pyside_utils.get_editor_main_window() + entity_outliner = pyside_utils.find_child_by_hierarchy( + editor_window, ..., "EntityOutlinerWidgetUI", ..., "m_objectTree" + ) + entity_outliner_model = entity_outliner.model() + + # Get the outliner index for the root prefab container entity + def get_root_prefab_container_index(): + return entity_outliner_model.index(0, 0) + + # Get the outliner index for the top level entity of a given name + def index_for_name(name): + root_index = get_root_prefab_container_index() + for row in range(entity_outliner_model.rowCount(root_index)): + row_index = entity_outliner_model.index(row, 0, root_index) + if row_index.data() == name: + return row_index + return None + + # Validate that the outliner top level entity order matches the expected order + def verify_entities_sorted(expected_order): + actual_order = [] + root_index = get_root_prefab_container_index() + for row in range(entity_outliner_model.rowCount(root_index)): + row_index = entity_outliner_model.index(row, 0, root_index) + actual_order.append(row_index.data()) + + sorted_correctly = actual_order == expected_order + Report.result(Tests.entities_sorted, sorted_correctly) + if not sorted_correctly: + print(f"Expected entity order: {expected_order}") + print(f"Actual entity order: {actual_order}") + + # Creates an entity from the outliner context menu + def create_entity(): + pyside_utils.trigger_context_menu_entry( + entity_outliner, "Create entity", index=get_root_prefab_container_index() + ) + # Wait a tick after entity creation to let events process + general.idle_wait(0.0) + + # Moves an entity (wrapped by move_entity_before and move_entity_after) + def _move_entity(source_name, target_name, move_after=False): + source_index = index_for_name(source_name) + target_index = index_for_name(target_name) + + target_row = target_index.row() + if move_after: + target_row += 1 + + # Generate MIME data and directly inject it into the model instead of + # generating mouse click operations, as it's more reliable and we're + # testing the underlying drag & drop logic as opposed to Qt's mouse + # handling here + mime_data = entity_outliner_model.mimeData([source_index]) + entity_outliner_model.dropMimeData( + mime_data, QtCore.Qt.MoveAction, target_row, 0, target_index.parent() + ) + QtWidgets.QApplication.processEvents() + + # Move an entity before another entity in the order by dragging the source above the target + move_entity_before = lambda source_name, target_name: _move_entity( + source_name, target_name, move_after=False + ) + # Move an entity after another entity in the order by dragging the source beloew the target + move_entity_after = lambda source_name, target_name: _move_entity( + source_name, target_name, move_after=True + ) + + expected_order = [] + + # 1) Open the empty Prefab Base level + helper.init_idle() + helper.open_level("Prefab", "Base") + + # 2) Add 5 entities to the outliner + ENTITIES_TO_ADD = 5 + for i in range(ENTITIES_TO_ADD): + create_entity() + + # Our new entity should be given a name with a number automatically + new_entity = f"Entity{i+1}" + # The new entity should be added to the top of its parent entity + expected_order = [new_entity] + expected_order + + verify_entities_sorted(expected_order) + + # 3) Move "Entity1" to the top of the order + move_entity_before("Entity1", "Entity5") + expected_order = ["Entity1", "Entity5", "Entity4", "Entity3", "Entity2"] + verify_entities_sorted(expected_order) + + # 4) Move "Entity4" to the bottom of the order + move_entity_after("Entity4", "Entity2") + expected_order = ["Entity1", "Entity5", "Entity3", "Entity2", "Entity4"] + verify_entities_sorted(expected_order) + + # 5) Add another new entity, ensure the rest of the order is unchanged + create_entity() + expected_order = ["Entity6", "Entity1", "Entity5", "Entity3", "Entity2", "Entity4"] + verify_entities_sorted(expected_order) + + +if __name__ == "__main__": + from editor_python_test_tools.utils import Report + + Report.start_test(EntityOutliner_EntityOrdering) diff --git a/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Main.py b/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Main.py index 26b254ae71..49069569eb 100644 --- a/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Main.py +++ b/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Main.py @@ -41,3 +41,15 @@ class TestAutomation(TestAutomationBase): from .EditorScripts import BasicEditorWorkflows_LevelEntityComponentCRUD as test_module self._run_test(request, workspace, editor, test_module, batch_mode=False, autotest_mode=False, use_null_renderer=False) + + def test_EntityOutlienr_EntityOrdering(self, request, workspace, editor, launcher_platform): + from .EditorScripts import EntityOutliner_EntityOrdering as test_module + self._run_test( + request, + workspace, + editor, + test_module, + batch_mode=False, + autotest_mode=True, + extra_cmdline_args=["--regset=/Amazon/Preferences/EnablePrefabSystem=true"] + ) diff --git a/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Main_Optimized.py b/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Main_Optimized.py index afc52f962d..820e4bd2aa 100644 --- a/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Main_Optimized.py +++ b/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Main_Optimized.py @@ -43,7 +43,6 @@ class TestAutomationNoAutoTestMode(EditorTestSuite): class test_InputBindings_Add_Remove_Input_Events(EditorSharedTest): from .EditorScripts import InputBindings_Add_Remove_Input_Events as test_module - @pytest.mark.skip(reason="Crashes Editor: ATOM-15493") class test_AssetPicker_UI_UX(EditorSharedTest): from .EditorScripts import AssetPicker_UI_UX as test_module @@ -60,7 +59,6 @@ class TestAutomationAutoTestMode(EditorTestSuite): class test_AssetBrowser_TreeNavigation(EditorSharedTest): from .EditorScripts import AssetBrowser_TreeNavigation as test_module - @pytest.mark.skip(reason="Crashes Editor: ATOM-15493") class test_AssetBrowser_SearchFiltering(EditorSharedTest): from .EditorScripts import AssetBrowser_SearchFiltering as test_module @@ -74,6 +72,5 @@ class TestAutomationAutoTestMode(EditorTestSuite): class test_Menus_FileMenuOptions_Work(EditorSharedTest): from .EditorScripts import Menus_FileMenuOptions as test_module - class test_BasicEditorWorkflows_ExistingLevel_EntityComponentCRUD(EditorSharedTest): from .EditorScripts import BasicEditorWorkflows_ExistingLevel_EntityComponentCRUD as test_module diff --git a/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Periodic.py b/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Periodic.py index 398b64bc87..f131a1c8bc 100644 --- a/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Periodic.py +++ b/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Periodic.py @@ -34,12 +34,10 @@ class TestAutomation(TestAutomationBase): from .EditorScripts import AssetBrowser_TreeNavigation as test_module self._run_test(request, workspace, editor, test_module, batch_mode=False) - @pytest.mark.skip(reason="Crashes Editor: ATOM-15493") def test_AssetBrowser_SearchFiltering(self, request, workspace, editor, launcher_platform): from .EditorScripts import AssetBrowser_SearchFiltering as test_module self._run_test(request, workspace, editor, test_module, batch_mode=False) - @pytest.mark.skip(reason="Crashes Editor: ATOM-15493") def test_AssetPicker_UI_UX(self, request, workspace, editor, launcher_platform): from .EditorScripts import AssetPicker_UI_UX as test_module self._run_test(request, workspace, editor, test_module, autotest_mode=False, batch_mode=False) diff --git a/AutomatedTesting/Gem/PythonTests/largeworlds/CMakeLists.txt b/AutomatedTesting/Gem/PythonTests/largeworlds/CMakeLists.txt index c2123d683c..98801b49d6 100644 --- a/AutomatedTesting/Gem/PythonTests/largeworlds/CMakeLists.txt +++ b/AutomatedTesting/Gem/PythonTests/largeworlds/CMakeLists.txt @@ -24,7 +24,6 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_ LargeWorlds ) - ly_add_pytest( NAME AutomatedTesting::DynamicVegetationTests_Periodic TEST_SERIAL @@ -39,6 +38,20 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_ LargeWorlds ) + ly_add_pytest( + NAME AutomatedTesting::DynamicVegetationTests_Periodic_Optimized + TEST_SERIAL + TEST_SUITE periodic + PATH ${CMAKE_CURRENT_LIST_DIR}/dyn_veg/TestSuite_Periodic_Optimized.py + RUNTIME_DEPENDENCIES + AZ::AssetProcessor + Legacy::Editor + AutomatedTesting.Assets + AutomatedTesting.GameLauncher + COMPONENT + LargeWorlds + ) + ly_add_pytest( NAME AutomatedTesting::DynamicVegetationTests_Main_Optimized TEST_SERIAL diff --git a/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/DynVegUtils_TempPrefabCreationWorks.py b/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/DynVegUtils_TempPrefabCreationWorks.py new file mode 100644 index 0000000000..d016473d5e --- /dev/null +++ b/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/DynVegUtils_TempPrefabCreationWorks.py @@ -0,0 +1,85 @@ +""" +Copyright (c) Contributors to the Open 3D Engine Project. +For complete copyright and license terms please see the LICENSE at the root of this distribution. + +SPDX-License-Identifier: Apache-2.0 OR MIT +""" + + +def DynVegUtils_TempPrefabCreationWorks(): + """ + Summary: + An existing level is opened. Each Prefab setup to be spawned by Dynamic Vegetation tests is created in memory and + validated against existing test slice components/mesh assignments. + + Expected Behavior: + Temporary prefabs contain the expected components/assets. + + Test Steps: + 1) Open an existing level + 2) Create each of the necessary temporary Mesh prefabs, and validate the component/mesh setups + 3) Create the necessary temporary PhysX Collider, and validate the component setup + 4) Report errors/asserts + + :return: None + """ + + import os + + import azlmbr.asset as asset + import azlmbr.bus as bus + import azlmbr.math as math + + from Prefab.tests import PrefabTestUtils as prefab_test_utils + from largeworlds.large_worlds_utils import editor_dynveg_test_helper as dynveg + from editor_python_test_tools.utils import Report, Tracer + from editor_python_test_tools.utils import TestHelper as helper + from editor_python_test_tools.prefab_utils import PrefabInstance + + with Tracer() as error_tracer: + # Create dictionary for prefab filenames and paths to create using helper function + mesh_prefabs = { + "PinkFlower": os.path.join("assets", "objects", "foliage", "grass_flower_pink.azmodel"), + "PurpleFlower": os.path.join("assets", "objects", "foliage", "grass_flower_purple.azmodel"), + "1m_Cube": os.path.join("objects", "_primitives", "_box_1x1.azmodel"), + "CedarTree": os.path.join("assets", "objects", "foliage", "cedar.azmodel"), + "Bush": os.path.join("assets", "objects", "foliage", "bush_privet_01.azmodel"), + } + + # 1) Open an existing simple level + prefab_test_utils.open_base_tests_level() + + # 2) Create each of the Mesh asset prefabs and validate that the prefab created successfully + for prefab_filename, asset_path in mesh_prefabs.items(): + mesh_prefab_created = ( + f"Temporary mesh prefab: {prefab_filename} created successfully", + f"Failed to create temporary mesh prefab: {prefab_filename}" + ) + prefab = dynveg.create_temp_mesh_prefab(asset_path, prefab_filename) + Report.result(mesh_prefab_created, helper.wait_for_condition(lambda: + PrefabInstance.is_valid(prefab[1]), 3.0)) + + # 3) Create temp PhysX Collider prefab and validate that the prefab created successfully + physx_prefab_filename = "CedarTree_Collision" + physx_collider_prefab_created = ( + f"Temporary mesh prefab: {physx_prefab_filename} created successfully", + f"Failed to create temporary mesh prefab: {physx_prefab_filename}" + ) + test_physx_mesh_asset_id = asset.AssetCatalogRequestBus(bus.Broadcast, "GetAssetIdByPath", os.path.join( + "assets", "objects", "foliage", "cedar.pxmesh"), math.Uuid(), False) + dynveg.create_temp_physx_mesh_collider(test_physx_mesh_asset_id, physx_prefab_filename) + Report.result(physx_collider_prefab_created, helper.wait_for_condition(lambda: + PrefabInstance.is_valid(prefab[1]), 3.0)) + + # 4) Report errors/asserts + helper.wait_for_condition(lambda: error_tracer.has_errors or error_tracer.has_asserts, 1.0) + for error_info in error_tracer.errors: + Report.info(f"Error: {error_info.filename} {error_info.function} | {error_info.message}") + for assert_info in error_tracer.asserts: + Report.info(f"Assert: {assert_info.filename} {assert_info.function} | {assert_info.message}") + + +if __name__ == "__main__": + + from editor_python_test_tools.utils import Report + Report.start_test(DynVegUtils_TempPrefabCreationWorks) diff --git a/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/TestSuite_Periodic_Optimized.py b/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/TestSuite_Periodic_Optimized.py new file mode 100644 index 0000000000..8d298e970b --- /dev/null +++ b/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/TestSuite_Periodic_Optimized.py @@ -0,0 +1,23 @@ +""" +Copyright (c) Contributors to the Open 3D Engine Project. +For complete copyright and license terms please see the LICENSE at the root of this distribution. + +SPDX-License-Identifier: Apache-2.0 OR MIT +""" + +import os +import pytest + +import ly_test_tools.environment.file_system as file_system +from ly_test_tools.o3de.editor_test import EditorSingleTest, EditorSharedTest, EditorParallelTest, EditorTestSuite + + +@pytest.mark.SUITE_main +@pytest.mark.parametrize("launcher_platform", ['windows_editor']) +@pytest.mark.parametrize("project", ["AutomatedTesting"]) +class TestAutomation(EditorTestSuite): + + global_extra_cmdline_args = ["-BatchMode", "-autotest_mode", "--regset=/Amazon/Preferences/EnablePrefabSystem=true"] + + class test_DynVegUtils_TempPrefabCreationWorks(EditorSharedTest): + from .EditorScripts import DynVegUtils_TempPrefabCreationWorks as test_module diff --git a/AutomatedTesting/Gem/PythonTests/largeworlds/large_worlds_utils/editor_dynveg_test_helper.py b/AutomatedTesting/Gem/PythonTests/largeworlds/large_worlds_utils/editor_dynveg_test_helper.py index 957536fffb..d7d5842518 100755 --- a/AutomatedTesting/Gem/PythonTests/largeworlds/large_worlds_utils/editor_dynveg_test_helper.py +++ b/AutomatedTesting/Gem/PythonTests/largeworlds/large_worlds_utils/editor_dynveg_test_helper.py @@ -19,6 +19,45 @@ import azlmbr.paths sys.path.append(os.path.join(azlmbr.paths.projectroot, 'Gem', 'PythonTests')) import editor_python_test_tools.hydra_editor_utils as hydra +from editor_python_test_tools.editor_entity_utils import EditorEntity +from editor_python_test_tools.prefab_utils import Prefab + + +def create_temp_mesh_prefab(mesh_asset_path, prefab_filename): + # Create initial entity + root = EditorEntity.create_editor_entity(name=prefab_filename) + assert root.exists(), "Failed to create entity" + # Add mesh component + mesh_component = root.add_component("Mesh") + assert root.has_component("Mesh") and mesh_component.is_enabled(), "Failed to add/activate Mesh component" + # Assign the specified mesh asset + mesh_asset = asset.AssetCatalogRequestBus(bus.Broadcast, "GetAssetIdByPath", mesh_asset_path, math.Uuid(), False) + mesh_component.set_component_property_value("Controller|Configuration|Mesh Asset", mesh_asset) + assert mesh_component.get_component_property_value("Controller|Configuration|Mesh Asset") == mesh_asset, \ + "Failed to set Mesh asset" + # Create and return the temporary/in-memory prefab + temp_prefab = Prefab.create_prefab([root], prefab_filename) + return temp_prefab + + +def create_temp_physx_mesh_collider(physx_mesh_id, prefab_filename): + # Create initial entity + root = EditorEntity.create_editor_entity(name=prefab_filename) + assert root.exists(), "Failed to create entity" + # Add PhysX Collider component + collider_component = root.add_component("PhysX Collider") + assert root.has_component("PhysX Collider") and collider_component.is_enabled(), \ + "Failed to add/activate PhysX Collider component" + # Set the Collider's Shape Configuration field to PhysicsAsset, and assign the specified PhysX Mesh asset + collider_component.set_component_property_value("Shape Configuration|Shape", 7) + assert collider_component.get_component_property_value("Shape Configuration|Shape") == 7, \ + "Failed to set Collider Shape to PhysicsAsset" + collider_component.set_component_property_value("Shape Configuration|Asset|PhysX Mesh", physx_mesh_id) + assert collider_component.get_component_property_value("Shape Configuration|Asset|PhysX Mesh") == physx_mesh_id, \ + "Failed to assign PhysX Mesh asset" + # Create and return the temporary/in-memory prefab + temp_prefab = Prefab.create_prefab([root], prefab_filename) + return temp_prefab def create_surface_entity(name, center_point, box_size_x, box_size_y, box_size_z): diff --git a/AutomatedTesting/Gem/PythonTests/smoke/test_CLITool_SerializeContextTools_Works.py b/AutomatedTesting/Gem/PythonTests/smoke/test_CLITool_SerializeContextTools_Works.py index a3f6b8b09f..917ff17f82 100644 --- a/AutomatedTesting/Gem/PythonTests/smoke/test_CLITool_SerializeContextTools_Works.py +++ b/AutomatedTesting/Gem/PythonTests/smoke/test_CLITool_SerializeContextTools_Works.py @@ -13,7 +13,10 @@ import os import pytest import subprocess +import ly_test_tools + +@pytest.mark.skipif(not ly_test_tools.WINDOWS, reason="Only succeeds on windows https://github.com/o3de/o3de/issues/5539") @pytest.mark.SUITE_smoke class TestCLIToolSerializeContextToolsWorks(object): def test_CLITool_SerializeContextTools_Works(self, build_directory): diff --git a/AutomatedTesting/Gem/PythonTests/smoke/test_Editor_NewExistingLevels_Works.py b/AutomatedTesting/Gem/PythonTests/smoke/test_Editor_NewExistingLevels_Works.py index 6f654b9107..ebaebcfa92 100644 --- a/AutomatedTesting/Gem/PythonTests/smoke/test_Editor_NewExistingLevels_Works.py +++ b/AutomatedTesting/Gem/PythonTests/smoke/test_Editor_NewExistingLevels_Works.py @@ -11,10 +11,13 @@ Test should run in both gpu and non gpu import pytest import os from automatedtesting_shared.base import TestAutomationBase + +import ly_test_tools import ly_test_tools.environment.file_system as file_system @pytest.mark.SUITE_smoke +@pytest.mark.skipif(not ly_test_tools.WINDOWS, reason="Only succeeds on windows https://github.com/o3de/o3de/issues/5539") @pytest.mark.parametrize("launcher_platform", ["windows_editor"]) @pytest.mark.parametrize("project", ["AutomatedTesting"]) @pytest.mark.parametrize("level", ["temp_level"]) @@ -28,4 +31,4 @@ class TestAutomation(TestAutomationBase): from . import Editor_NewExistingLevels_Works as test_module - self._run_test(request, workspace, editor, test_module) + self._run_test(request, workspace, editor, test_module, extra_cmdline_args=["--regset=/Amazon/Preferences/EnablePrefabSystem=false"]) diff --git a/AutomatedTesting/Levels/Base/Base.prefab b/AutomatedTesting/Levels/Base/Base.prefab index 98495663b7..7765fe488e 100644 --- a/AutomatedTesting/Levels/Base/Base.prefab +++ b/AutomatedTesting/Levels/Base/Base.prefab @@ -1,52 +1,61 @@ { "ContainerEntity": { - "Id": "ContainerEntity", - "Name": "Base", + "Id": "Entity_[1146574390643]", + "Name": "Level", "Components": { - "Component_[10182366347512475253]": { - "$type": "EditorPrefabComponent", - "Id": 10182366347512475253 + "Component_[10641544592923449938]": { + "$type": "EditorInspectorComponent", + "Id": 10641544592923449938 }, - "Component_[12917798267488243668]": { - "$type": "EditorPendingCompositionComponent", - "Id": 12917798267488243668 - }, - "Component_[3261249813163778338]": { + "Component_[12039882709170782873]": { "$type": "EditorOnlyEntityComponent", - "Id": 3261249813163778338 + "Id": 12039882709170782873 }, - "Component_[3837204912784440039]": { - "$type": "EditorDisabledCompositionComponent", - "Id": 3837204912784440039 + "Component_[12265484671603697631]": { + "$type": "EditorPendingCompositionComponent", + "Id": 12265484671603697631 }, - "Component_[4272963378099646759]": { + "Component_[14126657869720434043]": { + "$type": "EditorEntitySortComponent", + "Id": 14126657869720434043, + "ChildEntityOrderEntryArray": [ + { + "EntityId": "" + }, + { + "EntityId": "", + "SortIndex": 1 + } + ] + }, + "Component_[15230859088967841193]": { "$type": "{27F1E1A1-8D9D-4C3B-BD3A-AFB9762449C0} TransformComponent", - "Id": 4272963378099646759, + "Id": 15230859088967841193, "Parent Entity": "" }, - "Component_[4848458548047175816]": { - "$type": "EditorVisibilityComponent", - "Id": 4848458548047175816 + "Component_[16239496886950819870]": { + "$type": "EditorDisabledCompositionComponent", + "Id": 16239496886950819870 }, - "Component_[5787060997243919943]": { - "$type": "EditorInspectorComponent", - "Id": 5787060997243919943 - }, - "Component_[7804170251266531779]": { - "$type": "EditorLockComponent", - "Id": 7804170251266531779 - }, - "Component_[7874177159288365422]": { - "$type": "EditorEntitySortComponent", - "Id": 7874177159288365422 - }, - "Component_[8018146290632383969]": { + "Component_[5688118765544765547]": { "$type": "EditorEntityIconComponent", - "Id": 8018146290632383969 + "Id": 5688118765544765547 }, - "Component_[8452360690590857075]": { + "Component_[6545738857812235305]": { "$type": "SelectionComponent", - "Id": 8452360690590857075 + "Id": 6545738857812235305 + }, + "Component_[7247035804068349658]": { + "$type": "EditorPrefabComponent", + "Id": 7247035804068349658 + }, + "Component_[9307224322037797205]": { + "$type": "EditorLockComponent", + "Id": 9307224322037797205 + }, + "Component_[9562516168917670048]": { + "$type": "EditorVisibilityComponent", + "Id": 9562516168917670048 } } } diff --git a/AutomatedTesting/Levels/Physics/ForceRegion_ImpulsesPxMeshShapedRigidBody/PhysXSedan/_dev_sedan_r0-b.fbx.assetinfo b/AutomatedTesting/Levels/Physics/ForceRegion_ImpulsesPxMeshShapedRigidBody/PhysXSedan/_dev_Sedan_r0-b.fbx.assetinfo similarity index 100% rename from AutomatedTesting/Levels/Physics/ForceRegion_ImpulsesPxMeshShapedRigidBody/PhysXSedan/_dev_sedan_r0-b.fbx.assetinfo rename to AutomatedTesting/Levels/Physics/ForceRegion_ImpulsesPxMeshShapedRigidBody/PhysXSedan/_dev_Sedan_r0-b.fbx.assetinfo diff --git a/AutomatedTesting/Levels/Physics/ForceRegion_PxMeshShapedForce/PhysXSedan/_dev_sedan_r0-b.fbx.assetinfo b/AutomatedTesting/Levels/Physics/ForceRegion_PxMeshShapedForce/PhysXSedan/_dev_Sedan_r0-b.fbx.assetinfo similarity index 100% rename from AutomatedTesting/Levels/Physics/ForceRegion_PxMeshShapedForce/PhysXSedan/_dev_sedan_r0-b.fbx.assetinfo rename to AutomatedTesting/Levels/Physics/ForceRegion_PxMeshShapedForce/PhysXSedan/_dev_Sedan_r0-b.fbx.assetinfo diff --git a/AutomatedTesting/Levels/Physics/Material_DefaultMaterialLibraryChangesWork/rin_skeleton_newgeo - copy.fbx.assetinfo b/AutomatedTesting/Levels/Physics/Material_DefaultMaterialLibraryChangesWork/rin_skeleton_newgeo - Copy.fbx.assetinfo similarity index 100% rename from AutomatedTesting/Levels/Physics/Material_DefaultMaterialLibraryChangesWork/rin_skeleton_newgeo - copy.fbx.assetinfo rename to AutomatedTesting/Levels/Physics/Material_DefaultMaterialLibraryChangesWork/rin_skeleton_newgeo - Copy.fbx.assetinfo diff --git a/AutomatedTesting/Levels/Physics/Physics_WorldBodyBusWorksOnEditorComponents/PhysXSedan/_dev_sedan_r0-b.fbx.assetinfo b/AutomatedTesting/Levels/Physics/Physics_WorldBodyBusWorksOnEditorComponents/PhysXSedan/_dev_Sedan_r0-b.fbx.assetinfo similarity index 100% rename from AutomatedTesting/Levels/Physics/Physics_WorldBodyBusWorksOnEditorComponents/PhysXSedan/_dev_sedan_r0-b.fbx.assetinfo rename to AutomatedTesting/Levels/Physics/Physics_WorldBodyBusWorksOnEditorComponents/PhysXSedan/_dev_Sedan_r0-b.fbx.assetinfo diff --git a/AutomatedTesting/Levels/Physics/RigidBody_COM_ComputingWorks/PhysXSedan/_dev_sedan_r0-b.fbx.assetinfo b/AutomatedTesting/Levels/Physics/RigidBody_COM_ComputingWorks/PhysXSedan/_dev_Sedan_r0-b.fbx.assetinfo similarity index 100% rename from AutomatedTesting/Levels/Physics/RigidBody_COM_ComputingWorks/PhysXSedan/_dev_sedan_r0-b.fbx.assetinfo rename to AutomatedTesting/Levels/Physics/RigidBody_COM_ComputingWorks/PhysXSedan/_dev_Sedan_r0-b.fbx.assetinfo diff --git a/AutomatedTesting/cmake/CompilerSettings.cmake b/AutomatedTesting/cmake/CompilerSettings.cmake new file mode 100644 index 0000000000..60bda1d45b --- /dev/null +++ b/AutomatedTesting/cmake/CompilerSettings.cmake @@ -0,0 +1,13 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +# File to tweak compiler settings before compiler detection happens (before project() is called) +# We dont have PAL enabled at this point, so we can only use pure-CMake variables +if("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Linux") + include(cmake/Platform/Linux/CompilerSettings_linux.cmake) +endif() diff --git a/AutomatedTesting/EngineFinder.cmake b/AutomatedTesting/cmake/EngineFinder.cmake similarity index 63% rename from AutomatedTesting/EngineFinder.cmake rename to AutomatedTesting/cmake/EngineFinder.cmake index 0a34a43b77..15b96eb8a9 100644 --- a/AutomatedTesting/EngineFinder.cmake +++ b/AutomatedTesting/cmake/EngineFinder.cmake @@ -1,3 +1,4 @@ +# {BEGIN_LICENSE} # # Copyright (c) Contributors to the Open 3D Engine Project. # For complete copyright and license terms please see the LICENSE at the root of this distribution. @@ -5,18 +6,34 @@ # SPDX-License-Identifier: Apache-2.0 OR MIT # # +# {END_LICENSE} # This file is copied during engine registration. Edits to this file will be lost next # time a registration happens. include_guard() # Read the engine name from the project_json file -file(READ ${CMAKE_CURRENT_LIST_DIR}/project.json project_json) -set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${CMAKE_CURRENT_LIST_DIR}/project.json) +file(READ ${CMAKE_CURRENT_SOURCE_DIR}/project.json project_json) +set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/project.json) string(JSON LY_ENGINE_NAME_TO_USE ERROR_VARIABLE json_error GET ${project_json} engine) if(json_error) - message(FATAL_ERROR "Unable to read key 'engine' from 'project.json', error: ${json_error}") + message(FATAL_ERROR "Unable to read key 'engine' from 'project.json'\nError: ${json_error}") +endif() + +if(CMAKE_MODULE_PATH) + foreach(module_path ${CMAKE_MODULE_PATH}) + if(EXISTS ${module_path}/Findo3de.cmake) + file(READ ${module_path}/../engine.json engine_json) + string(JSON engine_name ERROR_VARIABLE json_error GET ${engine_json} engine_name) + if(json_error) + message(FATAL_ERROR "Unable to read key 'engine_name' from 'engine.json'\nError: ${json_error}") + endif() + if(LY_ENGINE_NAME_TO_USE STREQUAL engine_name) + return() # Engine being forced through CMAKE_MODULE_PATH + endif() + endif() + endforeach() endif() if(DEFINED ENV{USERPROFILE} AND EXISTS $ENV{USERPROFILE}) @@ -25,6 +42,11 @@ else() set(manifest_path $ENV{HOME}/.o3de/o3de_manifest.json) # Unix endif() +set(registration_error [=[ +Engine registration is required before configuring a project. +Run 'scripts/o3de register --this-engine' from the engine root. +]=]) + # Read the ~/.o3de/o3de_manifest.json file and look through the 'engines_path' object. # Find a key that matches LY_ENGINE_NAME_TO_USE and use that as the engine path. if(EXISTS ${manifest_path}) @@ -33,36 +55,38 @@ if(EXISTS ${manifest_path}) string(JSON engines_path_count ERROR_VARIABLE json_error LENGTH ${manifest_json} engines_path) if(json_error) - message(FATAL_ERROR "Unable to read key 'engines_path' from '${manifest_path}', error: ${json_error}") + message(FATAL_ERROR "Unable to read key 'engines_path' from '${manifest_path}'\nError: ${json_error}\n${registration_error}") endif() string(JSON engines_path_type ERROR_VARIABLE json_error TYPE ${manifest_json} engines_path) if(json_error OR NOT ${engines_path_type} STREQUAL "OBJECT") - message(FATAL_ERROR "Type of 'engines_path' in '${manifest_path}' is not a JSON Object, error: ${json_error}") + message(FATAL_ERROR "Type of 'engines_path' in '${manifest_path}' is not a JSON Object\nError: ${json_error}") endif() math(EXPR engines_path_count "${engines_path_count}-1") foreach(engine_path_index RANGE ${engines_path_count}) string(JSON engine_name ERROR_VARIABLE json_error MEMBER ${manifest_json} engines_path ${engine_path_index}) if(json_error) - message(FATAL_ERROR "Unable to read 'engines_path/${engine_path_index}' from '${manifest_path}', error: ${json_error}") + message(FATAL_ERROR "Unable to read 'engines_path/${engine_path_index}' from '${manifest_path}'\nError: ${json_error}") endif() if(LY_ENGINE_NAME_TO_USE STREQUAL engine_name) string(JSON engine_path ERROR_VARIABLE json_error GET ${manifest_json} engines_path ${engine_name}) if(json_error) - message(FATAL_ERROR "Unable to read value from 'engines_path/${engine_name}', error: ${json_error}") + message(FATAL_ERROR "Unable to read value from 'engines_path/${engine_name}'\nError: ${json_error}") endif() if(engine_path) list(APPEND CMAKE_MODULE_PATH "${engine_path}/cmake") - break() + return() endif() endif() endforeach() + + message(FATAL_ERROR "The project.json uses engine name '${LY_ENGINE_NAME_TO_USE}' but no engine with that name has been registered.\n${registration_error}") else() # If the user is passing CMAKE_MODULE_PATH we assume thats where we will find the engine if(NOT CMAKE_MODULE_PATH) - message(FATAL_ERROR "Engine registration is required before configuring a project. Please register an engine by running 'scripts/o3de register --this-engine'") + message(FATAL_ERROR "O3DE Manifest file not found.\n${registration_error}") endif() endif() diff --git a/Templates/DefaultProject/Template/cmake/Platform/Linux/CompilerSettings.cmake b/AutomatedTesting/cmake/Platform/Linux/CompilerSettings_linux.cmake similarity index 100% rename from Templates/DefaultProject/Template/cmake/Platform/Linux/CompilerSettings.cmake rename to AutomatedTesting/cmake/Platform/Linux/CompilerSettings_linux.cmake diff --git a/Code/Editor/2DViewport.cpp b/Code/Editor/2DViewport.cpp index ed810aea29..4d0609907f 100644 --- a/Code/Editor/2DViewport.cpp +++ b/Code/Editor/2DViewport.cpp @@ -234,7 +234,7 @@ void Q2DViewport::UpdateContent(int flags) } ////////////////////////////////////////////////////////////////////////// -void Q2DViewport::OnRButtonDown(Qt::KeyboardModifiers modifiers, const QPoint& point) +void Q2DViewport::OnRButtonDown([[maybe_unused]] Qt::KeyboardModifiers modifiers, const QPoint& point) { if (GetIEditor()->IsInGameMode()) { @@ -246,9 +246,6 @@ void Q2DViewport::OnRButtonDown(Qt::KeyboardModifiers modifiers, const QPoint& p setFocus(); } - // Check Edit Tool. - MouseCallback(eMouseRDown, point, modifiers); - SetCurrentCursor(STD_CURSOR_MOVE, QString()); // Save the mouse down position @@ -273,17 +270,8 @@ void Q2DViewport::OnRButtonUp([[maybe_unused]] Qt::KeyboardModifiers modifiers, } ////////////////////////////////////////////////////////////////////////// -void Q2DViewport::OnMButtonDown(Qt::KeyboardModifiers modifiers, const QPoint& point) +void Q2DViewport::OnMButtonDown([[maybe_unused]] Qt::KeyboardModifiers modifiers, const QPoint& point) { - //////////////////////////////////////////////////////////////////////// - // User pressed the middle mouse button - //////////////////////////////////////////////////////////////////////// - // Check Edit Tool. - if (MouseCallback(eMouseMDown, point, modifiers)) - { - return; - } - // Save the mouse down position m_RMouseDownPos = point; @@ -300,14 +288,8 @@ void Q2DViewport::OnMButtonDown(Qt::KeyboardModifiers modifiers, const QPoint& p } ////////////////////////////////////////////////////////////////////////// -void Q2DViewport::OnMButtonUp(Qt::KeyboardModifiers modifiers, const QPoint& point) +void Q2DViewport::OnMButtonUp([[maybe_unused]] Qt::KeyboardModifiers modifiers, [[maybe_unused]] const QPoint& point) { - // Check Edit Tool. - if (MouseCallback(eMouseMUp, point, modifiers)) - { - return; - } - SetViewMode(NothingMode); ReleaseMouse(); @@ -547,13 +529,6 @@ QPoint Q2DViewport::WorldToView(const Vec3& wp) const QPoint p = QPoint(static_cast(sp.x), static_cast(sp.y)); return p; } -////////////////////////////////////////////////////////////////////////// -QPoint Q2DViewport::WorldToViewParticleEditor(const Vec3& wp, [[maybe_unused]] int width, [[maybe_unused]] int height) const //Eric@conffx implement for the children class of IDisplayViewport -{ - Vec3 sp = m_screenTM.TransformPoint(wp); - QPoint p = QPoint(static_cast(sp.x), static_cast(sp.y)); - return p; -} ////////////////////////////////////////////////////////////////////////// Vec3 Q2DViewport::ViewToWorld(const QPoint& vp, [[maybe_unused]] bool* collideWithTerrain, [[maybe_unused]] bool onlyTerrain, [[maybe_unused]] bool bSkipVegetation, [[maybe_unused]] bool bTestRenderMesh, [[maybe_unused]] bool* collideWithObject) const diff --git a/Code/Editor/2DViewport.h b/Code/Editor/2DViewport.h index 007c1a47d3..e89f4aed34 100644 --- a/Code/Editor/2DViewport.h +++ b/Code/Editor/2DViewport.h @@ -50,8 +50,6 @@ public: //! Map world space position to viewport position. QPoint WorldToView(const Vec3& wp) const override; - QPoint WorldToViewParticleEditor(const Vec3& wp, int width, int height) const override; //Eric@conffx - //! Map viewport position to world space position. Vec3 ViewToWorld(const QPoint& vp, bool* collideWithTerrain = nullptr, bool onlyTerrain = false, bool bSkipVegetation = false, bool bTestRenderMesh = false, bool* collideWithObject = nullptr) const override; //! Map viewport position to world space ray from camera. @@ -64,7 +62,6 @@ public: // ovverided from CViewport. float GetScreenScaleFactor(const Vec3& worldPoint) const override; - float GetScreenScaleFactor([[maybe_unused]] const CCamera& camera, [[maybe_unused]] const Vec3& object_position) override { return 1; } //Eric@conffx // Overrided from CViewport. void OnDragSelectRectangle(const QRect &rect, bool bNormalizeRect = false) override; diff --git a/Code/Editor/AboutDialog.ui b/Code/Editor/AboutDialog.ui index a6c5bb5d52..09a7c18841 100644 --- a/Code/Editor/AboutDialog.ui +++ b/Code/Editor/AboutDialog.ui @@ -125,7 +125,7 @@ - General Availability + development Qt::AutoText diff --git a/Code/Editor/ActionManager.cpp b/Code/Editor/ActionManager.cpp index ff74a2c208..4cc64a532e 100644 --- a/Code/Editor/ActionManager.cpp +++ b/Code/Editor/ActionManager.cpp @@ -152,15 +152,6 @@ ActionManager::ActionWrapper& ActionManager::ActionWrapper::SetMenu(DynamicMenu* return *this; } -ActionManager::ActionWrapper& ActionManager::ActionWrapper::SetApplyHoverEffect() -{ - // Our standard toolbar icons, when hovered on, get a white color effect. - // But for this to work we need .pngs that look good with this effect, so this only works with the standard toolbars - // and looks very ugly for other toolbars, including toolbars loaded from XML (which just show a white rectangle) - m_action->setProperty("IconHasHoverEffect", true); - return *this; -} - ActionManager::ActionWrapper& ActionManager::ActionWrapper::SetReserved() { m_action->setProperty("Reserved", true); diff --git a/Code/Editor/ActionManager.h b/Code/Editor/ActionManager.h index 8879bdc1fb..58504f860c 100644 --- a/Code/Editor/ActionManager.h +++ b/Code/Editor/ActionManager.h @@ -151,7 +151,6 @@ public: } ActionWrapper& SetMenu(DynamicMenu* menu); - ActionWrapper& SetApplyHoverEffect(); operator QAction*() const { return m_action; diff --git a/Code/Editor/Animation/AnimationBipedBoneNames.cpp b/Code/Editor/Animation/AnimationBipedBoneNames.cpp index d9f1b845ca..72502fe61d 100644 --- a/Code/Editor/Animation/AnimationBipedBoneNames.cpp +++ b/Code/Editor/Animation/AnimationBipedBoneNames.cpp @@ -10,24 +10,21 @@ #include "AnimationBipedBoneNames.h" -namespace EditorAnimationBones +namespace EditorAnimationBones::Biped { - namespace Biped - { - const char* Pelvis = "Bip01 Pelvis"; - const char* Head = "Bip01 Head"; - const char* Weapon = "weapon_bone"; + const char* Pelvis = "Bip01 Pelvis"; + const char* Head = "Bip01 Head"; + const char* Weapon = "weapon_bone"; - const char* LeftEye = "eye_bone_left"; - const char* RightEye = "eye_bone_right"; + const char* LeftEye = "eye_bone_left"; + const char* RightEye = "eye_bone_right"; - const char* Spine[5] = { "Bip01 Spine", "Bip01 Spine1", "Bip01 Spine2", "Bip01 Spine3", "Bip01 Spine4" }; - const char* Neck[2] = { "Bip01 Neck", "Bip01 Neck1" }; + const char* Spine[5] = { "Bip01 Spine", "Bip01 Spine1", "Bip01 Spine2", "Bip01 Spine3", "Bip01 Spine4" }; + const char* Neck[2] = { "Bip01 Neck", "Bip01 Neck1" }; - const char* LeftHeel = "Bip01 L Heel"; - const char* LeftToe[2] = { "Bip01 L Toe0", "Bip01 L Toe1" }; + const char* LeftHeel = "Bip01 L Heel"; + const char* LeftToe[2] = { "Bip01 L Toe0", "Bip01 L Toe1" }; - const char* RightHeel = "Bip01 R Heel"; - const char* RightToe[2] = { "Bip01 R Toe0", "Bip01 R Toe1" }; - } -} + const char* RightHeel = "Bip01 R Heel"; + const char* RightToe[2] = { "Bip01 R Toe0", "Bip01 R Toe1" }; +} // namespace EditorAnimationBones::Biped diff --git a/Code/Editor/AnimationContext.cpp b/Code/Editor/AnimationContext.cpp index fce1150878..51dd8deefc 100644 --- a/Code/Editor/AnimationContext.cpp +++ b/Code/Editor/AnimationContext.cpp @@ -21,6 +21,8 @@ #include "Include/IObjectManager.h" #include "Objects/EntityObject.h" +#include + ////////////////////////////////////////////////////////////////////////// // Movie Callback. ////////////////////////////////////////////////////////////////////////// @@ -499,25 +501,24 @@ void CAnimationContext::Update() return; } - ITimer* pTimer = GetIEditor()->GetSystem()->GetITimer(); + const AZ::TimeUs frameDeltaTimeUs = AZ::GetSimulationTickDeltaTimeUs(); + const float frameDeltaTime = AZ::TimeUsToSeconds(frameDeltaTimeUs); if (!m_bAutoRecording) { AnimateActiveSequence(); - float dt = pTimer->GetFrameTime(); - m_currTime += dt * m_fTimeScale; + m_currTime += frameDeltaTime * m_fTimeScale; if (!m_recording) { - GetIEditor()->GetMovieSystem()->PreUpdate(dt); - GetIEditor()->GetMovieSystem()->PostUpdate(dt); + GetIEditor()->GetMovieSystem()->PreUpdate(frameDeltaTime); + GetIEditor()->GetMovieSystem()->PostUpdate(frameDeltaTime); } } else { - float dt = pTimer->GetFrameTime(); - m_fRecordingCurrTime += dt * m_fTimeScale; + m_fRecordingCurrTime += frameDeltaTime * m_fTimeScale; if (fabs(m_fRecordingCurrTime - m_currTime) > m_fRecordingTimeStep) { m_currTime += m_fRecordingTimeStep; @@ -644,7 +645,9 @@ void CAnimationContext::OnPostRender() { SAnimContext ac; ac.dt = 0; - ac.fps = GetIEditor()->GetSystem()->GetITimer()->GetFrameRate(); + const AZ::TimeUs frameDeltaTimeUs = AZ::GetSimulationTickDeltaTimeUs(); + const float frameDeltaTime = AZ::TimeUsToSeconds(frameDeltaTimeUs); + ac.fps = 1.0f / frameDeltaTime; ac.time = m_currTime; ac.singleFrame = true; ac.forcePlay = true; @@ -797,7 +800,9 @@ void CAnimationContext::AnimateActiveSequence() SAnimContext ac; ac.dt = 0; - ac.fps = GetIEditor()->GetSystem()->GetITimer()->GetFrameRate(); + const AZ::TimeUs frameDeltaTimeUs = AZ::GetSimulationTickDeltaTimeUs(); + const float frameDeltaTime = AZ::TimeUsToSeconds(frameDeltaTimeUs); + ac.fps = 1.0f / frameDeltaTime; ac.time = m_currTime; ac.singleFrame = true; ac.forcePlay = true; diff --git a/Code/Editor/AssetImporter/AssetImporterManager/AssetImporterManager.cpp b/Code/Editor/AssetImporter/AssetImporterManager/AssetImporterManager.cpp index b721b8759e..baa287e47f 100644 --- a/Code/Editor/AssetImporter/AssetImporterManager/AssetImporterManager.cpp +++ b/Code/Editor/AssetImporter/AssetImporterManager/AssetImporterManager.cpp @@ -140,7 +140,7 @@ bool AssetImporterManager::OnBrowseFiles() bool encounteredCrate = false; QStringList invalidFiles; - for (QString path : fileDialog.selectedFiles()) + for (const QString& path : fileDialog.selectedFiles()) { QString fileName = GetFileName(path); QFileInfo info(path); diff --git a/Code/Editor/AzAssetBrowser/AzAssetBrowserRequestHandler.cpp b/Code/Editor/AzAssetBrowser/AzAssetBrowserRequestHandler.cpp index 1c2be16a3d..6fc10e379a 100644 --- a/Code/Editor/AzAssetBrowser/AzAssetBrowserRequestHandler.cpp +++ b/Code/Editor/AzAssetBrowser/AzAssetBrowserRequestHandler.cpp @@ -199,41 +199,6 @@ namespace AzAssetBrowserRequestHandlerPrivate } } } - - // Helper utility - determines if the thing being dragged is a FBX from the scene import pipeline - // This is important to differentiate. - // when someone drags a MTL file directly into the viewport, even from a FBX, we want to spawn it as a decal - // but when someone drags a FBX that contains MTL files, we want only to spawn the meshes. - // so we have to specifically differentiate here between the mimeData type that contains the source as the root - // (dragging the fbx file itself) - // and one which contains the actual product at its root. - - bool IsDragOfFBX(const QMimeData* mimeData) - { - AZStd::vector entries; - if (!AssetBrowserEntry::FromMimeData(mimeData, entries)) - { - // if mimedata does not even contain entries, no point in proceeding. - return false; - } - - for (auto entry : entries) - { - if (entry->GetEntryType() != AssetBrowserEntry::AssetEntryType::Source) - { - continue; - } - // this is a source file. Is it the filetype we're looking for? - if (SourceAssetBrowserEntry* source = azrtti_cast(entry)) - { - if (AzFramework::StringFunc::Equal(source->GetExtension().c_str(), ".fbx", false)) - { - return true; - } - } - } - return false; - } } AzAssetBrowserRequestHandler::AzAssetBrowserRequestHandler() diff --git a/Code/Editor/Controls/ReflectedPropertyControl/ReflectedPropertyCtrl.cpp b/Code/Editor/Controls/ReflectedPropertyControl/ReflectedPropertyCtrl.cpp index 1151137bfc..c5bf6a4d81 100644 --- a/Code/Editor/Controls/ReflectedPropertyControl/ReflectedPropertyCtrl.cpp +++ b/Code/Editor/Controls/ReflectedPropertyControl/ReflectedPropertyCtrl.cpp @@ -671,7 +671,7 @@ AzToolsFramework::PropertyRowWidget* ReflectedPropertyControl::FindPropertyRowWi return nullptr; } const AzToolsFramework::ReflectedPropertyEditor::WidgetList& widgets = m_editor->GetWidgets(); - for (auto instance : widgets) + for (const auto& instance : widgets) { if (instance.second->label() == item->GetPropertyName()) { diff --git a/Code/Editor/CryEdit.cpp b/Code/Editor/CryEdit.cpp index 5bcb77797c..ad04e355f5 100644 --- a/Code/Editor/CryEdit.cpp +++ b/Code/Editor/CryEdit.cpp @@ -80,7 +80,6 @@ AZ_POP_DISABLE_WARNING #include // CryCommon -#include #include // Editor @@ -371,10 +370,8 @@ void CCryEditApp::RegisterActionHandlers() ON_COMMAND(ID_EDIT_FETCH, OnEditFetch) ON_COMMAND(ID_FILE_EXPORTTOGAMENOSURFACETEXTURE, OnFileExportToGameNoSurfaceTexture) ON_COMMAND(ID_VIEW_SWITCHTOGAME, OnViewSwitchToGame) - MainWindow::instance()->GetActionManager()->RegisterActionHandler(ID_VIEW_SWITCHTOGAME_FULLSCREEN, [this]() { - ed_previewGameInFullscreen_once = true; - OnViewSwitchToGame(); - }); + ON_COMMAND(ID_VIEW_SWITCHTOGAME_VIEWPORT, OnViewSwitchToGame) + ON_COMMAND(ID_VIEW_SWITCHTOGAME_FULLSCREEN, OnViewSwitchToGameFullScreen) ON_COMMAND(ID_MOVE_OBJECT, OnMoveObject) ON_COMMAND(ID_RENAME_OBJ, OnRenameObj) ON_COMMAND(ID_UNDO, OnUndo) @@ -1361,16 +1358,6 @@ void CCryEditApp::CompileCriticalAssets() const assetsInQueueNotifcation.BusDisconnect(); CCryEditApp::OutputStartupMessage(QString("Asset Processor is now ready.")); - // VERY early on, as soon as we can, request that the asset system make sure the following assets take priority over others, - // so that by the time we ask for them there is a greater likelihood that they're already good to go. - // these can be loaded later but are still important: - AzFramework::AssetSystemRequestBus::Broadcast(&AzFramework::AssetSystem::AssetSystemRequests::EscalateAssetBySearchTerm, "/texturemsg/"); - AzFramework::AssetSystemRequestBus::Broadcast(&AzFramework::AssetSystem::AssetSystemRequests::EscalateAssetBySearchTerm, "engineassets/materials"); - AzFramework::AssetSystemRequestBus::Broadcast(&AzFramework::AssetSystem::AssetSystemRequests::EscalateAssetBySearchTerm, "engineassets/geomcaches"); - AzFramework::AssetSystemRequestBus::Broadcast(&AzFramework::AssetSystem::AssetSystemRequests::EscalateAssetBySearchTerm, "engineassets/objects"); - - // some are specifically extra important and will cause issues if missing completely: - AzFramework::AssetSystemRequestBus::Broadcast(&AzFramework::AssetSystem::AssetSystemRequests::CompileAssetSync, "engineassets/objects/default.cgf"); } bool CCryEditApp::ConnectToAssetProcessor() const @@ -2584,6 +2571,12 @@ void CCryEditApp::OnViewSwitchToGame() GetIEditor()->SetInGameMode(inGame); } +void CCryEditApp::OnViewSwitchToGameFullScreen() +{ + ed_previewGameInFullscreen_once = true; + OnViewSwitchToGame(); +} + ////////////////////////////////////////////////////////////////////////// void CCryEditApp::OnExportSelectedObjects() { @@ -3974,9 +3967,8 @@ void CCryEditApp::OpenLUAEditor(const char* files) } } - const char* engineRoot = nullptr; - AzFramework::ApplicationRequests::Bus::BroadcastResult(engineRoot, &AzFramework::ApplicationRequests::GetEngineRoot); - AZ_Assert(engineRoot != nullptr, "Unable to communicate to AzFramework::ApplicationRequests::Bus"); + AZ::IO::FixedMaxPathString engineRoot = AZ::Utils::GetEnginePath(); + AZ_Assert(!engineRoot.empty(), "Unable to query Engine Path"); AZStd::string_view exePath; AZ::ComponentApplicationBus::BroadcastResult(exePath, &AZ::ComponentApplicationRequests::GetExecutableFolder); @@ -3995,7 +3987,7 @@ void CCryEditApp::OpenLUAEditor(const char* files) #endif "%s", argumentQuoteString, aznumeric_cast(exePath.size()), exePath.data(), argumentQuoteString); - AZStd::string processArgs = AZStd::string::format("%s -engine-path \"%s\"", args.c_str(), engineRoot); + AZStd::string processArgs = AZStd::string::format("%s -engine-path \"%s\"", args.c_str(), engineRoot.c_str()); StartProcessDetached(process.c_str(), processArgs.c_str()); } @@ -4196,6 +4188,8 @@ extern "C" int AZ_DLL_EXPORT CryEditMain(int argc, char* argv[]) "\nThis could be because of incorrectly configured components, or missing required gems." "\nSee other errors for more details."); + AzToolsFramework::EditorEventsBus::Broadcast(&AzToolsFramework::EditorEvents::NotifyEditorInitialized); + if (didCryEditStart) { app->EnableOnIdle(); diff --git a/Code/Editor/CryEdit.h b/Code/Editor/CryEdit.h index 53ee8f1905..8c514170ae 100644 --- a/Code/Editor/CryEdit.h +++ b/Code/Editor/CryEdit.h @@ -212,6 +212,7 @@ public: void OnEditFetch(); void OnFileExportToGameNoSurfaceTexture(); void OnViewSwitchToGame(); + void OnViewSwitchToGameFullScreen(); void OnViewDeploy(); void DeleteSelectedEntities(bool includeDescendants); void OnMoveObject(); diff --git a/Code/Editor/CryEditDoc.cpp b/Code/Editor/CryEditDoc.cpp index 212606c737..9c6c257ac0 100644 --- a/Code/Editor/CryEditDoc.cpp +++ b/Code/Editor/CryEditDoc.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -749,7 +750,9 @@ bool CCryEditDoc::OnOpenDocument(const QString& lpszPathName) bool CCryEditDoc::BeforeOpenDocument(const QString& lpszPathName, TOpenDocContext& context) { - CTimeValue loading_start_time = gEnv->pTimer->GetAsyncTime(); + const AZ::TimeMs timeMs = AZ::GetRealElapsedTimeMs(); + const double timeSec = AZ::TimeMsToSecondsDouble(timeMs); + const CTimeValue loading_start_time(timeSec); bool usePrefabSystemForLevels = false; AzFramework::ApplicationRequests::Bus::BroadcastResult( @@ -790,7 +793,7 @@ bool CCryEditDoc::BeforeOpenDocument(const QString& lpszPathName, TOpenDocContex bool CCryEditDoc::DoOpenDocument(TOpenDocContext& context) { - CTimeValue& loading_start_time = context.loading_start_time; + const CTimeValue& loading_start_time = context.loading_start_time; bool isPrefabEnabled = false; AzFramework::ApplicationRequests::Bus::BroadcastResult(isPrefabEnabled, &AzFramework::ApplicationRequests::IsPrefabSystemEnabled); @@ -860,7 +863,9 @@ bool CCryEditDoc::DoOpenDocument(TOpenDocContext& context) StartStreamingLoad(); - CTimeValue loading_end_time = gEnv->pTimer->GetAsyncTime(); + const AZ::TimeMs timeMs = AZ::GetRealElapsedTimeMs(); + const double timeSec = AZ::TimeMsToSecondsDouble(timeMs); + const CTimeValue loading_end_time(timeSec); CLogFile::FormatLine("-----------------------------------------------------------"); CLogFile::FormatLine("Successfully opened document %s", context.absoluteLevelPath.toUtf8().data()); @@ -1123,7 +1128,7 @@ bool CCryEditDoc::SaveLevel(const QString& filename) const QString oldLevelPattern = QDir(oldLevelFolder).absoluteFilePath("*.*"); const QString oldLevelName = Path::GetFile(GetLevelPathName()); const QString oldLevelXml = Path::ReplaceExtension(oldLevelName, "xml"); - AZ::IO::ArchiveFileIterator findHandle = pIPak->FindFirst(oldLevelPattern.toUtf8().data(), AZ::IO::IArchive::eFileSearchType_AllowOnDiskAndInZips); + AZ::IO::ArchiveFileIterator findHandle = pIPak->FindFirst(oldLevelPattern.toUtf8().data(), AZ::IO::FileSearchLocation::Any); if (findHandle) { do diff --git a/Code/Editor/Dialogs/PythonScriptsDialog.cpp b/Code/Editor/Dialogs/PythonScriptsDialog.cpp index 35047947ac..06b1acdbc8 100644 --- a/Code/Editor/Dialogs/PythonScriptsDialog.cpp +++ b/Code/Editor/Dialogs/PythonScriptsDialog.cpp @@ -40,10 +40,10 @@ AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING namespace { // File name extension for python files - const QString s_kPythonFileNameSpec = "*.py"; + const QString s_kPythonFileNameSpec("*.py"); // Tree root element name - const QString s_kRootElementName = "Python Scripts"; + const QString s_kRootElementName("Python Scripts"); } ////////////////////////////////////////////////////////////////////////// diff --git a/Code/Editor/EditorDefs.h b/Code/Editor/EditorDefs.h index 4115e8433a..97c03b2b45 100644 --- a/Code/Editor/EditorDefs.h +++ b/Code/Editor/EditorDefs.h @@ -105,7 +105,6 @@ #include #include #include -#include #include #include diff --git a/Code/Editor/EditorModularViewportCameraComposer.cpp b/Code/Editor/EditorModularViewportCameraComposer.cpp index 72fd37605a..f145adf72f 100644 --- a/Code/Editor/EditorModularViewportCameraComposer.cpp +++ b/Code/Editor/EditorModularViewportCameraComposer.cpp @@ -145,6 +145,15 @@ namespace SandboxEditor } }; + const auto trackingTransform = [viewportId = m_viewportId] + { + bool tracking = false; + AtomToolsFramework::ModularViewportCameraControllerRequestBus::EventResult( + tracking, viewportId, &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::IsTrackingTransform); + + return tracking; + }; + m_firstPersonRotateCamera = AZStd::make_shared(SandboxEditor::CameraFreeLookChannelId()); m_firstPersonRotateCamera->m_rotateSpeedFn = [] @@ -152,6 +161,11 @@ namespace SandboxEditor return SandboxEditor::CameraRotateSpeed(); }; + m_firstPersonRotateCamera->m_constrainPitch = [trackingTransform] + { + return !trackingTransform(); + }; + // default behavior is to hide the cursor but this can be disabled (useful for remote desktop) // note: See CaptureCursorLook in the Settings Registry m_firstPersonRotateCamera->SetActivationBeganFn(hideCursor); @@ -255,6 +269,11 @@ namespace SandboxEditor return SandboxEditor::CameraOrbitYawRotationInverted(); }; + m_orbitRotateCamera->m_constrainPitch = [trackingTransform] + { + return !trackingTransform(); + }; + m_orbitTranslateCamera = AZStd::make_shared( translateCameraInputChannelIds, AzFramework::LookTranslation, AzFramework::TranslateOffsetOrbit); @@ -337,12 +356,12 @@ namespace SandboxEditor AZ::TransformBus::EventResult(worldFromLocal, viewEntityId, &AZ::TransformBus::Events::GetWorldTM); AtomToolsFramework::ModularViewportCameraControllerRequestBus::Event( - m_viewportId, &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::SetReferenceFrame, worldFromLocal); + m_viewportId, &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::StartTrackingTransform, worldFromLocal); } else { AtomToolsFramework::ModularViewportCameraControllerRequestBus::Event( - m_viewportId, &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::ClearReferenceFrame); + m_viewportId, &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::StopTrackingTransform); } } diff --git a/Code/Editor/EditorViewportWidget.cpp b/Code/Editor/EditorViewportWidget.cpp index 290f0fd17f..132729466c 100644 --- a/Code/Editor/EditorViewportWidget.cpp +++ b/Code/Editor/EditorViewportWidget.cpp @@ -53,7 +53,6 @@ #include // CryCommon -#include #include // AzFramework @@ -299,13 +298,9 @@ AzToolsFramework::ViewportInteraction::MousePick EditorViewportWidget::BuildMous { AzToolsFramework::ViewportInteraction::MousePick mousePick; mousePick.m_screenCoordinates = AzToolsFramework::ViewportInteraction::ScreenPointFromQPoint(point); - if (const auto& ray = m_renderViewport->ViewportScreenToWorldRay(mousePick.m_screenCoordinates); - ray.has_value()) - { - mousePick.m_rayOrigin = ray.value().origin; - mousePick.m_rayDirection = ray.value().direction; - } - + const auto[origin, direction] = m_renderViewport->ViewportScreenToWorldRay(mousePick.m_screenCoordinates); + mousePick.m_rayOrigin = origin; + mousePick.m_rayDirection = direction; return mousePick; } @@ -556,22 +551,6 @@ void EditorViewportWidget::OnEditorNotifyEvent(EEditorNotifyEvent event) // this should only occur for the main viewport and no others. ShowCursor(); - // If the user has selected game mode, enable outputting to any attached HMD and properly size the context - // to the resolution specified by the VR device. - if (gSettings.bEnableGameModeVR) - { - const AZ::VR::HMDDeviceInfo* deviceInfo = nullptr; - EBUS_EVENT_RESULT(deviceInfo, AZ::VR::HMDDeviceRequestBus, GetDeviceInfo); - AZ_Warning("Render Viewport", deviceInfo, "No VR device detected"); - - if (deviceInfo) - { - // Note: This may also need to adjust the viewport size - SetActiveWindow(); - SetFocus(); - SetSelected(true); - } - } SetCurrentCursor(STD_CURSOR_GAME); if (ShouldPreviewFullscreen()) @@ -912,23 +891,6 @@ AZ::Vector3 EditorViewportWidget::PickTerrain(const AzFramework::ScreenPoint& po return LYVec3ToAZVec3(ViewToWorld(AzToolsFramework::ViewportInteraction::QPointFromScreenPoint(point), nullptr, true)); } -AZ::EntityId EditorViewportWidget::PickEntity(const AzFramework::ScreenPoint& point) -{ - AZ::EntityId entityId; - HitContext hitInfo; - hitInfo.view = this; - if (HitTest(AzToolsFramework::ViewportInteraction::QPointFromScreenPoint(point), hitInfo)) - { - if (hitInfo.object && (hitInfo.object->GetType() == OBJTYPE_AZENTITY)) - { - auto entityObject = static_cast(hitInfo.object); - entityId = entityObject->GetAssociatedEntityId(); - } - } - - return entityId; -} - float EditorViewportWidget::TerrainHeight(const AZ::Vector2& position) { return GetIEditor()->GetTerrainElevation(position.GetX(), position.GetY()); @@ -1653,16 +1615,15 @@ void EditorViewportWidget::RenderSelectedRegion() Vec3 EditorViewportWidget::WorldToView3D(const Vec3& wp, [[maybe_unused]] int nFlags) const { Vec3 out(0, 0, 0); - float x, y, z; + float x, y; - ProjectToScreen(wp.x, wp.y, wp.z, &x, &y, &z); - if (_finite(x) && _finite(y) && _finite(z)) + ProjectToScreen(wp.x, wp.y, wp.z, &x, &y); + if (_finite(x) && _finite(y)) { out.x = (x / 100) * m_rcClient.width(); out.y = (y / 100) * m_rcClient.height(); out.x /= static_cast(QHighDpiScaling::factor(windowHandle()->screen())); out.y /= static_cast(QHighDpiScaling::factor(windowHandle()->screen())); - out.z = z; } return out; } @@ -1672,24 +1633,6 @@ QPoint EditorViewportWidget::WorldToView(const Vec3& wp) const { return AzToolsFramework::ViewportInteraction::QPointFromScreenPoint(m_renderViewport->ViewportWorldToScreen(LYVec3ToAZVec3(wp))); } -////////////////////////////////////////////////////////////////////////// -QPoint EditorViewportWidget::WorldToViewParticleEditor(const Vec3& wp, int width, int height) const -{ - QPoint p; - float x, y, z; - - ProjectToScreen(wp.x, wp.y, wp.z, &x, &y, &z); - if (_finite(x) || _finite(y)) - { - p.rx() = static_cast((x / 100) * width); - p.ry() = static_cast((y / 100) * height); - } - else - { - QPoint(0, 0); - } - return p; -} ////////////////////////////////////////////////////////////////////////// Vec3 EditorViewportWidget::ViewToWorld( @@ -1705,20 +1648,16 @@ Vec3 EditorViewportWidget::ViewToWorld( AZ_UNUSED(collideWithObject); auto ray = m_renderViewport->ViewportScreenToWorldRay(AzToolsFramework::ViewportInteraction::ScreenPointFromQPoint(vp)); - if (!ray.has_value()) - { - return Vec3(0, 0, 0); - } const float maxDistance = 10000.f; - Vec3 v = AZVec3ToLYVec3(ray.value().direction) * maxDistance; + Vec3 v = AZVec3ToLYVec3(ray.direction) * maxDistance; if (!_finite(v.x) || !_finite(v.y) || !_finite(v.z)) { return Vec3(0, 0, 0); } - Vec3 colp = AZVec3ToLYVec3(ray.value().origin) + 0.002f * v; + Vec3 colp = AZVec3ToLYVec3(ray.origin) + 0.002f * v; return colp; } @@ -1757,21 +1696,19 @@ bool EditorViewportWidget::RayRenderMeshIntersection(IRenderMesh* pRenderMesh, c return bRes;*/ } -void EditorViewportWidget::UnProjectFromScreen(float sx, float sy, float sz, float* px, float* py, float* pz) const +void EditorViewportWidget::UnProjectFromScreen(float sx, float sy, float* px, float* py, float* pz) const { - AZ::Vector3 wp; - wp = m_renderViewport->ViewportScreenToWorld(AzFramework::ScreenPoint{(int)sx, m_rcClient.bottom() - ((int)sy)}, sz).value_or(wp); + const AZ::Vector3 wp = m_renderViewport->ViewportScreenToWorld(AzFramework::ScreenPoint{(int)sx, m_rcClient.bottom() - ((int)sy)}); *px = wp.GetX(); *py = wp.GetY(); *pz = wp.GetZ(); } -void EditorViewportWidget::ProjectToScreen(float ptx, float pty, float ptz, float* sx, float* sy, float* sz) const +void EditorViewportWidget::ProjectToScreen(float ptx, float pty, float ptz, float* sx, float* sy) const { AzFramework::ScreenPoint screenPosition = m_renderViewport->ViewportWorldToScreen(AZ::Vector3{ptx, pty, ptz}); *sx = static_cast(screenPosition.m_x); *sy = static_cast(screenPosition.m_y); - *sz = 0.f; } ////////////////////////////////////////////////////////////////////////// @@ -1781,32 +1718,22 @@ void EditorViewportWidget::ViewToWorldRay(const QPoint& vp, Vec3& raySrc, Vec3& Vec3 pos0, pos1; float wx, wy, wz; - UnProjectFromScreen(static_cast(vp.x()), static_cast(rc.bottom() - vp.y()), 0.0f, &wx, &wy, &wz); - if (!_finite(wx) || !_finite(wy) || !_finite(wz)) - { - return; - } - if (fabs(wx) > 1000000 || fabs(wy) > 1000000 || fabs(wz) > 1000000) - { - return; - } - pos0(wx, wy, wz); - UnProjectFromScreen(static_cast(vp.x()), static_cast(rc.bottom() - vp.y()), 1.0f, &wx, &wy, &wz); - if (!_finite(wx) || !_finite(wy) || !_finite(wz)) - { - return; - } - if (fabs(wx) > 1000000 || fabs(wy) > 1000000 || fabs(wz) > 1000000) - { - return; - } - pos1(wx, wy, wz); + UnProjectFromScreen(static_cast(vp.x()), static_cast(rc.bottom() - vp.y()), &wx, &wy, &wz); - Vec3 v = (pos1 - pos0); - v = v.GetNormalized(); + if (!_finite(wx) || !_finite(wy) || !_finite(wz)) + { + return; + } + + if (fabs(wx) > 1000000 || fabs(wy) > 1000000 || fabs(wz) > 1000000) + { + return; + } + + pos0(wx, wy, wz); raySrc = pos0; - rayDir = v; + rayDir = (pos0 - AZVec3ToLYVec3(m_renderViewport->GetCameraState().m_position)).GetNormalized(); } ////////////////////////////////////////////////////////////////////////// @@ -1815,13 +1742,6 @@ float EditorViewportWidget::GetScreenScaleFactor([[maybe_unused]] const Vec3& wo AZ_Error("CryLegacy", false, "EditorViewportWidget::GetScreenScaleFactor not implemented"); return 1.f; } -////////////////////////////////////////////////////////////////////////// -float EditorViewportWidget::GetScreenScaleFactor(const CCamera& camera, const Vec3& object_position) -{ - Vec3 camPos = camera.GetPosition(); - float dist = camPos.GetDistance(object_position); - return dist; -} ////////////////////////////////////////////////////////////////////////// bool EditorViewportWidget::CheckRespondToInput() const @@ -1842,7 +1762,6 @@ bool EditorViewportWidget::CheckRespondToInput() const ////////////////////////////////////////////////////////////////////////// bool EditorViewportWidget::HitTest(const QPoint& point, HitContext& hitInfo) { - hitInfo.camera = nullptr; hitInfo.pExcludedObject = GetCameraObject(); return QtViewport::HitTest(point, hitInfo); } @@ -2363,10 +2282,10 @@ void* EditorViewportWidget::GetSystemCursorConstraintWindow() const return systemCursorConstrained ? renderOverlayHWND() : nullptr; } -void EditorViewportWidget::BuildDragDropContext(AzQtComponents::ViewportDragContext& context, const QPoint& pt) +void EditorViewportWidget::BuildDragDropContext( + AzQtComponents::ViewportDragContext& context, const AzFramework::ViewportId viewportId, const QPoint& point) { - const auto scaledPoint = WidgetToViewport(pt); - QtViewport::BuildDragDropContext(context, scaledPoint); + QtViewport::BuildDragDropContext(context, viewportId, point); } void EditorViewportWidget::RestoreViewportAfterGameMode() @@ -2547,12 +2466,6 @@ bool EditorViewportWidget::ShouldPreviewFullscreen() const return false; } - // Not supported in VR - if (gSettings.bEnableGameModeVR) - { - return false; - } - // If level not loaded, don't preview in fullscreen (preview shouldn't work at all without a level, but it does) if (auto ge = GetIEditor()->GetGameEngine()) { diff --git a/Code/Editor/EditorViewportWidget.h b/Code/Editor/EditorViewportWidget.h index 01f6068d56..0101f2ffef 100644 --- a/Code/Editor/EditorViewportWidget.h +++ b/Code/Editor/EditorViewportWidget.h @@ -10,7 +10,6 @@ #pragma once #if !defined(Q_MOC_RUN) -#include #include @@ -166,13 +165,11 @@ private: Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, const QPoint& point) override; void SetViewportId(int id) override; QPoint WorldToView(const Vec3& wp) const override; - QPoint WorldToViewParticleEditor(const Vec3& wp, int width, int height) const override; Vec3 WorldToView3D(const Vec3& wp, int nFlags = 0) const override; Vec3 ViewToWorld(const QPoint& vp, bool* collideWithTerrain = nullptr, bool onlyTerrain = false, bool bSkipVegetation = false, bool bTestRenderMesh = false, bool* collideWithObject = nullptr) const override; void ViewToWorldRay(const QPoint& vp, Vec3& raySrc, Vec3& rayDir) const override; Vec3 ViewToWorldNormal(const QPoint& vp, bool onlyTerrain, bool bTestRenderMesh = false) override; float GetScreenScaleFactor(const Vec3& worldPoint) const override; - float GetScreenScaleFactor(const CCamera& camera, const Vec3& object_position) override; float GetAspectRatio() const override; bool HitTest(const QPoint& point, HitContext& hitInfo) override; bool IsBoundsVisible(const AABB& box) const override; @@ -208,7 +205,6 @@ private: void* GetSystemCursorConstraintWindow() const override; // AzToolsFramework::MainEditorViewportInteractionRequestBus overrides ... - AZ::EntityId PickEntity(const AzFramework::ScreenPoint& point) override; AZ::Vector3 PickTerrain(const AzFramework::ScreenPoint& point) override; float TerrainHeight(const AZ::Vector2& position) override; bool ShowingWorldSpace() override; @@ -275,7 +271,8 @@ private: bool CheckRespondToInput() const; - void BuildDragDropContext(AzQtComponents::ViewportDragContext& context, const QPoint& pt) override; + void BuildDragDropContext( + AzQtComponents::ViewportDragContext& context, AzFramework::ViewportId viewportId, const QPoint& point) override; void SetAsActiveViewport(); void PushDisableRendering(); @@ -306,8 +303,8 @@ private: const DisplayContext& GetDisplayContext() const { return m_displayContext; } CBaseObject* GetCameraObject() const; - void UnProjectFromScreen(float sx, float sy, float sz, float* px, float* py, float* pz) const; - void ProjectToScreen(float ptx, float pty, float ptz, float* sx, float* sy, float* sz) const; + void UnProjectFromScreen(float sx, float sy, float* px, float* py, float* pz) const; + void ProjectToScreen(float ptx, float pty, float ptz, float* sx, float* sy) const; AZ::RPI::ViewPtr GetCurrentAtomView() const; diff --git a/Code/Editor/GameEngine.cpp b/Code/Editor/GameEngine.cpp index ff247c1e6c..6f434eda98 100644 --- a/Code/Editor/GameEngine.cpp +++ b/Code/Editor/GameEngine.cpp @@ -822,7 +822,7 @@ void CGameEngine::Update() if (gEnv->pSystem) { gEnv->pSystem->UpdatePreTickBus(); - componentApplication->Tick(gEnv->pTimer->GetFrameTime(ITimer::ETIMER_GAME)); + componentApplication->Tick(); gEnv->pSystem->UpdatePostTickBus(); } @@ -838,7 +838,7 @@ void CGameEngine::Update() unsigned int updateFlags = ESYSUPDATE_EDITOR; GetIEditor()->GetAnimation()->Update(); GetIEditor()->GetSystem()->UpdatePreTickBus(updateFlags); - componentApplication->Tick(gEnv->pTimer->GetFrameTime(ITimer::ETIMER_GAME)); + componentApplication->Tick(); GetIEditor()->GetSystem()->UpdatePostTickBus(updateFlags); } } diff --git a/Code/Editor/Include/HitContext.h b/Code/Editor/Include/HitContext.h index 186124555f..ceff0adb22 100644 --- a/Code/Editor/Include/HitContext.h +++ b/Code/Editor/Include/HitContext.h @@ -19,7 +19,6 @@ class CBaseObject; struct IDisplayViewport; class CDeepSelection; struct AABB; -class CCamera; #include #include @@ -68,8 +67,6 @@ struct HitContext QRect rect; //! Optional limiting bounding box for hit testing. AABB* bounds; - //! Optional camera for culling perspective viewports. - CCamera* camera; //! Testing performed in 2D viewport. bool b2DViewport; @@ -120,7 +117,6 @@ struct HitContext rect = QRect(); b2DViewport = false; view = 0; - camera = 0; point2d = QPoint(); axis = 0; distanceTolerance = 0; diff --git a/Code/Editor/Include/IDisplayViewport.h b/Code/Editor/Include/IDisplayViewport.h index c7dff33e50..132c62804c 100644 --- a/Code/Editor/Include/IDisplayViewport.h +++ b/Code/Editor/Include/IDisplayViewport.h @@ -14,7 +14,6 @@ struct DisplayContext; class CBaseObjectsCache; class QPoint; -class CCamera; struct AABB; class CViewport; @@ -23,7 +22,6 @@ struct IDisplayViewport { virtual void Update() = 0; virtual float GetScreenScaleFactor(const Vec3& position) const = 0; - virtual float GetScreenScaleFactor(const CCamera& camera, const Vec3& object_position) = 0; virtual bool HitTestLine(const Vec3& lineP1, const Vec3& lineP2, const QPoint& hitpoint, int pixelRadius, float* pToCameraDistance = 0) const = 0; /** @@ -47,7 +45,6 @@ struct IDisplayViewport virtual const Matrix34& GetViewTM() const = 0; virtual const Matrix34& GetScreenTM() const = 0; virtual QPoint WorldToView(const Vec3& worldPoint) const = 0; - virtual QPoint WorldToViewParticleEditor(const Vec3& worldPoint, int width, int height) const = 0; virtual Vec3 WorldToView3D(const Vec3& worldPoint, int flags = 0) const = 0; virtual Vec3 ViewToWorld(const QPoint& vp, bool* collideWithTerrain = nullptr, bool onlyTerrain = false, bool bSkipVegetation = false, bool bTestRenderMesh = false, bool* collideWithObject = nullptr) const = 0; virtual void ViewToWorldRay(const QPoint& vp, Vec3& raySrc, Vec3& rayDir) const = 0; diff --git a/Code/Editor/Include/IEditorMaterialManager.h b/Code/Editor/Include/IEditorMaterialManager.h index d76ec32829..6f71c5ddd1 100644 --- a/Code/Editor/Include/IEditorMaterialManager.h +++ b/Code/Editor/Include/IEditorMaterialManager.h @@ -9,10 +9,6 @@ #define CRYINCLUDE_EDITOR_MATERIAL_IEDITORMATERIALMANAGER_H #pragma once -#define MATERIAL_FILE_EXT ".mtl" -#define DCC_MATERIAL_FILE_EXT ".dccmtl" -#define MATERIALS_PATH "materials/" - #include #include diff --git a/Code/Editor/Include/IFileUtil.h b/Code/Editor/Include/IFileUtil.h index e179f892d9..036a0bc5ee 100644 --- a/Code/Editor/Include/IFileUtil.h +++ b/Code/Editor/Include/IFileUtil.h @@ -60,7 +60,6 @@ struct IFileUtil EFILE_TYPE_GEOMETRY, EFILE_TYPE_TEXTURE, EFILE_TYPE_SOUND, - EFILE_TYPE_GEOMCACHE, EFILE_TYPE_LAST, }; @@ -114,9 +113,7 @@ struct IFileUtil virtual void ShowInExplorer(const QString& path) = 0; - virtual bool CompileLuaFile(const char* luaFilename) = 0; virtual bool ExtractFile(QString& file, bool bMsgBoxAskForExtraction = true, const char* pDestinationFilename = nullptr) = 0; - virtual void EditTextFile(const char* txtFile, int line = 0, ETextFileType fileType = FILE_TYPE_SCRIPT) = 0; virtual void EditTextureFile(const char* txtureFile, bool bUseGameFolder) = 0; //! dcc filename calculation and extraction sub-routines diff --git a/Code/Editor/Lib/Tests/Camera/test_EditorCamera.cpp b/Code/Editor/Lib/Tests/Camera/test_EditorCamera.cpp index 637b9c44c5..dd7698a82e 100644 --- a/Code/Editor/Lib/Tests/Camera/test_EditorCamera.cpp +++ b/Code/Editor/Lib/Tests/Camera/test_EditorCamera.cpp @@ -27,7 +27,9 @@ namespace UnitTest AZ::Entity* m_entity = nullptr; AZ::ComponentDescriptor* m_transformComponent = nullptr; - static const AzFramework::ViewportId TestViewportId; + static inline constexpr AzFramework::ViewportId TestViewportId = 2345; + static inline constexpr float HalfInterpolateToTransformDuration = + AtomToolsFramework::ModularViewportCameraControllerRequests::InterpolateToTransformDuration * 0.5f; void SetUp() override { @@ -76,8 +78,6 @@ namespace UnitTest } }; - const AzFramework::ViewportId EditorCameraFixture::TestViewportId = AzFramework::ViewportId(1337); - TEST_F(EditorCameraFixture, ModularViewportCameraControllerReferenceFrameUpdatedWhenViewportEntityisChanged) { // Given @@ -91,8 +91,8 @@ namespace UnitTest &Camera::EditorCameraNotificationBus::Events::OnViewportViewEntityChanged, m_entity->GetId()); // ensure the viewport updates after the viewport view entity change - const float deltaTime = 1.0f / 60.0f; - m_controllerList->UpdateViewport({ TestViewportId, AzFramework::FloatSeconds(deltaTime), AZ::ScriptTimePoint() }); + // note: do a large step to ensure smoothing finishes (e.g. not 1.0f/60.0f) + m_controllerList->UpdateViewport({ TestViewportId, AzFramework::FloatSeconds(2.0f), AZ::ScriptTimePoint() }); // retrieve updated camera transform const AZ::Transform cameraTransform = m_cameraViewportContextView->GetCameraTransform(); @@ -102,61 +102,40 @@ namespace UnitTest EXPECT_THAT(cameraTransform, IsClose(entityTransform)); } - TEST_F(EditorCameraFixture, ReferenceFrameRemainsIdentityAfterExternalCameraTransformChangeWhenNotSet) + TEST_F(EditorCameraFixture, TrackingTransformIsTrueAfterTransformIsTracked) { - // Given - m_cameraViewportContextView->SetCameraTransform(AZ::Transform::CreateTranslation(AZ::Vector3(10.0f, 20.0f, 30.0f))); + // Given/When + const AZ::Transform referenceFrame = AZ::Transform::CreateFromQuaternionAndTranslation( + AZ::Quaternion::CreateRotationX(AZ::DegToRad(90.0f)), AZ::Vector3(1.0f, 2.0f, 3.0f)); + AtomToolsFramework::ModularViewportCameraControllerRequestBus::Event( + TestViewportId, &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::StartTrackingTransform, referenceFrame); - // When - AZ::Transform referenceFrame = AZ::Transform::CreateTranslation(AZ::Vector3(1.0f, 2.0f, 3.0f)); + bool trackingTransform = false; AtomToolsFramework::ModularViewportCameraControllerRequestBus::EventResult( - referenceFrame, TestViewportId, &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::GetReferenceFrame); + trackingTransform, TestViewportId, &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::IsTrackingTransform); // Then - // reference frame is still the identity - EXPECT_THAT(referenceFrame, IsClose(AZ::Transform::CreateIdentity())); + EXPECT_THAT(trackingTransform, ::testing::IsTrue()); } - TEST_F(EditorCameraFixture, ExternalCameraTransformChangeWhenReferenceFrameIsSetUpdatesReferenceFrame) + TEST_F(EditorCameraFixture, TrackingTransformIsFalseAfterTransformIsStoppedBeingTracked) { // Given const AZ::Transform referenceFrame = AZ::Transform::CreateFromQuaternionAndTranslation( AZ::Quaternion::CreateRotationX(AZ::DegToRad(90.0f)), AZ::Vector3(1.0f, 2.0f, 3.0f)); AtomToolsFramework::ModularViewportCameraControllerRequestBus::Event( - TestViewportId, &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::SetReferenceFrame, referenceFrame); - - const AZ::Transform nextTransform = AZ::Transform::CreateTranslation(AZ::Vector3(10.0f, 20.0f, 30.0f)); - m_cameraViewportContextView->SetCameraTransform(nextTransform); - - // When - AZ::Transform currentReferenceFrame = AZ::Transform::CreateTranslation(AZ::Vector3(1.0f, 2.0f, 3.0f)); - AtomToolsFramework::ModularViewportCameraControllerRequestBus::EventResult( - currentReferenceFrame, TestViewportId, - &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::GetReferenceFrame); - - // Then - EXPECT_THAT(currentReferenceFrame, IsClose(nextTransform)); - } - - TEST_F(EditorCameraFixture, ReferenceFrameReturnedToIdentityAfterClear) - { - // Given - const AZ::Transform referenceFrame = AZ::Transform::CreateFromQuaternionAndTranslation( - AZ::Quaternion::CreateRotationX(AZ::DegToRad(90.0f)), AZ::Vector3(1.0f, 2.0f, 3.0f)); - AtomToolsFramework::ModularViewportCameraControllerRequestBus::Event( - TestViewportId, &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::SetReferenceFrame, referenceFrame); + TestViewportId, &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::StartTrackingTransform, referenceFrame); // When AtomToolsFramework::ModularViewportCameraControllerRequestBus::Event( - TestViewportId, &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::ClearReferenceFrame); - - AZ::Transform currentReferenceFrame = AZ::Transform::CreateTranslation(AZ::Vector3(1.0f, 2.0f, 3.0f)); - AtomToolsFramework::ModularViewportCameraControllerRequestBus::EventResult( - currentReferenceFrame, TestViewportId, - &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::GetReferenceFrame); + TestViewportId, &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::StopTrackingTransform); // Then - EXPECT_THAT(currentReferenceFrame, IsClose(AZ::Transform::CreateIdentity())); + bool trackingTransform = false; + AtomToolsFramework::ModularViewportCameraControllerRequestBus::EventResult( + trackingTransform, TestViewportId, &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::IsTrackingTransform); + + EXPECT_THAT(trackingTransform, ::testing::IsFalse()); } TEST_F(EditorCameraFixture, InterpolateToTransform) @@ -169,8 +148,10 @@ namespace UnitTest transformToInterpolateTo); // simulate interpolation - m_controllerList->UpdateViewport({ TestViewportId, AzFramework::FloatSeconds(0.5f), AZ::ScriptTimePoint() }); - m_controllerList->UpdateViewport({ TestViewportId, AzFramework::FloatSeconds(0.5f), AZ::ScriptTimePoint() }); + m_controllerList->UpdateViewport( + { TestViewportId, AzFramework::FloatSeconds(HalfInterpolateToTransformDuration), AZ::ScriptTimePoint() }); + m_controllerList->UpdateViewport( + { TestViewportId, AzFramework::FloatSeconds(HalfInterpolateToTransformDuration), AZ::ScriptTimePoint() }); const auto finalTransform = m_cameraViewportContextView->GetCameraTransform(); @@ -184,7 +165,7 @@ namespace UnitTest const AZ::Transform referenceFrame = AZ::Transform::CreateFromQuaternionAndTranslation( AZ::Quaternion::CreateRotationX(AZ::DegToRad(90.0f)), AZ::Vector3(1.0f, 2.0f, 3.0f)); AtomToolsFramework::ModularViewportCameraControllerRequestBus::Event( - TestViewportId, &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::SetReferenceFrame, referenceFrame); + TestViewportId, &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::StartTrackingTransform, referenceFrame); AZ::Transform transformToInterpolateTo = AZ::Transform::CreateFromQuaternionAndTranslation( AZ::Quaternion::CreateRotationZ(AZ::DegToRad(90.0f)), AZ::Vector3(20.0f, 40.0f, 60.0f)); @@ -195,18 +176,85 @@ namespace UnitTest transformToInterpolateTo); // simulate interpolation - m_controllerList->UpdateViewport({ TestViewportId, AzFramework::FloatSeconds(0.5f), AZ::ScriptTimePoint() }); - m_controllerList->UpdateViewport({ TestViewportId, AzFramework::FloatSeconds(0.5f), AZ::ScriptTimePoint() }); - - AZ::Transform currentReferenceFrame = AZ::Transform::CreateTranslation(AZ::Vector3(1.0f, 2.0f, 3.0f)); - AtomToolsFramework::ModularViewportCameraControllerRequestBus::EventResult( - currentReferenceFrame, TestViewportId, - &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::GetReferenceFrame); + m_controllerList->UpdateViewport( + { TestViewportId, AzFramework::FloatSeconds(HalfInterpolateToTransformDuration), AZ::ScriptTimePoint() }); + m_controllerList->UpdateViewport( + { TestViewportId, AzFramework::FloatSeconds(HalfInterpolateToTransformDuration), AZ::ScriptTimePoint() }); const auto finalTransform = m_cameraViewportContextView->GetCameraTransform(); // Then EXPECT_THAT(finalTransform, IsClose(transformToInterpolateTo)); - EXPECT_THAT(currentReferenceFrame, IsClose(AZ::Transform::CreateIdentity())); + } + + TEST_F(EditorCameraFixture, BeginningCameraInterpolationReturnsTrue) + { + // Given/When + bool interpolationBegan = false; + AtomToolsFramework::ModularViewportCameraControllerRequestBus::EventResult( + interpolationBegan, TestViewportId, + &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::InterpolateToTransform, + AZ::Transform::CreateTranslation(AZ::Vector3(10.0f, 10.0f, 10.0f))); + + // Then + EXPECT_THAT(interpolationBegan, ::testing::IsTrue()); + } + + TEST_F(EditorCameraFixture, CameraInterpolationDoesNotBeginDuringAnExistingInterpolation) + { + // Given/When + bool initialInterpolationBegan = false; + AtomToolsFramework::ModularViewportCameraControllerRequestBus::EventResult( + initialInterpolationBegan, TestViewportId, + &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::InterpolateToTransform, + AZ::Transform::CreateTranslation(AZ::Vector3(10.0f, 10.0f, 10.0f))); + + m_controllerList->UpdateViewport( + { TestViewportId, AzFramework::FloatSeconds(HalfInterpolateToTransformDuration), AZ::ScriptTimePoint() }); + + bool nextInterpolationBegan = true; + AtomToolsFramework::ModularViewportCameraControllerRequestBus::EventResult( + nextInterpolationBegan, TestViewportId, + &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::InterpolateToTransform, + AZ::Transform::CreateTranslation(AZ::Vector3(10.0f, 10.0f, 10.0f))); + + bool interpolating = false; + AtomToolsFramework::ModularViewportCameraControllerRequestBus::EventResult( + interpolating, TestViewportId, &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::IsInterpolating); + + // Then + EXPECT_THAT(initialInterpolationBegan, ::testing::IsTrue()); + EXPECT_THAT(nextInterpolationBegan, ::testing::IsFalse()); + EXPECT_THAT(interpolating, ::testing::IsTrue()); + } + + TEST_F(EditorCameraFixture, CameraInterpolationCanBeginAfterAnInterpolationCompletes) + { + // Given/When + bool initialInterpolationBegan = false; + AtomToolsFramework::ModularViewportCameraControllerRequestBus::EventResult( + initialInterpolationBegan, TestViewportId, + &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::InterpolateToTransform, + AZ::Transform::CreateTranslation(AZ::Vector3(10.0f, 10.0f, 10.0f))); + + m_controllerList->UpdateViewport( + { TestViewportId, + AzFramework::FloatSeconds(AtomToolsFramework::ModularViewportCameraControllerRequests::InterpolateToTransformDuration + 0.5f), + AZ::ScriptTimePoint() }); + + bool interpolating = true; + AtomToolsFramework::ModularViewportCameraControllerRequestBus::EventResult( + interpolating, TestViewportId, &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::IsInterpolating); + + bool nextInterpolationBegan = false; + AtomToolsFramework::ModularViewportCameraControllerRequestBus::EventResult( + nextInterpolationBegan, TestViewportId, + &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::InterpolateToTransform, + AZ::Transform::CreateTranslation(AZ::Vector3(10.0f, 10.0f, 10.0f))); + + // Then + EXPECT_THAT(initialInterpolationBegan, ::testing::IsTrue()); + EXPECT_THAT(interpolating, ::testing::IsFalse()); + EXPECT_THAT(nextInterpolationBegan, ::testing::IsTrue()); } } // namespace UnitTest diff --git a/Code/Editor/Lib/Tests/test_EditorPythonBindings.cpp b/Code/Editor/Lib/Tests/test_EditorPythonBindings.cpp index 1006c339ee..de0eb5df6f 100644 --- a/Code/Editor/Lib/Tests/test_EditorPythonBindings.cpp +++ b/Code/Editor/Lib/Tests/test_EditorPythonBindings.cpp @@ -25,7 +25,6 @@ #include #include #include -#include #include #include "IEditorMock.h" diff --git a/Code/Editor/Lib/Tests/test_ModularViewportCameraController.cpp b/Code/Editor/Lib/Tests/test_ModularViewportCameraController.cpp index 275df11784..656440f16e 100644 --- a/Code/Editor/Lib/Tests/test_ModularViewportCameraController.cpp +++ b/Code/Editor/Lib/Tests/test_ModularViewportCameraController.cpp @@ -74,7 +74,7 @@ namespace UnitTest class ModularViewportCameraControllerFixture : public AllocatorsTestFixture { public: - static const AzFramework::ViewportId TestViewportId; + static inline constexpr AzFramework::ViewportId TestViewportId = 1234; void SetUp() override { @@ -146,6 +146,17 @@ namespace UnitTest controller->SetCameraPropsBuilderCallback( [](AzFramework::CameraProps& cameraProps) { + // note: rotateSmoothness is also used for roll (not related to camera input directly) + cameraProps.m_rotateSmoothnessFn = [] + { + return 5.0f; + }; + + cameraProps.m_translateSmoothnessFn = [] + { + return 5.0f; + }; + cameraProps.m_rotateSmoothingEnabledFn = [] { return false; @@ -209,8 +220,6 @@ namespace UnitTest AZStd::unique_ptr m_editorModularViewportCameraComposer; }; - const AzFramework::ViewportId ModularViewportCameraControllerFixture::TestViewportId = AzFramework::ViewportId(0); - TEST_F(ModularViewportCameraControllerFixture, MouseMovementDoesNotAccumulateExcessiveDriftInModularViewportCameraWithVaryingDeltaTime) { SandboxEditor::SetCameraCaptureCursorForLook(false); @@ -380,6 +389,7 @@ namespace UnitTest m_controllerList->UpdateViewport({ TestViewportId, AzFramework::FloatSeconds(deltaTime), AZ::ScriptTimePoint() }); QTest::mouseRelease(m_rootWidget.get(), Qt::MouseButton::RightButton, Qt::NoModifier, start + mouseDelta); + m_controllerList->UpdateViewport({ TestViewportId, AzFramework::FloatSeconds(deltaTime), AZ::ScriptTimePoint() }); // update the position of the widget const auto offset = QPoint(500, 500); diff --git a/Code/Editor/Lib/Tests/test_TrackViewPythonBindings.cpp b/Code/Editor/Lib/Tests/test_TrackViewPythonBindings.cpp index 191596f4ae..88a4b4f63f 100644 --- a/Code/Editor/Lib/Tests/test_TrackViewPythonBindings.cpp +++ b/Code/Editor/Lib/Tests/test_TrackViewPythonBindings.cpp @@ -94,6 +94,9 @@ namespace TrackViewPythonBindingsUnitTests m_app.Start(appDesc); m_app.RegisterComponentDescriptor(AzToolsFramework::TrackViewComponent::CreateDescriptor()); + + // Disable saving global user settings to prevent failure due to detecting file updates + AZ::UserSettingsComponentRequestBus::Broadcast(&AZ::UserSettingsComponentRequests::DisableSaveOnFinalize); } void TearDown() override diff --git a/Code/Editor/Lib/Tests/test_ViewportManipulatorController.cpp b/Code/Editor/Lib/Tests/test_ViewportManipulatorController.cpp index 63e59ea940..81dcae9129 100644 --- a/Code/Editor/Lib/Tests/test_ViewportManipulatorController.cpp +++ b/Code/Editor/Lib/Tests/test_ViewportManipulatorController.cpp @@ -12,6 +12,7 @@ #include #include #include +#include namespace UnitTest { @@ -77,14 +78,15 @@ namespace UnitTest class ViewportManipulatorControllerFixture : public AllocatorsTestFixture { public: - static const AzFramework::ViewportId TestViewportId; + static inline constexpr AzFramework::ViewportId TestViewportId = 1234; + static inline const QSize WidgetSize = QSize(1920, 1080); void SetUp() override { AllocatorsTestFixture::SetUp(); m_rootWidget = AZStd::make_unique(); - m_rootWidget->setFixedSize(QSize(100, 100)); + m_rootWidget->setFixedSize(WidgetSize); QApplication::setActiveWindow(m_rootWidget.get()); m_controllerList = AZStd::make_shared(); @@ -111,8 +113,6 @@ namespace UnitTest AZStd::unique_ptr m_inputChannelMapper; }; - const AzFramework::ViewportId ViewportManipulatorControllerFixture::TestViewportId = AzFramework::ViewportId(0); - TEST_F(ViewportManipulatorControllerFixture, AnEventIsNotPropagatedToTheViewportWhenAManipulatorHandlesItFirst) { // forward input events to our controller list @@ -227,4 +227,74 @@ namespace UnitTest // the key was released (cleared) EXPECT_TRUE(endedEvent); } + + TEST_F(ViewportManipulatorControllerFixture, DoubleClickIsNotRegisteredIfMouseDeltaHasMovedMoreThanDeadzoneInClickInterval) + { + AzFramework::NativeWindowHandle nativeWindowHandle = nullptr; + + // forward input events to our controller list + QObject::connect( + m_inputChannelMapper.get(), &AzToolsFramework::QtEventToAzInputMapper::InputChannelUpdated, m_rootWidget.get(), + [this, nativeWindowHandle](const AzFramework::InputChannel* inputChannel, [[maybe_unused]] QEvent* event) + { + m_controllerList->HandleInputChannelEvent( + AzFramework::ViewportControllerInputEvent{ TestViewportId, nativeWindowHandle, *inputChannel }); + }); + + ::testing::NiceMock mockWindowRequests; + mockWindowRequests.Connect(nativeWindowHandle); + + using ::testing::Return; + // note: WindowRequests is used internally by ViewportManipulatorController + ON_CALL(mockWindowRequests, GetClientAreaSize()) + .WillByDefault(Return(AzFramework::WindowSize(WidgetSize.width(), WidgetSize.height()))); + + EditorInteractionViewportSelectionFake editorInteractionViewportFake; + editorInteractionViewportFake.m_internalHandleMouseManipulatorInteraction = [](const MouseInteractionEvent&) + { + // report the event was not handled (manipulator was not interacted with) + return false; + }; + + bool doubleClickDetected = false; + editorInteractionViewportFake.m_internalHandleMouseViewportInteraction = + [&doubleClickDetected](const MouseInteractionEvent& mouseInteractionEvent) + { + // ensure no double click event is detected with the given inputs below + if (mouseInteractionEvent.m_mouseEvent == AzToolsFramework::ViewportInteraction::MouseEvent::DoubleClick) + { + doubleClickDetected = true; + } + + return true; + }; + + editorInteractionViewportFake.Connect(); + + m_controllerList->Add(AZStd::make_shared()); + + // simulate a click, move, click + MouseMove(m_rootWidget.get(), QPoint(0, 0), QPoint(10, 10)); + MousePressAndMove(m_rootWidget.get(), QPoint(10, 10), QPoint(0, 0), Qt::MouseButton::LeftButton); + QTest::mouseRelease(m_rootWidget.get(), Qt::MouseButton::LeftButton, Qt::KeyboardModifier::NoModifier, QPoint(10, 10)); + MouseMove(m_rootWidget.get(), QPoint(10, 10), QPoint(20, 20)); + MousePressAndMove(m_rootWidget.get(), QPoint(20, 20), QPoint(0, 0), Qt::MouseButton::LeftButton); + QTest::mouseRelease(m_rootWidget.get(), Qt::MouseButton::LeftButton, Qt::KeyboardModifier::NoModifier, QPoint(20, 20)); + + // ensure no double click was detected + EXPECT_FALSE(doubleClickDetected); + + // simulate double click (sanity check it still is detected correctly with no movement) + MouseMove(m_rootWidget.get(), QPoint(0, 0), QPoint(10, 10)); + MousePressAndMove(m_rootWidget.get(), QPoint(10, 10), QPoint(0, 0), Qt::MouseButton::LeftButton); + QTest::mouseRelease(m_rootWidget.get(), Qt::MouseButton::LeftButton, Qt::KeyboardModifier::NoModifier, QPoint(10, 10)); + MousePressAndMove(m_rootWidget.get(), QPoint(10, 10), QPoint(0, 0), Qt::MouseButton::LeftButton); + QTest::mouseRelease(m_rootWidget.get(), Qt::MouseButton::LeftButton, Qt::KeyboardModifier::NoModifier, QPoint(10, 10)); + + // ensure a double click was detected + EXPECT_TRUE(doubleClickDetected); + + mockWindowRequests.Disconnect(); + editorInteractionViewportFake.Disconnect(); + } } // namespace UnitTest diff --git a/Code/Editor/MainWindow.cpp b/Code/Editor/MainWindow.cpp index 528b4eba6b..f6744ec2d2 100644 --- a/Code/Editor/MainWindow.cpp +++ b/Code/Editor/MainWindow.cpp @@ -519,7 +519,7 @@ MainWindow* MainWindow::instance() void MainWindow::closeEvent(QCloseEvent* event) { - gSettings.Save(); + gSettings.Save(true); AzFramework::SystemCursorState currentCursorState; bool isInGameMode = false; @@ -708,14 +708,10 @@ void MainWindow::InitActions() .SetShortcut(QKeySequence::Undo) .SetReserved() .SetStatusTip(tr("Undo last operation")) - //.SetMenu(new QMenu("FIXME")) - .SetApplyHoverEffect() .RegisterUpdateCallback(cryEdit, &CCryEditApp::OnUpdateUndo); am->AddAction(ID_REDO, tr("&Redo")) .SetShortcut(AzQtComponents::RedoKeySequence) .SetReserved() - //.SetMenu(new QMenu("FIXME")) - .SetApplyHoverEffect() .SetStatusTip(tr("Redo last undo operation")) .RegisterUpdateCallback(cryEdit, &CCryEditApp::OnUpdateRedo); @@ -731,7 +727,6 @@ void MainWindow::InitActions() // Modify actions am->AddAction(AzToolsFramework::EditModeMove, tr("Move")) .SetIcon(Style::icon("Move")) - .SetApplyHoverEffect() .SetShortcut(tr("1")) .SetToolTip(tr("Move (1)")) .SetCheckable(true) @@ -757,7 +752,6 @@ void MainWindow::InitActions() }); am->AddAction(AzToolsFramework::EditModeRotate, tr("Rotate")) .SetIcon(Style::icon("Translate")) - .SetApplyHoverEffect() .SetShortcut(tr("2")) .SetToolTip(tr("Rotate (2)")) .SetCheckable(true) @@ -783,7 +777,6 @@ void MainWindow::InitActions() }); am->AddAction(AzToolsFramework::EditModeScale, tr("Scale")) .SetIcon(Style::icon("Scale")) - .SetApplyHoverEffect() .SetShortcut(tr("3")) .SetToolTip(tr("Scale (3)")) .SetCheckable(true) @@ -808,7 +801,6 @@ void MainWindow::InitActions() am->AddAction(AzToolsFramework::SnapToGrid, tr("Snap to grid")) .SetIcon(Style::icon("Grid")) - .SetApplyHoverEffect() .SetShortcut(tr("G")) .SetToolTip(tr("Snap to grid (G)")) .SetStatusTip(tr("Toggles snap to grid")) @@ -821,7 +813,6 @@ void MainWindow::InitActions() am->AddAction(AzToolsFramework::SnapAngle, tr("Snap angle")) .SetIcon(Style::icon("Angle")) - .SetApplyHoverEffect() .SetStatusTip(tr("Snap angle")) .SetCheckable(true) .RegisterUpdateCallback([](QAction* action) { @@ -939,29 +930,28 @@ void MainWindow::InitActions() .Connect(&QAction::triggered, this, &MainWindow::OnRefreshAudioSystem); // Game actions - am->AddAction(ID_VIEW_SWITCHTOGAME, tr("Play &Game")) + am->AddAction(ID_VIEW_SWITCHTOGAME, tr("Play Game")) .SetIcon(QIcon(":/stylesheet/img/UI20/toolbar/Play.svg")) + .SetToolTip(tr("Play Game")) + .SetStatusTip(tr("Activate the game input mode")) + .SetCheckable(true) + .RegisterUpdateCallback(cryEdit, &CCryEditApp::OnUpdatePlayGame); + am->AddAction(ID_VIEW_SWITCHTOGAME_VIEWPORT, tr("Play Game")) .SetShortcut(tr("Ctrl+G")) .SetToolTip(tr("Play Game (Ctrl+G)")) .SetStatusTip(tr("Activate the game input mode")) - .SetApplyHoverEffect() - .SetCheckable(true) .RegisterUpdateCallback(cryEdit, &CCryEditApp::OnUpdatePlayGame); - am->AddAction(ID_VIEW_SWITCHTOGAME_FULLSCREEN, tr("Play &Game (Maximized)")) + am->AddAction(ID_VIEW_SWITCHTOGAME_FULLSCREEN, tr("Play Game (Maximized)")) .SetShortcut(tr("Ctrl+Shift+G")) .SetStatusTip(tr("Activate the game input mode (maximized)")) - .SetIcon(Style::icon("Play")) - .SetApplyHoverEffect() - .SetCheckable(true); + .RegisterUpdateCallback(cryEdit, &CCryEditApp::OnUpdatePlayGame); am->AddAction(ID_TOOLBAR_WIDGET_PLAYCONSOLE_LABEL, tr("Play Controls")) .SetText(tr("Play Controls")); am->AddAction(ID_SWITCH_PHYSICS, tr("Simulate")) .SetIcon(QIcon(":/stylesheet/img/UI20/toolbar/Simulate_Physics.svg")) .SetShortcut(tr("Ctrl+P")) .SetToolTip(tr("Simulate (Ctrl+P)")) - .SetCheckable(true) .SetStatusTip(tr("Enable processing of Physics and AI.")) - .SetApplyHoverEffect() .SetCheckable(true) .RegisterUpdateCallback(cryEdit, &CCryEditApp::OnSwitchPhysicsUpdate); am->AddAction(ID_GAME_SYNCPLAYER, tr("Move Player and Camera Separately")).SetCheckable(true) @@ -1051,8 +1041,7 @@ void MainWindow::InitActions() // Editors Toolbar actions am->AddAction(ID_OPEN_ASSET_BROWSER, tr("Asset browser")) - .SetToolTip(tr("Open Asset Browser")) - .SetApplyHoverEffect(); + .SetToolTip(tr("Open Asset Browser")); AZ::EBusReduceResult> emfxEnabled(false); using AnimationRequestBus = AzToolsFramework::EditorAnimationSystemRequestsBus; @@ -1062,8 +1051,7 @@ void MainWindow::InitActions() { QAction* action = am->AddAction(ID_OPEN_EMOTIONFX_EDITOR, tr("Animation Editor")) .SetToolTip(tr("Open Animation Editor")) - .SetIcon(QIcon(":/EMotionFX/EMFX_icon_32x32.png")) - .SetApplyHoverEffect(); + .SetIcon(QIcon(":/EMotionFX/EMFX_icon_32x32.png")); QObject::connect(action, &QAction::triggered, this, []() { QtViewPaneManager::instance()->OpenPane(LyViewPane::AnimationEditor); }); @@ -1071,12 +1059,10 @@ void MainWindow::InitActions() am->AddAction(ID_OPEN_AUDIO_CONTROLS_BROWSER, tr("Audio Controls Editor")) .SetToolTip(tr("Open Audio Controls Editor")) - .SetIcon(Style::icon("Audio")) - .SetApplyHoverEffect(); + .SetIcon(Style::icon("Audio")); am->AddAction(ID_OPEN_UICANVASEDITOR, tr(LyViewPane::UiEditor)) - .SetToolTip(tr("Open UI Editor")) - .SetApplyHoverEffect(); + .SetToolTip(tr("Open UI Editor")); // Edit Mode Toolbar Actions am->AddAction(IDC_SELECTION_MASK, tr("Selected Object Types")); @@ -1089,12 +1075,10 @@ void MainWindow::InitActions() // Object Toolbar Actions am->AddAction(ID_GOTO_SELECTED, tr("Go to selected object")) .SetIcon(Style::icon("select_object")) - .SetApplyHoverEffect() .Connect(&QAction::triggered, this, &MainWindow::OnGotoSelected); // Misc Toolbar Actions - am->AddAction(ID_OPEN_SUBSTANCE_EDITOR, tr("Open Substance Editor")) - .SetApplyHoverEffect(); + am->AddAction(ID_OPEN_SUBSTANCE_EDITOR, tr("Open Substance Editor")); } void MainWindow::InitToolActionHandlers() @@ -1266,7 +1250,9 @@ void MainWindow::OnGameModeChanged(bool inGameMode) // block signals on the switch to game actions before setting the checked state, as // setting the checked state triggers the action, which will re-enter this function // and result in an infinite loop - AZStd::vector actions = { m_actionManager->GetAction(ID_VIEW_SWITCHTOGAME), m_actionManager->GetAction(ID_VIEW_SWITCHTOGAME_FULLSCREEN) }; + AZStd::vector actions = { m_actionManager->GetAction(ID_VIEW_SWITCHTOGAME_VIEWPORT), + m_actionManager->GetAction(ID_VIEW_SWITCHTOGAME_FULLSCREEN), + m_actionManager->GetAction(ID_VIEW_SWITCHTOGAME)}; for (auto action : actions) { action->blockSignals(true); diff --git a/Code/Editor/Objects/BaseObject.cpp b/Code/Editor/Objects/BaseObject.cpp index 4ae01faddf..b721dba56b 100644 --- a/Code/Editor/Objects/BaseObject.cpp +++ b/Code/Editor/Objects/BaseObject.cpp @@ -953,14 +953,8 @@ void CBaseObject::DrawTextureIcon(DisplayContext& dc, [[maybe_unused]] const Vec } ////////////////////////////////////////////////////////////////////////// -void CBaseObject::DrawWarningIcons(DisplayContext& dc, const Vec3& pos) +void CBaseObject::DrawWarningIcons(DisplayContext& dc, const Vec3&) { - // Don't draw warning icons if they are beyond draw distance - if ((dc.camera->GetPosition() - pos).GetLength() > gSettings.viewports.fWarningIconsDrawDistance) - { - return; - } - if (gSettings.viewports.bShowIcons || gSettings.viewports.bShowSizeBasedIcons) { const int warningIconSizeX = OBJECT_TEXTURE_ICON_SIZEX / 2; @@ -1010,11 +1004,8 @@ void CBaseObject::DrawLabel(DisplayContext& dc, const Vec3& pos, const QColor& l labelColor = QColor(0, 0, 0); } - float camDist = dc.camera->GetPosition().GetDistance(pos); - float maxDist = dc.settings->GetLabelsDistance(); - if (camDist < dc.settings->GetLabelsDistance() || (dc.flags & DISPLAY_SELECTION_HELPERS)) + if (dc.flags & DISPLAY_SELECTION_HELPERS) { - float range = maxDist / 2.0f; Vec3 c(static_cast(labelColor.redF()), static_cast(labelColor.greenF()), static_cast(labelColor.redF())); if (IsSelected()) { @@ -1032,10 +1023,6 @@ void CBaseObject::DrawLabel(DisplayContext& dc, const Vec3& pos, const QColor& l col[1] = c.y; col[2] = c.z; } - else if (camDist > range) - { - col[3] = col[3] * (1.0f - (camDist - range) / range); - } dc.SetColor(col[0], col[1], col[2], col[3] * alpha); dc.DrawTextLabel(pos, size, GetName().toUtf8().data()); @@ -1196,33 +1183,6 @@ bool CBaseObject::CanBeDrawn(const DisplayContext& dc, bool& outDisplaySelection return bResult; } -////////////////////////////////////////////////////////////////////////// -bool CBaseObject::IsInCameraView(const CCamera& camera) -{ - AABB bbox; - GetBoundBox(bbox); - return (camera.IsAABBVisible_F(AABB(bbox.min, bbox.max))); -} - -////////////////////////////////////////////////////////////////////////// -float CBaseObject::GetCameraVisRatio(const CCamera& camera) -{ - AABB bbox; - GetBoundBox(bbox); - - static const float defaultVisRatio = 1000.0f; - - const float objectHeightSq = max(1.0f, (bbox.max - bbox.min).GetLengthSquared()); - const float camdistSq = (bbox.min - camera.GetPosition()).GetLengthSquared(); - float visRatio = defaultVisRatio; - if (camdistSq > FLT_EPSILON) - { - visRatio = objectHeightSq / camdistSq; - } - - return visRatio; -} - ////////////////////////////////////////////////////////////////////////// int CBaseObject::MouseCreateCallback(CViewport* view, EMouseEvent event, QPoint& point, int flags) { @@ -1689,7 +1649,7 @@ QString CBaseObject::GetTypeName() const } QString name; - name.append(className.mid(0, className.length() - subClassName.length())); + name.append(className.midRef(0, className.length() - subClassName.length())); return name; } diff --git a/Code/Editor/Objects/BaseObject.h b/Code/Editor/Objects/BaseObject.h index 3865696ecb..ab14437659 100644 --- a/Code/Editor/Objects/BaseObject.h +++ b/Code/Editor/Objects/BaseObject.h @@ -674,11 +674,6 @@ protected: //! Returns if the object can be drawn, and if its selection helper should also be drawn. bool CanBeDrawn(const DisplayContext& dc, bool& outDisplaySelectionHelper) const; - //! Returns if object is in the camera view. - virtual bool IsInCameraView(const CCamera& camera); - //! Returns vis ratio of object in camera - virtual float GetCameraVisRatio(const CCamera& camera); - // Do basic intersection tests virtual bool IntersectRectBounds(const AABB& bbox); virtual bool IntersectRayBounds(const Ray& ray); diff --git a/Code/Editor/Objects/DisplayContext.h b/Code/Editor/Objects/DisplayContext.h index 0f0f0e665a..f4df4f95c6 100644 --- a/Code/Editor/Objects/DisplayContext.h +++ b/Code/Editor/Objects/DisplayContext.h @@ -31,7 +31,6 @@ struct IRenderer; struct IRenderAuxGeom; struct IIconManager; class CDisplaySettings; -class CCamera; class QPoint; enum DisplayFlags @@ -66,7 +65,6 @@ struct SANDBOX_API DisplayContext IDisplayViewport* view; IRenderAuxGeom* pRenderAuxGeom; IIconManager* pIconManager; - CCamera* camera; AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING AABB box; // Bounding box of volume that need to be repainted. AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING diff --git a/Code/Editor/Objects/DisplayContextShared.inl b/Code/Editor/Objects/DisplayContextShared.inl index df0b1f82a1..e884f874e0 100644 --- a/Code/Editor/Objects/DisplayContextShared.inl +++ b/Code/Editor/Objects/DisplayContextShared.inl @@ -1138,10 +1138,6 @@ bool DisplayContext::IsVisible(const AABB& bounds) return true; } } - else - { - return camera->IsAABBVisible_F(AABB(bounds.min, bounds.max)); - } return false; } diff --git a/Code/Editor/Objects/EntityObject.cpp b/Code/Editor/Objects/EntityObject.cpp index 6e2354998c..ae847da160 100644 --- a/Code/Editor/Objects/EntityObject.cpp +++ b/Code/Editor/Objects/EntityObject.cpp @@ -592,11 +592,11 @@ void CEntityObject::AdjustLightProperties(CVarBlockPtr& properties, const char* if (IVariable* pCastShadowVarLegacy = FindVariableInSubBlock(properties, pSubBlockVar, "bCastShadow")) { pCastShadowVarLegacy->SetFlags(pCastShadowVarLegacy->GetFlags() | IVariable::UI_INVISIBLE); - - if (pCastShadowVarLegacy->GetDisplayValue()[0] != '0') + const QString zeroPrefix("0"); + if (!pCastShadowVarLegacy->GetDisplayValue().startsWith(zeroPrefix)) { bCastShadowLegacy = true; - pCastShadowVarLegacy->SetDisplayValue("0"); + pCastShadowVarLegacy->SetDisplayValue(zeroPrefix); } } @@ -956,11 +956,7 @@ void CEntityObject::Serialize(CObjectArchive& ar) QString attachmentType; xmlNode->getAttr("AttachmentType", attachmentType); - if (attachmentType == "GeomCacheNode") - { - m_attachmentType = eAT_GeomCacheNode; - } - else if (attachmentType == "CharacterBone") + if (attachmentType == "CharacterBone") { m_attachmentType = eAT_CharacterBone; } @@ -987,11 +983,7 @@ void CEntityObject::Serialize(CObjectArchive& ar) { if (m_attachmentType != eAT_Pivot) { - if (m_attachmentType == eAT_GeomCacheNode) - { - xmlNode->setAttr("AttachmentType", "GeomCacheNode"); - } - else if (m_attachmentType == eAT_CharacterBone) + if (m_attachmentType == eAT_CharacterBone) { xmlNode->setAttr("AttachmentType", "CharacterBone"); } @@ -1091,11 +1083,7 @@ XmlNodeRef CEntityObject::Export([[maybe_unused]] const QString& levelPath, XmlN objNode->setAttr("ParentId", parentEntity->GetEntityId()); if (m_attachmentType != eAT_Pivot) { - if (m_attachmentType == eAT_GeomCacheNode) - { - objNode->setAttr("AttachmentType", "GeomCacheNode"); - } - else if (m_attachmentType == eAT_CharacterBone) + if (m_attachmentType == eAT_CharacterBone) { objNode->setAttr("AttachmentType", "CharacterBone"); } diff --git a/Code/Editor/Objects/EntityObject.h b/Code/Editor/Objects/EntityObject.h index dcc6ff7b22..a4f4752b75 100644 --- a/Code/Editor/Objects/EntityObject.h +++ b/Code/Editor/Objects/EntityObject.h @@ -131,7 +131,6 @@ public: enum EAttachmentType { eAT_Pivot, - eAT_GeomCacheNode, eAT_CharacterBone, }; diff --git a/Code/Editor/Objects/LineGizmo.cpp b/Code/Editor/Objects/LineGizmo.cpp index 31ea341f5b..991f449cd6 100644 --- a/Code/Editor/Objects/LineGizmo.cpp +++ b/Code/Editor/Objects/LineGizmo.cpp @@ -98,16 +98,8 @@ void CLineGizmo::Display(DisplayContext& dc) Vec3 pos = 0.5f * (m_point[0] + m_point[1]); //dc.renderer->DrawLabelEx( p3+Vec3(0,0,0.3f),1.2f,col,true,true,m_name ); - float camDist = dc.camera->GetPosition().GetDistance(pos); - float maxDist = dc.settings->GetLabelsDistance(); - if (camDist < dc.settings->GetLabelsDistance()) { - float range = maxDist / 2.0f; float col[4] = { m_color[0].r, m_color[0].g, m_color[0].b, m_color[0].a }; - if (camDist > range) - { - col[3] = col[3] * (1.0f - (camDist - range) / range); - } dc.SetColor(col[0], col[1], col[2], col[3]); dc.DrawTextLabel(pos + Vec3(0, 0, 0.2f), 1.2f, m_name.toUtf8().data()); } diff --git a/Code/Editor/Objects/ObjectManager.cpp b/Code/Editor/Objects/ObjectManager.cpp index ee7e9a8e96..df3371a31c 100644 --- a/Code/Editor/Objects/ObjectManager.cpp +++ b/Code/Editor/Objects/ObjectManager.cpp @@ -608,7 +608,7 @@ bool CObjectManager::AddObject(CBaseObject* obj) if (CEntityObject* entityObj = qobject_cast(obj)) { CEntityObject::EAttachmentType attachType = entityObj->GetAttachType(); - if (attachType == CEntityObject::EAttachmentType::eAT_GeomCacheNode || attachType == CEntityObject::EAttachmentType::eAT_CharacterBone) + if (attachType == CEntityObject::EAttachmentType::eAT_CharacterBone) { m_animatedAttachedEntities.insert(entityObj); } @@ -828,7 +828,7 @@ void CObjectManager::ShowLastHiddenObject() { uint64 mostRecentID = CBaseObject::s_invalidHiddenID; CBaseObject* mostRecentObject = nullptr; - for (auto it : m_objects) + for (const auto& it : m_objects) { CBaseObject* obj = it.second; @@ -1488,11 +1488,7 @@ bool CObjectManager::HitTestObject(CBaseObject* obj, HitContext& hc) if (!bSelectionHelperHit) { // Fast checking. - if (hc.camera && !obj->IsInCameraView(*hc.camera)) - { - return false; - } - else if (hc.bounds && !obj->IntersectRectBounds(*hc.bounds)) + if (hc.bounds && !obj->IntersectRectBounds(*hc.bounds)) { return false; } diff --git a/Code/Editor/Plugins/ComponentEntityEditorPlugin/SandboxIntegration.cpp b/Code/Editor/Plugins/ComponentEntityEditorPlugin/SandboxIntegration.cpp index 82d9f9ede2..64bd943d63 100644 --- a/Code/Editor/Plugins/ComponentEntityEditorPlugin/SandboxIntegration.cpp +++ b/Code/Editor/Plugins/ComponentEntityEditorPlugin/SandboxIntegration.cpp @@ -10,7 +10,6 @@ #include #include #include -#include #include #include #include @@ -57,6 +56,7 @@ #include #include #include +#include #include #include @@ -1394,13 +1394,13 @@ void SandboxIntegrationManager::ContextMenu_NewEntity() { AZ::Vector3 worldPosition = AZ::Vector3::CreateZero(); - CViewport* view = GetIEditor()->GetViewManager()->GetGameViewport(); // If we don't have a viewport active to aid in placement, the object // will be created at the origin. - if (view) + if (CViewport* view = GetIEditor()->GetViewManager()->GetGameViewport()) { - const QPoint viewPoint(static_cast(m_contextMenuViewPoint.GetX()), static_cast(m_contextMenuViewPoint.GetY())); - worldPosition = view->GetHitLocation(viewPoint); + worldPosition = AzToolsFramework::FindClosestPickIntersection( + view->GetViewportId(), AzFramework::ScreenPointFromVector2(m_contextMenuViewPoint), AzToolsFramework::EditorPickRayLength, + GetDefaultEntityPlacementDistance()); } CreateNewEntityAtPosition(worldPosition); @@ -1675,6 +1675,12 @@ void SandboxIntegrationManager::GoToEntitiesInViewports(const AzToolsFramework:: if (auto viewportContext = viewportContextManager->GetViewportContextById(viewIndex)) { const AZ::Transform cameraTransform = viewportContext->GetCameraTransform(); + // do not attempt to interpolate to where we currently are + if (cameraTransform.GetTranslation().IsClose(center)) + { + continue; + } + const AZ::Vector3 forward = (center - cameraTransform.GetTranslation()).GetNormalized(); // move camera 25% further back than required diff --git a/Code/Editor/Plugins/ComponentEntityEditorPlugin/UI/AssetCatalogModel.cpp b/Code/Editor/Plugins/ComponentEntityEditorPlugin/UI/AssetCatalogModel.cpp index df8d6db4a8..60fda239dc 100644 --- a/Code/Editor/Plugins/ComponentEntityEditorPlugin/UI/AssetCatalogModel.cpp +++ b/Code/Editor/Plugins/ComponentEntityEditorPlugin/UI/AssetCatalogModel.cpp @@ -18,7 +18,6 @@ #include #include -#include #include #include @@ -136,14 +135,6 @@ AssetCatalogModel::AssetCatalogModel(QObject* parent) } } - // Special cases for SimpleAssets. If these get full-fledged AssetData types, these cases can be removed. - QString textureExtensions = LmbrCentral::TextureAsset::GetFileFilter(); - m_extensionToAssetType.insert(AZStd::make_pair(textureExtensions.replace("*", "").replace(" ", "").toStdString().c_str(), AZStd::vector { AZ::AzTypeInfo::Uuid() })); - QString materialExtensions = LmbrCentral::MaterialAsset::GetFileFilter(); - m_extensionToAssetType.insert(AZStd::make_pair(materialExtensions.replace("*", "").replace(" ", "").toStdString().c_str(), AZStd::vector { AZ::AzTypeInfo::Uuid() })); - QString dccMaterialExtensions = LmbrCentral::DccMaterialAsset::GetFileFilter(); - m_extensionToAssetType.insert(AZStd::make_pair(dccMaterialExtensions.replace("*", "").replace(" ", "").toStdString().c_str(), AZStd::vector { AZ::AzTypeInfo::Uuid() })); - AZ::SerializeContext* serializeContext = nullptr; EBUS_EVENT_RESULT(serializeContext, AZ::ComponentApplicationBus, GetSerializeContext); AZ_Assert(serializeContext, "Failed to acquire application serialize context."); diff --git a/Code/Editor/Plugins/ComponentEntityEditorPlugin/UI/Outliner/OutlinerListModel.cpp b/Code/Editor/Plugins/ComponentEntityEditorPlugin/UI/Outliner/OutlinerListModel.cpp index c25248d4f6..08d79adcf5 100644 --- a/Code/Editor/Plugins/ComponentEntityEditorPlugin/UI/Outliner/OutlinerListModel.cpp +++ b/Code/Editor/Plugins/ComponentEntityEditorPlugin/UI/Outliner/OutlinerListModel.cpp @@ -2640,7 +2640,7 @@ QSize OutlinerItemDelegate::sizeHint(const QStyleOptionViewItem& option, const Q m_cachedBoundingRectOfTallCharacter = QRect(); }; - QTimer::singleShot(0, resetFunction); + QTimer::singleShot(0, this, resetFunction); } // And add 8 to it gives the outliner roughly the visible spacing we're looking for. diff --git a/Code/Editor/Plugins/ComponentEntityEditorPlugin/UI/Outliner/OutlinerWidget.cpp b/Code/Editor/Plugins/ComponentEntityEditorPlugin/UI/Outliner/OutlinerWidget.cpp index 803deb3509..af58ac4b6b 100644 --- a/Code/Editor/Plugins/ComponentEntityEditorPlugin/UI/Outliner/OutlinerWidget.cpp +++ b/Code/Editor/Plugins/ComponentEntityEditorPlugin/UI/Outliner/OutlinerWidget.cpp @@ -121,6 +121,18 @@ namespace SortEntityChildrenRecursively(childId, comparer); } } + + QModelIndex nextIndexForTree(bool direction, OutlinerTreeView *tree, QModelIndex current) + { + if (direction) + { + return tree->indexAbove(current); + } + else + { + return tree->indexBelow(current); + } + } } OutlinerWidget::OutlinerWidget(QWidget* pParent, Qt::WindowFlags flags) @@ -891,9 +903,7 @@ void OutlinerWidget::DoSelectSliceRootNextToSelection(bool isTraversalUpwards) return; } - AZStd::function getNextIdxFunction = - AZStd::bind(isTraversalUpwards ? &QTreeView::indexAbove : &QTreeView::indexBelow, treeView, AZStd::placeholders::_1); - QModelIndex nextIdx = getNextIdxFunction(currentIdx); + QModelIndex nextIdx = nextIndexForTree(isTraversalUpwards,treeView,currentIdx); bool foundSliceRoot = false; while (nextIdx.isValid() && !foundSliceRoot) @@ -904,7 +914,7 @@ void OutlinerWidget::DoSelectSliceRootNextToSelection(bool isTraversalUpwards) AzToolsFramework::ToolsApplicationRequestBus::BroadcastResult( foundSliceRoot, &AzToolsFramework::ToolsApplicationRequests::IsSliceRootEntity, currentEntityId); - nextIdx = getNextIdxFunction(currentIdx); + nextIdx = nextIndexForTree(isTraversalUpwards, treeView, currentIdx); } if (foundSliceRoot) @@ -934,13 +944,10 @@ void OutlinerWidget::DoSelectEdgeSliceRoot(bool shouldSelectTopMostSlice) } QModelIndex currentIdx; - AZStd::function getNextIdxFunction; + if (shouldSelectTopMostSlice) { currentIdx = itemModel->index(0, OutlinerListModel::ColumnName); - - getNextIdxFunction = - AZStd::bind(&QTreeView::indexBelow, treeView, AZStd::placeholders::_1); } else { @@ -949,9 +956,6 @@ void OutlinerWidget::DoSelectEdgeSliceRoot(bool shouldSelectTopMostSlice) { currentIdx = itemModel->index(itemModel->rowCount(currentIdx) - 1, OutlinerListModel::ColumnName, currentIdx); } - - getNextIdxFunction = - AZStd::bind(&QTreeView::indexAbove, treeView, AZStd::placeholders::_1); } QModelIndex nextIdx = currentIdx; @@ -964,7 +968,7 @@ void OutlinerWidget::DoSelectEdgeSliceRoot(bool shouldSelectTopMostSlice) AzToolsFramework::ToolsApplicationRequestBus::BroadcastResult( foundSliceRoot, &AzToolsFramework::ToolsApplicationRequests::IsSliceRootEntity, currentEntityId); - nextIdx = getNextIdxFunction(currentIdx); + nextIdx = nextIndexForTree(shouldSelectTopMostSlice,treeView,currentIdx); } while (nextIdx.isValid() && !foundSliceRoot); if (foundSliceRoot) @@ -1416,7 +1420,10 @@ void OutlinerWidget::SortContent() } m_entitiesToSort.clear(); - auto comparer = AZStd::bind(&CompareEntitiesForSorting, AZStd::placeholders::_1, AZStd::placeholders::_2, m_sortMode); + auto comparer = [sortMode = m_sortMode](AZ::EntityId left, AZ::EntityId right) -> bool + { + return CompareEntitiesForSorting(left, right, sortMode); + }; for (const AZ::EntityId& entityId : parentsToSort) { SortEntityChildren(entityId, comparer); @@ -1433,7 +1440,10 @@ void OutlinerWidget::OnSortModeChanged(EntityOutliner::DisplaySortMode sortMode) if (sortMode != EntityOutliner::DisplaySortMode::Manually) { AZ_PROFILE_FUNCTION(AzToolsFramework); - auto comparer = AZStd::bind(&CompareEntitiesForSorting, AZStd::placeholders::_1, AZStd::placeholders::_2, sortMode); + auto comparer = [sortMode = m_sortMode](AZ::EntityId left, AZ::EntityId right) -> bool + { + return CompareEntitiesForSorting(left, right, sortMode); + }; SortEntityChildrenRecursively(AZ::EntityId(), comparer); } diff --git a/Code/Editor/Resource.h b/Code/Editor/Resource.h index b3640fac70..ba3cd39fe7 100644 --- a/Code/Editor/Resource.h +++ b/Code/Editor/Resource.h @@ -104,6 +104,7 @@ #define ID_FILE_EXPORTTOGAMENOSURFACETEXTURE 33473 #define ID_VIEW_SWITCHTOGAME 33477 #define ID_VIEW_SWITCHTOGAME_FULLSCREEN 33478 +#define ID_VIEW_SWITCHTOGAME_VIEWPORT 33479 #define ID_MOVE_OBJECT 33481 #define ID_RENAME_OBJ 33483 #define ID_FETCH 33496 diff --git a/Code/Editor/Settings.cpp b/Code/Editor/Settings.cpp index d548cffb52..acb48c3545 100644 --- a/Code/Editor/Settings.cpp +++ b/Code/Editor/Settings.cpp @@ -112,8 +112,6 @@ SEditorSettings::SEditorSettings() m_showCircularDependencyError = true; bAutoloadLastLevelAtStartup = false; bMuteAudio = false; - bEnableGameModeVR = false; - objectHideMask = 0; objectSelectMask = 0xFFFFFFFF; // Initially all selectable. @@ -473,7 +471,7 @@ void SEditorSettings::LoadValue(const char* sSection, const char* sKey, ESystemC } ////////////////////////////////////////////////////////////////////////// -void SEditorSettings::Save() +void SEditorSettings::Save(bool isEditorClosing) { QString strStringPlaceholder; @@ -640,14 +638,16 @@ void SEditorSettings::Save() // --- Settings Registry values // Prefab System UI - AzFramework::ApplicationRequests::Bus::Broadcast( - &AzFramework::ApplicationRequests::SetPrefabSystemEnabled, prefabSystem); + AzFramework::ApplicationRequests::Bus::Broadcast(&AzFramework::ApplicationRequests::SetPrefabSystemEnabled, prefabSystem); AzToolsFramework::Prefab::PrefabLoaderInterface* prefabLoaderInterface = AZ::Interface::Get(); prefabLoaderInterface->SetSaveAllPrefabsPreference(levelSaveSettings.saveAllPrefabsPreference); - SaveSettingsRegistryFile(); + if (!isEditorClosing) + { + SaveSettingsRegistryFile(); + } } ////////////////////////////////////////////////////////////////////////// diff --git a/Code/Editor/Settings.h b/Code/Editor/Settings.h index 426d2300d3..9276d9b715 100644 --- a/Code/Editor/Settings.h +++ b/Code/Editor/Settings.h @@ -267,7 +267,7 @@ struct SANDBOX_API SEditorSettings AZ_POP_DISABLE_DLL_EXPORT_BASECLASS_WARNING SEditorSettings(); ~SEditorSettings() = default; - void Save(); + void Save(bool isEditorClosing = false); void Load(); void LoadCloudSettings(); @@ -305,7 +305,6 @@ AZ_POP_DISABLE_DLL_EXPORT_BASECLASS_WARNING bool m_showCircularDependencyError; bool bAutoloadLastLevelAtStartup; bool bMuteAudio; - bool bEnableGameModeVR; //! Speed of camera movement. float cameraMoveSpeed; diff --git a/Code/Editor/StartupLogoDialog.ui b/Code/Editor/StartupLogoDialog.ui index c0b8115cb0..cbc596f53a 100644 --- a/Code/Editor/StartupLogoDialog.ui +++ b/Code/Editor/StartupLogoDialog.ui @@ -103,7 +103,7 @@ - General Availability + development diff --git a/Code/Editor/ToolbarManager.cpp b/Code/Editor/ToolbarManager.cpp index 00b7992ef0..6b610d23ce 100644 --- a/Code/Editor/ToolbarManager.cpp +++ b/Code/Editor/ToolbarManager.cpp @@ -590,6 +590,16 @@ AmazonToolbar ToolbarManager::GetObjectToolbar() const return t; } +QMenu* ToolbarManager::CreatePlayButtonMenu() const +{ + QMenu* playButtonMenu = new QMenu("Play Game"); + + playButtonMenu->addAction(m_actionManager->GetAction(ID_VIEW_SWITCHTOGAME_VIEWPORT)); + playButtonMenu->addAction(m_actionManager->GetAction(ID_VIEW_SWITCHTOGAME_FULLSCREEN)); + + return playButtonMenu; +} + AmazonToolbar ToolbarManager::GetPlayConsoleToolbar() const { AmazonToolbar t = AmazonToolbar("PlayConsole", QObject::tr("Play Controls")); @@ -598,8 +608,17 @@ AmazonToolbar ToolbarManager::GetPlayConsoleToolbar() const t.AddAction(ID_TOOLBAR_WIDGET_SPACER_RIGHT, ORIGINAL_TOOLBAR_VERSION); t.AddAction(ID_TOOLBAR_SEPARATOR, ORIGINAL_TOOLBAR_VERSION); t.AddAction(ID_TOOLBAR_WIDGET_PLAYCONSOLE_LABEL, ORIGINAL_TOOLBAR_VERSION); - t.AddAction(ID_VIEW_SWITCHTOGAME, TOOLBARS_WITH_PLAY_GAME); - t.AddAction(ID_VIEW_SWITCHTOGAME_FULLSCREEN, TOOLBARS_WITH_PLAY_GAME); + + QAction* playAction = m_actionManager->GetAction(ID_VIEW_SWITCHTOGAME); + QToolButton* playButton = new QToolButton(t.Toolbar()); + + QMenu* menu = CreatePlayButtonMenu(); + menu->setParent(t.Toolbar()); + playAction->setMenu(menu); + + playButton->setDefaultAction(playAction); + t.AddWidget(playButton, ID_VIEW_SWITCHTOGAME, ORIGINAL_TOOLBAR_VERSION); + t.AddAction(ID_TOOLBAR_SEPARATOR, ORIGINAL_TOOLBAR_VERSION); t.AddAction(ID_SWITCH_PHYSICS, TOOLBARS_WITH_PLAY_GAME); return t; @@ -728,7 +747,14 @@ void AmazonToolbar::SetActionsOnInternalToolbar(ActionManager* actionManager) { if (actionManager->HasAction(actionId)) { - m_toolbar->addAction(actionManager->GetAction(actionId)); + if (actionData.widget != nullptr) + { + m_toolbar->addWidget(actionData.widget); + } + else + { + m_toolbar->addAction(actionManager->GetAction(actionId)); + } } } } @@ -1367,7 +1393,12 @@ void AmazonToolbar::InstantiateToolbar(QMainWindow* mainWindow, ToolbarManager* void AmazonToolbar::AddAction(int actionId, int toolbarVersionAdded) { - m_actions.push_back({ actionId, toolbarVersionAdded }); + AddWidget(nullptr, actionId, toolbarVersionAdded); +} + +void AmazonToolbar::AddWidget(QWidget* widget, int actionId, int toolbarVersionAdded) +{ + m_actions.push_back({ actionId, toolbarVersionAdded, widget }); } void AmazonToolbar::Clear() diff --git a/Code/Editor/ToolbarManager.h b/Code/Editor/ToolbarManager.h index be537533b6..ae6b0c7296 100644 --- a/Code/Editor/ToolbarManager.h +++ b/Code/Editor/ToolbarManager.h @@ -87,6 +87,7 @@ public: const QString& GetTranslatedName() const { return m_translatedName; } void AddAction(int actionId, int toolbarVersionAdded = 0); + void AddWidget(QWidget* widget, int actionId, int toolbarVersionAdded = 0); QToolBar* Toolbar() const { return m_toolbar; } @@ -117,6 +118,7 @@ private: { int actionId; int toolbarVersionAdded; + QWidget* widget; bool operator ==(const AmazonToolbar::ActionData& other) const { @@ -133,7 +135,9 @@ private: class AmazonToolBarExpanderWatcher; class ToolbarManager + : public QObject { + Q_OBJECT public: explicit ToolbarManager(ActionManager* actionManager, MainWindow* mainWindow); ~ToolbarManager(); @@ -178,6 +182,8 @@ private: void UpdateAllowedAreas(QToolBar* toolbar); bool IsDirty(const AmazonToolbar& toolbar) const; + QMenu* CreatePlayButtonMenu() const; + const AmazonToolbar* FindDefaultToolbar(const QString& toolbarName) const; AmazonToolbar* FindToolbar(const QString& toolbarName); diff --git a/Code/Editor/TrackView/AtomOutputFrameCapture.cpp b/Code/Editor/TrackView/AtomOutputFrameCapture.cpp index 94451e6914..5943e3c2d7 100644 --- a/Code/Editor/TrackView/AtomOutputFrameCapture.cpp +++ b/Code/Editor/TrackView/AtomOutputFrameCapture.cpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -47,18 +48,42 @@ namespace TrackView AZ::Name viewName = AZ::Name("MainCamera"); m_view = AZ::RPI::View::CreateView(viewName, AZ::RPI::View::UsageCamera); m_renderPipeline->SetDefaultView(m_view); + m_targetView = scene.GetDefaultRenderPipeline()->GetDefaultView(); + if (AZ::Render::PostProcessFeatureProcessor* fp = scene.GetFeatureProcessor()) + { + // This will be set again to mimic the active camera in UpdateView + fp->SetViewAlias(m_view, m_targetView); + } } void AtomOutputFrameCapture::DestroyPipeline(AZ::RPI::Scene& scene) { + if (AZ::Render::PostProcessFeatureProcessor* fp = scene.GetFeatureProcessor()) + { + // Remove view alias introduced in CreatePipeline and UpdateView + fp->RemoveViewAlias(m_view); + } scene.RemoveRenderPipeline(m_renderPipeline->GetId()); m_passHierarchy.clear(); m_renderPipeline.reset(); m_view.reset(); + m_targetView.reset(); } - void AtomOutputFrameCapture::UpdateView(const AZ::Matrix3x4& cameraTransform, const AZ::Matrix4x4& cameraProjection) + void AtomOutputFrameCapture::UpdateView(const AZ::Matrix3x4& cameraTransform, const AZ::Matrix4x4& cameraProjection, const AZ::RPI::ViewPtr targetView) { + if (targetView && targetView != m_targetView) + { + if (AZ::RPI::Scene* scene = SceneFromGameEntityContext()) + { + if (AZ::Render::PostProcessFeatureProcessor* fp = scene->GetFeatureProcessor()) + { + fp->SetViewAlias(m_view, targetView); + m_targetView = targetView; + } + } + } + m_view->SetCameraTransform(cameraTransform); m_view->SetViewToClipMatrix(cameraProjection); } diff --git a/Code/Editor/TrackView/AtomOutputFrameCapture.h b/Code/Editor/TrackView/AtomOutputFrameCapture.h index 2686a81c99..4719ab08e5 100644 --- a/Code/Editor/TrackView/AtomOutputFrameCapture.h +++ b/Code/Editor/TrackView/AtomOutputFrameCapture.h @@ -39,11 +39,12 @@ namespace TrackView CaptureFinishedCallback captureFinishedCallback); //! Update the internal view that is associated with the created pipeline. - void UpdateView(const AZ::Matrix3x4& cameraTransform, const AZ::Matrix4x4& cameraProjection); + void UpdateView(const AZ::Matrix3x4& cameraTransform, const AZ::Matrix4x4& cameraProjection, const AZ::RPI::ViewPtr targetView = nullptr); private: AZ::RPI::RenderPipelinePtr m_renderPipeline; //!< The internal render pipeline. AZ::RPI::ViewPtr m_view; //!< The view associated with the render pipeline. + AZ::RPI::ViewPtr m_targetView; //!< The view that this render pipeline will mimic. AZStd::vector m_passHierarchy; //!< Pass hierarchy (includes pipelineName and CopyToSwapChain). CaptureFinishedCallback m_captureFinishedCallback; //!< Stored callback called from OnCaptureFinished. diff --git a/Code/Editor/TrackView/SequenceBatchRenderDialog.cpp b/Code/Editor/TrackView/SequenceBatchRenderDialog.cpp index d7901e338a..a796a8ce37 100644 --- a/Code/Editor/TrackView/SequenceBatchRenderDialog.cpp +++ b/Code/Editor/TrackView/SequenceBatchRenderDialog.cpp @@ -16,6 +16,7 @@ #include #include +#include // Qt #include @@ -91,9 +92,12 @@ namespace static void UpdateAtomOutputFrameCaptureView(TrackView::AtomOutputFrameCapture& atomOutputFrameCapture, const int width, const int height) { const AZ::EntityId activeCameraEntityId = TrackView::ActiveCameraEntityId(); + AZ::RPI::ViewPtr view = nullptr; + AZ::RPI::ViewProviderBus::EventResult(view, activeCameraEntityId, &AZ::RPI::ViewProvider::GetView); atomOutputFrameCapture.UpdateView( TrackView::TransformFromEntityId(activeCameraEntityId), - TrackView::ProjectionFromCameraEntityId(activeCameraEntityId, static_cast(width), static_cast(height))); + TrackView::ProjectionFromCameraEntityId(activeCameraEntityId, aznumeric_cast(width), aznumeric_cast(height)), + view); } CSequenceBatchRenderDialog::CSequenceBatchRenderDialog(float fps, QWidget* pParent /* = nullptr */) diff --git a/Code/Editor/Util/FileUtil.cpp b/Code/Editor/Util/FileUtil.cpp index baca69d628..9f96d45381 100644 --- a/Code/Editor/Util/FileUtil.cpp +++ b/Code/Editor/Util/FileUtil.cpp @@ -23,9 +23,9 @@ // AzCore #include #include +#include // AzFramework -#include // AzQtComponents #include @@ -54,92 +54,14 @@ #include #endif -bool CFileUtil::s_singleFileDlgPref[IFileUtil::EFILE_TYPE_LAST] = { true, true, true, true, true }; -bool CFileUtil::s_multiFileDlgPref[IFileUtil::EFILE_TYPE_LAST] = { true, true, true, true, true }; +bool CFileUtil::s_singleFileDlgPref[IFileUtil::EFILE_TYPE_LAST] = { true, true, true, true }; +bool CFileUtil::s_multiFileDlgPref[IFileUtil::EFILE_TYPE_LAST] = { true, true, true, true }; CAutoRestorePrimaryCDRoot::~CAutoRestorePrimaryCDRoot() { QDir::setCurrent(GetIEditor()->GetPrimaryCDFolder()); } -bool CFileUtil::CompileLuaFile(const char* luaFilename) -{ - QString luaFile = luaFilename; - - if (luaFile.isEmpty()) - { - return false; - } - - // Check if this file is in Archive. - { - CCryFile file; - if (file.Open(luaFilename, "rb")) - { - // Check if in pack. - if (file.IsInPak()) - { - return true; - } - } - } - - luaFile = Path::GamePathToFullPath(luaFilename); - - // First try compiling script and see if it have any errors. - QString LuaCompiler; - QString CompilerOutput; - - // Create the filepath of the lua compiler - QString szExeFileName = qApp->applicationFilePath(); - QString exePath = Path::GetPath(szExeFileName); - -#if defined(AZ_PLATFORM_WINDOWS) - const char* luaCompiler = "LuaCompiler.exe"; -#else - const char* luaCompiler = "lua"; -#endif - LuaCompiler = Path::AddPathSlash(exePath) + luaCompiler + " "; - - AZStd::string path = luaFile.toUtf8().data(); - EBUS_EVENT(AzFramework::ApplicationRequests::Bus, NormalizePath, path); - - QString finalPath = path.c_str(); - finalPath = "\"" + finalPath + "\""; - - // Add the name of the Lua file - QString cmdLine = LuaCompiler + finalPath; - - // Execute the compiler and capture the output - if (!GetIEditor()->ExecuteConsoleApp(cmdLine, CompilerOutput)) - { - QMessageBox::critical(QApplication::activeWindow(), QString(), QObject::tr("Error while executing '%1', make sure the file is in" \ - " your Primary CD folder !").arg(luaCompiler)); - return false; - } - - // Check return string - if (!CompilerOutput.isEmpty()) - { - // Errors while compiling file. - - // Show output from Lua compiler - if (QMessageBox::critical(QApplication::activeWindow(), QObject::tr("Lua Compiler"), - QObject::tr("Error output from Lua compiler:\r\n%1\r\nDo you want to edit the file ?").arg(CompilerOutput), QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) - { - int line = 0; - int index = CompilerOutput.indexOf("at line"); - if (index >= 0) - { - azsscanf(CompilerOutput.mid(index).toUtf8().data(), "at line %d", &line); - } - // Open the Lua file for editing - EditTextFile(luaFile.toUtf8().data(), line); - } - return false; - } - return true; -} ////////////////////////////////////////////////////////////////////////// bool CFileUtil::ExtractFile(QString& file, bool bMsgBoxAskForExtraction, const char* pDestinationFilename) { @@ -205,7 +127,7 @@ void CFileUtil::EditTextFile(const char* txtFile, int line, IFileUtil::ETextFile { QString file = txtFile; - QString fullPathName = Path::GamePathToFullPath(file); + QString fullPathName = Path::GamePathToFullPath(file); ExtractFile(fullPathName); QString cmd(fullPathName); #if defined (AZ_PLATFORM_WINDOWS) @@ -301,64 +223,6 @@ void CFileUtil::EditTextureFile(const char* textureFile, [[maybe_unused]] bool b } } -////////////////////////////////////////////////////////////////////////// -bool CFileUtil::EditMayaFile(const char* filepath, const bool bExtractFromPak, const bool bUseGameFolder) -{ - QString dosFilepath = PathUtil::ToDosPath(filepath).c_str(); - if (bExtractFromPak) - { - ExtractFile(dosFilepath); - } - - if (bUseGameFolder) - { - const QString sGameFolder = Path::GetEditingGameDataFolder().c_str(); - int nLength = sGameFolder.toUtf8().count(); - if (azstrnicmp(filepath, sGameFolder.toUtf8().data(), nLength) != 0) - { - dosFilepath = sGameFolder + '\\' + filepath; - } - - dosFilepath = PathUtil::ToDosPath(dosFilepath.toUtf8().data()).c_str(); - } - - const char* engineRoot; - EBUS_EVENT_RESULT(engineRoot, AzFramework::ApplicationRequests::Bus, GetEngineRoot); - - const QString fullPath = QString(engineRoot) + '\\' + dosFilepath; - - if (gSettings.animEditor.isEmpty()) - { - AzQtComponents::ShowFileOnDesktop(fullPath); - } - else - { - if (!QProcess::startDetached(gSettings.animEditor, { fullPath })) - { - CryMessageBox("Can't open the file. You can specify a source editor in Sandbox Preferences or create an association in Windows.", "Cannot open file!", MB_OK | MB_ICONERROR); - } - } - return true; -} - -////////////////////////////////////////////////////////////////////////// -bool CFileUtil::EditFile(const char* filePath, const bool bExtrackFromPak, const bool bUseGameFolder) -{ - QString extension = filePath; - extension.remove(0, extension.lastIndexOf('.')); - - if (extension.compare(".ma") == 0) - { - return EditMayaFile(filePath, bExtrackFromPak, bUseGameFolder); - } - else if ((extension.compare(".bspace") == 0) || (extension.compare(".comb") == 0)) - { - EditTextFile(filePath, 0, IFileUtil::FILE_TYPE_BSPACE); - return true; - } - - return false; -} ////////////////////////////////////////////////////////////////////////// bool CFileUtil::CalculateDccFilename(const QString& assetFilename, QString& dccFilename) diff --git a/Code/Editor/Util/FileUtil.h b/Code/Editor/Util/FileUtil.h index 5820c32081..fc0fc942fe 100644 --- a/Code/Editor/Util/FileUtil.h +++ b/Code/Editor/Util/FileUtil.h @@ -25,14 +25,9 @@ public: static void ShowInExplorer(const QString& path); - // Try to compile the given lua file: returns true if compilation succeeded, false on failure. - static bool CompileLuaFile(const char* luaFilename); - static bool ExtractFile(QString& file, bool bMsgBoxAskForExtraction = true, const char* pDestinationFilename = nullptr); static void EditTextFile(const char* txtFile, int line = 0, IFileUtil::ETextFileType fileType = IFileUtil::FILE_TYPE_SCRIPT); static void EditTextureFile(const char* txtureFile, bool bUseGameFolder); - static bool EditMayaFile(const char* mayaFile, const bool bExtractFromPak, const bool bUseGameFolder); - static bool EditFile(const char* filePath, const bool bExtrackFromPak, const bool bUseGameFolder); //! dcc filename calculation and extraction sub-routines static bool CalculateDccFilename(const QString& assetFilename, QString& dccFilename); diff --git a/Code/Editor/Util/FileUtil_impl.cpp b/Code/Editor/Util/FileUtil_impl.cpp index 0dd3a0ca87..28090d28d5 100644 --- a/Code/Editor/Util/FileUtil_impl.cpp +++ b/Code/Editor/Util/FileUtil_impl.cpp @@ -20,21 +20,11 @@ void CFileUtil_impl::ShowInExplorer(const QString& path) CFileUtil::ShowInExplorer(path); } -bool CFileUtil_impl::CompileLuaFile(const char* luaFilename) -{ - return CFileUtil::CompileLuaFile(luaFilename); -} - bool CFileUtil_impl::ExtractFile(QString& file, bool bMsgBoxAskForExtraction, const char* pDestinationFilename) { return CFileUtil::ExtractFile(file, bMsgBoxAskForExtraction, pDestinationFilename); } -void CFileUtil_impl::EditTextFile(const char* txtFile, int line, ETextFileType fileType) -{ - CFileUtil::EditTextFile(txtFile, line, fileType); -} - void CFileUtil_impl::EditTextureFile(const char* txtureFile, bool bUseGameFolder) { CFileUtil::EditTextureFile(txtureFile, bUseGameFolder); diff --git a/Code/Editor/Util/FileUtil_impl.h b/Code/Editor/Util/FileUtil_impl.h index 04d9e829b9..aa8d0bf3b5 100644 --- a/Code/Editor/Util/FileUtil_impl.h +++ b/Code/Editor/Util/FileUtil_impl.h @@ -36,9 +36,7 @@ public: void ShowInExplorer(const QString& path) override; - bool CompileLuaFile(const char* luaFilename) override; bool ExtractFile(QString& file, bool bMsgBoxAskForExtraction = true, const char* pDestinationFilename = nullptr) override; - void EditTextFile(const char* txtFile, int line = 0, ETextFileType fileType = FILE_TYPE_SCRIPT) override; void EditTextureFile(const char* txtureFile, bool bUseGameFolder) override; //! dcc filename calculation and extraction sub-routines diff --git a/Code/Editor/Util/PathUtil.cpp b/Code/Editor/Util/PathUtil.cpp index ca3481ddae..8b745ee1bc 100644 --- a/Code/Editor/Util/PathUtil.cpp +++ b/Code/Editor/Util/PathUtil.cpp @@ -14,7 +14,6 @@ #include #include #include // for ebus events -#include #include #include @@ -175,9 +174,8 @@ namespace Path ////////////////////////////////////////////////////////////////////////// QString GetEngineRootPath() { - const char* engineRoot; - EBUS_EVENT_RESULT(engineRoot, AzFramework::ApplicationRequests::Bus, GetEngineRoot); - return QString(engineRoot); + const AZ::IO::FixedMaxPathString engineRoot = AZ::Utils::GetEnginePath(); + return QString::fromUtf8(engineRoot.c_str(), static_cast(engineRoot.size())); } ////////////////////////////////////////////////////////////////////////// diff --git a/Code/Editor/Viewport.cpp b/Code/Editor/Viewport.cpp index c8f2e268d9..5a64982350 100644 --- a/Code/Editor/Viewport.cpp +++ b/Code/Editor/Viewport.cpp @@ -14,14 +14,19 @@ // Qt #include +// AzCore +#include + // AzQtComponents #include #include #include #include +#include // Editor +#include "Editor/Plugins/ComponentEntityEditorPlugin/SandboxIntegration.h" #include "ViewManager.h" #include "Include/ITransformManipulator.h" #include "Include/HitContext.h" @@ -32,22 +37,35 @@ #include "GameEngine.h" #include "Settings.h" - #ifdef LoadCursor #undef LoadCursor #endif +AZ_CVAR( + float, + ed_defaultEntityPlacementDistance, + 10.0f, + nullptr, + AZ::ConsoleFunctorFlags::Null, + "The default distance to place an entity from the camera if no intersection is found"); + +float GetDefaultEntityPlacementDistance() +{ + return ed_defaultEntityPlacementDistance; +} + ////////////////////////////////////////////////////////////////////// // Viewport drag and drop support ////////////////////////////////////////////////////////////////////// -void QtViewport::BuildDragDropContext(AzQtComponents::ViewportDragContext& context, const QPoint& pt) +void QtViewport::BuildDragDropContext( + AzQtComponents::ViewportDragContext& context, const AzFramework::ViewportId viewportId, const QPoint& point) { - context.m_hitLocation = AZ::Vector3::CreateZero(); - context.m_hitLocation = GetHitLocation(pt); + context.m_hitLocation = AzToolsFramework::FindClosestPickIntersection( + viewportId, AzToolsFramework::ViewportInteraction::ScreenPointFromQPoint(point), AzToolsFramework::EditorPickRayLength, + GetDefaultEntityPlacementDistance()); } - void QtViewport::dragEnterEvent(QDragEnterEvent* event) { if (!GetIEditor()->GetGameEngine()->IsLevelLoaded()) @@ -66,7 +84,7 @@ void QtViewport::dragEnterEvent(QDragEnterEvent* event) // new bus-based way of doing it (install a listener!) using namespace AzQtComponents; ViewportDragContext context; - BuildDragDropContext(context, event->pos()); + BuildDragDropContext(context, GetViewportId(), event->pos()); DragAndDropEventsBus::Event(DragAndDropContexts::EditorViewport, &DragAndDropEvents::DragEnter, event, context); } } @@ -89,7 +107,7 @@ void QtViewport::dragMoveEvent(QDragMoveEvent* event) // new bus-based way of doing it (install a listener!) using namespace AzQtComponents; ViewportDragContext context; - BuildDragDropContext(context, event->pos()); + BuildDragDropContext(context, GetViewportId(), event->pos()); DragAndDropEventsBus::Event(DragAndDropContexts::EditorViewport, &DragAndDropEvents::DragMove, event, context); } } @@ -112,7 +130,7 @@ void QtViewport::dropEvent(QDropEvent* event) { // new bus-based way of doing it (install a listener!) ViewportDragContext context; - BuildDragDropContext(context, event->pos()); + BuildDragDropContext(context, GetViewportId(), event->pos()); DragAndDropEventsBus::Event(DragAndDropContexts::EditorViewport, &DragAndDropEvents::Drop, event, context); } } @@ -340,13 +358,6 @@ void QtViewport::resizeEvent(QResizeEvent* event) Update(); } -////////////////////////////////////////////////////////////////////////// -void QtViewport::leaveEvent(QEvent* event) -{ - QWidget::leaveEvent(event); - MouseCallback(eMouseLeave, QPoint(), Qt::KeyboardModifiers(), Qt::MouseButtons()); -} - ////////////////////////////////////////////////////////////////////////// void QtViewport::paintEvent([[maybe_unused]] QPaintEvent* event) { @@ -581,63 +592,7 @@ void QtViewport::keyReleaseEvent(QKeyEvent* event) OnKeyUp(nativeKey, 1, event->nativeModifiers()); } -////////////////////////////////////////////////////////////////////////// -void QtViewport::OnLButtonDown(Qt::KeyboardModifiers modifiers, const QPoint& point) -{ - // Save the mouse down position - m_cMouseDownPos = point; - if (MouseCallback(eMouseLDown, point, modifiers)) - { - return; - } -} - -////////////////////////////////////////////////////////////////////////// -void QtViewport::OnLButtonUp(Qt::KeyboardModifiers modifiers, const QPoint& point) -{ - // Check Edit Tool. - MouseCallback(eMouseLUp, point, modifiers); -} -////////////////////////////////////////////////////////////////////////// -void QtViewport::OnRButtonDown(Qt::KeyboardModifiers modifiers, const QPoint& point) -{ - MouseCallback(eMouseRDown, point, modifiers); -} - -////////////////////////////////////////////////////////////////////////// -void QtViewport::OnRButtonUp(Qt::KeyboardModifiers modifiers, const QPoint& point) -{ - MouseCallback(eMouseRUp, point, modifiers); -} - -////////////////////////////////////////////////////////////////////////// -void QtViewport::OnMButtonDown(Qt::KeyboardModifiers modifiers, const QPoint& point) -{ - // Check Edit Tool. - MouseCallback(eMouseMDown, point, modifiers); -} - -////////////////////////////////////////////////////////////////////////// -void QtViewport::OnMButtonUp(Qt::KeyboardModifiers modifiers, const QPoint& point) -{ - // Move the viewer to the mouse location. - // Check Edit Tool. - MouseCallback(eMouseMUp, point, modifiers); -} - -////////////////////////////////////////////////////////////////////////// -void QtViewport::OnMButtonDblClk(Qt::KeyboardModifiers modifiers, const QPoint& point) -{ - MouseCallback(eMouseMDblClick, point, modifiers); -} - - -////////////////////////////////////////////////////////////////////////// -void QtViewport::OnMouseMove(Qt::KeyboardModifiers modifiers, Qt::MouseButtons buttons, const QPoint& point) -{ - MouseCallback(eMouseMove, point, modifiers, buttons); -} ////////////////////////////////////////////////////////////////////////// void QtViewport::OnSetCursor() @@ -696,44 +651,6 @@ void QtViewport::OnDragSelectRectangle(const QRect& rect, bool bNormalizeRect) GetIEditor()->SetStatusText(szNewStatusText); } -////////////////////////////////////////////////////////////////////////// -void QtViewport::OnLButtonDblClk(Qt::KeyboardModifiers modifiers, const QPoint& point) -{ - if (GetIEditor()->IsInGameMode()) - { - // Ignore double clicks while in game. - return; - } - - MouseCallback(eMouseLDblClick, point, modifiers); -} - -////////////////////////////////////////////////////////////////////////// -void QtViewport::OnRButtonDblClk(Qt::KeyboardModifiers modifiers, const QPoint& point) -{ - MouseCallback(eMouseRDblClick, point, modifiers); -} - -////////////////////////////////////////////////////////////////////////// -void QtViewport::OnKeyDown([[maybe_unused]] UINT nChar, [[maybe_unused]] UINT nRepCnt, [[maybe_unused]] UINT nFlags) -{ - if (GetIEditor()->IsInGameMode()) - { - // Ignore key downs while in game. - return; - } -} - -////////////////////////////////////////////////////////////////////////// -void QtViewport::OnKeyUp([[maybe_unused]] UINT nChar, [[maybe_unused]] UINT nRepCnt, [[maybe_unused]] UINT nFlags) -{ - if (GetIEditor()->IsInGameMode()) - { - // Ignore key downs while in game. - return; - } -} - ////////////////////////////////////////////////////////////////////////// void QtViewport::SetCurrentCursor(const QCursor& hCursor, const QString& cursorString) { @@ -1119,29 +1036,6 @@ bool QtViewport::HitTest(const QPoint& point, HitContext& hitInfo) return false; } -AZ::Vector3 QtViewport::GetHitLocation(const QPoint& point) -{ - Vec3 pos = Vec3(ZERO); - HitContext hit; - if (HitTest(point, hit)) - { - pos = hit.raySrc + hit.rayDir * hit.dist; - pos = SnapToGrid(pos); - } - else - { - bool hitTerrain; - pos = ViewToWorld(point, &hitTerrain); - if (hitTerrain) - { - pos.z = GetIEditor()->GetTerrainElevation(pos.x, pos.y); - } - pos = SnapToGrid(pos); - } - - return AZ::Vector3(pos.x, pos.y, pos.z); -} - ////////////////////////////////////////////////////////////////////////// void QtViewport::SetZoomFactor(float fZoomFactor) { @@ -1315,84 +1209,6 @@ bool QtViewport::GetAdvancedSelectModeFlag() return m_bAdvancedSelectMode; } -////////////////////////////////////////////////////////////////////////// -bool QtViewport::MouseCallback(EMouseEvent event, const QPoint& point, Qt::KeyboardModifiers modifiers, Qt::MouseButtons buttons) -{ - AZ_PROFILE_FUNCTION(Editor); - - // Ignore any mouse events in game mode. - if (GetIEditor()->IsInGameMode()) - { - return true; - } - - // We must ignore mouse events when we are in the middle of an assert. - // Reason: If we have an assert called from an engine module under the editor, if we call this function, - // it may call the engine again and cause a deadlock. - // Concrete example: CryPhysics called from Trackview causing an assert, and moving the cursor over the viewport - // would cause the editor to freeze as it calls CryPhysics again for a raycast while it didn't release the lock. - if (gEnv->pSystem->IsAssertDialogVisible()) - { - return true; - } - - ////////////////////////////////////////////////////////////////////////// - // Hit test gizmo objects. - ////////////////////////////////////////////////////////////////////////// - bool bAltClick = (modifiers & Qt::AltModifier); - bool bCtrlClick = (modifiers & Qt::ControlModifier); - bool bShiftClick = (modifiers & Qt::ShiftModifier); - - int flags = (bCtrlClick ? MK_CONTROL : 0) | - (bShiftClick ? MK_SHIFT : 0) | - ((buttons& Qt::LeftButton) ? MK_LBUTTON : 0) | - ((buttons& Qt::MiddleButton) ? MK_MBUTTON : 0) | - ((buttons& Qt::RightButton) ? MK_RBUTTON : 0); - - switch (event) - { - case eMouseMove: - - if (m_nLastUpdateFrame == m_nLastMouseMoveFrame) - { - // If mouse move event generated in the same frame, ignore it. - return false; - } - m_nLastMouseMoveFrame = m_nLastUpdateFrame; - - // Skip the marker position update if anything is selected, since it is only used - // by the info bar which doesn't show the marker when there is an active selection. - // This helps a performance issue when calling ViewToWorld (which calls RayWorldIntersection) - // on every mouse movement becomes very expensive in scenes with large amounts of entities. - CSelectionGroup* selection = GetIEditor()->GetSelection(); - if (!(buttons & Qt::RightButton) /* && m_nLastUpdateFrame != m_nLastMouseMoveFrame*/ && (selection && selection->IsEmpty())) - { - //m_nLastMouseMoveFrame = m_nLastUpdateFrame; - Vec3 pos = ViewToWorld(point); - GetIEditor()->SetMarkerPosition(pos); - } - break; - } - - QPoint tempPoint(point.x(), point.y()); - - ////////////////////////////////////////////////////////////////////////// - // Handle viewport manipulators. - ////////////////////////////////////////////////////////////////////////// - if (!bAltClick) - { - ITransformManipulator* pManipulator = GetIEditor()->GetTransformManipulator(); - if (pManipulator) - { - if (pManipulator->MouseCallback(this, event, tempPoint, flags)) - { - return true; - } - } - } - - return false; -} ////////////////////////////////////////////////////////////////////////// void QtViewport::ProcessRenderLisneters(DisplayContext& rstDisplayContext) { @@ -1407,6 +1223,69 @@ void QtViewport::ProcessRenderLisneters(DisplayContext& rstDisplayContext) } ////////////////////////////////////////////////////////////////////////// #if defined(AZ_PLATFORM_WINDOWS) +// Note: Both CreateAnglesYPR and CreateOrientationYPR were copied verbatim from Cry_Camera.h which has been removed. +// +// Description +//
+//   x-YAW
+//   y-PITCH (negative=looking down / positive=looking up)
+//   z-ROLL
+//   
+// Note: If we are looking along the z-axis, its not possible to specify the x and z-angle +inline Ang3 CreateAnglesYPR(const Matrix33& m) +{ + assert(m.IsOrthonormal()); + float l = Vec3(m.m01, m.m11, 0.0f).GetLength(); + if (l > 0.0001) + { + return Ang3(atan2f(-m.m01 / l, m.m11 / l), atan2f(m.m21, l), atan2f(-m.m20 / l, m.m22 / l)); + } + else + { + return Ang3(0, atan2f(m.m21, l), 0); + } +} + +// Description +// This function builds a 3x3 orientation matrix using YPR-angles +// Rotation order for the orientation-matrix is Z-X-Y. (Zaxis=YAW / Xaxis=PITCH / Yaxis=ROLL) +// +//
+//  COORDINATE-SYSTEM
+//
+//  z-axis
+//    ^
+//    |
+//    |  y-axis
+//    |  /
+//    | /
+//    |/
+//    +--------------->   x-axis
+// 
+// +// Example: +// Matrix33 orientation=CreateOrientationYPR( Ang3(1,2,3) ); +inline Matrix33 CreateOrientationYPR(const Ang3& ypr) +{ + f32 sz, cz; + sincos_tpl(ypr.x, &sz, &cz); //Zaxis = YAW + f32 sx, cx; + sincos_tpl(ypr.y, &sx, &cx); //Xaxis = PITCH + f32 sy, cy; + sincos_tpl(ypr.z, &sy, &cy); //Yaxis = ROLL + Matrix33 c; + c.m00 = cy * cz - sy * sz * sx; + c.m01 = -sz * cx; + c.m02 = sy * cz + cy * sz * sx; + c.m10 = cy * sz + sy * sx * cz; + c.m11 = cz * cx; + c.m12 = sy * sz - cy * sx * cz; + c.m20 = -sy * cx; + c.m21 = sx; + c.m22 = cy * cx; + return c; +} + void QtViewport::OnRawInput([[maybe_unused]] UINT wParam, HRAWINPUT lParam) { static C3DConnexionDriver* p3DConnexionDriver = 0; @@ -1450,12 +1329,12 @@ void QtViewport::OnRawInput([[maybe_unused]] UINT wParam, HRAWINPUT lParam) t *= sys_scale3DMouseTranslation->GetFVal(); float as = 0.001f * gSettings.cameraMoveSpeed; - Ang3 ypr = CCamera::CreateAnglesYPR(Matrix33(viewTM)); + Ang3 ypr = CreateAnglesYPR(Matrix33(viewTM)); ypr.x += -all6DOFs[5] * as * fScaleYPR; ypr.y = AZStd::clamp(ypr.y + all6DOFs[3] * as * fScaleYPR, -1.5f, 1.5f); // to keep rotation in reasonable range ypr.z = 0; // to have camera always upward - viewTM = Matrix34(CCamera::CreateOrientationYPR(ypr), viewTM.GetTranslation()); + viewTM = Matrix34(CreateOrientationYPR(ypr), viewTM.GetTranslation()); viewTM = viewTM * Matrix34::CreateTranslationMat(t); SetViewTM(viewTM); diff --git a/Code/Editor/Viewport.h b/Code/Editor/Viewport.h index 7f8ccc4c4f..bf44b914aa 100644 --- a/Code/Editor/Viewport.h +++ b/Code/Editor/Viewport.h @@ -6,13 +6,12 @@ * */ - // Description : interface for the CViewport class. - #pragma once #if !defined(Q_MOC_RUN) +#include #include #include #include @@ -88,6 +87,9 @@ enum EStdCursor STD_CURSOR_LAST, }; +//! The default distance an entity is placed from the camera if there is no intersection +SANDBOX_API float GetDefaultEntityPlacementDistance(); + AZ_PUSH_DISABLE_DLL_EXPORT_BASECLASS_WARNING class SANDBOX_API CViewport : public IDisplayViewport @@ -201,7 +203,6 @@ public: //! Performs hit testing of 2d point in view to find which object hit. virtual bool HitTest(const QPoint& point, HitContext& hitInfo) = 0; - virtual AZ::Vector3 GetHitLocation(const QPoint& point) = 0; virtual void MakeConstructionPlane(int axis) = 0; @@ -432,7 +433,6 @@ public: //! Performs hit testing of 2d point in view to find which object hit. bool HitTest(const QPoint& point, HitContext& hitInfo) override; - AZ::Vector3 GetHitLocation(const QPoint& point) override; //! Do 2D hit testing of line in world space. // pToCameraDistance is an optional output parameter in which distance from the camera to the line is returned. @@ -522,9 +522,6 @@ protected: void setRenderOverlayVisible(bool); bool isRenderOverlayVisible() const; - // called to process mouse callback inside the viewport. - virtual bool MouseCallback(EMouseEvent event, const QPoint& point, Qt::KeyboardModifiers modifiers, Qt::MouseButtons buttons = Qt::NoButton); - void ProcessRenderLisneters(DisplayContext& rstDisplayContext); void mousePressEvent(QMouseEvent* event) override; @@ -535,29 +532,29 @@ protected: void keyPressEvent(QKeyEvent* event) override; void keyReleaseEvent(QKeyEvent* event) override; void resizeEvent(QResizeEvent* event) override; - void leaveEvent(QEvent* event) override; - void paintEvent(QPaintEvent* event) override; - virtual void OnMouseMove(Qt::KeyboardModifiers modifiers, Qt::MouseButtons buttons, const QPoint& point); - virtual void OnMouseWheel(Qt::KeyboardModifiers modifiers, short zDelta, const QPoint& pt); - virtual void OnLButtonDown(Qt::KeyboardModifiers modifiers, const QPoint& point); - virtual void OnLButtonUp(Qt::KeyboardModifiers modifiers, const QPoint& point); - virtual void OnRButtonDown(Qt::KeyboardModifiers modifiers, const QPoint& point); - virtual void OnRButtonUp(Qt::KeyboardModifiers modifiers, const QPoint& point); - virtual void OnMButtonDblClk(Qt::KeyboardModifiers modifiers, const QPoint& point); - virtual void OnMButtonDown(Qt::KeyboardModifiers modifiers, const QPoint& point); - virtual void OnMButtonUp(Qt::KeyboardModifiers modifiers, const QPoint& point); - virtual void OnLButtonDblClk(Qt::KeyboardModifiers modifiers, const QPoint& point); - virtual void OnRButtonDblClk(Qt::KeyboardModifiers modifiers, const QPoint& point); - virtual void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags); - virtual void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags); + virtual void OnMouseMove(Qt::KeyboardModifiers, Qt::MouseButtons, const QPoint&) {} + virtual void OnMouseWheel(Qt::KeyboardModifiers, short zDelta, const QPoint&); + virtual void OnLButtonDown(Qt::KeyboardModifiers, const QPoint&) {} + virtual void OnLButtonUp(Qt::KeyboardModifiers, const QPoint&) {} + virtual void OnRButtonDown(Qt::KeyboardModifiers, const QPoint&) {} + virtual void OnRButtonUp(Qt::KeyboardModifiers, const QPoint&) {} + virtual void OnMButtonDblClk(Qt::KeyboardModifiers, const QPoint&) {} + virtual void OnMButtonDown(Qt::KeyboardModifiers, const QPoint&) {} + virtual void OnMButtonUp(Qt::KeyboardModifiers, const QPoint&) {} + virtual void OnLButtonDblClk(Qt::KeyboardModifiers, const QPoint&) {} + virtual void OnRButtonDblClk(Qt::KeyboardModifiers, const QPoint&) {} + virtual void OnKeyDown([[maybe_unused]] UINT nChar, [[maybe_unused]] UINT nRepCnt, [[maybe_unused]] UINT nFlags) {} + virtual void OnKeyUp([[maybe_unused]] UINT nChar, [[maybe_unused]] UINT nRepCnt, [[maybe_unused]] UINT nFlags) {} #if defined(AZ_PLATFORM_WINDOWS) void OnRawInput(UINT wParam, HRAWINPUT lParam); #endif void OnSetCursor(); - virtual void BuildDragDropContext(AzQtComponents::ViewportDragContext& context, const QPoint& pt); + virtual void BuildDragDropContext( + AzQtComponents::ViewportDragContext& context, AzFramework::ViewportId viewportId, const QPoint& point); + void dragEnterEvent(QDragEnterEvent* event) override; void dragMoveEvent(QDragMoveEvent* event) override; void dragLeaveEvent(QDragLeaveEvent* event) override; diff --git a/Code/Editor/ViewportManipulatorController.cpp b/Code/Editor/ViewportManipulatorController.cpp index 1766945541..e46328eb65 100644 --- a/Code/Editor/ViewportManipulatorController.cpp +++ b/Code/Editor/ViewportManipulatorController.cpp @@ -8,13 +8,15 @@ #include "ViewportManipulatorController.h" +#include +#include +#include +#include +#include +#include #include #include -#include -#include -#include -#include -#include +#include #include @@ -87,8 +89,14 @@ namespace SandboxEditor } using InteractionBus = AzToolsFramework::EditorInteractionSystemViewportSelectionRequestBus; - using namespace AzToolsFramework::ViewportInteraction; using AzFramework::InputChannel; + using AzToolsFramework::ViewportInteraction::KeyboardModifier; + using AzToolsFramework::ViewportInteraction::MouseButton; + using AzToolsFramework::ViewportInteraction::MouseEvent; + using AzToolsFramework::ViewportInteraction::MouseInteraction; + using AzToolsFramework::ViewportInteraction::MouseInteractionEvent; + using AzToolsFramework::ViewportInteraction::ProjectedViewportRay; + using AzToolsFramework::ViewportInteraction::ViewportInteractionRequestBus; bool interactionHandled = false; float wheelDelta = 0.0f; @@ -117,16 +125,13 @@ namespace SandboxEditor aznumeric_cast(position->m_normalizedPosition.GetX() * windowSize.m_width), aznumeric_cast(position->m_normalizedPosition.GetY() * windowSize.m_height)); - m_mouseInteraction.m_mousePick.m_screenCoordinates = screenPoint; - AZStd::optional ray; + ProjectedViewportRay ray{}; ViewportInteractionRequestBus::EventResult( ray, GetViewportId(), &ViewportInteractionRequestBus::Events::ViewportScreenToWorldRay, screenPoint); - if (ray.has_value()) - { - m_mouseInteraction.m_mousePick.m_rayOrigin = ray.value().origin; - m_mouseInteraction.m_mousePick.m_rayDirection = ray.value().direction; - } + m_mouseInteraction.m_mousePick.m_rayOrigin = ray.origin; + m_mouseInteraction.m_mousePick.m_rayDirection = ray.direction; + m_mouseInteraction.m_mousePick.m_screenCoordinates = screenPoint; } eventType = MouseEvent::Move; @@ -152,7 +157,7 @@ namespace SandboxEditor // Only insert the double click timing once we're done processing events, to avoid a false IsDoubleClick positive if (finishedProcessingEvents) { - m_pendingDoubleClicks[mouseButton] = m_curTime; + m_pendingDoubleClicks[mouseButton] = { m_currentTime, m_mouseInteraction.m_mousePick.m_screenCoordinates }; } eventType = MouseEvent::Down; } @@ -160,8 +165,8 @@ namespace SandboxEditor else if (state == InputChannel::State::Ended) { // If we've actually logged a mouse down event, forward a mouse up event. - // This prevents corner cases like the context menu thinking it should be opened even though no one clicked in this viewport, - // due to RenderViewportWidget ensuring all controllers get InputChannel::State::Ended events. + // This prevents corner cases like the context menu thinking it should be opened even though no one clicked in this + // viewport, due to RenderViewportWidget ensuring all controllers get InputChannel::State::Ended events. if (m_mouseInteraction.m_mouseButtons.m_mouseButtons & mouseButtonValue) { // Erase the button from our state if we're done processing events. @@ -246,17 +251,22 @@ namespace SandboxEditor void ViewportManipulatorControllerInstance::UpdateViewport(const AzFramework::ViewportControllerUpdateEvent& event) { - m_curTime = event.m_time; + m_currentTime = event.m_time; } bool ViewportManipulatorControllerInstance::IsDoubleClick(AzToolsFramework::ViewportInteraction::MouseButton button) const { - auto clickIt = m_pendingDoubleClicks.find(button); - if (clickIt == m_pendingDoubleClicks.end()) + if (auto clickIt = m_pendingDoubleClicks.find(button); clickIt != m_pendingDoubleClicks.end()) { - return false; + const double doubleClickThresholdMilliseconds = qApp->doubleClickInterval(); + const bool insideTimeThreshold = + (m_currentTime.GetMilliseconds() - clickIt->second.m_time.GetMilliseconds()) < doubleClickThresholdMilliseconds; + const bool insideDistanceThreshold = + AzFramework::ScreenVectorLength(clickIt->second.m_position - m_mouseInteraction.m_mousePick.m_screenCoordinates) < + AzFramework::DefaultMouseMoveDeadZone; + return insideTimeThreshold && insideDistanceThreshold; } - const double doubleClickThresholdMilliseconds = qApp->doubleClickInterval(); - return (m_curTime.GetMilliseconds() - clickIt->second.GetMilliseconds()) < doubleClickThresholdMilliseconds; + + return false; } -} //namespace SandboxEditor +} // namespace SandboxEditor diff --git a/Code/Editor/ViewportManipulatorController.h b/Code/Editor/ViewportManipulatorController.h index d551eb3647..b9c359a544 100644 --- a/Code/Editor/ViewportManipulatorController.h +++ b/Code/Editor/ViewportManipulatorController.h @@ -39,8 +39,16 @@ namespace SandboxEditor static bool IsMouseMove(const AzFramework::InputChannel& inputChannel); static AzToolsFramework::ViewportInteraction::KeyboardModifier GetKeyboardModifier(const AzFramework::InputChannel& inputChannel); + //! Represents the time and location of a click. + struct ClickEvent + { + AZ::ScriptTimePoint m_time; + AzFramework::ScreenPoint m_position; + }; + AzToolsFramework::ViewportInteraction::MouseInteraction m_mouseInteraction; - AZStd::unordered_map m_pendingDoubleClicks; - AZ::ScriptTimePoint m_curTime; + AZStd::unordered_map m_pendingDoubleClicks; + + AZ::ScriptTimePoint m_currentTime; }; } // namespace SandboxEditor diff --git a/Code/Editor/ViewportTitleDlg.cpp b/Code/Editor/ViewportTitleDlg.cpp index 75d16e9a40..49459fad0f 100644 --- a/Code/Editor/ViewportTitleDlg.cpp +++ b/Code/Editor/ViewportTitleDlg.cpp @@ -138,14 +138,11 @@ CViewportTitleDlg::CViewportTitleDlg(QWidget* pParent) connect(this, &CViewportTitleDlg::ActionTriggered, MainWindow::instance()->GetActionManager(), &ActionManager::ActionTriggered); - AZ::VR::VREventBus::Handler::BusConnect(); - OnInitDialog(); } CViewportTitleDlg::~CViewportTitleDlg() { - AZ::VR::VREventBus::Handler::BusDisconnect(); GetISystem()->GetISystemEventDispatcher()->RemoveListener(this); GetIEditor()->UnregisterNotifyListener(this); @@ -236,10 +233,6 @@ void CViewportTitleDlg::SetupOverflowMenu() connect(m_audioMuteAction, &QAction::triggered, this, &CViewportTitleDlg::OnBnClickedMuteAudio); overFlowMenu->addAction(m_audioMuteAction); - m_enableVRAction = new QAction("Enable VR Preview", overFlowMenu); - connect(m_enableVRAction, &QAction::triggered, this, &CViewportTitleDlg::OnBnClickedEnableVR); - overFlowMenu->addAction(m_enableVRAction); - overFlowMenu->addSeparator(); m_enableGridSnappingAction = new QAction("Enable Grid Snapping", overFlowMenu); @@ -305,16 +298,6 @@ void CViewportTitleDlg::OnInitDialog() connect(displayInfoHelper, &CViewportTitleDlgDisplayInfoHelper::ViewportInfoStatusUpdated, this, &CViewportTitleDlg::UpdateDisplayInfo); UpdateDisplayInfo(); - // This is here just in case this class hasn't been created before - // a VR headset was initialized - m_enableVRAction->setEnabled(false); - if (AZ::VR::HMDDeviceRequestBus::GetTotalNumOfEventHandlers() != 0) - { - m_enableVRAction->setEnabled(true); - } - - AZ::VR::VREventBus::Handler::BusConnect(); - QFontMetrics metrics({}); int width = static_cast(metrics.boundingRect("-9999.99").width() * m_fieldWidthMultiplier); @@ -931,23 +914,6 @@ void CViewportTitleDlg::UpdateMuteActionText() } } -void CViewportTitleDlg::OnHMDInitialized() -{ - m_enableVRAction->setEnabled(true); -} - -void CViewportTitleDlg::OnHMDShutdown() -{ - m_enableVRAction->setEnabled(false); -} - -void CViewportTitleDlg::OnBnClickedEnableVR() -{ - gSettings.bEnableGameModeVR = !gSettings.bEnableGameModeVR; - - m_enableVRAction->setText(gSettings.bEnableGameModeVR ? tr("Disable VR Preview") : tr("Enable VR Preview")); -} - inline double Round(double fVal, double fStep) { if (fStep > 0.f) diff --git a/Code/Editor/ViewportTitleDlg.h b/Code/Editor/ViewportTitleDlg.h index 6996fe7750..a3e19837b4 100644 --- a/Code/Editor/ViewportTitleDlg.h +++ b/Code/Editor/ViewportTitleDlg.h @@ -22,7 +22,6 @@ #include #include -#include #endif // CViewportTitleDlg dialog @@ -44,7 +43,6 @@ class CViewportTitleDlg : public QWidget , public IEditorNotifyListener , public ISystemEventListener - , public AZ::VR::VREventBus::Handler { Q_OBJECT public: @@ -85,13 +83,6 @@ protected: void OnToggleHelpers(); void UpdateDisplayInfo(); - ////////////////////////////////////////////////////////////////////////// - /// VR Event Bus Implementation - ////////////////////////////////////////////////////////////////////////// - void OnHMDInitialized() override; - void OnHMDShutdown() override; - ////////////////////////////////////////////////////////////////////////// - void SetupCameraDropdownMenu(); void SetupResolutionDropdownMenu(); void SetupViewportInformationMenu(); @@ -140,7 +131,6 @@ protected: void OnBnClickedGotoPosition(); void OnBnClickedMuteAudio(); - void OnBnClickedEnableVR(); void UpdateMuteActionText(); @@ -168,7 +158,6 @@ protected: QAction* m_fullInformationAction = nullptr; QAction* m_compactInformationAction = nullptr; QAction* m_audioMuteAction = nullptr; - QAction* m_enableVRAction = nullptr; QAction* m_enableGridSnappingAction = nullptr; QAction* m_enableAngleSnappingAction = nullptr; QComboBox* m_cameraSpeed = nullptr; diff --git a/Code/Editor/WelcomeScreen/WelcomeScreenDialog.cpp b/Code/Editor/WelcomeScreen/WelcomeScreenDialog.cpp index 17f576b5ee..89dfcaffd1 100644 --- a/Code/Editor/WelcomeScreen/WelcomeScreenDialog.cpp +++ b/Code/Editor/WelcomeScreen/WelcomeScreenDialog.cpp @@ -25,8 +25,6 @@ #include -// AzFramework -#include // AzToolsFramework #include @@ -173,9 +171,6 @@ void WelcomeScreenDialog::SetRecentFileList(RecentFileList* pList) m_pRecentList = pList; - const char* engineRoot; - EBUS_EVENT_RESULT(engineRoot, AzFramework::ApplicationRequests::Bus, GetEngineRoot); - auto projectPath = AZ::Utils::GetProjectPath(); QString gamePath{projectPath.c_str()}; Path::ConvertSlashToBackSlash(gamePath); diff --git a/Code/Framework/AtomCore/Tests/Main.cpp b/Code/Framework/AtomCore/Tests/Main.cpp index 29ef408551..eb4c6bc835 100644 --- a/Code/Framework/AtomCore/Tests/Main.cpp +++ b/Code/Framework/AtomCore/Tests/Main.cpp @@ -7,7 +7,6 @@ */ -#include #include #include #include diff --git a/Code/Framework/AzCore/AzCore/Asset/AssetCommon.cpp b/Code/Framework/AzCore/AzCore/Asset/AssetCommon.cpp index fdc3053b5c..bf3ad20768 100644 --- a/Code/Framework/AzCore/AzCore/Asset/AssetCommon.cpp +++ b/Code/Framework/AzCore/AzCore/Asset/AssetCommon.cpp @@ -14,453 +14,450 @@ #include #include -namespace AZ +namespace AZ::Data { - namespace Data + AssetFilterInfo::AssetFilterInfo(const AssetId& id, const AssetType& assetType, AssetLoadBehavior loadBehavior) + : m_assetId(id) + , m_assetType(assetType) + , m_loadBehavior(loadBehavior) { - AssetFilterInfo::AssetFilterInfo(const AssetId& id, const AssetType& assetType, AssetLoadBehavior loadBehavior) - : m_assetId(id) - , m_assetType(assetType) - , m_loadBehavior(loadBehavior) + } + + AssetFilterInfo::AssetFilterInfo(const Asset& asset) + : m_assetId(asset.GetId()) + , m_assetType(asset.GetType()) + , m_loadBehavior(asset.GetAutoLoadBehavior()) + { + } + + + AssetId AssetId::CreateString(AZStd::string_view input) + { + size_t separatorIdx = input.find(':'); + if (separatorIdx == AZStd::string_view::npos) { + return AssetId(); } - AssetFilterInfo::AssetFilterInfo(const Asset& asset) - : m_assetId(asset.GetId()) - , m_assetType(asset.GetType()) - , m_loadBehavior(asset.GetAutoLoadBehavior()) + AssetId assetId; + assetId.m_guid = Uuid::CreateString(input.data(), separatorIdx); + if (assetId.m_guid.IsNull()) { + return AssetId(); } + assetId.m_subId = strtoul(&input[separatorIdx + 1], nullptr, 16); - AssetId AssetId::CreateString(AZStd::string_view input) + return assetId; + } + + void AssetId::Reflect(AZ::ReflectContext* context) + { + if (SerializeContext* serializeContext = azrtti_cast(context)) { - size_t separatorIdx = input.find(':'); - if (separatorIdx == AZStd::string_view::npos) - { - return AssetId(); - } - - AssetId assetId; - assetId.m_guid = Uuid::CreateString(input.data(), separatorIdx); - if (assetId.m_guid.IsNull()) - { - return AssetId(); - } - - assetId.m_subId = strtoul(&input[separatorIdx + 1], nullptr, 16); - - return assetId; + serializeContext->Class() + ->Version(1) + ->Field("guid", &Data::AssetId::m_guid) + ->Field("subId", &Data::AssetId::m_subId) + ; } - void AssetId::Reflect(AZ::ReflectContext* context) + if (BehaviorContext* behaviorContext = azrtti_cast(context)) { - if (SerializeContext* serializeContext = azrtti_cast(context)) - { - serializeContext->Class() - ->Version(1) - ->Field("guid", &Data::AssetId::m_guid) - ->Field("subId", &Data::AssetId::m_subId) - ; - } + behaviorContext->Class() + ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common) + ->Attribute(AZ::Script::Attributes::Category, "Asset") + ->Attribute(AZ::Script::Attributes::Module, "asset") + ->Constructor() + ->Constructor() + ->Method("CreateString", &Data::AssetId::CreateString) + ->Method("IsValid", &Data::AssetId::IsValid) + ->Attribute(AZ::Script::Attributes::Alias, "is_valid") + ->Method("ToString", [](const Data::AssetId* self) { return self->ToString(); }) + ->Attribute(AZ::Script::Attributes::Alias, "to_string") + ->Method("IsEqual", [](const Data::AssetId& self, const Data::AssetId& other) { return self == other; }) + ->Attribute(AZ::Script::Attributes::Alias, "is_equal") + ->Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::Equal) + ; - if (BehaviorContext* behaviorContext = azrtti_cast(context)) - { - behaviorContext->Class() - ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common) - ->Attribute(AZ::Script::Attributes::Category, "Asset") - ->Attribute(AZ::Script::Attributes::Module, "asset") - ->Constructor() - ->Constructor() - ->Method("CreateString", &Data::AssetId::CreateString) - ->Method("IsValid", &Data::AssetId::IsValid) - ->Attribute(AZ::Script::Attributes::Alias, "is_valid") - ->Method("ToString", [](const Data::AssetId* self) { return self->ToString(); }) - ->Attribute(AZ::Script::Attributes::Alias, "to_string") - ->Method("IsEqual", [](const Data::AssetId& self, const Data::AssetId& other) { return self == other; }) - ->Attribute(AZ::Script::Attributes::Alias, "is_equal") - ->Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::Equal) - ; + behaviorContext->Class() + ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common) + ->Attribute(AZ::Script::Attributes::Category, "Asset") + ->Attribute(AZ::Script::Attributes::Module, "asset") + ->Property("assetId", BehaviorValueGetter(&Data::AssetInfo::m_assetId), nullptr) + ->Property("assetType", BehaviorValueGetter(&Data::AssetInfo::m_assetType), nullptr) + ->Property("sizeBytes", BehaviorValueGetter(&Data::AssetInfo::m_sizeBytes), nullptr) + ->Property("relativePath", BehaviorValueGetter(&Data::AssetInfo::m_relativePath), nullptr) + ; + } + } - behaviorContext->Class() - ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common) - ->Attribute(AZ::Script::Attributes::Category, "Asset") - ->Attribute(AZ::Script::Attributes::Module, "asset") - ->Property("assetId", BehaviorValueGetter(&Data::AssetInfo::m_assetId), nullptr) - ->Property("assetType", BehaviorValueGetter(&Data::AssetInfo::m_assetType), nullptr) - ->Property("sizeBytes", BehaviorValueGetter(&Data::AssetInfo::m_sizeBytes), nullptr) - ->Property("relativePath", BehaviorValueGetter(&Data::AssetInfo::m_relativePath), nullptr) - ; - } + namespace AssetInternal + { + Asset FindOrCreateAsset(const AssetId& id, const AssetType& type, AssetLoadBehavior assetReferenceLoadBehavior) + { + return AssetManager::Instance().FindOrCreateAsset(id, type, assetReferenceLoadBehavior); } - namespace AssetInternal + Asset GetAsset(const AssetId& id, const AssetType& type, AssetLoadBehavior assetReferenceLoadBehavior, + const AssetLoadParameters& loadParams) { - Asset FindOrCreateAsset(const AssetId& id, const AssetType& type, AssetLoadBehavior assetReferenceLoadBehavior) - { - return AssetManager::Instance().FindOrCreateAsset(id, type, assetReferenceLoadBehavior); - } - - Asset GetAsset(const AssetId& id, const AssetType& type, AssetLoadBehavior assetReferenceLoadBehavior, - const AssetLoadParameters& loadParams) - { - return AssetManager::Instance().GetAsset(id, type, assetReferenceLoadBehavior, loadParams); - } - - AssetData::AssetStatus BlockUntilLoadComplete(const Asset& asset) - { - return AssetManager::Instance().BlockUntilLoadComplete(asset); - } - - void UpdateAssetInfo(AssetId& id, AZStd::string& assetHint) - { - // it is possible that the assetID given is legacy / old and we have a new assetId we can use instead for it. - // in that case, upgrade the AssetID to the new one, so that future saves are in the new format. - // this function should only be invoked if the feature is turned on in the asset manager as it can be (slightly) expensive - - if ((!AssetManager::IsReady()) || (!AssetManager::Instance().GetAssetInfoUpgradingEnabled())) - { - return; - } - - AZ::Data::AssetInfo assetInfo; - AZ::Data::AssetCatalogRequestBus::BroadcastResult(assetInfo, &AZ::Data::AssetCatalogRequests::GetAssetInfoById, id); - if (assetInfo.m_assetId.IsValid()) - { - id = assetInfo.m_assetId; - if (!assetInfo.m_relativePath.empty()) - { - assetHint = assetInfo.m_relativePath; - } - } - } - - bool ReloadAsset(AssetData* assetData, AssetLoadBehavior assetReferenceLoadBehavior) - { - AssetManager::Instance().ReloadAsset(assetData->GetId(), assetReferenceLoadBehavior); - return true; - } - - bool SaveAsset(AssetData* assetData, AssetLoadBehavior assetReferenceLoadBehavior) - { - AssetManager::Instance().SaveAsset({ assetData, assetReferenceLoadBehavior }); - return true; - } - - Asset GetAssetData(const AssetId& id, AssetLoadBehavior assetReferenceLoadBehavior) - { - if (AssetManager::IsReady()) - { - AZStd::lock_guard assetLock(AssetManager::Instance().m_assetMutex); - auto it = AssetManager::Instance().m_assets.find(id); - if (it != AssetManager::Instance().m_assets.end()) - { - return { it->second, assetReferenceLoadBehavior }; - } - } - return {}; - } - - AssetId ResolveAssetId(const AssetId& id) - { - AZ::Data::AssetInfo assetInfo; - AZ::Data::AssetCatalogRequestBus::BroadcastResult(assetInfo, &AZ::Data::AssetCatalogRequests::GetAssetInfoById, id); - if (assetInfo.m_assetId.IsValid()) - { - return assetInfo.m_assetId; - } - else - { - return id; - } - - } + return AssetManager::Instance().GetAsset(id, type, assetReferenceLoadBehavior, loadParams); } - AssetData::~AssetData() + AssetData::AssetStatus BlockUntilLoadComplete(const Asset& asset) { - UnregisterWithHandler(); + return AssetManager::Instance().BlockUntilLoadComplete(asset); } - void AssetData::Reflect(AZ::ReflectContext* context) + void UpdateAssetInfo(AssetId& id, AZStd::string& assetHint) { - if (SerializeContext* serializeContext = azrtti_cast(context)) + // it is possible that the assetID given is legacy / old and we have a new assetId we can use instead for it. + // in that case, upgrade the AssetID to the new one, so that future saves are in the new format. + // this function should only be invoked if the feature is turned on in the asset manager as it can be (slightly) expensive + + if ((!AssetManager::IsReady()) || (!AssetManager::Instance().GetAssetInfoUpgradingEnabled())) { - serializeContext->Class() - ->Version(1) - ; - } - - if (BehaviorContext* behaviorContext = azrtti_cast(context)) - { - behaviorContext->Class("AssetData") - ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common) - ->Attribute(AZ::Script::Attributes::Category, "Asset") - ->Attribute(AZ::Script::Attributes::Module, "asset") - ->Method("IsReady", &AssetData::IsReady) - ->Attribute(AZ::Script::Attributes::Alias, "is_ready") - ->Method("IsError", &AssetData::IsError) - ->Attribute(AZ::Script::Attributes::Alias, "is_error") - ->Method("IsLoading", &AssetData::IsLoading) - ->Attribute(AZ::Script::Attributes::Alias, "is_loading") - ->Method("GetId", &AssetData::GetId) - ->Attribute(AZ::Script::Attributes::Alias, "get_id") - ->Method("GetUseCount", &AssetData::GetUseCount) - ->Attribute(AZ::Script::Attributes::Alias, "get_use_count") - ; - } - } - - void AssetData::Acquire() - { - AZ_Assert(m_useCount >= 0, "AssetData has been deleted"); - - AcquireWeak(); - ++m_useCount; - } - - void AssetData::Release() - { - AZ_Assert(m_useCount > 0, "Usecount is already 0!"); - - if (m_useCount.fetch_sub(1) == 1) - { - if (AssetManager::IsReady()) - { - AssetManager::Instance().OnAssetUnused(this); - } - else - { - AZ_Assert(false, "Attempting to release asset after AssetManager has been destroyed!"); - } - } - - ReleaseWeak(); - } - - void AssetData::AcquireWeak() - { - AZ_Assert(m_useCount >= 0, "AssetData has been deleted"); - ++m_weakUseCount; - } - - void AssetData::ReleaseWeak() - { - AZ_Assert(m_weakUseCount > 0, "WeakUseCount is already 0"); - - AssetId assetId = m_assetId; - int creationToken = m_creationToken; - AssetType assetType = GetType(); - bool removeFromHash = IsRegisterReadonlyAndShareable(); - // default creation token implies that the asset was not created by the asset manager and therefore it cannot be in the asset map. - removeFromHash = creationToken == s_defaultCreationToken ? false : removeFromHash; - - if (m_weakUseCount.fetch_sub(1) == 1) - { - if (AssetManager::IsReady()) - { - AssetManager::Instance().ReleaseAsset(this, assetId, assetType, removeFromHash, creationToken); - } - else - { - AZ_Assert(false, "Attempting to release asset after AssetManager has been destroyed!"); - } - } - } - - bool AssetData::IsLoading(bool includeQueued) const - { - auto curStatus = GetStatus(); - return(curStatus == AssetStatus::Loading || curStatus == AssetStatus::LoadedPreReady || curStatus==AssetStatus::StreamReady || - (includeQueued && curStatus == AssetStatus::Queued)); - } - - void AssetData::RegisterWithHandler(AssetHandler* handler) - { - if (!handler) - { - AZ_Error("AssetData", false, "No handler to register with"); return; } - m_registeredHandler = handler; - } - void AssetData::UnregisterWithHandler() - { - if (m_registeredHandler) + AZ::Data::AssetInfo assetInfo; + AZ::Data::AssetCatalogRequestBus::BroadcastResult(assetInfo, &AZ::Data::AssetCatalogRequests::GetAssetInfoById, id); + if (assetInfo.m_assetId.IsValid()) { - m_registeredHandler = nullptr; - } - } - - bool AssetData::GetFlag(const AssetDataFlags& checkFlag) const - { - return m_flags[aznumeric_cast(checkFlag)]; - } - - void AssetData::SetFlag(const AssetDataFlags& checkFlag, bool setValue) - { - m_flags.set(aznumeric_cast(checkFlag), setValue); - } - - bool AssetData::GetRequeue() const - { - return GetFlag(AssetDataFlags::Requeue); - } - void AssetData::SetRequeue(bool requeue) - { - SetFlag(AssetDataFlags::Requeue, requeue); - } - - void AssetBusCallbacks::SetCallbacks(const AssetReadyCB& readyCB, const AssetMovedCB& movedCB, const AssetReloadedCB& reloadedCB, - const AssetSavedCB& savedCB, const AssetUnloadedCB& unloadedCB, const AssetErrorCB& errorCB, const AssetCanceledCB& cancelCB) - { - m_onAssetReadyCB = readyCB; - m_onAssetMovedCB = movedCB; - m_onAssetReloadedCB = reloadedCB; - m_onAssetSavedCB = savedCB; - m_onAssetUnloadedCB = unloadedCB; - m_onAssetErrorCB = errorCB; - m_onAssetCanceledCB = cancelCB; - } - - void AssetBusCallbacks::ClearCallbacks() - { - SetCallbacks(AssetBusCallbacks::AssetReadyCB(), - AssetBusCallbacks::AssetMovedCB(), - AssetBusCallbacks::AssetReloadedCB(), - AssetBusCallbacks::AssetSavedCB(), - AssetBusCallbacks::AssetUnloadedCB(), - AssetBusCallbacks::AssetErrorCB(), - AssetBusCallbacks::AssetCanceledCB()); - } - - - void AssetBusCallbacks::SetOnAssetReadyCallback(const AssetReadyCB& readyCB) - { - m_onAssetReadyCB = readyCB; - } - - void AssetBusCallbacks::SetOnAssetMovedCallback(const AssetMovedCB& movedCB) - { - m_onAssetMovedCB = movedCB; - } - - void AssetBusCallbacks::SetOnAssetReloadedCallback(const AssetReloadedCB& reloadedCB) - { - m_onAssetReloadedCB = reloadedCB; - } - - void AssetBusCallbacks::SetOnAssetSavedCallback(const AssetSavedCB& savedCB) - { - m_onAssetSavedCB = savedCB; - } - - void AssetBusCallbacks::SetOnAssetUnloadedCallback(const AssetUnloadedCB& unloadedCB) - { - m_onAssetUnloadedCB = unloadedCB; - } - - void AssetBusCallbacks::SetOnAssetErrorCallback(const AssetErrorCB& errorCB) - { - m_onAssetErrorCB = errorCB; - } - - void AssetBusCallbacks::SetOnAssetCanceledCallback(const AssetCanceledCB& cancelCB) - { - m_onAssetCanceledCB = cancelCB; - } - - void AssetBusCallbacks::OnAssetReady(Asset asset) - { - if (m_onAssetReadyCB) - { - m_onAssetReadyCB(asset, *this); - } - } - - void AssetBusCallbacks::OnAssetMoved(Asset asset, void* oldDataPointer) - { - if (m_onAssetMovedCB) - { - m_onAssetMovedCB(asset, oldDataPointer, *this); - } - } - - void AssetBusCallbacks::OnAssetReloaded(Asset asset) - { - if (m_onAssetReloadedCB) - { - m_onAssetReloadedCB(asset, *this); - } - } - - void AssetBusCallbacks::OnAssetSaved(Asset asset, bool isSuccessful) - { - if (m_onAssetSavedCB) - { - m_onAssetSavedCB(asset, isSuccessful, *this); - } - } - - void AssetBusCallbacks::OnAssetUnloaded(const AssetId assetId, const AssetType assetType) - { - if (m_onAssetUnloadedCB) - { - m_onAssetUnloadedCB(assetId, assetType, *this); - } - } - - void AssetBusCallbacks::OnAssetError(Asset asset) - { - if (m_onAssetErrorCB) - { - m_onAssetErrorCB(asset, *this); - } - } - - void AssetBusCallbacks::OnAssetCanceled(const AssetId assetId) - { - if (m_onAssetCanceledCB) - { - m_onAssetCanceledCB(assetId, *this); - } - } - - /*static*/ bool AssetFilterNoAssetLoading([[maybe_unused]] const AssetFilterInfo& filterInfo) - { - return false; - } - namespace ProductDependencyInfo - { - AZ::Data::AssetLoadBehavior LoadBehaviorFromFlags(const ProductDependencyFlags& dependencyFlags) - { - AZ::u8 loadBehaviorValue = 0; - for (AZ::u8 thisFlag = aznumeric_cast(ProductDependencyFlagBits::LoadBehaviorLow); - thisFlag <= aznumeric_cast(ProductDependencyFlagBits::LoadBehaviorHigh); ++thisFlag) + id = assetInfo.m_assetId; + if (!assetInfo.m_relativePath.empty()) { - if (dependencyFlags[thisFlag]) - { - loadBehaviorValue |= (1 << thisFlag); - } + assetHint = assetInfo.m_relativePath; } - return static_cast(loadBehaviorValue); - } - - ProductDependencyFlags CreateFlags(AZ::Data::AssetLoadBehavior autoLoadBehavior) - { - AZ::Data::ProductDependencyInfo::ProductDependencyFlags returnFlags; - AZ::u8 loadBehavior = aznumeric_caster(autoLoadBehavior); - for (AZ::u8 thisFlag = aznumeric_cast(ProductDependencyFlagBits::LoadBehaviorLow); - thisFlag <= aznumeric_cast(ProductDependencyFlagBits::LoadBehaviorHigh); ++thisFlag) - { - if (loadBehavior & (1 << thisFlag)) - { - returnFlags[thisFlag] = true; - } - } - return returnFlags; } } - } // namespace Data -} // namespace AZ + + bool ReloadAsset(AssetData* assetData, AssetLoadBehavior assetReferenceLoadBehavior) + { + AssetManager::Instance().ReloadAsset(assetData->GetId(), assetReferenceLoadBehavior); + return true; + } + + bool SaveAsset(AssetData* assetData, AssetLoadBehavior assetReferenceLoadBehavior) + { + AssetManager::Instance().SaveAsset({ assetData, assetReferenceLoadBehavior }); + return true; + } + + Asset GetAssetData(const AssetId& id, AssetLoadBehavior assetReferenceLoadBehavior) + { + if (AssetManager::IsReady()) + { + AZStd::lock_guard assetLock(AssetManager::Instance().m_assetMutex); + auto it = AssetManager::Instance().m_assets.find(id); + if (it != AssetManager::Instance().m_assets.end()) + { + return { it->second, assetReferenceLoadBehavior }; + } + } + return {}; + } + + AssetId ResolveAssetId(const AssetId& id) + { + AZ::Data::AssetInfo assetInfo; + AZ::Data::AssetCatalogRequestBus::BroadcastResult(assetInfo, &AZ::Data::AssetCatalogRequests::GetAssetInfoById, id); + if (assetInfo.m_assetId.IsValid()) + { + return assetInfo.m_assetId; + } + else + { + return id; + } + + } + } + + AssetData::~AssetData() + { + UnregisterWithHandler(); + } + + void AssetData::Reflect(AZ::ReflectContext* context) + { + if (SerializeContext* serializeContext = azrtti_cast(context)) + { + serializeContext->Class() + ->Version(1) + ; + } + + if (BehaviorContext* behaviorContext = azrtti_cast(context)) + { + behaviorContext->Class("AssetData") + ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common) + ->Attribute(AZ::Script::Attributes::Category, "Asset") + ->Attribute(AZ::Script::Attributes::Module, "asset") + ->Method("IsReady", &AssetData::IsReady) + ->Attribute(AZ::Script::Attributes::Alias, "is_ready") + ->Method("IsError", &AssetData::IsError) + ->Attribute(AZ::Script::Attributes::Alias, "is_error") + ->Method("IsLoading", &AssetData::IsLoading) + ->Attribute(AZ::Script::Attributes::Alias, "is_loading") + ->Method("GetId", &AssetData::GetId) + ->Attribute(AZ::Script::Attributes::Alias, "get_id") + ->Method("GetUseCount", &AssetData::GetUseCount) + ->Attribute(AZ::Script::Attributes::Alias, "get_use_count") + ; + } + } + + void AssetData::Acquire() + { + AZ_Assert(m_useCount >= 0, "AssetData has been deleted"); + + AcquireWeak(); + ++m_useCount; + } + + void AssetData::Release() + { + AZ_Assert(m_useCount > 0, "Usecount is already 0!"); + + if (m_useCount.fetch_sub(1) == 1) + { + if (AssetManager::IsReady()) + { + AssetManager::Instance().OnAssetUnused(this); + } + else + { + AZ_Assert(false, "Attempting to release asset after AssetManager has been destroyed!"); + } + } + + ReleaseWeak(); + } + + void AssetData::AcquireWeak() + { + AZ_Assert(m_useCount >= 0, "AssetData has been deleted"); + ++m_weakUseCount; + } + + void AssetData::ReleaseWeak() + { + AZ_Assert(m_weakUseCount > 0, "WeakUseCount is already 0"); + + AssetId assetId = m_assetId; + int creationToken = m_creationToken; + AssetType assetType = GetType(); + bool removeFromHash = IsRegisterReadonlyAndShareable(); + // default creation token implies that the asset was not created by the asset manager and therefore it cannot be in the asset map. + removeFromHash = creationToken == s_defaultCreationToken ? false : removeFromHash; + + if (m_weakUseCount.fetch_sub(1) == 1) + { + if (AssetManager::IsReady()) + { + AssetManager::Instance().ReleaseAsset(this, assetId, assetType, removeFromHash, creationToken); + } + else + { + AZ_Assert(false, "Attempting to release asset after AssetManager has been destroyed!"); + } + } + } + + bool AssetData::IsLoading(bool includeQueued) const + { + auto curStatus = GetStatus(); + return(curStatus == AssetStatus::Loading || curStatus == AssetStatus::LoadedPreReady || curStatus==AssetStatus::StreamReady || + (includeQueued && curStatus == AssetStatus::Queued)); + } + + void AssetData::RegisterWithHandler(AssetHandler* handler) + { + if (!handler) + { + AZ_Error("AssetData", false, "No handler to register with"); + return; + } + m_registeredHandler = handler; + } + + void AssetData::UnregisterWithHandler() + { + if (m_registeredHandler) + { + m_registeredHandler = nullptr; + } + } + + bool AssetData::GetFlag(const AssetDataFlags& checkFlag) const + { + return m_flags[aznumeric_cast(checkFlag)]; + } + + void AssetData::SetFlag(const AssetDataFlags& checkFlag, bool setValue) + { + m_flags.set(aznumeric_cast(checkFlag), setValue); + } + + bool AssetData::GetRequeue() const + { + return GetFlag(AssetDataFlags::Requeue); + } + void AssetData::SetRequeue(bool requeue) + { + SetFlag(AssetDataFlags::Requeue, requeue); + } + + void AssetBusCallbacks::SetCallbacks(const AssetReadyCB& readyCB, const AssetMovedCB& movedCB, const AssetReloadedCB& reloadedCB, + const AssetSavedCB& savedCB, const AssetUnloadedCB& unloadedCB, const AssetErrorCB& errorCB, const AssetCanceledCB& cancelCB) + { + m_onAssetReadyCB = readyCB; + m_onAssetMovedCB = movedCB; + m_onAssetReloadedCB = reloadedCB; + m_onAssetSavedCB = savedCB; + m_onAssetUnloadedCB = unloadedCB; + m_onAssetErrorCB = errorCB; + m_onAssetCanceledCB = cancelCB; + } + + void AssetBusCallbacks::ClearCallbacks() + { + SetCallbacks(AssetBusCallbacks::AssetReadyCB(), + AssetBusCallbacks::AssetMovedCB(), + AssetBusCallbacks::AssetReloadedCB(), + AssetBusCallbacks::AssetSavedCB(), + AssetBusCallbacks::AssetUnloadedCB(), + AssetBusCallbacks::AssetErrorCB(), + AssetBusCallbacks::AssetCanceledCB()); + } + + + void AssetBusCallbacks::SetOnAssetReadyCallback(const AssetReadyCB& readyCB) + { + m_onAssetReadyCB = readyCB; + } + + void AssetBusCallbacks::SetOnAssetMovedCallback(const AssetMovedCB& movedCB) + { + m_onAssetMovedCB = movedCB; + } + + void AssetBusCallbacks::SetOnAssetReloadedCallback(const AssetReloadedCB& reloadedCB) + { + m_onAssetReloadedCB = reloadedCB; + } + + void AssetBusCallbacks::SetOnAssetSavedCallback(const AssetSavedCB& savedCB) + { + m_onAssetSavedCB = savedCB; + } + + void AssetBusCallbacks::SetOnAssetUnloadedCallback(const AssetUnloadedCB& unloadedCB) + { + m_onAssetUnloadedCB = unloadedCB; + } + + void AssetBusCallbacks::SetOnAssetErrorCallback(const AssetErrorCB& errorCB) + { + m_onAssetErrorCB = errorCB; + } + + void AssetBusCallbacks::SetOnAssetCanceledCallback(const AssetCanceledCB& cancelCB) + { + m_onAssetCanceledCB = cancelCB; + } + + void AssetBusCallbacks::OnAssetReady(Asset asset) + { + if (m_onAssetReadyCB) + { + m_onAssetReadyCB(asset, *this); + } + } + + void AssetBusCallbacks::OnAssetMoved(Asset asset, void* oldDataPointer) + { + if (m_onAssetMovedCB) + { + m_onAssetMovedCB(asset, oldDataPointer, *this); + } + } + + void AssetBusCallbacks::OnAssetReloaded(Asset asset) + { + if (m_onAssetReloadedCB) + { + m_onAssetReloadedCB(asset, *this); + } + } + + void AssetBusCallbacks::OnAssetSaved(Asset asset, bool isSuccessful) + { + if (m_onAssetSavedCB) + { + m_onAssetSavedCB(asset, isSuccessful, *this); + } + } + + void AssetBusCallbacks::OnAssetUnloaded(const AssetId assetId, const AssetType assetType) + { + if (m_onAssetUnloadedCB) + { + m_onAssetUnloadedCB(assetId, assetType, *this); + } + } + + void AssetBusCallbacks::OnAssetError(Asset asset) + { + if (m_onAssetErrorCB) + { + m_onAssetErrorCB(asset, *this); + } + } + + void AssetBusCallbacks::OnAssetCanceled(const AssetId assetId) + { + if (m_onAssetCanceledCB) + { + m_onAssetCanceledCB(assetId, *this); + } + } + + /*static*/ bool AssetFilterNoAssetLoading([[maybe_unused]] const AssetFilterInfo& filterInfo) + { + return false; + } + namespace ProductDependencyInfo + { + AZ::Data::AssetLoadBehavior LoadBehaviorFromFlags(const ProductDependencyFlags& dependencyFlags) + { + AZ::u8 loadBehaviorValue = 0; + for (AZ::u8 thisFlag = aznumeric_cast(ProductDependencyFlagBits::LoadBehaviorLow); + thisFlag <= aznumeric_cast(ProductDependencyFlagBits::LoadBehaviorHigh); ++thisFlag) + { + if (dependencyFlags[thisFlag]) + { + loadBehaviorValue |= (1 << thisFlag); + } + } + return static_cast(loadBehaviorValue); + } + + ProductDependencyFlags CreateFlags(AZ::Data::AssetLoadBehavior autoLoadBehavior) + { + AZ::Data::ProductDependencyInfo::ProductDependencyFlags returnFlags; + AZ::u8 loadBehavior = aznumeric_caster(autoLoadBehavior); + for (AZ::u8 thisFlag = aznumeric_cast(ProductDependencyFlagBits::LoadBehaviorLow); + thisFlag <= aznumeric_cast(ProductDependencyFlagBits::LoadBehaviorHigh); ++thisFlag) + { + if (loadBehavior & (1 << thisFlag)) + { + returnFlags[thisFlag] = true; + } + } + return returnFlags; + } + } +} // namespace AZ::Data diff --git a/Code/Framework/AzCore/AzCore/Asset/AssetCommon.h b/Code/Framework/AzCore/AzCore/Asset/AssetCommon.h index 0c8e5209ca..c45bb21c6d 100644 --- a/Code/Framework/AzCore/AzCore/Asset/AssetCommon.h +++ b/Code/Framework/AzCore/AzCore/Asset/AssetCommon.h @@ -556,16 +556,24 @@ namespace AZ Asset assetData(AssetInternal::GetAssetData(actualId, AZ::Data::AssetLoadBehavior::Default)); if (assetData) { - auto curStatus = assetData->GetStatus(); + auto isReady = assetData->GetStatus() == AssetData::AssetStatus::Ready; bool isError = assetData->IsError(); - connectLock.unlock(); - if (curStatus == AssetData::AssetStatus::Ready) + + if (isReady || isError) { - handler->OnAssetReady(assetData); - } - else if (isError) - { - handler->OnAssetError(assetData); + connectLock.unlock(); + + if (isReady) + { + handler->OnAssetReady(assetData); + } + else if (isError) + { + handler->OnAssetError(assetData); + } + + // Lock the mutex again since some destructors will be modifying the context afterwards + connectLock.lock(); } } } diff --git a/Code/Framework/AzCore/AzCore/Asset/AssetContainer.cpp b/Code/Framework/AzCore/AzCore/Asset/AssetContainer.cpp index ce15c7bc4e..bab161fc0a 100644 --- a/Code/Framework/AzCore/AzCore/Asset/AssetContainer.cpp +++ b/Code/Framework/AzCore/AzCore/Asset/AssetContainer.cpp @@ -11,466 +11,469 @@ #include #include -namespace AZ +namespace AZ::Data { - namespace Data + AssetContainer::AssetContainer(Asset rootAsset, const AssetLoadParameters& loadParams) { - AssetContainer::AssetContainer(Asset rootAsset, const AssetLoadParameters& loadParams) - { - m_rootAsset = AssetInternal::WeakAsset(rootAsset); - m_containerAssetId = m_rootAsset.GetId(); + m_rootAsset = AssetInternal::WeakAsset(rootAsset); + m_containerAssetId = m_rootAsset.GetId(); - AddDependentAssets(rootAsset, loadParams); + AddDependentAssets(rootAsset, loadParams); + } + + AssetContainer::~AssetContainer() + { + // Validate that if the AssetManager is performing normal processing duties, the AssetContainer is only destroyed once all + // dependent asset loads have completed. + if (AssetManager::IsReady() && !AssetManager::Instance().ShouldCancelAllActiveJobs()) + { + AZ_Assert(m_waitingCount == 0, "Container destroyed while dependent assets are still loading. The dependent assets may " + "end up in a perpetual loading state if there is no top-level container signalling the completion of the full load."); } - AssetContainer::~AssetContainer() - { - // Validate that if the AssetManager is performing normal processing duties, the AssetContainer is only destroyed once all - // dependent asset loads have completed. - if (AssetManager::IsReady() && !AssetManager::Instance().ShouldCancelAllActiveJobs()) - { - AZ_Assert(m_waitingCount == 0, "Container destroyed while dependent assets are still loading. The dependent assets may " - "end up in a perpetual loading state if there is no top-level container signalling the completion of the full load."); - } + AssetBus::MultiHandler::BusDisconnect(); + AssetLoadBus::MultiHandler::BusDisconnect(); + } - AssetBus::MultiHandler::BusDisconnect(); - AssetLoadBus::MultiHandler::BusDisconnect(); + AZStd::vector>> AssetContainer::CreateAndQueueDependentAssets( + const AZStd::vector& dependencyInfoList, const AssetLoadParameters& loadParamsCopyWithNoLoadingFilter) + { + AZStd::vector>> dependencyAssets; + + for (auto& thisInfo : dependencyInfoList) + { + auto dependentAsset = AssetManager::Instance().FindOrCreateAsset( + thisInfo.m_assetId, thisInfo.m_assetType, AZ::Data::AssetLoadBehavior::Default); + + if (!dependentAsset || !dependentAsset.GetId().IsValid()) + { + AZ_Warning("AssetContainer", false, "Dependency Asset %s (%s) was not found\n", + thisInfo.m_assetId.ToString().c_str(), thisInfo.m_relativePath.c_str()); + RemoveWaitingAsset(thisInfo.m_assetId); + continue; + } + dependencyAssets.emplace_back(thisInfo, AZStd::move(dependentAsset)); } - void AssetContainer::AddDependentAssets(Asset rootAsset, const AssetLoadParameters& loadParams) + // Queue the loading of all of the dependent assets before loading the root asset. + for (auto& [dependentAssetInfo, dependentAsset] : dependencyAssets) { - AssetId rootAssetId = rootAsset.GetId(); - AssetType rootAssetType = rootAsset.GetType(); + // Queue each asset to load. + auto queuedDependentAsset = AssetManager::Instance().GetAssetInternal( + dependentAsset.GetId(), dependentAsset.GetType(), + AZ::Data::AssetLoadBehavior::Default, loadParamsCopyWithNoLoadingFilter, + dependentAssetInfo, HasPreloads(dependentAsset.GetId())); - // Every asset we're going to be waiting on a load for - the root and all valid dependencies - AZStd::vector waitingList; - waitingList.push_back(rootAssetId); + // Verify that the returned asset reference matches the one that we found or created and queued to load. + AZ_Assert(dependentAsset == queuedDependentAsset, "GetAssetInternal returned an unexpected asset reference for Asset %s", + dependentAsset.GetId().ToString().c_str()); + } - // Every asset dependency that we're aware of, whether or not it gets filtered out by the asset filter callback. - // This will be used at the point that asset references get serialized in to see whether or not we've received any - // unexpected assets that didn't appear in our asset catalog dependency list that need to be loaded anyways. - AZStd::vector handledAssetDependencyList; + return dependencyAssets; + } - // Cached AssetInfo to save another lookup inside Assetmanager - AZStd::vector dependencyInfoList; - Outcome, AZStd::string> getDependenciesResult = Failure(AZStd::string()); + void AssetContainer::AddDependentAssets(Asset rootAsset, const AssetLoadParameters& loadParams) + { + AssetId rootAssetId = rootAsset.GetId(); + AssetType rootAssetType = rootAsset.GetType(); - // Track preloads in an additional list - they're in our waiting/dependencyInfo lists as well, but preloads require us to - // suppress emitting "AssetReady" until everything we care about in this context is ready - PreloadAssetListType preloadDependencies; - if (loadParams.m_dependencyRules == AssetDependencyLoadRules::UseLoadBehavior) - { - AZStd::unordered_set noloadDependencies; - AssetCatalogRequestBus::BroadcastResult(getDependenciesResult, &AssetCatalogRequestBus::Events::GetLoadBehaviorProductDependencies, - rootAssetId, noloadDependencies, preloadDependencies); - if (!noloadDependencies.empty()) - { - AZStd::lock_guard dependencyLock(m_dependencyMutex); - m_unloadedDependencies.insert(noloadDependencies.begin(), noloadDependencies.end()); - } - } - else if (loadParams.m_dependencyRules == AssetDependencyLoadRules::LoadAll) - { - AssetCatalogRequestBus::BroadcastResult(getDependenciesResult, &AssetCatalogRequestBus::Events::GetAllProductDependencies, rootAssetId); - } - // Do as much validation of dependencies as we can before the AddWaitingAssets and GetAsset calls for dependencies below - if (getDependenciesResult.IsSuccess()) - { - for (const auto& thisAsset : getDependenciesResult.GetValue()) - { - AssetInfo assetInfo; - AssetCatalogRequestBus::BroadcastResult(assetInfo, &AssetCatalogRequestBus::Events::GetAssetInfoById, thisAsset.m_assetId); + // Every asset we're going to be waiting on a load for - the root and all valid dependencies + AZStd::vector waitingList; + waitingList.push_back(rootAssetId); - // No matter whether or not the asset dependency is valid, loaded, or filtered out, mark it as successfully handled. - // When we encounter the asset reference during serialization, we will know that it should intentionally be skipped. - // Otherwise, it would be treated as a missing dependency and assert. - handledAssetDependencyList.emplace_back(thisAsset.m_assetId); + // Every asset dependency that we're aware of, whether or not it gets filtered out by the asset filter callback. + // This will be used at the point that asset references get serialized in to see whether or not we've received any + // unexpected assets that didn't appear in our asset catalog dependency list that need to be loaded anyways. + AZStd::vector handledAssetDependencyList; - if (!assetInfo.m_assetId.IsValid()) - { - // Handlers may just not currently be around for a given asset type so we only warn here - AZ_Warning("AssetContainer", false, "Asset %s (%s) references/depends on asset %s which does not exist in the catalog and cannot be loaded.", - rootAsset.GetHint().c_str(), - rootAssetId.ToString().c_str(), - thisAsset.m_assetId.ToString().c_str()); - m_invalidDependencies++; - continue; - } - if (assetInfo.m_assetId == rootAssetId) - { - // Circular dependencies in our graph need to be raised as errors as they could cause problems elsewhere - AZ_Error("AssetContainer", false, "Circular dependency found under asset %s", rootAssetId.ToString().c_str()); - m_invalidDependencies++; - continue; - } - if (!AssetManager::Instance().GetHandler(assetInfo.m_assetType)) - { - // Handlers may just not currently be around for a given asset type so we only warn here - m_invalidDependencies++; - continue; - } - if (loadParams.m_assetLoadFilterCB) - { - if (!loadParams.m_assetLoadFilterCB({thisAsset.m_assetId, assetInfo.m_assetType, - AZ::Data::ProductDependencyInfo::LoadBehaviorFromFlags(thisAsset.m_flags) })) - { - continue; - } - } - dependencyInfoList.push_back(assetInfo); - } - } - for (auto& thisInfo : dependencyInfoList) - { - waitingList.push_back(thisInfo.m_assetId); - } + // Cached AssetInfo to save another lookup inside Assetmanager + AZStd::vector dependencyInfoList; + Outcome, AZStd::string> getDependenciesResult = Failure(AZStd::string()); - // Add waiting assets ahead of time to hear signals for any which may already be loading - AddWaitingAssets(waitingList); - SetupPreloadLists(move(preloadDependencies), rootAssetId); - - auto loadParamsCopyWithNoLoadingFilter = loadParams; - - // All asset dependencies below the root asset should be provided by the asset catalog, and therefore should *not* - // get triggered to load when the asset reference is serialized in. However, it's useful to detect, warn, and handle - // the case where the asset dependencies are NOT set up correctly. - loadParamsCopyWithNoLoadingFilter.m_assetLoadFilterCB = [handledAssetDependencyList](const AssetFilterInfo& filterInfo) - { - // NoLoad dependencies should always get filtered out and not loaded. - if (filterInfo.m_loadBehavior == AZ::Data::AssetLoadBehavior::NoLoad) - { - return false; - } - - // In the normal case, the dependent asset appears in the handled asset list, and we should return false so that - // the asset isn't attempted to be loaded, since the asset will already be triggered to get loaded or was possibly - // already filtered out by the load filter callback. - // In the error case, the asset dependencies haven't been produced by the builder correctly, so assets - // have shown up that the asset container hasn't triggered to load and isn't listening for. Assert that this case - // has happened so that the builder for this asset type can be fixed. - // Ideally we would proceed forward and load them by returning "true", but the triggered load would use this lambda - // function as the asset load filter for that load as well, which isn't correct. If we ever want to support that - // behavior, we would need to rework the way filters work as well as the code in AssetSerializer.cpp to pass down - // the loadParams.m_assetLoadFilterCB that was passed into the AddDependentAssets() methods to use as the dependent - // asset filter instead of this lambda function. - AZ_UNUSED(handledAssetDependencyList); // Prevent unused warning in release builds - AZ_Assert(AZStd::find(handledAssetDependencyList.begin(), handledAssetDependencyList.end(), filterInfo.m_assetId) != - handledAssetDependencyList.end(), - "Dependent Asset ID (%s) is expected to load, but the Asset Catalog has no dependency recorded. " - "Examine the asset builder for the asset relying on this to ensure it is generating the correct dependencies.", - filterInfo.m_assetId.ToString().c_str()); - - // The dependent asset should have already been created and at least queued to load prior to reaching this point. - // The asset serializer needs to get a successful result from FindAsset(), or else our asset reference will fail - // to point to the asset data once it is loaded. - if (!Data::AssetManager::Instance().FindAsset(filterInfo.m_assetId, AZ::Data::AssetLoadBehavior::Default)) - { - AZ_Assert(!Data::AssetManager::Instance().FindAsset(filterInfo.m_assetId, AZ::Data::AssetLoadBehavior::Default), - "Dependent Asset ID (%s) can't be found in the AssetManager, which means the asset referencing it has probably " - "started loading before the dependent asset has been queued to load. Verify that the asset dependencies have " - "been created correctly for the parent asset.", - filterInfo.m_assetId.ToString().c_str()); - } - - return false; - }; - - // This will contain the list of dependent assets that have been created (or found) and queued to load. - // We also keep a copy of the AssetInfo structure as a small optimization to avoid a redundant lookup in GetAssetInternal. - AZStd::vector>> dependencyAssets; - - // Make sure all the dependencies are created first before we try to load them. - // Since we've set the load filter to not load dependencies, we need to ensure all the assets are created beforehand - // so the dependencies can be hooked up as soon as each asset gets serialized in, even if they start getting serialized - // while we're still in the middle of triggering all of the asset loads below. - for (auto& thisInfo : dependencyInfoList) - { - auto dependentAsset = AssetManager::Instance().FindOrCreateAsset( - thisInfo.m_assetId, thisInfo.m_assetType, AZ::Data::AssetLoadBehavior::Default); - - if (!dependentAsset || !dependentAsset.GetId().IsValid()) - { - AZ_Warning("AssetContainer", false, "Dependency Asset %s (%s) was not found\n", - thisInfo.m_assetId.ToString().c_str(), thisInfo.m_relativePath.c_str()); - RemoveWaitingAsset(thisInfo.m_assetId); - continue; - } - dependencyAssets.emplace_back(thisInfo, AZStd::move(dependentAsset)); - } - - // Queue the loading of all of the dependent assets before loading the root asset. - for (auto& [dependentAssetInfo, dependentAsset] : dependencyAssets) - { - // Queue each asset to load. - auto queuedDependentAsset = AssetManager::Instance().GetAssetInternal( - dependentAsset.GetId(), dependentAsset.GetType(), - AZ::Data::AssetLoadBehavior::Default, loadParamsCopyWithNoLoadingFilter, - dependentAssetInfo, HasPreloads(dependentAsset.GetId())); - - // Verify that the returned asset reference matches the one that we found or created and queued to load. - AZ_Assert(dependentAsset == queuedDependentAsset, "GetAssetInternal returned an unexpected asset reference for Asset %s", - dependentAsset.GetId().ToString().c_str()); - } - - // Add all of the queued dependent assets as dependencies + // Track preloads in an additional list - they're in our waiting/dependencyInfo lists as well, but preloads require us to + // suppress emitting "AssetReady" until everything we care about in this context is ready + PreloadAssetListType preloadDependencies; + if (loadParams.m_dependencyRules == AssetDependencyLoadRules::UseLoadBehavior) + { + AZStd::unordered_set noloadDependencies; + AssetCatalogRequestBus::BroadcastResult(getDependenciesResult, &AssetCatalogRequestBus::Events::GetLoadBehaviorProductDependencies, + rootAssetId, noloadDependencies, preloadDependencies); + if (!noloadDependencies.empty()) { AZStd::lock_guard dependencyLock(m_dependencyMutex); - for (auto& [dependentAssetInfo, dependentAsset] : dependencyAssets) + m_unloadedDependencies.insert(noloadDependencies.begin(), noloadDependencies.end()); + } + } + else if (loadParams.m_dependencyRules == AssetDependencyLoadRules::LoadAll) + { + AssetCatalogRequestBus::BroadcastResult(getDependenciesResult, &AssetCatalogRequestBus::Events::GetAllProductDependencies, rootAssetId); + } + // Do as much validation of dependencies as we can before the AddWaitingAssets and GetAsset calls for dependencies below + if (getDependenciesResult.IsSuccess()) + { + for (const auto& thisAsset : getDependenciesResult.GetValue()) + { + AssetInfo assetInfo; + AssetCatalogRequestBus::BroadcastResult(assetInfo, &AssetCatalogRequestBus::Events::GetAssetInfoById, thisAsset.m_assetId); + + // No matter whether or not the asset dependency is valid, loaded, or filtered out, mark it as successfully handled. + // When we encounter the asset reference during serialization, we will know that it should intentionally be skipped. + // Otherwise, it would be treated as a missing dependency and assert. + handledAssetDependencyList.emplace_back(thisAsset.m_assetId); + + if (!assetInfo.m_assetId.IsValid()) { - AddDependency(AZStd::move(dependentAsset)); + // Handlers may just not currently be around for a given asset type so we only warn here + AZ_Warning("AssetContainer", false, "Asset %s (%s) references/depends on asset %s which does not exist in the catalog and cannot be loaded.", + rootAsset.GetHint().c_str(), + rootAssetId.ToString().c_str(), + thisAsset.m_assetId.ToString().c_str()); + m_invalidDependencies++; + continue; } + if (assetInfo.m_assetId == rootAssetId) + { + // Circular dependencies in our graph need to be raised as errors as they could cause problems elsewhere + AZ_Error("AssetContainer", false, "Circular dependency found under asset %s", rootAssetId.ToString().c_str()); + m_invalidDependencies++; + continue; + } + if (!AssetManager::Instance().GetHandler(assetInfo.m_assetType)) + { + // Handlers may just not currently be around for a given asset type so we only warn here + m_invalidDependencies++; + continue; + } + if (loadParams.m_assetLoadFilterCB) + { + if (!loadParams.m_assetLoadFilterCB({thisAsset.m_assetId, assetInfo.m_assetType, + AZ::Data::ProductDependencyInfo::LoadBehaviorFromFlags(thisAsset.m_flags) })) + { + continue; + } + } + dependencyInfoList.push_back(assetInfo); + } + } + for (auto& thisInfo : dependencyInfoList) + { + waitingList.push_back(thisInfo.m_assetId); + } + + // Add waiting assets ahead of time to hear signals for any which may already be loading + AddWaitingAssets(waitingList); + SetupPreloadLists(move(preloadDependencies), rootAssetId); + + auto loadParamsCopyWithNoLoadingFilter = loadParams; + + // All asset dependencies below the root asset should be provided by the asset catalog, and therefore should *not* + // get triggered to load when the asset reference is serialized in. However, it's useful to detect, warn, and handle + // the case where the asset dependencies are NOT set up correctly. + loadParamsCopyWithNoLoadingFilter.m_assetLoadFilterCB = [handledAssetDependencyList](const AssetFilterInfo& filterInfo) + { + // NoLoad dependencies should always get filtered out and not loaded. + if (filterInfo.m_loadBehavior == AZ::Data::AssetLoadBehavior::NoLoad) + { + return false; } - // Finally, after creating and queueing the dependent assets, queue the root asset. This is saved until last to ensure that - // it doesn't have any chance of serializing in until after all the dependent assets have been queued for loading and have - // been added to the list of dependencies. - auto thisAsset = AssetManager::Instance().GetAssetInternal(rootAssetId, rootAssetType, rootAsset.GetAutoLoadBehavior(), - loadParamsCopyWithNoLoadingFilter, AssetInfo(), HasPreloads(rootAssetId)); + // In the normal case, the dependent asset appears in the handled asset list, and we should return false so that + // the asset isn't attempted to be loaded, since the asset will already be triggered to get loaded or was possibly + // already filtered out by the load filter callback. + // In the error case, the asset dependencies haven't been produced by the builder correctly, so assets + // have shown up that the asset container hasn't triggered to load and isn't listening for. Assert that this case + // has happened so that the builder for this asset type can be fixed. + // Ideally we would proceed forward and load them by returning "true", but the triggered load would use this lambda + // function as the asset load filter for that load as well, which isn't correct. If we ever want to support that + // behavior, we would need to rework the way filters work as well as the code in AssetSerializer.cpp to pass down + // the loadParams.m_assetLoadFilterCB that was passed into the AddDependentAssets() methods to use as the dependent + // asset filter instead of this lambda function. + AZ_UNUSED(handledAssetDependencyList); // Prevent unused warning in release builds + AZ_Assert(AZStd::find(handledAssetDependencyList.begin(), handledAssetDependencyList.end(), filterInfo.m_assetId) != + handledAssetDependencyList.end(), + "Dependent Asset ID (%s) is expected to load, but the Asset Catalog has no dependency recorded. " + "Examine the asset builder for the asset relying on this to ensure it is generating the correct dependencies.", + filterInfo.m_assetId.ToString().c_str()); - if (!thisAsset) + // The dependent asset should have already been created and at least queued to load prior to reaching this point. + // The asset serializer needs to get a successful result from FindAsset(), or else our asset reference will fail + // to point to the asset data once it is loaded. + if (!Data::AssetManager::Instance().FindAsset(filterInfo.m_assetId, AZ::Data::AssetLoadBehavior::Default)) { - AZ_Assert(false, "Root asset with id %s failed to load, asset container is invalid.", - rootAssetId.ToString().c_str()); - ClearWaitingAssets(); - // initComplete remains false, because we have failed to initialize successfully. + AZ_Assert(!Data::AssetManager::Instance().FindAsset(filterInfo.m_assetId, AZ::Data::AssetLoadBehavior::Default), + "Dependent Asset ID (%s) can't be found in the AssetManager, which means the asset referencing it has probably " + "started loading before the dependent asset has been queued to load. Verify that the asset dependencies have " + "been created correctly for the parent asset.", + filterInfo.m_assetId.ToString().c_str()); + } + + return false; + }; + + // This will contain the list of dependent assets that have been created (or found) and queued to load. + // We also keep a copy of the AssetInfo structure as a small optimization to avoid a redundant lookup in GetAssetInternal. + AZStd::vector>> dependencyAssets; + + // Make sure all the dependencies are created first before we try to load them. + // Since we've set the load filter to not load dependencies, we need to ensure all the assets are created beforehand + // so the dependencies can be hooked up as soon as each asset gets serialized in, even if they start getting serialized + // while we're still in the middle of triggering all of the asset loads below. + dependencyAssets = CreateAndQueueDependentAssets(dependencyInfoList, loadParamsCopyWithNoLoadingFilter); + + // Add all of the queued dependent assets as dependencies + { + AZStd::lock_guard dependencyLock(m_dependencyMutex); + for (auto& [dependentAssetInfo, dependentAsset] : dependencyAssets) + { + AddDependency(AZStd::move(dependentAsset)); + } + } + + // Finally, after creating and queueing the dependent assets, queue the root asset. This is saved until last to ensure that + // it doesn't have any chance of serializing in until after all the dependent assets have been queued for loading and have + // been added to the list of dependencies. + auto thisAsset = AssetManager::Instance().GetAssetInternal(rootAssetId, rootAssetType, rootAsset.GetAutoLoadBehavior(), + loadParamsCopyWithNoLoadingFilter, AssetInfo(), HasPreloads(rootAssetId)); + + if (!thisAsset) + { + AZ_Assert(false, "Root asset with id %s failed to load, asset container is invalid.", + rootAssetId.ToString().c_str()); + ClearWaitingAssets(); + // initComplete remains false, because we have failed to initialize successfully. + return; + } + + m_initComplete = true; + + // *After* setting initComplete to true, check to see if the assets are already ready. + // This check needs to wait until after setting initComplete because if they *are* ready, we want the final call to + // RemoveWaitingAsset to trigger the OnAssetContainerReady/Canceled event. If we call CheckReady() *before* setting + // initComplete, if all the assets are ready, the event will never get triggered. + CheckReady(); + } + + bool AssetContainer::IsReady() const + { + return (m_rootAsset && m_waitingCount == 0); + } + + bool AssetContainer::IsLoading() const + { + return (m_rootAsset || m_waitingCount); + } + + bool AssetContainer::IsValid() const + { + return (m_containerAssetId.IsValid() && m_initComplete && m_rootAsset); + } + + void AssetContainer::CheckReady() + { + if (!m_dependencies.empty()) + { + for (auto& [assetId, dependentAsset] : m_dependencies) + { + if (dependentAsset->IsReady() || dependentAsset->IsError()) + { + HandleReadyAsset(dependentAsset); + } + } + } + if (auto asset = m_rootAsset.GetStrongReference(); asset.IsReady() || asset.IsError()) + { + HandleReadyAsset(asset); + } + } + + Asset AssetContainer::GetRootAsset() + { + return m_rootAsset.GetStrongReference(); + } + + AssetId AssetContainer::GetContainerAssetId() + { + return m_containerAssetId; + } + + void AssetContainer::ClearRootAsset() + { + AssetId rootId = m_rootAsset.GetId(); + + { + AZStd::lock_guard preloadGuard(m_preloadMutex); + + // Erase the entry in the preloadWaitList for the root asset if one exists. + m_preloadWaitList.erase(rootId); + + // It's possible that the root asset has preload dependencies, so make sure to check the preload list and remove + // the entry for the root asset if it has one. + auto rootAssetPreloadIter = m_preloadList.find(rootId); + if (rootAssetPreloadIter != m_preloadList.end()) + { + // Since the root asset has a preload list, that means the preload wait list will also have references to the + // root asset. (The preload wait list is a list of assets waiting on a preload asset to finish) Clear those + // out as well. + auto waitAssetSet = rootAssetPreloadIter->second; + for (auto& waitId : waitAssetSet) + { + auto waitAssetIter = m_preloadWaitList.find(waitId); + if (waitAssetIter != m_preloadWaitList.end()) + { + waitAssetIter->second.erase(rootId); + } + } + + m_preloadList.erase(rootAssetPreloadIter); + } + } + + // Clear out the root asset before removing it from the waiting list to ensure that we trigger an "OnAssetContainerCanceled" + // event instead of "OnAssetContainerReady". + m_rootAsset = {}; + RemoveWaitingAsset(rootId); + + } + + void AssetContainer::AddDependency(const Asset& newDependency) + { + m_dependencies[newDependency->GetId()] = newDependency; + } + void AssetContainer::AddDependency(Asset&& newDependency) + { + m_dependencies[newDependency->GetId()] = AZStd::move(newDependency); + } + + void AssetContainer::OnAssetReady(Asset asset) + { + HandleReadyAsset(asset); + } + + void AssetContainer::OnAssetError(Asset asset) + { + AZ_Warning("AssetContainer", false, "Error loading asset %s", asset->GetId().ToString().c_str()); + HandleReadyAsset(asset); + } + + void AssetContainer::HandleReadyAsset(Asset asset) + { + // Wait until we've finished initialization before allowing this + // If a ready event happens before we've gotten all the maps/structures set up, there may be some missing data + // which can lead to a crash + // We'll go through and check the ready status of every dependency immediately after finishing initialization anyway + if (m_initComplete) + { + RemoveFromAllWaitingPreloads(asset->GetId()); + RemoveWaitingAsset(asset->GetId()); + } + } + + void AssetContainer::OnAssetDataLoaded(Asset asset) + { + // Remove only from this asset's waiting list. Anything else should + // listen for OnAssetReady as the true signal. This is essentially removing the + // "marker" we placed in SetupPreloads that we need to wait for our own data + RemoveFromWaitingPreloads(asset->GetId(), asset->GetId()); + } + + void AssetContainer::RemoveFromWaitingPreloads(const AssetId& waiterId, const AssetId& preloadID) + { + { + AZStd::lock_guard preloadGuard(m_preloadMutex); + + auto remainingPreloadIter = m_preloadList.find(waiterId); + if (remainingPreloadIter == m_preloadList.end()) + { + // If we got here without an entry on the preload list, it probably means this asset was triggered to load multiple + // times, some with dependencies and some without. To ensure that we don't disturb the loads that expect the + // dependencies, just silently return and don't treat the asset as finished loading. We'll rely on the other load + // to send an OnAssetReady() whenever its expected dependencies are met. return; } - - m_initComplete = true; - - // *After* setting initComplete to true, check to see if the assets are already ready. - // This check needs to wait until after setting initComplete because if they *are* ready, we want the final call to - // RemoveWaitingAsset to trigger the OnAssetContainerReady/Canceled event. If we call CheckReady() *before* setting - // initComplete, if all the assets are ready, the event will never get triggered. - CheckReady(); - } - - bool AssetContainer::IsReady() const - { - return (m_rootAsset && m_waitingCount == 0); - } - - bool AssetContainer::IsLoading() const - { - return (m_rootAsset || m_waitingCount); - } - - bool AssetContainer::IsValid() const - { - return (m_containerAssetId.IsValid() && m_initComplete && m_rootAsset); - } - - void AssetContainer::CheckReady() - { - if (!m_dependencies.empty()) + if (!remainingPreloadIter->second.erase(preloadID)) { - for (auto& [assetId, dependentAsset] : m_dependencies) - { - if (dependentAsset->IsReady() || dependentAsset->IsError()) - { - HandleReadyAsset(dependentAsset); - } - } + AZ_Warning("AssetContainer", !m_initComplete, "Couldn't remove %s from waiting list of %s", preloadID.ToString().c_str(), waiterId.ToString().c_str()); + return; } - if (auto asset = m_rootAsset.GetStrongReference(); asset.IsReady() || asset.IsError()) + if (!remainingPreloadIter->second.empty()) { - HandleReadyAsset(asset); + return; } } + auto thisAsset = GetAssetData(waiterId); + AssetManager::Instance().ValidateAndPostLoad(thisAsset, true, false, nullptr); + } - Asset AssetContainer::GetRootAsset() + void AssetContainer::RemoveFromAllWaitingPreloads(const AssetId& thisId) + { + AZStd::unordered_set checkList; { - return m_rootAsset.GetStrongReference(); - } - - AssetId AssetContainer::GetContainerAssetId() - { - return m_containerAssetId; - } - - void AssetContainer::ClearRootAsset() - { - AssetId rootId = m_rootAsset.GetId(); - - { - AZStd::lock_guard preloadGuard(m_preloadMutex); - - // Erase the entry in the preloadWaitList for the root asset if one exists. - m_preloadWaitList.erase(rootId); - - // It's possible that the root asset has preload dependencies, so make sure to check the preload list and remove - // the entry for the root asset if it has one. - auto rootAssetPreloadIter = m_preloadList.find(rootId); - if (rootAssetPreloadIter != m_preloadList.end()) - { - // Since the root asset has a preload list, that means the preload wait list will also have references to the - // root asset. (The preload wait list is a list of assets waiting on a preload asset to finish) Clear those - // out as well. - auto waitAssetSet = rootAssetPreloadIter->second; - for (auto& waitId : waitAssetSet) - { - auto waitAssetIter = m_preloadWaitList.find(waitId); - if (waitAssetIter != m_preloadWaitList.end()) - { - waitAssetIter->second.erase(rootId); - } - } - - m_preloadList.erase(rootAssetPreloadIter); - } - } - - // Clear out the root asset before removing it from the waiting list to ensure that we trigger an "OnAssetContainerCanceled" - // event instead of "OnAssetContainerReady". - m_rootAsset = {}; - RemoveWaitingAsset(rootId); - - } - - void AssetContainer::AddDependency(const Asset& newDependency) - { - m_dependencies[newDependency->GetId()] = newDependency; - } - void AssetContainer::AddDependency(Asset&& newDependency) - { - m_dependencies[newDependency->GetId()] = AZStd::move(newDependency); - } - - void AssetContainer::OnAssetReady(Asset asset) - { - HandleReadyAsset(asset); - } - - void AssetContainer::OnAssetError(Asset asset) - { - AZ_Warning("AssetContainer", false, "Error loading asset %s", asset->GetId().ToString().c_str()); - HandleReadyAsset(asset); - } - - void AssetContainer::HandleReadyAsset(Asset asset) - { - RemoveFromAllWaitingPreloads(asset->GetId()); - RemoveWaitingAsset(asset->GetId()); - } - - void AssetContainer::OnAssetDataLoaded(Asset asset) - { - // Remove only from this asset's waiting list. Anything else should - // listen for OnAssetReady as the true signal. This is essentially removing the - // "marker" we placed in SetupPreloads that we need to wait for our own data - RemoveFromWaitingPreloads(asset->GetId(), asset->GetId()); - } - - void AssetContainer::RemoveFromWaitingPreloads(const AssetId& waiterId, const AssetId& preloadID) - { - { - AZStd::lock_guard preloadGuard(m_preloadMutex); - - auto remainingPreloadIter = m_preloadList.find(waiterId); - if (remainingPreloadIter == m_preloadList.end()) - { - // If we got here without an entry on the preload list, it probably means this asset was triggered to load multiple - // times, some with dependencies and some without. To ensure that we don't disturb the loads that expect the - // dependencies, just silently return and don't treat the asset as finished loading. We'll rely on the other load - // to send an OnAssetReady() whenever its expected dependencies are met. - return; - } - if (!remainingPreloadIter->second.erase(preloadID)) - { - AZ_Warning("AssetContainer", !m_initComplete, "Couldn't remove %s from waiting list of %s", preloadID.ToString().c_str(), waiterId.ToString().c_str()); - return; - } - if (!remainingPreloadIter->second.empty()) - { - return; - } - } - auto thisAsset = GetAssetData(waiterId); - AssetManager::Instance().ValidateAndPostLoad(thisAsset, true, false, nullptr); - } - - void AssetContainer::RemoveFromAllWaitingPreloads(const AssetId& thisId) - { - AZStd::unordered_set checkList; - { - AZStd::lock_guard preloadGuard(m_preloadMutex); - - auto waitingList = m_preloadWaitList.find(thisId); - if (waitingList != m_preloadWaitList.end()) - { - checkList = move(waitingList->second); - m_preloadWaitList.erase(waitingList); - } - } - for (auto& thisDepId : checkList) - { - if (thisDepId != thisId) - { - RemoveFromWaitingPreloads(thisDepId, thisId); - } - } - } - - void AssetContainer::ClearWaitingAssets() - { - AZStd::lock_guard lock(m_readyMutex); - m_waitingCount = 0; - for (auto& thisAsset : m_waitingAssets) - { - AssetBus::MultiHandler::BusDisconnect(thisAsset); - } - m_waitingAssets.clear(); - } - - void AssetContainer::ListWaitingAssets() const - { -#if defined(AZ_ENABLE_TRACING) - AZStd::lock_guard lock(m_readyMutex); - AZ_TracePrintf("AssetContainer", "Waiting on assets:\n"); - for (auto& thisAsset : m_waitingAssets) - { - AZ_TracePrintf("AssetContainer", " %s\n",thisAsset.ToString().c_str()); - } -#endif - } - - void AssetContainer::ListWaitingPreloads([[maybe_unused]] const AssetId& assetId) const - { -#if defined(AZ_ENABLE_TRACING) AZStd::lock_guard preloadGuard(m_preloadMutex); - auto preloadEntry = m_preloadList.find(assetId); - if (preloadEntry != m_preloadList.end()) + + auto waitingList = m_preloadWaitList.find(thisId); + if (waitingList != m_preloadWaitList.end()) { - AZ_TracePrintf("AssetContainer", "%s waiting on preloads : \n",assetId.ToString().c_str()); - for (auto& thisId : preloadEntry->second) - { - AZ_TracePrintf("AssetContainer", " %s\n",thisId.ToString().c_str()); - } + checkList = move(waitingList->second); + m_preloadWaitList.erase(waitingList); } - else + } + for (auto& thisDepId : checkList) + { + if (thisDepId != thisId) { - AZ_TracePrintf("AssetContainer", "%s isn't waiting on any preloads:\n", assetId.ToString().c_str()); + RemoveFromWaitingPreloads(thisDepId, thisId); } + } + } + + void AssetContainer::ClearWaitingAssets() + { + AZStd::lock_guard lock(m_readyMutex); + m_waitingCount = 0; + for (auto& thisAsset : m_waitingAssets) + { + AssetBus::MultiHandler::BusDisconnect(thisAsset); + } + m_waitingAssets.clear(); + } + + void AssetContainer::ListWaitingAssets() const + { +#if defined(AZ_ENABLE_TRACING) + AZStd::lock_guard lock(m_readyMutex); + AZ_TracePrintf("AssetContainer", "Waiting on assets:\n"); + for (auto& thisAsset : m_waitingAssets) + { + AZ_TracePrintf("AssetContainer", " %s\n",thisAsset.ToString().c_str()); + } #endif - } + } - void AssetContainer::AddWaitingAssets(const AZStd::vector& assetList) + void AssetContainer::ListWaitingPreloads([[maybe_unused]] const AssetId& assetId) const + { +#if defined(AZ_ENABLE_TRACING) + AZStd::lock_guard preloadGuard(m_preloadMutex); + auto preloadEntry = m_preloadList.find(assetId); + if (preloadEntry != m_preloadList.end()) { - AZStd::lock_guard lock(m_readyMutex); - for (auto& thisAsset : assetList) + AZ_TracePrintf("AssetContainer", "%s waiting on preloads : \n",assetId.ToString().c_str()); + for (auto& thisId : preloadEntry->second) { - if (m_waitingAssets.insert(thisAsset).second) - { - ++m_waitingCount; - AssetBus::MultiHandler::BusConnect(thisAsset); - AssetLoadBus::MultiHandler::BusConnect(thisAsset); - } + AZ_TracePrintf("AssetContainer", " %s\n",thisId.ToString().c_str()); } } - - void AssetContainer::AddWaitingAsset(const AssetId& thisAsset) + else + { + AZ_TracePrintf("AssetContainer", "%s isn't waiting on any preloads:\n", assetId.ToString().c_str()); + } +#endif + } + + void AssetContainer::AddWaitingAssets(const AZStd::vector& assetList) + { + AZStd::lock_guard lock(m_readyMutex); + for (auto& thisAsset : assetList) { - AZStd::lock_guard lock(m_readyMutex); if (m_waitingAssets.insert(thisAsset).second) { ++m_waitingCount; @@ -478,196 +481,207 @@ namespace AZ AssetLoadBus::MultiHandler::BusConnect(thisAsset); } } + } - void AssetContainer::RemoveWaitingAsset(const AssetId& thisAsset) + void AssetContainer::AddWaitingAsset(const AssetId& thisAsset) + { + AZStd::lock_guard lock(m_readyMutex); + if (m_waitingAssets.insert(thisAsset).second) { - bool allReady{ false }; - { - bool disconnectEbus = false; + ++m_waitingCount; + AssetBus::MultiHandler::BusConnect(thisAsset); + AssetLoadBus::MultiHandler::BusConnect(thisAsset); + } + } - { // Intentionally limiting lock scope - AZStd::lock_guard lock(m_readyMutex); - // If we're trying to remove something already removed, just ignore it - if (m_waitingAssets.erase(thisAsset)) - { - m_waitingCount -= 1; - disconnectEbus = true; + void AssetContainer::RemoveWaitingAsset(const AssetId& thisAsset) + { + bool allReady{ false }; + { + bool disconnectEbus = false; - } - if (m_waitingAssets.empty()) - { - allReady = true; - } - } - - if(disconnectEbus) + { // Intentionally limiting lock scope + AZStd::lock_guard lock(m_readyMutex); + // If we're trying to remove something already removed, just ignore it + if (m_waitingAssets.erase(thisAsset)) { - AssetBus::MultiHandler::BusDisconnect(thisAsset); - AssetLoadBus::MultiHandler::BusDisconnect(thisAsset); + m_waitingCount -= 1; + disconnectEbus = true; + + } + if (m_waitingAssets.empty()) + { + allReady = true; } } - // If there are no assets left to be loaded, trigger the final AssetContainer notification (ready or canceled). - // We guard against prematurely sending it (m_initComplete) because it's possible for assets to get removed from our waiting - // list *while* we're still building up the list, so the list would appear to be empty too soon. - // We also guard against sending it multiple times (m_finalNotificationSent), because in some error conditions, it may be - // possible to try to remove the same asset multiple times, which if it's the last asset, it could trigger multiple - // notifications. - if (allReady && m_initComplete && !m_finalNotificationSent) + if(disconnectEbus) { - m_finalNotificationSent = true; - if (m_rootAsset) - { - AssetManagerBus::Broadcast(&AssetManagerBus::Events::OnAssetContainerReady, this); - } - else - { - AssetManagerBus::Broadcast(&AssetManagerBus::Events::OnAssetContainerCanceled, this); - } + AssetBus::MultiHandler::BusDisconnect(thisAsset); + AssetLoadBus::MultiHandler::BusDisconnect(thisAsset); } } - AssetContainer::operator bool() const + // If there are no assets left to be loaded, trigger the final AssetContainer notification (ready or canceled). + // We guard against prematurely sending it (m_initComplete) because it's possible for assets to get removed from our waiting + // list *while* we're still building up the list, so the list would appear to be empty too soon. + // We also guard against sending it multiple times (m_finalNotificationSent), because in some error conditions, it may be + // possible to try to remove the same asset multiple times, which if it's the last asset, it could trigger multiple + // notifications. + if (allReady && m_initComplete && !m_finalNotificationSent) { - return m_rootAsset ? true : false; - } - - const AssetContainer::DependencyList& AssetContainer::GetDependencies() const - { - return m_dependencies; - } - - const AZStd::unordered_set& AssetContainer::GetUnloadedDependencies() const - { - return m_unloadedDependencies; - } - - void AssetContainer::SetupPreloadLists(PreloadAssetListType&& preloadList, const AssetId& rootAssetId) - { - if (!preloadList.empty()) + m_finalNotificationSent = true; + if (m_rootAsset) { - // This method can be entered as additional NoLoad dependency groups are loaded - the container could - // be in the middle of loading so we need to grab both mutexes. - AZStd::scoped_lock lock(m_readyMutex, m_preloadMutex); + AssetManagerBus::Broadcast(&AssetManagerBus::Events::OnAssetContainerReady, this); + } + else + { + AssetManagerBus::Broadcast(&AssetManagerBus::Events::OnAssetContainerCanceled, this); + } + } + } - for (auto thisListPair = preloadList.begin(); thisListPair != preloadList.end();) + AssetContainer::operator bool() const + { + return m_rootAsset ? true : false; + } + + const AssetContainer::DependencyList& AssetContainer::GetDependencies() const + { + return m_dependencies; + } + + const AZStd::unordered_set& AssetContainer::GetUnloadedDependencies() const + { + return m_unloadedDependencies; + } + + void AssetContainer::SetupPreloadLists(PreloadAssetListType&& preloadList, const AssetId& rootAssetId) + { + if (!preloadList.empty()) + { + // This method can be entered as additional NoLoad dependency groups are loaded - the container could + // be in the middle of loading so we need to grab both mutexes. + AZStd::scoped_lock lock(m_readyMutex, m_preloadMutex); + + for (auto thisListPair = preloadList.begin(); thisListPair != preloadList.end();) + { + // We only should add ourselves if we have another valid preload we're waiting on + bool foundAsset{ false }; + // It's possible this set of preload dependencies was culled out by lack of asset handler + // Or filtering rules. This is not an error, we should just remove it from the list of + // Preloads we're waiting on + if (!m_waitingAssets.count(thisListPair->first)) { - // We only should add ourselves if we have another valid preload we're waiting on - bool foundAsset{ false }; - // It's possible this set of preload dependencies was culled out by lack of asset handler - // Or filtering rules. This is not an error, we should just remove it from the list of - // Preloads we're waiting on - if (!m_waitingAssets.count(thisListPair->first)) + thisListPair = preloadList.erase(thisListPair); + continue; + } + for (auto thisAsset = thisListPair->second.begin(); thisAsset != thisListPair->second.end();) + { + // These are data errors. We'll emit the error but carry on. The container + // will load the assets but won't/can't create a circular preload dependency chain + if (*thisAsset == rootAssetId) { - thisListPair = preloadList.erase(thisListPair); + AZ_Error("AssetContainer", false, "Circular preload dependency found - %s has a preload" + "dependency back to root %s\n", + thisListPair->first.ToString().c_str(), + rootAssetId.ToString().c_str()); + thisAsset = thisListPair->second.erase(thisAsset); continue; } - for (auto thisAsset = thisListPair->second.begin(); thisAsset != thisListPair->second.end();) + else if (*thisAsset == thisListPair->first) { - // These are data errors. We'll emit the error but carry on. The container - // will load the assets but won't/can't create a circular preload dependency chain - if (*thisAsset == rootAssetId) - { - AZ_Error("AssetContainer", false, "Circular preload dependency found - %s has a preload" - "dependency back to root %s\n", - thisListPair->first.ToString().c_str(), - rootAssetId.ToString().c_str()); - thisAsset = thisListPair->second.erase(thisAsset); - continue; - } - else if (*thisAsset == thisListPair->first) - { - AZ_Error("AssetContainer", false, "Circular preload dependency found - Root asset %s has a preload" - "dependency on %s which depends back back to itself\n", - rootAssetId.ToString().c_str(), - thisListPair->first.ToString().c_str()); - thisAsset = thisListPair->second.erase(thisAsset); - continue; - } - else if (m_preloadWaitList.count(thisListPair->first) && m_preloadWaitList[thisListPair->first].count(*thisAsset)) - { - AZ_Error("AssetContainer", false, "Circular dependency found - Root asset %s has a preload" - "dependency on %s which has a circular dependency with %s\n", - rootAssetId.ToString().c_str(), - thisListPair->first.ToString().c_str(), - thisAsset->ToString().c_str()); - thisAsset = thisListPair->second.erase(thisAsset); - continue; - } - else if (m_waitingAssets.count(*thisAsset)) - { - foundAsset = true; - m_preloadWaitList[*thisAsset].insert(thisListPair->first); - ++thisAsset; - } - else - { - // This particular preload dependency of this asset was culled - // similar to the case above this can be due to no established asset handler - // or filtering rules. We'll just erase the entry because we're not loading this - thisAsset = thisListPair->second.erase(thisAsset); - continue; - } + AZ_Error("AssetContainer", false, "Circular preload dependency found - Root asset %s has a preload" + "dependency on %s which depends back back to itself\n", + rootAssetId.ToString().c_str(), + thisListPair->first.ToString().c_str()); + thisAsset = thisListPair->second.erase(thisAsset); + continue; } - if (foundAsset) + else if (m_preloadWaitList.count(thisListPair->first) && m_preloadWaitList[thisListPair->first].count(*thisAsset)) { - // We've established that this asset has at least one preload dependency it needs to wait on - // so we additionally add the waiting asset as its own preload so all of our "waiting assets" - // are managed in the same list. We can't consider this asset to be "ready" until all - // of its preloads are ready and it has been loaded. It will request an OnAssetDataLoaded - // notification from AssetManager rather than an OnAssetReady because of these additional dependencies. - thisListPair->second.insert(thisListPair->first); - m_preloadWaitList[thisListPair->first].insert(thisListPair->first); + AZ_Error("AssetContainer", false, "Circular dependency found - Root asset %s has a preload" + "dependency on %s which has a circular dependency with %s\n", + rootAssetId.ToString().c_str(), + thisListPair->first.ToString().c_str(), + thisAsset->ToString().c_str()); + thisAsset = thisListPair->second.erase(thisAsset); + continue; + } + else if (m_waitingAssets.count(*thisAsset)) + { + foundAsset = true; + m_preloadWaitList[*thisAsset].insert(thisListPair->first); + ++thisAsset; + } + else + { + // This particular preload dependency of this asset was culled + // similar to the case above this can be due to no established asset handler + // or filtering rules. We'll just erase the entry because we're not loading this + thisAsset = thisListPair->second.erase(thisAsset); + continue; } - ++thisListPair; } - for(auto& thisList : preloadList) + if (foundAsset) { - // Only save the entry to the final preload list if it has at least one dependent asset still remaining after - // the checks above. - if (!thisList.second.empty()) - { - m_preloadList[thisList.first].insert(thisList.second.begin(), thisList.second.end()); - } + // We've established that this asset has at least one preload dependency it needs to wait on + // so we additionally add the waiting asset as its own preload so all of our "waiting assets" + // are managed in the same list. We can't consider this asset to be "ready" until all + // of its preloads are ready and it has been loaded. It will request an OnAssetDataLoaded + // notification from AssetManager rather than an OnAssetReady because of these additional dependencies. + thisListPair->second.insert(thisListPair->first); + m_preloadWaitList[thisListPair->first].insert(thisListPair->first); + } + ++thisListPair; + } + for(auto& thisList : preloadList) + { + // Only save the entry to the final preload list if it has at least one dependent asset still remaining after + // the checks above. + if (!thisList.second.empty()) + { + m_preloadList[thisList.first].insert(thisList.second.begin(), thisList.second.end()); } } } + } - bool AssetContainer::HasPreloads(const AssetId& assetId) const + bool AssetContainer::HasPreloads(const AssetId& assetId) const + { + AZStd::lock_guard preloadGuard(m_preloadMutex); + auto preloadEntry = m_preloadList.find(assetId); + if (preloadEntry != m_preloadList.end()) { - AZStd::lock_guard preloadGuard(m_preloadMutex); - auto preloadEntry = m_preloadList.find(assetId); - if (preloadEntry != m_preloadList.end()) - { - return !preloadEntry->second.empty(); - } - return false; + return !preloadEntry->second.empty(); } + return false; + } - Asset AssetContainer::GetAssetData(const AssetId& assetId) const + Asset AssetContainer::GetAssetData(const AssetId& assetId) const + { + AZStd::lock_guard dependenciesGuard(m_dependencyMutex); + if (auto rootAsset = m_rootAsset.GetStrongReference(); rootAsset.GetId() == assetId) { - AZStd::lock_guard dependenciesGuard(m_dependencyMutex); - if (auto rootAsset = m_rootAsset.GetStrongReference(); rootAsset.GetId() == assetId) - { - return rootAsset; - } - auto dependencyIter = m_dependencies.find(assetId); - if (dependencyIter != m_dependencies.end()) - { - return dependencyIter->second; - } - AZ_Warning("AssetContainer", false, "Asset %s not found in container", assetId.ToString().c_str()); - return {}; + return rootAsset; } + auto dependencyIter = m_dependencies.find(assetId); + if (dependencyIter != m_dependencies.end()) + { + return dependencyIter->second; + } + AZ_Warning("AssetContainer", false, "Asset %s not found in container", assetId.ToString().c_str()); + return {}; + } - int AssetContainer::GetNumWaitingDependencies() const - { - return m_waitingCount.load(); - } + int AssetContainer::GetNumWaitingDependencies() const + { + return m_waitingCount.load(); + } - int AssetContainer::GetInvalidDependencies() const - { - return m_invalidDependencies.load(); - } - } // namespace Data -} // namespace AZ + int AssetContainer::GetInvalidDependencies() const + { + return m_invalidDependencies.load(); + } +} // namespace AZ::Data diff --git a/Code/Framework/AzCore/AzCore/Asset/AssetContainer.h b/Code/Framework/AzCore/AzCore/Asset/AssetContainer.h index e0091d678f..a05343ed0b 100644 --- a/Code/Framework/AzCore/AzCore/Asset/AssetContainer.h +++ b/Code/Framework/AzCore/AzCore/Asset/AssetContainer.h @@ -24,8 +24,8 @@ namespace AZ // AssetContainer loads an asset and all of its dependencies as a collection which is parallellized as much as possible. // With the container, the data will all load in parallel. Dependent asset loads will still obey the expected rules - // where PreLoad assets will emit OnAssetReady before the parent does, and QueueLoad assets will emit OnAssetReady in - // no guaranteed order. However, the OnAssetContainerReady signals will not emit until all PreLoad and QueueLoad assets + // where PreLoad assets will emit OnAssetReady before the parent does, and QueueLoad assets will emit OnAssetReady in + // no guaranteed order. However, the OnAssetContainerReady signals will not emit until all PreLoad and QueueLoad assets // are ready. NoLoad dependencies are not loaded by default but can be loaded along with their dependencies using the // same rules as above by using the LoadAll dependency rule. class AssetContainer : @@ -36,7 +36,7 @@ namespace AZ AZ_CLASS_ALLOCATOR(AssetContainer, SystemAllocator, 0); AssetContainer() = default; - + AssetContainer(Asset asset, const AssetLoadParameters& loadParams); ~AssetContainer(); @@ -81,6 +81,10 @@ namespace AZ // AssetLoadBus void OnAssetDataLoaded(AZ::Data::Asset asset) override; protected: + + virtual AZStd::vector>> CreateAndQueueDependentAssets( + const AZStd::vector& dependencyInfoList, const AssetLoadParameters& loadParamsCopyWithNoLoadingFilter); + // Waiting assets are those which have not yet signalled ready. In the case of PreLoad dependencies the data may have completed the load cycle but // the Assets aren't considered "Ready" yet if there are PreLoad dependencies still loading and will still be in the list until the point that asset and // All of its preload dependencies have been loaded, when it signals OnAssetReady @@ -97,7 +101,7 @@ namespace AZ void AddDependency(Asset&& addDependency); // Add a "graph section" to our list of dependencies. This checks the catalog for all Pre and Queue load assets which are dependents of the requested asset and kicks off loads - // NoLoads which are encounted are placed in another list and can be loaded on demand with the LoadDependency call. + // NoLoads which are encounted are placed in another list and can be loaded on demand with the LoadDependency call. void AddDependentAssets(Asset rootAsset, const AssetLoadParameters& loadParams); // If "PreLoad" assets are found in the graph these are cached and tracked with both OnAssetReady and OnAssetDataLoaded messages. @@ -117,7 +121,7 @@ namespace AZ // duringInit if we're coming from the checkReady method - containers that start ready don't need to signal void HandleReadyAsset(AZ::Data::Asset asset); - // Optimization to save the lookup in the dependencies map + // Optimization to save the lookup in the dependencies map AssetInternal::WeakAsset m_rootAsset; // The root asset id is stored here semi-redundantly on initialization so that we can still refer to it even if the @@ -136,7 +140,7 @@ namespace AZ AZStd::atomic_bool m_finalNotificationSent{false}; mutable AZStd::recursive_mutex m_preloadMutex; - // AssetId -> List of assets it is still waiting on + // AssetId -> List of assets it is still waiting on PreloadAssetListType m_preloadList; // AssetId -> List of assets waiting on it diff --git a/Code/Framework/AzCore/AzCore/Asset/AssetJsonSerializer.cpp b/Code/Framework/AzCore/AzCore/Asset/AssetJsonSerializer.cpp index 3fa3b39ca5..0d28036646 100644 --- a/Code/Framework/AzCore/AzCore/Asset/AssetJsonSerializer.cpp +++ b/Code/Framework/AzCore/AzCore/Asset/AssetJsonSerializer.cpp @@ -12,207 +12,204 @@ #include #include -namespace AZ +namespace AZ::Data { - namespace Data + AZ_CLASS_ALLOCATOR_IMPL(AssetJsonSerializer, SystemAllocator, 0); + + JsonSerializationResult::Result AssetJsonSerializer::Load(void* outputValue, const Uuid& /*outputValueTypeId*/, + const rapidjson::Value& inputValue, JsonDeserializerContext& context) { - AZ_CLASS_ALLOCATOR_IMPL(AssetJsonSerializer, SystemAllocator, 0); + namespace JSR = JsonSerializationResult; - JsonSerializationResult::Result AssetJsonSerializer::Load(void* outputValue, const Uuid& /*outputValueTypeId*/, - const rapidjson::Value& inputValue, JsonDeserializerContext& context) + switch (inputValue.GetType()) { - namespace JSR = JsonSerializationResult; + case rapidjson::kObjectType: + return LoadAsset(outputValue, inputValue, context); + case rapidjson::kArrayType: // fall through + case rapidjson::kNullType: // fall through + case rapidjson::kStringType: // fall through + case rapidjson::kFalseType: // fall through + case rapidjson::kTrueType: // fall through + case rapidjson::kNumberType: + return context.Report(JSR::Tasks::ReadField, JSR::Outcomes::Unsupported, + "Unsupported type. Asset can only be read from an object."); - switch (inputValue.GetType()) + default: + return context.Report(JSR::Tasks::ReadField, JSR::Outcomes::Unknown, "Unknown json type encountered for Asset."); + } + } + + JsonSerializationResult::Result AssetJsonSerializer::Store(rapidjson::Value& outputValue, const void* inputValue, + const void* defaultValue, const Uuid& /*valueTypeId*/, JsonSerializerContext& context) + { + namespace JSR = JsonSerializationResult; + + const Asset* instance = reinterpret_cast*>(inputValue); + const Asset* defaultInstance = reinterpret_cast*>(defaultValue); + + JSR::ResultCode result(JSR::Tasks::WriteValue); + { + ScopedContextPath subPathId(context, "m_assetId"); + const auto* id = &instance->GetId(); + const auto* defaultId = defaultInstance ? &defaultInstance->GetId() : nullptr; + rapidjson::Value assetIdValue; + result = ContinueStoring(assetIdValue, id, defaultId, azrtti_typeid(), context); + if (result.GetOutcome() == JSR::Outcomes::Success || result.GetOutcome() == JSR::Outcomes::PartialDefaults) { - case rapidjson::kObjectType: - return LoadAsset(outputValue, inputValue, context); - case rapidjson::kArrayType: // fall through - case rapidjson::kNullType: // fall through - case rapidjson::kStringType: // fall through - case rapidjson::kFalseType: // fall through - case rapidjson::kTrueType: // fall through - case rapidjson::kNumberType: - return context.Report(JSR::Tasks::ReadField, JSR::Outcomes::Unsupported, - "Unsupported type. Asset can only be read from an object."); - - default: - return context.Report(JSR::Tasks::ReadField, JSR::Outcomes::Unknown, "Unknown json type encountered for Asset."); + if (!outputValue.IsObject()) + { + outputValue.SetObject(); + } + outputValue.AddMember(rapidjson::StringRef("assetId"), AZStd::move(assetIdValue), context.GetJsonAllocator()); } } - JsonSerializationResult::Result AssetJsonSerializer::Store(rapidjson::Value& outputValue, const void* inputValue, - const void* defaultValue, const Uuid& /*valueTypeId*/, JsonSerializerContext& context) { - namespace JSR = JsonSerializationResult; + const AZ::Data::AssetLoadBehavior autoLoadBehavior = instance->GetAutoLoadBehavior(); + const AZ::Data::AssetLoadBehavior defaultAutoLoadBehavior = defaultInstance ? + defaultInstance->GetAutoLoadBehavior() : AZ::Data::AssetLoadBehavior::Default; - const Asset* instance = reinterpret_cast*>(inputValue); - const Asset* defaultInstance = reinterpret_cast*>(defaultValue); - - JSR::ResultCode result(JSR::Tasks::WriteValue); - { - ScopedContextPath subPathId(context, "m_assetId"); - const auto* id = &instance->GetId(); - const auto* defaultId = defaultInstance ? &defaultInstance->GetId() : nullptr; - rapidjson::Value assetIdValue; - result = ContinueStoring(assetIdValue, id, defaultId, azrtti_typeid(), context); - if (result.GetOutcome() == JSR::Outcomes::Success || result.GetOutcome() == JSR::Outcomes::PartialDefaults) - { - if (!outputValue.IsObject()) - { - outputValue.SetObject(); - } - outputValue.AddMember(rapidjson::StringRef("assetId"), AZStd::move(assetIdValue), context.GetJsonAllocator()); - } - } - - { - const AZ::Data::AssetLoadBehavior autoLoadBehavior = instance->GetAutoLoadBehavior(); - const AZ::Data::AssetLoadBehavior defaultAutoLoadBehavior = defaultInstance ? - defaultInstance->GetAutoLoadBehavior() : AZ::Data::AssetLoadBehavior::Default; - - result.Combine( - ContinueStoringToJsonObjectField(outputValue, "loadBehavior", - &autoLoadBehavior, &defaultAutoLoadBehavior, - azrtti_typeid(), context)); - } - - { - ScopedContextPath subPathHint(context, "m_assetHint"); - const AZStd::string* hint = &instance->GetHint(); - const AZStd::string defaultHint; - rapidjson::Value assetHintValue; - JSR::ResultCode resultHint = ContinueStoring(assetHintValue, hint, &defaultHint, azrtti_typeid(), context); - if (resultHint.GetOutcome() == JSR::Outcomes::Success || resultHint.GetOutcome() == JSR::Outcomes::PartialDefaults) - { - if (!outputValue.IsObject()) - { - outputValue.SetObject(); - } - outputValue.AddMember(rapidjson::StringRef("assetHint"), AZStd::move(assetHintValue), context.GetJsonAllocator()); - } - result.Combine(resultHint); - } - - return context.Report(result, - result.GetProcessing() == JSR::Processing::Completed ? "Successfully stored Asset." : "Failed to store Asset."); + result.Combine( + ContinueStoringToJsonObjectField(outputValue, "loadBehavior", + &autoLoadBehavior, &defaultAutoLoadBehavior, + azrtti_typeid(), context)); } - JsonSerializationResult::Result AssetJsonSerializer::LoadAsset(void* outputValue, const rapidjson::Value& inputValue, - JsonDeserializerContext& context) { - namespace JSR = JsonSerializationResult; - - Asset* instance = reinterpret_cast*>(outputValue); - AssetId id; - JSR::ResultCode result(JSR::Tasks::ReadField); - - SerializedAssetTracker* assetTracker = - context.GetMetadata().Find(); - + ScopedContextPath subPathHint(context, "m_assetHint"); + const AZStd::string* hint = &instance->GetHint(); + const AZStd::string defaultHint; + rapidjson::Value assetHintValue; + JSR::ResultCode resultHint = ContinueStoring(assetHintValue, hint, &defaultHint, azrtti_typeid(), context); + if (resultHint.GetOutcome() == JSR::Outcomes::Success || resultHint.GetOutcome() == JSR::Outcomes::PartialDefaults) { - Data::AssetLoadBehavior loadBehavior = instance->GetAutoLoadBehavior(); - - result = - ContinueLoadingFromJsonObjectField(&loadBehavior, - azrtti_typeid(), - inputValue, "loadBehavior", context); - - instance->SetAutoLoadBehavior(loadBehavior); + if (!outputValue.IsObject()) + { + outputValue.SetObject(); + } + outputValue.AddMember(rapidjson::StringRef("assetHint"), AZStd::move(assetHintValue), context.GetJsonAllocator()); } + result.Combine(resultHint); + } - auto it = inputValue.FindMember("assetId"); - if (it != inputValue.MemberEnd()) + return context.Report(result, + result.GetProcessing() == JSR::Processing::Completed ? "Successfully stored Asset." : "Failed to store Asset."); + } + + JsonSerializationResult::Result AssetJsonSerializer::LoadAsset(void* outputValue, const rapidjson::Value& inputValue, + JsonDeserializerContext& context) + { + namespace JSR = JsonSerializationResult; + + Asset* instance = reinterpret_cast*>(outputValue); + AssetId id; + JSR::ResultCode result(JSR::Tasks::ReadField); + + SerializedAssetTracker* assetTracker = + context.GetMetadata().Find(); + + { + Data::AssetLoadBehavior loadBehavior = instance->GetAutoLoadBehavior(); + + result = + ContinueLoadingFromJsonObjectField(&loadBehavior, + azrtti_typeid(), + inputValue, "loadBehavior", context); + + instance->SetAutoLoadBehavior(loadBehavior); + } + + auto it = inputValue.FindMember("assetId"); + if (it != inputValue.MemberEnd()) + { + ScopedContextPath subPath(context, "assetId"); + result.Combine(ContinueLoading(&id, azrtti_typeid(), it->value, context)); + if (!id.m_guid.IsNull()) { - ScopedContextPath subPath(context, "assetId"); - result.Combine(ContinueLoading(&id, azrtti_typeid(), it->value, context)); - if (!id.m_guid.IsNull()) + *instance = AssetManager::Instance().FindOrCreateAsset(id, instance->GetType(), instance->GetAutoLoadBehavior()); + if (!instance->GetId().IsValid()) { - *instance = AssetManager::Instance().FindOrCreateAsset(id, instance->GetType(), instance->GetAutoLoadBehavior()); - if (!instance->GetId().IsValid()) - { - // If the asset failed to be created, FindOrCreateAsset returns an asset instance with a null - // id. To preserve the asset id in the source json, reset the asset to an empty one, but with - // the right id. - const auto loadBehavior = instance->GetAutoLoadBehavior(); - *instance = Asset(id, instance->GetType()); - instance->SetAutoLoadBehavior(loadBehavior); - } + // If the asset failed to be created, FindOrCreateAsset returns an asset instance with a null + // id. To preserve the asset id in the source json, reset the asset to an empty one, but with + // the right id. + const auto loadBehavior = instance->GetAutoLoadBehavior(); + *instance = Asset(id, instance->GetType()); + instance->SetAutoLoadBehavior(loadBehavior); + } - result.Combine(context.Report(result, "Successfully created Asset with id.")); - } - else if (result.GetProcessing() == JSR::Processing::Completed) - { - result.Combine(context.Report(JSR::Tasks::ReadField, JSR::Outcomes::DefaultsUsed, - "Null Asset created.")); - } - else - { - result.Combine(context.Report(result, "Failed to retrieve asset id for Asset.")); - } + result.Combine(context.Report(result, "Successfully created Asset with id.")); + } + else if (result.GetProcessing() == JSR::Processing::Completed) + { + result.Combine(context.Report(JSR::Tasks::ReadField, JSR::Outcomes::DefaultsUsed, + "Null Asset created.")); } else { - result.Combine(context.Report(JSR::Tasks::ReadField, JSR::Outcomes::DefaultsUsed, - "The asset id is missing, so there's not enough information to create an Asset.")); - } - - it = inputValue.FindMember("assetHint"); - if (it != inputValue.MemberEnd()) - { - ScopedContextPath subPath(context, "assetHint"); - AZStd::string hint; - result.Combine(ContinueLoading(&hint, azrtti_typeid(), it->value, context)); - instance->SetHint(AZStd::move(hint)); - } - else - { - result.Combine(context.Report(JSR::Tasks::ReadField, JSR::Outcomes::DefaultsUsed, - "The asset hint is missing for Asset, so it will be left empty.")); - } - - if (assetTracker) - { - assetTracker->FixUpAsset(*instance); - assetTracker->AddAsset(*instance); - } - - bool success = result.GetOutcome() <= JSR::Outcomes::PartialSkip; - bool defaulted = result.GetOutcome() == JSR::Outcomes::DefaultsUsed || result.GetOutcome() == JSR::Outcomes::PartialDefaults; - AZStd::string_view message = - success ? "Successfully loaded information and created instance of Asset." : - defaulted ? "A default id was provided for Asset, so no instance could be created." : - "Not enough information was available to create an instance of Asset or data was corrupted."; - return context.Report(result, message); - } - - void SerializedAssetTracker::SetAssetFixUp(AssetFixUp assetFixUpCallback) - { - m_assetFixUpCallback = AZStd::move(assetFixUpCallback); - } - - void SerializedAssetTracker::FixUpAsset(Asset& asset) - { - if (m_assetFixUpCallback) - { - m_assetFixUpCallback(asset); + result.Combine(context.Report(result, "Failed to retrieve asset id for Asset.")); } } - - void SerializedAssetTracker::AddAsset(Asset asset) + else { - m_serializedAssets.emplace_back(asset); + result.Combine(context.Report(JSR::Tasks::ReadField, JSR::Outcomes::DefaultsUsed, + "The asset id is missing, so there's not enough information to create an Asset.")); } - const AZStd::vector>& SerializedAssetTracker::GetTrackedAssets() const + it = inputValue.FindMember("assetHint"); + if (it != inputValue.MemberEnd()) { - return m_serializedAssets; + ScopedContextPath subPath(context, "assetHint"); + AZStd::string hint; + result.Combine(ContinueLoading(&hint, azrtti_typeid(), it->value, context)); + instance->SetHint(AZStd::move(hint)); + } + else + { + result.Combine(context.Report(JSR::Tasks::ReadField, JSR::Outcomes::DefaultsUsed, + "The asset hint is missing for Asset, so it will be left empty.")); } - AZStd::vector>& SerializedAssetTracker::GetTrackedAssets() + if (assetTracker) { - return m_serializedAssets; + assetTracker->FixUpAsset(*instance); + assetTracker->AddAsset(*instance); } - } // namespace Data -} // namespace AZ + bool success = result.GetOutcome() <= JSR::Outcomes::PartialSkip; + bool defaulted = result.GetOutcome() == JSR::Outcomes::DefaultsUsed || result.GetOutcome() == JSR::Outcomes::PartialDefaults; + AZStd::string_view message = + success ? "Successfully loaded information and created instance of Asset." : + defaulted ? "A default id was provided for Asset, so no instance could be created." : + "Not enough information was available to create an instance of Asset or data was corrupted."; + return context.Report(result, message); + } + + void SerializedAssetTracker::SetAssetFixUp(AssetFixUp assetFixUpCallback) + { + m_assetFixUpCallback = AZStd::move(assetFixUpCallback); + } + + void SerializedAssetTracker::FixUpAsset(Asset& asset) + { + if (m_assetFixUpCallback) + { + m_assetFixUpCallback(asset); + } + } + + void SerializedAssetTracker::AddAsset(Asset asset) + { + m_serializedAssets.emplace_back(asset); + } + + const AZStd::vector>& SerializedAssetTracker::GetTrackedAssets() const + { + return m_serializedAssets; + } + + AZStd::vector>& SerializedAssetTracker::GetTrackedAssets() + { + return m_serializedAssets; + } + +} // namespace AZ::Data diff --git a/Code/Framework/AzCore/AzCore/Asset/AssetManager.cpp b/Code/Framework/AzCore/AzCore/Asset/AssetManager.cpp index 06bb0b0cac..e419666a32 100644 --- a/Code/Framework/AzCore/AzCore/Asset/AssetManager.cpp +++ b/Code/Framework/AzCore/AzCore/Asset/AssetManager.cpp @@ -27,2165 +27,2166 @@ #include #include -namespace AZ +namespace AZ::Data { - namespace Data + AZ_CVAR(bool, cl_assetLoadWarningEnable, false, nullptr, AZ::ConsoleFunctorFlags::Null, + "Enable warnings that show when AssetHandler::LoadAssetData has exceeded the time set in cl_assetLoadWarningMsThreshold."); + AZ_CVAR(uint32_t, cl_assetLoadWarningMsThreshold, 100, nullptr, AZ::ConsoleFunctorFlags::Null, + "Number of milliseconds that AssetHandler::LoadAssetData can execute for before printing a warning."); + AZ_CVAR(int, cl_assetLoadDelay, 0, nullptr, AZ::ConsoleFunctorFlags::Null, + "Number of milliseconds to artifically delay an asset load."); + AZ_CVAR(bool, cl_assetLoadError, false, nullptr, AZ::ConsoleFunctorFlags::Null, + "Enable failure of all asset loads."); + + static constexpr char kAssetDBInstanceVarName[] = "AssetDatabaseInstance"; + + /* + * This is the base class for Async AssetDatabase jobs + */ + class AssetDatabaseAsyncJob + : public AssetDatabaseJob + , public Job { - AZ_CVAR(bool, cl_assetLoadWarningEnable, false, nullptr, AZ::ConsoleFunctorFlags::Null, - "Enable warnings that show when AssetHandler::LoadAssetData has exceeded the time set in cl_assetLoadWarningMsThreshold."); - AZ_CVAR(uint32_t, cl_assetLoadWarningMsThreshold, 100, nullptr, AZ::ConsoleFunctorFlags::Null, - "Number of milliseconds that AssetHandler::LoadAssetData can execute for before printing a warning."); - AZ_CVAR(int, cl_assetLoadDelay, 0, nullptr, AZ::ConsoleFunctorFlags::Null, - "Number of milliseconds to artifically delay an asset load."); - AZ_CVAR(bool, cl_assetLoadError, false, nullptr, AZ::ConsoleFunctorFlags::Null, - "Enable failure of all asset loads."); - - static constexpr char kAssetDBInstanceVarName[] = "AssetDatabaseInstance"; - - /* - * This is the base class for Async AssetDatabase jobs - */ - class AssetDatabaseAsyncJob - : public AssetDatabaseJob - , public Job + public: + AssetDatabaseAsyncJob(JobContext* jobContext, bool deleteWhenDone, AssetManager* owner, const Asset& asset, AssetHandler* assetHandler) + : AssetDatabaseJob(owner, asset, assetHandler) + , Job(deleteWhenDone, jobContext) { - public: - AssetDatabaseAsyncJob(JobContext* jobContext, bool deleteWhenDone, AssetManager* owner, const Asset& asset, AssetHandler* assetHandler) - : AssetDatabaseJob(owner, asset, assetHandler) - , Job(deleteWhenDone, jobContext) - { - } + } - ~AssetDatabaseAsyncJob() override - { - } - }; - - /** - * Internally allows threads blocking on asset loads to be notified on load completion. - */ - class BlockingAssetLoadEvents - : public EBusTraits + ~AssetDatabaseAsyncJob() override { - public: - ////////////////////////////////////////////////////////////////////////// - // EBusTraits overrides - static const AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::ById; - using BusIdType = AssetId; - using MutexType = AZStd::recursive_mutex; - - template - struct AssetJobConnectionPolicy - : public EBusConnectionPolicy - { - static void Connect(typename Bus::BusPtr& busPtr, typename Bus::Context& context, typename Bus::HandlerNode& handler, typename Bus::Context::ConnectLockGuard& connectLock, const typename Bus::BusIdType& id = 0) - { - typename Bus::BusIdType actualId = AssetInternal::ResolveAssetId(id); - EBusConnectionPolicy::Connect(busPtr, context, handler, connectLock, actualId); - - // If the asset is loaded or failed already, deliver the status update immediately - // Note that we check IsReady here, ReadyPreNotify must be tested because there is - // a small gap between ReadyPreNotify and Ready where the callback could be missed. - // Also note because the Asset<> reference isn't passed around anywhere, it doesn't matter - // what the AssetLoadBehavior is set to, as it will never make it back to any callers. - Asset assetData(AssetInternal::GetAssetData(actualId, AssetLoadBehavior::Default)); - if (assetData) - { - if (assetData->IsReady() || assetData->IsError()) - { - connectLock.unlock(); - handler->OnLoadComplete(); - } - } - } - }; - - template - using ConnectionPolicy = AssetJobConnectionPolicy; - - virtual void OnLoadComplete() = 0; - virtual void OnLoadCanceled(AssetId assetId) = 0; - }; - - using BlockingAssetLoadBus = EBus; - - /* - * This class processes async AssetDatabase load jobs - */ - class LoadAssetJob - : public AssetDatabaseAsyncJob - { - public: - AZ_CLASS_ALLOCATOR(LoadAssetJob, ThreadPoolAllocator, 0); - - LoadAssetJob(AssetManager* owner, const Asset& asset, - AZStd::shared_ptr dataStream, bool isReload, AZ::IO::IStreamerTypes::RequestStatus requestState, - AssetHandler* handler, const AssetLoadParameters& loadParams, bool signalLoaded) - : AssetDatabaseAsyncJob(JobContext::GetGlobalContext(), true, owner, asset, handler) - , m_dataStream(dataStream) - , m_isReload(isReload) - , m_requestState(requestState) - , m_loadParams(loadParams) - , m_signalLoaded(signalLoaded) - { - AZ_Assert(m_dataStream, "Data stream pointer received through the callback from AZ::IO::Streamer is invalid."); - - AZ_Assert((m_requestState == AZ::IO::IStreamerTypes::RequestStatus::Completed) - || (m_requestState == AZ::IO::IStreamerTypes::RequestStatus::Canceled) - || (m_requestState == AZ::IO::IStreamerTypes::RequestStatus::Failed), - "AssetManager::LoadAssetJob was called with an unexpected streamer state: %i", m_requestState); - } - - ~LoadAssetJob() override - { - } - - void Process() override - { - Asset asset = m_asset.GetStrongReference(); - - // Verify that we didn't somehow get here after the Asset Manager has finished shutting down. - AZ_Assert(AssetManager::IsReady(), "Asset Manager shutdown didn't clean up pending asset loads properly."); - if (!AssetManager::IsReady()) - { - return; - } - - bool shouldCancel = m_owner->ShouldCancelAllActiveJobs() - || !asset // No outstanding references, so cancel the load - || m_requestState == AZ::IO::IStreamerTypes::RequestStatus::Canceled; - - if (shouldCancel) - { - BlockingAssetLoadBus::Event(m_asset.GetId(), &BlockingAssetLoadBus::Events::OnLoadCanceled, m_asset.GetId()); - AssetManagerBus::Broadcast(&AssetManagerBus::Events::OnAssetCanceled, m_asset.GetId()); - } - else - { - - AZ_PROFILE_SCOPE(AzCore, "AZ::Data::LoadAssetJob::Process: %s", - asset.GetHint().c_str()); - - AZ_ASSET_ATTACH_TO_SCOPE(this); - - if (m_owner->ValidateAndRegisterAssetLoading(asset)) - { - LoadAndSignal(asset); - } - } - } - - void LoadAndSignal(Asset& asset) - { - const bool loadSucceeded = LoadData(); - - if (m_signalLoaded && loadSucceeded) - { - AZ_Assert(!m_isReload, "OnAssetDataLoaded signal isn't supported for asset reloads."); - // This asset has preload dependencies, we need to evaluate whether they're all ready before calling PostLoad - AssetLoadBus::Event(asset.GetId(), &AssetLoadBus::Events::OnAssetDataLoaded, asset); - } - else - { - // As long as we don't need to signal preload dependencies, just finish the load whether or not it was successful. - m_owner->PostLoad(asset, loadSucceeded, m_isReload, m_assetHandler); - } - } - - bool LoadData() - { - Asset asset = m_asset.GetStrongReference(); - - if(cl_assetLoadDelay > 0) - { - AZ_PROFILE_SCOPE(AzCore, "LoadData suspended"); - AZStd::this_thread::sleep_for(AZStd::chrono::milliseconds(cl_assetLoadDelay)); - } - - AZ_ASSET_NAMED_SCOPE(asset.GetHint().c_str()); - bool loadedSuccessfully = false; - - if (!cl_assetLoadError && m_requestState == AZ::IO::IStreamerTypes::RequestStatus::Completed) - { - if (m_dataStream->IsFullyLoaded()) - { - AssetHandler::LoadResult result = - m_assetHandler->LoadAssetDataFromStream(asset, m_dataStream, m_loadParams.m_assetLoadFilterCB); - loadedSuccessfully = (result == AssetHandler::LoadResult::LoadComplete); - } - } - - return loadedSuccessfully; - } - - private: - AZStd::shared_ptr m_dataStream; - AssetLoadParameters m_loadParams{}; - AZ::IO::IStreamerTypes::RequestStatus m_requestState{ AZ::IO::IStreamerTypes::RequestStatus::Pending}; - bool m_isReload{ false }; - bool m_signalLoaded{ false }; - }; - - - /** - * Utility class to wait when a blocking load is requested for an asset that's already loading asynchronously. - * Uses the BlockingAssetLoadBus to detect completion, and a semaphore to signal it. - */ - - class WaitForAsset - : public BlockingAssetLoadBus::Handler - { - public: - AZ_CLASS_ALLOCATOR(WaitForAsset, ThreadPoolAllocator, 0); - - - WaitForAsset(const Asset& assetToWaitFor, bool shouldDispatchEvents) - : m_assetData(assetToWaitFor) - , m_shouldDispatchEvents(shouldDispatchEvents) - { - // Track all blocking requests with the AssetManager. This enables load jobs to potentially get routed - // to the thread that's currently blocking waiting on the load job to complete. - AssetManager::Instance().AddBlockingRequest(m_assetData.GetId(), this); - } - - ~WaitForAsset() override - { - // Stop tracking the blocking request, which will ensure that load jobs won't be provided to this instance - // for processing. - AssetManager::Instance().RemoveBlockingRequest(m_assetData.GetId(), this); - - // It shouldn't be possible to destroy a blocking load request before the load job that it's blocked on - // has been processed, so assert if it ever happens, but make sure to process it just in case. - if (m_loadJob) - { - // (If a valid case is ever found where this can occur, it should be safe to remove the assert) - AZ_Assert(false, "Blocking load request is being deleted before it could process the blocking load."); - ProcessLoadJob(); - } - } - - // Provides a blocked load with a LoadJob to process while it's blocking. - // Returns true if it can be queued, false if it can't. - bool QueueAssetLoadJob(LoadAssetJob* loadJob) - { - if(m_shouldDispatchEvents) - { - // Any load job that is going to be dispatching events should not accept additional work since dispatching events - // can lead to more code that's blocking on an asset load which prevents us from finishing the dispatch - // and doing the assigned work. - // Specifically, if dispatching leads to a second block call, the load job will be assigned to the first block call, - // which will never be completed until the second block call is finished. If both blocks are on the same asset, - // we end up deadlocked. - return false; - } - - AZStd::scoped_lock mutexLock(m_loadJobMutex); - - AZ_Assert(!m_loadJob, "Trying to process multiple load jobs for the same asset with the same blocking handler."); - if (!m_loadJob) - { - m_loadJob = loadJob; - m_waitEvent.release(); - return true; - } - - return false; - } - - void OnLoadComplete() override - { - Finish(); - } - - void OnLoadCanceled([[maybe_unused]] const AssetId assetId) override - { - Finish(); - } - - void WaitUntilReady() - { - BusConnect(m_assetData.GetId()); - - Wait(); - - BusDisconnect(m_assetData.GetId()); - } - - protected: - void Wait() - { - AZ_PROFILE_SCOPE(AzCore, "WaitForAsset - %s", m_assetData.GetHint().c_str()); - - // Continue to loop until the load completes. (Most of the time in the loop will be spent in a thread-blocking state) - while (!m_loadCompleted) - { - if (m_shouldDispatchEvents) - { - // The event will wake up either when the load finishes, a load job is queued for processing, or every - // N milliseconds to see if it should dispatch events. - constexpr int MaxWaitBetweenDispatchMs = 1; - while (!m_waitEvent.try_acquire_for(AZStd::chrono::milliseconds(MaxWaitBetweenDispatchMs))) - { - AssetManager::Instance().DispatchEvents(); - } - } - else - { - - // Don't wake up until a load job is queued for processing or the load is entirely finished. - m_waitEvent.acquire(); - } - - // Check to see if any load jobs have been provided for this thread to process. - // (Load jobs will attempt to reuse blocked threads before spinning off new job threads) - ProcessLoadJob(); - } - - // Pump the AssetBus function queue once more after the load has completed in case additional - // functions have been queued between the last call to DispatchEvents and the completion - // of the current load job - if (m_shouldDispatchEvents) - { - AssetManager::Instance().DispatchEvents(); - } - } - - void Finish() - { - AZ_PROFILE_FUNCTION(AzCore); - m_loadCompleted = true; - m_waitEvent.release(); - } - - bool ProcessLoadJob() - { - AZStd::scoped_lock mutexLock(m_loadJobMutex); - bool jobProcessed = false; - - if (m_loadJob) - { - m_loadJob->Process(); - if (m_loadJob->IsAutoDelete()) - { - delete m_loadJob; - } - m_loadJob = nullptr; - jobProcessed = true; - } - - return jobProcessed; - } - - Asset m_assetData; - AZStd::binary_semaphore m_waitEvent; - const bool m_shouldDispatchEvents{ false }; - LoadAssetJob* m_loadJob{ nullptr }; - AZStd::mutex m_loadJobMutex; - AZStd::atomic_bool m_loadCompleted{ false }; - }; - - - /* - * This class processes async AssetDatabase save jobs - */ - class SaveAssetJob - : public AssetDatabaseAsyncJob - { - public: - AZ_CLASS_ALLOCATOR(SaveAssetJob, ThreadPoolAllocator, 0); - - SaveAssetJob(JobContext* jobContext, AssetManager* owner, const Asset& asset, AssetHandler* assetHandler) - : AssetDatabaseAsyncJob(jobContext, true, owner, asset, assetHandler) - { - } - - ~SaveAssetJob() override - { - } - - void Process() override - { - SaveAsset(); - } - - void SaveAsset() - { - auto asset = m_asset.GetStrongReference(); - AZ_PROFILE_FUNCTION(AzCore); - bool isSaved = false; - AssetStreamInfo saveInfo = m_owner->GetSaveStreamInfoForAsset(asset.GetId(), asset.GetType()); - if (saveInfo.IsValid()) - { - IO::FileIOStream stream(saveInfo.m_streamName.c_str(), saveInfo.m_streamFlags); - stream.Seek(saveInfo.m_dataOffset, IO::GenericStream::SeekMode::ST_SEEK_BEGIN); - isSaved = m_assetHandler->SaveAssetData(asset, &stream); - } - // queue broadcast message for delivery on game thread - AssetBus::QueueEvent(asset.GetId(), &AssetBus::Events::OnAssetSaved, asset, isSaved); - } - }; + } + }; + /** + * Internally allows threads blocking on asset loads to be notified on load completion. + */ + class BlockingAssetLoadEvents + : public EBusTraits + { + public: ////////////////////////////////////////////////////////////////////////// - // Globals - EnvironmentVariable AssetManager::s_assetDB = nullptr; - ////////////////////////////////////////////////////////////////////////// + // EBusTraits overrides + static const AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::ById; + using BusIdType = AssetId; + using MutexType = AZStd::recursive_mutex; - //========================================================================= - // AssetDatabaseJob - // [4/3/2014] - //========================================================================= - AssetDatabaseJob::AssetDatabaseJob(AssetManager* owner, const Asset& asset, AssetHandler* assetHandler) + template + struct AssetJobConnectionPolicy + : public EBusConnectionPolicy { - m_owner = owner; - m_asset = AssetInternal::WeakAsset(asset); - m_assetHandler = assetHandler; - owner->AddJob(this); - } - - //========================================================================= - // ~AssetDatabaseJob - // [4/3/2014] - //========================================================================= - AssetDatabaseJob::~AssetDatabaseJob() - { - // Make sure that the asset reference is cleared out prior to removing the job registration. - // It's possible that clearing this reference will trigger the cleanup code for the asset, so if we wait for the - // destructor to clear it *after* the RemoveJob call, then HasActiveJobsOrStreamerRequests() will be able to return - // false even though the job is still executing asset-related code. - m_asset = {}; - m_owner->RemoveJob(this); - } - - //========================================================================= - // Create - // [6/12/2012] - //========================================================================= - bool AssetManager::Create(const Descriptor& desc) - { - AZ_Assert(!s_assetDB || !s_assetDB.Get(), "AssetManager already created!"); - - if (!s_assetDB) + static void Connect(typename Bus::BusPtr& busPtr, typename Bus::Context& context, typename Bus::HandlerNode& handler, typename Bus::Context::ConnectLockGuard& connectLock, const typename Bus::BusIdType& id = 0) { - s_assetDB = Environment::CreateVariable(kAssetDBInstanceVarName); - } - if (!s_assetDB.Get()) - { - s_assetDB.Set(aznew AssetManager(desc)); - } + typename Bus::BusIdType actualId = AssetInternal::ResolveAssetId(id); + EBusConnectionPolicy::Connect(busPtr, context, handler, connectLock, actualId); - return true; - } - - //========================================================================= - // Destroy - // [6/12/2012] - //========================================================================= - void AssetManager::Destroy() - { - AZ_Assert(s_assetDB, "AssetManager not created!"); - delete (*s_assetDB); - *s_assetDB = nullptr; - } - - //========================================================================= - // IsReady - //========================================================================= - bool AssetManager::IsReady() - { - if (!s_assetDB) - { - s_assetDB = Environment::FindVariable(kAssetDBInstanceVarName); - } - - return s_assetDB && *s_assetDB; - } - - //========================================================================= - // Instance - //========================================================================= - AssetManager& AssetManager::Instance() - { - if (!s_assetDB) - { - s_assetDB = Environment::FindVariable(kAssetDBInstanceVarName); - } - - AZ_Assert(s_assetDB && *s_assetDB, "AssetManager not created!"); - return *(*s_assetDB); - } - - bool AssetManager::SetInstance(AssetManager* assetManager) - { - if (!s_assetDB) - { - s_assetDB = Environment::CreateVariable(kAssetDBInstanceVarName); - } - - // The old instance needs to be null or else it will leak on the assignment. - AZ_Assert(!(*s_assetDB), - "AssetManager::SetInstance was called without first destroying the old instance and setting it to nullptr. " - "This will cause the previous AssetManager instance to leak." ); - - (*s_assetDB) = assetManager; - return true; - } - - //========================================================================= - // AssetDatabase - // [6/12/2012] - //========================================================================= - AssetManager::AssetManager(const AssetManager::Descriptor& desc) - : m_mainThreadId(AZStd::this_thread::get_id()) - , m_debugAssetEvents(AZ::Interface::Get()) - { - (void)desc; - - AssetManagerBus::Handler::BusConnect(); - } - - //========================================================================= - // ~AssetManager - // [6/12/2012] - //========================================================================= - AssetManager::~AssetManager() - { - PrepareShutDown(); - - // Acquire the asset lock to make sure nobody else is trying to do anything fancy with assets - AZStd::scoped_lock assetLock(m_assetMutex); - - while (!m_handlers.empty()) - { - AssetHandlerMap::iterator it = m_handlers.begin(); - AssetHandler* handler = it->second; - UnregisterHandler(handler); - delete handler; - } - - AssetManagerBus::Handler::BusDisconnect(); - } - - //========================================================================= - // DispatchEvents - // [04/02/2014] - //========================================================================= - void AssetManager::DispatchEvents() - { - AZ_PROFILE_FUNCTION(AzCore); - AssetManagerNotificationBus::Broadcast(&AssetManagerNotificationBus::Events::OnAssetEventsDispatchBegin); - while (AssetBus::QueuedEventCount()) - { - AssetBus::ExecuteQueuedEvents(); - } - AssetManagerNotificationBus::Broadcast(&AssetManagerNotificationBus::Events::OnAssetEventsDispatchEnd); - } - - //========================================================================= - void AssetManager::SetAssetInfoUpgradingEnabled(bool enable) - { - m_assetInfoUpgradingEnabled = enable; - } - - bool AssetManager::GetAssetInfoUpgradingEnabled() const - { -#if defined(_RELEASE) - // in release ("FINAL") builds, we never do this. - return false; -#else - return m_assetInfoUpgradingEnabled; -#endif - } - - bool AssetManager::ShouldCancelAllActiveJobs() const - { - return m_cancelAllActiveJobs; - } - - void AssetManager::SetParallelDependentLoadingEnabled(bool enable) - { - m_enableParallelDependentLoading = enable; - } - - bool AssetManager::GetParallelDependentLoadingEnabled() const - { - return m_enableParallelDependentLoading; - } - - void AssetManager::PrepareShutDown() - { - m_cancelAllActiveJobs = true; - - // We want to ensure that no active load jobs are in flight and - // therefore we need to wait till all jobs have completed. Please note that jobs get deleted automatically once they complete. - WaitForActiveJobsAndStreamerRequestsToFinish(); - - m_ownedAssetContainerLookup.clear(); - m_ownedAssetContainers.clear(); - m_assetContainers.clear(); - - // Ensure that there are no queued events on the AssetBus - DispatchEvents(); - } - - void AssetManager::WaitForActiveJobsAndStreamerRequestsToFinish() - { - while (HasActiveJobsOrStreamerRequests()) - { - DispatchEvents(); - AZStd::this_thread::yield(); - } - } - - //========================================================================= - // RegisterHandler - // [7/9/2014] - //========================================================================= - void AssetManager::RegisterHandler(AssetHandler* handler, const AssetType& assetType) - { - AZ_Error("AssetDatabase", handler != nullptr, "Attempting to register a null asset handler!"); - if (handler) - { - if (m_handlers.insert(AZStd::make_pair(assetType, handler)).second) + // If the asset is loaded or failed already, deliver the status update immediately + // Note that we check IsReady here, ReadyPreNotify must be tested because there is + // a small gap between ReadyPreNotify and Ready where the callback could be missed. + // Also note because the Asset<> reference isn't passed around anywhere, it doesn't matter + // what the AssetLoadBehavior is set to, as it will never make it back to any callers. + Asset assetData(AssetInternal::GetAssetData(actualId, AssetLoadBehavior::Default)); + if (assetData) { - handler->m_nHandledTypes++; - } - else - { - AZ_Error("AssetDatabase", false, "Asset type %s already has a handler registered! New registration ignored!", assetType.ToString().c_str()); - } - } - } - - //========================================================================= - // UnregisterHandler - // [7/9/2014] - //========================================================================= - void AssetManager::UnregisterHandler(AssetHandler* handler) - { - AZ_Error("AssetDatabase", handler != nullptr, "Attempting to unregister a null asset handler!"); - if (handler) - { - for (AssetHandlerMap::iterator it = m_handlers.begin(); it != m_handlers.end(); /*++it*/) - { - if (it->second == handler) + if (assetData->IsReady() || assetData->IsError()) { - // When unregistering asset handlers, it's possible that there are still some load jobs that have "finished" but - // haven't destroyed themselves yet by the time the asset handler gets unregistered. LoadAssetJob contains a weak - // asset reference that doesn't clear until the job is destroyed, which happens *after* the OnAssetReady - // notification is triggered. If the thread gets swapped out between the OnAssetReady and the job destruction, - // the job will still be holding onto an asset reference for this asset handler, and it will trigger the - // error below. To ensure that this case doesn't happen, we will instead call - // WaitForActiveJobsAndStreamerRequestsToFinish() to make sure that any in-process jobs have completely cleaned - // themselves up before proceeding forward. - // One example of this pattern occurs in unit tests, where the test loads an asset, validates it, destroys the - // asset, and unregisters the handler, all in rapid succession. This would extremely infrequently - // (~1 per 5000 runs) trigger the error case if we didn't wait for the jobs to finish here. - WaitForActiveJobsAndStreamerRequestsToFinish(); - - { - // this scope is used to control the scope of the lock. - AZStd::lock_guard assetLock(m_assetMutex); - for (const auto &assetEntry : m_assets) - { - // is the handler that handles this type, this handler we're removing? - if (assetEntry.second->m_registeredHandler == handler) - { - AZ_Error("AssetManager", false, "Asset handler for %s is being removed, when assetid %s is still loaded!\n", - assetEntry.second->GetType().ToString().c_str(), - assetEntry.second->GetId().ToString().c_str()); // this will write the name IF AVAILABLE - assetEntry.second->UnregisterWithHandler(); - } - } - } - it = m_handlers.erase(it); - handler->m_nHandledTypes--; - } - else - { - ++it; + connectLock.unlock(); + handler->OnLoadComplete(); } } } + }; + + template + using ConnectionPolicy = AssetJobConnectionPolicy; + + virtual void OnLoadComplete() = 0; + virtual void OnLoadCanceled(AssetId assetId) = 0; + }; + + using BlockingAssetLoadBus = EBus; + + /* + * This class processes async AssetDatabase load jobs + */ + class LoadAssetJob + : public AssetDatabaseAsyncJob + { + public: + AZ_CLASS_ALLOCATOR(LoadAssetJob, ThreadPoolAllocator, 0); + + LoadAssetJob(AssetManager* owner, const Asset& asset, + AZStd::shared_ptr dataStream, bool isReload, AZ::IO::IStreamerTypes::RequestStatus requestState, + AssetHandler* handler, const AssetLoadParameters& loadParams, bool signalLoaded) + : AssetDatabaseAsyncJob(JobContext::GetGlobalContext(), true, owner, asset, handler) + , m_dataStream(dataStream) + , m_isReload(isReload) + , m_requestState(requestState) + , m_loadParams(loadParams) + , m_signalLoaded(signalLoaded) + { + AZ_Assert(m_dataStream, "Data stream pointer received through the callback from AZ::IO::Streamer is invalid."); + + AZ_Assert((m_requestState == AZ::IO::IStreamerTypes::RequestStatus::Completed) + || (m_requestState == AZ::IO::IStreamerTypes::RequestStatus::Canceled) + || (m_requestState == AZ::IO::IStreamerTypes::RequestStatus::Failed), + "AssetManager::LoadAssetJob was called with an unexpected streamer state: %i", m_requestState); } - //========================================================================= - // RegisterCatalog - // [8/27/2012] - //========================================================================= - void AssetManager::RegisterCatalog(AssetCatalog* catalog, const AssetType& assetType) + ~LoadAssetJob() override { - AZ_Error("AssetDatabase", catalog != nullptr, "Attempting to register a null catalog!"); - if (catalog) - { - AZStd::scoped_lock l(m_catalogMutex); - if (m_catalogs.insert(AZStd::make_pair(assetType, catalog)).second == false) - { - AZ_Error("AssetDatabase", false, "Asset type %s already has a catalog registered! New registration ignored!", assetType.ToString().c_str()); - } - } } - //========================================================================= - // UnregisterCatalog - // [8/27/2012] - //========================================================================= - void AssetManager::UnregisterCatalog(AssetCatalog* catalog) + void Process() override { - AZ_Error("AssetDatabase", catalog != nullptr, "Attempting to unregister a null catalog!"); - if (catalog) - { - AZStd::scoped_lock l(m_catalogMutex); - for (AssetCatalogMap::iterator iter = m_catalogs.begin(); iter != m_catalogs.end(); ) - { - if (iter->second == catalog) - { - iter = m_catalogs.erase(iter); - } - else - { - ++iter; - } + Asset asset = m_asset.GetStrongReference(); - } - } - } - - //========================================================================= - // GetHandledAssetTypes - // [6/27/2016] - //========================================================================= - void AssetManager::GetHandledAssetTypes(AssetCatalog* catalog, AZStd::vector& assetTypes) - { - for (AssetCatalogMap::iterator iter = m_catalogs.begin(); iter != m_catalogs.end(); iter++) - { - if (iter->second == catalog) - { - assetTypes.push_back(iter->first); - } - } - } - - void AssetManager::SuspendAssetRelease() - { - ++m_suspendAssetRelease; - } - - void AssetManager::ResumeAssetRelease() - { - if(--m_suspendAssetRelease != 0) + // Verify that we didn't somehow get here after the Asset Manager has finished shutting down. + AZ_Assert(AssetManager::IsReady(), "Asset Manager shutdown didn't clean up pending asset loads properly."); + if (!AssetManager::IsReady()) { return; } - AZStd::scoped_lock assetLock(m_assetMutex); - // First, release any containers that were loading this asset - for (auto asset = m_assets.begin();asset != m_assets.end();) + bool shouldCancel = m_owner->ShouldCancelAllActiveJobs() + || !asset // No outstanding references, so cancel the load + || m_requestState == AZ::IO::IStreamerTypes::RequestStatus::Canceled; + + if (shouldCancel) { - if (asset->second->m_useCount == 0) + BlockingAssetLoadBus::Event(m_asset.GetId(), &BlockingAssetLoadBus::Events::OnLoadCanceled, m_asset.GetId()); + AssetManagerBus::Broadcast(&AssetManagerBus::Events::OnAssetCanceled, m_asset.GetId()); + } + else + { + + AZ_PROFILE_SCOPE(AzCore, "AZ::Data::LoadAssetJob::Process: %s", + asset.GetHint().c_str()); + + AZ_ASSET_ATTACH_TO_SCOPE(this); + + if (m_owner->ValidateAndRegisterAssetLoading(asset)) { - auto releaseAsset = asset->second; - ++asset; - ReleaseAssetContainersForAsset(releaseAsset); + LoadAndSignal(asset); + } + } + } + + void LoadAndSignal(Asset& asset) + { + const bool loadSucceeded = LoadData(); + + if (m_signalLoaded && loadSucceeded) + { + AZ_Assert(!m_isReload, "OnAssetDataLoaded signal isn't supported for asset reloads."); + // This asset has preload dependencies, we need to evaluate whether they're all ready before calling PostLoad + AssetLoadBus::Event(asset.GetId(), &AssetLoadBus::Events::OnAssetDataLoaded, asset); + } + else + { + // As long as we don't need to signal preload dependencies, just finish the load whether or not it was successful. + m_owner->PostLoad(asset, loadSucceeded, m_isReload, m_assetHandler); + } + } + + bool LoadData() + { + Asset asset = m_asset.GetStrongReference(); + + if(cl_assetLoadDelay > 0) + { + AZ_PROFILE_SCOPE(AzCore, "LoadData suspended"); + AZStd::this_thread::sleep_for(AZStd::chrono::milliseconds(cl_assetLoadDelay)); + } + + AZ_ASSET_NAMED_SCOPE(asset.GetHint().c_str()); + bool loadedSuccessfully = false; + + if (!cl_assetLoadError && m_requestState == AZ::IO::IStreamerTypes::RequestStatus::Completed) + { + if (m_dataStream->IsFullyLoaded()) + { + AssetHandler::LoadResult result = + m_assetHandler->LoadAssetDataFromStream(asset, m_dataStream, m_loadParams.m_assetLoadFilterCB); + loadedSuccessfully = (result == AssetHandler::LoadResult::LoadComplete); + } + } + + return loadedSuccessfully; + } + + private: + AZStd::shared_ptr m_dataStream; + AssetLoadParameters m_loadParams{}; + AZ::IO::IStreamerTypes::RequestStatus m_requestState{ AZ::IO::IStreamerTypes::RequestStatus::Pending}; + bool m_isReload{ false }; + bool m_signalLoaded{ false }; + }; + + + /** + * Utility class to wait when a blocking load is requested for an asset that's already loading asynchronously. + * Uses the BlockingAssetLoadBus to detect completion, and a semaphore to signal it. + */ + + class WaitForAsset + : public BlockingAssetLoadBus::Handler + { + public: + AZ_CLASS_ALLOCATOR(WaitForAsset, ThreadPoolAllocator, 0); + + + WaitForAsset(const Asset& assetToWaitFor, bool shouldDispatchEvents) + : m_assetData(assetToWaitFor) + , m_shouldDispatchEvents(shouldDispatchEvents) + { + // Track all blocking requests with the AssetManager. This enables load jobs to potentially get routed + // to the thread that's currently blocking waiting on the load job to complete. + AssetManager::Instance().AddBlockingRequest(m_assetData.GetId(), this); + } + + ~WaitForAsset() override + { + // Stop tracking the blocking request, which will ensure that load jobs won't be provided to this instance + // for processing. + AssetManager::Instance().RemoveBlockingRequest(m_assetData.GetId(), this); + + // It shouldn't be possible to destroy a blocking load request before the load job that it's blocked on + // has been processed, so assert if it ever happens, but make sure to process it just in case. + if (m_loadJob) + { + // (If a valid case is ever found where this can occur, it should be safe to remove the assert) + AZ_Assert(false, "Blocking load request is being deleted before it could process the blocking load."); + ProcessLoadJob(); + } + } + + // Provides a blocked load with a LoadJob to process while it's blocking. + // Returns true if it can be queued, false if it can't. + bool QueueAssetLoadJob(LoadAssetJob* loadJob) + { + if(m_shouldDispatchEvents) + { + // Any load job that is going to be dispatching events should not accept additional work since dispatching events + // can lead to more code that's blocking on an asset load which prevents us from finishing the dispatch + // and doing the assigned work. + // Specifically, if dispatching leads to a second block call, the load job will be assigned to the first block call, + // which will never be completed until the second block call is finished. If both blocks are on the same asset, + // we end up deadlocked. + return false; + } + + AZStd::scoped_lock mutexLock(m_loadJobMutex); + + AZ_Assert(!m_loadJob, "Trying to process multiple load jobs for the same asset with the same blocking handler."); + if (!m_loadJob) + { + m_loadJob = loadJob; + m_waitEvent.release(); + return true; + } + + return false; + } + + void OnLoadComplete() override + { + Finish(); + } + + void OnLoadCanceled([[maybe_unused]] const AssetId assetId) override + { + Finish(); + } + + void WaitUntilReady() + { + BusConnect(m_assetData.GetId()); + + Wait(); + + BusDisconnect(m_assetData.GetId()); + } + + protected: + void Wait() + { + AZ_PROFILE_SCOPE(AzCore, "WaitForAsset - %s", m_assetData.GetHint().c_str()); + + // Continue to loop until the load completes. (Most of the time in the loop will be spent in a thread-blocking state) + while (!m_loadCompleted) + { + if (m_shouldDispatchEvents) + { + // The event will wake up either when the load finishes, a load job is queued for processing, or every + // N milliseconds to see if it should dispatch events. + constexpr int MaxWaitBetweenDispatchMs = 1; + while (!m_waitEvent.try_acquire_for(AZStd::chrono::milliseconds(MaxWaitBetweenDispatchMs))) + { + AssetManager::Instance().DispatchEvents(); + } } else { - ++asset; + + // Don't wake up until a load job is queued for processing or the load is entirely finished. + m_waitEvent.acquire(); } + + // Check to see if any load jobs have been provided for this thread to process. + // (Load jobs will attempt to reuse blocked threads before spinning off new job threads) + ProcessLoadJob(); } - // Second, release the assets themselves - - AZStd::vector assetsToRelease; - - for(auto&& asset : m_assets) + // Pump the AssetBus function queue once more after the load has completed in case additional + // functions have been queued between the last call to DispatchEvents and the completion + // of the current load job + if (m_shouldDispatchEvents) { - if(asset.second->m_weakUseCount == 0) + AssetManager::Instance().DispatchEvents(); + } + } + + void Finish() + { + AZ_PROFILE_FUNCTION(AzCore); + m_loadCompleted = true; + m_waitEvent.release(); + } + + bool ProcessLoadJob() + { + AZStd::scoped_lock mutexLock(m_loadJobMutex); + bool jobProcessed = false; + + if (m_loadJob) + { + m_loadJob->Process(); + if (m_loadJob->IsAutoDelete()) { - // Keep a separate list of assets to release, because releasing them will modify the m_assets list that we're - // currently looping on. - assetsToRelease.push_back(asset.second); + delete m_loadJob; + } + m_loadJob = nullptr; + jobProcessed = true; + } + + return jobProcessed; + } + + Asset m_assetData; + AZStd::binary_semaphore m_waitEvent; + const bool m_shouldDispatchEvents{ false }; + LoadAssetJob* m_loadJob{ nullptr }; + AZStd::mutex m_loadJobMutex; + AZStd::atomic_bool m_loadCompleted{ false }; + }; + + + /* + * This class processes async AssetDatabase save jobs + */ + class SaveAssetJob + : public AssetDatabaseAsyncJob + { + public: + AZ_CLASS_ALLOCATOR(SaveAssetJob, ThreadPoolAllocator, 0); + + SaveAssetJob(JobContext* jobContext, AssetManager* owner, const Asset& asset, AssetHandler* assetHandler) + : AssetDatabaseAsyncJob(jobContext, true, owner, asset, assetHandler) + { + } + + ~SaveAssetJob() override + { + } + + void Process() override + { + SaveAsset(); + } + + void SaveAsset() + { + auto asset = m_asset.GetStrongReference(); + AZ_PROFILE_FUNCTION(AzCore); + bool isSaved = false; + AssetStreamInfo saveInfo = m_owner->GetSaveStreamInfoForAsset(asset.GetId(), asset.GetType()); + if (saveInfo.IsValid()) + { + IO::FileIOStream stream(saveInfo.m_streamName.c_str(), saveInfo.m_streamFlags); + stream.Seek(saveInfo.m_dataOffset, IO::GenericStream::SeekMode::ST_SEEK_BEGIN); + isSaved = m_assetHandler->SaveAssetData(asset, &stream); + } + // queue broadcast message for delivery on game thread + AssetBus::QueueEvent(asset.GetId(), &AssetBus::Events::OnAssetSaved, asset, isSaved); + } + }; + + ////////////////////////////////////////////////////////////////////////// + // Globals + EnvironmentVariable AssetManager::s_assetDB = nullptr; + ////////////////////////////////////////////////////////////////////////// + + //========================================================================= + // AssetDatabaseJob + // [4/3/2014] + //========================================================================= + AssetDatabaseJob::AssetDatabaseJob(AssetManager* owner, const Asset& asset, AssetHandler* assetHandler) + { + m_owner = owner; + m_asset = AssetInternal::WeakAsset(asset); + m_assetHandler = assetHandler; + owner->AddJob(this); + } + + //========================================================================= + // ~AssetDatabaseJob + // [4/3/2014] + //========================================================================= + AssetDatabaseJob::~AssetDatabaseJob() + { + // Make sure that the asset reference is cleared out prior to removing the job registration. + // It's possible that clearing this reference will trigger the cleanup code for the asset, so if we wait for the + // destructor to clear it *after* the RemoveJob call, then HasActiveJobsOrStreamerRequests() will be able to return + // false even though the job is still executing asset-related code. + m_asset = {}; + m_owner->RemoveJob(this); + } + + //========================================================================= + // Create + // [6/12/2012] + //========================================================================= + bool AssetManager::Create(const Descriptor& desc) + { + AZ_Assert(!s_assetDB || !s_assetDB.Get(), "AssetManager already created!"); + + if (!s_assetDB) + { + s_assetDB = Environment::CreateVariable(kAssetDBInstanceVarName); + } + if (!s_assetDB.Get()) + { + s_assetDB.Set(aznew AssetManager(desc)); + } + + return true; + } + + //========================================================================= + // Destroy + // [6/12/2012] + //========================================================================= + void AssetManager::Destroy() + { + AZ_Assert(s_assetDB, "AssetManager not created!"); + delete (*s_assetDB); + *s_assetDB = nullptr; + } + + //========================================================================= + // IsReady + //========================================================================= + bool AssetManager::IsReady() + { + if (!s_assetDB) + { + s_assetDB = Environment::FindVariable(kAssetDBInstanceVarName); + } + + return s_assetDB && *s_assetDB; + } + + //========================================================================= + // Instance + //========================================================================= + AssetManager& AssetManager::Instance() + { + if (!s_assetDB) + { + s_assetDB = Environment::FindVariable(kAssetDBInstanceVarName); + } + + AZ_Assert(s_assetDB && *s_assetDB, "AssetManager not created!"); + return *(*s_assetDB); + } + + bool AssetManager::SetInstance(AssetManager* assetManager) + { + if (!s_assetDB) + { + s_assetDB = Environment::CreateVariable(kAssetDBInstanceVarName); + } + + // The old instance needs to be null or else it will leak on the assignment. + AZ_Assert(!(*s_assetDB), + "AssetManager::SetInstance was called without first destroying the old instance and setting it to nullptr. " + "This will cause the previous AssetManager instance to leak." ); + + (*s_assetDB) = assetManager; + return true; + } + + //========================================================================= + // AssetDatabase + // [6/12/2012] + //========================================================================= + AssetManager::AssetManager(const AssetManager::Descriptor& desc) + : m_mainThreadId(AZStd::this_thread::get_id()) + , m_debugAssetEvents(AZ::Interface::Get()) + { + (void)desc; + + AssetManagerBus::Handler::BusConnect(); + } + + //========================================================================= + // ~AssetManager + // [6/12/2012] + //========================================================================= + AssetManager::~AssetManager() + { + PrepareShutDown(); + + // Acquire the asset lock to make sure nobody else is trying to do anything fancy with assets + AZStd::scoped_lock assetLock(m_assetMutex); + + while (!m_handlers.empty()) + { + AssetHandlerMap::iterator it = m_handlers.begin(); + AssetHandler* handler = it->second; + UnregisterHandler(handler); + delete handler; + } + + AssetManagerBus::Handler::BusDisconnect(); + } + + //========================================================================= + // DispatchEvents + // [04/02/2014] + //========================================================================= + void AssetManager::DispatchEvents() + { + AZ_PROFILE_FUNCTION(AzCore); + AssetManagerNotificationBus::Broadcast(&AssetManagerNotificationBus::Events::OnAssetEventsDispatchBegin); + while (AssetBus::QueuedEventCount()) + { + AssetBus::ExecuteQueuedEvents(); + } + AssetManagerNotificationBus::Broadcast(&AssetManagerNotificationBus::Events::OnAssetEventsDispatchEnd); + } + + //========================================================================= + void AssetManager::SetAssetInfoUpgradingEnabled(bool enable) + { + m_assetInfoUpgradingEnabled = enable; + } + + bool AssetManager::GetAssetInfoUpgradingEnabled() const + { +#if defined(_RELEASE) + // in release ("FINAL") builds, we never do this. + return false; +#else + return m_assetInfoUpgradingEnabled; +#endif + } + + bool AssetManager::ShouldCancelAllActiveJobs() const + { + return m_cancelAllActiveJobs; + } + + void AssetManager::SetParallelDependentLoadingEnabled(bool enable) + { + m_enableParallelDependentLoading = enable; + } + + bool AssetManager::GetParallelDependentLoadingEnabled() const + { + return m_enableParallelDependentLoading; + } + + void AssetManager::PrepareShutDown() + { + m_cancelAllActiveJobs = true; + + // We want to ensure that no active load jobs are in flight and + // therefore we need to wait till all jobs have completed. Please note that jobs get deleted automatically once they complete. + WaitForActiveJobsAndStreamerRequestsToFinish(); + + m_ownedAssetContainerLookup.clear(); + m_ownedAssetContainers.clear(); + m_assetContainers.clear(); + + // Ensure that there are no queued events on the AssetBus + DispatchEvents(); + } + + void AssetManager::WaitForActiveJobsAndStreamerRequestsToFinish() + { + while (HasActiveJobsOrStreamerRequests()) + { + DispatchEvents(); + AZStd::this_thread::yield(); + } + } + + //========================================================================= + // RegisterHandler + // [7/9/2014] + //========================================================================= + void AssetManager::RegisterHandler(AssetHandler* handler, const AssetType& assetType) + { + AZ_Error("AssetDatabase", handler != nullptr, "Attempting to register a null asset handler!"); + if (handler) + { + if (m_handlers.insert(AZStd::make_pair(assetType, handler)).second) + { + handler->m_nHandledTypes++; + } + else + { + AZ_Error("AssetDatabase", false, "Asset type %s already has a handler registered! New registration ignored!", assetType.ToString().c_str()); + } + } + } + + //========================================================================= + // UnregisterHandler + // [7/9/2014] + //========================================================================= + void AssetManager::UnregisterHandler(AssetHandler* handler) + { + AZ_Error("AssetDatabase", handler != nullptr, "Attempting to unregister a null asset handler!"); + if (handler) + { + for (AssetHandlerMap::iterator it = m_handlers.begin(); it != m_handlers.end(); /*++it*/) + { + if (it->second == handler) + { + // When unregistering asset handlers, it's possible that there are still some load jobs that have "finished" but + // haven't destroyed themselves yet by the time the asset handler gets unregistered. LoadAssetJob contains a weak + // asset reference that doesn't clear until the job is destroyed, which happens *after* the OnAssetReady + // notification is triggered. If the thread gets swapped out between the OnAssetReady and the job destruction, + // the job will still be holding onto an asset reference for this asset handler, and it will trigger the + // error below. To ensure that this case doesn't happen, we will instead call + // WaitForActiveJobsAndStreamerRequestsToFinish() to make sure that any in-process jobs have completely cleaned + // themselves up before proceeding forward. + // One example of this pattern occurs in unit tests, where the test loads an asset, validates it, destroys the + // asset, and unregisters the handler, all in rapid succession. This would extremely infrequently + // (~1 per 5000 runs) trigger the error case if we didn't wait for the jobs to finish here. + WaitForActiveJobsAndStreamerRequestsToFinish(); + + { + // this scope is used to control the scope of the lock. + AZStd::lock_guard assetLock(m_assetMutex); + for (const auto &assetEntry : m_assets) + { + // is the handler that handles this type, this handler we're removing? + if (assetEntry.second->m_registeredHandler == handler) + { + AZ_Error("AssetManager", false, "Asset handler for %s is being removed, when assetid %s is still loaded!\n", + assetEntry.second->GetType().ToString().c_str(), + assetEntry.second->GetId().ToString().c_str()); // this will write the name IF AVAILABLE + assetEntry.second->UnregisterWithHandler(); + } + } + } + it = m_handlers.erase(it); + handler->m_nHandledTypes--; + } + else + { + ++it; } } + } + } - for(auto&& asset : assetsToRelease) + //========================================================================= + // RegisterCatalog + // [8/27/2012] + //========================================================================= + void AssetManager::RegisterCatalog(AssetCatalog* catalog, const AssetType& assetType) + { + AZ_Error("AssetDatabase", catalog != nullptr, "Attempting to register a null catalog!"); + if (catalog) + { + AZStd::scoped_lock l(m_catalogMutex); + if (m_catalogs.insert(AZStd::make_pair(assetType, catalog)).second == false) { - bool removeFromHash = asset->IsRegisterReadonlyAndShareable(); - // default creation token implies that the asset was not created by the asset manager and therefore it cannot be in the asset map. - removeFromHash = asset->m_creationToken == s_defaultCreationToken ? false : removeFromHash; + AZ_Error("AssetDatabase", false, "Asset type %s already has a catalog registered! New registration ignored!", assetType.ToString().c_str()); + } + } + } - ReleaseAsset(asset, asset->GetId(), asset->GetType(), removeFromHash, asset->m_creationToken); + //========================================================================= + // UnregisterCatalog + // [8/27/2012] + //========================================================================= + void AssetManager::UnregisterCatalog(AssetCatalog* catalog) + { + AZ_Error("AssetDatabase", catalog != nullptr, "Attempting to unregister a null catalog!"); + if (catalog) + { + AZStd::scoped_lock l(m_catalogMutex); + for (AssetCatalogMap::iterator iter = m_catalogs.begin(); iter != m_catalogs.end(); ) + { + if (iter->second == catalog) + { + iter = m_catalogs.erase(iter); + } + else + { + ++iter; + } + + } + } + } + + //========================================================================= + // GetHandledAssetTypes + // [6/27/2016] + //========================================================================= + void AssetManager::GetHandledAssetTypes(AssetCatalog* catalog, AZStd::vector& assetTypes) + { + for (AssetCatalogMap::iterator iter = m_catalogs.begin(); iter != m_catalogs.end(); iter++) + { + if (iter->second == catalog) + { + assetTypes.push_back(iter->first); + } + } + } + + void AssetManager::SuspendAssetRelease() + { + ++m_suspendAssetRelease; + } + + void AssetManager::ResumeAssetRelease() + { + if(--m_suspendAssetRelease != 0) + { + return; + } + + AZStd::scoped_lock assetLock(m_assetMutex); + // First, release any containers that were loading this asset + for (auto asset = m_assets.begin();asset != m_assets.end();) + { + if (asset->second->m_useCount == 0) + { + auto releaseAsset = asset->second; + ++asset; + ReleaseAssetContainersForAsset(releaseAsset); + } + else + { + ++asset; } } - AssetData::AssetStatus AssetManager::BlockUntilLoadComplete(const Asset& asset) + // Second, release the assets themselves + + AZStd::vector assetsToRelease; + + for(auto&& asset : m_assets) { - if(asset.GetStatus() == AssetData::AssetStatus::NotLoaded) + if(asset.second->m_weakUseCount == 0) { - AZ_Error("AssetManager", false, "BlockUntilLoadComplete must be called after an asset has been queued for load. Asset %s (%s) is not queued for load", - asset.GetHint().c_str(), asset.GetId().ToString().c_str()); + // Keep a separate list of assets to release, because releasing them will modify the m_assets list that we're + // currently looping on. + assetsToRelease.push_back(asset.second); } - else if(!asset.IsReady()) - { - // If this is the main thread we'll need to call DispatchEvents to make sure the events we're waiting on actually fire - // since the main thread is typically responsible for calling DispatchEvents elsewhere - const bool shouldDispatch = AZStd::this_thread::get_id() == m_mainThreadId; - - // Wait for the asset and all queued dependencies to finish loading. - WaitForAsset blockingWait(asset, shouldDispatch); - - blockingWait.WaitUntilReady(); - } - - return asset.GetStatus(); } - //========================================================================= - // FindAsset - //========================================================================= - Asset AssetManager::FindAsset(const AssetId& assetId, AssetLoadBehavior assetReferenceLoadBehavior) + for(auto&& asset : assetsToRelease) { - // Look up the asset id in the catalog, and use the result of that instead. - // If assetId is a legacy id, assetInfo.m_assetId will be the canonical id. Otherwise, assetInfo.m_assetID == assetId. - // This is because only canonical ids are stored in m_assets (see below). - // Only do the look up if upgrading is enabled - AZ::Data::AssetInfo assetInfo; - if (GetAssetInfoUpgradingEnabled()) + bool removeFromHash = asset->IsRegisterReadonlyAndShareable(); + // default creation token implies that the asset was not created by the asset manager and therefore it cannot be in the asset map. + removeFromHash = asset->m_creationToken == s_defaultCreationToken ? false : removeFromHash; + + ReleaseAsset(asset, asset->GetId(), asset->GetType(), removeFromHash, asset->m_creationToken); + } + } + + AssetData::AssetStatus AssetManager::BlockUntilLoadComplete(const Asset& asset) + { + if(asset.GetStatus() == AssetData::AssetStatus::NotLoaded) + { + AZ_Error("AssetManager", false, "BlockUntilLoadComplete must be called after an asset has been queued for load. Asset %s (%s) is not queued for load", + asset.GetHint().c_str(), asset.GetId().ToString().c_str()); + } + else if(!asset.IsReady()) + { + // If this is the main thread we'll need to call DispatchEvents to make sure the events we're waiting on actually fire + // since the main thread is typically responsible for calling DispatchEvents elsewhere + const bool shouldDispatch = AZStd::this_thread::get_id() == m_mainThreadId; + + // Wait for the asset and all queued dependencies to finish loading. + WaitForAsset blockingWait(asset, shouldDispatch); + + blockingWait.WaitUntilReady(); + } + + return asset.GetStatus(); + } + + //========================================================================= + // FindAsset + //========================================================================= + Asset AssetManager::FindAsset(const AssetId& assetId, AssetLoadBehavior assetReferenceLoadBehavior) + { + // Look up the asset id in the catalog, and use the result of that instead. + // If assetId is a legacy id, assetInfo.m_assetId will be the canonical id. Otherwise, assetInfo.m_assetID == assetId. + // This is because only canonical ids are stored in m_assets (see below). + // Only do the look up if upgrading is enabled + AZ::Data::AssetInfo assetInfo; + if (GetAssetInfoUpgradingEnabled()) + { + AssetCatalogRequestBus::BroadcastResult(assetInfo, &AssetCatalogRequestBus::Events::GetAssetInfoById, assetId); + } + + // If the catalog is not available, use the original assetId + const AssetId& assetToFind(assetInfo.m_assetId.IsValid() ? assetInfo.m_assetId : assetId); + + AZStd::scoped_lock assetLock(m_assetMutex); + AssetMap::iterator it = m_assets.find(assetToFind); + if (it != m_assets.end()) + { + Asset asset(assetReferenceLoadBehavior); + asset.SetData(it->second); + + return asset; + } + return Asset(assetReferenceLoadBehavior); + } + + AZStd::pair GetEffectiveDeadlineAndPriority( + const AssetHandler& handler, AssetType assetType, const AssetLoadParameters& loadParams) + { + AZStd::chrono::milliseconds deadline; + AZ::IO::IStreamerTypes::Priority priority; + + handler.GetDefaultAssetLoadPriority(assetType, deadline, priority); + + if (loadParams.m_deadline) + { + deadline = loadParams.m_deadline.value(); + } + + if (loadParams.m_priority) + { + priority = loadParams.m_priority.value(); + } + + return make_pair(deadline, priority); + } + + //========================================================================= + // GetAsset + // [6/19/2012] + //========================================================================= + Asset AssetManager::GetAsset(const AssetId& assetId, const AssetType& assetType, AssetLoadBehavior assetReferenceLoadBehavior, const AssetLoadParameters& loadParams) + { + // If parallel dependent loads are disabled, just try to load the requested asset directly, and let it trigger + // dependent loads as they're encountered. + // Parallel dependent loads are disabled during asset building because there is no guarantee that dependency information + // will be available and complete until after all assets are finished building. + if(!GetParallelDependentLoadingEnabled()) + { + return GetAssetInternal(assetId, assetType, assetReferenceLoadBehavior, loadParams); + } + + // Otherwise, use Asset Containers to load all dependent assets in parallel. + + Asset asset = FindOrCreateAsset(assetId, assetType, assetReferenceLoadBehavior); + + if(!asset || (!loadParams.m_reloadMissingDependencies && asset.IsReady())) + { + // If the asset is already ready, just return it and skip the container + return AZStd::move(asset); + } + + auto container = GetAssetContainer(asset, loadParams); + + AZStd::scoped_lock lock(m_assetContainerMutex); + + m_ownedAssetContainers.insert({ container.get(), container }); + + // Only insert a new entry into m_ownedAssetContainerLookup if one doesn't already exist for this container. + // Because it's a multimap, it is possible to add duplicate entries by mistake. + bool entryExists = false; + auto rangeItr = m_ownedAssetContainerLookup.equal_range(assetId); + for (auto itr = rangeItr.first; itr != rangeItr.second; ++itr) + { + if (itr->second == container.get()) + { + entryExists = true; + break; + } + } + + // Entry for this container doesn't exist yet, so add it. + if (!entryExists) + { + m_ownedAssetContainerLookup.insert({ assetId, container.get() }); + } + + return asset; + } + + Asset AssetManager::GetAssetInternal(const AssetId& assetId, [[maybe_unused]] const AssetType& assetType, + AssetLoadBehavior assetReferenceLoadBehavior, const AssetLoadParameters& loadParams, AssetInfo assetInfo /*= () */, bool signalLoaded /*= false */) + { + AZ_PROFILE_FUNCTION(AzCore); + + AZ_Error("AssetDatabase", assetId.IsValid(), "GetAsset called with invalid asset Id."); + AZ_Error("AssetDatabase", !assetType.IsNull(), "GetAsset called with invalid asset type."); + bool assetMissing = false; + + { + AZ_PROFILE_SCOPE(AzCore, "GetAsset: GetAssetInfo"); + + // Attempt to look up asset info from catalog + // This is so that when assetId is a legacy id, we're operating on the canonical id anyway + if (!assetInfo.m_assetId.IsValid()) { AssetCatalogRequestBus::BroadcastResult(assetInfo, &AssetCatalogRequestBus::Events::GetAssetInfoById, assetId); } - // If the catalog is not available, use the original assetId - const AssetId& assetToFind(assetInfo.m_assetId.IsValid() ? assetInfo.m_assetId : assetId); + // If the asset was found in the catalog, ensure the type infos match + if (assetInfo.m_assetId.IsValid()) + { + AZ_Warning("AssetManager", assetInfo.m_assetType == assetType, + "Requested asset id %s with type %s, but type is actually %s.", + assetId.ToString().c_str(), assetType.ToString().c_str(), + assetInfo.m_assetType.ToString().c_str()); + } + else + { + AZ_Warning("AssetManager", false, "GetAsset called for asset which does not exist in asset catalog and cannot be loaded. Asset may be missing, not processed or moved. AssetId: %s", + assetId.ToString().c_str()); + // If asset not found, use the id and type given. We will create a valid asset, but it will likely get an error + // status below if the asset handler doesn't reroute it to a default asset. + assetInfo.m_assetId = assetId; + assetInfo.m_assetType = assetType; + assetMissing = true; + } + } + + AZ_PROFILE_SCOPE(AzCore, "GetAsset: %s", assetInfo.m_relativePath.c_str()); + AZ_ASSET_NAMED_SCOPE("GetAsset: %s", assetInfo.m_relativePath.c_str()); + + AZStd::shared_ptr dataStream; + AssetStreamInfo loadInfo; + bool triggerAssetErrorNotification = false; + bool wasUnloaded = false; + AssetHandler* handler = nullptr; + AssetData* assetData = nullptr; + Asset asset; // Used to hold a reference while job is dispatched and while outside of the assetMutex lock. + + // Control the scope of the assetMutex lock + { AZStd::scoped_lock assetLock(m_assetMutex); - AssetMap::iterator it = m_assets.find(assetToFind); - if (it != m_assets.end()) + bool isNewEntry = false; + + // check if asset already exists { - Asset asset(assetReferenceLoadBehavior); - asset.SetData(it->second); + AZ_PROFILE_SCOPE(AzCore, "GetAsset: FindAsset"); - return asset; - } - return Asset(assetReferenceLoadBehavior); - } - - AZStd::pair GetEffectiveDeadlineAndPriority( - const AssetHandler& handler, AssetType assetType, const AssetLoadParameters& loadParams) - { - AZStd::chrono::milliseconds deadline; - AZ::IO::IStreamerTypes::Priority priority; - - handler.GetDefaultAssetLoadPriority(assetType, deadline, priority); - - if (loadParams.m_deadline) - { - deadline = loadParams.m_deadline.value(); - } - - if (loadParams.m_priority) - { - priority = loadParams.m_priority.value(); - } - - return make_pair(deadline, priority); - } - - //========================================================================= - // GetAsset - // [6/19/2012] - //========================================================================= - Asset AssetManager::GetAsset(const AssetId& assetId, const AssetType& assetType, AssetLoadBehavior assetReferenceLoadBehavior, const AssetLoadParameters& loadParams) - { - // If parallel dependent loads are disabled, just try to load the requested asset directly, and let it trigger - // dependent loads as they're encountered. - // Parallel dependent loads are disabled during asset building because there is no guarantee that dependency information - // will be available and complete until after all assets are finished building. - if(!GetParallelDependentLoadingEnabled()) - { - return GetAssetInternal(assetId, assetType, assetReferenceLoadBehavior, loadParams); - } - - // Otherwise, use Asset Containers to load all dependent assets in parallel. - - Asset asset = FindOrCreateAsset(assetId, assetType, assetReferenceLoadBehavior); - - if(!asset || (!loadParams.m_reloadMissingDependencies && asset.IsReady())) - { - // If the asset is already ready, just return it and skip the container - return AZStd::move(asset); - } - - auto container = GetAssetContainer(asset, loadParams); - - AZStd::scoped_lock lock(m_assetContainerMutex); - - m_ownedAssetContainers.insert({ container.get(), container }); - - // Only insert a new entry into m_ownedAssetContainerLookup if one doesn't already exist for this container. - // Because it's a multimap, it is possible to add duplicate entries by mistake. - bool entryExists = false; - auto rangeItr = m_ownedAssetContainerLookup.equal_range(assetId); - for (auto itr = rangeItr.first; itr != rangeItr.second; ++itr) - { - if (itr->second == container.get()) + AssetMap::iterator it = m_assets.find(assetInfo.m_assetId); + if (it != m_assets.end()) { - entryExists = true; - break; - } - } - - // Entry for this container doesn't exist yet, so add it. - if (!entryExists) - { - m_ownedAssetContainerLookup.insert({ assetId, container.get() }); - } - - return asset; - } - - Asset AssetManager::GetAssetInternal(const AssetId& assetId, [[maybe_unused]] const AssetType& assetType, - AssetLoadBehavior assetReferenceLoadBehavior, const AssetLoadParameters& loadParams, AssetInfo assetInfo /*= () */, bool signalLoaded /*= false */) - { - AZ_PROFILE_FUNCTION(AzCore); - - AZ_Error("AssetDatabase", assetId.IsValid(), "GetAsset called with invalid asset Id."); - AZ_Error("AssetDatabase", !assetType.IsNull(), "GetAsset called with invalid asset type."); - bool assetMissing = false; - - { - AZ_PROFILE_SCOPE(AzCore, "GetAsset: GetAssetInfo"); - - // Attempt to look up asset info from catalog - // This is so that when assetId is a legacy id, we're operating on the canonical id anyway - if (!assetInfo.m_assetId.IsValid()) - { - AssetCatalogRequestBus::BroadcastResult(assetInfo, &AssetCatalogRequestBus::Events::GetAssetInfoById, assetId); - } - - // If the asset was found in the catalog, ensure the type infos match - if (assetInfo.m_assetId.IsValid()) - { - AZ_Warning("AssetManager", assetInfo.m_assetType == assetType, - "Requested asset id %s with type %s, but type is actually %s.", - assetId.ToString().c_str(), assetType.ToString().c_str(), - assetInfo.m_assetType.ToString().c_str()); + assetData = it->second; + asset.SetData(assetData); } else { - AZ_Warning("AssetManager", false, "GetAsset called for asset which does not exist in asset catalog and cannot be loaded. Asset may be missing, not processed or moved. AssetId: %s", - assetId.ToString().c_str()); - - // If asset not found, use the id and type given. We will create a valid asset, but it will likely get an error - // status below if the asset handler doesn't reroute it to a default asset. - assetInfo.m_assetId = assetId; - assetInfo.m_assetType = assetType; - assetMissing = true; + isNewEntry = true; } } - AZ_PROFILE_SCOPE(AzCore, "GetAsset: %s", assetInfo.m_relativePath.c_str()); - AZ_ASSET_NAMED_SCOPE("GetAsset: %s", assetInfo.m_relativePath.c_str()); - - AZStd::shared_ptr dataStream; - AssetStreamInfo loadInfo; - bool triggerAssetErrorNotification = false; - bool wasUnloaded = false; - AssetHandler* handler = nullptr; - AssetData* assetData = nullptr; - Asset asset; // Used to hold a reference while job is dispatched and while outside of the assetMutex lock. - - // Control the scope of the assetMutex lock { - AZStd::scoped_lock assetLock(m_assetMutex); - bool isNewEntry = false; + AZ_PROFILE_SCOPE(AzCore, "GetAsset: FindAssetHandler"); - // check if asset already exists + // find the asset type handler + AssetHandlerMap::iterator handlerIt = m_handlers.find(assetInfo.m_assetType); + AZ_Error("AssetDatabase", handlerIt != m_handlers.end(), "No handler was registered for this asset [type:%s id:%s]!", + assetInfo.m_assetType.ToString().c_str(), assetInfo.m_assetId.ToString().c_str()); + if (handlerIt != m_handlers.end()) { - AZ_PROFILE_SCOPE(AzCore, "GetAsset: FindAsset"); - - AssetMap::iterator it = m_assets.find(assetInfo.m_assetId); - if (it != m_assets.end()) + // Create the asset ptr and insert it into our asset map. + handler = handlerIt->second; + if (isNewEntry) { - assetData = it->second; - asset.SetData(assetData); - } - else - { - isNewEntry = true; - } - } + AZ_PROFILE_SCOPE(AzCore, "GetAsset: CreateAsset"); - { - AZ_PROFILE_SCOPE(AzCore, "GetAsset: FindAssetHandler"); - - // find the asset type handler - AssetHandlerMap::iterator handlerIt = m_handlers.find(assetInfo.m_assetType); - AZ_Error("AssetDatabase", handlerIt != m_handlers.end(), "No handler was registered for this asset [type:%s id:%s]!", - assetInfo.m_assetType.ToString().c_str(), assetInfo.m_assetId.ToString().c_str()); - if (handlerIt != m_handlers.end()) - { - // Create the asset ptr and insert it into our asset map. - handler = handlerIt->second; - if (isNewEntry) + assetData = handler->CreateAsset(assetInfo.m_assetId, assetInfo.m_assetType); + if (assetData) { - AZ_PROFILE_SCOPE(AzCore, "GetAsset: CreateAsset"); - - assetData = handler->CreateAsset(assetInfo.m_assetId, assetInfo.m_assetType); - if (assetData) - { - assetData->m_assetId = assetInfo.m_assetId; - assetData->m_creationToken = ++m_creationTokenGenerator; - assetData->RegisterWithHandler(handler); - asset.SetData(assetData); - } - else - { - AZ_Error("AssetDatabase", false, "Failed to create asset with (id=%s, type=%s)", - assetInfo.m_assetId.ToString().c_str(), - assetInfo.m_assetType.ToString().c_str()); - } - } - } - } - - if (assetData) - { - if (isNewEntry && assetData->IsRegisterReadonlyAndShareable()) - { - AZ_PROFILE_SCOPE(AzCore, "GetAsset: RegisterAsset"); - m_assets.insert(AZStd::make_pair(assetInfo.m_assetId, assetData)); - } - if (assetData->GetStatus() == AssetData::AssetStatus::NotLoaded) - { - assetData->m_status = AssetData::AssetStatus::Queued; - UpdateDebugStatus(asset); - loadInfo = GetModifiedLoadStreamInfoForAsset(asset, handler); - wasUnloaded = true; - - if (loadInfo.IsValid()) - { - // Create the AssetDataStream instance here so it can claim an asset reference inside the lock (for a total - // count of 2 before starting the load), otherwise the refcount will be 1, and the load could be canceled - // before it is started, which creates state consistency issues. - - dataStream = AZStd::make_shared(handler->GetAssetBufferAllocator()); + assetData->m_assetId = assetInfo.m_assetId; + assetData->m_creationToken = ++m_creationTokenGenerator; + assetData->RegisterWithHandler(handler); + asset.SetData(assetData); } else { - // Asset creation was successful, but asset loading isn't, so trigger the OnAssetError notification - triggerAssetErrorNotification = true; + AZ_Error("AssetDatabase", false, "Failed to create asset with (id=%s, type=%s)", + assetInfo.m_assetId.ToString().c_str(), + assetInfo.m_assetType.ToString().c_str()); } } } } - if (!assetInfo.m_relativePath.empty()) + if (assetData) { - asset.m_assetHint = assetInfo.m_relativePath; - } - - asset.SetAutoLoadBehavior(assetReferenceLoadBehavior); - - // We delay queueing the async file I/O until we release m_assetMutex - if (dataStream) - { - AZ_Assert(loadInfo.IsValid(), "Expected valid stream info when dataStream is valid."); - constexpr bool isReload = false; - QueueAsyncStreamLoad(asset, dataStream, loadInfo, isReload, - handler, loadParams, signalLoaded); - } - else - { - AZ_Assert(!loadInfo.IsValid(), "Expected invalid stream info when dataStream is invalid."); - - if(!wasUnloaded && assetData && assetData->GetStatus() == AssetData::AssetStatus::Queued) + if (isNewEntry && assetData->IsRegisterReadonlyAndShareable()) { - auto&& [deadline, priority] = GetEffectiveDeadlineAndPriority(*handler, assetData->GetType(), loadParams); - - RescheduleStreamerRequest(assetData->GetId(), deadline, priority); + AZ_PROFILE_SCOPE(AzCore, "GetAsset: RegisterAsset"); + m_assets.insert(AZStd::make_pair(assetInfo.m_assetId, assetData)); } - - if (triggerAssetErrorNotification) + if (assetData->GetStatus() == AssetData::AssetStatus::NotLoaded) { - // If the asset was missing from the catalog, we already printed an error, so we can skip printing this one. - if (!assetMissing) + assetData->m_status = AssetData::AssetStatus::Queued; + UpdateDebugStatus(asset); + loadInfo = GetModifiedLoadStreamInfoForAsset(asset, handler); + wasUnloaded = true; + + if (loadInfo.IsValid()) { - AZ_Error("AssetDatabase", false, "Failed to retrieve required information for asset %s (%s)", - assetInfo.m_assetId.ToString().c_str(), - assetInfo.m_relativePath.empty() ? "" : assetInfo.m_relativePath.c_str()); - } + // Create the AssetDataStream instance here so it can claim an asset reference inside the lock (for a total + // count of 2 before starting the load), otherwise the refcount will be 1, and the load could be canceled + // before it is started, which creates state consistency issues. - PostLoad(asset, false, false, handler); - } - } - - return asset; - } - - void AssetManager::UpdateDebugStatus(const AZ::Data::Asset& asset) - { - if(!m_debugAssetEvents) - { - m_debugAssetEvents = AZ::Interface::Get(); - } - - if(m_debugAssetEvents) - { - m_debugAssetEvents->AssetStatusUpdate(asset.GetId(), asset.GetStatus()); - } - } - - Asset AssetManager::FindOrCreateAsset(const AssetId& assetId, const AssetType& assetType, AssetLoadBehavior assetReferenceLoadBehavior) - { - AZStd::scoped_lock asset_lock(m_assetMutex); - - Asset asset = FindAsset(assetId, assetReferenceLoadBehavior); - - if (!asset) - { - asset = CreateAsset(assetId, assetType, assetReferenceLoadBehavior); - } - - return asset; - } - - //========================================================================= - // CreateAsset - // [8/31/2012] - //========================================================================= - Asset AssetManager::CreateAsset(const AssetId& assetId, const AssetType& assetType, AssetLoadBehavior assetReferenceLoadBehavior) - { - AZStd::scoped_lock asset_lock(m_assetMutex); - - // check if asset already exist - AssetMap::iterator it = m_assets.find(assetId); - if (it == m_assets.end()) - { - // find the asset type handler - AssetHandlerMap::iterator handlerIt = m_handlers.find(assetType); - AZ_Error("AssetDatabase", handlerIt != m_handlers.end(), "No handler was registered for this asset (id=%s, type=%s)!", assetId.ToString().c_str(), assetType.ToString().c_str()); - if (handlerIt != m_handlers.end()) - { - // Create the asset ptr - AssetHandler* handler = handlerIt->second; - auto assetData = handler->CreateAsset(assetId, assetType); - AZ_Error("AssetDatabase", assetData, "Failed to create asset with (id=%s, type=%s)", assetId.ToString().c_str(), assetType.ToString().c_str()); - if (assetData) - { - assetData->m_assetId = assetId; - assetData->m_creationToken = ++m_creationTokenGenerator; - assetData->RegisterWithHandler(handler); - if (assetData->IsRegisterReadonlyAndShareable()) - { - m_assets.insert(AZStd::make_pair(assetId, assetData)); - } - - Asset asset(assetReferenceLoadBehavior); - asset.SetData(assetData); - - return asset; - } - } - } - else - { - AZ_Error("AssetDatabase", false, "Asset (id=%s, type=%s) already exists in the database! Asset not created!", assetId.ToString().c_str(), assetType.ToString().c_str()); - } - return Asset(assetReferenceLoadBehavior); - } - - //========================================================================= - // ReleaseAsset - //========================================================================= - void AssetManager::ReleaseAsset(AssetData* asset, AssetId assetId, AssetType assetType, bool removeAssetFromHash, int creationToken) - { - AZ_Assert(asset, "Cannot release NULL AssetPtr!"); - - if(m_suspendAssetRelease) - { - return; - } - - bool wasInAssetsHash = false; // We do support assets that are not registered in the asset manager (with the same ID too). - bool destroyAsset = false; - - if (removeAssetFromHash) - { - AZStd::scoped_lock asset_lock(m_assetMutex); - AssetMap::iterator it = m_assets.find(assetId); - // need to check the count again in here in case - // someone was trying to get the asset on another thread - // Set it to -1 so only this thread will attempt to clean up the cache and delete the asset - int expectedRefCount = 0; - // if the assetId is not in the map or if the identifierId - // do not match it implies that the asset has been already destroyed. - // if the usecount is non zero it implies that we cannot destroy this asset. - if (it != m_assets.end() && it->second->m_creationToken == creationToken && it->second->m_weakUseCount.compare_exchange_strong(expectedRefCount, -1)) - { - wasInAssetsHash = true; - m_assets.erase(it); - destroyAsset = true; - } - } - else - { - // if an asset is not shareable, it implies that that asset is not in the map - // and therefore once its ref count goes to zero it cannot go back up again and therefore we can safely destroy it - destroyAsset = true; - } - - // We have to separate the code which was removing the asset from the m_asset map while being locked, but then actually destroy the asset - // while the lock is not held since destroying the asset while holding the lock can cause a deadlock. - if (destroyAsset) - { - if(m_debugAssetEvents) - { - m_debugAssetEvents->ReleaseAsset(assetId); - } - - // find the asset type handler - AssetHandlerMap::iterator handlerIt = m_handlers.find(assetType); - if (handlerIt != m_handlers.end()) - { - AssetHandler* handler = handlerIt->second; - if (asset) - { - handler->DestroyAsset(asset); - - if (wasInAssetsHash) - { - AssetBus::QueueEvent(assetId, &AssetBus::Events::OnAssetUnloaded, assetId, assetType); - } - } - } - else - { - AZ_Assert(false, "No handler was registered for asset of type %s but it was still in the AssetManager as %s", assetType.ToString().c_str(), asset->GetId().ToString().c_str()); - } - } - } - - void AssetManager::OnAssetUnused(AssetData* asset) - { - // If we're currently suspending asset releases, don't get rid of the asset containers either. - if (m_suspendAssetRelease) - { - return; - } - - ReleaseAssetContainersForAsset(asset); - } - - void AssetManager::ReleaseAssetContainersForAsset(AssetData* asset) - { - // Release any containers that were loading this asset - AZStd::scoped_lock lock(m_assetContainerMutex); - - AssetId assetId = asset->GetId(); - - auto rangeItr = m_ownedAssetContainerLookup.equal_range(assetId); - - for (auto itr = rangeItr.first; itr != rangeItr.second;) - { - AZ_Assert(itr->second->GetContainerAssetId() == assetId, - "Asset container is incorrectly associated with the asset being destroyed."); - itr->second->ClearRootAsset(); - - // Only remove owned asset containers if they aren't currently loading. - // If they *are* currently loading, removing them could cause dependent asset loads that were triggered to - // remain in a perpetual loading state. Instead, leave the containers for now, they will get removed during - // the OnAssetContainerReady callback. - if (!itr->second->IsLoading()) - { - m_ownedAssetContainers.erase(itr->second); - itr = m_ownedAssetContainerLookup.erase(itr); - } - else - { - ++itr; - } - } - } - - //========================================================================= - // SaveAsset - // [9/13/2012] - //========================================================================= - void AssetManager::SaveAsset(const Asset& asset) - { - AssetHandler* handler; - { - // find the asset type handler - AssetHandlerMap::iterator handlerIt = m_handlers.find(asset.GetType()); - AZ_Assert(handlerIt != m_handlers.end(), "No handler was registered for this asset [type:%s id:%s]!", asset.GetType().ToString().c_str(), asset.GetId().ToString().c_str()); - handler = handlerIt->second; - } - - // start the data saving - SaveAssetJob* saveJob = aznew SaveAssetJob(JobContext::GetGlobalContext(), this, asset, handler); - saveJob->Start(); - } - - //========================================================================= - // ReloadAsset - //========================================================================= - void AssetManager::ReloadAsset(const AssetId& assetId, AssetLoadBehavior assetReferenceLoadBehavior, bool isAutoReload) - { - AZStd::scoped_lock assetLock(m_assetMutex); - auto assetIter = m_assets.find(assetId); - - if (assetIter == m_assets.end() || assetIter->second->IsLoading()) - { - // Only existing assets can be reloaded. - return; - } - - auto reloadIter = m_reloads.find(assetId); - if (reloadIter != m_reloads.end()) - { - auto curStatus = reloadIter->second.GetData()->GetStatus(); - // We don't need another reload if we're in "Queued" state because that reload has not actually begun yet. - // If it is in Loading state we want to pass by and allow the new assetData to be created and start the new reload - // As the current load could already be stale - if (curStatus == AssetData::AssetStatus::Queued) - { - return; - } - else if (curStatus == AssetData::AssetStatus::Loading || curStatus == AssetData::AssetStatus::StreamReady) - { - // Don't flood the tick bus - this value will be checked when the asset load completes - reloadIter->second->SetRequeue(true); - return; - } - } - - AssetData* newAssetData = nullptr; - AssetHandler* handler = nullptr; - - bool preventAutoReload = isAutoReload && assetIter->second && !assetIter->second->HandleAutoReload(); - - // when Asset's constructor is called (the one that takes an AssetData), it updates the AssetID - // of the Asset to be the real latest canonical assetId of the asset, so we cache that here instead of have it happen - // implicitly and repeatedly for anything we call. - Asset currentAsset(assetIter->second, AZ::Data::AssetLoadBehavior::Default); - - if (!assetIter->second->IsRegisterReadonlyAndShareable() && !preventAutoReload) - { - // Reloading an "instance asset" is basically a no-op. - // We'll simply notify users to reload the asset. - AssetBus::QueueFunction(&AssetManager::NotifyAssetReloaded, this, currentAsset); - return; - } - else - { - AssetBus::QueueFunction(&AssetManager::NotifyAssetPreReload, this, currentAsset); - } - - // Current AssetData has requested not to be auto reloaded - if (preventAutoReload) - { - return; - } - - // Resolve the asset handler and allocate new data for the reload. - { - AssetHandlerMap::iterator handlerIt = m_handlers.find(currentAsset.GetType()); - AZ_Assert(handlerIt != m_handlers.end(), "No handler was registered for this asset [type:%s id:%s]!", - currentAsset.GetType().ToString().c_str(), currentAsset.GetId().ToString().c_str()); - handler = handlerIt->second; - - newAssetData = handler->CreateAsset(currentAsset.GetId(), currentAsset.GetType()); - if (newAssetData) - { - newAssetData->m_assetId = currentAsset.GetId(); - newAssetData->RegisterWithHandler(handler); - } - } - - if (newAssetData) - { - // For reloaded assets, we need to hold an internal reference to ensure the data - // isn't immediately destroyed. Since reloads are not a shipping feature, we'll - // hold this reference indefinitely, but we'll only hold the most recent one for - // a given asset Id. - - newAssetData->m_status = AssetData::AssetStatus::Queued; - Asset newAsset(newAssetData, assetReferenceLoadBehavior); - - m_reloads[newAsset.GetId()] = newAsset; - - UpdateDebugStatus(newAsset); - - AZStd::shared_ptr dataStream; - AssetStreamInfo loadInfo = GetModifiedLoadStreamInfoForAsset(newAsset, handler); - constexpr bool isReload = true; - if (loadInfo.IsValid()) - { - // Create the AssetDataStream instance here so it can claim an asset reference inside the lock (for a total - // count of 2 before starting the load), otherwise the refcount will be 1, and the load could be canceled - // before it is started, which creates state consistency issues. - - dataStream = AZStd::make_shared(handler->GetAssetBufferAllocator()); - if (dataStream) - { - // Currently there isn't a clear use case for needing to adjust priority for reloads so the default load priority is used - constexpr bool signalLoaded = false; // this is a reload, so don't signal dependent-asset loads - QueueAsyncStreamLoad(newAsset, dataStream, loadInfo, isReload, - handler, {}, signalLoaded); + dataStream = AZStd::make_shared(handler->GetAssetBufferAllocator()); } else { - AZ_Assert(false, "Failed to create dataStream to reload asset %s (%s)", - newAsset.GetId().ToString().c_str(), - newAsset.GetHint().c_str()); + // Asset creation was successful, but asset loading isn't, so trigger the OnAssetError notification + triggerAssetErrorNotification = true; } } - else + } + } + + if (!assetInfo.m_relativePath.empty()) + { + asset.m_assetHint = assetInfo.m_relativePath; + } + + asset.SetAutoLoadBehavior(assetReferenceLoadBehavior); + + // We delay queueing the async file I/O until we release m_assetMutex + if (dataStream) + { + AZ_Assert(loadInfo.IsValid(), "Expected valid stream info when dataStream is valid."); + constexpr bool isReload = false; + QueueAsyncStreamLoad(asset, dataStream, loadInfo, isReload, + handler, loadParams, signalLoaded); + } + else + { + AZ_Assert(!loadInfo.IsValid(), "Expected invalid stream info when dataStream is invalid."); + + if(!wasUnloaded && assetData && assetData->GetStatus() == AssetData::AssetStatus::Queued) + { + auto&& [deadline, priority] = GetEffectiveDeadlineAndPriority(*handler, assetData->GetType(), loadParams); + + RescheduleStreamerRequest(assetData->GetId(), deadline, priority); + } + + if (triggerAssetErrorNotification) + { + // If the asset was missing from the catalog, we already printed an error, so we can skip printing this one. + if (!assetMissing) { - // Asset creation was successful, but asset loading isn't, so trigger the OnAssetError notification AZ_Error("AssetDatabase", false, "Failed to retrieve required information for asset %s (%s)", - newAsset.GetId().ToString().c_str(), - newAsset.GetHint().c_str()); - - constexpr bool loadSucceeded = false; - AssetManager::Instance().PostLoad(newAsset, loadSucceeded, isReload, handler); + assetInfo.m_assetId.ToString().c_str(), + assetInfo.m_relativePath.empty() ? "" : assetInfo.m_relativePath.c_str()); } + PostLoad(asset, false, false, handler); } } - //========================================================================= - // ReloadAssetFromData - //========================================================================= - void AssetManager::ReloadAssetFromData(const Asset& asset) + return asset; + } + + void AssetManager::UpdateDebugStatus(const AZ::Data::Asset& asset) + { + if(!m_debugAssetEvents) { - bool shouldAssignAssetData = false; - - { - AZ_Assert(asset.Get(), "Asset data for reload is missing."); - AZStd::scoped_lock assetLock(m_assetMutex); - AZ_Assert( - m_assets.find(asset.GetId()) != m_assets.end(), - "Unable to reload asset %s because it's not in the AssetManager's asset list.", asset.ToString().c_str()); - AZ_Assert( - m_assets.find(asset.GetId()) == m_assets.end() || - asset->RTTI_GetType() == m_assets.find(asset.GetId())->second->RTTI_GetType(), - "New and old data types are mismatched!"); - - auto found = m_assets.find(asset.GetId()); - if ((found == m_assets.end()) || (asset->RTTI_GetType() != found->second->RTTI_GetType())) - { - return; // this will just lead to crashes down the line and the above asserts cover this. - } - - AssetData* newData = asset.Get(); - - if (found->second != newData) - { - // Notify users that we are about to change asset - AssetBus::Event(asset.GetId(), &AssetBus::Events::OnAssetPreReload, asset); - - // Resolve the asset handler and account for the new asset instance. - { - [[maybe_unused]] AssetHandlerMap::iterator handlerIt = m_handlers.find(newData->GetType()); - AZ_Assert( - handlerIt != m_handlers.end(), "No handler was registered for this asset [type:%s id:%s]!", - newData->GetType().ToString().c_str(), newData->GetId().ToString().c_str()); - } - - shouldAssignAssetData = true; - } - } - - // We specifically perform this outside of the m_assetMutex lock so that the lock isn't held at the point that - // OnAssetReload is triggered inside of AssignAssetData. Otherwise, we open up a high potential for deadlocks. - if (shouldAssignAssetData) - { - AssignAssetData(asset); - } + m_debugAssetEvents = AZ::Interface::Get(); } - //========================================================================= - // GetHandler - //========================================================================= - AssetHandler* AssetManager::GetHandler(const AssetType& assetType) + if(m_debugAssetEvents) { - auto handlerEntry = m_handlers.find(assetType); - if (handlerEntry != m_handlers.end()) - { - return handlerEntry->second; - } - return nullptr; + m_debugAssetEvents->AssetStatusUpdate(asset.GetId(), asset.GetStatus()); + } + } + + Asset AssetManager::FindOrCreateAsset(const AssetId& assetId, const AssetType& assetType, AssetLoadBehavior assetReferenceLoadBehavior) + { + AZStd::scoped_lock asset_lock(m_assetMutex); + + Asset asset = FindAsset(assetId, assetReferenceLoadBehavior); + + if (!asset) + { + asset = CreateAsset(assetId, assetType, assetReferenceLoadBehavior); } - //========================================================================= - // AssignAssetData - //========================================================================= - void AssetManager::AssignAssetData(const Asset& asset) + return asset; + } + + //========================================================================= + // CreateAsset + // [8/31/2012] + //========================================================================= + Asset AssetManager::CreateAsset(const AssetId& assetId, const AssetType& assetType, AssetLoadBehavior assetReferenceLoadBehavior) + { + AZStd::scoped_lock asset_lock(m_assetMutex); + + // check if asset already exist + AssetMap::iterator it = m_assets.find(assetId); + if (it == m_assets.end()) { - AZ_Assert(asset.Get(), "Reloaded data is missing!"); - - const AssetId& assetId = asset.GetId(); - - asset->m_status = AssetData::AssetStatus::Ready; - UpdateDebugStatus(asset); - - if (asset->IsRegisterReadonlyAndShareable()) + // find the asset type handler + AssetHandlerMap::iterator handlerIt = m_handlers.find(assetType); + AZ_Error("AssetDatabase", handlerIt != m_handlers.end(), "No handler was registered for this asset (id=%s, type=%s)!", assetId.ToString().c_str(), assetType.ToString().c_str()); + if (handlerIt != m_handlers.end()) { - bool requeue{ false }; + // Create the asset ptr + AssetHandler* handler = handlerIt->second; + auto assetData = handler->CreateAsset(assetId, assetType); + AZ_Error("AssetDatabase", assetData, "Failed to create asset with (id=%s, type=%s)", assetId.ToString().c_str(), assetType.ToString().c_str()); + if (assetData) { - AZStd::scoped_lock assetLock(m_assetMutex); - auto found = m_assets.find(assetId); - AZ_Assert(found == m_assets.end() || asset.Get()->RTTI_GetType() == found->second->RTTI_GetType(), - "New and old data types are mismatched!"); - - // if we are here it implies that we have two assets with the same asset id, and we are - // trying to replace the old asset with the new asset which was not created using the asset manager system. - // In this scenario if any other system have cached the old asset then the asset wont be destroyed - // because of creation token mismatch when it's ref count finally goes to zero. Since the old asset is not shareable anymore - // manually setting the creationToken to default creation token will ensure that the asset is destroyed correctly. - asset.m_assetData->m_creationToken = ++m_creationTokenGenerator; - if (found != m_assets.end()) + assetData->m_assetId = assetId; + assetData->m_creationToken = ++m_creationTokenGenerator; + assetData->RegisterWithHandler(handler); + if (assetData->IsRegisterReadonlyAndShareable()) { - found->second->m_creationToken = AZ::Data::s_defaultCreationToken; + m_assets.insert(AZStd::make_pair(assetId, assetData)); } - // Held references to old data are retained, but replace the entry in the DB for future requests. - // Fire an OnAssetReloaded message so listeners can react to the new data. - m_assets[assetId] = asset.Get(); + Asset asset(assetReferenceLoadBehavior); + asset.SetData(assetData); - // Release the reload reference. - auto reloadInfo = m_reloads.find(assetId); - if (reloadInfo != m_reloads.end()) - { - requeue = reloadInfo->second->GetRequeue(); - m_reloads.erase(reloadInfo); - } + return asset; } - // Call reloaded before we can call ReloadAsset below to preserve order - AssetBus::Event(assetId, &AssetBus::Events::OnAssetReloaded, asset); - // Release the lock before we call reload - if (requeue) + } + } + else + { + AZ_Error("AssetDatabase", false, "Asset (id=%s, type=%s) already exists in the database! Asset not created!", assetId.ToString().c_str(), assetType.ToString().c_str()); + } + return Asset(assetReferenceLoadBehavior); + } + + //========================================================================= + // ReleaseAsset + //========================================================================= + void AssetManager::ReleaseAsset(AssetData* asset, AssetId assetId, AssetType assetType, bool removeAssetFromHash, int creationToken) + { + AZ_Assert(asset, "Cannot release NULL AssetPtr!"); + + if(m_suspendAssetRelease) + { + return; + } + + bool wasInAssetsHash = false; // We do support assets that are not registered in the asset manager (with the same ID too). + bool destroyAsset = false; + + if (removeAssetFromHash) + { + AZStd::scoped_lock asset_lock(m_assetMutex); + AssetMap::iterator it = m_assets.find(assetId); + // need to check the count again in here in case + // someone was trying to get the asset on another thread + // Set it to -1 so only this thread will attempt to clean up the cache and delete the asset + int expectedRefCount = 0; + // if the assetId is not in the map or if the identifierId + // do not match it implies that the asset has been already destroyed. + // if the usecount is non zero it implies that we cannot destroy this asset. + if (it != m_assets.end() && it->second->m_creationToken == creationToken && it->second->m_weakUseCount.compare_exchange_strong(expectedRefCount, -1)) + { + wasInAssetsHash = true; + m_assets.erase(it); + destroyAsset = true; + } + } + else + { + // if an asset is not shareable, it implies that that asset is not in the map + // and therefore once its ref count goes to zero it cannot go back up again and therefore we can safely destroy it + destroyAsset = true; + } + + // We have to separate the code which was removing the asset from the m_asset map while being locked, but then actually destroy the asset + // while the lock is not held since destroying the asset while holding the lock can cause a deadlock. + if (destroyAsset) + { + if(m_debugAssetEvents) + { + m_debugAssetEvents->ReleaseAsset(assetId); + } + + // find the asset type handler + AssetHandlerMap::iterator handlerIt = m_handlers.find(assetType); + if (handlerIt != m_handlers.end()) + { + AssetHandler* handler = handlerIt->second; + if (asset) { - ReloadAsset(assetId, asset.GetAutoLoadBehavior()); + handler->DestroyAsset(asset); + + if (wasInAssetsHash) + { + AssetBus::QueueEvent(assetId, &AssetBus::Events::OnAssetUnloaded, assetId, assetType); + } } } else { - AssetBus::Event(assetId, &AssetBus::Events::OnAssetReloaded, asset); + AZ_Assert(false, "No handler was registered for asset of type %s but it was still in the AssetManager as %s", assetType.ToString().c_str(), asset->GetId().ToString().c_str()); + } + } + } + + void AssetManager::OnAssetUnused(AssetData* asset) + { + // If we're currently suspending asset releases, don't get rid of the asset containers either. + if (m_suspendAssetRelease) + { + return; + } + + ReleaseAssetContainersForAsset(asset); + } + + void AssetManager::ReleaseAssetContainersForAsset(AssetData* asset) + { + // Release any containers that were loading this asset + AZStd::scoped_lock lock(m_assetContainerMutex); + + AssetId assetId = asset->GetId(); + + auto rangeItr = m_ownedAssetContainerLookup.equal_range(assetId); + + for (auto itr = rangeItr.first; itr != rangeItr.second;) + { + AZ_Assert(itr->second->GetContainerAssetId() == assetId, + "Asset container is incorrectly associated with the asset being destroyed."); + itr->second->ClearRootAsset(); + + // Only remove owned asset containers if they aren't currently loading. + // If they *are* currently loading, removing them could cause dependent asset loads that were triggered to + // remain in a perpetual loading state. Instead, leave the containers for now, they will get removed during + // the OnAssetContainerReady callback. + if (!itr->second->IsLoading()) + { + m_ownedAssetContainers.erase(itr->second); + itr = m_ownedAssetContainerLookup.erase(itr); + } + else + { + ++itr; + } + } + } + + //========================================================================= + // SaveAsset + // [9/13/2012] + //========================================================================= + void AssetManager::SaveAsset(const Asset& asset) + { + AssetHandler* handler; + { + // find the asset type handler + AssetHandlerMap::iterator handlerIt = m_handlers.find(asset.GetType()); + AZ_Assert(handlerIt != m_handlers.end(), "No handler was registered for this asset [type:%s id:%s]!", asset.GetType().ToString().c_str(), asset.GetId().ToString().c_str()); + handler = handlerIt->second; + } + + // start the data saving + SaveAssetJob* saveJob = aznew SaveAssetJob(JobContext::GetGlobalContext(), this, asset, handler); + saveJob->Start(); + } + + //========================================================================= + // ReloadAsset + //========================================================================= + void AssetManager::ReloadAsset(const AssetId& assetId, AssetLoadBehavior assetReferenceLoadBehavior, bool isAutoReload) + { + AZStd::scoped_lock assetLock(m_assetMutex); + auto assetIter = m_assets.find(assetId); + + if (assetIter == m_assets.end() || assetIter->second->IsLoading()) + { + // Only existing assets can be reloaded. + return; + } + + auto reloadIter = m_reloads.find(assetId); + if (reloadIter != m_reloads.end()) + { + auto curStatus = reloadIter->second.GetData()->GetStatus(); + // We don't need another reload if we're in "Queued" state because that reload has not actually begun yet. + // If it is in Loading state we want to pass by and allow the new assetData to be created and start the new reload + // As the current load could already be stale + if (curStatus == AssetData::AssetStatus::Queued) + { + return; + } + else if (curStatus == AssetData::AssetStatus::Loading || curStatus == AssetData::AssetStatus::StreamReady) + { + // Don't flood the tick bus - this value will be checked when the asset load completes + reloadIter->second->SetRequeue(true); + return; } } - //========================================================================= - // GetModifiedLoadStreamInfoForAsset - //========================================================================= - AssetStreamInfo AssetManager::GetModifiedLoadStreamInfoForAsset(const Asset& asset, AssetHandler* handler) + AssetData* newAssetData = nullptr; + AssetHandler* handler = nullptr; + + bool preventAutoReload = isAutoReload && assetIter->second && !assetIter->second->HandleAutoReload(); + + // when Asset's constructor is called (the one that takes an AssetData), it updates the AssetID + // of the Asset to be the real latest canonical assetId of the asset, so we cache that here instead of have it happen + // implicitly and repeatedly for anything we call. + Asset currentAsset(assetIter->second, AZ::Data::AssetLoadBehavior::Default); + + if (!assetIter->second->IsRegisterReadonlyAndShareable() && !preventAutoReload) { - AssetStreamInfo loadInfo = GetLoadStreamInfoForAsset(asset.GetId(), asset.GetType()); - if (!loadInfo.IsValid()) - { - // opportunity for handler to do default substitution: - AZ::Data::AssetId fallbackId = handler->AssetMissingInCatalog(asset); - if (fallbackId.IsValid()) - { - loadInfo = GetLoadStreamInfoForAsset(fallbackId, asset.GetType()); - } - } - - // Give the handler an opportunity to modify any of the load info before creating the dataStream. - handler->GetCustomAssetStreamInfoForLoad(loadInfo); - - return loadInfo; + // Reloading an "instance asset" is basically a no-op. + // We'll simply notify users to reload the asset. + AssetBus::QueueFunction(&AssetManager::NotifyAssetReloaded, this, currentAsset); + return; + } + else + { + AssetBus::QueueFunction(&AssetManager::NotifyAssetPreReload, this, currentAsset); } - //========================================================================= - // QueueAsyncStreamLoad - //========================================================================= - void AssetManager::QueueAsyncStreamLoad(Asset asset, AZStd::shared_ptr dataStream, - const AZ::Data::AssetStreamInfo& streamInfo, bool isReload, - AssetHandler* handler, const AssetLoadParameters& loadParams, bool signalLoaded) + // Current AssetData has requested not to be auto reloaded + if (preventAutoReload) { - AZ_PROFILE_FUNCTION(AzCore); + return; + } - // Set up the callback that will process the asset data once the raw file load is finished. - // The callback is declared as mutable so that we can clear weakAsset within the callback. The refcount in weakAsset - // can trigger an AssetManager::ReleaseAsset call. If this occurs during lambda cleanup, it could happen at any time - // on the file streamer thread as streamer requests get recycled, including during (or after) AssetManager shutdown. - // By controlling when the refcount is changed, we can ensure that it occurs while the AssetManager is still active. - auto assetDataStreamCallback = [this, loadParams, handler, dataStream, signalLoaded, isReload, - weakAsset = AssetInternal::WeakAsset(asset)] - (AZ::IO::IStreamerTypes::RequestStatus status) mutable + // Resolve the asset handler and allocate new data for the reload. + { + AssetHandlerMap::iterator handlerIt = m_handlers.find(currentAsset.GetType()); + AZ_Assert(handlerIt != m_handlers.end(), "No handler was registered for this asset [type:%s id:%s]!", + currentAsset.GetType().ToString().c_str(), currentAsset.GetId().ToString().c_str()); + handler = handlerIt->second; + + newAssetData = handler->CreateAsset(currentAsset.GetId(), currentAsset.GetType()); + if (newAssetData) { - auto assetId = weakAsset.GetId(); + newAssetData->m_assetId = currentAsset.GetId(); + newAssetData->RegisterWithHandler(handler); + } + } - Asset loadingAsset = weakAsset.GetStrongReference(); + if (newAssetData) + { + // For reloaded assets, we need to hold an internal reference to ensure the data + // isn't immediately destroyed. Since reloads are not a shipping feature, we'll + // hold this reference indefinitely, but we'll only hold the most recent one for + // a given asset Id. - if (loadingAsset) + newAssetData->m_status = AssetData::AssetStatus::Queued; + Asset newAsset(newAssetData, assetReferenceLoadBehavior); + + m_reloads[newAsset.GetId()] = newAsset; + + UpdateDebugStatus(newAsset); + + AZStd::shared_ptr dataStream; + AssetStreamInfo loadInfo = GetModifiedLoadStreamInfoForAsset(newAsset, handler); + constexpr bool isReload = true; + if (loadInfo.IsValid()) + { + // Create the AssetDataStream instance here so it can claim an asset reference inside the lock (for a total + // count of 2 before starting the load), otherwise the refcount will be 1, and the load could be canceled + // before it is started, which creates state consistency issues. + + dataStream = AZStd::make_shared(handler->GetAssetBufferAllocator()); + if (dataStream) { - AZ_PROFILE_SCOPE(AzCore, "AZ::Data::LoadAssetStreamerCallback %s", - loadingAsset.GetHint().c_str()); - { - AZStd::scoped_lock assetLock(m_assetMutex); - AssetData* data = loadingAsset.Get(); - if (data->GetStatus() != AssetData::AssetStatus::Queued) - { - AZ_Warning("AssetManager", false, "Asset %s no longer in Queued state, abandoning load", loadingAsset.GetId().ToString().c_str()); - return; - } - data->m_status = AssetData::AssetStatus::StreamReady; - } - - // The callback from AZ Streamer blocks the streaming thread until this function completes. To minimize the overhead, - // do the majority of the work in a separate job. - auto loadJob = aznew LoadAssetJob(this, loadingAsset, - dataStream, isReload, status, handler, loadParams, signalLoaded); - - bool jobQueued = false; - - // If there's already an active blocking request waiting for this load to complete, let that thread handle - // the load itself instead of consuming a second thread. - { - AZStd::scoped_lock requestLock(m_activeBlockingRequestMutex); - auto range = m_activeBlockingRequests.equal_range(assetId); - for(auto blockingRequest = range.first; blockingRequest != range.second; ++blockingRequest) - { - if(blockingRequest->second->QueueAssetLoadJob(loadJob)) - { - jobQueued = true; - break; - } - } - } - - if (!jobQueued) - { - loadJob->Start(); - } + // Currently there isn't a clear use case for needing to adjust priority for reloads so the default load priority is used + constexpr bool signalLoaded = false; // this is a reload, so don't signal dependent-asset loads + QueueAsyncStreamLoad(newAsset, dataStream, loadInfo, isReload, + handler, {}, signalLoaded); } else { - BlockingAssetLoadBus::Event(assetId, &BlockingAssetLoadBus::Events::OnLoadCanceled, assetId); - AssetManagerBus::Broadcast(&AssetManagerBus::Events::OnAssetCanceled, assetId); + AZ_Assert(false, "Failed to create dataStream to reload asset %s (%s)", + newAsset.GetId().ToString().c_str(), + newAsset.GetHint().c_str()); + } + } + else + { + // Asset creation was successful, but asset loading isn't, so trigger the OnAssetError notification + AZ_Error("AssetDatabase", false, "Failed to retrieve required information for asset %s (%s)", + newAsset.GetId().ToString().c_str(), + newAsset.GetHint().c_str()); + + constexpr bool loadSucceeded = false; + AssetManager::Instance().PostLoad(newAsset, loadSucceeded, isReload, handler); + } + + } + } + + //========================================================================= + // ReloadAssetFromData + //========================================================================= + void AssetManager::ReloadAssetFromData(const Asset& asset) + { + bool shouldAssignAssetData = false; + + { + AZ_Assert(asset.Get(), "Asset data for reload is missing."); + AZStd::scoped_lock assetLock(m_assetMutex); + AZ_Assert( + m_assets.find(asset.GetId()) != m_assets.end(), + "Unable to reload asset %s because it's not in the AssetManager's asset list.", asset.ToString().c_str()); + AZ_Assert( + m_assets.find(asset.GetId()) == m_assets.end() || + asset->RTTI_GetType() == m_assets.find(asset.GetId())->second->RTTI_GetType(), + "New and old data types are mismatched!"); + + auto found = m_assets.find(asset.GetId()); + if ((found == m_assets.end()) || (asset->RTTI_GetType() != found->second->RTTI_GetType())) + { + return; // this will just lead to crashes down the line and the above asserts cover this. + } + + AssetData* newData = asset.Get(); + + if (found->second != newData) + { + // Notify users that we are about to change asset + AssetBus::Event(asset.GetId(), &AssetBus::Events::OnAssetPreReload, asset); + + // Resolve the asset handler and account for the new asset instance. + { + [[maybe_unused]] AssetHandlerMap::iterator handlerIt = m_handlers.find(newData->GetType()); + AZ_Assert( + handlerIt != m_handlers.end(), "No handler was registered for this asset [type:%s id:%s]!", + newData->GetType().ToString().c_str(), newData->GetId().ToString().c_str()); } - // *After* the loadJob has been created, clear our asset references and remove the active streamer requests. - // This needs to happen after the loadJob creation to ensure that on AssetManager shutdown, there are no brief - // windows in which requests and/or jobs are still active after we've removed our tracking of the requests and jobs. - - // Also, if the asset references don't get cleared until after the callback completes, or at some indeterminate later - // time when the File Streamer cleans up the file requests (for the weakAsset lambda parameter), then it's possible that - // they will trigger a ReleaseAsset call sometime after the AssetManager has begun to shut down, which can lead to - // race conditions. - - weakAsset = {}; - loadingAsset.Reset(); - RemoveActiveStreamerRequest(assetId); - }; - - auto&& [deadline, priority] = GetEffectiveDeadlineAndPriority(*handler, asset.GetType(), loadParams); - - // Track the load request and queue the asset data stream load. - AddActiveStreamerRequest(asset.GetId(), dataStream); - dataStream->Open( - streamInfo.m_streamName, - streamInfo.m_dataOffset, - streamInfo.m_dataLen, - deadline, priority, assetDataStreamCallback); + shouldAssignAssetData = true; + } } - //========================================================================= - // NotifyAssetReady - //========================================================================= - void AssetManager::NotifyAssetReady(Asset asset) - { - AssetData* data = asset.Get(); - AZ_Assert(data, "NotifyAssetReady: asset is missing info!"); - data->m_status = AssetData::AssetStatus::Ready; - - AssetBus::Event(asset.GetId(), &AssetBus::Events::OnAssetReady, asset); - } - - //========================================================================= - // NotifyAssetPreReload - //========================================================================= - void AssetManager::NotifyAssetPreReload(Asset asset) - { - AssetBus::Event(asset.GetId(), &AssetBus::Events::OnAssetPreReload, asset); - } - - //========================================================================= - // NotifyAssetReloaded - //========================================================================= - void AssetManager::NotifyAssetReloaded(Asset asset) + // We specifically perform this outside of the m_assetMutex lock so that the lock isn't held at the point that + // OnAssetReload is triggered inside of AssignAssetData. Otherwise, we open up a high potential for deadlocks. + if (shouldAssignAssetData) { AssignAssetData(asset); } + } - //========================================================================= - // NotifyAssetReloaded - //========================================================================= - void AssetManager::NotifyAssetReloadError(Asset asset) + //========================================================================= + // GetHandler + //========================================================================= + AssetHandler* AssetManager::GetHandler(const AssetType& assetType) + { + auto handlerEntry = m_handlers.find(assetType); + if (handlerEntry != m_handlers.end()) { - // Failed reloads have no side effects. Just notify observers (error reporting, etc). + return handlerEntry->second; + } + return nullptr; + } + + //========================================================================= + // AssignAssetData + //========================================================================= + void AssetManager::AssignAssetData(const Asset& asset) + { + AZ_Assert(asset.Get(), "Reloaded data is missing!"); + + const AssetId& assetId = asset.GetId(); + + asset->m_status = AssetData::AssetStatus::Ready; + UpdateDebugStatus(asset); + + if (asset->IsRegisterReadonlyAndShareable()) + { + bool requeue{ false }; { - AZStd::lock_guard assetLock(m_assetMutex); - m_reloads.erase(asset.GetId()); - } - AssetBus::Event(asset.GetId(), &AssetBus::Events::OnAssetReloadError, asset); - } - - //========================================================================= - // NotifyAssetError - //========================================================================= - void AssetManager::NotifyAssetError(Asset asset) - { - asset.Get()->m_status = AssetData::AssetStatus::Error; - AssetBus::Event(asset.GetId(), &AssetBus::Events::OnAssetError, asset); - } - - void AssetManager::NotifyAssetCanceled(AssetId assetId) - { - AssetBus::Event(assetId, &AssetBus::Events::OnAssetCanceled, assetId); - } - - void AssetManager::NotifyAssetContainerReady(Asset asset) - { - AssetBus::Event(asset.GetId(), &AssetBus::Events::OnAssetContainerReady, asset); - } - - //========================================================================= - // AddJob - // [04/02/2014] - //========================================================================= - void AssetManager::AddJob(AssetDatabaseJob* job) - { - AZStd::scoped_lock assetLock(m_activeJobOrRequestMutex); - - m_activeJobs.push_back(*job); - } - - //========================================================================= - // ValidateAndRegisterAssetLoading - //========================================================================= - bool AssetManager::ValidateAndRegisterAssetLoading(const Asset& asset) - { - AssetData* data = asset.Get(); - { - AZStd::scoped_lock assetLock(m_assetMutex); - if (data) + auto found = m_assets.find(assetId); + AZ_Assert(found == m_assets.end() || asset.Get()->RTTI_GetType() == found->second->RTTI_GetType(), + "New and old data types are mismatched!"); + + // if we are here it implies that we have two assets with the same asset id, and we are + // trying to replace the old asset with the new asset which was not created using the asset manager system. + // In this scenario if any other system have cached the old asset then the asset wont be destroyed + // because of creation token mismatch when it's ref count finally goes to zero. Since the old asset is not shareable anymore + // manually setting the creationToken to default creation token will ensure that the asset is destroyed correctly. + asset.m_assetData->m_creationToken = ++m_creationTokenGenerator; + if (found != m_assets.end()) { - // The purpose of this function is to validate this asset is still in a StreamReady - // and only then continue the load. We change status to loading if everything - // is expected which the blocking RegisterAssetLoading call does not do because it - // is already in loading status - if (data->GetStatus() != AssetData::AssetStatus::StreamReady) - { - // Something else has attempted to load this asset - return false; - } - data->m_status = AssetData::AssetStatus::Loading; - UpdateDebugStatus(asset); + found->second->m_creationToken = AZ::Data::s_defaultCreationToken; + } + + // Held references to old data are retained, but replace the entry in the DB for future requests. + // Fire an OnAssetReloaded message so listeners can react to the new data. + m_assets[assetId] = asset.Get(); + + // Release the reload reference. + auto reloadInfo = m_reloads.find(assetId); + if (reloadInfo != m_reloads.end()) + { + requeue = reloadInfo->second->GetRequeue(); + m_reloads.erase(reloadInfo); } } + // Call reloaded before we can call ReloadAsset below to preserve order + AssetBus::Event(assetId, &AssetBus::Events::OnAssetReloaded, asset); + // Release the lock before we call reload + if (requeue) + { + ReloadAsset(assetId, asset.GetAutoLoadBehavior()); + } + } + else + { + AssetBus::Event(assetId, &AssetBus::Events::OnAssetReloaded, asset); + } + } - return true; + //========================================================================= + // GetModifiedLoadStreamInfoForAsset + //========================================================================= + AssetStreamInfo AssetManager::GetModifiedLoadStreamInfoForAsset(const Asset& asset, AssetHandler* handler) + { + AssetStreamInfo loadInfo = GetLoadStreamInfoForAsset(asset.GetId(), asset.GetType()); + if (!loadInfo.IsValid()) + { + // opportunity for handler to do default substitution: + AZ::Data::AssetId fallbackId = handler->AssetMissingInCatalog(asset); + if (fallbackId.IsValid()) + { + loadInfo = GetLoadStreamInfoForAsset(fallbackId, asset.GetType()); + } } - //========================================================================= - // RegisterAssetLoading - //========================================================================= - void AssetManager::RegisterAssetLoading(const Asset& asset) - { - AZ_PROFILE_FUNCTION(AzCore); + // Give the handler an opportunity to modify any of the load info before creating the dataStream. + handler->GetCustomAssetStreamInfoForLoad(loadInfo); - AssetData* data = asset.Get(); + return loadInfo; + } + + //========================================================================= + // QueueAsyncStreamLoad + //========================================================================= + void AssetManager::QueueAsyncStreamLoad(Asset asset, AZStd::shared_ptr dataStream, + const AZ::Data::AssetStreamInfo& streamInfo, bool isReload, + AssetHandler* handler, const AssetLoadParameters& loadParams, bool signalLoaded) + { + AZ_PROFILE_FUNCTION(AzCore); + + // Set up the callback that will process the asset data once the raw file load is finished. + // The callback is declared as mutable so that we can clear weakAsset within the callback. The refcount in weakAsset + // can trigger an AssetManager::ReleaseAsset call. If this occurs during lambda cleanup, it could happen at any time + // on the file streamer thread as streamer requests get recycled, including during (or after) AssetManager shutdown. + // By controlling when the refcount is changed, we can ensure that it occurs while the AssetManager is still active. + auto assetDataStreamCallback = [this, loadParams, handler, dataStream, signalLoaded, isReload, + weakAsset = AssetInternal::WeakAsset(asset)] + (AZ::IO::IStreamerTypes::RequestStatus status) mutable + { + auto assetId = weakAsset.GetId(); + + Asset loadingAsset = weakAsset.GetStrongReference(); + + if (loadingAsset) + { + AZ_PROFILE_SCOPE(AzCore, "AZ::Data::LoadAssetStreamerCallback %s", + loadingAsset.GetHint().c_str()); + { + AZStd::scoped_lock assetLock(m_assetMutex); + AssetData* data = loadingAsset.Get(); + if (data->GetStatus() != AssetData::AssetStatus::Queued) + { + AZ_Warning("AssetManager", false, "Asset %s no longer in Queued state, abandoning load", loadingAsset.GetId().ToString().c_str()); + return; + } + data->m_status = AssetData::AssetStatus::StreamReady; + } + + // The callback from AZ Streamer blocks the streaming thread until this function completes. To minimize the overhead, + // do the majority of the work in a separate job. + auto loadJob = aznew LoadAssetJob(this, loadingAsset, + dataStream, isReload, status, handler, loadParams, signalLoaded); + + bool jobQueued = false; + + // If there's already an active blocking request waiting for this load to complete, let that thread handle + // the load itself instead of consuming a second thread. + { + AZStd::scoped_lock requestLock(m_activeBlockingRequestMutex); + auto range = m_activeBlockingRequests.equal_range(assetId); + for(auto blockingRequest = range.first; blockingRequest != range.second; ++blockingRequest) + { + if(blockingRequest->second->QueueAssetLoadJob(loadJob)) + { + jobQueued = true; + break; + } + } + } + + if (!jobQueued) + { + loadJob->Start(); + } + } + else + { + BlockingAssetLoadBus::Event(assetId, &BlockingAssetLoadBus::Events::OnLoadCanceled, assetId); + AssetManagerBus::Broadcast(&AssetManagerBus::Events::OnAssetCanceled, assetId); + } + + // *After* the loadJob has been created, clear our asset references and remove the active streamer requests. + // This needs to happen after the loadJob creation to ensure that on AssetManager shutdown, there are no brief + // windows in which requests and/or jobs are still active after we've removed our tracking of the requests and jobs. + + // Also, if the asset references don't get cleared until after the callback completes, or at some indeterminate later + // time when the File Streamer cleans up the file requests (for the weakAsset lambda parameter), then it's possible that + // they will trigger a ReleaseAsset call sometime after the AssetManager has begun to shut down, which can lead to + // race conditions. + + // Make sure the streamer request is removed first before the asset is released + // If the asset is released first it could lead to a race condition where another thread starts loading the asset + // again and attempts to add a new streamer request with the same ID before the old one has been removed, causing + // that load request to fail + RemoveActiveStreamerRequest(assetId); + weakAsset = {}; + loadingAsset.Reset(); + }; + + auto&& [deadline, priority] = GetEffectiveDeadlineAndPriority(*handler, asset.GetType(), loadParams); + + // Track the load request and queue the asset data stream load. + AddActiveStreamerRequest(asset.GetId(), dataStream); + dataStream->Open( + streamInfo.m_streamName, + streamInfo.m_dataOffset, + streamInfo.m_dataLen, + deadline, priority, assetDataStreamCallback); + } + + //========================================================================= + // NotifyAssetReady + //========================================================================= + void AssetManager::NotifyAssetReady(Asset asset) + { + AssetData* data = asset.Get(); + AZ_Assert(data, "NotifyAssetReady: asset is missing info!"); + data->m_status = AssetData::AssetStatus::Ready; + + AssetBus::Event(asset.GetId(), &AssetBus::Events::OnAssetReady, asset); + } + + //========================================================================= + // NotifyAssetPreReload + //========================================================================= + void AssetManager::NotifyAssetPreReload(Asset asset) + { + AssetBus::Event(asset.GetId(), &AssetBus::Events::OnAssetPreReload, asset); + } + + //========================================================================= + // NotifyAssetReloaded + //========================================================================= + void AssetManager::NotifyAssetReloaded(Asset asset) + { + AssignAssetData(asset); + } + + //========================================================================= + // NotifyAssetReloaded + //========================================================================= + void AssetManager::NotifyAssetReloadError(Asset asset) + { + // Failed reloads have no side effects. Just notify observers (error reporting, etc). + { + AZStd::lock_guard assetLock(m_assetMutex); + m_reloads.erase(asset.GetId()); + } + AssetBus::Event(asset.GetId(), &AssetBus::Events::OnAssetReloadError, asset); + } + + //========================================================================= + // NotifyAssetError + //========================================================================= + void AssetManager::NotifyAssetError(Asset asset) + { + asset.Get()->m_status = AssetData::AssetStatus::Error; + AssetBus::Event(asset.GetId(), &AssetBus::Events::OnAssetError, asset); + } + + void AssetManager::NotifyAssetCanceled(AssetId assetId) + { + AssetBus::Event(assetId, &AssetBus::Events::OnAssetCanceled, assetId); + } + + void AssetManager::NotifyAssetContainerReady(Asset asset) + { + AssetBus::Event(asset.GetId(), &AssetBus::Events::OnAssetContainerReady, asset); + } + + //========================================================================= + // AddJob + // [04/02/2014] + //========================================================================= + void AssetManager::AddJob(AssetDatabaseJob* job) + { + AZStd::scoped_lock assetLock(m_activeJobOrRequestMutex); + + m_activeJobs.push_back(*job); + } + + //========================================================================= + // ValidateAndRegisterAssetLoading + //========================================================================= + bool AssetManager::ValidateAndRegisterAssetLoading(const Asset& asset) + { + AssetData* data = asset.Get(); + { + + AZStd::scoped_lock assetLock(m_assetMutex); if (data) { + // The purpose of this function is to validate this asset is still in a StreamReady + // and only then continue the load. We change status to loading if everything + // is expected which the blocking RegisterAssetLoading call does not do because it + // is already in loading status + if (data->GetStatus() != AssetData::AssetStatus::StreamReady) + { + // Something else has attempted to load this asset + return false; + } data->m_status = AssetData::AssetStatus::Loading; UpdateDebugStatus(asset); } } - //========================================================================= - // UnregisterAssetLoadingByThread - //========================================================================= - void AssetManager::UnregisterAssetLoading([[maybe_unused]] const Asset& asset) + return true; + } + + //========================================================================= + // RegisterAssetLoading + //========================================================================= + void AssetManager::RegisterAssetLoading(const Asset& asset) + { + AZ_PROFILE_FUNCTION(AzCore); + + AssetData* data = asset.Get(); + if (data) { - AZ_PROFILE_FUNCTION(AzCore); - } - - //========================================================================= - // RemoveJob - // [04/02/2014] - //========================================================================= - void AssetManager::RemoveJob(AssetDatabaseJob* job) - { - AZStd::scoped_lock assetLock(m_activeJobOrRequestMutex); - - m_activeJobs.erase(*job); - } - - //========================================================================= - // AddActiveStreamerRequest - //========================================================================= - void AssetManager::AddActiveStreamerRequest(AssetId assetId, AZStd::shared_ptr readRequest) - { - AZStd::scoped_lock assetLock(m_activeJobOrRequestMutex); - - // Track the request to allow for manual cancellation and for validating completion before AssetManager shutdown - [[maybe_unused]] auto inserted = - m_activeAssetDataStreamRequests.insert(AZStd::make_pair(assetId, readRequest)); - AZ_Assert(inserted.second, "Failed to insert streaming request into map for later retrieval by asset."); - - } - - void AssetManager::RescheduleStreamerRequest(AssetId assetId, AZStd::chrono::milliseconds newDeadline, AZ::IO::IStreamerTypes::Priority newPriority) - { - AZStd::scoped_lock lock(m_activeJobOrRequestMutex); - - auto iterator = m_activeAssetDataStreamRequests.find(assetId); - - if (iterator != m_activeAssetDataStreamRequests.end()) - { - iterator->second->Reschedule(newDeadline, newPriority); - } - } - - //========================================================================= - // RemoveActiveStreamerRequest - //========================================================================= - void AssetManager::RemoveActiveStreamerRequest(AssetId assetData) - { - AZStd::scoped_lock assetLock(m_activeJobOrRequestMutex); - m_activeAssetDataStreamRequests.erase(assetData); - } - - //========================================================================= - // HasActiveJobsOrStreamerRequests - //========================================================================= - bool AssetManager::HasActiveJobsOrStreamerRequests() - { - AZStd::scoped_lock assetLock(m_activeJobOrRequestMutex); - - return (!(m_activeJobs.empty() && m_activeAssetDataStreamRequests.empty())); - } - - //========================================================================= - // AddBlockingRequest - //========================================================================= - void AssetManager::AddBlockingRequest(AssetId assetId, WaitForAsset* blockingRequest) - { - AZStd::scoped_lock requestLock(m_activeBlockingRequestMutex); - - [[maybe_unused]] auto inserted = m_activeBlockingRequests.insert(AZStd::make_pair(assetId, blockingRequest)); - AZ_Assert(inserted.second, "Failed to track blocking request for asset %s", assetId.ToString().c_str()); - } - - //========================================================================= - // RemoveBlockingRequest - //========================================================================= - void AssetManager::RemoveBlockingRequest(AssetId assetId, WaitForAsset* blockingRequest) - { - AZStd::scoped_lock requestLock(m_activeBlockingRequestMutex); - [[maybe_unused]] bool requestFound = false; - for (auto assetIdIterator = m_activeBlockingRequests.find(assetId); assetIdIterator != m_activeBlockingRequests.end(); ) - { - if (assetIdIterator->second == blockingRequest) - { - m_activeBlockingRequests.erase(assetIdIterator); - requestFound = true; - break; - } - else - { - assetIdIterator++; - } - } - - AZ_Assert(requestFound, "Failed to erase blocking request for asset %s", assetId.ToString().c_str()); - } - - - //========================================================================= - // GetLoadStreamInfoForAsset() - // [04/04/2014] - //========================================================================= - AssetStreamInfo AssetManager::GetLoadStreamInfoForAsset(const AssetId& assetId, const AssetType& assetType) - { - AZStd::scoped_lock catalogLock(m_catalogMutex); - AssetCatalogMap::iterator catIt = m_catalogs.find(assetType); - if (catIt == m_catalogs.end()) - { - AZ_Error("Asset", false, "Asset [type:%s id:%s] with this type doesn't have a catalog!", assetType.template ToString().c_str(), assetId.ToString().c_str()); - return AssetStreamInfo(); - } - return catIt->second->GetStreamInfoForLoad(assetId, assetType); - } - - //========================================================================= - // GetSaveStreamInfoForAsset() - // [04/04/2014] - //========================================================================= - AssetStreamInfo AssetManager::GetSaveStreamInfoForAsset(const AssetId& assetId, const AssetType& assetType) - { - AZStd::scoped_lock catalogLock(m_catalogMutex); - AssetCatalogMap::iterator catIt = m_catalogs.find(assetType); - if (catIt == m_catalogs.end()) - { - AZ_Error("Asset", false, "Asset [type:%s id:%s] with this type doesn't have a catalog!", assetType.template ToString().c_str(), assetId.ToString().c_str()); - return AssetStreamInfo(); - } - return catIt->second->GetStreamInfoForSave(assetId, assetType); - } - - //========================================================================= - // OnAssetReady - // [04/02/2014] - //========================================================================= - void AssetManager::OnAssetReady(const Asset& asset) - { - AZ_Assert(asset.Get(), "OnAssetReady fired for an asset with no data."); - - // Set status immediately from within the AssetManagerBus dispatch, so it's committed before anyone is notified (e.g. job to job, via AssetJobBus). - asset.Get()->m_status = AssetData::AssetStatus::ReadyPreNotify; + data->m_status = AssetData::AssetStatus::Loading; UpdateDebugStatus(asset); - - // Queue broadcast message for delivery on game thread. - AssetBus::QueueFunction(&AssetManager::NotifyAssetReady, this, Asset(asset)); } + } - //========================================================================= - // OnAssetError - //========================================================================= - void AssetManager::OnAssetError(const Asset& asset) + //========================================================================= + // UnregisterAssetLoadingByThread + //========================================================================= + void AssetManager::UnregisterAssetLoading([[maybe_unused]] const Asset& asset) + { + AZ_PROFILE_FUNCTION(AzCore); + } + + //========================================================================= + // RemoveJob + // [04/02/2014] + //========================================================================= + void AssetManager::RemoveJob(AssetDatabaseJob* job) + { + AZStd::scoped_lock assetLock(m_activeJobOrRequestMutex); + + m_activeJobs.erase(*job); + } + + //========================================================================= + // AddActiveStreamerRequest + //========================================================================= + void AssetManager::AddActiveStreamerRequest(AssetId assetId, AZStd::shared_ptr readRequest) + { + AZStd::scoped_lock assetLock(m_activeJobOrRequestMutex); + + // Track the request to allow for manual cancellation and for validating completion before AssetManager shutdown + [[maybe_unused]] auto inserted = + m_activeAssetDataStreamRequests.insert(AZStd::make_pair(assetId, readRequest)); + AZ_Assert(inserted.second, "Failed to insert streaming request into map for later retrieval by asset."); + + } + + void AssetManager::RescheduleStreamerRequest(AssetId assetId, AZStd::chrono::milliseconds newDeadline, AZ::IO::IStreamerTypes::Priority newPriority) + { + AZStd::scoped_lock lock(m_activeJobOrRequestMutex); + + auto iterator = m_activeAssetDataStreamRequests.find(assetId); + + if (iterator != m_activeAssetDataStreamRequests.end()) { - // Set status immediately from within the AssetManagerBus dispatch, so it's committed before anyone is notified (e.g. job to job, via AssetJobBus). - asset.Get()->m_status = AssetData::AssetStatus::Error; - UpdateDebugStatus(asset); - - // Queue broadcast message for delivery on game thread. - AssetBus::QueueFunction(&AssetManager::NotifyAssetError, this, Asset(asset)); + iterator->second->Reschedule(newDeadline, newPriority); } + } - void AssetManager::OnAssetCanceled(AssetId assetId) + //========================================================================= + // RemoveActiveStreamerRequest + //========================================================================= + void AssetManager::RemoveActiveStreamerRequest(AssetId assetData) + { + AZStd::scoped_lock assetLock(m_activeJobOrRequestMutex); + m_activeAssetDataStreamRequests.erase(assetData); + } + + //========================================================================= + // HasActiveJobsOrStreamerRequests + //========================================================================= + bool AssetManager::HasActiveJobsOrStreamerRequests() + { + AZStd::scoped_lock assetLock(m_activeJobOrRequestMutex); + + return (!(m_activeJobs.empty() && m_activeAssetDataStreamRequests.empty())); + } + + //========================================================================= + // AddBlockingRequest + //========================================================================= + void AssetManager::AddBlockingRequest(AssetId assetId, WaitForAsset* blockingRequest) + { + AZStd::scoped_lock requestLock(m_activeBlockingRequestMutex); + + [[maybe_unused]] auto inserted = m_activeBlockingRequests.insert(AZStd::make_pair(assetId, blockingRequest)); + AZ_Assert(inserted.second, "Failed to track blocking request for asset %s", assetId.ToString().c_str()); + } + + //========================================================================= + // RemoveBlockingRequest + //========================================================================= + void AssetManager::RemoveBlockingRequest(AssetId assetId, WaitForAsset* blockingRequest) + { + AZStd::scoped_lock requestLock(m_activeBlockingRequestMutex); + [[maybe_unused]] bool requestFound = false; + for (auto assetIdIterator = m_activeBlockingRequests.find(assetId); assetIdIterator != m_activeBlockingRequests.end(); ) { - // Queue broadcast message for delivery on game thread. - AssetBus::QueueFunction(&AssetManager::NotifyAssetCanceled, this, assetId); - } - - void AssetManager::ReleaseOwnedAssetContainer(AssetContainer* assetContainer) - { - AZ_Assert(assetContainer, "Trying to release a null assetContainer pointer!"); - AZStd::scoped_lock lock(m_assetContainerMutex); - auto rangeItr = m_ownedAssetContainerLookup.equal_range(assetContainer->GetContainerAssetId()); - - for (auto itr = rangeItr.first; itr != rangeItr.second; ++itr) + if (assetIdIterator->second == blockingRequest) { - if (itr->second == assetContainer) - { - m_ownedAssetContainerLookup.erase(itr); - break; - } - } - - m_ownedAssetContainers.erase(assetContainer); - } - - void AssetManager::OnAssetContainerReady(AssetContainer* assetContainer) - { - AssetBus::QueueFunction([this, assetContainer, asset = assetContainer->GetRootAsset()]() - { - NotifyAssetContainerReady(asset); - ReleaseOwnedAssetContainer(assetContainer); - }); - } - - void AssetManager::OnAssetContainerCanceled(AssetContainer* assetContainer) - { - AssetBus::QueueFunction([this, assetContainer]() - { - ReleaseOwnedAssetContainer(assetContainer); - }); - } - - //========================================================================= - // OnAssetReloaded - //========================================================================= - void AssetManager::OnAssetReloaded(const Asset& asset) - { - // Queue broadcast message for delivery on game thread. - AssetBus::QueueFunction(&AssetManager::NotifyAssetReloaded, this, Asset(asset)); - } - - //========================================================================= - // OnAssetReloadError - //========================================================================= - void AssetManager::OnAssetReloadError(const Asset& asset) - { - // Queue broadcast message for delivery on game thread. - AssetBus::QueueFunction(&AssetManager::NotifyAssetReloadError, this, Asset(asset)); - } - - - //========================================================================= - // AssetHandler - // [04/03/2014] - //========================================================================= - AssetHandler::AssetHandler() - : m_nHandledTypes(0) - { - } - - //========================================================================= - // ~AssetHandler - // [04/03/2014] - //========================================================================= - AssetHandler::~AssetHandler() - { - if (m_nHandledTypes > 0) - { - AssetManager::Instance().UnregisterHandler(this); - } - - AZ_Error("AssetDatabase", m_nHandledTypes == 0, "Asset handler is being destroyed but there are still %d asset types being handled by it!", (int)m_nHandledTypes); - } - - //========================================================================= - // LoadAssetDataFromStream - //========================================================================= - AssetHandler::LoadResult AssetHandler::LoadAssetDataFromStream( - const Asset& asset, - AZStd::shared_ptr stream, - const AssetFilterCB& assetLoadFilterCB) - { - AZ_PROFILE_SCOPE(AzCore, "AssetHandler::LoadAssetData - %s", asset.GetHint().c_str()); - -#ifdef AZ_ENABLE_TRACING - auto start = AZStd::chrono::system_clock::now(); -#endif - - LoadResult result = LoadAssetData(asset, stream, assetLoadFilterCB); - -#ifdef AZ_ENABLE_TRACING - auto loadMs = AZStd::chrono::duration_cast( - AZStd::chrono::system_clock::now() - start); - AZ_Warning("AssetDatabase", (!cl_assetLoadWarningEnable) || - loadMs <= AZStd::chrono::milliseconds(cl_assetLoadWarningMsThreshold), - "Load time threshold exceeded: LoadAssetData call for %s took %" PRId64 " ms", - asset.GetHint().c_str(), loadMs.count()); -#endif - - return result; - } - - //========================================================================= - // InitAsset - // [04/03/2014] - //========================================================================= - void AssetHandler::InitAsset(const Asset& asset, bool loadStageSucceeded, bool isReload) - { - if (loadStageSucceeded) - { - if (isReload) - { - AssetManagerBus::Broadcast(&AssetManagerBus::Events::OnAssetReloaded, asset); - } - else - { - AssetManagerBus::Broadcast(&AssetManagerBus::Events::OnAssetReady, asset); - } + m_activeBlockingRequests.erase(assetIdIterator); + requestFound = true; + break; } else { - if (!isReload) - { - AssetManagerBus::Broadcast(&AssetManagerBus::Events::OnAssetError, asset); - } - else - { - AssetManagerBus::Broadcast(&AssetManagerBus::Events::OnAssetReloadError, asset); - } + assetIdIterator++; } } - void AssetManager::ValidateAndPostLoad(AZ::Data::Asset& asset, bool loadSucceeded, - bool isReload, AZ::Data::AssetHandler* assetHandler) + AZ_Assert(requestFound, "Failed to erase blocking request for asset %s", assetId.ToString().c_str()); + } + + + //========================================================================= + // GetLoadStreamInfoForAsset() + // [04/04/2014] + //========================================================================= + AssetStreamInfo AssetManager::GetLoadStreamInfoForAsset(const AssetId& assetId, const AssetType& assetType) + { + AZStd::scoped_lock catalogLock(m_catalogMutex); + AssetCatalogMap::iterator catIt = m_catalogs.find(assetType); + if (catIt == m_catalogs.end()) { + AZ_Error("Asset", false, "Asset [type:%s id:%s] with this type doesn't have a catalog!", assetType.template ToString().c_str(), assetId.ToString().c_str()); + return AssetStreamInfo(); + } + return catIt->second->GetStreamInfoForLoad(assetId, assetType); + } + + //========================================================================= + // GetSaveStreamInfoForAsset() + // [04/04/2014] + //========================================================================= + AssetStreamInfo AssetManager::GetSaveStreamInfoForAsset(const AssetId& assetId, const AssetType& assetType) + { + AZStd::scoped_lock catalogLock(m_catalogMutex); + AssetCatalogMap::iterator catIt = m_catalogs.find(assetType); + if (catIt == m_catalogs.end()) + { + AZ_Error("Asset", false, "Asset [type:%s id:%s] with this type doesn't have a catalog!", assetType.template ToString().c_str(), assetId.ToString().c_str()); + return AssetStreamInfo(); + } + return catIt->second->GetStreamInfoForSave(assetId, assetType); + } + + //========================================================================= + // OnAssetReady + // [04/02/2014] + //========================================================================= + void AssetManager::OnAssetReady(const Asset& asset) + { + AZ_Assert(asset.Get(), "OnAssetReady fired for an asset with no data."); + + // Set status immediately from within the AssetManagerBus dispatch, so it's committed before anyone is notified (e.g. job to job, via AssetJobBus). + asset.Get()->m_status = AssetData::AssetStatus::ReadyPreNotify; + UpdateDebugStatus(asset); + + // Queue broadcast message for delivery on game thread. + AssetBus::QueueFunction(&AssetManager::NotifyAssetReady, this, Asset(asset)); + } + + //========================================================================= + // OnAssetError + //========================================================================= + void AssetManager::OnAssetError(const Asset& asset) + { + // Set status immediately from within the AssetManagerBus dispatch, so it's committed before anyone is notified (e.g. job to job, via AssetJobBus). + asset.Get()->m_status = AssetData::AssetStatus::Error; + UpdateDebugStatus(asset); + + // Queue broadcast message for delivery on game thread. + AssetBus::QueueFunction(&AssetManager::NotifyAssetError, this, Asset(asset)); + } + + void AssetManager::OnAssetCanceled(AssetId assetId) + { + // Queue broadcast message for delivery on game thread. + AssetBus::QueueFunction(&AssetManager::NotifyAssetCanceled, this, assetId); + } + + void AssetManager::ReleaseOwnedAssetContainer(AssetContainer* assetContainer) + { + AZ_Assert(assetContainer, "Trying to release a null assetContainer pointer!"); + AZStd::scoped_lock lock(m_assetContainerMutex); + auto rangeItr = m_ownedAssetContainerLookup.equal_range(assetContainer->GetContainerAssetId()); + + for (auto itr = rangeItr.first; itr != rangeItr.second; ++itr) + { + if (itr->second == assetContainer) { - // We may need to revalidate that this asset hasn't already passed through postLoad - AZStd::scoped_lock assetLock(m_assetMutex); - if (asset->IsReady() || asset->m_status == AssetData::AssetStatus::LoadedPreReady) - { - return; - } - asset->m_status = AssetData::AssetStatus::LoadedPreReady; - UpdateDebugStatus(asset); + m_ownedAssetContainerLookup.erase(itr); + break; } - PostLoad(asset, loadSucceeded, isReload, assetHandler); } - void AssetManager::PostLoad(AZ::Data::Asset& asset, bool loadSucceeded, - bool isReload, AZ::Data::AssetHandler* assetHandler) - { - AZ_PROFILE_FUNCTION(AzCore); - if (!assetHandler) - { - assetHandler = GetHandler(asset.GetType()); - } + m_ownedAssetContainers.erase(assetContainer); + } - if (assetHandler) + void AssetManager::OnAssetContainerReady(AssetContainer* assetContainer) + { + AssetBus::QueueFunction([this, assetContainer, asset = assetContainer->GetRootAsset()]() + { + NotifyAssetContainerReady(asset); + ReleaseOwnedAssetContainer(assetContainer); + }); + } + + void AssetManager::OnAssetContainerCanceled(AssetContainer* assetContainer) + { + AssetBus::QueueFunction([this, assetContainer]() + { + ReleaseOwnedAssetContainer(assetContainer); + }); + } + + //========================================================================= + // OnAssetReloaded + //========================================================================= + void AssetManager::OnAssetReloaded(const Asset& asset) + { + // Queue broadcast message for delivery on game thread. + AssetBus::QueueFunction(&AssetManager::NotifyAssetReloaded, this, Asset(asset)); + } + + //========================================================================= + // OnAssetReloadError + //========================================================================= + void AssetManager::OnAssetReloadError(const Asset& asset) + { + // Queue broadcast message for delivery on game thread. + AssetBus::QueueFunction(&AssetManager::NotifyAssetReloadError, this, Asset(asset)); + } + + + //========================================================================= + // AssetHandler + // [04/03/2014] + //========================================================================= + AssetHandler::AssetHandler() + : m_nHandledTypes(0) + { + } + + //========================================================================= + // ~AssetHandler + // [04/03/2014] + //========================================================================= + AssetHandler::~AssetHandler() + { + if (m_nHandledTypes > 0) + { + AssetManager::Instance().UnregisterHandler(this); + } + + AZ_Error("AssetDatabase", m_nHandledTypes == 0, "Asset handler is being destroyed but there are still %d asset types being handled by it!", (int)m_nHandledTypes); + } + + //========================================================================= + // LoadAssetDataFromStream + //========================================================================= + AssetHandler::LoadResult AssetHandler::LoadAssetDataFromStream( + const Asset& asset, + AZStd::shared_ptr stream, + const AssetFilterCB& assetLoadFilterCB) + { + AZ_PROFILE_SCOPE(AzCore, "AssetHandler::LoadAssetData - %s", asset.GetHint().c_str()); + +#ifdef AZ_ENABLE_TRACING + auto start = AZStd::chrono::system_clock::now(); +#endif + + LoadResult result = LoadAssetData(asset, stream, assetLoadFilterCB); + +#ifdef AZ_ENABLE_TRACING + auto loadMs = AZStd::chrono::duration_cast( + AZStd::chrono::system_clock::now() - start); + AZ_Warning("AssetDatabase", (!cl_assetLoadWarningEnable) || + loadMs <= AZStd::chrono::milliseconds(cl_assetLoadWarningMsThreshold), + "Load time threshold exceeded: LoadAssetData call for %s took %" PRId64 " ms", + asset.GetHint().c_str(), loadMs.count()); +#endif + + return result; + } + + //========================================================================= + // InitAsset + // [04/03/2014] + //========================================================================= + void AssetHandler::InitAsset(const Asset& asset, bool loadStageSucceeded, bool isReload) + { + if (loadStageSucceeded) + { + if (isReload) { - // Queue the result for dispatch to main thread. - assetHandler->InitAsset(asset, loadSucceeded, isReload); + AssetManagerBus::Broadcast(&AssetManagerBus::Events::OnAssetReloaded, asset); } else { - AZ_Warning("AssetManager", false, "Couldn't find handler for asset %s (%s)", asset.GetId().ToString().c_str(), asset.GetHint().c_str()); + AssetManagerBus::Broadcast(&AssetManagerBus::Events::OnAssetReady, asset); } + } + else + { + if (!isReload) + { + AssetManagerBus::Broadcast(&AssetManagerBus::Events::OnAssetError, asset); + } + else + { + AssetManagerBus::Broadcast(&AssetManagerBus::Events::OnAssetReloadError, asset); + } + } + } - // Notify any dependent jobs. - BlockingAssetLoadBus::Event(asset.GetId(), &BlockingAssetLoadBus::Events::OnLoadComplete); + void AssetManager::ValidateAndPostLoad(AZ::Data::Asset& asset, bool loadSucceeded, + bool isReload, AZ::Data::AssetHandler* assetHandler) + { + { + // We may need to revalidate that this asset hasn't already passed through postLoad + AZStd::scoped_lock assetLock(m_assetMutex); + if (asset->IsReady() || asset->m_status == AssetData::AssetStatus::LoadedPreReady) + { + return; + } + asset->m_status = AssetData::AssetStatus::LoadedPreReady; + UpdateDebugStatus(asset); + } + PostLoad(asset, loadSucceeded, isReload, assetHandler); + } - UnregisterAssetLoading(asset); + void AssetManager::PostLoad(AZ::Data::Asset& asset, bool loadSucceeded, + bool isReload, AZ::Data::AssetHandler* assetHandler) + { + AZ_PROFILE_FUNCTION(AzCore); + if (!assetHandler) + { + assetHandler = GetHandler(asset.GetType()); } - AZStd::shared_ptr AssetManager::GetAssetContainer(Asset asset, const AssetLoadParameters& loadParams) + if (assetHandler) { - // If we're doing a custom load through a filter just hand back a one off container - if (loadParams.m_assetLoadFilterCB) - { - return CreateAssetContainer(asset, loadParams); - } + // Queue the result for dispatch to main thread. + assetHandler->InitAsset(asset, loadSucceeded, isReload); + } + else + { + AZ_Warning("AssetManager", false, "Couldn't find handler for asset %s (%s)", asset.GetId().ToString().c_str(), asset.GetHint().c_str()); + } - AZStd::scoped_lock containerLock(m_assetContainerMutex); - AssetContainerKey containerKey{ asset.GetId(), loadParams }; + // Notify any dependent jobs. + BlockingAssetLoadBus::Event(asset.GetId(), &BlockingAssetLoadBus::Events::OnLoadComplete); - auto curIter = m_assetContainers.find(containerKey); - if (curIter != m_assetContainers.end()) + UnregisterAssetLoading(asset); + } + + AZStd::shared_ptr AssetManager::GetAssetContainer(Asset asset, const AssetLoadParameters& loadParams) + { + // If we're doing a custom load through a filter just hand back a one off container + if (loadParams.m_assetLoadFilterCB) + { + return CreateAssetContainer(asset, loadParams); + } + + AZStd::scoped_lock containerLock(m_assetContainerMutex); + AssetContainerKey containerKey{ asset.GetId(), loadParams }; + + auto curIter = m_assetContainers.find(containerKey); + if (curIter != m_assetContainers.end()) + { + auto newRef = curIter->second.lock(); + if (newRef && newRef->IsValid()) { - auto newRef = curIter->second.lock(); - if (newRef && newRef->IsValid()) - { - return newRef; - } - auto newContainer = CreateAssetContainer(asset, loadParams); - curIter->second = newContainer; - return newContainer; + return newRef; } auto newContainer = CreateAssetContainer(asset, loadParams); - - m_assetContainers.insert({ containerKey, newContainer }); - + curIter->second = newContainer; return newContainer; } + auto newContainer = CreateAssetContainer(asset, loadParams); - AZStd::shared_ptr AssetManager::CreateAssetContainer(Asset asset, const AssetLoadParameters& loadParams) const - { - return AZStd::shared_ptr( aznew AssetContainer(AZStd::move(asset), loadParams)); - } - } // namespace Data -} // namespace AZ + m_assetContainers.insert({ containerKey, newContainer }); + + return newContainer; + } + + AZStd::shared_ptr AssetManager::CreateAssetContainer(Asset asset, const AssetLoadParameters& loadParams) const + { + return AZStd::shared_ptr( aznew AssetContainer(AZStd::move(asset), loadParams)); + } +} // namespace AZ::Data size_t AZStd::hash::operator()(const AZ::Data::AssetContainerKey& obj) const { diff --git a/Code/Framework/AzCore/AzCore/Asset/AssetManager.h b/Code/Framework/AzCore/AzCore/Asset/AssetManager.h index f109bb278c..9666d434c1 100644 --- a/Code/Framework/AzCore/AzCore/Asset/AssetManager.h +++ b/Code/Framework/AzCore/AzCore/Asset/AssetManager.h @@ -169,14 +169,14 @@ namespace AZ /// Register handler with the system for a particular asset type. /// A handler should be registered for each asset type it handles. /// Please note that all the handlers are registered just once during app startup from the main thread - /// and therefore this is not a thread safe method and should not be invoked from different threads. + /// and therefore this is not a thread safe method and should not be invoked from different threads. void RegisterHandler(AssetHandler* handler, const AssetType& assetType); /// Unregister handler from the asset system. /// Please note that all the handlers are unregistered just once during app shutdown from the main thread /// and therefore this is not a thread safe method and should not be invoked from different threads. void UnregisterHandler(AssetHandler* handler); // @} - + // @{ Asset catalog management /// Register a catalog with the system for a particular asset type. /// A catalog should be registered for each asset type it is responsible for. @@ -295,7 +295,7 @@ namespace AZ /** * Old 'legacy' assetIds and asset hints can be automatically replaced with new ones during deserialize / assignment. * This operation can be somewhat costly, and its only useful if the program subsequently re-saves the files its loading so that - * the asset hints and assetIds actually persist. Thus, it can be disabled in situations where you know you are not going to be + * the asset hints and assetIds actually persist. Thus, it can be disabled in situations where you know you are not going to be * saving over or creating new source files (for example builders/background apps) * By default, it is enabled. */ @@ -316,7 +316,7 @@ namespace AZ * This method must be invoked before you start unregistering handlers manually and shutting down the asset manager. * This method ensures that all jobs in flight are either canceled or completed. * This method is automatically called in the destructor but if you are unregistering handlers manually, - * you must invoke it yourself. + * you must invoke it yourself. */ void PrepareShutDown(); @@ -366,7 +366,7 @@ namespace AZ /** * Creates a new shared AssetContainer with an optional loadFilter * **/ - AZStd::shared_ptr CreateAssetContainer(Asset asset, const AssetLoadParameters& loadParams = AssetLoadParameters{}) const; + virtual AZStd::shared_ptr CreateAssetContainer(Asset asset, const AssetLoadParameters& loadParams = AssetLoadParameters{}) const; /** @@ -452,7 +452,7 @@ namespace AZ // Variant of RegisterAssetLoading used for jobs which have been queued and need to verify the status of the asset - // before loading in order to prevent cases where a load is queued, then a blocking load goes through, then the queued + // before loading in order to prevent cases where a load is queued, then a blocking load goes through, then the queued // load is processed. This validation step leaves the loaded (And potentially modified) data as is in that case. bool ValidateAndRegisterAssetLoading(const Asset& asset); @@ -482,7 +482,7 @@ namespace AZ * the blocking. That will result in a single thread deadlock. * * If you need to queue work, the logic needs to be similar to this: - * + * AssetHandler::LoadResult MyAssetHandler::LoadAssetData(const Asset& asset, AZStd::shared_ptr stream, const AZ::Data::AssetFilterCB& assetLoadFilterCB) { @@ -496,13 +496,13 @@ namespace AZ } else { - // queue job to load asset in thread identified by m_loadingThreadId + // queue job to load asset in thread identified by m_loadingThreadId auto* queuedJob = QueueLoadingOnOtherThread(...); // block waiting for queued job to complete queuedJob->BlockUntilComplete(); } - + . . . @@ -525,7 +525,7 @@ namespace AZ //! Result from LoadAssetData - it either finished loading, didn't finish and is waiting for more data, or had an error. enum class LoadResult : u8 { - + Error, // The provided data failed to load correctly MoreDataRequired, // The provided data loaded correctly, but more data is required to finish the asset load LoadComplete // The provided data loaded correctly, and the asset has been created diff --git a/Code/Framework/AzCore/AzCore/Asset/AssetManagerBus.h b/Code/Framework/AzCore/AzCore/Asset/AssetManagerBus.h index f76ea19589..44707645d0 100644 --- a/Code/Framework/AzCore/AzCore/Asset/AssetManagerBus.h +++ b/Code/Framework/AzCore/AzCore/Asset/AssetManagerBus.h @@ -10,6 +10,7 @@ #include #include +#include #include #include #include @@ -129,7 +130,8 @@ namespace AZ /// Remove a catalog from our delta list and rebuild the catalog from remaining items virtual bool RemoveDeltaCatalog(AZStd::shared_ptr /*deltaCatalog*/) { return true; } /// Creates a manifest with the given DeltaCatalog name - virtual bool CreateBundleManifest(const AZStd::string& /*deltaCatalogPath*/, const AZStd::vector& /*dependentBundleNames*/, const AZStd::string& /*fileDirectory*/, int /*bundleVersion*/, const AZStd::vector& /*levelDirs*/) { return false; } + virtual bool CreateBundleManifest(const AZStd::string& /*deltaCatalogPath*/, const AZStd::vector& /*dependentBundleNames*/, + const AZStd::string& /*fileDirectory*/, int /*bundleVersion*/, const AZStd::vector& /*levelDirs*/) { return false; } /// Creates an instance of a registry containing info for just the specified files, and writes it out to a file at the specified path virtual bool CreateDeltaCatalog(const AZStd::vector& /*files*/, const AZStd::string& /*filePath*/) { return false; } diff --git a/Code/Framework/AzCore/AzCore/AzCoreModule.cpp b/Code/Framework/AzCore/AzCore/AzCoreModule.cpp index 67123ed826..e7e87559b0 100644 --- a/Code/Framework/AzCore/AzCore/AzCoreModule.cpp +++ b/Code/Framework/AzCore/AzCore/AzCoreModule.cpp @@ -19,7 +19,6 @@ #include #include #include -#include #include #include #include @@ -40,7 +39,6 @@ namespace AZ SliceComponent::CreateDescriptor(), SliceSystemComponent::CreateDescriptor(), SliceMetadataInfoComponent::CreateDescriptor(), - TimeSystemComponent::CreateDescriptor(), LoggerSystemComponent::CreateDescriptor(), EventSchedulerSystemComponent::CreateDescriptor(), TaskGraphSystemComponent::CreateDescriptor(), @@ -59,7 +57,6 @@ namespace AZ { return AZ::ComponentTypeList { - azrtti_typeid(), azrtti_typeid(), azrtti_typeid(), azrtti_typeid(), diff --git a/Code/Framework/AzCore/AzCore/Component/ComponentApplication.cpp b/Code/Framework/AzCore/AzCore/Component/ComponentApplication.cpp index ad7e44c2ae..cf23d2b4d7 100644 --- a/Code/Framework/AzCore/AzCore/Component/ComponentApplication.cpp +++ b/Code/Framework/AzCore/AzCore/Component/ComponentApplication.cpp @@ -72,6 +72,7 @@ #include #include +#include static void PrintEntityName(const AZ::ConsoleCommandContainer& arguments) { @@ -416,6 +417,7 @@ namespace AZ ComponentApplication::ComponentApplication(int argC, char** argV) : m_eventLogger{} + , m_timeSystem(AZStd::make_unique()) { if (Interface::Get() == nullptr) { @@ -485,16 +487,6 @@ namespace AZ constexpr bool executeRegDumpCommands = false; SettingsRegistryMergeUtils::MergeSettingsToRegistry_CommandLine(*m_settingsRegistry, m_commandLine, executeRegDumpCommands); - // Query for the Executable Path using OS specific functions - CalculateExecutablePath(); - - // Determine the path to the engine - CalculateEngineRoot(); - - // If the current platform returns an engaged optional from Utils::GetDefaultAppRootPath(), that is used - // for the application root. - CalculateAppRoot(); - SettingsRegistryMergeUtils::MergeSettingsToRegistry_O3deUserRegistry(*m_settingsRegistry, AZ_TRAIT_OS_PLATFORM_CODENAME, {}); SettingsRegistryMergeUtils::MergeSettingsToRegistry_CommandLine(*m_settingsRegistry, m_commandLine, executeRegDumpCommands); SettingsRegistryMergeUtils::MergeSettingsToRegistry_AddRuntimeFilePaths(*m_settingsRegistry); @@ -584,7 +576,6 @@ namespace AZ DestroyAllocator(); } - void ReportBadEngineRoot() { AZStd::string errorMessage = {"Unable to determine a valid path to the engine.\n" @@ -614,7 +605,8 @@ namespace AZ { AZ_Assert(!m_isStarted, "Component application already started!"); - if (m_engineRoot.empty()) + using Type = AZ::SettingsRegistryInterface::Type; + if (m_settingsRegistry->GetType(SettingsRegistryMergeUtils::FilePathKey_EngineRootFolder) == Type::NoType) { ReportBadEngineRoot(); return nullptr; @@ -686,7 +678,6 @@ namespace AZ ComponentApplicationBus::Handler::BusConnect(); - m_currentTime = AZStd::chrono::system_clock::now(); TickRequestBus::Handler::BusConnect(); #if defined(AZ_ENABLE_DEBUG_TOOLS) @@ -1180,6 +1171,24 @@ namespace AZ return ReflectionEnvironment::GetReflectionManager() ? ReflectionEnvironment::GetReflectionManager()->GetReflectContext() : nullptr; } + /// Returns the path to the engine. + + const char* ComponentApplication::GetEngineRoot() const + { + static IO::FixedMaxPathString engineRoot; + engineRoot.clear(); + m_settingsRegistry->Get(engineRoot, SettingsRegistryMergeUtils::FilePathKey_EngineRootFolder); + return engineRoot.c_str(); + } + + const char* ComponentApplication::GetExecutableFolder() const + { + static IO::FixedMaxPathString exeFolder; + exeFolder.clear(); + m_settingsRegistry->Get(exeFolder, SettingsRegistryMergeUtils::FilePathKey_BinaryFolder); + return exeFolder.c_str(); + } + //========================================================================= // CreateReflectionManager //========================================================================= @@ -1404,31 +1413,23 @@ namespace AZ #endif } - void ComponentApplication::Tick(float deltaOverride /*= -1.f*/) + void ComponentApplication::Tick() { + AZ_PROFILE_SCOPE(System, "Component application simulation tick"); + { - AZ_PROFILE_SCOPE(System, "Component application simulation tick"); - - AZStd::chrono::system_clock::time_point now = AZStd::chrono::system_clock::now(); - - m_deltaTime = 0.0f; - - if (now >= m_currentTime) - { - AZStd::chrono::duration delta = now - m_currentTime; - m_deltaTime = deltaOverride >= 0.f ? deltaOverride : delta.count(); - } - - { - AZ_PROFILE_SCOPE(AzCore, "ComponentApplication::Tick:ExecuteQueuedEvents"); - TickBus::ExecuteQueuedEvents(); - } - m_currentTime = now; - { - AZ_PROFILE_SCOPE(AzCore, "ComponentApplication::Tick:OnTick"); - EBUS_EVENT(TickBus, OnTick, m_deltaTime, ScriptTimePoint(now)); - } + AZ_PROFILE_SCOPE(AzCore, "ComponentApplication::Tick:ExecuteQueuedEvents"); + TickBus::ExecuteQueuedEvents(); } + + { + AZ_PROFILE_SCOPE(AzCore, "ComponentApplication::Tick:OnTick"); + const AZ::TimeUs deltaTimeUs = m_timeSystem->AdvanceTickDeltaTimes(); + const float deltaTimeSeconds = AZ::TimeUsToSeconds(deltaTimeUs); + AZ::TickBus::Broadcast(&TickEvents::OnTick, deltaTimeSeconds, GetTimeAtCurrentTick()); + } + + m_timeSystem->ApplyTickRateLimiterIfNeeded(); } void ComponentApplication::TickSystem() @@ -1485,27 +1486,6 @@ namespace AZ } } - //========================================================================= - // CalculateExecutablePath - //========================================================================= - void ComponentApplication::CalculateExecutablePath() - { - m_exeDirectory = Utils::GetExecutableDirectory(); - } - - void ComponentApplication::CalculateAppRoot() - { - if (AZStd::optional appRootPath = Utils::GetDefaultAppRootPath(); appRootPath) - { - m_appRoot = AZStd::move(*appRootPath); - } - } - - void ComponentApplication::CalculateEngineRoot() - { - m_engineRoot = AZ::SettingsRegistryMergeUtils::FindEngineRoot(*m_settingsRegistry).Native(); - } - void ComponentApplication::ResolveModulePath([[maybe_unused]] AZ::OSString& modulePath) { // No special parsing of the Module Path is done by the Component Application anymore @@ -1531,13 +1511,10 @@ namespace AZ appType.m_maskValue = AZ::ApplicationTypeQuery::Masks::Invalid; } - //========================================================================= - // GetFrameTime - // [1/22/2016] - //========================================================================= float ComponentApplication::GetTickDeltaTime() { - return m_deltaTime; + const AZ::TimeUs gameTickTime = m_timeSystem->GetSimulationTickDeltaTimeUs(); + return AZ::TimeUsToSeconds(gameTickTime); } //========================================================================= @@ -1546,7 +1523,8 @@ namespace AZ //========================================================================= ScriptTimePoint ComponentApplication::GetTimeAtCurrentTick() { - return ScriptTimePoint(m_currentTime); + const AZ::TimeUs lastGameTickTime = m_timeSystem->GetLastSimulationTickTime(); + return ScriptTimePoint(AZ::TimeUsToChrono(lastGameTickTime)); } //========================================================================= diff --git a/Code/Framework/AzCore/AzCore/Component/ComponentApplication.h b/Code/Framework/AzCore/AzCore/Component/ComponentApplication.h index 6df93aff4e..f245b5f5da 100644 --- a/Code/Framework/AzCore/AzCore/Component/ComponentApplication.h +++ b/Code/Framework/AzCore/AzCore/Component/ComponentApplication.h @@ -30,12 +30,14 @@ #include #include + namespace AZ { class BehaviorContext; class IConsole; class Module; class ModuleManager; + class TimeSystem; } namespace AZ::Debug { @@ -221,13 +223,10 @@ namespace AZ BehaviorContext* GetBehaviorContext() override; /// Returns the json registration context that has been registered with the app, if there is one. JsonRegistrationContext* GetJsonRegistrationContext() override; - /// Returns the working root folder that has been registered with the app, if there is one. - /// It's expected that derived applications will implement an application root. - const char* GetAppRoot() const override { return m_appRoot.c_str(); } /// Returns the path to the engine. - const char* GetEngineRoot() const override { return m_engineRoot.c_str(); } + const char* GetEngineRoot() const override; /// Returns the path to the folder the executable is in. - const char* GetExecutableFolder() const override { return m_exeDirectory.c_str(); } + const char* GetExecutableFolder() const override; ////////////////////////////////////////////////////////////////////////// /// TickRequestBus @@ -240,7 +239,7 @@ namespace AZ /** * Ticks all components using the \ref AZ::TickBus during simulation time. May not tick if the application is not active (i.e. not in focus) */ - virtual void Tick(float deltaOverride = -1.f); + virtual void Tick(); /** * Ticks all using the \ref AZ::SystemTickBus at all times. Should always tick even if the application is not active. @@ -352,15 +351,6 @@ namespace AZ /// Adds system components requested by modules and the application to the system entity. void AddRequiredSystemComponents(AZ::Entity* systemEntity); - /// Calculates the directory the application executable comes from. - void CalculateExecutablePath(); - - /// Calculates the root directory of the engine. - void CalculateEngineRoot(); - - /// Deprecated: The term "AppRoot" has no meaning - void CalculateAppRoot(); - template static void NormalizePath(Iterator begin, Iterator end, bool doLowercase = true) { @@ -371,8 +361,6 @@ namespace AZ } } - AZStd::chrono::system_clock::time_point m_currentTime{ AZStd::chrono::system_clock::time_point::max() }; - float m_deltaTime{ 0.0f }; AZStd::unique_ptr m_moduleManager; AZStd::unique_ptr m_settingsRegistry; EntityAddedEvent m_entityAddedEvent; @@ -388,14 +376,13 @@ namespace AZ void* m_fixedMemoryBlock{ nullptr }; //!< Pointer to the memory block allocator, so we can free it OnDestroy. IAllocatorAllocate* m_osAllocator{ nullptr }; EntitySetType m_entities; - AZ::IO::FixedMaxPath m_exeDirectory; - AZ::IO::FixedMaxPath m_engineRoot; - AZ::IO::FixedMaxPath m_appRoot; AZ::SettingsRegistryInterface::NotifyEventHandler m_projectPathChangedHandler; AZ::SettingsRegistryInterface::NotifyEventHandler m_projectNameChangedHandler; AZ::SettingsRegistryInterface::NotifyEventHandler m_commandLineUpdatedHandler; + AZStd::unique_ptr m_timeSystem; + // ConsoleFunctorHandle is responsible for unregistering the Settings Registry Console // from the m_console member when it goes out of scope AZ::SettingsRegistryConsoleUtils::ConsoleFunctorHandle m_settingsRegistryConsoleFunctors; diff --git a/Code/Framework/AzCore/AzCore/Component/ComponentApplicationBus.h b/Code/Framework/AzCore/AzCore/Component/ComponentApplicationBus.h index 0c0977384a..feefa95973 100644 --- a/Code/Framework/AzCore/AzCore/Component/ComponentApplicationBus.h +++ b/Code/Framework/AzCore/AzCore/Component/ComponentApplicationBus.h @@ -175,10 +175,6 @@ namespace AZ //! the serializers used by the best-effort json serialization. virtual class JsonRegistrationContext* GetJsonRegistrationContext() = 0; - //! Gets the name of the working root folder that was registered with the app. - //! @return a pointer to the name of the app's root folder, if a root folder was registered. - virtual const char* GetAppRoot() const = 0; - //! Gets the path of the working engine folder that the app is a part of. //! @return a pointer to the engine path. virtual const char* GetEngineRoot() const = 0; diff --git a/Code/Framework/AzCore/AzCore/Component/EntityUtils.cpp b/Code/Framework/AzCore/AzCore/Component/EntityUtils.cpp index fcc8cd6424..54e40c1fc0 100644 --- a/Code/Framework/AzCore/AzCore/Component/EntityUtils.cpp +++ b/Code/Framework/AzCore/AzCore/Component/EntityUtils.cpp @@ -10,292 +10,289 @@ #include #include -namespace AZ +namespace AZ::EntityUtils { - namespace EntityUtils + //========================================================================= + // Reflect + //========================================================================= + void Reflect(ReflectContext* context) { - //========================================================================= - // Reflect - //========================================================================= - void Reflect(ReflectContext* context) + if (auto serializeContext = azrtti_cast(context)) { - if (auto serializeContext = azrtti_cast(context)) + serializeContext->Class()-> + Version(1)-> + Field("Entities", &SerializableEntityContainer::m_entities); + } + } + + struct StackDataType + { + const SerializeContext::ClassData* m_classData; + const SerializeContext::ClassElement* m_elementData; + void* m_dataPtr; + bool m_isModifiedContainer; + }; + + //========================================================================= + // EnumerateEntityIds + //========================================================================= + void EnumerateEntityIds(const void* classPtr, const Uuid& classUuid, const EntityIdVisitor& visitor, SerializeContext* context) + { + AZ_PROFILE_FUNCTION(AzCore); + + if (!context) + { + context = GetApplicationSerializeContext(); + if (!context) { - serializeContext->Class()-> - Version(1)-> - Field("Entities", &SerializableEntityContainer::m_entities); + AZ_Error("Serialization", false, "No serialize context provided! Failed to get component application default serialize context! ComponentApp is not started or input serialize context should not be null!"); + return; } } + AZStd::vector parentStack; + parentStack.reserve(30); + auto beginCB = [ &](void* ptr, const SerializeContext::ClassData* classData, const SerializeContext::ClassElement* elementData) -> bool + { + (void)elementData; - struct StackDataType + if (classData->m_typeId == SerializeTypeInfo::GetUuid()) + { + // determine if this is entity ref or just entityId (please refer to the function documentation for more info) + bool isEntityId = false; + if (!parentStack.empty() && parentStack.back()->m_typeId == SerializeTypeInfo::GetUuid()) + { + // our parent in the entity (currently entity has only one EntityId member, but we can check the offset for future proof + AZ_Assert(elementData && strcmp(elementData->m_name, "Id") == 0, "class Entity, should have only ONE EntityId member, the actual entity id!"); + isEntityId = true; + } + + EntityId* entityIdPtr = (elementData->m_flags & SerializeContext::ClassElement::FLG_POINTER) ? + *reinterpret_cast(ptr) : reinterpret_cast(ptr); + visitor(*entityIdPtr, isEntityId, elementData); + } + + parentStack.push_back(classData); + return true; + }; + + auto endCB = [ &]() -> bool + { + parentStack.pop_back(); + return true; + }; + + SerializeContext::EnumerateInstanceCallContext callContext( + beginCB, + endCB, + context, + SerializeContext::ENUM_ACCESS_FOR_READ, + nullptr + ); + + context->EnumerateInstanceConst( + &callContext, + classPtr, + classUuid, + nullptr, + nullptr + ); + } + + //========================================================================= + // GetApplicationSerializeContext + //========================================================================= + SerializeContext* GetApplicationSerializeContext() + { + SerializeContext* context = nullptr; + EBUS_EVENT_RESULT(context, ComponentApplicationBus, GetSerializeContext); + return context; + } + + //========================================================================= + // FindFirstDerivedComponent + //========================================================================= + Component* FindFirstDerivedComponent(const Entity* entity, const Uuid& typeId) + { + for (AZ::Component* component : entity->GetComponents()) { - const SerializeContext::ClassData* m_classData; - const SerializeContext::ClassElement* m_elementData; - void* m_dataPtr; - bool m_isModifiedContainer; + if (azrtti_istypeof(typeId, component)) + { + return component; + } + } + return nullptr; + } + + Component* FindFirstDerivedComponent(EntityId entityId, const Uuid& typeId) + { + Entity* entity{}; + ComponentApplicationBus::BroadcastResult(entity, &ComponentApplicationRequests::FindEntity, entityId); + return entity ? FindFirstDerivedComponent(entity, typeId) : nullptr; + } + + //========================================================================= + // FindDerivedComponents + //========================================================================= + Entity::ComponentArrayType FindDerivedComponents(const Entity* entity, const Uuid& typeId) + { + Entity::ComponentArrayType result; + for (AZ::Component* component : entity->GetComponents()) + { + if (azrtti_istypeof(typeId, component)) + { + result.push_back(component); + } + } + return result; + } + + Entity::ComponentArrayType FindDerivedComponents(EntityId entityId, const Uuid& typeId) + { + Entity* entity{}; + ComponentApplicationBus::BroadcastResult(entity, &ComponentApplicationRequests::FindEntity, entityId); + return entity ? FindDerivedComponents(entity, typeId) : Entity::ComponentArrayType(); + } + + bool EnumerateBaseRecursive(SerializeContext* context, const EnumerateBaseRecursiveVisitor& baseClassVisitor, const TypeId& typeToExamine) + { + AZ_Assert(context, "CheckDeclaresSerializeBaseClass called with no serialize context."); + if (!context) + { + return false; + } + + AZStd::fixed_vector knownBaseClasses = { typeToExamine }; // avoid allocating heap here if possible. 64 types are 64*sizeof(Uuid) which is only 1k. + bool foundBaseClass = false; + auto enumerateBaseVisitor = [&baseClassVisitor, &knownBaseClasses](const AZ::SerializeContext::ClassData* classData, const TypeId& examineTypeId) + { + if (!classData) + { + return false; + } + + if (AZStd::find(knownBaseClasses.begin(), knownBaseClasses.end(), classData->m_typeId) == knownBaseClasses.end()) + { + if (knownBaseClasses.size() == 64) + { + // this should be pretty unlikely since a single class would have to have many other classes in its heirarchy + // and it'd all have to be basically in one layer, as we are popping as we explore. + AZ_WarningOnce("EntityUtils", false, "While trying to find a base class, all available slots were consumed. consider increasing the size of knownBaseClasses.\n"); + // we cannot continue any further, assume we did not find it. + return false; + } + knownBaseClasses.push_back(classData->m_typeId); + } + + return baseClassVisitor(classData, examineTypeId); }; - //========================================================================= - // EnumerateEntityIds - //========================================================================= - void EnumerateEntityIds(const void* classPtr, const Uuid& classUuid, const EntityIdVisitor& visitor, SerializeContext* context) + while (!knownBaseClasses.empty() && !foundBaseClass) { - AZ_PROFILE_FUNCTION(AzCore); + TypeId toExamine = knownBaseClasses.back(); + knownBaseClasses.pop_back(); - if (!context) - { - context = GetApplicationSerializeContext(); - if (!context) - { - AZ_Error("Serialization", false, "No serialize context provided! Failed to get component application default serialize context! ComponentApp is not started or input serialize context should not be null!"); - return; - } - } - AZStd::vector parentStack; - parentStack.reserve(30); - auto beginCB = [ &](void* ptr, const SerializeContext::ClassData* classData, const SerializeContext::ClassElement* elementData) -> bool - { - (void)elementData; - - if (classData->m_typeId == SerializeTypeInfo::GetUuid()) - { - // determine if this is entity ref or just entityId (please refer to the function documentation for more info) - bool isEntityId = false; - if (!parentStack.empty() && parentStack.back()->m_typeId == SerializeTypeInfo::GetUuid()) - { - // our parent in the entity (currently entity has only one EntityId member, but we can check the offset for future proof - AZ_Assert(elementData && strcmp(elementData->m_name, "Id") == 0, "class Entity, should have only ONE EntityId member, the actual entity id!"); - isEntityId = true; - } - - EntityId* entityIdPtr = (elementData->m_flags & SerializeContext::ClassElement::FLG_POINTER) ? - *reinterpret_cast(ptr) : reinterpret_cast(ptr); - visitor(*entityIdPtr, isEntityId, elementData); - } - - parentStack.push_back(classData); - return true; - }; - - auto endCB = [ &]() -> bool - { - parentStack.pop_back(); - return true; - }; - - SerializeContext::EnumerateInstanceCallContext callContext( - beginCB, - endCB, - context, - SerializeContext::ENUM_ACCESS_FOR_READ, - nullptr - ); - - context->EnumerateInstanceConst( - &callContext, - classPtr, - classUuid, - nullptr, - nullptr - ); + context->EnumerateBase(enumerateBaseVisitor, toExamine); } - //========================================================================= - // GetApplicationSerializeContext - //========================================================================= - SerializeContext* GetApplicationSerializeContext() - { - SerializeContext* context = nullptr; - EBUS_EVENT_RESULT(context, ComponentApplicationBus, GetSerializeContext); - return context; - } + return foundBaseClass; + } - //========================================================================= - // FindFirstDerivedComponent - //========================================================================= - Component* FindFirstDerivedComponent(const Entity* entity, const Uuid& typeId) + bool CheckIfClassIsDeprecated(SerializeContext* context, const TypeId& typeToExamine) + { + bool isDeprecated = false; + auto classVisitorFn = [&isDeprecated](const AZ::SerializeContext::ClassData* classData, const TypeId& /*rttiBase*/) { - for (AZ::Component* component : entity->GetComponents()) - { - if (azrtti_istypeof(typeId, component)) - { - return component; - } - } - return nullptr; - } - - Component* FindFirstDerivedComponent(EntityId entityId, const Uuid& typeId) - { - Entity* entity{}; - ComponentApplicationBus::BroadcastResult(entity, &ComponentApplicationRequests::FindEntity, entityId); - return entity ? FindFirstDerivedComponent(entity, typeId) : nullptr; - } - - //========================================================================= - // FindDerivedComponents - //========================================================================= - Entity::ComponentArrayType FindDerivedComponents(const Entity* entity, const Uuid& typeId) - { - Entity::ComponentArrayType result; - for (AZ::Component* component : entity->GetComponents()) - { - if (azrtti_istypeof(typeId, component)) - { - result.push_back(component); - } - } - return result; - } - - Entity::ComponentArrayType FindDerivedComponents(EntityId entityId, const Uuid& typeId) - { - Entity* entity{}; - ComponentApplicationBus::BroadcastResult(entity, &ComponentApplicationRequests::FindEntity, entityId); - return entity ? FindDerivedComponents(entity, typeId) : Entity::ComponentArrayType(); - } - - bool EnumerateBaseRecursive(SerializeContext* context, const EnumerateBaseRecursiveVisitor& baseClassVisitor, const TypeId& typeToExamine) - { - AZ_Assert(context, "CheckDeclaresSerializeBaseClass called with no serialize context."); - if (!context) + // Stop iterating once we stop receiving SerializeContext::ClassData*. + if (!classData) { return false; } - AZStd::fixed_vector knownBaseClasses = { typeToExamine }; // avoid allocating heap here if possible. 64 types are 64*sizeof(Uuid) which is only 1k. - bool foundBaseClass = false; - auto enumerateBaseVisitor = [&baseClassVisitor, &knownBaseClasses](const AZ::SerializeContext::ClassData* classData, const TypeId& examineTypeId) - { - if (!classData) - { - return false; - } - - if (AZStd::find(knownBaseClasses.begin(), knownBaseClasses.end(), classData->m_typeId) == knownBaseClasses.end()) - { - if (knownBaseClasses.size() == 64) - { - // this should be pretty unlikely since a single class would have to have many other classes in its heirarchy - // and it'd all have to be basically in one layer, as we are popping as we explore. - AZ_WarningOnce("EntityUtils", false, "While trying to find a base class, all available slots were consumed. consider increasing the size of knownBaseClasses.\n"); - // we cannot continue any further, assume we did not find it. - return false; - } - knownBaseClasses.push_back(classData->m_typeId); - } - - return baseClassVisitor(classData, examineTypeId); - }; - - while (!knownBaseClasses.empty() && !foundBaseClass) - { - TypeId toExamine = knownBaseClasses.back(); - knownBaseClasses.pop_back(); - - context->EnumerateBase(enumerateBaseVisitor, toExamine); - } - - return foundBaseClass; - } - - bool CheckIfClassIsDeprecated(SerializeContext* context, const TypeId& typeToExamine) - { - bool isDeprecated = false; - auto classVisitorFn = [&isDeprecated](const AZ::SerializeContext::ClassData* classData, const TypeId& /*rttiBase*/) - { - // Stop iterating once we stop receiving SerializeContext::ClassData*. - if (!classData) - { - return false; - } - - // Stop iterating if we've found that the class is deprecated - if (classData->IsDeprecated()) - { - isDeprecated = true; - return false; - } - - return true; // keep iterating - }; - - // Check if the type is deprecated - const AZ::SerializeContext::ClassData* classData = context->FindClassData(typeToExamine); + // Stop iterating if we've found that the class is deprecated if (classData->IsDeprecated()) { - return true; - } - - // Check if any of its bases are deprecated - EnumerateBaseRecursive(context, classVisitorFn, typeToExamine); - - return isDeprecated; - } - - bool CheckDeclaresSerializeBaseClass(SerializeContext* context, const TypeId& typeToFind, const TypeId& typeToExamine) - { - AZ_Assert(context, "CheckDeclaresSerializeBaseClass called with no serialize context."); - if (!context) - { + isDeprecated = true; return false; } - bool foundBaseClass = false; - auto baseClassVisitorFn = [&typeToFind, &foundBaseClass](const AZ::SerializeContext::ClassData* reflectedBase, const TypeId& /*rttiBase*/) - { - if (!reflectedBase) - { - foundBaseClass = false; - return false; // stop iterating - } + return true; // keep iterating + }; - foundBaseClass = (reflectedBase->m_typeId == typeToFind); - if (foundBaseClass) - { - return false; // we have a base, stop iterating - } - - return true; // keep iterating - }; - - EnumerateBaseRecursive(context, baseClassVisitorFn, typeToExamine); - - return foundBaseClass; - } - - bool RemoveDuplicateServicesOfAndAfterIterator( - const ComponentDescriptor::DependencyArrayType::iterator& iterator, - ComponentDescriptor::DependencyArrayType& providedServiceArray, - const Entity* entity) + // Check if the type is deprecated + const AZ::SerializeContext::ClassData* classData = context->FindClassData(typeToExamine); + if (classData->IsDeprecated()) { - // Build types that strip out AZ_Warnings will complain that entity is unused without this. - (void)entity; - if (iterator == providedServiceArray.end()) - { - return false; - } - - bool duplicateFound = false; - - for (ComponentDescriptor::DependencyArrayType::iterator duplicateCheckIter = AZStd::next(iterator); - duplicateCheckIter != providedServiceArray.end();) - { - if (*iterator == *duplicateCheckIter) - { - AZ_Warning("Entity", false, "Duplicate service %d found on entity %s [%s]", - *duplicateCheckIter, - entity ? entity->GetName().c_str() : "Entity not provided", - entity ? entity->GetId().ToString().c_str() : ""); - duplicateCheckIter = providedServiceArray.erase(duplicateCheckIter); - duplicateFound = true; - } - else - { - ++duplicateCheckIter; - } - } - return duplicateFound; + return true; } - } // namespace EntityUtils -} // namespace AZ + + // Check if any of its bases are deprecated + EnumerateBaseRecursive(context, classVisitorFn, typeToExamine); + + return isDeprecated; + } + + bool CheckDeclaresSerializeBaseClass(SerializeContext* context, const TypeId& typeToFind, const TypeId& typeToExamine) + { + AZ_Assert(context, "CheckDeclaresSerializeBaseClass called with no serialize context."); + if (!context) + { + return false; + } + + bool foundBaseClass = false; + auto baseClassVisitorFn = [&typeToFind, &foundBaseClass](const AZ::SerializeContext::ClassData* reflectedBase, const TypeId& /*rttiBase*/) + { + if (!reflectedBase) + { + foundBaseClass = false; + return false; // stop iterating + } + + foundBaseClass = (reflectedBase->m_typeId == typeToFind); + if (foundBaseClass) + { + return false; // we have a base, stop iterating + } + + return true; // keep iterating + }; + + EnumerateBaseRecursive(context, baseClassVisitorFn, typeToExamine); + + return foundBaseClass; + } + + bool RemoveDuplicateServicesOfAndAfterIterator( + const ComponentDescriptor::DependencyArrayType::iterator& iterator, + ComponentDescriptor::DependencyArrayType& providedServiceArray, + const Entity* entity) + { + // Build types that strip out AZ_Warnings will complain that entity is unused without this. + (void)entity; + if (iterator == providedServiceArray.end()) + { + return false; + } + + bool duplicateFound = false; + + for (ComponentDescriptor::DependencyArrayType::iterator duplicateCheckIter = AZStd::next(iterator); + duplicateCheckIter != providedServiceArray.end();) + { + if (*iterator == *duplicateCheckIter) + { + AZ_Warning("Entity", false, "Duplicate service %d found on entity %s [%s]", + *duplicateCheckIter, + entity ? entity->GetName().c_str() : "Entity not provided", + entity ? entity->GetId().ToString().c_str() : ""); + duplicateCheckIter = providedServiceArray.erase(duplicateCheckIter); + duplicateFound = true; + } + else + { + ++duplicateCheckIter; + } + } + return duplicateFound; + } +} // namespace AZ::EntityUtils diff --git a/Code/Framework/AzCore/AzCore/Compression/zstd_compression.cpp b/Code/Framework/AzCore/AzCore/Compression/zstd_compression.cpp index 9db59bc781..ecab62d123 100644 --- a/Code/Framework/AzCore/AzCore/Compression/zstd_compression.cpp +++ b/Code/Framework/AzCore/AzCore/Compression/zstd_compression.cpp @@ -57,6 +57,7 @@ void ZStd::StartCompressor(unsigned int compressionLevel) ZSTD_customMem customAlloc; customAlloc.customAlloc = reinterpret_cast(&AllocateMem); customAlloc.customFree = &FreeMem; + customAlloc.opaque = nullptr; AZ_UNUSED(compressionLevel); m_streamCompression = (ZSTD_createCStream_advanced(customAlloc)); diff --git a/Code/Framework/AzCore/AzCore/Debug/AssetTracking.cpp b/Code/Framework/AzCore/AzCore/Debug/AssetTracking.cpp index 3cb895c992..c03b75d118 100644 --- a/Code/Framework/AzCore/AzCore/Debug/AssetTracking.cpp +++ b/Code/Framework/AzCore/AzCore/Debug/AssetTracking.cpp @@ -14,323 +14,313 @@ #include #include -namespace AZ +namespace AZ::Debug { - namespace Debug + namespace { - namespace + struct AssetTreeNode; + + // Per-thread data that needs to be stored. + struct ThreadData { - struct AssetTreeNode; - - // Per-thread data that needs to be stored. - struct ThreadData - { - AZStd::vector m_currentAssetStack; - }; - - // Access thread data through a virtual function to ensure that the same thread-local data is being shared across DLLs. - // Otherwise, the thread_local variables are replicated across DLLs that link the AzCore library, and you'll get a - // different version in each module. - class ThreadDataProvider - { - public: - virtual ThreadData& GetThreadData() = 0; - }; - } - - class AssetTrackingImpl final : - public ThreadDataProvider - { - public: - AZ_TYPE_INFO(AssetTrackingImpl, "{01E2A099-3523-40BE-80E0-E0ADD861BEE1}"); - AZ_CLASS_ALLOCATOR(AssetTrackingImpl, OSAllocator, 0); - - AssetTrackingImpl(AssetTreeBase* assetTree, AssetAllocationTableBase* allocationTable); - ~AssetTrackingImpl(); - - void AssetBegin(const char* id, const char* file, int line); - void AssetAttach(void* otherAllocation, const char* file, int line); - void AssetEnd(); - - ThreadData& GetThreadData() override; - - private: - static EnvironmentVariable& GetEnvironmentVariable(); - static AssetTrackingImpl* GetSharedInstance(); - static ThreadData& GetSharedThreadData(); - - using PrimaryAssets = AZStd::unordered_map, AZStd::equal_to, AZStdAssetTrackingAllocator>; - using ThreadData = ThreadData; - using mutex_type = AZStd::mutex; - using lock_type = AZStd::lock_guard; - - mutex_type m_mutex; - PrimaryAssets m_primaryAssets; - AssetTreeNodeBase* m_assetRoot = nullptr; - AssetAllocationTableBase* m_allocationTable = nullptr; - bool m_performingAnalysis = false; - - friend class AssetTracking; - friend class AssetTracking::Scope; + AZStd::vector m_currentAssetStack; }; + // Access thread data through a virtual function to ensure that the same thread-local data is being shared across DLLs. + // Otherwise, the thread_local variables are replicated across DLLs that link the AzCore library, and you'll get a + // different version in each module. + class ThreadDataProvider + { + public: + virtual ThreadData& GetThreadData() = 0; + }; } -} + + class AssetTrackingImpl final : + public ThreadDataProvider + { + public: + AZ_TYPE_INFO(AssetTrackingImpl, "{01E2A099-3523-40BE-80E0-E0ADD861BEE1}"); + AZ_CLASS_ALLOCATOR(AssetTrackingImpl, OSAllocator, 0); + + AssetTrackingImpl(AssetTreeBase* assetTree, AssetAllocationTableBase* allocationTable); + ~AssetTrackingImpl(); + + void AssetBegin(const char* id, const char* file, int line); + void AssetAttach(void* otherAllocation, const char* file, int line); + void AssetEnd(); + + ThreadData& GetThreadData() override; + + private: + static EnvironmentVariable& GetEnvironmentVariable(); + static AssetTrackingImpl* GetSharedInstance(); + static ThreadData& GetSharedThreadData(); + + using PrimaryAssets = AZStd::unordered_map, AZStd::equal_to, AZStdAssetTrackingAllocator>; + using ThreadData = ThreadData; + using mutex_type = AZStd::mutex; + using lock_type = AZStd::lock_guard; + + mutex_type m_mutex; + PrimaryAssets m_primaryAssets; + AssetTreeNodeBase* m_assetRoot = nullptr; + AssetAllocationTableBase* m_allocationTable = nullptr; + bool m_performingAnalysis = false; + + friend class AssetTracking; + friend class AssetTracking::Scope; + }; + /////////////////////////////////////////////////////////////////////////////// // AssetTrackingImpl methods /////////////////////////////////////////////////////////////////////////////// -namespace AZ -{ - namespace Debug + AssetTrackingImpl::AssetTrackingImpl(AssetTreeBase* assetTree, AssetAllocationTableBase* allocationTable) : + m_assetRoot(&assetTree->GetRoot()), + m_allocationTable(allocationTable) { - AssetTrackingImpl::AssetTrackingImpl(AssetTreeBase* assetTree, AssetAllocationTableBase* allocationTable) : - m_assetRoot(&assetTree->GetRoot()), - m_allocationTable(allocationTable) - { - AZ_Assert(!GetSharedInstance(), "Only one AssetTrackingImpl can exist!"); + AZ_Assert(!GetSharedInstance(), "Only one AssetTrackingImpl can exist!"); - GetEnvironmentVariable().Set(this); - AllocatorManager::Instance().EnterProfilingMode(); + GetEnvironmentVariable().Set(this); + AllocatorManager::Instance().EnterProfilingMode(); + } + + AssetTrackingImpl::~AssetTrackingImpl() + { + AllocatorManager::Instance().ExitProfilingMode(); + GetEnvironmentVariable().Reset(); + } + + void AssetTrackingImpl::AssetBegin(const char* id, const char* file, int line) + { + // In the future it may be desirable to organize assets based on where in code the asset was entered into. + // For now these are ignored. + AZ_UNUSED(file); + AZ_UNUSED(line); + + using namespace Internal; + + AssetTrackingId assetId(id); + auto& threadData = GetSharedThreadData(); + AssetTreeNodeBase* parentAsset = threadData.m_currentAssetStack.empty() ? nullptr : threadData.m_currentAssetStack.back(); + AssetTreeNodeBase* childAsset; + AssetPrimaryInfo* assetPrimaryInfo; + + if (!parentAsset) + { + parentAsset = m_assetRoot; } - AssetTrackingImpl::~AssetTrackingImpl() { - AllocatorManager::Instance().ExitProfilingMode(); - GetEnvironmentVariable().Reset(); - } + lock_type lock(m_mutex); - void AssetTrackingImpl::AssetBegin(const char* id, const char* file, int line) - { - // In the future it may be desirable to organize assets based on where in code the asset was entered into. - // For now these are ignored. - AZ_UNUSED(file); - AZ_UNUSED(line); + // Locate or create the primary record for this asset + auto primaryItr = m_primaryAssets.find(assetId); - using namespace Internal; - - AssetTrackingId assetId(id); - auto& threadData = GetSharedThreadData(); - AssetTreeNodeBase* parentAsset = threadData.m_currentAssetStack.empty() ? nullptr : threadData.m_currentAssetStack.back(); - AssetTreeNodeBase* childAsset; - AssetPrimaryInfo* assetPrimaryInfo; - - if (!parentAsset) + if (primaryItr != m_primaryAssets.end()) { - parentAsset = m_assetRoot; - } - - { - lock_type lock(m_mutex); - - // Locate or create the primary record for this asset - auto primaryItr = m_primaryAssets.find(assetId); - - if (primaryItr != m_primaryAssets.end()) - { - assetPrimaryInfo = &primaryItr->second; - } - else - { - auto insertResult = m_primaryAssets.emplace(assetId, AssetPrimaryInfo()); - assetPrimaryInfo = &insertResult.first->second; - assetPrimaryInfo->m_id = &insertResult.first->first; - } - - // Add this asset to the stack for this thread's context - childAsset = parentAsset->FindOrAddChild(assetId, assetPrimaryInfo); - } - - threadData.m_currentAssetStack.push_back(childAsset); - } - - void AssetTrackingImpl::AssetAttach(void* otherAllocation, const char* file, int line) - { - AZ_UNUSED(file); - AZ_UNUSED(line); - - using namespace Internal; - - AssetTreeNodeBase* assetInfo = m_allocationTable->FindAllocation(otherAllocation); - - // We will push back a nullptr if there is no asset, this is necessary to balance the call to AssetEnd() - GetSharedThreadData().m_currentAssetStack.push_back(assetInfo); - } - - void AssetTrackingImpl::AssetEnd() - { - AZ_Assert(!GetSharedThreadData().m_currentAssetStack.empty(), "AssetEnd() called without matching AssetBegin() or AssetAttach. Use the AZ_ASSET_NAMED_SCOPE and AZ_ASSET_ATTACH_TO_SCOPE macros to avoid this!"); - GetSharedThreadData().m_currentAssetStack.pop_back(); - } - - AssetTrackingImpl* AssetTrackingImpl::GetSharedInstance() - { - auto environmentVariable = GetEnvironmentVariable(); - - if(environmentVariable) - { - return *environmentVariable; - } - - return nullptr; - } - - ThreadData& AssetTrackingImpl::GetSharedThreadData() - { - // Cast to the base type so our virtual call doesn't get optimized away. We require GetThreadData() to be executed in the same DLL every time. - return static_cast(GetSharedInstance())->GetThreadData(); - } - - AssetTrackingImpl::ThreadData& AssetTrackingImpl::GetThreadData() - { - static thread_local ThreadData* data = nullptr; - static thread_local typename AZStd::aligned_storage_t storage; - - if (!data) - { - data = new (&storage) ThreadData; - } - - return *data; - } - - EnvironmentVariable& AssetTrackingImpl::GetEnvironmentVariable() - { - static EnvironmentVariable assetTrackingImpl = Environment::CreateVariable(AzTypeInfo::Name()); - - return assetTrackingImpl; - } - - /////////////////////////////////////////////////////////////////////////////// - // AssetTracking::Scope functions - /////////////////////////////////////////////////////////////////////////////// - - AssetTracking::Scope AssetTracking::Scope::ScopeFromAssetId(const char* file, int line, const char* fmt, ...) - { - if (auto impl = AssetTrackingImpl::GetSharedInstance()) - { - static const int BUFFER_SIZE = 1024; - - char buffer[BUFFER_SIZE]; - va_list args; - va_start(args, fmt); - azvsnprintf(buffer, BUFFER_SIZE, fmt, args); - va_end(args); - - impl->AssetBegin(buffer, file, line); - } - - return Scope(); - } - - AssetTracking::Scope AssetTracking::Scope::ScopeFromAttachment(void* attachTo, const char* file, int line) - { - if (auto impl = AssetTrackingImpl::GetSharedInstance()) - { - impl->AssetAttach(attachTo, file, line); - } - - return Scope(); - } - - AssetTracking::Scope::~Scope() - { - if (auto impl = AssetTrackingImpl::GetSharedInstance()) - { - impl->AssetEnd(); - } - } - - AssetTracking::Scope::Scope() - { - } - - /////////////////////////////////////////////////////////////////////////////// - // AssetTracking functions - /////////////////////////////////////////////////////////////////////////////// - - void AssetTracking::EnterScopeByAssetId(const char* file, int line, const char* fmt, ...) - { - if (auto impl = AssetTrackingImpl::GetSharedInstance()) - { - static const int BUFFER_SIZE = 1024; - - char buffer[BUFFER_SIZE]; - va_list args; - va_start(args, fmt); - azvsnprintf(buffer, BUFFER_SIZE, fmt, args); - va_end(args); - - impl->AssetBegin(buffer, file, line); - } - } - - void AssetTracking::EnterScopeByAttachment(void* attachTo, const char* file, int line) - { - if (auto impl = AssetTrackingImpl::GetSharedInstance()) - { - impl->AssetAttach(attachTo, file, line); - } - } - - void AssetTracking::ExitScope() - { - if (auto impl = AssetTrackingImpl::GetSharedInstance()) - { - impl->AssetEnd(); - } - } - - const char* AssetTracking::GetDebugScope() - { - // Output debug information about the current asset scope in the current thread. - // Do not use in production code. -#ifndef RELEASE - static const int BUFFER_SIZE = 1024; - static char buffer[BUFFER_SIZE]; - const auto& assetStack = AssetTrackingImpl::GetSharedInstance()->GetThreadData().m_currentAssetStack; - - if (assetStack.empty()) - { - azsnprintf(buffer, BUFFER_SIZE, ""); + assetPrimaryInfo = &primaryItr->second; } else { - char* pos = buffer; - for (auto itr = assetStack.rbegin(); itr != assetStack.rend(); ++itr) - { - pos += azsnprintf(pos, BUFFER_SIZE - (pos - buffer), "%s\n", (*itr)->GetAssetPrimaryInfo()->m_id->m_id.c_str()); - - if (pos >= buffer + BUFFER_SIZE) - { - break; - } - } + auto insertResult = m_primaryAssets.emplace(assetId, AssetPrimaryInfo()); + assetPrimaryInfo = &insertResult.first->second; + assetPrimaryInfo->m_id = &insertResult.first->first; } - return buffer; -#else - return ""; -#endif + // Add this asset to the stack for this thread's context + childAsset = parentAsset->FindOrAddChild(assetId, assetPrimaryInfo); } - AssetTracking::AssetTracking(AssetTreeBase* assetTree, AssetAllocationTableBase* allocationTable) + threadData.m_currentAssetStack.push_back(childAsset); + } + + void AssetTrackingImpl::AssetAttach(void* otherAllocation, const char* file, int line) + { + AZ_UNUSED(file); + AZ_UNUSED(line); + + using namespace Internal; + + AssetTreeNodeBase* assetInfo = m_allocationTable->FindAllocation(otherAllocation); + + // We will push back a nullptr if there is no asset, this is necessary to balance the call to AssetEnd() + GetSharedThreadData().m_currentAssetStack.push_back(assetInfo); + } + + void AssetTrackingImpl::AssetEnd() + { + AZ_Assert(!GetSharedThreadData().m_currentAssetStack.empty(), "AssetEnd() called without matching AssetBegin() or AssetAttach. Use the AZ_ASSET_NAMED_SCOPE and AZ_ASSET_ATTACH_TO_SCOPE macros to avoid this!"); + GetSharedThreadData().m_currentAssetStack.pop_back(); + } + + AssetTrackingImpl* AssetTrackingImpl::GetSharedInstance() + { + auto environmentVariable = GetEnvironmentVariable(); + + if(environmentVariable) { - m_impl.reset(aznew AssetTrackingImpl(assetTree, allocationTable)); + return *environmentVariable; } - AssetTracking::~AssetTracking() + return nullptr; + } + + ThreadData& AssetTrackingImpl::GetSharedThreadData() + { + // Cast to the base type so our virtual call doesn't get optimized away. We require GetThreadData() to be executed in the same DLL every time. + return static_cast(GetSharedInstance())->GetThreadData(); + } + + AssetTrackingImpl::ThreadData& AssetTrackingImpl::GetThreadData() + { + static thread_local ThreadData* data = nullptr; + static thread_local typename AZStd::aligned_storage_t storage; + + if (!data) { + data = new (&storage) ThreadData; } - AssetTreeNodeBase* AssetTracking::GetCurrentThreadAsset() const - { - const auto& assetStack = m_impl->GetThreadData().m_currentAssetStack; - AssetTreeNodeBase* result = assetStack.empty() ? nullptr : assetStack.back(); + return *data; + } - return result; + EnvironmentVariable& AssetTrackingImpl::GetEnvironmentVariable() + { + static EnvironmentVariable assetTrackingImpl = Environment::CreateVariable(AzTypeInfo::Name()); + + return assetTrackingImpl; + } + + /////////////////////////////////////////////////////////////////////////////// + // AssetTracking::Scope functions + /////////////////////////////////////////////////////////////////////////////// + + AssetTracking::Scope AssetTracking::Scope::ScopeFromAssetId(const char* file, int line, const char* fmt, ...) + { + if (auto impl = AssetTrackingImpl::GetSharedInstance()) + { + static const int BUFFER_SIZE = 1024; + + char buffer[BUFFER_SIZE]; + va_list args; + va_start(args, fmt); + azvsnprintf(buffer, BUFFER_SIZE, fmt, args); + va_end(args); + + impl->AssetBegin(buffer, file, line); + } + + return Scope(); + } + + AssetTracking::Scope AssetTracking::Scope::ScopeFromAttachment(void* attachTo, const char* file, int line) + { + if (auto impl = AssetTrackingImpl::GetSharedInstance()) + { + impl->AssetAttach(attachTo, file, line); + } + + return Scope(); + } + + AssetTracking::Scope::~Scope() + { + if (auto impl = AssetTrackingImpl::GetSharedInstance()) + { + impl->AssetEnd(); } } + AssetTracking::Scope::Scope() + { + } + + /////////////////////////////////////////////////////////////////////////////// + // AssetTracking functions + /////////////////////////////////////////////////////////////////////////////// + + void AssetTracking::EnterScopeByAssetId(const char* file, int line, const char* fmt, ...) + { + if (auto impl = AssetTrackingImpl::GetSharedInstance()) + { + static const int BUFFER_SIZE = 1024; + + char buffer[BUFFER_SIZE]; + va_list args; + va_start(args, fmt); + azvsnprintf(buffer, BUFFER_SIZE, fmt, args); + va_end(args); + + impl->AssetBegin(buffer, file, line); + } + } + + void AssetTracking::EnterScopeByAttachment(void* attachTo, const char* file, int line) + { + if (auto impl = AssetTrackingImpl::GetSharedInstance()) + { + impl->AssetAttach(attachTo, file, line); + } + } + + void AssetTracking::ExitScope() + { + if (auto impl = AssetTrackingImpl::GetSharedInstance()) + { + impl->AssetEnd(); + } + } + + const char* AssetTracking::GetDebugScope() + { + // Output debug information about the current asset scope in the current thread. + // Do not use in production code. +#ifndef RELEASE + static const int BUFFER_SIZE = 1024; + static char buffer[BUFFER_SIZE]; + const auto& assetStack = AssetTrackingImpl::GetSharedInstance()->GetThreadData().m_currentAssetStack; + + if (assetStack.empty()) + { + azsnprintf(buffer, BUFFER_SIZE, ""); + } + else + { + char* pos = buffer; + for (auto itr = assetStack.rbegin(); itr != assetStack.rend(); ++itr) + { + pos += azsnprintf(pos, BUFFER_SIZE - (pos - buffer), "%s\n", (*itr)->GetAssetPrimaryInfo()->m_id->m_id.c_str()); + + if (pos >= buffer + BUFFER_SIZE) + { + break; + } + } + } + + return buffer; +#else + return ""; +#endif + } + + AssetTracking::AssetTracking(AssetTreeBase* assetTree, AssetAllocationTableBase* allocationTable) + { + m_impl.reset(aznew AssetTrackingImpl(assetTree, allocationTable)); + } + + AssetTracking::~AssetTracking() + { + } + + AssetTreeNodeBase* AssetTracking::GetCurrentThreadAsset() const + { + const auto& assetStack = m_impl->GetThreadData().m_currentAssetStack; + AssetTreeNodeBase* result = assetStack.empty() ? nullptr : assetStack.back(); + + return result; + } } // namespace AzFramework diff --git a/Code/Framework/AzCore/AzCore/Debug/EventTrace.cpp b/Code/Framework/AzCore/AzCore/Debug/EventTrace.cpp index 88a78de031..58fa1f6cca 100644 --- a/Code/Framework/AzCore/AzCore/Debug/EventTrace.cpp +++ b/Code/Framework/AzCore/AzCore/Debug/EventTrace.cpp @@ -11,19 +11,19 @@ #include #include -namespace AZ +namespace AZ::Debug { - namespace Debug + EventTrace::ScopedSlice::ScopedSlice(const char* name, const char* category) + : m_Name(name) + , m_Category(category) + , m_Time(AZStd::GetTimeNowMicroSecond()) { - EventTrace::ScopedSlice::ScopedSlice(const char* name, const char* category) - : m_Name(name) - , m_Category(category) - , m_Time(AZStd::GetTimeNowMicroSecond()) - {} - - EventTrace::ScopedSlice::~ScopedSlice() - { - EventTraceDrillerBus::TryQueueBroadcast(&EventTraceDrillerInterface::RecordSlice, m_Name, m_Category, AZStd::this_thread::get_id(), m_Time, (uint32_t)(AZStd::GetTimeNowMicroSecond() - m_Time)); - } } -} + + EventTrace::ScopedSlice::~ScopedSlice() + { + EventTraceDrillerBus::TryQueueBroadcast( + &EventTraceDrillerInterface::RecordSlice, m_Name, m_Category, AZStd::this_thread::get_id(), m_Time, + (uint32_t)(AZStd::GetTimeNowMicroSecond() - m_Time)); + } +} // namespace AZ::Debug diff --git a/Code/Framework/AzCore/AzCore/Debug/EventTraceDriller.cpp b/Code/Framework/AzCore/AzCore/Debug/EventTraceDriller.cpp index 658021b018..d0722616f3 100644 --- a/Code/Framework/AzCore/AzCore/Debug/EventTraceDriller.cpp +++ b/Code/Framework/AzCore/AzCore/Debug/EventTraceDriller.cpp @@ -11,151 +11,149 @@ #include #include -namespace AZ +namespace AZ::Debug { - namespace Debug + namespace Crc { - namespace Crc + constexpr u32 EventTraceDriller = AZ_CRC_CE("EventTraceDriller"); + constexpr u32 Slice = AZ_CRC_CE("Slice"); + constexpr u32 ThreadInfo = AZ_CRC_CE("ThreadInfo"); + constexpr u32 Name = AZ_CRC_CE("Name"); + constexpr u32 Category = AZ_CRC_CE("Category"); + constexpr u32 ThreadId = AZ_CRC_CE("ThreadId"); + constexpr u32 Timestamp = AZ_CRC_CE("Timestamp"); + constexpr u32 Duration = AZ_CRC_CE("Duration"); + constexpr u32 Instant = AZ_CRC_CE("Instant"); + } + + EventTraceDriller::EventTraceDriller() + { + EventTraceDrillerSetupBus::Handler::BusConnect(); + AZStd::ThreadDrillerEventBus::Handler::BusConnect(); + } + + EventTraceDriller::~EventTraceDriller() + { + AZStd::ThreadDrillerEventBus::Handler::BusDisconnect(); + EventTraceDrillerSetupBus::Handler::BusDisconnect(); + } + + void EventTraceDriller::Start(const Param* params, int numParams) + { + (void)params; + (void)numParams; + + EventTraceDrillerBus::Handler::BusConnect(); + TickBus::Handler::BusConnect(); + + EventTraceDrillerBus::AllowFunctionQueuing(true); + } + + void EventTraceDriller::Stop() + { + EventTraceDrillerBus::AllowFunctionQueuing(false); + EventTraceDrillerBus::ClearQueuedEvents(); + + EventTraceDrillerBus::Handler::BusDisconnect(); + TickBus::Handler::BusDisconnect(); + } + + void EventTraceDriller::OnTick(float deltaTime, ScriptTimePoint time) + { + (void)deltaTime; + (void)time; + + AZ_TRACE_METHOD(); + RecordThreads(); + EventTraceDrillerBus::ExecuteQueuedEvents(); + } + + void EventTraceDriller::SetThreadName(const AZStd::thread_id& id, const char* name) + { + AZStd::lock_guard lock(m_ThreadMutex); + m_Threads[(size_t)id.m_id] = ThreadData{ name }; + } + + void EventTraceDriller::OnThreadEnter(const AZStd::thread::id& id, const AZStd::thread_desc* desc) + { + if (desc && desc->m_name) { - const u32 EventTraceDriller = AZ_CRC("EventTraceDriller", 0xf7aeae55); - const u32 Slice = AZ_CRC("Slice", 0x3dae78a5); - const u32 ThreadInfo = AZ_CRC("ThreadInfo", 0x89bf78be); - const u32 Name = AZ_CRC("Name", 0x5e237e06); - const u32 Category = AZ_CRC("Category", 0x064c19c1); - const u32 ThreadId = AZ_CRC("ThreadId", 0xd0fd9043); - const u32 Timestamp = AZ_CRC("Timestamp", 0xa5d6e63e); - const u32 Duration = AZ_CRC("Duration", 0x865f80c0); - const u32 Instant = AZ_CRC("Instant", 0x0e9047ad); + SetThreadName(id, desc->m_name); } + } - EventTraceDriller::EventTraceDriller() + void EventTraceDriller::OnThreadExit(const AZStd::thread::id& id) + { + AZStd::lock_guard lock(m_ThreadMutex); + m_Threads.erase((size_t)id.m_id); + } + + void EventTraceDriller::RecordThreads() + { + if (!m_output || m_Threads.empty()) { - EventTraceDrillerSetupBus::Handler::BusConnect(); - AZStd::ThreadDrillerEventBus::Handler::BusConnect(); + return; } + // Main bus mutex guards m_output. + auto& context = EventTraceDrillerBus::GetOrCreateContext(); - EventTraceDriller::~EventTraceDriller() - { - AZStd::ThreadDrillerEventBus::Handler::BusDisconnect(); - EventTraceDrillerSetupBus::Handler::BusDisconnect(); - } - - void EventTraceDriller::Start(const Param* params, int numParams) - { - (void)params; - (void)numParams; - - EventTraceDrillerBus::Handler::BusConnect(); - TickBus::Handler::BusConnect(); - - EventTraceDrillerBus::AllowFunctionQueuing(true); - } - - void EventTraceDriller::Stop() - { - EventTraceDrillerBus::AllowFunctionQueuing(false); - EventTraceDrillerBus::ClearQueuedEvents(); - - EventTraceDrillerBus::Handler::BusDisconnect(); - TickBus::Handler::BusDisconnect(); - } - - void EventTraceDriller::OnTick(float deltaTime, ScriptTimePoint time) - { - (void)deltaTime; - (void)time; - - AZ_TRACE_METHOD(); - RecordThreads(); - EventTraceDrillerBus::ExecuteQueuedEvents(); - } - - void EventTraceDriller::SetThreadName(const AZStd::thread_id& id, const char* name) - { - AZStd::lock_guard lock(m_ThreadMutex); - m_Threads[(size_t)id.m_id] = ThreadData{ name }; - } - - void EventTraceDriller::OnThreadEnter(const AZStd::thread::id& id, const AZStd::thread_desc* desc) - { - if (desc && desc->m_name) - { - SetThreadName(id, desc->m_name); - } - } - - void EventTraceDriller::OnThreadExit(const AZStd::thread::id& id) - { - AZStd::lock_guard lock(m_ThreadMutex); - m_Threads.erase((size_t)id.m_id); - } - - void EventTraceDriller::RecordThreads() - { - if (m_output && m_Threads.size()) - { - // Main bus mutex guards m_output. - auto& context = EventTraceDrillerBus::GetOrCreateContext(); - - AZStd::scoped_lock lock(context.m_contextMutex, m_ThreadMutex); - for (const auto& keyValue : m_Threads) - { - m_output->BeginTag(Crc::EventTraceDriller); - m_output->BeginTag(Crc::ThreadInfo); - m_output->Write(Crc::ThreadId, keyValue.first); - m_output->Write(Crc::Name, keyValue.second.name); - m_output->EndTag(Crc::ThreadInfo); - m_output->EndTag(Crc::EventTraceDriller); - } - } - } - - void EventTraceDriller::RecordSlice( - const char* name, - const char* category, - const AZStd::thread_id threadId, - AZ::u64 timestamp, - AZ::u32 duration) + AZStd::scoped_lock lock(context.m_contextMutex, m_ThreadMutex); + for (const auto& keyValue : m_Threads) { m_output->BeginTag(Crc::EventTraceDriller); - m_output->BeginTag(Crc::Slice); - m_output->Write(Crc::Name, name); - m_output->Write(Crc::Category, category); - m_output->Write(Crc::ThreadId, (size_t)threadId.m_id); - m_output->Write(Crc::Timestamp, timestamp); - m_output->Write(Crc::Duration, std::max(duration, 1u)); - m_output->EndTag(Crc::Slice); - m_output->EndTag(Crc::EventTraceDriller); - } - - void EventTraceDriller::RecordInstantGlobal( - const char* name, - const char* category, - AZ::u64 timestamp) - { - m_output->BeginTag(Crc::EventTraceDriller); - m_output->BeginTag(Crc::Instant); - m_output->Write(Crc::Name, name); - m_output->Write(Crc::Category, category); - m_output->Write(Crc::Timestamp, timestamp); - m_output->EndTag(Crc::Instant); - m_output->EndTag(Crc::EventTraceDriller); - } - - void EventTraceDriller::RecordInstantThread( - const char* name, - const char* category, - const AZStd::thread_id threadId, - AZ::u64 timestamp) - { - m_output->BeginTag(Crc::EventTraceDriller); - m_output->BeginTag(Crc::Instant); - m_output->Write(Crc::Name, name); - m_output->Write(Crc::Category, category); - m_output->Write(Crc::ThreadId, (size_t)threadId.m_id); - m_output->Write(Crc::Timestamp, timestamp); - m_output->EndTag(Crc::Instant); + m_output->BeginTag(Crc::ThreadInfo); + m_output->Write(Crc::ThreadId, keyValue.first); + m_output->Write(Crc::Name, keyValue.second.name); + m_output->EndTag(Crc::ThreadInfo); m_output->EndTag(Crc::EventTraceDriller); } } -} + + void EventTraceDriller::RecordSlice( + const char* name, + const char* category, + const AZStd::thread_id threadId, + AZ::u64 timestamp, + AZ::u32 duration) + { + m_output->BeginTag(Crc::EventTraceDriller); + m_output->BeginTag(Crc::Slice); + m_output->Write(Crc::Name, name); + m_output->Write(Crc::Category, category); + m_output->Write(Crc::ThreadId, (size_t)threadId.m_id); + m_output->Write(Crc::Timestamp, timestamp); + m_output->Write(Crc::Duration, std::max(duration, 1u)); + m_output->EndTag(Crc::Slice); + m_output->EndTag(Crc::EventTraceDriller); + } + + void EventTraceDriller::RecordInstantGlobal( + const char* name, + const char* category, + AZ::u64 timestamp) + { + m_output->BeginTag(Crc::EventTraceDriller); + m_output->BeginTag(Crc::Instant); + m_output->Write(Crc::Name, name); + m_output->Write(Crc::Category, category); + m_output->Write(Crc::Timestamp, timestamp); + m_output->EndTag(Crc::Instant); + m_output->EndTag(Crc::EventTraceDriller); + } + + void EventTraceDriller::RecordInstantThread( + const char* name, + const char* category, + const AZStd::thread_id threadId, + AZ::u64 timestamp) + { + m_output->BeginTag(Crc::EventTraceDriller); + m_output->BeginTag(Crc::Instant); + m_output->Write(Crc::Name, name); + m_output->Write(Crc::Category, category); + m_output->Write(Crc::ThreadId, (size_t)threadId.m_id); + m_output->Write(Crc::Timestamp, timestamp); + m_output->EndTag(Crc::Instant); + m_output->EndTag(Crc::EventTraceDriller); + } +} // namespace AZ::Debug diff --git a/Code/Framework/AzCore/AzCore/Debug/Trace.cpp b/Code/Framework/AzCore/AzCore/Debug/Trace.cpp index d393018a92..78dbf3c979 100644 --- a/Code/Framework/AzCore/AzCore/Debug/Trace.cpp +++ b/Code/Framework/AzCore/AzCore/Debug/Trace.cpp @@ -79,6 +79,7 @@ namespace AZ::Debug constexpr LogLevel DefaultLogLevel = LogLevel::Info; AZ_CVAR_SCOPED(int, bg_traceLogLevel, DefaultLogLevel, nullptr, ConsoleFunctorFlags::Null, "Enable trace message logging in release mode. 0=disabled, 1=errors, 2=warnings, 3=info."); + AZ_CVAR_SCOPED(bool, bg_alwaysShowCallstack, false, nullptr, ConsoleFunctorFlags::Null, "Force stack trace output without allowing ebus interception."); /** * If any listener returns true, store the result so we don't outputs detailed information. @@ -280,6 +281,13 @@ namespace AZ::Debug TraceMessageResult result; EBUS_EVENT_RESULT(result, TraceMessageBus, OnPreAssert, fileName, line, funcName, message); + + if (bg_alwaysShowCallstack) + { + // If we're always showing the callstack, print it now before there's any chance of an ebus handler interrupting + PrintCallstack(g_dbgSystemWnd, 1); + } + if (result.m_value) { g_alreadyHandlingAssertOrFatal = false; @@ -305,7 +313,10 @@ namespace AZ::Debug } Output(g_dbgSystemWnd, "------------------------------------------------\n"); - PrintCallstack(g_dbgSystemWnd, 1); + if (!bg_alwaysShowCallstack) + { + PrintCallstack(g_dbgSystemWnd, 1); + } Output(g_dbgSystemWnd, "==================================================================\n"); char dialogBoxText[g_maxMessageLength]; @@ -530,6 +541,16 @@ namespace AZ::Debug }*/ } + RawOutput(window, message); + } + + void Trace::RawOutput(const char* window, const char* message) + { + if (!window) + { + window = g_dbgSystemWnd; + } + // printf on Windows platforms seem to have a buffer length limit of 4096 characters // Therefore fwrite is used directly to write the window and message to stdout AZStd::string_view windowView{ window }; @@ -574,9 +595,19 @@ namespace AZ::Debug } azstrcat(lines[i], AZ_ARRAY_SIZE(lines[i]), "\n"); + // Use Output instead of AZ_Printf to be consistent with the exception output code and avoid // this accidentally being suppressed as a normal message - Output(window, lines[i]); + + if (bg_alwaysShowCallstack) + { + // Use Raw Output as this cannot be suppressed + RawOutput(window, lines[i]); + } + else + { + Output(window, lines[i]); + } } } } diff --git a/Code/Framework/AzCore/AzCore/Debug/Trace.h b/Code/Framework/AzCore/AzCore/Debug/Trace.h index 507ba48e53..fe33bf1b9c 100644 --- a/Code/Framework/AzCore/AzCore/Debug/Trace.h +++ b/Code/Framework/AzCore/AzCore/Debug/Trace.h @@ -73,6 +73,9 @@ namespace AZ static void Output(const char* window, const char* message); + /// Called by output to handle the actual output, does not interact with ebus or allow interception + static void RawOutput(const char* window, const char* message); + static void PrintCallstack(const char* window, unsigned int suppressCount = 0, void* nativeContext = 0); /// PEXCEPTION_POINTERS on Windows, always NULL on other platforms diff --git a/Code/Framework/AzCore/AzCore/Debug/TraceMessagesDriller.cpp b/Code/Framework/AzCore/AzCore/Debug/TraceMessagesDriller.cpp index 7e9e5b146e..dbe66838a4 100644 --- a/Code/Framework/AzCore/AzCore/Debug/TraceMessagesDriller.cpp +++ b/Code/Framework/AzCore/AzCore/Debug/TraceMessagesDriller.cpp @@ -9,94 +9,91 @@ #include #include -namespace AZ +namespace AZ::Debug { - namespace Debug + //========================================================================= + // Start + // [2/6/2013] + //========================================================================= + void TraceMessagesDriller::Start(const Param* params, int numParams) { - //========================================================================= - // Start - // [2/6/2013] - //========================================================================= - void TraceMessagesDriller::Start(const Param* params, int numParams) - { - (void)params; - (void)numParams; - BusConnect(); - } + (void)params; + (void)numParams; + BusConnect(); + } - //========================================================================= - // Stop - // [2/6/2013] - //========================================================================= - void TraceMessagesDriller::Stop() - { - BusDisconnect(); - } + //========================================================================= + // Stop + // [2/6/2013] + //========================================================================= + void TraceMessagesDriller::Stop() + { + BusDisconnect(); + } - //========================================================================= - // OnAssert - // [2/6/2013] - //========================================================================= - void TraceMessagesDriller::OnAssert(const char* message) - { - // Not sure if we can really capture assert since the code will stop executing very soon. - m_output->BeginTag(AZ_CRC("TraceMessagesDriller", 0xa61d1b00)); - m_output->Write(AZ_CRC("OnAssert", 0xb74db4ce), message); - m_output->EndTag(AZ_CRC("TraceMessagesDriller", 0xa61d1b00)); - } + //========================================================================= + // OnAssert + // [2/6/2013] + //========================================================================= + void TraceMessagesDriller::OnAssert(const char* message) + { + // Not sure if we can really capture assert since the code will stop executing very soon. + m_output->BeginTag(AZ_CRC_CE("TraceMessagesDriller")); + m_output->Write(AZ_CRC_CE("OnAssert"), message); + m_output->EndTag(AZ_CRC_CE("TraceMessagesDriller")); + } - //========================================================================= - // OnException - // [2/6/2013] - //========================================================================= - void TraceMessagesDriller::OnException(const char* message) - { - // Not sure if we can really capture exception since the code will stop executing very soon. - m_output->BeginTag(AZ_CRC("TraceMessagesDriller", 0xa61d1b00)); - m_output->Write(AZ_CRC("OnException", 0xfe457d12), message); - m_output->EndTag(AZ_CRC("TraceMessagesDriller", 0xa61d1b00)); - } + //========================================================================= + // OnException + // [2/6/2013] + //========================================================================= + void TraceMessagesDriller::OnException(const char* message) + { + // Not sure if we can really capture exception since the code will stop executing very soon. + m_output->BeginTag(AZ_CRC_CE("TraceMessagesDriller")); + m_output->Write(AZ_CRC_CE("OnException"), message); + m_output->EndTag(AZ_CRC_CE("TraceMessagesDriller")); + } - //========================================================================= - // OnError - // [2/6/2013] - //========================================================================= - void TraceMessagesDriller::OnError(const char* window, const char* message) - { - m_output->BeginTag(AZ_CRC("TraceMessagesDriller", 0xa61d1b00)); - m_output->BeginTag(AZ_CRC("OnError", 0x4993c634)); - m_output->Write(AZ_CRC("Window", 0x8be4f9dd), window); - m_output->Write(AZ_CRC("Message", 0xb6bd307f), message); - m_output->EndTag(AZ_CRC("OnError", 0x4993c634)); - m_output->EndTag(AZ_CRC("TraceMessagesDriller", 0xa61d1b00)); - } + //========================================================================= + // OnError + // [2/6/2013] + //========================================================================= + void TraceMessagesDriller::OnError(const char* window, const char* message) + { + m_output->BeginTag(AZ_CRC_CE("TraceMessagesDriller")); + m_output->BeginTag(AZ_CRC_CE("OnError")); + m_output->Write(AZ_CRC_CE("Window"), window); + m_output->Write(AZ_CRC_CE("Message"), message); + m_output->EndTag(AZ_CRC_CE("OnError")); + m_output->EndTag(AZ_CRC_CE("TraceMessagesDriller")); + } - //========================================================================= - // OnWarning - // [2/6/2013] - //========================================================================= - void TraceMessagesDriller::OnWarning(const char* window, const char* message) - { - m_output->BeginTag(AZ_CRC("TraceMessagesDriller", 0xa61d1b00)); - m_output->BeginTag(AZ_CRC("OnWarning", 0x7d90abea)); - m_output->Write(AZ_CRC("Window", 0x8be4f9dd), window); - m_output->Write(AZ_CRC("Message", 0xb6bd307f), message); - m_output->EndTag(AZ_CRC("OnWarning", 0x7d90abea)); - m_output->EndTag(AZ_CRC("TraceMessagesDriller", 0xa61d1b00)); - } + //========================================================================= + // OnWarning + // [2/6/2013] + //========================================================================= + void TraceMessagesDriller::OnWarning(const char* window, const char* message) + { + m_output->BeginTag(AZ_CRC_CE("TraceMessagesDriller")); + m_output->BeginTag(AZ_CRC_CE("OnWarning")); + m_output->Write(AZ_CRC_CE("Window"), window); + m_output->Write(AZ_CRC_CE("Message"), message); + m_output->EndTag(AZ_CRC_CE("OnWarning")); + m_output->EndTag(AZ_CRC_CE("TraceMessagesDriller")); + } - //========================================================================= - // OnPrintf - // [2/6/2013] - //========================================================================= - void TraceMessagesDriller::OnPrintf(const char* window, const char* message) - { - m_output->BeginTag(AZ_CRC("TraceMessagesDriller", 0xa61d1b00)); - m_output->BeginTag(AZ_CRC("OnPrintf", 0xd4b5c294)); - m_output->Write(AZ_CRC("Window", 0x8be4f9dd), window); - m_output->Write(AZ_CRC("Message", 0xb6bd307f), message); - m_output->EndTag(AZ_CRC("OnPrintf", 0xd4b5c294)); - m_output->EndTag(AZ_CRC("TraceMessagesDriller", 0xa61d1b00)); - } - } // namespace Debug + //========================================================================= + // OnPrintf + // [2/6/2013] + //========================================================================= + void TraceMessagesDriller::OnPrintf(const char* window, const char* message) + { + m_output->BeginTag(AZ_CRC_CE("TraceMessagesDriller")); + m_output->BeginTag(AZ_CRC_CE("OnPrintf")); + m_output->Write(AZ_CRC_CE("Window"), window); + m_output->Write(AZ_CRC_CE("Message"), message); + m_output->EndTag(AZ_CRC_CE("OnPrintf")); + m_output->EndTag(AZ_CRC_CE("TraceMessagesDriller")); + } } // namespace AZ diff --git a/Code/Framework/AzCore/AzCore/Debug/TraceReflection.cpp b/Code/Framework/AzCore/AzCore/Debug/TraceReflection.cpp index debbea5235..329a709994 100644 --- a/Code/Framework/AzCore/AzCore/Debug/TraceReflection.cpp +++ b/Code/Framework/AzCore/AzCore/Debug/TraceReflection.cpp @@ -12,283 +12,280 @@ #include #include -namespace AZ +namespace AZ::Debug { - namespace Debug + //! Trace Message Event Handler for Automation. + //! Since TraceMessageBus will be called from multiple threads and + //! python interpreter is single threaded, all the bus calls are + //! queued into a list and called at the end of the frame in the main thread. + //! @note this class is not using the usual AZ_EBUS_BEHAVIOR_BINDER + //! macro as the signature needs to be changed to connect to Tick bus. + class TraceMessageBusHandler + : public AZ::Debug::TraceMessageBus::Handler + , public AZ::BehaviorEBusHandler + , public AZ::TickBus::Handler { - //! Trace Message Event Handler for Automation. - //! Since TraceMessageBus will be called from multiple threads and - //! python interpreter is single threaded, all the bus calls are - //! queued into a list and called at the end of the frame in the main thread. - //! @note this class is not using the usual AZ_EBUS_BEHAVIOR_BINDER - //! macro as the signature needs to be changed to connect to Tick bus. - class TraceMessageBusHandler - : public AZ::Debug::TraceMessageBus::Handler - , public AZ::BehaviorEBusHandler - , public AZ::TickBus::Handler + public: + AZ_CLASS_ALLOCATOR(TraceMessageBusHandler, AZ::SystemAllocator, 0); + AZ_RTTI(TraceMessageBusHandler, "{5CDBAF09-5EB0-48AC-B327-2AF8601BB550}", AZ::BehaviorEBusHandler); + + TraceMessageBusHandler(); + + using EventFunctionsParameterPack = AZStd::Internal::pack_traits_arg_sequence< + decltype(&TraceMessageBusHandler::OnPreAssert), + decltype(&TraceMessageBusHandler::OnPreError), + decltype(&TraceMessageBusHandler::OnPreWarning), + decltype(&TraceMessageBusHandler::OnAssert), + decltype(&TraceMessageBusHandler::OnError), + decltype(&TraceMessageBusHandler::OnWarning), + decltype(&TraceMessageBusHandler::OnException), + decltype(&TraceMessageBusHandler::OnPrintf), + decltype(&TraceMessageBusHandler::OnOutput) + >; + + enum { - public: - AZ_CLASS_ALLOCATOR(TraceMessageBusHandler, AZ::SystemAllocator, 0); - AZ_RTTI(TraceMessageBusHandler, "{5CDBAF09-5EB0-48AC-B327-2AF8601BB550}", AZ::BehaviorEBusHandler); - - TraceMessageBusHandler(); - - using EventFunctionsParameterPack = AZStd::Internal::pack_traits_arg_sequence< - decltype(&TraceMessageBusHandler::OnPreAssert), - decltype(&TraceMessageBusHandler::OnPreError), - decltype(&TraceMessageBusHandler::OnPreWarning), - decltype(&TraceMessageBusHandler::OnAssert), - decltype(&TraceMessageBusHandler::OnError), - decltype(&TraceMessageBusHandler::OnWarning), - decltype(&TraceMessageBusHandler::OnException), - decltype(&TraceMessageBusHandler::OnPrintf), - decltype(&TraceMessageBusHandler::OnOutput) - >; - - enum - { - FN_OnPreAssert = 0, - FN_OnPreError, - FN_OnPreWarning, - FN_OnAssert, - FN_OnError, - FN_OnWarning, - FN_OnException, - FN_OnPrintf, - FN_OnOutput, - FN_MAX - }; - - static inline constexpr const char* m_functionNames[FN_MAX] = - { - "OnPreAssert", - "OnPreError", - "OnPreWarning", - "OnAssert", - "OnError", - "OnWarning", - "OnException", - "OnPrintf", - "OnOutput" - }; - - // AZ::BehaviorEBusHandler overrides... - int GetFunctionIndex(const char* functionName) const override; - void Disconnect() override; - bool Connect(AZ::BehaviorValueParameter* id = nullptr) override; - bool IsConnected() override; - bool IsConnectedId(AZ::BehaviorValueParameter* id) override; - - // TraceMessageBus - /* - * Note: Since at editor runtime there is already have a handler, for automation (OnPreAssert, OnPreWarning, OnPreWarning) - * must be used instead of (OnAssert, OnWarning, OnError) - */ - bool OnPreAssert(const char* fileName, int line, const char* func, const char* message) override; - bool OnPreError(const char* window, const char* fileName, int line, const char* func, const char* message) override; - bool OnPreWarning(const char* window, const char* fileName, int line, const char* func, const char* message) override; - bool OnAssert(const char* message) override; - bool OnError(const char* window, const char* message) override; - bool OnWarning(const char* window, const char* message) override; - bool OnException(const char* message) override; - bool OnPrintf(const char* window, const char* message) override; - bool OnOutput(const char* window, const char* message) override; - - // AZ::TickBus::Handler overrides ... - void OnTick(float deltaTime, AZ::ScriptTimePoint time) override; - int GetTickOrder() override; - - private: - void QueueMessageCall(AZStd::function messageCall); - void FlushMessageCalls(); - - AZStd::list> m_messageCalls; - AZStd::mutex m_messageCallsLock; + FN_OnPreAssert = 0, + FN_OnPreError, + FN_OnPreWarning, + FN_OnAssert, + FN_OnError, + FN_OnWarning, + FN_OnException, + FN_OnPrintf, + FN_OnOutput, + FN_MAX }; - TraceMessageBusHandler::TraceMessageBusHandler() + static inline constexpr const char* m_functionNames[FN_MAX] = { - m_events.resize(FN_MAX); + "OnPreAssert", + "OnPreError", + "OnPreWarning", + "OnAssert", + "OnError", + "OnWarning", + "OnException", + "OnPrintf", + "OnOutput" + }; - SetEvent(&TraceMessageBusHandler::OnPreAssert, m_functionNames[FN_OnPreAssert]); - SetEvent(&TraceMessageBusHandler::OnPreError, m_functionNames[FN_OnPreError]); - SetEvent(&TraceMessageBusHandler::OnPreWarning, m_functionNames[FN_OnPreWarning]); - SetEvent(&TraceMessageBusHandler::OnAssert, m_functionNames[FN_OnAssert]); - SetEvent(&TraceMessageBusHandler::OnError, m_functionNames[FN_OnError]); - SetEvent(&TraceMessageBusHandler::OnWarning, m_functionNames[FN_OnWarning]); - SetEvent(&TraceMessageBusHandler::OnException, m_functionNames[FN_OnException]); - SetEvent(&TraceMessageBusHandler::OnPrintf, m_functionNames[FN_OnPrintf]); - SetEvent(&TraceMessageBusHandler::OnOutput, m_functionNames[FN_OnOutput]); - } + // AZ::BehaviorEBusHandler overrides... + int GetFunctionIndex(const char* functionName) const override; + void Disconnect() override; + bool Connect(AZ::BehaviorValueParameter* id = nullptr) override; + bool IsConnected() override; + bool IsConnectedId(AZ::BehaviorValueParameter* id) override; - int TraceMessageBusHandler::GetFunctionIndex(const char* functionName) const + // TraceMessageBus + /* + * Note: Since at editor runtime there is already have a handler, for automation (OnPreAssert, OnPreWarning, OnPreWarning) + * must be used instead of (OnAssert, OnWarning, OnError) + */ + bool OnPreAssert(const char* fileName, int line, const char* func, const char* message) override; + bool OnPreError(const char* window, const char* fileName, int line, const char* func, const char* message) override; + bool OnPreWarning(const char* window, const char* fileName, int line, const char* func, const char* message) override; + bool OnAssert(const char* message) override; + bool OnError(const char* window, const char* message) override; + bool OnWarning(const char* window, const char* message) override; + bool OnException(const char* message) override; + bool OnPrintf(const char* window, const char* message) override; + bool OnOutput(const char* window, const char* message) override; + + // AZ::TickBus::Handler overrides ... + void OnTick(float deltaTime, AZ::ScriptTimePoint time) override; + int GetTickOrder() override; + + private: + void QueueMessageCall(AZStd::function messageCall); + void FlushMessageCalls(); + + AZStd::list> m_messageCalls; + AZStd::mutex m_messageCallsLock; + }; + + TraceMessageBusHandler::TraceMessageBusHandler() + { + m_events.resize(FN_MAX); + + SetEvent(&TraceMessageBusHandler::OnPreAssert, m_functionNames[FN_OnPreAssert]); + SetEvent(&TraceMessageBusHandler::OnPreError, m_functionNames[FN_OnPreError]); + SetEvent(&TraceMessageBusHandler::OnPreWarning, m_functionNames[FN_OnPreWarning]); + SetEvent(&TraceMessageBusHandler::OnAssert, m_functionNames[FN_OnAssert]); + SetEvent(&TraceMessageBusHandler::OnError, m_functionNames[FN_OnError]); + SetEvent(&TraceMessageBusHandler::OnWarning, m_functionNames[FN_OnWarning]); + SetEvent(&TraceMessageBusHandler::OnException, m_functionNames[FN_OnException]); + SetEvent(&TraceMessageBusHandler::OnPrintf, m_functionNames[FN_OnPrintf]); + SetEvent(&TraceMessageBusHandler::OnOutput, m_functionNames[FN_OnOutput]); + } + + int TraceMessageBusHandler::GetFunctionIndex(const char* functionName) const + { + for (int i = 0; i < FN_MAX; ++i) { - for (int i = 0; i < FN_MAX; ++i) + if (azstricmp(functionName, m_functionNames[i]) == 0) { - if (azstricmp(functionName, m_functionNames[i]) == 0) - { - return i; - } + return i; } - return -1; } + return -1; + } - void TraceMessageBusHandler::Disconnect() + void TraceMessageBusHandler::Disconnect() + { + AZ::Debug::TraceMessageBus::Handler::BusDisconnect(); + AZ::TickBus::Handler::BusDisconnect(); + } + + bool TraceMessageBusHandler::Connect(AZ::BehaviorValueParameter* id) + { + AZ::TickBus::Handler::BusConnect(); + return AZ::Internal::EBusConnector::Connect(this, id); + } + + bool TraceMessageBusHandler::IsConnected() + { + return AZ::Internal::EBusConnector::IsConnected(this); + } + + bool TraceMessageBusHandler::IsConnectedId(AZ::BehaviorValueParameter* id) + { + return AZ::Internal::EBusConnector::IsConnectedId(this, id); + } + + ////////////////////////////////////////////////////////////////////////// + // TraceMessageBusHandler Implementation + inline bool TraceMessageBusHandler::OnPreAssert(const char* fileName, int line, const char* func, const char* message) + { + QueueMessageCall( + [this, fileNameString = AZStd::string(fileName), line, funcString = AZStd::string(func), messageString = AZStd::string(message)]() { - AZ::Debug::TraceMessageBus::Handler::BusDisconnect(); - AZ::TickBus::Handler::BusDisconnect(); - } + Call(FN_OnPreAssert, fileNameString.c_str(), line, funcString.c_str(), messageString.c_str()); + }); + return false; + } - bool TraceMessageBusHandler::Connect(AZ::BehaviorValueParameter* id) + inline bool TraceMessageBusHandler::OnPreError(const char* window, const char* fileName, int line, const char* func, const char* message) + { + QueueMessageCall( + [this, windowString = AZStd::string(window), fileNameString = AZStd::string(fileName), line, funcString = AZStd::string(func), messageString = AZStd::string(message)]() { - AZ::TickBus::Handler::BusConnect(); - return AZ::Internal::EBusConnector::Connect(this, id); - } + Call(FN_OnPreError, windowString.c_str(), fileNameString.c_str(), line, funcString.c_str(), messageString.c_str()); + }); + return false; + } - bool TraceMessageBusHandler::IsConnected() + inline bool TraceMessageBusHandler::OnPreWarning(const char* window, const char* fileName, int line, const char* func, const char* message) + { + QueueMessageCall( + [this, windowString = AZStd::string(window), fileNameString = AZStd::string(fileName), line, funcString = AZStd::string(func), messageString = AZStd::string(message)]() { - return AZ::Internal::EBusConnector::IsConnected(this); - } + return Call(FN_OnPreWarning, windowString.c_str(), fileNameString.c_str(), line, funcString.c_str(), messageString.c_str()); + }); + return false; + } - bool TraceMessageBusHandler::IsConnectedId(AZ::BehaviorValueParameter* id) + inline bool TraceMessageBusHandler::OnAssert(const char* message) + { + QueueMessageCall( + [this, messageString = AZStd::string(message)]() { - return AZ::Internal::EBusConnector::IsConnectedId(this, id); - } + return Call(FN_OnAssert, messageString.c_str()); + }); + return false; + } - ////////////////////////////////////////////////////////////////////////// - // TraceMessageBusHandler Implementation - inline bool TraceMessageBusHandler::OnPreAssert(const char* fileName, int line, const char* func, const char* message) + inline bool TraceMessageBusHandler::OnError(const char* window, const char* message) + { + QueueMessageCall( + [this, windowString = AZStd::string(window), messageString = AZStd::string(message)]() { - QueueMessageCall( - [this, fileNameString = AZStd::string(fileName), line, funcString = AZStd::string(func), messageString = AZStd::string(message)]() - { - Call(FN_OnPreAssert, fileNameString.c_str(), line, funcString.c_str(), messageString.c_str()); - }); - return false; - } + return Call(FN_OnError, windowString.c_str(), messageString.c_str()); + }); + return false; + } - inline bool TraceMessageBusHandler::OnPreError(const char* window, const char* fileName, int line, const char* func, const char* message) + inline bool TraceMessageBusHandler::OnWarning(const char* window, const char* message) + { + QueueMessageCall( + [this, windowString = AZStd::string(window), messageString = AZStd::string(message)]() { - QueueMessageCall( - [this, windowString = AZStd::string(window), fileNameString = AZStd::string(fileName), line, funcString = AZStd::string(func), messageString = AZStd::string(message)]() - { - Call(FN_OnPreError, windowString.c_str(), fileNameString.c_str(), line, funcString.c_str(), messageString.c_str()); - }); - return false; - } + return Call(FN_OnWarning, windowString.c_str(), messageString.c_str()); + }); + return false; + } - inline bool TraceMessageBusHandler::OnPreWarning(const char* window, const char* fileName, int line, const char* func, const char* message) + inline bool TraceMessageBusHandler::OnException(const char* message) + { + QueueMessageCall( + [this, messageString = AZStd::string(message)]() { - QueueMessageCall( - [this, windowString = AZStd::string(window), fileNameString = AZStd::string(fileName), line, funcString = AZStd::string(func), messageString = AZStd::string(message)]() - { - return Call(FN_OnPreWarning, windowString.c_str(), fileNameString.c_str(), line, funcString.c_str(), messageString.c_str()); - }); - return false; - } + return Call(FN_OnException, messageString.c_str()); + }); + return false; + } - inline bool TraceMessageBusHandler::OnAssert(const char* message) + inline bool TraceMessageBusHandler::OnPrintf(const char* window, const char* message) + { + QueueMessageCall( + [this, windowString = AZStd::string(window), messageString = AZStd::string(message)]() { - QueueMessageCall( - [this, messageString = AZStd::string(message)]() - { - return Call(FN_OnAssert, messageString.c_str()); - }); - return false; - } + return Call(FN_OnPrintf, windowString.c_str(), messageString.c_str()); + }); + return false; + } - inline bool TraceMessageBusHandler::OnError(const char* window, const char* message) + inline bool TraceMessageBusHandler::OnOutput(const char* window, const char* message) + { + QueueMessageCall( + [this, windowString = AZStd::string(window), messageString = AZStd::string(message)]() { - QueueMessageCall( - [this, windowString = AZStd::string(window), messageString = AZStd::string(message)]() - { - return Call(FN_OnError, windowString.c_str(), messageString.c_str()); - }); - return false; - } + return Call(FN_OnOutput, windowString.c_str(), messageString.c_str()); + }); + return false; + } - inline bool TraceMessageBusHandler::OnWarning(const char* window, const char* message) - { - QueueMessageCall( - [this, windowString = AZStd::string(window), messageString = AZStd::string(message)]() - { - return Call(FN_OnWarning, windowString.c_str(), messageString.c_str()); - }); - return false; - } + void TraceMessageBusHandler::OnTick( + [[maybe_unused]] float deltaTime, + [[maybe_unused]] AZ::ScriptTimePoint time) + { + FlushMessageCalls(); + } - inline bool TraceMessageBusHandler::OnException(const char* message) - { - QueueMessageCall( - [this, messageString = AZStd::string(message)]() - { - return Call(FN_OnException, messageString.c_str()); - }); - return false; - } + int TraceMessageBusHandler::GetTickOrder() + { + return AZ::TICK_LAST; + } - inline bool TraceMessageBusHandler::OnPrintf(const char* window, const char* message) - { - QueueMessageCall( - [this, windowString = AZStd::string(window), messageString = AZStd::string(message)]() - { - return Call(FN_OnPrintf, windowString.c_str(), messageString.c_str()); - }); - return false; - } + void TraceMessageBusHandler::QueueMessageCall(AZStd::function messageCall) + { + AZStd::lock_guard lock(m_messageCallsLock); + m_messageCalls.emplace_back(messageCall); + } - inline bool TraceMessageBusHandler::OnOutput(const char* window, const char* message) - { - QueueMessageCall( - [this, windowString = AZStd::string(window), messageString = AZStd::string(message)]() - { - return Call(FN_OnOutput, windowString.c_str(), messageString.c_str()); - }); - return false; - } - - void TraceMessageBusHandler::OnTick( - [[maybe_unused]] float deltaTime, - [[maybe_unused]] AZ::ScriptTimePoint time) - { - FlushMessageCalls(); - } - - int TraceMessageBusHandler::GetTickOrder() - { - return AZ::TICK_LAST; - } - - void TraceMessageBusHandler::QueueMessageCall(AZStd::function messageCall) + void TraceMessageBusHandler::FlushMessageCalls() + { + AZStd::list> messageCalls; { AZStd::lock_guard lock(m_messageCallsLock); - m_messageCalls.push_back(messageCall); + m_messageCalls.swap(messageCalls); // Move calls to a new list to release the lock as soon as possible } - void TraceMessageBusHandler::FlushMessageCalls() + for (auto& messageCall : messageCalls) { - AZStd::list> messageCalls; - { - AZStd::lock_guard lock(m_messageCallsLock); - m_messageCalls.swap(messageCalls); // Move calls to a new list to release the lock as soon as possible - } - - for (auto& messageCall : messageCalls) - { - messageCall(); - } - } - - void TraceReflect(ReflectContext* context) - { - if (BehaviorContext* behaviorContext = azrtti_cast(context)) - { - behaviorContext->EBus("TraceMessageBus") - ->Attribute(AZ::Script::Attributes::Module, "debug") - ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Automation) - ->Handler() - ; - } + messageCall(); } } -} + + void TraceReflect(ReflectContext* context) + { + if (BehaviorContext* behaviorContext = azrtti_cast(context)) + { + behaviorContext->EBus("TraceMessageBus") + ->Attribute(AZ::Script::Attributes::Module, "debug") + ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Automation) + ->Handler() + ; + } + } +} // namespace AZ::Debug diff --git a/Code/Framework/AzCore/AzCore/Driller/Driller.cpp b/Code/Framework/AzCore/AzCore/Driller/Driller.cpp index 41abd7793e..7e986be81e 100644 --- a/Code/Framework/AzCore/AzCore/Driller/Driller.cpp +++ b/Code/Framework/AzCore/AzCore/Driller/Driller.cpp @@ -14,291 +14,288 @@ #include -namespace AZ +namespace AZ::Debug { - namespace Debug + class DrillerManagerImpl + : public DrillerManager { - class DrillerManagerImpl - : public DrillerManager + public: + AZ_CLASS_ALLOCATOR(DrillerManagerImpl, OSAllocator, 0); + + using SessionListType = forward_list::type; + SessionListType m_sessions; + using DrillerArrayType = vector::type; + DrillerArrayType m_drillers; + + ~DrillerManagerImpl() override; + + void Register(Driller* factory) override; + void Unregister(Driller* factory) override; + + void FrameUpdate() override; + + DrillerSession* Start(DrillerOutputStream& output, const DrillerListType& drillerList, int numFrames = -1) override; + void Stop(DrillerSession* session) override; + + int GetNumDrillers() const override { return static_cast(m_drillers.size()); } + Driller* GetDriller(int index) override { return m_drillers[index]; } + }; + + ////////////////////////////////////////////////////////////////////////// + // Driller + + //========================================================================= + // Register + // [3/17/2011] + //========================================================================= + AZ::u32 Driller::GetId() const + { + return AZ::Crc32(GetName()); + } + + ////////////////////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////////////////////// + // Driller Manager + + //========================================================================= + // Register + // [3/17/2011] + //========================================================================= + DrillerManager* DrillerManager::Create(/*const Descriptor& desc*/) + { + const bool createAllocator = !AZ::AllocatorInstance::IsReady(); + if (createAllocator) { - public: - AZ_CLASS_ALLOCATOR(DrillerManagerImpl, OSAllocator, 0); - - typedef forward_list::type SessionListType; - SessionListType m_sessions; - typedef vector::type DrillerArrayType; - DrillerArrayType m_drillers; - - ~DrillerManagerImpl() override; - - void Register(Driller* factory) override; - void Unregister(Driller* factory) override; - - void FrameUpdate() override; - - DrillerSession* Start(DrillerOutputStream& output, const DrillerListType& drillerList, int numFrames = -1) override; - void Stop(DrillerSession* session) override; - - int GetNumDrillers() const override { return static_cast(m_drillers.size()); } - Driller* GetDriller(int index) override { return m_drillers[index]; } - }; - - ////////////////////////////////////////////////////////////////////////// - // Driller - - //========================================================================= - // Register - // [3/17/2011] - //========================================================================= - AZ::u32 Driller::GetId() const - { - return AZ::Crc32(GetName()); + AZ::AllocatorInstance::Create(); } - ////////////////////////////////////////////////////////////////////////// + DrillerManagerImpl* impl = aznew DrillerManagerImpl; + impl->m_ownsOSAllocator = createAllocator; + return impl; + } - ////////////////////////////////////////////////////////////////////////// - // Driller Manager - - //========================================================================= - // Register - // [3/17/2011] - //========================================================================= - DrillerManager* DrillerManager::Create(/*const Descriptor& desc*/) + //========================================================================= + // Register + // [3/17/2011] + //========================================================================= + void DrillerManager::Destroy(DrillerManager* manager) + { + const bool allocatorCreated = manager->m_ownsOSAllocator; + delete manager; + if (allocatorCreated) { - const bool createAllocator = !AZ::AllocatorInstance::IsReady(); - if (createAllocator) - { - AZ::AllocatorInstance::Create(); - } + AZ::AllocatorInstance::Destroy(); + } + } - DrillerManagerImpl* impl = aznew DrillerManagerImpl; - impl->m_ownsOSAllocator = createAllocator; - return impl; + ////////////////////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////////////////////// + // DrillerManagerImpl + + //========================================================================= + // ~DrillerManagerImpl + // [3/17/2011] + //========================================================================= + DrillerManagerImpl::~DrillerManagerImpl() + { + while (!m_sessions.empty()) + { + Stop(&m_sessions.front()); } - //========================================================================= - // Register - // [3/17/2011] - //========================================================================= - void DrillerManager::Destroy(DrillerManager* manager) + while (!m_drillers.empty()) { - const bool allocatorCreated = manager->m_ownsOSAllocator; - delete manager; - if (allocatorCreated) - { - AZ::AllocatorInstance::Destroy(); - } + Driller* driller = m_drillers[0]; + Unregister(driller); + delete driller; } + } - ////////////////////////////////////////////////////////////////////////// - - ////////////////////////////////////////////////////////////////////////// - // DrillerManagerImpl - - //========================================================================= - // ~DrillerManagerImpl - // [3/17/2011] - //========================================================================= - DrillerManagerImpl::~DrillerManagerImpl() + //========================================================================= + // Register + // [3/17/2011] + //========================================================================= + void + DrillerManagerImpl::Register(Driller* driller) + { + AZ_Assert(driller, "You must provide a valid factory!"); + for (size_t i = 0; i < m_drillers.size(); ++i) { - while (!m_sessions.empty()) - { - Stop(&m_sessions.front()); - } - - while (!m_drillers.empty()) - { - Driller* driller = m_drillers[0]; - Unregister(driller); - delete driller; - } - } - - //========================================================================= - // Register - // [3/17/2011] - //========================================================================= - void - DrillerManagerImpl::Register(Driller* driller) - { - AZ_Assert(driller, "You must provide a valid factory!"); - for (size_t i = 0; i < m_drillers.size(); ++i) - { - if (m_drillers[i]->GetId() == driller->GetId()) - { - AZ_Error("Debug", false, "Driller with id %08x has already been registered! You can't have two factory instances for the same driller type", driller->GetId()); - return; - } - } - m_drillers.push_back(driller); - } - - //========================================================================= - // Unregister - // [3/17/2011] - //========================================================================= - void - DrillerManagerImpl::Unregister(Driller* driller) - { - AZ_Assert(driller, "You must provide a valid factory!"); - for (DrillerArrayType::iterator iter = m_drillers.begin(); iter != m_drillers.end(); ++iter) - { - if ((*iter)->GetId() == driller->GetId()) - { - m_drillers.erase(iter); - return; - } - } - - AZ_Error("Debug", false, "Failed to find driller factory with id %08x", driller->GetId()); - } - - //========================================================================= - // FrameUpdate - // [3/17/2011] - //========================================================================= - void - DrillerManagerImpl::FrameUpdate() - { - if (m_sessions.empty()) + if (m_drillers[i]->GetId() == driller->GetId()) { + AZ_Error("Debug", false, "Driller with id %08x has already been registered! You can't have two factory instances for the same driller type", driller->GetId()); return; } + } + m_drillers.push_back(driller); + } - AZStd::lock_guard lock(DrillerEBusMutex::GetMutex()); ///< Make sure no driller is writing to the stream - for (SessionListType::iterator sessionIter = m_sessions.begin(); sessionIter != m_sessions.end(); ) + //========================================================================= + // Unregister + // [3/17/2011] + //========================================================================= + void + DrillerManagerImpl::Unregister(Driller* driller) + { + AZ_Assert(driller, "You must provide a valid factory!"); + for (DrillerArrayType::iterator iter = m_drillers.begin(); iter != m_drillers.end(); ++iter) + { + if ((*iter)->GetId() == driller->GetId()) { - DrillerSession& s = *sessionIter; - - // tick the drillers directly if they care. - for (size_t i = 0; i < s.drillers.size(); ++i) - { - s.drillers[i]->Update(); - } - - s.output->EndTag(AZ_CRC("Frame", 0xb5f83ccd)); - - s.output->OnEndOfFrame(); - - s.curFrame++; - - if (s.numFrames != -1) - { - if (s.curFrame == s.numFrames) - { - Stop(&s); - continue; - } - } - - s.output->BeginTag(AZ_CRC("Frame", 0xb5f83ccd)); - s.output->Write(AZ_CRC("FrameNum", 0x85a1a919), s.curFrame); - - ++sessionIter; + m_drillers.erase(iter); + return; } } - //========================================================================= - // Start - // [3/17/2011] - //========================================================================= - DrillerSession* - DrillerManagerImpl::Start(DrillerOutputStream& output, const DrillerListType& drillerList, int numFrames) + AZ_Error("Debug", false, "Failed to find driller factory with id %08x", driller->GetId()); + } + + //========================================================================= + // FrameUpdate + // [3/17/2011] + //========================================================================= + void + DrillerManagerImpl::FrameUpdate() + { + if (m_sessions.empty()) { - if (drillerList.empty()) + return; + } + + AZStd::lock_guard lock(DrillerEBusMutex::GetMutex()); ///< Make sure no driller is writing to the stream + for (SessionListType::iterator sessionIter = m_sessions.begin(); sessionIter != m_sessions.end(); ) + { + DrillerSession& s = *sessionIter; + + // tick the drillers directly if they care. + for (size_t i = 0; i < s.drillers.size(); ++i) { - return nullptr; + s.drillers[i]->Update(); } - m_sessions.push_back(); - DrillerSession& s = m_sessions.back(); - s.curFrame = 0; - s.numFrames = numFrames; - s.output = &output; + s.output->EndTag(AZ_CRC("Frame", 0xb5f83ccd)); - s.output->WriteHeader(); // first write the header in the stream + s.output->OnEndOfFrame(); - s.output->BeginTag(AZ_CRC("StartData", 0xecf3f53f)); - s.output->Write(AZ_CRC("Platform", 0x3952d0cb), (unsigned int)g_currentPlatform); - for (DrillerListType::const_iterator iDriller = drillerList.begin(); iDriller != drillerList.end(); ++iDriller) + s.curFrame++; + + if (s.numFrames != -1) { - const DrillerInfo& di = *iDriller; - s.output->BeginTag(AZ_CRC("Driller", 0xa6e1fb73)); - s.output->Write(AZ_CRC("Name", 0x5e237e06), di.id); - for (int iParam = 0; iParam < (int)di.params.size(); ++iParam) + if (s.curFrame == s.numFrames) { - s.output->BeginTag(AZ_CRC("Param", 0xa4fa7c89)); - s.output->Write(AZ_CRC("Name", 0x5e237e06), di.params[iParam].name); - s.output->Write(AZ_CRC("Description", 0x6de44026), di.params[iParam].desc); - s.output->Write(AZ_CRC("Type", 0x8cde5729), di.params[iParam].type); - s.output->Write(AZ_CRC("Value", 0x1d775834), di.params[iParam].value); - s.output->EndTag(AZ_CRC("Param", 0xa4fa7c89)); + Stop(&s); + continue; } - s.output->EndTag(AZ_CRC("Driller", 0xa6e1fb73)); } - s.output->EndTag(AZ_CRC("StartData", 0xecf3f53f)); s.output->BeginTag(AZ_CRC("Frame", 0xb5f83ccd)); s.output->Write(AZ_CRC("FrameNum", 0x85a1a919), s.curFrame); - { - AZStd::lock_guard lock(DrillerEBusMutex::GetMutex()); ///< Make sure no driller is writing to the stream - for (DrillerListType::const_iterator iDriller = drillerList.begin(); iDriller != drillerList.end(); ++iDriller) - { - Driller* driller = nullptr; - const DrillerInfo& di = *iDriller; - for (size_t iDesc = 0; iDesc < m_drillers.size(); ++iDesc) - { - if (m_drillers[iDesc]->GetId() == di.id) - { - driller = m_drillers[iDesc]; - AZ_Assert(driller->m_output == nullptr, "Driller with id %08x is already have an output stream %p (currently we support only 1 at a time)", di.id, driller->m_output); - driller->m_output = &output; - driller->Start(di.params.data(), static_cast(di.params.size())); - s.drillers.push_back(driller); - break; - } - } - AZ_Warning("Driller", driller != nullptr, "We can't start a driller with id %d!", di.id); - } - } - return &s; + ++sessionIter; } + } - - //========================================================================= - // Stop - // [3/17/2011] - //========================================================================= - void - DrillerManagerImpl::Stop(DrillerSession* session) + //========================================================================= + // Start + // [3/17/2011] + //========================================================================= + DrillerSession* + DrillerManagerImpl::Start(DrillerOutputStream& output, const DrillerListType& drillerList, int numFrames) + { + if (drillerList.empty()) { - SessionListType::iterator iter; - for (iter = m_sessions.begin(); iter != m_sessions.end(); ++iter) + return nullptr; + } + + m_sessions.push_back(); + DrillerSession& s = m_sessions.back(); + s.curFrame = 0; + s.numFrames = numFrames; + s.output = &output; + + s.output->WriteHeader(); // first write the header in the stream + + s.output->BeginTag(AZ_CRC("StartData", 0xecf3f53f)); + s.output->Write(AZ_CRC("Platform", 0x3952d0cb), (unsigned int)g_currentPlatform); + for (DrillerListType::const_iterator iDriller = drillerList.begin(); iDriller != drillerList.end(); ++iDriller) + { + const DrillerInfo& di = *iDriller; + s.output->BeginTag(AZ_CRC("Driller", 0xa6e1fb73)); + s.output->Write(AZ_CRC("Name", 0x5e237e06), di.id); + for (int iParam = 0; iParam < (int)di.params.size(); ++iParam) { - if (&*iter == session) - { - break; - } + s.output->BeginTag(AZ_CRC("Param", 0xa4fa7c89)); + s.output->Write(AZ_CRC("Name", 0x5e237e06), di.params[iParam].name); + s.output->Write(AZ_CRC("Description", 0x6de44026), di.params[iParam].desc); + s.output->Write(AZ_CRC("Type", 0x8cde5729), di.params[iParam].type); + s.output->Write(AZ_CRC("Value", 0x1d775834), di.params[iParam].value); + s.output->EndTag(AZ_CRC("Param", 0xa4fa7c89)); } + s.output->EndTag(AZ_CRC("Driller", 0xa6e1fb73)); + } + s.output->EndTag(AZ_CRC("StartData", 0xecf3f53f)); - AZ_Assert(iter != m_sessions.end(), "We did not find session ID 0x%08x in the list!", session); - if (iter != m_sessions.end()) + s.output->BeginTag(AZ_CRC("Frame", 0xb5f83ccd)); + s.output->Write(AZ_CRC("FrameNum", 0x85a1a919), s.curFrame); + + { + AZStd::lock_guard lock(DrillerEBusMutex::GetMutex()); ///< Make sure no driller is writing to the stream + for (DrillerListType::const_iterator iDriller = drillerList.begin(); iDriller != drillerList.end(); ++iDriller) { - DrillerSession& s = *session; - + Driller* driller = nullptr; + const DrillerInfo& di = *iDriller; + for (size_t iDesc = 0; iDesc < m_drillers.size(); ++iDesc) { - AZStd::lock_guard lock(DrillerEBusMutex::GetMutex()); - for (size_t i = 0; i < s.drillers.size(); ++i) + if (m_drillers[iDesc]->GetId() == di.id) { - s.drillers[i]->Stop(); - s.drillers[i]->m_output = nullptr; + driller = m_drillers[iDesc]; + AZ_Assert(driller->m_output == nullptr, "Driller with id %08x is already have an output stream %p (currently we support only 1 at a time)", di.id, driller->m_output); + driller->m_output = &output; + driller->Start(di.params.data(), static_cast(di.params.size())); + s.drillers.push_back(driller); + break; } } - s.output->EndTag(AZ_CRC("Frame", 0xb5f83ccd)); - m_sessions.erase(iter); + AZ_Warning("Driller", driller != nullptr, "We can't start a driller with id %d!", di.id); } } - } // namespace Debug -} // namespace AZ + return &s; + } + + + //========================================================================= + // Stop + // [3/17/2011] + //========================================================================= + void + DrillerManagerImpl::Stop(DrillerSession* session) + { + SessionListType::iterator iter; + for (iter = m_sessions.begin(); iter != m_sessions.end(); ++iter) + { + if (&*iter == session) + { + break; + } + } + + AZ_Assert(iter != m_sessions.end(), "We did not find session ID 0x%08x in the list!", session); + if (iter != m_sessions.end()) + { + DrillerSession& s = *session; + + { + AZStd::lock_guard lock(DrillerEBusMutex::GetMutex()); + for (size_t i = 0; i < s.drillers.size(); ++i) + { + s.drillers[i]->Stop(); + s.drillers[i]->m_output = nullptr; + } + } + s.output->EndTag(AZ_CRC("Frame", 0xb5f83ccd)); + m_sessions.erase(iter); + } + } +} // namespace AZ::Debug diff --git a/Code/Framework/AzCore/AzCore/Driller/DrillerBus.cpp b/Code/Framework/AzCore/AzCore/Driller/DrillerBus.cpp index 163db8a68b..a46736aa87 100644 --- a/Code/Framework/AzCore/AzCore/Driller/DrillerBus.cpp +++ b/Code/Framework/AzCore/AzCore/Driller/DrillerBus.cpp @@ -12,57 +12,54 @@ #include #include -namespace AZ +namespace AZ::Debug { - namespace Debug + ////////////////////////////////////////////////////////////////////////// + // Globals + // We need to synchronize all driller evens, so we have proper order, and access to the data + // We use a global mutex which should be used for all driller operations. + // The mutex is held in an environment variable so it works across DLLs. + EnvironmentVariable s_drillerGlobalMutex; + ////////////////////////////////////////////////////////////////////////// + + + //========================================================================= + // lock + // [4/11/2011] + //========================================================================= + void DrillerEBusMutex::lock() { - ////////////////////////////////////////////////////////////////////////// - // Globals - // We need to synchronize all driller evens, so we have proper order, and access to the data - // We use a global mutex which should be used for all driller operations. - // The mutex is held in an environment variable so it works across DLLs. - EnvironmentVariable s_drillerGlobalMutex; - ////////////////////////////////////////////////////////////////////////// + GetMutex().lock(); + } - - //========================================================================= - // lock - // [4/11/2011] - //========================================================================= - void DrillerEBusMutex::lock() - { - GetMutex().lock(); - } + //========================================================================= + // try_lock + // [4/11/2011] + //========================================================================= + bool DrillerEBusMutex::try_lock() + { + return GetMutex().try_lock(); + } - //========================================================================= - // try_lock - // [4/11/2011] - //========================================================================= - bool DrillerEBusMutex::try_lock() - { - return GetMutex().try_lock(); - } + //========================================================================= + // unlock + // [4/11/2011] + //========================================================================= + void DrillerEBusMutex::unlock() + { + GetMutex().unlock(); + } - //========================================================================= - // unlock - // [4/11/2011] - //========================================================================= - void DrillerEBusMutex::unlock() + //========================================================================= + // unlock + // [4/11/2011] + //========================================================================= + AZStd::recursive_mutex& DrillerEBusMutex::GetMutex() + { + if (!s_drillerGlobalMutex) { - GetMutex().unlock(); + s_drillerGlobalMutex = Environment::CreateVariable(AZ_FUNCTION_SIGNATURE); } - - //========================================================================= - // unlock - // [4/11/2011] - //========================================================================= - AZStd::recursive_mutex& DrillerEBusMutex::GetMutex() - { - if (!s_drillerGlobalMutex) - { - s_drillerGlobalMutex = Environment::CreateVariable(AZ_FUNCTION_SIGNATURE); - } - return *s_drillerGlobalMutex; - } - } // namespace Debug -} // namespace AZ + return *s_drillerGlobalMutex; + } +} // namespace AZ::Debug diff --git a/Code/Framework/AzCore/AzCore/Driller/Stream.cpp b/Code/Framework/AzCore/AzCore/Driller/Stream.cpp index 14e983b09c..c86755149c 100644 --- a/Code/Framework/AzCore/AzCore/Driller/Stream.cpp +++ b/Code/Framework/AzCore/AzCore/Driller/Stream.cpp @@ -24,873 +24,870 @@ # include #endif // AZ_FILE_STREAM_COMPRESSION -namespace AZ +namespace AZ::Debug { - namespace Debug + ////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////// + // Driller output stream + ////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////// + void DrillerOutputStream::Write(u32 name, const AZ::Vector3& v) { - ////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////// - // Driller output stream - ////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////// - void DrillerOutputStream::Write(u32 name, const AZ::Vector3& v) - { - float data[4]; - unsigned int dataSize = 3 * sizeof(float); - v.StoreToFloat4(data); - StreamEntry de; - de.name = name; - de.sizeAndFlags = dataSize; - WriteBinary(de); - WriteBinary(data, dataSize); - } - void DrillerOutputStream::Write(u32 name, const AZ::Vector4& v) - { - float data[4]; - unsigned int dataSize = 4 * sizeof(float); - v.StoreToFloat4(data); - StreamEntry de; - de.name = name; - de.sizeAndFlags = dataSize; - WriteBinary(de); - WriteBinary(data, dataSize); - } - void DrillerOutputStream::Write(u32 name, const AZ::Aabb& aabb) - { - float data[7]; - unsigned int dataSize = 6 * sizeof(float); - aabb.GetMin().StoreToFloat4(data); - aabb.GetMax().StoreToFloat4(&data[3]); - StreamEntry de; - de.name = name; - de.sizeAndFlags = dataSize; - WriteBinary(de); - WriteBinary(data, dataSize); - } - void DrillerOutputStream::Write(u32 name, const AZ::Obb& obb) - { - float data[10]; - unsigned int dataSize = 10 * sizeof(float); // position (Vector3), rotation (Quaternion) and halfLengths (Vector3) - obb.GetPosition().StoreToFloat3(data); - obb.GetRotation().StoreToFloat4(&data[3]); - obb.GetHalfLengths().StoreToFloat3(&data[7]); - StreamEntry de; - de.name = name; - de.sizeAndFlags = dataSize; - WriteBinary(de); - WriteBinary(data, dataSize); - } - void DrillerOutputStream::Write(u32 name, const AZ::Transform& tm) - { - float data[12]; - unsigned int dataSize = 12 * sizeof(float); - const Matrix3x4 matrix3x4 = Matrix3x4::CreateFromTransform(tm); - matrix3x4.StoreToRowMajorFloat12(data); - StreamEntry de; - de.name = name; - de.sizeAndFlags = dataSize; - WriteBinary(de); - WriteBinary(data, dataSize); - } - void DrillerOutputStream::Write(u32 name, const AZ::Matrix3x3& tm) - { - float data[9]; - unsigned int dataSize = 9 * sizeof(float); - tm.StoreToRowMajorFloat9(data); - StreamEntry de; - de.name = name; - de.sizeAndFlags = dataSize; - WriteBinary(de); - WriteBinary(data, dataSize); - } - void DrillerOutputStream::Write(u32 name, const AZ::Matrix4x4& tm) - { - float data[16]; - unsigned int dataSize = 16 * sizeof(float); - tm.StoreToRowMajorFloat16(data); - StreamEntry de; - de.name = name; - de.sizeAndFlags = dataSize; - WriteBinary(de); - WriteBinary(data, dataSize); - } - void DrillerOutputStream::Write(u32 name, const AZ::Quaternion& tm) - { - float data[4]; - unsigned int dataSize = 4 * sizeof(float); - tm.StoreToFloat4(data); - StreamEntry de; - de.name = name; - de.sizeAndFlags = dataSize; - WriteBinary(de); - WriteBinary(data, dataSize); - } - void DrillerOutputStream::Write(u32 name, const AZ::Plane& plane) - { - Write(name, plane.GetPlaneEquationCoefficients()); - } - void DrillerOutputStream::WriteHeader() - { - StreamHeader sh; // StreamHeader should be endianess independent. - WriteBinary(&sh, sizeof(sh)); - } + float data[4]; + unsigned int dataSize = 3 * sizeof(float); + v.StoreToFloat4(data); + StreamEntry de; + de.name = name; + de.sizeAndFlags = dataSize; + WriteBinary(de); + WriteBinary(data, dataSize); + } + void DrillerOutputStream::Write(u32 name, const AZ::Vector4& v) + { + float data[4]; + unsigned int dataSize = 4 * sizeof(float); + v.StoreToFloat4(data); + StreamEntry de; + de.name = name; + de.sizeAndFlags = dataSize; + WriteBinary(de); + WriteBinary(data, dataSize); + } + void DrillerOutputStream::Write(u32 name, const AZ::Aabb& aabb) + { + float data[7]; + unsigned int dataSize = 6 * sizeof(float); + aabb.GetMin().StoreToFloat4(data); + aabb.GetMax().StoreToFloat4(&data[3]); + StreamEntry de; + de.name = name; + de.sizeAndFlags = dataSize; + WriteBinary(de); + WriteBinary(data, dataSize); + } + void DrillerOutputStream::Write(u32 name, const AZ::Obb& obb) + { + float data[10]; + unsigned int dataSize = 10 * sizeof(float); // position (Vector3), rotation (Quaternion) and halfLengths (Vector3) + obb.GetPosition().StoreToFloat3(data); + obb.GetRotation().StoreToFloat4(&data[3]); + obb.GetHalfLengths().StoreToFloat3(&data[7]); + StreamEntry de; + de.name = name; + de.sizeAndFlags = dataSize; + WriteBinary(de); + WriteBinary(data, dataSize); + } + void DrillerOutputStream::Write(u32 name, const AZ::Transform& tm) + { + float data[12]; + unsigned int dataSize = 12 * sizeof(float); + const Matrix3x4 matrix3x4 = Matrix3x4::CreateFromTransform(tm); + matrix3x4.StoreToRowMajorFloat12(data); + StreamEntry de; + de.name = name; + de.sizeAndFlags = dataSize; + WriteBinary(de); + WriteBinary(data, dataSize); + } + void DrillerOutputStream::Write(u32 name, const AZ::Matrix3x3& tm) + { + float data[9]; + unsigned int dataSize = 9 * sizeof(float); + tm.StoreToRowMajorFloat9(data); + StreamEntry de; + de.name = name; + de.sizeAndFlags = dataSize; + WriteBinary(de); + WriteBinary(data, dataSize); + } + void DrillerOutputStream::Write(u32 name, const AZ::Matrix4x4& tm) + { + float data[16]; + unsigned int dataSize = 16 * sizeof(float); + tm.StoreToRowMajorFloat16(data); + StreamEntry de; + de.name = name; + de.sizeAndFlags = dataSize; + WriteBinary(de); + WriteBinary(data, dataSize); + } + void DrillerOutputStream::Write(u32 name, const AZ::Quaternion& tm) + { + float data[4]; + unsigned int dataSize = 4 * sizeof(float); + tm.StoreToFloat4(data); + StreamEntry de; + de.name = name; + de.sizeAndFlags = dataSize; + WriteBinary(de); + WriteBinary(data, dataSize); + } + void DrillerOutputStream::Write(u32 name, const AZ::Plane& plane) + { + Write(name, plane.GetPlaneEquationCoefficients()); + } + void DrillerOutputStream::WriteHeader() + { + StreamHeader sh; // StreamHeader should be endianess independent. + WriteBinary(&sh, sizeof(sh)); + } - void DrillerOutputStream::WriteTimeUTC(u32 name) - { - AZStd::sys_time_t now = AZStd::GetTimeUTCMilliSecond(); - Write(name, now); - } + void DrillerOutputStream::WriteTimeUTC(u32 name) + { + AZStd::sys_time_t now = AZStd::GetTimeUTCMilliSecond(); + Write(name, now); + } - void DrillerOutputStream::WriteTimeMicrosecond(u32 name) - { - AZStd::sys_time_t now = AZStd::GetTimeNowMicroSecond(); - Write(name, now); - } + void DrillerOutputStream::WriteTimeMicrosecond(u32 name) + { + AZStd::sys_time_t now = AZStd::GetTimeNowMicroSecond(); + Write(name, now); + } - ////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////// - // Driller Input Stream - ////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////// - bool DrillerInputStream::ReadHeader() + ////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////// + // Driller Input Stream + ////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////// + bool DrillerInputStream::ReadHeader() + { + DrillerOutputStream::StreamHeader sh; // StreamHeader should be endianess independent. + unsigned int numRead = ReadBinary(&sh, sizeof(sh)); + (void)numRead; + AZ_Error("IO", numRead == sizeof(sh), "We should have atleast %d bytes in the stream to read the header!", sizeof(sh)); + if (numRead != sizeof(sh)) { - DrillerOutputStream::StreamHeader sh; // StreamHeader should be endianess independent. - unsigned int numRead = ReadBinary(&sh, sizeof(sh)); - (void)numRead; - AZ_Error("IO", numRead == sizeof(sh), "We should have atleast %d bytes in the stream to read the header!", sizeof(sh)); - if (numRead != sizeof(sh)) - { - return false; - } - m_isEndianSwap = AZ::IsBigEndian(static_cast(sh.platform)) != AZ::IsBigEndian(AZ::g_currentPlatform); - return true; - } - - ////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////// - // Driller file stream - ////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////// - //========================================================================= - // DrillerOutputFileStream::DrillerOutputFileStream - // [3/23/2011] - //========================================================================= - DrillerOutputFileStream::DrillerOutputFileStream() - { -#if defined(AZ_FILE_STREAM_COMPRESSION) - m_zlib = azcreate(ZLib, (&AllocatorInstance::GetAllocator()), OSAllocator); - m_zlib->StartCompressor(2); -#endif - } - - //========================================================================= - // DrillerOutputFileStream::~DrillerOutputFileStream - // [3/23/2011] - //========================================================================= - DrillerOutputFileStream::~DrillerOutputFileStream() - { -#if defined(AZ_FILE_STREAM_COMPRESSION) - azdestroy(m_zlib, OSAllocator); -#endif - } - - //========================================================================= - // DrillerOutputFileStream::Open - // [3/23/2011] - //========================================================================= - bool DrillerOutputFileStream::Open(const char* fileName, int mode, int platformFlags) - { - if (IO::SystemFile::Open(fileName, mode, platformFlags)) - { - m_dataBuffer.reserve(100 * 1024); -#if defined(AZ_FILE_STREAM_COMPRESSION) - // // Enable optional: encode the file in the same format as the streamer so they are interchangeable - // IO::CompressorHeader ch; - // ch.SetAZCS(); - // ch.m_compressorId = IO::CompressorZLib::TypeId(); - // ch.m_uncompressedSize = 0; // will be updated later - // AZStd::endian_swap(ch.m_compressorId); - // AZStd::endian_swap(ch.m_uncompressedSize); - // IO::SystemFile::Write(&ch,sizeof(ch)); - // IO::CompressorZLibHeader zlibHdr; - // zlibHdr.m_numSeekPoints = 0; - // IO::SystemFile::Write(&zlibHdr,sizeof(zlibHdr)); -#endif - return true; - } return false; } + m_isEndianSwap = AZ::IsBigEndian(static_cast(sh.platform)) != AZ::IsBigEndian(AZ::g_currentPlatform); + return true; + } - //========================================================================= - // DrillerOutputFileStream::Close - // [3/23/2011] - //========================================================================= - void DrillerOutputFileStream::Close() + ////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////// + // Driller file stream + ////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////// + //========================================================================= + // DrillerOutputFileStream::DrillerOutputFileStream + // [3/23/2011] + //========================================================================= + DrillerOutputFileStream::DrillerOutputFileStream() + { +#if defined(AZ_FILE_STREAM_COMPRESSION) + m_zlib = azcreate(ZLib, (&AllocatorInstance::GetAllocator()), OSAllocator); + m_zlib->StartCompressor(2); +#endif + } + + //========================================================================= + // DrillerOutputFileStream::~DrillerOutputFileStream + // [3/23/2011] + //========================================================================= + DrillerOutputFileStream::~DrillerOutputFileStream() + { +#if defined(AZ_FILE_STREAM_COMPRESSION) + azdestroy(m_zlib, OSAllocator); +#endif + } + + //========================================================================= + // DrillerOutputFileStream::Open + // [3/23/2011] + //========================================================================= + bool DrillerOutputFileStream::Open(const char* fileName, int mode, int platformFlags) + { + if (IO::SystemFile::Open(fileName, mode, platformFlags)) { - unsigned int dataSizeInBuffer = static_cast(m_dataBuffer.size()); + m_dataBuffer.reserve(100 * 1024); +#if defined(AZ_FILE_STREAM_COMPRESSION) + // // Enable optional: encode the file in the same format as the streamer so they are interchangeable + // IO::CompressorHeader ch; + // ch.SetAZCS(); + // ch.m_compressorId = IO::CompressorZLib::TypeId(); + // ch.m_uncompressedSize = 0; // will be updated later + // AZStd::endian_swap(ch.m_compressorId); + // AZStd::endian_swap(ch.m_uncompressedSize); + // IO::SystemFile::Write(&ch,sizeof(ch)); + // IO::CompressorZLibHeader zlibHdr; + // zlibHdr.m_numSeekPoints = 0; + // IO::SystemFile::Write(&zlibHdr,sizeof(zlibHdr)); +#endif + return true; + } + return false; + } + + //========================================================================= + // DrillerOutputFileStream::Close + // [3/23/2011] + //========================================================================= + void DrillerOutputFileStream::Close() + { + unsigned int dataSizeInBuffer = static_cast(m_dataBuffer.size()); + { +#if defined(AZ_FILE_STREAM_COMPRESSION) + unsigned int minCompressBufferSize = m_zlib->GetMinCompressedBufferSize(dataSizeInBuffer); + if (m_compressionBuffer.size() < minCompressBufferSize) // grow compression buffer if needed + { + m_compressionBuffer.clear(); + m_compressionBuffer.resize(minCompressBufferSize); + } + unsigned int compressedSize; + do + { + compressedSize = m_zlib->Compress(m_dataBuffer.data(), dataSizeInBuffer, m_compressionBuffer.data(), (unsigned)m_compressionBuffer.size(), ZLib::FT_FINISH); + if (compressedSize) + { + IO::SystemFile::Write(m_compressionBuffer.data(), compressedSize); + } + } while (compressedSize > 0); + m_zlib->ResetCompressor(); +#else + if (dataSizeInBuffer) + { + IO::SystemFile::Write(m_dataBuffer.data(), m_dataBuffer.size()); + } +#endif + m_dataBuffer.clear(); + } + IO::SystemFile::Close(); + } + //========================================================================= + // DrillerOutputFileStream::WriteBinary + // [3/23/2011] + //========================================================================= + void DrillerOutputFileStream::WriteBinary(const void* data, unsigned int dataSize) + { + size_t dataSizeInBuffer = m_dataBuffer.size(); + if (dataSizeInBuffer + dataSize > m_dataBuffer.capacity()) + { + if (dataSizeInBuffer > 0) { #if defined(AZ_FILE_STREAM_COMPRESSION) - unsigned int minCompressBufferSize = m_zlib->GetMinCompressedBufferSize(dataSizeInBuffer); + // we need to flush the data + unsigned int dataToCompress = static_cast(dataSizeInBuffer); + unsigned int minCompressBufferSize = m_zlib->GetMinCompressedBufferSize(dataToCompress); if (m_compressionBuffer.size() < minCompressBufferSize) // grow compression buffer if needed { m_compressionBuffer.clear(); m_compressionBuffer.resize(minCompressBufferSize); } - unsigned int compressedSize; - do + while (dataToCompress > 0) { - compressedSize = m_zlib->Compress(m_dataBuffer.data(), dataSizeInBuffer, m_compressionBuffer.data(), (unsigned)m_compressionBuffer.size(), ZLib::FT_FINISH); + unsigned int compressedSize = m_zlib->Compress(m_dataBuffer.data(), dataToCompress, m_compressionBuffer.data(), (unsigned)m_compressionBuffer.size()); if (compressedSize) { IO::SystemFile::Write(m_compressionBuffer.data(), compressedSize); } - } while (compressedSize > 0); - m_zlib->ResetCompressor(); -#else - if (dataSizeInBuffer) - { - IO::SystemFile::Write(m_dataBuffer.data(), m_dataBuffer.size()); } +#else + IO::SystemFile::Write(m_dataBuffer.data(), m_dataBuffer.size()); #endif m_dataBuffer.clear(); } - IO::SystemFile::Close(); } - //========================================================================= - // DrillerOutputFileStream::WriteBinary - // [3/23/2011] - //========================================================================= - void DrillerOutputFileStream::WriteBinary(const void* data, unsigned int dataSize) - { - size_t dataSizeInBuffer = m_dataBuffer.size(); - if (dataSizeInBuffer + dataSize > m_dataBuffer.capacity()) - { - if (dataSizeInBuffer > 0) - { + m_dataBuffer.insert(m_dataBuffer.end(), reinterpret_cast(data), reinterpret_cast(data) + dataSize); + } + + ////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////// + // Driller file input stream + ////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////// + + //========================================================================= + // DrillerInputFileStream::DrillerInputFileStream + // [3/23/2011] + //========================================================================= + DrillerInputFileStream::DrillerInputFileStream() + { #if defined(AZ_FILE_STREAM_COMPRESSION) - // we need to flush the data - unsigned int dataToCompress = static_cast(dataSizeInBuffer); - unsigned int minCompressBufferSize = m_zlib->GetMinCompressedBufferSize(dataToCompress); - if (m_compressionBuffer.size() < minCompressBufferSize) // grow compression buffer if needed - { - m_compressionBuffer.clear(); - m_compressionBuffer.resize(minCompressBufferSize); - } - while (dataToCompress > 0) - { - unsigned int compressedSize = m_zlib->Compress(m_dataBuffer.data(), dataToCompress, m_compressionBuffer.data(), (unsigned)m_compressionBuffer.size()); - if (compressedSize) - { - IO::SystemFile::Write(m_compressionBuffer.data(), compressedSize); - } - } + m_zlib = azcreate(ZLib, (&AllocatorInstance::GetAllocator()), OSAllocator); + m_zlib->StartDecompressor(); +#endif + } + + //========================================================================= + // DrillerInputFileStream::DrillerInputFileStream + // [3/23/2011] + //========================================================================= + DrillerInputFileStream::~DrillerInputFileStream() + { +#if defined(AZ_FILE_STREAM_COMPRESSION) + azdestroy(m_zlib, OSAllocator); +#endif + } + + //========================================================================= + // DrillerInputFileStream::Open + // [3/23/2011] + //========================================================================= + bool DrillerInputFileStream::Open(const char* fileName, int mode, int platformFlags) + { + if (IO::SystemFile::Open(fileName, mode, platformFlags)) + { + DrillerOutputStream::StreamHeader sh; +#if defined(AZ_FILE_STREAM_COMPRESSION) + // TODO: optional encode the file in the same format as the streamer so they are interchangeable +#endif + // first read the header of the stream file. + return ReadHeader(); + } + return false; + } + //========================================================================= + // DrillerInputFileStream::ReadBinary + // [3/23/2011] + //========================================================================= + unsigned int DrillerInputFileStream::ReadBinary(void* data, unsigned int maxDataSize) + { + // make sure the compressed buffer if full enough... + size_t dataToLoad = maxDataSize * 2; + m_compressedData.reserve(dataToLoad); + while (m_compressedData.size() < dataToLoad) + { + unsigned char buffer[10 * 1024]; + IO::SystemFile::SizeType bytesRead = Read(AZ_ARRAY_SIZE(buffer), buffer); + if (bytesRead > 0) + { + m_compressedData.insert(m_compressedData.end(), (unsigned char*)buffer, buffer + bytesRead); + } + if (bytesRead < AZ_ARRAY_SIZE(buffer)) + { + break; + } + } +#if defined(AZ_FILE_STREAM_COMPRESSION) + unsigned int dataSize = maxDataSize; + unsigned int bytesProcessed = m_zlib->Decompress(m_compressedData.data(), (unsigned)m_compressedData.size(), data, dataSize); + unsigned int readSize = maxDataSize - dataSize; // Zlib::Decompress decrements the dataSize parameter by the amount uncompressed #else - IO::SystemFile::Write(m_dataBuffer.data(), m_dataBuffer.size()); + unsigned int bytesProcessed = AZStd::GetMin((unsigned int)m_compressedData.size(), maxDataSize); + unsigned int readSize = bytesProcessed; + memcpy(data, m_compressedData.data(), readSize); #endif - m_dataBuffer.clear(); - } - } - m_dataBuffer.insert(m_dataBuffer.end(), reinterpret_cast(data), reinterpret_cast(data) + dataSize); - } + m_compressedData.erase(m_compressedData.begin(), m_compressedData.begin() + bytesProcessed); + return readSize; + } - ////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////// - // Driller file input stream - ////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////// - - //========================================================================= - // DrillerInputFileStream::DrillerInputFileStream - // [3/23/2011] - //========================================================================= - DrillerInputFileStream::DrillerInputFileStream() - { + //========================================================================= + // DrillerInputFileStream::Close + // [3/23/2011] + //========================================================================= + void DrillerInputFileStream::Close() + { #if defined(AZ_FILE_STREAM_COMPRESSION) - m_zlib = azcreate(ZLib, (&AllocatorInstance::GetAllocator()), OSAllocator); - m_zlib->StartDecompressor(); -#endif - } - - //========================================================================= - // DrillerInputFileStream::DrillerInputFileStream - // [3/23/2011] - //========================================================================= - DrillerInputFileStream::~DrillerInputFileStream() + if (m_zlib) { -#if defined(AZ_FILE_STREAM_COMPRESSION) - azdestroy(m_zlib, OSAllocator); -#endif + m_zlib->ResetDecompressor(); } +#endif // AZ_FILE_STREAM_COMPRESSION + AZ::IO::SystemFile::Close(); + } - //========================================================================= - // DrillerInputFileStream::Open - // [3/23/2011] - //========================================================================= - bool DrillerInputFileStream::Open(const char* fileName, int mode, int platformFlags) + ////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////// + // DrillerSAXParser + ////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////// + //========================================================================= + // DrillerSAXParser + // [3/23/2011] + //========================================================================= + DrillerSAXParser::DrillerSAXParser(const TagCallbackType& tcb, const DataCallbackType& dcb) + : m_tagCallback(tcb) + , m_dataCallback(dcb) + { + } + + //========================================================================= + // ProcessStream + // [3/23/2011] + //========================================================================= + void + DrillerSAXParser::ProcessStream(DrillerInputStream& stream) + { + static const int processChunkSize = 15 * 1024; + char buffer[processChunkSize]; + unsigned int dataSize; + bool isEndianSwap = stream.IsEndianSwap(); + while ((dataSize = stream.ReadBinary(buffer, processChunkSize)) > 0) { - if (IO::SystemFile::Open(fileName, mode, platformFlags)) + char* dataStart = buffer; + char* dataEnd = dataStart + dataSize; + bool dataInBuffer = false; + if (!m_buffer.empty()) { - DrillerOutputStream::StreamHeader sh; -#if defined(AZ_FILE_STREAM_COMPRESSION) - // TODO: optional encode the file in the same format as the streamer so they are interchangeable -#endif - // first read the header of the stream file. - return ReadHeader(); + m_buffer.insert(m_buffer.end(), dataStart, dataEnd); + dataStart = m_buffer.data(); + dataEnd = dataStart + m_buffer.size(); + dataInBuffer = true; } - return false; - } - //========================================================================= - // DrillerInputFileStream::ReadBinary - // [3/23/2011] - //========================================================================= - unsigned int DrillerInputFileStream::ReadBinary(void* data, unsigned int maxDataSize) - { - // make sure the compressed buffer if full enough... - size_t dataToLoad = maxDataSize * 2; - m_compressedData.reserve(dataToLoad); - while (m_compressedData.size() < dataToLoad) + const int entrySize = sizeof(DrillerOutputStream::StreamEntry); + while (dataStart != dataEnd) { - unsigned char buffer[10 * 1024]; - IO::SystemFile::SizeType bytesRead = Read(AZ_ARRAY_SIZE(buffer), buffer); - if (bytesRead > 0) - { - m_compressedData.insert(m_compressedData.end(), (unsigned char*)buffer, buffer + bytesRead); - } - if (bytesRead < AZ_ARRAY_SIZE(buffer)) + if ((dataEnd - dataStart) < entrySize) // we need at least one entry to proceed { + // not enough data to process, buffer it. + if (!dataInBuffer) + { + m_buffer.insert(m_buffer.end(), dataStart, dataEnd); + } break; } - } -#if defined(AZ_FILE_STREAM_COMPRESSION) - unsigned int dataSize = maxDataSize; - unsigned int bytesProcessed = m_zlib->Decompress(m_compressedData.data(), (unsigned)m_compressedData.size(), data, dataSize); - unsigned int readSize = maxDataSize - dataSize; // Zlib::Decompress decrements the dataSize parameter by the amount uncompressed -#else - unsigned int bytesProcessed = AZStd::GetMin((unsigned int)m_compressedData.size(), maxDataSize); - unsigned int readSize = bytesProcessed; - memcpy(data, m_compressedData.data(), readSize); -#endif - m_compressedData.erase(m_compressedData.begin(), m_compressedData.begin() + bytesProcessed); - return readSize; - } - //========================================================================= - // DrillerInputFileStream::Close - // [3/23/2011] - //========================================================================= - void DrillerInputFileStream::Close() - { -#if defined(AZ_FILE_STREAM_COMPRESSION) - if (m_zlib) - { - m_zlib->ResetDecompressor(); - } -#endif // AZ_FILE_STREAM_COMPRESSION - AZ::IO::SystemFile::Close(); - } - - ////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////// - // DrillerSAXParser - ////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////// - //========================================================================= - // DrillerSAXParser - // [3/23/2011] - //========================================================================= - DrillerSAXParser::DrillerSAXParser(const TagCallbackType& tcb, const DataCallbackType& dcb) - : m_tagCallback(tcb) - , m_dataCallback(dcb) - { - } - - //========================================================================= - // ProcessStream - // [3/23/2011] - //========================================================================= - void - DrillerSAXParser::ProcessStream(DrillerInputStream& stream) - { - static const int processChunkSize = 15 * 1024; - char buffer[processChunkSize]; - unsigned int dataSize; - bool isEndianSwap = stream.IsEndianSwap(); - while ((dataSize = stream.ReadBinary(buffer, processChunkSize)) > 0) - { - char* dataStart = buffer; - char* dataEnd = dataStart + dataSize; - bool dataInBuffer = false; - if (!m_buffer.empty()) + DrillerOutputStream::StreamEntry* se = reinterpret_cast(dataStart); + if (isEndianSwap) { - m_buffer.insert(m_buffer.end(), dataStart, dataEnd); - dataStart = m_buffer.data(); - dataEnd = dataStart + m_buffer.size(); - dataInBuffer = true; + // endian swap + AZStd::endian_swap(se->name); + AZStd::endian_swap(se->sizeAndFlags); } - const int entrySize = sizeof(DrillerOutputStream::StreamEntry); - while (dataStart != dataEnd) + + u32 dataType = (se->sizeAndFlags & DrillerOutputStream::StreamEntry::dataInternalMask) >> DrillerOutputStream::StreamEntry::dataInternalShift; + u32 value = se->sizeAndFlags & DrillerOutputStream::StreamEntry::dataSizeMask; + Data de; + de.m_name = se->name; + de.m_stringPool = stream.GetStringPool(); + de.m_isPooledString = false; + de.m_isPooledStringCrc32 = false; + switch (dataType) { - if ((dataEnd - dataStart) < entrySize) // we need at least one entry to proceed + case DrillerOutputStream::StreamEntry::INT_TAG: + { + bool isStart = (value != 0); + m_tagCallback(se->name, isStart); + dataStart += entrySize; + } break; + case DrillerOutputStream::StreamEntry::INT_DATA_U8: + { + u8 value8 = static_cast(value); + de.m_data = &value8; + de.m_dataSize = 1; + de.m_isEndianSwap = false; + m_dataCallback(de); + dataStart += entrySize; + } break; + case DrillerOutputStream::StreamEntry::INT_DATA_U16: + { + u16 value16 = static_cast(value); + de.m_data = &value16; + de.m_dataSize = 2; + de.m_isEndianSwap = false; + m_dataCallback(de); + dataStart += entrySize; + } break; + case DrillerOutputStream::StreamEntry::INT_DATA_U29: + { + de.m_data = &value; + de.m_dataSize = 4; + de.m_isEndianSwap = false; + m_dataCallback(de); + dataStart += entrySize; + } break; + case DrillerOutputStream::StreamEntry::INT_POOLED_STRING: + { + unsigned int userDataSize = value; + if ((userDataSize + entrySize) <= (unsigned)(dataEnd - dataStart)) { - // not enough data to process, buffer it. + // Add string to the pool + AZ_Assert(de.m_stringPool != nullptr, "We require a string pool to parse this stream"); + AZ::u32 crc32; + const char* stringPtr; + dataStart += entrySize; + de.m_stringPool->InsertCopy(reinterpret_cast(dataStart), userDataSize, crc32, &stringPtr); + de.m_dataSize = userDataSize; + de.m_isEndianSwap = isEndianSwap; + de.m_isPooledString = true; + de.m_data = const_cast(static_cast(stringPtr)); + m_dataCallback(de); + dataStart += userDataSize; + } + else + { + // we can't process data right now add it to the buffer (if we have not done that already) if (!dataInBuffer) { m_buffer.insert(m_buffer.end(), dataStart, dataEnd); } - break; + dataEnd = dataStart; // exit the loop } - - DrillerOutputStream::StreamEntry* se = reinterpret_cast(dataStart); - if (isEndianSwap) + } break; + case DrillerOutputStream::StreamEntry::INT_POOLED_STRING_CRC32: + { + de.m_isPooledStringCrc32 = true; + AZ_Assert(value == 4, "The data size for a pooled string crc32 should be 4 bytes!"); + } // continue to INT_SIZE + case DrillerOutputStream::StreamEntry::INT_SIZE: + { + unsigned int userDataSize = value; + if ((userDataSize + entrySize) <= (unsigned)(dataEnd - dataStart)) // do we have all the date we need to process... { - // endian swap - AZStd::endian_swap(se->name); - AZStd::endian_swap(se->sizeAndFlags); - } - - u32 dataType = (se->sizeAndFlags & DrillerOutputStream::StreamEntry::dataInternalMask) >> DrillerOutputStream::StreamEntry::dataInternalShift; - u32 value = se->sizeAndFlags & DrillerOutputStream::StreamEntry::dataSizeMask; - Data de; - de.m_name = se->name; - de.m_stringPool = stream.GetStringPool(); - de.m_isPooledString = false; - de.m_isPooledStringCrc32 = false; - switch (dataType) - { - case DrillerOutputStream::StreamEntry::INT_TAG: - { - bool isStart = (value != 0); - m_tagCallback(se->name, isStart); dataStart += entrySize; - } break; - case DrillerOutputStream::StreamEntry::INT_DATA_U8: - { - u8 value8 = static_cast(value); - de.m_data = &value8; - de.m_dataSize = 1; - de.m_isEndianSwap = false; + de.m_data = dataStart; + de.m_dataSize = userDataSize; + de.m_isEndianSwap = isEndianSwap; m_dataCallback(de); - dataStart += entrySize; - } break; - case DrillerOutputStream::StreamEntry::INT_DATA_U16: - { - u16 value16 = static_cast(value); - de.m_data = &value16; - de.m_dataSize = 2; - de.m_isEndianSwap = false; - m_dataCallback(de); - dataStart += entrySize; - } break; - case DrillerOutputStream::StreamEntry::INT_DATA_U29: - { - de.m_data = &value; - de.m_dataSize = 4; - de.m_isEndianSwap = false; - m_dataCallback(de); - dataStart += entrySize; - } break; - case DrillerOutputStream::StreamEntry::INT_POOLED_STRING: - { - unsigned int userDataSize = value; - if ((userDataSize + entrySize) <= (unsigned)(dataEnd - dataStart)) - { - // Add string to the pool - AZ_Assert(de.m_stringPool != nullptr, "We require a string pool to parse this stream"); - AZ::u32 crc32; - const char* stringPtr; - dataStart += entrySize; - de.m_stringPool->InsertCopy(reinterpret_cast(dataStart), userDataSize, crc32, &stringPtr); - de.m_dataSize = userDataSize; - de.m_isEndianSwap = isEndianSwap; - de.m_isPooledString = true; - de.m_data = const_cast(static_cast(stringPtr)); - m_dataCallback(de); - dataStart += userDataSize; - } - else - { - // we can't process data right now add it to the buffer (if we have not done that already) - if (!dataInBuffer) - { - m_buffer.insert(m_buffer.end(), dataStart, dataEnd); - } - dataEnd = dataStart; // exit the loop - } - } break; - case DrillerOutputStream::StreamEntry::INT_POOLED_STRING_CRC32: - { - de.m_isPooledStringCrc32 = true; - AZ_Assert(value == 4, "The data size for a pooled string crc32 should be 4 bytes!"); - } // continue to INT_SIZE - case DrillerOutputStream::StreamEntry::INT_SIZE: - { - unsigned int userDataSize = value; - if ((userDataSize + entrySize) <= (unsigned)(dataEnd - dataStart)) // do we have all the date we need to process... - { - dataStart += entrySize; - de.m_data = dataStart; - de.m_dataSize = userDataSize; - de.m_isEndianSwap = isEndianSwap; - m_dataCallback(de); - dataStart += userDataSize; - } - else - { - // we can't process data right now add it to the buffer (if we have not done that already) - if (!dataInBuffer) - { - m_buffer.insert(m_buffer.end(), dataStart, dataEnd); - } - dataEnd = dataStart; // exit the loop - } - } break; - default: - { - AZ_Error("DrillerSAXParser",false,"Encounted unknown symbol (%i) while processing stream (%s). Aborting stream.\n",dataType, stream.GetIdentifier()); - - // If we can't process anything, we want to just escape the loop, to avoid spinning infinitely - dataEnd = dataStart; - } break; + dataStart += userDataSize; } - } - if (dataInBuffer) // if the data was in the buffer remove the processed data! - { - m_buffer.erase(m_buffer.begin(), m_buffer.begin() + (dataStart - m_buffer.data())); - } - } - } - - void DrillerSAXParser::Data::Read(AZ::Vector3& v) const - { - AZ_Assert(m_dataSize == sizeof(float) * 3, "We are expecting 3 floats for Vector3 element 0x%08x with size %d bytes", m_name, m_dataSize); - float* data = reinterpret_cast(m_data); - if (m_isEndianSwap) - { - AZStd::endian_swap(data, data + 3); - m_isEndianSwap = false; - } - v = Vector3::CreateFromFloat3(data); - } - void DrillerSAXParser::Data::Read(AZ::Vector4& v) const - { - AZ_Assert(m_dataSize == sizeof(float) * 4, "We are expecting 4 floats for Vector4 element 0x%08x with size %d bytes", m_name, m_dataSize); - float* data = reinterpret_cast(m_data); - if (m_isEndianSwap) - { - AZStd::endian_swap(data, data + 4); - m_isEndianSwap = false; - } - v = Vector4::CreateFromFloat4(data); - } - void DrillerSAXParser::Data::Read(AZ::Aabb& aabb) const - { - AZ_Assert(m_dataSize == sizeof(float) * 6, "We are expecting 6 floats for Aabb element 0x%08x with size %d bytes", m_name, m_dataSize); - float* data = reinterpret_cast(m_data); - if (m_isEndianSwap) - { - AZStd::endian_swap(data, data + 6); - m_isEndianSwap = false; - } - Vector3 min = Vector3::CreateFromFloat3(data); - Vector3 max = Vector3::CreateFromFloat3(&data[3]); - aabb = Aabb::CreateFromMinMax(min, max); - } - void DrillerSAXParser::Data::Read(AZ::Obb& obb) const - { - AZ_Assert(m_dataSize == sizeof(float) * 10, "We are expecting 10 floats for Obb element 0x%08x with size %d bytes", m_name, m_dataSize); - float* data = reinterpret_cast(m_data); - if (m_isEndianSwap) - { - AZStd::endian_swap(data, data + 10); - m_isEndianSwap = false; - } - Vector3 position = Vector3::CreateFromFloat3(data); - Quaternion rotation = Quaternion::CreateFromFloat4(&data[3]); - Vector3 halfLengths = Vector3::CreateFromFloat3(&data[7]); - obb = Obb::CreateFromPositionRotationAndHalfLengths(position, rotation, halfLengths); - } - void DrillerSAXParser::Data::Read(AZ::Transform& tm) const - { - AZ_Assert(m_dataSize == sizeof(float) * 12, "We are expecting 12 floats for Transform element 0x%08x with size %d bytes", m_name, m_dataSize); - float* data = reinterpret_cast(m_data); - if (m_isEndianSwap) - { - AZStd::endian_swap(data, data + 12); - m_isEndianSwap = false; - } - const Matrix3x4 matrix3x4 = Matrix3x4::CreateFromRowMajorFloat12(data); - tm = Transform::CreateFromMatrix3x4(matrix3x4); - } - void DrillerSAXParser::Data::Read(AZ::Matrix3x3& tm) const - { - AZ_Assert(m_dataSize == sizeof(float) * 9, "We are expecting 9 floats for Matrix3x3 element 0x%08x with size %d bytes", m_name, m_dataSize); - float* data = reinterpret_cast(m_data); - if (m_isEndianSwap) - { - AZStd::endian_swap(data, data + 9); - m_isEndianSwap = false; - } - tm = Matrix3x3::CreateFromRowMajorFloat9(data); - } - void DrillerSAXParser::Data::Read(AZ::Matrix4x4& tm) const - { - AZ_Assert(m_dataSize == sizeof(float) * 16, "We are expecting 16 floats for Matrix4x4 element 0x%08x with size %d bytes", m_name, m_dataSize); - float* data = reinterpret_cast(m_data); - if (m_isEndianSwap) - { - AZStd::endian_swap(data, data + 16); - m_isEndianSwap = false; - } - tm = Matrix4x4::CreateFromRowMajorFloat16(data); - } - void DrillerSAXParser::Data::Read(AZ::Quaternion& tm) const - { - AZ_Assert(m_dataSize == sizeof(float) * 4, "We are expecting 4 floats for Quaternion element 0x%08x with size %d bytes", m_name, m_dataSize); - float* data = reinterpret_cast(m_data); - if (m_isEndianSwap) - { - AZStd::endian_swap(data, data + 4); - m_isEndianSwap = false; - } - tm = Quaternion::CreateFromFloat4(data); - } - void DrillerSAXParser::Data::Read(AZ::Plane& plane) const - { - AZ::Vector4 coeff; - Read(coeff); - plane = Plane::CreateFromCoefficients(coeff.GetX(), coeff.GetY(), coeff.GetZ(), coeff.GetW()); - } - - const char* DrillerSAXParser::Data::PrepareString(unsigned int& stringLength) const - { - const char* srcData = reinterpret_cast(m_data); - stringLength = m_dataSize; - if (m_stringPool) - { - AZ::u32 crc32; - const char* stringPtr; - if (m_isPooledStringCrc32) - { - crc32 = *reinterpret_cast(m_data); - if (m_isEndianSwap) + else { - AZStd::endian_swap(crc32); + // we can't process data right now add it to the buffer (if we have not done that already) + if (!dataInBuffer) + { + m_buffer.insert(m_buffer.end(), dataStart, dataEnd); + } + dataEnd = dataStart; // exit the loop } - stringPtr = m_stringPool->Find(crc32); - AZ_Assert(stringPtr != nullptr, "Failed to find string with id 0x%08x in the string pool, proper stream read is impossible!", crc32); - stringLength = static_cast(strlen(stringPtr)); - } - else if (m_isPooledString) + } break; + default: { - stringPtr = srcData; // already stored in the pool just transfer the pointer + AZ_Error("DrillerSAXParser",false,"Encounted unknown symbol (%i) while processing stream (%s). Aborting stream.\n",dataType, stream.GetIdentifier()); + + // If we can't process anything, we want to just escape the loop, to avoid spinning infinitely + dataEnd = dataStart; + } break; } - else + } + if (dataInBuffer) // if the data was in the buffer remove the processed data! + { + m_buffer.erase(m_buffer.begin(), m_buffer.begin() + (dataStart - m_buffer.data())); + } + } + } + + void DrillerSAXParser::Data::Read(AZ::Vector3& v) const + { + AZ_Assert(m_dataSize == sizeof(float) * 3, "We are expecting 3 floats for Vector3 element 0x%08x with size %d bytes", m_name, m_dataSize); + float* data = reinterpret_cast(m_data); + if (m_isEndianSwap) + { + AZStd::endian_swap(data, data + 3); + m_isEndianSwap = false; + } + v = Vector3::CreateFromFloat3(data); + } + void DrillerSAXParser::Data::Read(AZ::Vector4& v) const + { + AZ_Assert(m_dataSize == sizeof(float) * 4, "We are expecting 4 floats for Vector4 element 0x%08x with size %d bytes", m_name, m_dataSize); + float* data = reinterpret_cast(m_data); + if (m_isEndianSwap) + { + AZStd::endian_swap(data, data + 4); + m_isEndianSwap = false; + } + v = Vector4::CreateFromFloat4(data); + } + void DrillerSAXParser::Data::Read(AZ::Aabb& aabb) const + { + AZ_Assert(m_dataSize == sizeof(float) * 6, "We are expecting 6 floats for Aabb element 0x%08x with size %d bytes", m_name, m_dataSize); + float* data = reinterpret_cast(m_data); + if (m_isEndianSwap) + { + AZStd::endian_swap(data, data + 6); + m_isEndianSwap = false; + } + Vector3 min = Vector3::CreateFromFloat3(data); + Vector3 max = Vector3::CreateFromFloat3(&data[3]); + aabb = Aabb::CreateFromMinMax(min, max); + } + void DrillerSAXParser::Data::Read(AZ::Obb& obb) const + { + AZ_Assert(m_dataSize == sizeof(float) * 10, "We are expecting 10 floats for Obb element 0x%08x with size %d bytes", m_name, m_dataSize); + float* data = reinterpret_cast(m_data); + if (m_isEndianSwap) + { + AZStd::endian_swap(data, data + 10); + m_isEndianSwap = false; + } + Vector3 position = Vector3::CreateFromFloat3(data); + Quaternion rotation = Quaternion::CreateFromFloat4(&data[3]); + Vector3 halfLengths = Vector3::CreateFromFloat3(&data[7]); + obb = Obb::CreateFromPositionRotationAndHalfLengths(position, rotation, halfLengths); + } + void DrillerSAXParser::Data::Read(AZ::Transform& tm) const + { + AZ_Assert(m_dataSize == sizeof(float) * 12, "We are expecting 12 floats for Transform element 0x%08x with size %d bytes", m_name, m_dataSize); + float* data = reinterpret_cast(m_data); + if (m_isEndianSwap) + { + AZStd::endian_swap(data, data + 12); + m_isEndianSwap = false; + } + const Matrix3x4 matrix3x4 = Matrix3x4::CreateFromRowMajorFloat12(data); + tm = Transform::CreateFromMatrix3x4(matrix3x4); + } + void DrillerSAXParser::Data::Read(AZ::Matrix3x3& tm) const + { + AZ_Assert(m_dataSize == sizeof(float) * 9, "We are expecting 9 floats for Matrix3x3 element 0x%08x with size %d bytes", m_name, m_dataSize); + float* data = reinterpret_cast(m_data); + if (m_isEndianSwap) + { + AZStd::endian_swap(data, data + 9); + m_isEndianSwap = false; + } + tm = Matrix3x3::CreateFromRowMajorFloat9(data); + } + void DrillerSAXParser::Data::Read(AZ::Matrix4x4& tm) const + { + AZ_Assert(m_dataSize == sizeof(float) * 16, "We are expecting 16 floats for Matrix4x4 element 0x%08x with size %d bytes", m_name, m_dataSize); + float* data = reinterpret_cast(m_data); + if (m_isEndianSwap) + { + AZStd::endian_swap(data, data + 16); + m_isEndianSwap = false; + } + tm = Matrix4x4::CreateFromRowMajorFloat16(data); + } + void DrillerSAXParser::Data::Read(AZ::Quaternion& tm) const + { + AZ_Assert(m_dataSize == sizeof(float) * 4, "We are expecting 4 floats for Quaternion element 0x%08x with size %d bytes", m_name, m_dataSize); + float* data = reinterpret_cast(m_data); + if (m_isEndianSwap) + { + AZStd::endian_swap(data, data + 4); + m_isEndianSwap = false; + } + tm = Quaternion::CreateFromFloat4(data); + } + void DrillerSAXParser::Data::Read(AZ::Plane& plane) const + { + AZ::Vector4 coeff; + Read(coeff); + plane = Plane::CreateFromCoefficients(coeff.GetX(), coeff.GetY(), coeff.GetZ(), coeff.GetW()); + } + + const char* DrillerSAXParser::Data::PrepareString(unsigned int& stringLength) const + { + const char* srcData = reinterpret_cast(m_data); + stringLength = m_dataSize; + if (m_stringPool) + { + AZ::u32 crc32; + const char* stringPtr; + if (m_isPooledStringCrc32) + { + crc32 = *reinterpret_cast(m_data); + if (m_isEndianSwap) { - // Store copy of the string in the pool to save memory (keep only one reference of the string). - m_stringPool->InsertCopy(reinterpret_cast(srcData), stringLength, crc32, &stringPtr); + AZStd::endian_swap(crc32); } - srcData = stringPtr; + stringPtr = m_stringPool->Find(crc32); + AZ_Assert(stringPtr != nullptr, "Failed to find string with id 0x%08x in the string pool, proper stream read is impossible!", crc32); + stringLength = static_cast(strlen(stringPtr)); + } + else if (m_isPooledString) + { + stringPtr = srcData; // already stored in the pool just transfer the pointer } else { - AZ_Assert(m_isPooledString == false && m_isPooledStringCrc32 == false, "This stream requires using of a string pool as the string is send only once and afterwards only the Crc32 is used!"); + // Store copy of the string in the pool to save memory (keep only one reference of the string). + m_stringPool->InsertCopy(reinterpret_cast(srcData), stringLength, crc32, &stringPtr); } - return srcData; + srcData = stringPtr; + } + else + { + AZ_Assert(m_isPooledString == false && m_isPooledStringCrc32 == false, "This stream requires using of a string pool as the string is send only once and afterwards only the Crc32 is used!"); + } + return srcData; + } + + ////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////// + // DrillerDOMParser + ////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////// + + //========================================================================= + // Node::GetTag + // [1/23/2013] + //========================================================================= + const DrillerDOMParser::Node* DrillerDOMParser::Node::GetTag(u32 tagName) const + { + const Node* tagNode = nullptr; + for (Node::NodeListType::const_iterator i = m_tags.begin(); i != m_tags.end(); ++i) + { + if ((*i).m_name == tagName) + { + tagNode = &*i; + break; + } + } + return tagNode; + } + + //========================================================================= + // Node::GetData + // [3/23/2011] + //========================================================================= + const DrillerDOMParser::Data* DrillerDOMParser::Node::GetData(u32 dataName) const + { + const Data* dataNode = nullptr; + for (Node::DataListType::const_iterator i = m_data.begin(); i != m_data.end(); ++i) + { + if (i->m_name == dataName) + { + dataNode = &*i; + break; + } + } + return dataNode; + } + + //========================================================================= + // DrillerDOMParser + // [3/23/2011] + //========================================================================= + DrillerDOMParser::DrillerDOMParser(bool isPersistentInputData) + : DrillerSAXParser(TagCallbackType(this, &DrillerDOMParser::OnTag), DataCallbackType(this, &DrillerDOMParser::OnData)) + , m_isPersistentInputData(isPersistentInputData) + { + m_root.m_name = 0; + m_root.m_parent = nullptr; + m_topNode = &m_root; + } + static int g_numFree = 0; + //========================================================================= + // ~DrillerDOMParser + // [3/23/2011] + //========================================================================= + DrillerDOMParser::~DrillerDOMParser() + { + DeleteNode(m_root); + } + + //========================================================================= + // OnTag + // [3/23/2011] + //========================================================================= + void + DrillerDOMParser::OnTag(AZ::u32 name, bool isOpen) + { + if (isOpen) + { + m_topNode->m_tags.push_back(); + Node& node = m_topNode->m_tags.back(); + node.m_name = name; + node.m_parent = m_topNode; + + m_topNode = &node; + } + else + { + AZ_Assert(m_topNode->m_name == name, "We have opened tag with name 0x%08x and closing with name 0x%08x", m_topNode->m_name, name); + m_topNode = m_topNode->m_parent; + } + } + //========================================================================= + // OnData + // [3/23/2011] + //========================================================================= + void + DrillerDOMParser::OnData(const Data& data) + { + Data de = data; + if (!m_isPersistentInputData) + { + de.m_data = azmalloc(data.m_dataSize, 1, OSAllocator); + memcpy(const_cast(de.m_data), data.m_data, data.m_dataSize); + } + m_topNode->m_data.push_back(de); + } + //========================================================================= + // DeleteNode + // [3/23/2011] + //========================================================================= + void + DrillerDOMParser::DeleteNode(Node& node) + { + if (!m_isPersistentInputData) + { + for (Node::DataListType::iterator iter = node.m_data.begin(); iter != node.m_data.end(); ++iter) + { + azfree(iter->m_data, OSAllocator, iter->m_dataSize); + ++g_numFree; + } + node.m_data.clear(); + } + for (Node::NodeListType::iterator iter = node.m_tags.begin(); iter != node.m_tags.end(); ++iter) + { + DeleteNode(*iter); + } + node.m_tags.clear(); + } + + ////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////// + // DrillerSAXParserHandler + ////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////// + + //========================================================================= + // DrillerSAXParserHandler + // [3/14/2013] + //========================================================================= + DrillerSAXParserHandler::DrillerSAXParserHandler(DrillerHandlerParser* rootHandler) + : DrillerSAXParser(TagCallbackType(this, &DrillerSAXParserHandler::OnTag), DataCallbackType(this, &DrillerSAXParserHandler::OnData)) + { + // Push the root element + m_stack.push_back(rootHandler); + } + + //========================================================================= + // OnTag + // [3/14/2013] + //========================================================================= + void DrillerSAXParserHandler::OnTag(u32 name, bool isOpen) + { + if (m_stack.empty()) + { + return; } - ////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////// - // DrillerDOMParser - ////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////// - - //========================================================================= - // Node::GetTag - // [1/23/2013] - //========================================================================= - const DrillerDOMParser::Node* DrillerDOMParser::Node::GetTag(u32 tagName) const + DrillerHandlerParser* childHandler = nullptr; + DrillerHandlerParser* currentHandler = m_stack.back(); + if (isOpen) { - const Node* tagNode = nullptr; - for (Node::NodeListType::const_iterator i = m_tags.begin(); i != m_tags.end(); ++i) + if (currentHandler != nullptr) { - if ((*i).m_name == tagName) + childHandler = currentHandler->OnEnterTag(name); + AZ_Warning("Driller", !currentHandler->IsWarnOnUnsupportedTags() || childHandler != nullptr, "Could not find handler for tag 0x%08x", name); + } + m_stack.push_back(childHandler); + } + else + { + m_stack.pop_back(); + if (!m_stack.empty()) + { + DrillerHandlerParser* parentHandler = m_stack.back(); + if (parentHandler) { - tagNode = &*i; - break; - } - } - return tagNode; - } - - //========================================================================= - // Node::GetData - // [3/23/2011] - //========================================================================= - const DrillerDOMParser::Data* DrillerDOMParser::Node::GetData(u32 dataName) const - { - const Data* dataNode = nullptr; - for (Node::DataListType::const_iterator i = m_data.begin(); i != m_data.end(); ++i) - { - if (i->m_name == dataName) - { - dataNode = &*i; - break; - } - } - return dataNode; - } - - //========================================================================= - // DrillerDOMParser - // [3/23/2011] - //========================================================================= - DrillerDOMParser::DrillerDOMParser(bool isPersistentInputData) - : DrillerSAXParser(TagCallbackType(this, &DrillerDOMParser::OnTag), DataCallbackType(this, &DrillerDOMParser::OnData)) - , m_isPersistentInputData(isPersistentInputData) - { - m_root.m_name = 0; - m_root.m_parent = nullptr; - m_topNode = &m_root; - } - static int g_numFree = 0; - //========================================================================= - // ~DrillerDOMParser - // [3/23/2011] - //========================================================================= - DrillerDOMParser::~DrillerDOMParser() - { - DeleteNode(m_root); - } - - //========================================================================= - // OnTag - // [3/23/2011] - //========================================================================= - void - DrillerDOMParser::OnTag(AZ::u32 name, bool isOpen) - { - if (isOpen) - { - m_topNode->m_tags.push_back(); - Node& node = m_topNode->m_tags.back(); - node.m_name = name; - node.m_parent = m_topNode; - - m_topNode = &node; - } - else - { - AZ_Assert(m_topNode->m_name == name, "We have opened tag with name 0x%08x and closing with name 0x%08x", m_topNode->m_name, name); - m_topNode = m_topNode->m_parent; - } - } - //========================================================================= - // OnData - // [3/23/2011] - //========================================================================= - void - DrillerDOMParser::OnData(const Data& data) - { - Data de = data; - if (!m_isPersistentInputData) - { - de.m_data = azmalloc(data.m_dataSize, 1, OSAllocator); - memcpy(const_cast(de.m_data), data.m_data, data.m_dataSize); - } - m_topNode->m_data.push_back(de); - } - //========================================================================= - // DeleteNode - // [3/23/2011] - //========================================================================= - void - DrillerDOMParser::DeleteNode(Node& node) - { - if (!m_isPersistentInputData) - { - for (Node::DataListType::iterator iter = node.m_data.begin(); iter != node.m_data.end(); ++iter) - { - azfree(iter->m_data, OSAllocator, iter->m_dataSize); - ++g_numFree; - } - node.m_data.clear(); - } - for (Node::NodeListType::iterator iter = node.m_tags.begin(); iter != node.m_tags.end(); ++iter) - { - DeleteNode(*iter); - } - node.m_tags.clear(); - } - - ////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////// - // DrillerSAXParserHandler - ////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////// - - //========================================================================= - // DrillerSAXParserHandler - // [3/14/2013] - //========================================================================= - DrillerSAXParserHandler::DrillerSAXParserHandler(DrillerHandlerParser* rootHandler) - : DrillerSAXParser(TagCallbackType(this, &DrillerSAXParserHandler::OnTag), DataCallbackType(this, &DrillerSAXParserHandler::OnData)) - { - // Push the root element - m_stack.push_back(rootHandler); - } - - //========================================================================= - // OnTag - // [3/14/2013] - //========================================================================= - void DrillerSAXParserHandler::OnTag(u32 name, bool isOpen) - { - if (m_stack.size() == 0) - { - return; - } - - DrillerHandlerParser* childHandler = nullptr; - DrillerHandlerParser* currentHandler = m_stack.back(); - if (isOpen) - { - if (currentHandler != nullptr) - { - childHandler = currentHandler->OnEnterTag(name); - AZ_Warning("Driller", !currentHandler->IsWarnOnUnsupportedTags() || childHandler != nullptr, "Could not find handler for tag 0x%08x", name); - } - m_stack.push_back(childHandler); - } - else - { - m_stack.pop_back(); - if (m_stack.size() > 0) - { - DrillerHandlerParser* parentHandler = m_stack.back(); - if (parentHandler) - { - parentHandler->OnExitTag(currentHandler, name); - } + parentHandler->OnExitTag(currentHandler, name); } } } + } - //========================================================================= - // OnData - // [3/14/2013] - //========================================================================= - void DrillerSAXParserHandler::OnData(const DrillerSAXParser::Data& data) + //========================================================================= + // OnData + // [3/14/2013] + //========================================================================= + void DrillerSAXParserHandler::OnData(const DrillerSAXParser::Data& data) + { + if (m_stack.empty()) { - if (m_stack.size() == 0) - { - return; - } - - DrillerHandlerParser* currentHandler = m_stack.back(); - if (currentHandler) - { - currentHandler->OnData(data); - } + return; } - } // namespace Debug -} // namespace AZ + + DrillerHandlerParser* currentHandler = m_stack.back(); + if (currentHandler) + { + currentHandler->OnData(data); + } + } +} // namespace AZ::Debug diff --git a/Code/Framework/AzCore/AzCore/EBus/EventSchedulerSystemComponent.cpp b/Code/Framework/AzCore/AzCore/EBus/EventSchedulerSystemComponent.cpp index 3cdc3fc461..dd92b340c5 100644 --- a/Code/Framework/AzCore/AzCore/EBus/EventSchedulerSystemComponent.cpp +++ b/Code/Framework/AzCore/AzCore/EBus/EventSchedulerSystemComponent.cpp @@ -60,7 +60,7 @@ namespace AZ void EventSchedulerSystemComponent::OnTick([[maybe_unused]] float deltaTime, [[maybe_unused]] AZ::ScriptTimePoint time) { - TimeMs startTime = GetElapsedTimeMs(); + TimeMs startTime = AZ::GetElapsedTimeMs(); bool usingTimeslice = bg_maxScheduledEventProcessTimeMs != TimeMs{ 0 }; while (!m_queue.empty()) @@ -76,7 +76,7 @@ namespace AZ while (!m_pendingQueue.empty()) { - if (usingTimeslice && (GetElapsedTimeMs() - startTime > bg_maxScheduledEventProcessTimeMs)) + if (usingTimeslice && (AZ::GetElapsedTimeMs() - startTime > bg_maxScheduledEventProcessTimeMs)) { AZLOG_WARN("Failed to trigger all pending scheduled events, %u events remain on the pending queue", aznumeric_cast(m_pendingQueue.size())); break; @@ -103,7 +103,7 @@ namespace AZ durationMs = TimeMs{ 0 }; } - TimeMs currentMilliseconds = GetElapsedTimeMs(); + TimeMs currentMilliseconds = AZ::GetElapsedTimeMs(); if (timedEvent->m_handle == nullptr) { timedEvent->m_handle = AllocateHandle(); @@ -122,7 +122,7 @@ namespace AZ durationMs = TimeMs{ 0 }; } - TimeMs currentMilliseconds = GetElapsedTimeMs(); + TimeMs currentMilliseconds = AZ::GetElapsedTimeMs(); ScheduledEvent* timedEvent = AllocateManagedEvent(callback, eventName); const bool ownsScheduledEvent = true; *(timedEvent->m_handle) = ScheduledEventHandle(TimeMs(currentMilliseconds + durationMs), durationMs, timedEvent, ownsScheduledEvent); diff --git a/Code/Framework/AzCore/AzCore/EBus/ScheduledEvent.cpp b/Code/Framework/AzCore/AzCore/EBus/ScheduledEvent.cpp index 8e496c3dbc..41230958e4 100644 --- a/Code/Framework/AzCore/AzCore/EBus/ScheduledEvent.cpp +++ b/Code/Framework/AzCore/AzCore/EBus/ScheduledEvent.cpp @@ -76,7 +76,7 @@ namespace AZ TimeMs ScheduledEvent::TimeInQueueMs() const { - return GetElapsedTimeMs() - m_timeInserted; + return AZ::GetElapsedTimeMs() - m_timeInserted; } TimeMs ScheduledEvent::RemainingTimeInQueueMs() const diff --git a/Code/Framework/AzCore/AzCore/IO/CompressionBus.cpp b/Code/Framework/AzCore/AzCore/IO/CompressionBus.cpp index fb9f8841a2..7878ec6e9e 100644 --- a/Code/Framework/AzCore/AzCore/IO/CompressionBus.cpp +++ b/Code/Framework/AzCore/AzCore/IO/CompressionBus.cpp @@ -8,38 +8,35 @@ #include -namespace AZ +namespace AZ::IO { - namespace IO + CompressionInfo::CompressionInfo(CompressionInfo&& rhs) { - CompressionInfo::CompressionInfo(CompressionInfo&& rhs) - { - *this = AZStd::move(rhs); - } + *this = AZStd::move(rhs); + } - CompressionInfo& CompressionInfo::operator=(CompressionInfo&& rhs) - { - m_decompressor = AZStd::move(rhs.m_decompressor); - m_archiveFilename = AZStd::move(rhs.m_archiveFilename); - m_compressionTag = rhs.m_compressionTag; - m_offset = rhs.m_offset; - m_compressedSize = rhs.m_compressedSize; - m_uncompressedSize = rhs.m_uncompressedSize; - m_conflictResolution = rhs.m_conflictResolution; - m_isCompressed = rhs.m_isCompressed; - m_isSharedPak = rhs.m_isSharedPak; + CompressionInfo& CompressionInfo::operator=(CompressionInfo&& rhs) + { + m_decompressor = AZStd::move(rhs.m_decompressor); + m_archiveFilename = AZStd::move(rhs.m_archiveFilename); + m_compressionTag = rhs.m_compressionTag; + m_offset = rhs.m_offset; + m_compressedSize = rhs.m_compressedSize; + m_uncompressedSize = rhs.m_uncompressedSize; + m_conflictResolution = rhs.m_conflictResolution; + m_isCompressed = rhs.m_isCompressed; + m_isSharedPak = rhs.m_isSharedPak; - return *this; - } + return *this; + } - namespace CompressionUtils + namespace CompressionUtils + { + bool FindCompressionInfo(CompressionInfo& info, const AZStd::string_view filename) { - bool FindCompressionInfo(CompressionInfo& info, const AZStd::string_view filename) - { - bool result = false; - CompressionBus::Broadcast(&CompressionBus::Events::FindCompressionInfo, result, info, filename); - return result; - } + bool result = false; + CompressionBus::Broadcast(&CompressionBus::Events::FindCompressionInfo, result, info, filename); + return result; } } -} +} // namespace AZ::IO diff --git a/Code/Framework/AzCore/AzCore/IO/Compressor.cpp b/Code/Framework/AzCore/AzCore/IO/Compressor.cpp index e223730ce8..16527422ad 100644 --- a/Code/Framework/AzCore/AzCore/IO/Compressor.cpp +++ b/Code/Framework/AzCore/AzCore/IO/Compressor.cpp @@ -10,32 +10,29 @@ #include #include -namespace AZ +namespace AZ::IO { - namespace IO + //========================================================================= + // WriteHeaderAndData + // [12/13/2012] + //========================================================================= + bool Compressor::WriteHeaderAndData(CompressorStream* compressorStream) { - //========================================================================= - // WriteHeaderAndData - // [12/13/2012] - //========================================================================= - bool Compressor::WriteHeaderAndData(CompressorStream* compressorStream) + AZ_Assert(compressorStream->CanWrite(), "Stream is not open for write!"); + AZ_Assert(compressorStream->GetCompressorData(), "Stream doesn't have attached compressor, call WriteCompressed first!"); + AZ_Assert(compressorStream->GetCompressorData()->m_compressor == this, "Invalid compressor data! Data belongs to a different compressor"); + CompressorHeader header; + header.SetAZCS(); + header.m_compressorId = GetTypeId(); + header.m_uncompressedSize = compressorStream->GetCompressorData()->m_uncompressedSize; + AZStd::endian_swap(header.m_compressorId); + AZStd::endian_swap(header.m_uncompressedSize); + GenericStream* baseStream = compressorStream->GetWrappedStream(); + if (baseStream->WriteAtOffset(sizeof(CompressorHeader), &header, 0U) == sizeof(CompressorHeader)) { - AZ_Assert(compressorStream->CanWrite(), "Stream is not open for write!"); - AZ_Assert(compressorStream->GetCompressorData(), "Stream doesn't have attached compressor, call WriteCompressed first!"); - AZ_Assert(compressorStream->GetCompressorData()->m_compressor == this, "Invalid compressor data! Data belongs to a different compressor"); - CompressorHeader header; - header.SetAZCS(); - header.m_compressorId = GetTypeId(); - header.m_uncompressedSize = compressorStream->GetCompressorData()->m_uncompressedSize; - AZStd::endian_swap(header.m_compressorId); - AZStd::endian_swap(header.m_uncompressedSize); - GenericStream* baseStream = compressorStream->GetWrappedStream(); - if (baseStream->WriteAtOffset(sizeof(CompressorHeader), &header, 0U) == sizeof(CompressorHeader)) - { - return true; - } - - return false; + return true; } - } // namespace IO -} // namespace AZ + + return false; + } +} // namespace AZ::IO diff --git a/Code/Framework/AzCore/AzCore/IO/Compressor.h b/Code/Framework/AzCore/AzCore/IO/Compressor.h index 9b910a0ea4..340366d82f 100644 --- a/Code/Framework/AzCore/AzCore/IO/Compressor.h +++ b/Code/Framework/AzCore/AzCore/IO/Compressor.h @@ -5,74 +5,67 @@ * SPDX-License-Identifier: Apache-2.0 OR MIT * */ -#ifndef AZCORE_IO_COMPRESSOR_H -#define AZCORE_IO_COMPRESSOR_H +#pragma once #include -namespace AZ +namespace AZ::IO { - namespace IO + class CompressorStream; + + /** + * Compressor/Decompressor base interface. + * Used for all stream compressors. + */ + class Compressor { - class CompressorStream; + public: + typedef AZ::u64 SizeType; + static const int m_maxHeaderSize = 4096; /// When we open a stream to check if it's compressed we read the first m_maxHeaderSize bytes. - /** - * Compressor/Decompressor base interface. - * Used for all stream compressors. - */ - class Compressor - { - public: - typedef AZ::u64 SizeType; - static const int m_maxHeaderSize = 4096; /// When we open a stream to check if it's compressed we read the first m_maxHeaderSize bytes. + virtual ~Compressor() {} + /// Return compressor type id. + virtual AZ::u32 GetTypeId() const = 0; + /// Called when we open a stream to Read for the first time. Data contains the first. dataSize <= m_maxHeaderSize. + virtual bool ReadHeaderAndData(CompressorStream* stream, AZ::u8* data, unsigned int dataSize) = 0; + /// Called when we are about to start writing to a compressed stream. (Must be called first to write compressor header) + virtual bool WriteHeaderAndData(CompressorStream* stream); + /// Forwarded function from the Device when we from a compressed stream. + virtual SizeType Read(CompressorStream* stream, SizeType byteSize, SizeType offset, void* buffer) = 0; + /// Forwarded function from the Device when we write to a compressed stream. + virtual SizeType Write(CompressorStream* stream, SizeType byteSize, const void* data, SizeType offset = SizeType(-1)) = 0; + /// Write a seek point. + virtual bool WriteSeekPoint(CompressorStream* stream) { (void)stream; return false; } + /// Initializes Compressor for writing data. + virtual bool StartCompressor(CompressorStream* stream, int compressionLevel, SizeType autoSeekDataSize) { (void)stream; (void)compressionLevel; (void)autoSeekDataSize; return false; } + /// Called just before we close the stream. All compression data will be flushed and finalized. (You can't add data afterwards). + virtual bool Close(CompressorStream* stream) = 0; + }; - virtual ~Compressor() {} - /// Return compressor type id. - virtual AZ::u32 GetTypeId() const = 0; - /// Called when we open a stream to Read for the first time. Data contains the first. dataSize <= m_maxHeaderSize. - virtual bool ReadHeaderAndData(CompressorStream* stream, AZ::u8* data, unsigned int dataSize) = 0; - /// Called when we are about to start writing to a compressed stream. (Must be called first to write compressor header) - virtual bool WriteHeaderAndData(CompressorStream* stream); - /// Forwarded function from the Device when we from a compressed stream. - virtual SizeType Read(CompressorStream* stream, SizeType byteSize, SizeType offset, void* buffer) = 0; - /// Forwarded function from the Device when we write to a compressed stream. - virtual SizeType Write(CompressorStream* stream, SizeType byteSize, const void* data, SizeType offset = SizeType(-1)) = 0; - /// Write a seek point. - virtual bool WriteSeekPoint(CompressorStream* stream) { (void)stream; return false; } - /// Initializes Compressor for writing data. - virtual bool StartCompressor(CompressorStream* stream, int compressionLevel, SizeType autoSeekDataSize) { (void)stream; (void)compressionLevel; (void)autoSeekDataSize; return false; } - /// Called just before we close the stream. All compression data will be flushed and finalized. (You can't add data afterwards). - virtual bool Close(CompressorStream* stream) = 0; - }; + /** + * Base compressor data assigned for all compressors. + */ + class CompressorData + { + public: + virtual ~CompressorData() {} - /** - * Base compressor data assigned for all compressors. - */ - class CompressorData - { - public: - virtual ~CompressorData() {} + Compressor* m_compressor; + AZ::u64 m_uncompressedSize; + }; - Compressor* m_compressor; - AZ::u64 m_uncompressedSize; - }; + /** + * All data is stored in network order (big endian). + */ + struct CompressorHeader + { + CompressorHeader() { m_azcs[0] = 0; m_azcs[1] = 0; m_azcs[2] = 0; m_azcs[3] = 0; } - /** - * All data is stored in network order (big endian). - */ - struct CompressorHeader - { - CompressorHeader() { m_azcs[0] = 0; m_azcs[1] = 0; m_azcs[2] = 0; m_azcs[3] = 0; } + bool IsValid() const { return (m_azcs[0] == 'A' && m_azcs[1] == 'Z' && m_azcs[2] == 'C' && m_azcs[3] == 'S'); } + void SetAZCS() { m_azcs[0] = 'A'; m_azcs[1] = 'Z'; m_azcs[2] = 'C'; m_azcs[3] = 'S'; } - inline bool IsValid() const { return (m_azcs[0] == 'A' && m_azcs[1] == 'Z' && m_azcs[2] == 'C' && m_azcs[3] == 'S'); } - void SetAZCS() { m_azcs[0] = 'A'; m_azcs[1] = 'Z'; m_azcs[2] = 'C'; m_azcs[3] = 'S'; } - - char m_azcs[4]; ///< String contains 'AZCS' AmaZon Compressed Stream - AZ::u32 m_compressorId; ///< Compression method. - AZ::u64 m_uncompressedSize; ///< Uncompressed file size. - }; - } // namespace IO -} // namespace AZ - -#endif // AZCORE_IO_COMPRESSOR_H -#pragma once + char m_azcs[4]; ///< String contains 'AZCS' AmaZon Compressed Stream + AZ::u32 m_compressorId; ///< Compression method. + AZ::u64 m_uncompressedSize; ///< Uncompressed file size. + }; +} // namespace AZ::IO diff --git a/Code/Framework/AzCore/AzCore/IO/CompressorStream.cpp b/Code/Framework/AzCore/AzCore/IO/CompressorStream.cpp index 6f82cc428d..a1012ee404 100644 --- a/Code/Framework/AzCore/AzCore/IO/CompressorStream.cpp +++ b/Code/Framework/AzCore/AzCore/IO/CompressorStream.cpp @@ -15,9 +15,7 @@ #include #include -namespace AZ -{ -namespace IO +namespace AZ::IO { /*! \brief Constructs a compressor stream using the supplied filename and OpenFlags to open a file on disk @@ -300,7 +298,4 @@ Compressor* CompressorStream::CreateCompressor(AZ::u32 compressorId) return m_compressor.get(); } -} // namespace IO -} // namespace AZ - - +} // namespace AZ::IO diff --git a/Code/Framework/AzCore/AzCore/IO/CompressorZLib.cpp b/Code/Framework/AzCore/AzCore/IO/CompressorZLib.cpp index f973c0e95a..03a218dbfe 100644 --- a/Code/Framework/AzCore/AzCore/IO/CompressorZLib.cpp +++ b/Code/Framework/AzCore/AzCore/IO/CompressorZLib.cpp @@ -13,543 +13,540 @@ #include #include -namespace AZ +namespace AZ::IO { - namespace IO + //========================================================================= + // CompressorZLib + // [12/13/2012] + //========================================================================= + CompressorZLib::CompressorZLib(unsigned int decompressionCachePerStream, unsigned int dataBufferSize) + : m_lastReadStream(nullptr) + , m_lastReadStreamOffset(0) + , m_lastReadStreamSize(0) + , m_compressedDataBuffer(nullptr) + , m_compressedDataBufferSize(dataBufferSize) + , m_compressedDataBufferUseCount(0) + , m_decompressionCachePerStream(decompressionCachePerStream) + { - //========================================================================= - // CompressorZLib - // [12/13/2012] - //========================================================================= - CompressorZLib::CompressorZLib(unsigned int decompressionCachePerStream, unsigned int dataBufferSize) - : m_lastReadStream(nullptr) - , m_lastReadStreamOffset(0) - , m_lastReadStreamSize(0) - , m_compressedDataBuffer(nullptr) - , m_compressedDataBufferSize(dataBufferSize) - , m_compressedDataBufferUseCount(0) - , m_decompressionCachePerStream(decompressionCachePerStream) + AZ_Assert((dataBufferSize % (32 * 1024)) == 0, "Data buffer size %d must be multiple of 32 KB!", dataBufferSize); + AZ_Assert((decompressionCachePerStream % (32 * 1024)) == 0, "Decompress cache size %d must be multiple of 32 KB!", decompressionCachePerStream); + } + //========================================================================= + // !CompressorZLib + // [12/13/2012] + //========================================================================= + CompressorZLib::~CompressorZLib() + { + AZ_Warning("IO", m_compressedDataBufferUseCount == 0, "CompressorZLib has it's data buffer still referenced, it means that %d compressed streams have NOT closed! Freeing data...", m_compressedDataBufferUseCount); + while (m_compressedDataBufferUseCount) { - AZ_Assert((dataBufferSize % (32 * 1024)) == 0, "Data buffer size %d must be multiple of 32 KB!", dataBufferSize); - AZ_Assert((decompressionCachePerStream % (32 * 1024)) == 0, "Decompress cache size %d must be multiple of 32 KB!", decompressionCachePerStream); + ReleaseDataBuffer(); } + } - //========================================================================= - // !CompressorZLib - // [12/13/2012] - //========================================================================= - CompressorZLib::~CompressorZLib() + //========================================================================= + // GetTypeId + // [12/13/2012] + //========================================================================= + AZ::u32 CompressorZLib::TypeId() + { + return AZ_CRC("ZLib", 0x73887d3a); + } + + //========================================================================= + // ReadHeaderAndData + // [12/13/2012] + //========================================================================= + bool CompressorZLib::ReadHeaderAndData(CompressorStream* stream, AZ::u8* data, unsigned int dataSize) + { + if (stream->GetCompressorData() != nullptr) // we already have compressor data { - AZ_Warning("IO", m_compressedDataBufferUseCount == 0, "CompressorZLib has it's data buffer still referenced, it means that %d compressed streams have NOT closed! Freeing data...", m_compressedDataBufferUseCount); - while (m_compressedDataBufferUseCount) - { - ReleaseDataBuffer(); - } - } - - //========================================================================= - // GetTypeId - // [12/13/2012] - //========================================================================= - AZ::u32 CompressorZLib::TypeId() - { - return AZ_CRC("ZLib", 0x73887d3a); - } - - //========================================================================= - // ReadHeaderAndData - // [12/13/2012] - //========================================================================= - bool CompressorZLib::ReadHeaderAndData(CompressorStream* stream, AZ::u8* data, unsigned int dataSize) - { - if (stream->GetCompressorData() != nullptr) // we already have compressor data - { - return false; - } - - // Read the ZLib header should be after the default compression header... - // We should not be in this function otherwise. - if (dataSize < sizeof(CompressorZLibHeader) + sizeof(ZLib::Header)) - { - AZ_Assert(false, "We did not read enough data, we have only %d bytes left in the buffer and we need %d!", dataSize, sizeof(CompressorZLibHeader) + sizeof(ZLib::Header)); - return false; - } - - AcquireDataBuffer(); - - CompressorZLibHeader* hdr = reinterpret_cast(data); - AZStd::endian_swap(hdr->m_numSeekPoints); - dataSize -= sizeof(CompressorZLibHeader); - data += sizeof(CompressorZLibHeader); - - CompressorZLibData* zlibData = aznew CompressorZLibData; - zlibData->m_compressor = this; - zlibData->m_uncompressedSize = 0; - zlibData->m_zlibHeader = *reinterpret_cast(data); - dataSize -= sizeof(zlibData->m_zlibHeader); - data += sizeof(zlibData->m_zlibHeader); - zlibData->m_decompressNextOffset = sizeof(CompressorHeader) + sizeof(CompressorZLibHeader) + sizeof(ZLib::Header); // start after the headers - - AZ_Assert(hdr->m_numSeekPoints > 0, "We should have at least one seek point for the entire stream!"); - - // go the end of the file and read all sync points. - SizeType compressedFileEnd = stream->GetLength(); - if (compressedFileEnd == 0) - { - delete zlibData; - return false; - } - - zlibData->m_seekPoints.resize(hdr->m_numSeekPoints); - SizeType dataToRead = sizeof(CompressorZLibSeekPoint) * static_cast(hdr->m_numSeekPoints); - SizeType seekPointOffset = compressedFileEnd - dataToRead; - AZ_Assert(seekPointOffset <= compressedFileEnd, "We have an invalid archive, this is impossible!"); - GenericStream* baseStream = stream->GetWrappedStream(); - if (baseStream->ReadAtOffset(dataToRead, zlibData->m_seekPoints.data(), seekPointOffset) != dataToRead) - { - delete zlibData; - return false; - } - for (size_t i = 0; i < zlibData->m_seekPoints.size(); ++i) - { - AZStd::endian_swap(zlibData->m_seekPoints[i].m_compressedOffset); - AZStd::endian_swap(zlibData->m_seekPoints[i].m_uncompressedOffset); - } - - if (m_decompressionCachePerStream) - { - zlibData->m_decompressedCache = reinterpret_cast(azmalloc(m_decompressionCachePerStream, m_CompressedDataBufferAlignment, AZ::SystemAllocator, "CompressorZLib")); - } - - zlibData->m_decompressLastOffset = seekPointOffset; // set the start address of the seek points as the last valid read address for the compressed stream. - - zlibData->m_zlib.StartDecompressor(&zlibData->m_zlibHeader); - - stream->SetCompressorData(zlibData); - - return true; - } - - //========================================================================= - // WriteHeaderAndData - // [12/13/2012] - //========================================================================= - bool CompressorZLib::WriteHeaderAndData(CompressorStream* stream) - { - if (!Compressor::WriteHeaderAndData(stream)) - { - return false; - } - - CompressorZLibData* compressorData = static_cast(stream->GetCompressorData()); - CompressorZLibHeader header; - header.m_numSeekPoints = static_cast(compressorData->m_seekPoints.size()); - AZStd::endian_swap(header.m_numSeekPoints); - GenericStream* baseStream = stream->GetWrappedStream(); - if (baseStream->WriteAtOffset(sizeof(header), &header, sizeof(CompressorHeader)) == sizeof(header)) - { - return true; - } - return false; } - //========================================================================= - // FillFromDecompressCache - // [12/14/2012] - //========================================================================= - inline CompressorZLib::SizeType CompressorZLib::FillFromDecompressCache(CompressorZLibData* zlibData, void*& buffer, SizeType& byteSize, SizeType& offset) + // Read the ZLib header should be after the default compression header... + // We should not be in this function otherwise. + if (dataSize < sizeof(CompressorZLibHeader) + sizeof(ZLib::Header)) { - SizeType firstOffsetInCache = zlibData->m_decompressedCacheOffset; - SizeType lastOffsetInCache = firstOffsetInCache + zlibData->m_decompressedCacheDataSize; - SizeType firstDataOffset = offset; - SizeType lastDataOffset = offset + byteSize; - SizeType numCopied = 0; - if (firstOffsetInCache < lastDataOffset && lastOffsetInCache > firstDataOffset) // check if there is data in the cache - { - size_t copyOffsetStart = 0; - size_t copyOffsetEnd = zlibData->m_decompressedCacheDataSize; - - size_t bufferCopyOffset = 0; - - if (firstOffsetInCache < firstDataOffset) - { - copyOffsetStart = static_cast(firstDataOffset - firstOffsetInCache); - } - else - { - bufferCopyOffset = static_cast(firstOffsetInCache - firstDataOffset); - } - - if (lastOffsetInCache >= lastDataOffset) - { - copyOffsetEnd -= static_cast(lastOffsetInCache - lastDataOffset); - } - else if (bufferCopyOffset > 0) // the cache block is in the middle of the data, we can't use it (since we need to split buffer request into 2) - { - return 0; - } - - numCopied = copyOffsetEnd - copyOffsetStart; - memcpy(static_cast(buffer) + bufferCopyOffset, zlibData->m_decompressedCache + copyOffsetStart, static_cast(numCopied)); - - // adjust pointers and sizes - byteSize -= numCopied; - if (bufferCopyOffset == 0) - { - // copied in the start - buffer = reinterpret_cast(buffer) + numCopied; - offset += numCopied; - } - } - - return numCopied; + AZ_Assert(false, "We did not read enough data, we have only %d bytes left in the buffer and we need %d!", dataSize, sizeof(CompressorZLibHeader) + sizeof(ZLib::Header)); + return false; } - //========================================================================= - // FillFromCompressedCache - // [12/17/2012] - //========================================================================= - inline CompressorZLib::SizeType CompressorZLib::FillCompressedBuffer(CompressorStream* stream) + AcquireDataBuffer(); + + CompressorZLibHeader* hdr = reinterpret_cast(data); + AZStd::endian_swap(hdr->m_numSeekPoints); + dataSize -= sizeof(CompressorZLibHeader); + data += sizeof(CompressorZLibHeader); + + CompressorZLibData* zlibData = aznew CompressorZLibData; + zlibData->m_compressor = this; + zlibData->m_uncompressedSize = 0; + zlibData->m_zlibHeader = *reinterpret_cast(data); + dataSize -= sizeof(zlibData->m_zlibHeader); + data += sizeof(zlibData->m_zlibHeader); + zlibData->m_decompressNextOffset = sizeof(CompressorHeader) + sizeof(CompressorZLibHeader) + sizeof(ZLib::Header); // start after the headers + + AZ_Assert(hdr->m_numSeekPoints > 0, "We should have at least one seek point for the entire stream!"); + + // go the end of the file and read all sync points. + SizeType compressedFileEnd = stream->GetLength(); + if (compressedFileEnd == 0) { - CompressorZLibData* zlibData = static_cast(stream->GetCompressorData()); - SizeType dataFromBuffer = 0; - if (stream == m_lastReadStream) // if the buffer is filled with data from the current stream, try to reuse - { - if (zlibData->m_decompressNextOffset > m_lastReadStreamOffset) - { - SizeType offsetInCache = zlibData->m_decompressNextOffset - m_lastReadStreamOffset; - if (offsetInCache < m_lastReadStreamSize) // last check if there is data overlap - { - // copy the usable part at the start of the - SizeType toMove = m_lastReadStreamSize - offsetInCache; - memmove(m_compressedDataBuffer, &m_compressedDataBuffer[static_cast(offsetInCache)], static_cast(toMove)); - dataFromBuffer += toMove; - } - } - } - - SizeType toReadFromStream = m_compressedDataBufferSize - dataFromBuffer; - SizeType readOffset = zlibData->m_decompressNextOffset + dataFromBuffer; - if (readOffset + toReadFromStream > zlibData->m_decompressLastOffset) - { - // don't read pass the end - AZ_Assert(readOffset <= zlibData->m_decompressLastOffset, "Read offset should always be before the end of stream!"); - toReadFromStream = zlibData->m_decompressLastOffset - readOffset; - } - - SizeType numReadFromStream = 0; - if (toReadFromStream) // if we did not reuse the whole buffer, read some data from the stream - { - GenericStream* baseStream = stream->GetWrappedStream(); - numReadFromStream = baseStream->ReadAtOffset(toReadFromStream, &m_compressedDataBuffer[static_cast(dataFromBuffer)], readOffset); - } - - // update what's actually in the read data buffer. - m_lastReadStream = stream; - m_lastReadStreamOffset = zlibData->m_decompressNextOffset; - m_lastReadStreamSize = dataFromBuffer + numReadFromStream; - return m_lastReadStreamSize; + delete zlibData; + return false; } - /** - * Helper class to find the best seek point for a specific offset. - */ - struct CompareUpper + zlibData->m_seekPoints.resize(hdr->m_numSeekPoints); + SizeType dataToRead = sizeof(CompressorZLibSeekPoint) * static_cast(hdr->m_numSeekPoints); + SizeType seekPointOffset = compressedFileEnd - dataToRead; + AZ_Assert(seekPointOffset <= compressedFileEnd, "We have an invalid archive, this is impossible!"); + GenericStream* baseStream = stream->GetWrappedStream(); + if (baseStream->ReadAtOffset(dataToRead, zlibData->m_seekPoints.data(), seekPointOffset) != dataToRead) { - inline bool operator()(const AZ::u64& offset, const CompressorZLibSeekPoint& sp) const {return offset < sp.m_uncompressedOffset; } - }; - - //========================================================================= - // Read - // [12/13/2012] - //========================================================================= - CompressorZLib::SizeType CompressorZLib::Read(CompressorStream* stream, SizeType byteSize, SizeType offset, void* buffer) + delete zlibData; + return false; + } + for (size_t i = 0; i < zlibData->m_seekPoints.size(); ++i) { - AZ_Assert(stream->GetCompressorData(), "This stream doesn't have decompression enabled!"); - CompressorZLibData* zlibData = static_cast(stream->GetCompressorData()); - AZ_Assert(!zlibData->m_zlib.IsCompressorStarted(), "You can't read/decompress while writing a compressed stream %s!"); + AZStd::endian_swap(zlibData->m_seekPoints[i].m_compressedOffset); + AZStd::endian_swap(zlibData->m_seekPoints[i].m_uncompressedOffset); + } - // check if the request can be finished from the decompressed cache - SizeType numRead = FillFromDecompressCache(zlibData, buffer, byteSize, offset); - if (byteSize == 0) // are we done + if (m_decompressionCachePerStream) + { + zlibData->m_decompressedCache = reinterpret_cast(azmalloc(m_decompressionCachePerStream, m_CompressedDataBufferAlignment, AZ::SystemAllocator, "CompressorZLib")); + } + + zlibData->m_decompressLastOffset = seekPointOffset; // set the start address of the seek points as the last valid read address for the compressed stream. + + zlibData->m_zlib.StartDecompressor(&zlibData->m_zlibHeader); + + stream->SetCompressorData(zlibData); + + return true; + } + + //========================================================================= + // WriteHeaderAndData + // [12/13/2012] + //========================================================================= + bool CompressorZLib::WriteHeaderAndData(CompressorStream* stream) + { + if (!Compressor::WriteHeaderAndData(stream)) + { + return false; + } + + CompressorZLibData* compressorData = static_cast(stream->GetCompressorData()); + CompressorZLibHeader header; + header.m_numSeekPoints = static_cast(compressorData->m_seekPoints.size()); + AZStd::endian_swap(header.m_numSeekPoints); + GenericStream* baseStream = stream->GetWrappedStream(); + if (baseStream->WriteAtOffset(sizeof(header), &header, sizeof(CompressorHeader)) == sizeof(header)) + { + return true; + } + + return false; + } + + //========================================================================= + // FillFromDecompressCache + // [12/14/2012] + //========================================================================= + inline CompressorZLib::SizeType CompressorZLib::FillFromDecompressCache(CompressorZLibData* zlibData, void*& buffer, SizeType& byteSize, SizeType& offset) + { + SizeType firstOffsetInCache = zlibData->m_decompressedCacheOffset; + SizeType lastOffsetInCache = firstOffsetInCache + zlibData->m_decompressedCacheDataSize; + SizeType firstDataOffset = offset; + SizeType lastDataOffset = offset + byteSize; + SizeType numCopied = 0; + if (firstOffsetInCache < lastDataOffset && lastOffsetInCache > firstDataOffset) // check if there is data in the cache + { + size_t copyOffsetStart = 0; + size_t copyOffsetEnd = zlibData->m_decompressedCacheDataSize; + + size_t bufferCopyOffset = 0; + + if (firstOffsetInCache < firstDataOffset) { - return numRead; + copyOffsetStart = static_cast(firstDataOffset - firstOffsetInCache); + } + else + { + bufferCopyOffset = static_cast(firstOffsetInCache - firstDataOffset); } - // find the best seek point for current offset - CompressorZLibData::SeekPointArray::iterator it = AZStd::upper_bound(zlibData->m_seekPoints.begin(), zlibData->m_seekPoints.end(), offset, CompareUpper()); - AZ_Assert(it != zlibData->m_seekPoints.begin(), "This should be impossible, we should always have a valid seek point at 0 offset!"); - const CompressorZLibSeekPoint& bestSeekPoint = *(--it); // get the previous (so it includes the current offset) - - // if read is continuous continue with decompression - bool isJumpToSeekPoint = false; - SizeType lastOffsetInCache = zlibData->m_decompressedCacheOffset + zlibData->m_decompressedCacheDataSize; - if (bestSeekPoint.m_uncompressedOffset > lastOffsetInCache) // if the best seek point is forward, jump forward to it. + if (lastOffsetInCache >= lastDataOffset) { - isJumpToSeekPoint = true; + copyOffsetEnd -= static_cast(lastOffsetInCache - lastDataOffset); } - else if (offset < lastOffsetInCache) // if the seek point is in the past and the requested offset is not in the cache jump back to it. + else if (bufferCopyOffset > 0) // the cache block is in the middle of the data, we can't use it (since we need to split buffer request into 2) { - isJumpToSeekPoint = true; + return 0; } - if (isJumpToSeekPoint) - { - zlibData->m_decompressNextOffset = bestSeekPoint.m_compressedOffset; // set next read point - zlibData->m_decompressedCacheOffset = bestSeekPoint.m_uncompressedOffset; // set uncompressed offset - zlibData->m_decompressedCacheDataSize = 0; // invalidate the cache - zlibData->m_zlib.ResetDecompressor(&zlibData->m_zlibHeader); // reset decompressor and setup the header. - } + numCopied = copyOffsetEnd - copyOffsetStart; + memcpy(static_cast(buffer) + bufferCopyOffset, zlibData->m_decompressedCache + copyOffsetStart, static_cast(numCopied)); - // decompress and move forward until the request is done - while (byteSize > 0) + // adjust pointers and sizes + byteSize -= numCopied; + if (bufferCopyOffset == 0) { - // fill buffer with compressed data - SizeType compressedDataSize = FillCompressedBuffer(stream); - if (compressedDataSize == 0) + // copied in the start + buffer = reinterpret_cast(buffer) + numCopied; + offset += numCopied; + } + } + + return numCopied; + } + + //========================================================================= + // FillFromCompressedCache + // [12/17/2012] + //========================================================================= + inline CompressorZLib::SizeType CompressorZLib::FillCompressedBuffer(CompressorStream* stream) + { + CompressorZLibData* zlibData = static_cast(stream->GetCompressorData()); + SizeType dataFromBuffer = 0; + if (stream == m_lastReadStream) // if the buffer is filled with data from the current stream, try to reuse + { + if (zlibData->m_decompressNextOffset > m_lastReadStreamOffset) + { + SizeType offsetInCache = zlibData->m_decompressNextOffset - m_lastReadStreamOffset; + if (offsetInCache < m_lastReadStreamSize) // last check if there is data overlap { - return numRead; // we are done reading and obviously we did not managed to read all data + // copy the usable part at the start of the + SizeType toMove = m_lastReadStreamSize - offsetInCache; + memmove(m_compressedDataBuffer, &m_compressedDataBuffer[static_cast(offsetInCache)], static_cast(toMove)); + dataFromBuffer += toMove; } - unsigned int processedCompressedData = 0; - while (byteSize > 0 && processedCompressedData < compressedDataSize) // decompressed data either until we are done with the request (byteSize == 0) or we need to fill the compression buffer again. - { - // if we have data in the cache move to the next offset, we always move forward by default. - zlibData->m_decompressedCacheOffset += zlibData->m_decompressedCacheDataSize; - - // decompress in the cache buffer - u32 availDecompressedCacheSize = m_decompressionCachePerStream; // reset buffer size - unsigned int processed = zlibData->m_zlib.Decompress(&m_compressedDataBuffer[processedCompressedData], static_cast(compressedDataSize) - processedCompressedData, zlibData->m_decompressedCache, availDecompressedCacheSize); - zlibData->m_decompressedCacheDataSize = m_decompressionCachePerStream - availDecompressedCacheSize; - if (processed == 0) - { - break; // we processed everything we could, load more compressed data. - } - processedCompressedData += processed; - // fill what we can from the cache - numRead += FillFromDecompressCache(zlibData, buffer, byteSize, offset); - } - // update next read position the the compressed stream - zlibData->m_decompressNextOffset += processedCompressedData; } + } + + SizeType toReadFromStream = m_compressedDataBufferSize - dataFromBuffer; + SizeType readOffset = zlibData->m_decompressNextOffset + dataFromBuffer; + if (readOffset + toReadFromStream > zlibData->m_decompressLastOffset) + { + // don't read pass the end + AZ_Assert(readOffset <= zlibData->m_decompressLastOffset, "Read offset should always be before the end of stream!"); + toReadFromStream = zlibData->m_decompressLastOffset - readOffset; + } + + SizeType numReadFromStream = 0; + if (toReadFromStream) // if we did not reuse the whole buffer, read some data from the stream + { + GenericStream* baseStream = stream->GetWrappedStream(); + numReadFromStream = baseStream->ReadAtOffset(toReadFromStream, &m_compressedDataBuffer[static_cast(dataFromBuffer)], readOffset); + } + + // update what's actually in the read data buffer. + m_lastReadStream = stream; + m_lastReadStreamOffset = zlibData->m_decompressNextOffset; + m_lastReadStreamSize = dataFromBuffer + numReadFromStream; + return m_lastReadStreamSize; + } + + /** + * Helper class to find the best seek point for a specific offset. + */ + struct CompareUpper + { + inline bool operator()(const AZ::u64& offset, const CompressorZLibSeekPoint& sp) const {return offset < sp.m_uncompressedOffset; } + }; + + //========================================================================= + // Read + // [12/13/2012] + //========================================================================= + CompressorZLib::SizeType CompressorZLib::Read(CompressorStream* stream, SizeType byteSize, SizeType offset, void* buffer) + { + AZ_Assert(stream->GetCompressorData(), "This stream doesn't have decompression enabled!"); + CompressorZLibData* zlibData = static_cast(stream->GetCompressorData()); + AZ_Assert(!zlibData->m_zlib.IsCompressorStarted(), "You can't read/decompress while writing a compressed stream %s!"); + + // check if the request can be finished from the decompressed cache + SizeType numRead = FillFromDecompressCache(zlibData, buffer, byteSize, offset); + if (byteSize == 0) // are we done + { return numRead; } - //========================================================================= - // Write - // [12/13/2012] - //========================================================================= - CompressorZLib::SizeType CompressorZLib::Write(CompressorStream* stream, SizeType byteSize, const void* data, SizeType offset) + // find the best seek point for current offset + CompressorZLibData::SeekPointArray::iterator it = AZStd::upper_bound(zlibData->m_seekPoints.begin(), zlibData->m_seekPoints.end(), offset, CompareUpper()); + AZ_Assert(it != zlibData->m_seekPoints.begin(), "This should be impossible, we should always have a valid seek point at 0 offset!"); + const CompressorZLibSeekPoint& bestSeekPoint = *(--it); // get the previous (so it includes the current offset) + + // if read is continuous continue with decompression + bool isJumpToSeekPoint = false; + SizeType lastOffsetInCache = zlibData->m_decompressedCacheOffset + zlibData->m_decompressedCacheDataSize; + if (bestSeekPoint.m_uncompressedOffset > lastOffsetInCache) // if the best seek point is forward, jump forward to it. { - (void)offset; + isJumpToSeekPoint = true; + } + else if (offset < lastOffsetInCache) // if the seek point is in the past and the requested offset is not in the cache jump back to it. + { + isJumpToSeekPoint = true; + } - AZ_Assert(stream && stream->GetCompressorData(), "This stream doesn't have compression enabled! Call Stream::WriteCompressed after you create the file!"); - AZ_Assert(offset == SizeType(-1) || offset == stream->GetCurPos(), "We can write compressed data only at the end of the stream!"); + if (isJumpToSeekPoint) + { + zlibData->m_decompressNextOffset = bestSeekPoint.m_compressedOffset; // set next read point + zlibData->m_decompressedCacheOffset = bestSeekPoint.m_uncompressedOffset; // set uncompressed offset + zlibData->m_decompressedCacheDataSize = 0; // invalidate the cache + zlibData->m_zlib.ResetDecompressor(&zlibData->m_zlibHeader); // reset decompressor and setup the header. + } - m_lastReadStream = nullptr; // invalidate last read position, otherwise m_dataBuffer will be corrupted (as we are about to write in it). - - CompressorZLibData* zlibData = static_cast(stream->GetCompressorData()); - AZ_Assert(!zlibData->m_zlib.IsDecompressorStarted(), "You can't write while reading/decompressing a compressed stream!"); - - const u8* bytes = reinterpret_cast(data); - unsigned int dataToCompress = static_cast(byteSize); - while (dataToCompress != 0) + // decompress and move forward until the request is done + while (byteSize > 0) + { + // fill buffer with compressed data + SizeType compressedDataSize = FillCompressedBuffer(stream); + if (compressedDataSize == 0) { - unsigned int oldDataToCompress = dataToCompress; - unsigned int compressedSize = zlibData->m_zlib.Compress(bytes, dataToCompress, m_compressedDataBuffer, m_compressedDataBufferSize); - if (compressedSize) - { - GenericStream* baseStream = stream->GetWrappedStream(); - SizeType numWritten = baseStream->Write(compressedSize, m_compressedDataBuffer); - if (numWritten != compressedSize) - { - return numWritten; // error we could not write all data - } - } - bytes += oldDataToCompress - dataToCompress; + return numRead; // we are done reading and obviously we did not managed to read all data } - zlibData->m_uncompressedSize += byteSize; - - if (zlibData->m_autoSeekSize > 0) + unsigned int processedCompressedData = 0; + while (byteSize > 0 && processedCompressedData < compressedDataSize) // decompressed data either until we are done with the request (byteSize == 0) or we need to fill the compression buffer again. { - // insert a seek point if needed. - if (zlibData->m_seekPoints.empty()) + // if we have data in the cache move to the next offset, we always move forward by default. + zlibData->m_decompressedCacheOffset += zlibData->m_decompressedCacheDataSize; + + // decompress in the cache buffer + u32 availDecompressedCacheSize = m_decompressionCachePerStream; // reset buffer size + unsigned int processed = zlibData->m_zlib.Decompress(&m_compressedDataBuffer[processedCompressedData], static_cast(compressedDataSize) - processedCompressedData, zlibData->m_decompressedCache, availDecompressedCacheSize); + zlibData->m_decompressedCacheDataSize = m_decompressionCachePerStream - availDecompressedCacheSize; + if (processed == 0) { - if (zlibData->m_uncompressedSize >= zlibData->m_autoSeekSize) - { - WriteSeekPoint(stream); - } + break; // we processed everything we could, load more compressed data. } - else if ((zlibData->m_uncompressedSize - zlibData->m_seekPoints.back().m_uncompressedOffset) > zlibData->m_autoSeekSize) + processedCompressedData += processed; + // fill what we can from the cache + numRead += FillFromDecompressCache(zlibData, buffer, byteSize, offset); + } + // update next read position the the compressed stream + zlibData->m_decompressNextOffset += processedCompressedData; + } + return numRead; + } + + //========================================================================= + // Write + // [12/13/2012] + //========================================================================= + CompressorZLib::SizeType CompressorZLib::Write(CompressorStream* stream, SizeType byteSize, const void* data, SizeType offset) + { + (void)offset; + + AZ_Assert(stream && stream->GetCompressorData(), "This stream doesn't have compression enabled! Call Stream::WriteCompressed after you create the file!"); + AZ_Assert(offset == SizeType(-1) || offset == stream->GetCurPos(), "We can write compressed data only at the end of the stream!"); + + m_lastReadStream = nullptr; // invalidate last read position, otherwise m_dataBuffer will be corrupted (as we are about to write in it). + + CompressorZLibData* zlibData = static_cast(stream->GetCompressorData()); + AZ_Assert(!zlibData->m_zlib.IsDecompressorStarted(), "You can't write while reading/decompressing a compressed stream!"); + + const u8* bytes = reinterpret_cast(data); + unsigned int dataToCompress = static_cast(byteSize); + while (dataToCompress != 0) + { + unsigned int oldDataToCompress = dataToCompress; + unsigned int compressedSize = zlibData->m_zlib.Compress(bytes, dataToCompress, m_compressedDataBuffer, m_compressedDataBufferSize); + if (compressedSize) + { + GenericStream* baseStream = stream->GetWrappedStream(); + SizeType numWritten = baseStream->Write(compressedSize, m_compressedDataBuffer); + if (numWritten != compressedSize) + { + return numWritten; // error we could not write all data + } + } + bytes += oldDataToCompress - dataToCompress; + } + zlibData->m_uncompressedSize += byteSize; + + if (zlibData->m_autoSeekSize > 0) + { + // insert a seek point if needed. + if (zlibData->m_seekPoints.empty()) + { + if (zlibData->m_uncompressedSize >= zlibData->m_autoSeekSize) { WriteSeekPoint(stream); } } - return byteSize; + else if ((zlibData->m_uncompressedSize - zlibData->m_seekPoints.back().m_uncompressedOffset) > zlibData->m_autoSeekSize) + { + WriteSeekPoint(stream); + } } + return byteSize; + } - //========================================================================= - // WriteSeekPoint - // [12/13/2012] - //========================================================================= - bool CompressorZLib::WriteSeekPoint(CompressorStream* stream) + //========================================================================= + // WriteSeekPoint + // [12/13/2012] + //========================================================================= + bool CompressorZLib::WriteSeekPoint(CompressorStream* stream) + { + AZ_Assert(stream && stream->GetCompressorData(), "This stream doesn't have compression enabled! Call Stream::WriteCompressed after you create the file!"); + CompressorZLibData* zlibData = static_cast(stream->GetCompressorData()); + + m_lastReadStream = nullptr; // invalidate last read position, otherwise m_dataBuffer will be corrupted (as we are about to write in it). + + unsigned int compressedSize; + unsigned int dataToCompress = 0; + do { - AZ_Assert(stream && stream->GetCompressorData(), "This stream doesn't have compression enabled! Call Stream::WriteCompressed after you create the file!"); - CompressorZLibData* zlibData = static_cast(stream->GetCompressorData()); + compressedSize = zlibData->m_zlib.Compress(nullptr, dataToCompress, m_compressedDataBuffer, m_compressedDataBufferSize, ZLib::FT_FULL_FLUSH); + if (compressedSize) + { + GenericStream* baseStream = stream->GetWrappedStream(); + SizeType numWritten = baseStream->Write(compressedSize, m_compressedDataBuffer); + if (numWritten != compressedSize) + { + return false; // error we wrote less than than requested! + } + } + } while (dataToCompress != 0); + CompressorZLibSeekPoint sp; + sp.m_compressedOffset = stream->GetLength(); + sp.m_uncompressedOffset = zlibData->m_uncompressedSize; + zlibData->m_seekPoints.push_back(sp); + return true; + } + + //========================================================================= + // StartCompressor + // [12/13/2012] + //========================================================================= + bool CompressorZLib::StartCompressor(CompressorStream* stream, int compressionLevel, SizeType autoSeekDataSize) + { + AZ_Assert(stream && stream->GetCompressorData() == nullptr, "Stream has compressor already enabled!"); + + AcquireDataBuffer(); + + CompressorZLibData* zlibData = aznew CompressorZLibData; + zlibData->m_compressor = this; + zlibData->m_zlibHeader = 0; // not used for compression + zlibData->m_uncompressedSize = 0; + zlibData->m_autoSeekSize = autoSeekDataSize; + compressionLevel = AZ::GetClamp(compressionLevel, 1, 9); // remap to zlib levels + + zlibData->m_zlib.StartCompressor(compressionLevel); + + stream->SetCompressorData(zlibData); + + if (WriteHeaderAndData(stream)) + { + // add the first and always present seek point at the start of the compressed stream + CompressorZLibSeekPoint sp; + sp.m_compressedOffset = sizeof(CompressorHeader) + sizeof(CompressorZLibHeader) + sizeof(zlibData->m_zlibHeader); + sp.m_uncompressedOffset = 0; + zlibData->m_seekPoints.push_back(sp); + return true; + } + return false; + } + + //========================================================================= + // Close + // [12/13/2012] + //========================================================================= + bool CompressorZLib::Close(CompressorStream* stream) + { + AZ_Assert(stream->IsOpen(), "Stream is not open to be closed!"); + + CompressorZLibData* zlibData = static_cast(stream->GetCompressorData()); + GenericStream* baseStream = stream->GetWrappedStream(); + + bool result = true; + if (zlibData->m_zlib.IsCompressorStarted()) + { m_lastReadStream = nullptr; // invalidate last read position, otherwise m_dataBuffer will be corrupted (as we are about to write in it). + // flush all compressed data unsigned int compressedSize; unsigned int dataToCompress = 0; do { - compressedSize = zlibData->m_zlib.Compress(nullptr, dataToCompress, m_compressedDataBuffer, m_compressedDataBufferSize, ZLib::FT_FULL_FLUSH); + compressedSize = zlibData->m_zlib.Compress(nullptr, dataToCompress, m_compressedDataBuffer, m_compressedDataBufferSize, ZLib::FT_FINISH); if (compressedSize) { - GenericStream* baseStream = stream->GetWrappedStream(); - SizeType numWritten = baseStream->Write(compressedSize, m_compressedDataBuffer); - if (numWritten != compressedSize) - { - return false; // error we wrote less than than requested! - } + baseStream->Write(compressedSize, m_compressedDataBuffer); } } while (dataToCompress != 0); - CompressorZLibSeekPoint sp; - sp.m_compressedOffset = stream->GetLength(); - sp.m_uncompressedOffset = zlibData->m_uncompressedSize; - zlibData->m_seekPoints.push_back(sp); - return true; - } - - //========================================================================= - // StartCompressor - // [12/13/2012] - //========================================================================= - bool CompressorZLib::StartCompressor(CompressorStream* stream, int compressionLevel, SizeType autoSeekDataSize) - { - AZ_Assert(stream && stream->GetCompressorData() == nullptr, "Stream has compressor already enabled!"); - - AcquireDataBuffer(); - - CompressorZLibData* zlibData = aznew CompressorZLibData; - zlibData->m_compressor = this; - zlibData->m_zlibHeader = 0; // not used for compression - zlibData->m_uncompressedSize = 0; - zlibData->m_autoSeekSize = autoSeekDataSize; - compressionLevel = AZ::GetClamp(compressionLevel, 1, 9); // remap to zlib levels - - zlibData->m_zlib.StartCompressor(compressionLevel); - - stream->SetCompressorData(zlibData); - - if (WriteHeaderAndData(stream)) + result = WriteHeaderAndData(stream); + if (result) { - // add the first and always present seek point at the start of the compressed stream - CompressorZLibSeekPoint sp; - sp.m_compressedOffset = sizeof(CompressorHeader) + sizeof(CompressorZLibHeader) + sizeof(zlibData->m_zlibHeader); - sp.m_uncompressedOffset = 0; - zlibData->m_seekPoints.push_back(sp); - return true; - } - return false; - } - - //========================================================================= - // Close - // [12/13/2012] - //========================================================================= - bool CompressorZLib::Close(CompressorStream* stream) - { - AZ_Assert(stream->IsOpen(), "Stream is not open to be closed!"); - - CompressorZLibData* zlibData = static_cast(stream->GetCompressorData()); - GenericStream* baseStream = stream->GetWrappedStream(); - - bool result = true; - if (zlibData->m_zlib.IsCompressorStarted()) - { - m_lastReadStream = nullptr; // invalidate last read position, otherwise m_dataBuffer will be corrupted (as we are about to write in it). - - // flush all compressed data - unsigned int compressedSize; - unsigned int dataToCompress = 0; - do + // now write the seek points and the end of the file + for (size_t i = 0; i < zlibData->m_seekPoints.size(); ++i) { - compressedSize = zlibData->m_zlib.Compress(nullptr, dataToCompress, m_compressedDataBuffer, m_compressedDataBufferSize, ZLib::FT_FINISH); - if (compressedSize) - { - baseStream->Write(compressedSize, m_compressedDataBuffer); - } - } while (dataToCompress != 0); - - result = WriteHeaderAndData(stream); - if (result) - { - // now write the seek points and the end of the file - for (size_t i = 0; i < zlibData->m_seekPoints.size(); ++i) - { - AZStd::endian_swap(zlibData->m_seekPoints[i].m_compressedOffset); - AZStd::endian_swap(zlibData->m_seekPoints[i].m_uncompressedOffset); - } - SizeType dataToWrite = zlibData->m_seekPoints.size() * sizeof(CompressorZLibSeekPoint); - baseStream->Seek(0U, GenericStream::SeekMode::ST_SEEK_END); - result = (baseStream->Write(dataToWrite, zlibData->m_seekPoints.data()) == dataToWrite); + AZStd::endian_swap(zlibData->m_seekPoints[i].m_compressedOffset); + AZStd::endian_swap(zlibData->m_seekPoints[i].m_uncompressedOffset); } + SizeType dataToWrite = zlibData->m_seekPoints.size() * sizeof(CompressorZLibSeekPoint); + baseStream->Seek(0U, GenericStream::SeekMode::ST_SEEK_END); + result = (baseStream->Write(dataToWrite, zlibData->m_seekPoints.data()) == dataToWrite); } - else - { - if (m_lastReadStream == stream) - { - m_lastReadStream = nullptr; // invalidate the data in m_dataBuffer if it was from the current stream. - } - } - - // if we have decompressor cache delete it - if (zlibData->m_decompressedCache) - { - azfree(zlibData->m_decompressedCache, AZ::SystemAllocator, m_decompressionCachePerStream, m_CompressedDataBufferAlignment); - } - - ReleaseDataBuffer(); - - // last step reset strream compressor data. - stream->SetCompressorData(nullptr); - return result; } - - //========================================================================= - // AcquireDataBuffer - // [2/27/2013] - //========================================================================= - void CompressorZLib::AcquireDataBuffer() + else { - if (m_compressedDataBuffer == nullptr) + if (m_lastReadStream == stream) { - AZ_Assert(m_compressedDataBufferUseCount == 0, "Buffer usecount should be 0 if the buffer is NULL"); - m_compressedDataBuffer = reinterpret_cast(azmalloc(m_compressedDataBufferSize, m_CompressedDataBufferAlignment, AZ::SystemAllocator, "CompressorZLib")); - m_lastReadStream = nullptr; // reset the cache info in the m_dataBuffer + m_lastReadStream = nullptr; // invalidate the data in m_dataBuffer if it was from the current stream. } - ++m_compressedDataBufferUseCount; } - //========================================================================= - // ReleaseDataBuffer - // [2/27/2013] - //========================================================================= - void CompressorZLib::ReleaseDataBuffer() + // if we have decompressor cache delete it + if (zlibData->m_decompressedCache) { - --m_compressedDataBufferUseCount; - if (m_compressedDataBufferUseCount == 0) - { - AZ_Assert(m_compressedDataBuffer != nullptr, "Invalid data buffer! We should have a non null pointer!"); - azfree(m_compressedDataBuffer, AZ::SystemAllocator, m_compressedDataBufferSize, m_CompressedDataBufferAlignment); - m_compressedDataBuffer = nullptr; - m_lastReadStream = nullptr; // reset the cache info in the m_dataBuffer - } + azfree(zlibData->m_decompressedCache, AZ::SystemAllocator, m_decompressionCachePerStream, m_CompressedDataBufferAlignment); } - } // namespace IO -} // namespace AZ + + ReleaseDataBuffer(); + + // last step reset strream compressor data. + stream->SetCompressorData(nullptr); + return result; + } + + //========================================================================= + // AcquireDataBuffer + // [2/27/2013] + //========================================================================= + void CompressorZLib::AcquireDataBuffer() + { + if (m_compressedDataBuffer == nullptr) + { + AZ_Assert(m_compressedDataBufferUseCount == 0, "Buffer usecount should be 0 if the buffer is NULL"); + m_compressedDataBuffer = reinterpret_cast(azmalloc(m_compressedDataBufferSize, m_CompressedDataBufferAlignment, AZ::SystemAllocator, "CompressorZLib")); + m_lastReadStream = nullptr; // reset the cache info in the m_dataBuffer + } + ++m_compressedDataBufferUseCount; + } + + //========================================================================= + // ReleaseDataBuffer + // [2/27/2013] + //========================================================================= + void CompressorZLib::ReleaseDataBuffer() + { + --m_compressedDataBufferUseCount; + if (m_compressedDataBufferUseCount == 0) + { + AZ_Assert(m_compressedDataBuffer != nullptr, "Invalid data buffer! We should have a non null pointer!"); + azfree(m_compressedDataBuffer, AZ::SystemAllocator, m_compressedDataBufferSize, m_CompressedDataBufferAlignment); + m_compressedDataBuffer = nullptr; + m_lastReadStream = nullptr; // reset the cache info in the m_dataBuffer + } + } +} // namespace AZ::IO #endif // #if !defined(AZCORE_EXCLUDE_ZLIB) diff --git a/Code/Framework/AzCore/AzCore/IO/CompressorZStd.cpp b/Code/Framework/AzCore/AzCore/IO/CompressorZStd.cpp index b1631d2d22..91f380d73b 100644 --- a/Code/Framework/AzCore/AzCore/IO/CompressorZStd.cpp +++ b/Code/Framework/AzCore/AzCore/IO/CompressorZStd.cpp @@ -14,478 +14,475 @@ #include #include -namespace AZ +namespace AZ::IO { - namespace IO + CompressorZStd::CompressorZStd(unsigned int decompressionCachePerStream, unsigned int dataBufferSize) + : m_compressedDataBufferSize(dataBufferSize) + , m_decompressionCachePerStream(decompressionCachePerStream) + { - CompressorZStd::CompressorZStd(unsigned int decompressionCachePerStream, unsigned int dataBufferSize) - : m_compressedDataBufferSize(dataBufferSize) - , m_decompressionCachePerStream(decompressionCachePerStream) + AZ_Assert((dataBufferSize % (32 * 1024)) == 0, "Data buffer size %d must be multiple of 32 KB.", dataBufferSize); + AZ_Assert((decompressionCachePerStream % (32 * 1024)) == 0, "Decompress cache size %d must be multiple of 32 KB.", decompressionCachePerStream); + } + CompressorZStd::~CompressorZStd() + { + AZ_Warning("IO", m_compressedDataBufferUseCount == 0, "CompressorZStd has it's data buffer still referenced, it means that %d compressed streams have NOT closed. Freeing data...", m_compressedDataBufferUseCount); + while (m_compressedDataBufferUseCount) { - AZ_Assert((dataBufferSize % (32 * 1024)) == 0, "Data buffer size %d must be multiple of 32 KB.", dataBufferSize); - AZ_Assert((decompressionCachePerStream % (32 * 1024)) == 0, "Decompress cache size %d must be multiple of 32 KB.", decompressionCachePerStream); + ReleaseDataBuffer(); } + } - CompressorZStd::~CompressorZStd() + AZ::u32 CompressorZStd::TypeId() + { + return AZ_CRC("ZStd", 0x72fd505e); + } + + bool CompressorZStd::ReadHeaderAndData(CompressorStream* stream, AZ::u8* data, unsigned int dataSize) + { + if (stream->GetCompressorData() != nullptr) // we already have compressor data { - AZ_Warning("IO", m_compressedDataBufferUseCount == 0, "CompressorZStd has it's data buffer still referenced, it means that %d compressed streams have NOT closed. Freeing data...", m_compressedDataBufferUseCount); - while (m_compressedDataBufferUseCount) - { - ReleaseDataBuffer(); - } - } - - AZ::u32 CompressorZStd::TypeId() - { - return AZ_CRC("ZStd", 0x72fd505e); - } - - bool CompressorZStd::ReadHeaderAndData(CompressorStream* stream, AZ::u8* data, unsigned int dataSize) - { - if (stream->GetCompressorData() != nullptr) // we already have compressor data - { - return false; - } - - // Read the ZStd header should be after the default compression header... - // We should not be in this function otherwise. - if (dataSize < sizeof(CompressorZStdHeader) + sizeof(ZStd::Header)) - { - AZ_Error("CompressorZStd", false, "We did not read enough data, we have only %d bytes left in the buffer and we need %d.", dataSize, sizeof(CompressorZStdHeader) + sizeof(ZStd::Header)); - return false; - } - - AcquireDataBuffer(); - - CompressorZStdHeader* hdr = reinterpret_cast(data); - dataSize -= sizeof(CompressorZStdHeader); - data += sizeof(CompressorZStdHeader); - - AZStd::unique_ptr zstdData = AZStd::make_unique(); - zstdData->m_compressor = this; - zstdData->m_uncompressedSize = 0; - zstdData->m_zstdHeader = *reinterpret_cast(data); - dataSize -= sizeof(zstdData->m_zstdHeader); - data += sizeof(zstdData->m_zstdHeader); - zstdData->m_decompressNextOffset = sizeof(CompressorHeader) + sizeof(CompressorZStdHeader) + sizeof(ZStd::Header); // start after the headers - - AZ_Error("CompressorZStd", hdr->m_numSeekPoints > 0, "We should have at least one seek point for the entire stream."); - - // go the end of the file and read all sync points. - SizeType compressedFileEnd = stream->GetLength(); - if (compressedFileEnd == 0) - { - return false; - } - - zstdData->m_seekPoints.resize(hdr->m_numSeekPoints); - SizeType dataToRead = sizeof(CompressorZStdSeekPoint) * static_cast(hdr->m_numSeekPoints); - SizeType seekPointOffset = compressedFileEnd - dataToRead; - - if (seekPointOffset > compressedFileEnd) - { - AZ_Error("CompressorZStd", false, "We have an invalid archive, this is impossible."); - return false; - } - - GenericStream* baseStream = stream->GetWrappedStream(); - if (baseStream->ReadAtOffset(dataToRead, zstdData->m_seekPoints.data(), seekPointOffset) != dataToRead) - { - return false; - } - - if (m_decompressionCachePerStream) - { - zstdData->m_decompressedCache = reinterpret_cast(azmalloc(m_decompressionCachePerStream, m_CompressedDataBufferAlignment, AZ::SystemAllocator, "CompressorZStd")); - } - - zstdData->m_decompressLastOffset = seekPointOffset; // set the start address of the seek points as the last valid read address for the compressed stream. - - zstdData->m_zstd.StartDecompressor(); - - stream->SetCompressorData(zstdData.release()); - - return true; - } - - bool CompressorZStd::WriteHeaderAndData(CompressorStream* stream) - { - if (!Compressor::WriteHeaderAndData(stream)) - { - return false; - } - - CompressorZStdData* compressorData = static_cast(stream->GetCompressorData()); - CompressorZStdHeader header; - header.m_numSeekPoints = aznumeric_caster(compressorData->m_seekPoints.size()); - GenericStream* baseStream = stream->GetWrappedStream(); - if (baseStream->WriteAtOffset(sizeof(header), &header, sizeof(CompressorHeader)) == sizeof(header)) - { - return true; - } - return false; } - inline CompressorZStd::SizeType CompressorZStd::FillFromDecompressCache(CompressorZStdData* zstdData, void*& buffer, SizeType& byteSize, SizeType& offset) + // Read the ZStd header should be after the default compression header... + // We should not be in this function otherwise. + if (dataSize < sizeof(CompressorZStdHeader) + sizeof(ZStd::Header)) { - SizeType firstOffsetInCache = zstdData->m_decompressedCacheOffset; - SizeType lastOffsetInCache = firstOffsetInCache + zstdData->m_decompressedCacheDataSize; - SizeType firstDataOffset = offset; - SizeType lastDataOffset = offset + byteSize; - SizeType numCopied = 0; - if (firstOffsetInCache < lastDataOffset && lastOffsetInCache >= firstDataOffset) // check if there is data in the cache - { - size_t copyOffsetStart = 0; - size_t copyOffsetEnd = zstdData->m_decompressedCacheDataSize; - - size_t bufferCopyOffset = 0; - - if (firstOffsetInCache < firstDataOffset) - { - copyOffsetStart = aznumeric_caster(firstDataOffset - firstOffsetInCache); - } - else - { - bufferCopyOffset = aznumeric_caster(firstOffsetInCache - firstDataOffset); - } - - if (lastOffsetInCache >= lastDataOffset) - { - copyOffsetEnd -= static_cast(lastOffsetInCache - lastDataOffset); - } - else if (bufferCopyOffset > 0) // the cache block is in the middle of the data, we can't use it (since we need to split buffer request into 2) - { - return 0; - } - - numCopied = copyOffsetEnd - copyOffsetStart; - memcpy(static_cast(buffer) + bufferCopyOffset, zstdData->m_decompressedCache + copyOffsetStart, static_cast(numCopied)); - - // adjust pointers and sizes - byteSize -= numCopied; - if (bufferCopyOffset == 0) - { - // copied in the start - buffer = reinterpret_cast(buffer) + numCopied; - offset += numCopied; - } - } - - return numCopied; + AZ_Error("CompressorZStd", false, "We did not read enough data, we have only %d bytes left in the buffer and we need %d.", dataSize, sizeof(CompressorZStdHeader) + sizeof(ZStd::Header)); + return false; } - inline CompressorZStd::SizeType CompressorZStd::FillCompressedBuffer(CompressorStream* stream) + AcquireDataBuffer(); + + CompressorZStdHeader* hdr = reinterpret_cast(data); + dataSize -= sizeof(CompressorZStdHeader); + data += sizeof(CompressorZStdHeader); + + AZStd::unique_ptr zstdData = AZStd::make_unique(); + zstdData->m_compressor = this; + zstdData->m_uncompressedSize = 0; + zstdData->m_zstdHeader = *reinterpret_cast(data); + dataSize -= sizeof(zstdData->m_zstdHeader); + data += sizeof(zstdData->m_zstdHeader); + zstdData->m_decompressNextOffset = sizeof(CompressorHeader) + sizeof(CompressorZStdHeader) + sizeof(ZStd::Header); // start after the headers + + AZ_Error("CompressorZStd", hdr->m_numSeekPoints > 0, "We should have at least one seek point for the entire stream."); + + // go the end of the file and read all sync points. + SizeType compressedFileEnd = stream->GetLength(); + if (compressedFileEnd == 0) { - CompressorZStdData* zstdData = static_cast(stream->GetCompressorData()); - SizeType dataFromBuffer = 0; - if (stream == m_lastReadStream) // if the buffer is filled with data from the current stream, try to reuse - { - if (zstdData->m_decompressNextOffset > m_lastReadStreamOffset) - { - SizeType offsetInCache = zstdData->m_decompressNextOffset - m_lastReadStreamOffset; - if (offsetInCache < m_lastReadStreamSize) // last check if there is data overlap - { - // copy the usable part at the start of the buffer - SizeType toMove = m_lastReadStreamSize - offsetInCache; - memcpy(m_compressedDataBuffer, &m_compressedDataBuffer[static_cast(offsetInCache)], static_cast(toMove)); - dataFromBuffer += toMove; - } - } - } - - SizeType toReadFromStream = m_compressedDataBufferSize - dataFromBuffer; - SizeType readOffset = zstdData->m_decompressNextOffset + dataFromBuffer; - if (readOffset + toReadFromStream > zstdData->m_decompressLastOffset) - { - // don't read past the end - AZ_Assert(readOffset <= zstdData->m_decompressLastOffset, "Read offset should always be before the end of stream."); - toReadFromStream = zstdData->m_decompressLastOffset - readOffset; - } - - SizeType numReadFromStream = 0; - if (toReadFromStream) // if we did not reuse the whole buffer, read some data from the stream - { - GenericStream* baseStream = stream->GetWrappedStream(); - numReadFromStream = baseStream->ReadAtOffset(toReadFromStream, &m_compressedDataBuffer[static_cast(dataFromBuffer)], readOffset); - } - - // update what's actually in the read data buffer. - m_lastReadStream = stream; - m_lastReadStreamOffset = zstdData->m_decompressNextOffset; - m_lastReadStreamSize = dataFromBuffer + numReadFromStream; - return m_lastReadStreamSize; + return false; } - struct ZStdCompareUpper + zstdData->m_seekPoints.resize(hdr->m_numSeekPoints); + SizeType dataToRead = sizeof(CompressorZStdSeekPoint) * static_cast(hdr->m_numSeekPoints); + SizeType seekPointOffset = compressedFileEnd - dataToRead; + + if (seekPointOffset > compressedFileEnd) { - bool operator()(const AZ::u64& offset, const CompressorZStdSeekPoint& sp) const - { - return offset < sp.m_uncompressedOffset; - } - }; + AZ_Error("CompressorZStd", false, "We have an invalid archive, this is impossible."); + return false; + } - CompressorZStd::SizeType CompressorZStd::Read(CompressorStream* stream, SizeType byteSize, SizeType offset, void* buffer) + GenericStream* baseStream = stream->GetWrappedStream(); + if (baseStream->ReadAtOffset(dataToRead, zstdData->m_seekPoints.data(), seekPointOffset) != dataToRead) { - AZ_Assert(stream->GetCompressorData(), "This stream doesn't have decompression enabled."); - CompressorZStdData* zstdData = static_cast(stream->GetCompressorData()); - AZ_Assert(!zstdData->m_zstd.IsCompressorStarted(), "You can't read/decompress while writing a compressed stream %s."); + return false; + } - // check if the request can be finished from the decompressed cache - SizeType numRead = FillFromDecompressCache(zstdData, buffer, byteSize, offset); - if (byteSize == 0) // are we done + if (m_decompressionCachePerStream) + { + zstdData->m_decompressedCache = reinterpret_cast(azmalloc(m_decompressionCachePerStream, m_CompressedDataBufferAlignment, AZ::SystemAllocator, "CompressorZStd")); + } + + zstdData->m_decompressLastOffset = seekPointOffset; // set the start address of the seek points as the last valid read address for the compressed stream. + + zstdData->m_zstd.StartDecompressor(); + + stream->SetCompressorData(zstdData.release()); + + return true; + } + + bool CompressorZStd::WriteHeaderAndData(CompressorStream* stream) + { + if (!Compressor::WriteHeaderAndData(stream)) + { + return false; + } + + CompressorZStdData* compressorData = static_cast(stream->GetCompressorData()); + CompressorZStdHeader header; + header.m_numSeekPoints = aznumeric_caster(compressorData->m_seekPoints.size()); + GenericStream* baseStream = stream->GetWrappedStream(); + if (baseStream->WriteAtOffset(sizeof(header), &header, sizeof(CompressorHeader)) == sizeof(header)) + { + return true; + } + + return false; + } + + inline CompressorZStd::SizeType CompressorZStd::FillFromDecompressCache(CompressorZStdData* zstdData, void*& buffer, SizeType& byteSize, SizeType& offset) + { + SizeType firstOffsetInCache = zstdData->m_decompressedCacheOffset; + SizeType lastOffsetInCache = firstOffsetInCache + zstdData->m_decompressedCacheDataSize; + SizeType firstDataOffset = offset; + SizeType lastDataOffset = offset + byteSize; + SizeType numCopied = 0; + if (firstOffsetInCache < lastDataOffset && lastOffsetInCache >= firstDataOffset) // check if there is data in the cache + { + size_t copyOffsetStart = 0; + size_t copyOffsetEnd = zstdData->m_decompressedCacheDataSize; + + size_t bufferCopyOffset = 0; + + if (firstOffsetInCache < firstDataOffset) { - return numRead; + copyOffsetStart = aznumeric_caster(firstDataOffset - firstOffsetInCache); + } + else + { + bufferCopyOffset = aznumeric_caster(firstOffsetInCache - firstDataOffset); } - // find the best seek point for current offset - CompressorZStdData::SeekPointArray::iterator it = AZStd::upper_bound(zstdData->m_seekPoints.begin(), zstdData->m_seekPoints.end(), offset, ZStdCompareUpper()); - AZ_Assert(it != zstdData->m_seekPoints.begin(), "This should be impossible, we should always have a valid seek point at 0 offset."); - const CompressorZStdSeekPoint& bestSeekPoint = *(--it); // get the previous (so it includes the current offset) - - // if read is continuous continue with decompression - bool isJumpToSeekPoint = false; - SizeType lastOffsetInCache = zstdData->m_decompressedCacheOffset + zstdData->m_decompressedCacheDataSize; - if (bestSeekPoint.m_uncompressedOffset > lastOffsetInCache) // if the best seek point is forward, jump forward to it. + if (lastOffsetInCache >= lastDataOffset) { - isJumpToSeekPoint = true; + copyOffsetEnd -= static_cast(lastOffsetInCache - lastDataOffset); } - else if (offset < lastOffsetInCache) // if the seek point is in the past and the requested offset is not in the cache jump back to it. + else if (bufferCopyOffset > 0) // the cache block is in the middle of the data, we can't use it (since we need to split buffer request into 2) { - isJumpToSeekPoint = true; + return 0; } - if (isJumpToSeekPoint) - { - zstdData->m_decompressNextOffset = bestSeekPoint.m_compressedOffset; // set next read point - zstdData->m_decompressedCacheOffset = bestSeekPoint.m_uncompressedOffset; // set uncompressed offset - zstdData->m_decompressedCacheDataSize = 0; // invalidate the cache - zstdData->m_zstd.ResetDecompressor(&zstdData->m_zstdHeader); // reset decompressor and setup the header. - } + numCopied = copyOffsetEnd - copyOffsetStart; + memcpy(static_cast(buffer) + bufferCopyOffset, zstdData->m_decompressedCache + copyOffsetStart, static_cast(numCopied)); - // decompress and move forward until the request is done - while (byteSize > 0) + // adjust pointers and sizes + byteSize -= numCopied; + if (bufferCopyOffset == 0) { - // fill buffer with compressed data - SizeType compressedDataSize = FillCompressedBuffer(stream); - if (compressedDataSize == 0) + // copied in the start + buffer = reinterpret_cast(buffer) + numCopied; + offset += numCopied; + } + } + + return numCopied; + } + + inline CompressorZStd::SizeType CompressorZStd::FillCompressedBuffer(CompressorStream* stream) + { + CompressorZStdData* zstdData = static_cast(stream->GetCompressorData()); + SizeType dataFromBuffer = 0; + if (stream == m_lastReadStream) // if the buffer is filled with data from the current stream, try to reuse + { + if (zstdData->m_decompressNextOffset > m_lastReadStreamOffset) + { + SizeType offsetInCache = zstdData->m_decompressNextOffset - m_lastReadStreamOffset; + if (offsetInCache < m_lastReadStreamSize) // last check if there is data overlap { - return numRead; // we are done reading and obviously we did not managed to read all data + // copy the usable part at the start of the buffer + SizeType toMove = m_lastReadStreamSize - offsetInCache; + memcpy(m_compressedDataBuffer, &m_compressedDataBuffer[static_cast(offsetInCache)], static_cast(toMove)); + dataFromBuffer += toMove; } - unsigned int processedCompressedData = 0; - while (byteSize > 0 && processedCompressedData < compressedDataSize) // decompressed data either until we are done with the request (byteSize == 0) or we need to fill the compression buffer again. - { - // if we have data in the cache move to the next offset, we always move forward by default. - zstdData->m_decompressedCacheOffset += zstdData->m_decompressedCacheDataSize; - - // decompress in the cache buffer - u32 availDecompressedCacheSize = m_decompressionCachePerStream; // reset buffer size - size_t nextBlockSize; - unsigned int processed = zstdData->m_zstd.Decompress(&m_compressedDataBuffer[processedCompressedData], - static_cast(compressedDataSize) - processedCompressedData, - zstdData->m_decompressedCache, - availDecompressedCacheSize, - &nextBlockSize); - zstdData->m_decompressedCacheDataSize = m_decompressionCachePerStream - availDecompressedCacheSize; - if (processed == 0) - { - break; // we processed everything we could, load more compressed data. - } - processedCompressedData += processed; - // fill what we can from the cache - numRead += FillFromDecompressCache(zstdData, buffer, byteSize, offset); - } - // update next read position the the compressed stream - zstdData->m_decompressNextOffset += processedCompressedData; } + } + + SizeType toReadFromStream = m_compressedDataBufferSize - dataFromBuffer; + SizeType readOffset = zstdData->m_decompressNextOffset + dataFromBuffer; + if (readOffset + toReadFromStream > zstdData->m_decompressLastOffset) + { + // don't read past the end + AZ_Assert(readOffset <= zstdData->m_decompressLastOffset, "Read offset should always be before the end of stream."); + toReadFromStream = zstdData->m_decompressLastOffset - readOffset; + } + + SizeType numReadFromStream = 0; + if (toReadFromStream) // if we did not reuse the whole buffer, read some data from the stream + { + GenericStream* baseStream = stream->GetWrappedStream(); + numReadFromStream = baseStream->ReadAtOffset(toReadFromStream, &m_compressedDataBuffer[static_cast(dataFromBuffer)], readOffset); + } + + // update what's actually in the read data buffer. + m_lastReadStream = stream; + m_lastReadStreamOffset = zstdData->m_decompressNextOffset; + m_lastReadStreamSize = dataFromBuffer + numReadFromStream; + return m_lastReadStreamSize; + } + + struct ZStdCompareUpper + { + bool operator()(const AZ::u64& offset, const CompressorZStdSeekPoint& sp) const + { + return offset < sp.m_uncompressedOffset; + } + }; + + CompressorZStd::SizeType CompressorZStd::Read(CompressorStream* stream, SizeType byteSize, SizeType offset, void* buffer) + { + AZ_Assert(stream->GetCompressorData(), "This stream doesn't have decompression enabled."); + CompressorZStdData* zstdData = static_cast(stream->GetCompressorData()); + AZ_Assert(!zstdData->m_zstd.IsCompressorStarted(), "You can't read/decompress while writing a compressed stream %s."); + + // check if the request can be finished from the decompressed cache + SizeType numRead = FillFromDecompressCache(zstdData, buffer, byteSize, offset); + if (byteSize == 0) // are we done + { return numRead; } - CompressorZStd::SizeType CompressorZStd::Write(CompressorStream* stream, SizeType byteSize, const void* data, SizeType offset) + // find the best seek point for current offset + CompressorZStdData::SeekPointArray::iterator it = AZStd::upper_bound(zstdData->m_seekPoints.begin(), zstdData->m_seekPoints.end(), offset, ZStdCompareUpper()); + AZ_Assert(it != zstdData->m_seekPoints.begin(), "This should be impossible, we should always have a valid seek point at 0 offset."); + const CompressorZStdSeekPoint& bestSeekPoint = *(--it); // get the previous (so it includes the current offset) + + // if read is continuous continue with decompression + bool isJumpToSeekPoint = false; + SizeType lastOffsetInCache = zstdData->m_decompressedCacheOffset + zstdData->m_decompressedCacheDataSize; + if (bestSeekPoint.m_uncompressedOffset > lastOffsetInCache) // if the best seek point is forward, jump forward to it. { - AZ_UNUSED(offset); + isJumpToSeekPoint = true; + } + else if (offset < lastOffsetInCache) // if the seek point is in the past and the requested offset is not in the cache jump back to it. + { + isJumpToSeekPoint = true; + } - AZ_Assert(stream && stream->GetCompressorData(), "This stream doesn't have compression enabled. Call Stream::WriteCompressed after you create the file."); - AZ_Assert(offset == SizeType(-1) || offset == stream->GetCurPos(), "We can write compressed data only at the end of the stream."); + if (isJumpToSeekPoint) + { + zstdData->m_decompressNextOffset = bestSeekPoint.m_compressedOffset; // set next read point + zstdData->m_decompressedCacheOffset = bestSeekPoint.m_uncompressedOffset; // set uncompressed offset + zstdData->m_decompressedCacheDataSize = 0; // invalidate the cache + zstdData->m_zstd.ResetDecompressor(&zstdData->m_zstdHeader); // reset decompressor and setup the header. + } - m_lastReadStream = nullptr; // invalidate last read position, otherwise m_dataBuffer will be corrupted (as we are about to write in it). - - CompressorZStdData* zstdData = static_cast(stream->GetCompressorData()); - AZ_Assert(!zstdData->m_zstd.IsDecompressorStarted(), "You can't write while reading/decompressing a compressed stream."); - - const u8* bytes = reinterpret_cast(data); - unsigned int dataToCompress = aznumeric_caster(byteSize); - while (dataToCompress != 0) + // decompress and move forward until the request is done + while (byteSize > 0) + { + // fill buffer with compressed data + SizeType compressedDataSize = FillCompressedBuffer(stream); + if (compressedDataSize == 0) { - unsigned int oldDataToCompress = dataToCompress; - unsigned int compressedSize = zstdData->m_zstd.Compress(bytes, dataToCompress, m_compressedDataBuffer, m_compressedDataBufferSize); - if (compressedSize) - { - GenericStream* baseStream = stream->GetWrappedStream(); - SizeType numWritten = baseStream->Write(compressedSize, m_compressedDataBuffer); - if (numWritten != compressedSize) - { - return numWritten; // error we could not write all data - } - } - bytes += oldDataToCompress - dataToCompress; + return numRead; // we are done reading and obviously we did not managed to read all data } - zstdData->m_uncompressedSize += byteSize; - - if (zstdData->m_autoSeekSize > 0) + unsigned int processedCompressedData = 0; + while (byteSize > 0 && processedCompressedData < compressedDataSize) // decompressed data either until we are done with the request (byteSize == 0) or we need to fill the compression buffer again. { - // insert a seek point if needed. - if (zstdData->m_seekPoints.empty()) + // if we have data in the cache move to the next offset, we always move forward by default. + zstdData->m_decompressedCacheOffset += zstdData->m_decompressedCacheDataSize; + + // decompress in the cache buffer + u32 availDecompressedCacheSize = m_decompressionCachePerStream; // reset buffer size + size_t nextBlockSize; + unsigned int processed = zstdData->m_zstd.Decompress(&m_compressedDataBuffer[processedCompressedData], + static_cast(compressedDataSize) - processedCompressedData, + zstdData->m_decompressedCache, + availDecompressedCacheSize, + &nextBlockSize); + zstdData->m_decompressedCacheDataSize = m_decompressionCachePerStream - availDecompressedCacheSize; + if (processed == 0) { - if (zstdData->m_uncompressedSize >= zstdData->m_autoSeekSize) - { - WriteSeekPoint(stream); - } + break; // we processed everything we could, load more compressed data. } - else if ((zstdData->m_uncompressedSize - zstdData->m_seekPoints.back().m_uncompressedOffset) > zstdData->m_autoSeekSize) + processedCompressedData += processed; + // fill what we can from the cache + numRead += FillFromDecompressCache(zstdData, buffer, byteSize, offset); + } + // update next read position the the compressed stream + zstdData->m_decompressNextOffset += processedCompressedData; + } + return numRead; + } + + CompressorZStd::SizeType CompressorZStd::Write(CompressorStream* stream, SizeType byteSize, const void* data, SizeType offset) + { + AZ_UNUSED(offset); + + AZ_Assert(stream && stream->GetCompressorData(), "This stream doesn't have compression enabled. Call Stream::WriteCompressed after you create the file."); + AZ_Assert(offset == SizeType(-1) || offset == stream->GetCurPos(), "We can write compressed data only at the end of the stream."); + + m_lastReadStream = nullptr; // invalidate last read position, otherwise m_dataBuffer will be corrupted (as we are about to write in it). + + CompressorZStdData* zstdData = static_cast(stream->GetCompressorData()); + AZ_Assert(!zstdData->m_zstd.IsDecompressorStarted(), "You can't write while reading/decompressing a compressed stream."); + + const u8* bytes = reinterpret_cast(data); + unsigned int dataToCompress = aznumeric_caster(byteSize); + while (dataToCompress != 0) + { + unsigned int oldDataToCompress = dataToCompress; + unsigned int compressedSize = zstdData->m_zstd.Compress(bytes, dataToCompress, m_compressedDataBuffer, m_compressedDataBufferSize); + if (compressedSize) + { + GenericStream* baseStream = stream->GetWrappedStream(); + SizeType numWritten = baseStream->Write(compressedSize, m_compressedDataBuffer); + if (numWritten != compressedSize) + { + return numWritten; // error we could not write all data + } + } + bytes += oldDataToCompress - dataToCompress; + } + zstdData->m_uncompressedSize += byteSize; + + if (zstdData->m_autoSeekSize > 0) + { + // insert a seek point if needed. + if (zstdData->m_seekPoints.empty()) + { + if (zstdData->m_uncompressedSize >= zstdData->m_autoSeekSize) { WriteSeekPoint(stream); } } - return byteSize; + else if ((zstdData->m_uncompressedSize - zstdData->m_seekPoints.back().m_uncompressedOffset) > zstdData->m_autoSeekSize) + { + WriteSeekPoint(stream); + } } + return byteSize; + } - bool CompressorZStd::WriteSeekPoint(CompressorStream* stream) + bool CompressorZStd::WriteSeekPoint(CompressorStream* stream) + { + AZ_Assert(stream && stream->GetCompressorData(), "This stream doesn't have compression enabled. Call Stream::WriteCompressed after you create the file."); + CompressorZStdData* zstdData = static_cast(stream->GetCompressorData()); + + m_lastReadStream = nullptr; // invalidate last read position, otherwise m_dataBuffer will be corrupted (as we are about to write in it). + + unsigned int compressedSize; + unsigned int dataToCompress = 0; + do { - AZ_Assert(stream && stream->GetCompressorData(), "This stream doesn't have compression enabled. Call Stream::WriteCompressed after you create the file."); - CompressorZStdData* zstdData = static_cast(stream->GetCompressorData()); + compressedSize = zstdData->m_zstd.Compress(nullptr, dataToCompress, m_compressedDataBuffer, m_compressedDataBufferSize, ZStd::FT_FULL_FLUSH); + if (compressedSize) + { + GenericStream* baseStream = stream->GetWrappedStream(); + SizeType numWritten = baseStream->Write(compressedSize, m_compressedDataBuffer); + if (numWritten != compressedSize) + { + return false; // error we wrote less than than requested! + } + } + } while (dataToCompress != 0); + CompressorZStdSeekPoint sp; + sp.m_compressedOffset = stream->GetLength(); + sp.m_uncompressedOffset = zstdData->m_uncompressedSize; + zstdData->m_seekPoints.push_back(sp); + return true; + } + + bool CompressorZStd::StartCompressor(CompressorStream* stream, int compressionLevel, SizeType autoSeekDataSize) + { + AZ_Assert(stream && !stream->GetCompressorData(), "Stream has compressor already enabled."); + + AcquireDataBuffer(); + + CompressorZStdData* zstdData = aznew CompressorZStdData; + zstdData->m_compressor = this; + zstdData->m_zstdHeader = 0; // not used for compression + zstdData->m_uncompressedSize = 0; + zstdData->m_autoSeekSize = autoSeekDataSize; + compressionLevel = AZ::GetClamp(compressionLevel, 1, 9); // remap to zlib levels + + zstdData->m_zstd.StartCompressor(compressionLevel); + + stream->SetCompressorData(zstdData); + + if (WriteHeaderAndData(stream)) + { + // add the first and always present seek point at the start of the compressed stream + CompressorZStdSeekPoint sp; + sp.m_compressedOffset = sizeof(CompressorHeader) + sizeof(CompressorZStdHeader) + sizeof(zstdData->m_zstdHeader); + sp.m_uncompressedOffset = 0; + zstdData->m_seekPoints.push_back(sp); + return true; + } + return false; + } + + bool CompressorZStd::Close(CompressorStream* stream) + { + AZ_Assert(stream->IsOpen(), "Stream is not open to be closed."); + + CompressorZStdData* zstdData = static_cast(stream->GetCompressorData()); + GenericStream* baseStream = stream->GetWrappedStream(); + + bool result = true; + if (zstdData->m_zstd.IsCompressorStarted()) + { m_lastReadStream = nullptr; // invalidate last read position, otherwise m_dataBuffer will be corrupted (as we are about to write in it). + // flush all compressed data unsigned int compressedSize; unsigned int dataToCompress = 0; do { - compressedSize = zstdData->m_zstd.Compress(nullptr, dataToCompress, m_compressedDataBuffer, m_compressedDataBufferSize, ZStd::FT_FULL_FLUSH); + compressedSize = zstdData->m_zstd.Compress(nullptr, dataToCompress, m_compressedDataBuffer, m_compressedDataBufferSize, ZStd::FT_FINISH); if (compressedSize) { - GenericStream* baseStream = stream->GetWrappedStream(); - SizeType numWritten = baseStream->Write(compressedSize, m_compressedDataBuffer); - if (numWritten != compressedSize) - { - return false; // error we wrote less than than requested! - } + baseStream->Write(compressedSize, m_compressedDataBuffer); } } while (dataToCompress != 0); - CompressorZStdSeekPoint sp; - sp.m_compressedOffset = stream->GetLength(); - sp.m_uncompressedOffset = zstdData->m_uncompressedSize; - zstdData->m_seekPoints.push_back(sp); - return true; + result = WriteHeaderAndData(stream); + if (result) + { + SizeType dataToWrite = zstdData->m_seekPoints.size() * sizeof(CompressorZStdSeekPoint); + baseStream->Seek(0U, GenericStream::SeekMode::ST_SEEK_END); + result = (baseStream->Write(dataToWrite, zstdData->m_seekPoints.data()) == dataToWrite); + } } - - bool CompressorZStd::StartCompressor(CompressorStream* stream, int compressionLevel, SizeType autoSeekDataSize) + else { - AZ_Assert(stream && !stream->GetCompressorData(), "Stream has compressor already enabled."); - - AcquireDataBuffer(); - - CompressorZStdData* zstdData = aznew CompressorZStdData; - zstdData->m_compressor = this; - zstdData->m_zstdHeader = 0; // not used for compression - zstdData->m_uncompressedSize = 0; - zstdData->m_autoSeekSize = autoSeekDataSize; - compressionLevel = AZ::GetClamp(compressionLevel, 1, 9); // remap to zlib levels - - zstdData->m_zstd.StartCompressor(compressionLevel); - - stream->SetCompressorData(zstdData); - - if (WriteHeaderAndData(stream)) + if (m_lastReadStream == stream) { - // add the first and always present seek point at the start of the compressed stream - CompressorZStdSeekPoint sp; - sp.m_compressedOffset = sizeof(CompressorHeader) + sizeof(CompressorZStdHeader) + sizeof(zstdData->m_zstdHeader); - sp.m_uncompressedOffset = 0; - zstdData->m_seekPoints.push_back(sp); - return true; + m_lastReadStream = nullptr; // invalidate the data in m_dataBuffer if it was from the current stream. } - return false; } - bool CompressorZStd::Close(CompressorStream* stream) + // if we have decompressor cache delete it + if (zstdData->m_decompressedCache) { - AZ_Assert(stream->IsOpen(), "Stream is not open to be closed."); - - CompressorZStdData* zstdData = static_cast(stream->GetCompressorData()); - GenericStream* baseStream = stream->GetWrappedStream(); - - bool result = true; - if (zstdData->m_zstd.IsCompressorStarted()) - { - m_lastReadStream = nullptr; // invalidate last read position, otherwise m_dataBuffer will be corrupted (as we are about to write in it). - - // flush all compressed data - unsigned int compressedSize; - unsigned int dataToCompress = 0; - do - { - compressedSize = zstdData->m_zstd.Compress(nullptr, dataToCompress, m_compressedDataBuffer, m_compressedDataBufferSize, ZStd::FT_FINISH); - if (compressedSize) - { - baseStream->Write(compressedSize, m_compressedDataBuffer); - } - } while (dataToCompress != 0); - - result = WriteHeaderAndData(stream); - if (result) - { - SizeType dataToWrite = zstdData->m_seekPoints.size() * sizeof(CompressorZStdSeekPoint); - baseStream->Seek(0U, GenericStream::SeekMode::ST_SEEK_END); - result = (baseStream->Write(dataToWrite, zstdData->m_seekPoints.data()) == dataToWrite); - } - } - else - { - if (m_lastReadStream == stream) - { - m_lastReadStream = nullptr; // invalidate the data in m_dataBuffer if it was from the current stream. - } - } - - // if we have decompressor cache delete it - if (zstdData->m_decompressedCache) - { - azfree(zstdData->m_decompressedCache, AZ::SystemAllocator, m_decompressionCachePerStream, m_CompressedDataBufferAlignment); - } - - ReleaseDataBuffer(); - - // last step reset strream compressor data. - stream->SetCompressorData(nullptr); - return result; + azfree(zstdData->m_decompressedCache, AZ::SystemAllocator, m_decompressionCachePerStream, m_CompressedDataBufferAlignment); } - void CompressorZStd::AcquireDataBuffer() + ReleaseDataBuffer(); + + // last step reset strream compressor data. + stream->SetCompressorData(nullptr); + return result; + } + + void CompressorZStd::AcquireDataBuffer() + { + if (m_compressedDataBuffer == nullptr) { - if (m_compressedDataBuffer == nullptr) - { - AZ_Assert(m_compressedDataBufferUseCount == 0, "Buffer usecount should be 0 if the buffer is NULL"); - m_compressedDataBuffer = reinterpret_cast(azmalloc(m_compressedDataBufferSize, m_CompressedDataBufferAlignment, AZ::SystemAllocator, "CompressorZStd")); - m_lastReadStream = nullptr; // reset the cache info in the m_dataBuffer - } - ++m_compressedDataBufferUseCount; + AZ_Assert(m_compressedDataBufferUseCount == 0, "Buffer usecount should be 0 if the buffer is NULL"); + m_compressedDataBuffer = reinterpret_cast(azmalloc(m_compressedDataBufferSize, m_CompressedDataBufferAlignment, AZ::SystemAllocator, "CompressorZStd")); + m_lastReadStream = nullptr; // reset the cache info in the m_dataBuffer } + ++m_compressedDataBufferUseCount; + } - void CompressorZStd::ReleaseDataBuffer() + void CompressorZStd::ReleaseDataBuffer() + { + --m_compressedDataBufferUseCount; + if (m_compressedDataBufferUseCount == 0) { - --m_compressedDataBufferUseCount; - if (m_compressedDataBufferUseCount == 0) - { - AZ_Assert(m_compressedDataBuffer, "Invalid data buffer. We should have a non null pointer."); - azfree(m_compressedDataBuffer, AZ::SystemAllocator, m_compressedDataBufferSize, m_CompressedDataBufferAlignment); - m_compressedDataBuffer = nullptr; - m_lastReadStream = nullptr; // reset the cache info in the m_dataBuffer - } + AZ_Assert(m_compressedDataBuffer, "Invalid data buffer. We should have a non null pointer."); + azfree(m_compressedDataBuffer, AZ::SystemAllocator, m_compressedDataBufferSize, m_CompressedDataBufferAlignment); + m_compressedDataBuffer = nullptr; + m_lastReadStream = nullptr; // reset the cache info in the m_dataBuffer } - } // namespace IO -} // namespace AZ + } +} // namespace AZ::IO #endif // #if !defined(AZCORE_EXCLUDE_ZSTD) diff --git a/Code/Framework/AzCore/AzCore/IO/FileIO.cpp b/Code/Framework/AzCore/AzCore/IO/FileIO.cpp index 837aca8d84..3522187131 100644 --- a/Code/Framework/AzCore/AzCore/IO/FileIO.cpp +++ b/Code/Framework/AzCore/AzCore/IO/FileIO.cpp @@ -21,485 +21,482 @@ # define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ #endif -namespace AZ +namespace AZ::IO { - namespace IO + static EnvironmentVariable g_fileIOInstance; + static EnvironmentVariable g_directFileIOInstance; + static const char* s_EngineFileIOName = "EngineFileIO"; + static const char* s_DirectFileIOName = "DirectFileIO"; + + FileIOBase* FileIOBase::GetInstance() { - static EnvironmentVariable g_fileIOInstance; - static EnvironmentVariable g_directFileIOInstance; - static const char* s_EngineFileIOName = "EngineFileIO"; - static const char* s_DirectFileIOName = "DirectFileIO"; - - FileIOBase* FileIOBase::GetInstance() + if (!g_fileIOInstance) { - if (!g_fileIOInstance) - { - g_fileIOInstance = Environment::FindVariable(s_EngineFileIOName); - } - - return g_fileIOInstance ? (*g_fileIOInstance) : nullptr; + g_fileIOInstance = Environment::FindVariable(s_EngineFileIOName); } - void FileIOBase::SetInstance(FileIOBase* instance) + return g_fileIOInstance ? (*g_fileIOInstance) : nullptr; + } + + void FileIOBase::SetInstance(FileIOBase* instance) + { + if (!g_fileIOInstance) { - if (!g_fileIOInstance) - { - g_fileIOInstance = Environment::CreateVariable(s_EngineFileIOName); - (*g_fileIOInstance) = nullptr; - } - - // at this point we're guaranteed to have g_fileIOInstance. Its value might be null. - - if ((instance) && (g_fileIOInstance) && (*g_fileIOInstance)) - { - AZ_Error("FileIO", false, "FileIOBase::SetInstance was called without first destroying the old instance and setting it to nullptr"); - } - - (*g_fileIOInstance) = instance; + g_fileIOInstance = Environment::CreateVariable(s_EngineFileIOName); + (*g_fileIOInstance) = nullptr; } - FileIOBase* FileIOBase::GetDirectInstance() + // at this point we're guaranteed to have g_fileIOInstance. Its value might be null. + + if ((instance) && (g_fileIOInstance) && (*g_fileIOInstance)) { - if (!g_directFileIOInstance) - { - g_directFileIOInstance = Environment::FindVariable(s_DirectFileIOName); - } - - // for backwards compatibilty, return the regular instance if this is not attached - if (!g_directFileIOInstance) - { - return GetInstance(); - } - - return g_directFileIOInstance ? (*g_directFileIOInstance) : nullptr; + AZ_Error("FileIO", false, "FileIOBase::SetInstance was called without first destroying the old instance and setting it to nullptr"); } - void FileIOBase::SetDirectInstance(FileIOBase* instance) + (*g_fileIOInstance) = instance; + } + + FileIOBase* FileIOBase::GetDirectInstance() + { + if (!g_directFileIOInstance) { - if (!g_directFileIOInstance) - { - g_directFileIOInstance = Environment::CreateVariable(s_DirectFileIOName); - (*g_directFileIOInstance) = nullptr; - } - - // at this point we're guaranteed to have g_directFileIOInstance. Its value might be null. - - if ((instance) && (g_directFileIOInstance) && (*g_directFileIOInstance)) - { - AZ_Error("FileIO", false, "FileIOBase::SetDirectInstance was called without first destroying the old instance and setting it to nullptr"); - } - - (*g_directFileIOInstance) = instance; + g_directFileIOInstance = Environment::FindVariable(s_DirectFileIOName); } - AZStd::optional FileIOBase::ConvertToAlias(const AZ::IO::PathView& path) const + // for backwards compatibilty, return the regular instance if this is not attached + if (!g_directFileIOInstance) { - AZ::IO::FixedMaxPath convertedPath; - if (ConvertToAlias(convertedPath, path)) - { - return convertedPath; - } - - return AZStd::nullopt; + return GetInstance(); } - AZStd::optional FileIOBase::ResolvePath(const AZ::IO::PathView& path) const - { - AZ::IO::FixedMaxPath resolvedPath; - if (ResolvePath(resolvedPath, path)) - { - return resolvedPath; - } + return g_directFileIOInstance ? (*g_directFileIOInstance) : nullptr; + } - return AZStd::nullopt; + void FileIOBase::SetDirectInstance(FileIOBase* instance) + { + if (!g_directFileIOInstance) + { + g_directFileIOInstance = Environment::CreateVariable(s_DirectFileIOName); + (*g_directFileIOInstance) = nullptr; } - SeekType GetSeekTypeFromFSeekMode(int mode) - { - switch (mode) - { - case SEEK_SET: - return SeekType::SeekFromStart; - case SEEK_CUR: - return SeekType::SeekFromCurrent; - case SEEK_END: - return SeekType::SeekFromEnd; - } + // at this point we're guaranteed to have g_directFileIOInstance. Its value might be null. - // Must have some default, hitting here means some random int mode + if ((instance) && (g_directFileIOInstance) && (*g_directFileIOInstance)) + { + AZ_Error("FileIO", false, "FileIOBase::SetDirectInstance was called without first destroying the old instance and setting it to nullptr"); + } + + (*g_directFileIOInstance) = instance; + } + + AZStd::optional FileIOBase::ConvertToAlias(const AZ::IO::PathView& path) const + { + AZ::IO::FixedMaxPath convertedPath; + if (ConvertToAlias(convertedPath, path)) + { + return convertedPath; + } + + return AZStd::nullopt; + } + + AZStd::optional FileIOBase::ResolvePath(const AZ::IO::PathView& path) const + { + AZ::IO::FixedMaxPath resolvedPath; + if (ResolvePath(resolvedPath, path)) + { + return resolvedPath; + } + + return AZStd::nullopt; + } + + SeekType GetSeekTypeFromFSeekMode(int mode) + { + switch (mode) + { + case SEEK_SET: return SeekType::SeekFromStart; + case SEEK_CUR: + return SeekType::SeekFromCurrent; + case SEEK_END: + return SeekType::SeekFromEnd; } - int GetFSeekModeFromSeekType(SeekType type) - { - switch (type) - { - case SeekType::SeekFromStart: - return SEEK_SET; - case SeekType::SeekFromCurrent: - return SEEK_CUR; - case SeekType::SeekFromEnd: - return SEEK_END; - } + // Must have some default, hitting here means some random int mode + return SeekType::SeekFromStart; + } + int GetFSeekModeFromSeekType(SeekType type) + { + switch (type) + { + case SeekType::SeekFromStart: return SEEK_SET; + case SeekType::SeekFromCurrent: + return SEEK_CUR; + case SeekType::SeekFromEnd: + return SEEK_END; } - void UpdateOpenModeForReading(OpenMode& openMode) + return SEEK_SET; + } + + void UpdateOpenModeForReading(OpenMode& openMode) + { + if (AnyFlag(openMode & OpenMode::ModeRead)) { - if (AnyFlag(openMode & OpenMode::ModeRead)) + if (AnyFlag(openMode & OpenMode::ModeText)) { - if (AnyFlag(openMode & OpenMode::ModeText)) - { - OpenMode extraModes = openMode & (OpenMode::ModeUpdate | OpenMode::ModeAppend); - openMode = OpenMode::ModeRead | OpenMode::ModeBinary | extraModes; - } - else if (!AnyFlag(openMode & OpenMode::ModeBinary)) - { - // if you haven't supplied any flag, supply binary - openMode = openMode | OpenMode::ModeBinary; - } + OpenMode extraModes = openMode & (OpenMode::ModeUpdate | OpenMode::ModeAppend); + openMode = OpenMode::ModeRead | OpenMode::ModeBinary | extraModes; + } + else if (!AnyFlag(openMode & OpenMode::ModeBinary)) + { + // if you haven't supplied any flag, supply binary + openMode = openMode | OpenMode::ModeBinary; } } + } - OpenMode GetOpenModeFromStringMode(const char* mode) + OpenMode GetOpenModeFromStringMode(const char* mode) + { + OpenMode openMode = OpenMode::Invalid; + + if (strstr(mode, "w")) { - OpenMode openMode = OpenMode::Invalid; - - if (strstr(mode, "w")) - { - openMode |= OpenMode::ModeWrite; - } - - if (strstr(mode, "r")) - { - openMode |= OpenMode::ModeRead; - } - - if (strstr(mode, "a")) - { - openMode |= OpenMode::ModeAppend; - } - - if (strstr(mode, "b")) - { - openMode |= OpenMode::ModeBinary; - } - - if (strstr(mode, "t")) - { - openMode |= OpenMode::ModeText; - } - - if (strstr(mode, "+")) - { - openMode |= OpenMode::ModeUpdate; - } - - UpdateOpenModeForReading(openMode); - - return openMode; + openMode |= OpenMode::ModeWrite; } - const char* GetStringModeFromOpenMode(OpenMode mode) + if (strstr(mode, "r")) { - UpdateOpenModeForReading(mode); - // Append is highest priority, followed by write and then read - // APPEND - if (AnyFlag(mode & OpenMode::ModeAppend)) + openMode |= OpenMode::ModeRead; + } + + if (strstr(mode, "a")) + { + openMode |= OpenMode::ModeAppend; + } + + if (strstr(mode, "b")) + { + openMode |= OpenMode::ModeBinary; + } + + if (strstr(mode, "t")) + { + openMode |= OpenMode::ModeText; + } + + if (strstr(mode, "+")) + { + openMode |= OpenMode::ModeUpdate; + } + + UpdateOpenModeForReading(openMode); + + return openMode; + } + + const char* GetStringModeFromOpenMode(OpenMode mode) + { + UpdateOpenModeForReading(mode); + // Append is highest priority, followed by write and then read + // APPEND + if (AnyFlag(mode & OpenMode::ModeAppend)) + { + if (AnyFlag(mode & OpenMode::ModeUpdate)) { - if (AnyFlag(mode & OpenMode::ModeUpdate)) - { - if (AnyFlag(mode & OpenMode::ModeBinary)) - { - return "a+b"; - } - if (AnyFlag(mode & OpenMode::ModeText)) - { - return "a+t"; - } - return "a+"; - } if (AnyFlag(mode & OpenMode::ModeBinary)) { - return "ab"; + return "a+b"; } if (AnyFlag(mode & OpenMode::ModeText)) { - return "at"; + return "a+t"; } - return "a"; + return "a+"; } - - // WRITE - if (AnyFlag(mode & OpenMode::ModeWrite)) + if (AnyFlag(mode & OpenMode::ModeBinary)) + { + return "ab"; + } + if (AnyFlag(mode & OpenMode::ModeText)) + { + return "at"; + } + return "a"; + } + + // WRITE + if (AnyFlag(mode & OpenMode::ModeWrite)) + { + if (AnyFlag(mode & OpenMode::ModeUpdate)) { - if (AnyFlag(mode & OpenMode::ModeUpdate)) - { - if (AnyFlag(mode & OpenMode::ModeBinary)) - { - return "w+b"; - } - if (AnyFlag(mode & OpenMode::ModeText)) - { - return "w+t"; - } - return "w+"; - } if (AnyFlag(mode & OpenMode::ModeBinary)) { - return "wb"; + return "w+b"; } if (AnyFlag(mode & OpenMode::ModeText)) { - return "wt"; + return "w+t"; } - return "w"; + return "w+"; } - - // READ - if (AnyFlag(mode & OpenMode::ModeRead)) + if (AnyFlag(mode & OpenMode::ModeBinary)) + { + return "wb"; + } + if (AnyFlag(mode & OpenMode::ModeText)) + { + return "wt"; + } + return "w"; + } + + // READ + if (AnyFlag(mode & OpenMode::ModeRead)) + { + if (AnyFlag(mode & OpenMode::ModeUpdate)) { - if (AnyFlag(mode & OpenMode::ModeUpdate)) - { - if (AnyFlag(mode & OpenMode::ModeBinary)) - { - return "r+b"; - } - if (AnyFlag(mode & OpenMode::ModeText)) - { - return "r+t"; - } - return "r+"; - } if (AnyFlag(mode & OpenMode::ModeBinary)) { - return "rb"; + return "r+b"; } if (AnyFlag(mode & OpenMode::ModeText)) { - return "rt"; + return "r+t"; } - return "r"; + return "r+"; } - - // Bad open mode passed in - AZ_Error("FileIO", false, "A bad open mode was sent to GetStringModeFromOpenMode()"); - return ""; + if (AnyFlag(mode & OpenMode::ModeBinary)) + { + return "rb"; + } + if (AnyFlag(mode & OpenMode::ModeText)) + { + return "rt"; + } + return "r"; } - bool NameMatchesFilter(const char* name, const char* filter) + // Bad open mode passed in + AZ_Error("FileIO", false, "A bad open mode was sent to GetStringModeFromOpenMode()"); + return ""; + } + + bool NameMatchesFilter(const char* name, const char* filter) + { + return AZStd::wildcard_match(filter, name); + } + + FileIOStream::FileIOStream() + : m_handle(InvalidHandle) + , m_mode(OpenMode::Invalid) + , m_ownsHandle(true) + { + + } + + FileIOStream::FileIOStream(HandleType fileHandle, AZ::IO::OpenMode mode, bool ownsHandle) + : m_handle(fileHandle) + , m_mode(mode) + , m_ownsHandle(ownsHandle) + { + + FileIOBase* fileIO = FileIOBase::GetInstance(); + AZ_Assert(fileIO, "FileIO is not initialized."); + AZStd::array resolvedPath{ {0} }; + fileIO->GetFilename(m_handle, resolvedPath.data(), resolvedPath.size() - 1); + m_filename = resolvedPath.data(); + } + + FileIOStream::FileIOStream(const char* path, AZ::IO::OpenMode mode, bool errorOnFailure) + : m_handle(InvalidHandle) + , m_mode(mode) + , m_errorOnFailure(errorOnFailure) + { + Open(path, mode); + } + + FileIOStream::~FileIOStream() + { + if (m_ownsHandle) { - return AZStd::wildcard_match(filter, name); + Close(); } + } - FileIOStream::FileIOStream() - : m_handle(InvalidHandle) - , m_mode(OpenMode::Invalid) - , m_ownsHandle(true) + bool FileIOStream::Open(const char* path, OpenMode mode) + { + AZ_Assert(FileIOBase::GetInstance(), "FileIO is not initialized."); + FileIOBase* fileIO = FileIOBase::GetInstance(); + + Close(); + + const Result result = fileIO->Open(path, mode, m_handle); + m_ownsHandle = IsOpen(); + m_mode = mode; + + if (IsOpen()) { - - } - - FileIOStream::FileIOStream(HandleType fileHandle, AZ::IO::OpenMode mode, bool ownsHandle) - : m_handle(fileHandle) - , m_mode(mode) - , m_ownsHandle(ownsHandle) - { - - FileIOBase* fileIO = FileIOBase::GetInstance(); - AZ_Assert(fileIO, "FileIO is not initialized."); + // Not using supplied path parameter as it may be unresolved AZStd::array resolvedPath{ {0} }; fileIO->GetFilename(m_handle, resolvedPath.data(), resolvedPath.size() - 1); m_filename = resolvedPath.data(); } - - FileIOStream::FileIOStream(const char* path, AZ::IO::OpenMode mode, bool errorOnFailure) - : m_handle(InvalidHandle) - , m_mode(mode) - , m_errorOnFailure(errorOnFailure) + else { - Open(path, mode); + // remember the file name so you can try again with ReOpen + m_filename = path; } - FileIOStream::~FileIOStream() - { - if (m_ownsHandle) - { - Close(); - } - } + AZ_PROFILE_INTERVAL_START_COLORED(AzCore, &m_filename, 0xff0000ff, "FileIO: %s", m_filename.c_str()); + return result; + } - bool FileIOStream::Open(const char* path, OpenMode mode) + bool FileIOStream::ReOpen() + { + Close(); + return (m_mode != OpenMode::Invalid) ? Open(m_filename.data(), m_mode) : false; + } + + void FileIOStream::Close() + { + if (m_handle != InvalidHandle) { AZ_Assert(FileIOBase::GetInstance(), "FileIO is not initialized."); - FileIOBase* fileIO = FileIOBase::GetInstance(); - Close(); - - const Result result = fileIO->Open(path, mode, m_handle); - m_ownsHandle = IsOpen(); - m_mode = mode; - - if (IsOpen()) - { - // Not using supplied path parameter as it may be unresolved - AZStd::array resolvedPath{ {0} }; - fileIO->GetFilename(m_handle, resolvedPath.data(), resolvedPath.size() - 1); - m_filename = resolvedPath.data(); - } - else - { - // remember the file name so you can try again with ReOpen - m_filename = path; - } - - AZ_PROFILE_INTERVAL_START_COLORED(AzCore, &m_filename, 0xff0000ff, "FileIO: %s", m_filename.c_str()); - return result; + FileIOBase::GetInstance()->Close(m_handle); + m_handle = InvalidHandle; + m_ownsHandle = false; + AZ_PROFILE_INTERVAL_END(AzCore, &m_filename); } + } - bool FileIOStream::ReOpen() + bool FileIOStream::IsOpen() const + { + return (m_handle != InvalidHandle); + } + + /*! + \brief Retrieves underlying FileIO Handle from file stream + \return HandleType + */ + HandleType FileIOStream::GetHandle() const + { + return m_handle; + } + + /*! + \brief Retrieves filename + \return const char* + */ + const char* FileIOStream::GetFilename() const + { + return m_filename.data(); + } + + /*! + \brief Retrieves OpenMode flags used to open this file + \return OpenMode + */ + AZ::IO::OpenMode FileIOStream::GetModeFlags() const + { + return m_mode; + } + + bool FileIOStream::CanSeek() const + { + return true; + } + + bool FileIOStream::CanRead() const + { + return (m_mode & (OpenMode::ModeRead | OpenMode::ModeUpdate)) != OpenMode::Invalid; + } + + bool FileIOStream::CanWrite() const + { + return (m_mode & (OpenMode::ModeWrite | OpenMode::ModeAppend | OpenMode::ModeUpdate)) != OpenMode::Invalid; + } + + void FileIOStream::Seek(OffsetType bytes, SeekMode mode) + { + AZ_Assert(FileIOBase::GetInstance(), "FileIO is not initialized."); + AZ_Assert(IsOpen(), "Cannot seek on a FileIOStream that is not open."); + + SeekType seekType = SeekType::SeekFromCurrent; + switch (mode) { - Close(); - return (m_mode != OpenMode::Invalid) ? Open(m_filename.data(), m_mode) : false; + case GenericStream::ST_SEEK_BEGIN: + seekType = SeekType::SeekFromStart; + break; + case GenericStream::ST_SEEK_CUR: + seekType = SeekType::SeekFromCurrent; + break; + case GenericStream::ST_SEEK_END: + seekType = SeekType::SeekFromEnd; + break; + default: + seekType = SeekType::SeekFromCurrent; + break; } - void FileIOStream::Close() + const Result result = FileIOBase::GetInstance()->Seek(m_handle, static_cast(bytes), seekType); + (void)result; + AZ_Error("FileIOStream", result.GetResultCode() == ResultCode::Success, "Seek failed."); + } + + SizeType FileIOStream::Read(SizeType bytes, void* oBuffer) + { + AZ_Assert(FileIOBase::GetInstance(), "FileIO is not initialized."); + AZ_Assert(IsOpen(), "Cannot read from a FileIOStream that is not open."); + + AZ::u64 bytesRead = 0; + const Result result = FileIOBase::GetInstance()->Read(m_handle, oBuffer, bytes, m_errorOnFailure, &bytesRead); + (void)result; + AZ_Error("FileIOStream", result.GetResultCode() == ResultCode::Success, "Read failed in file %s.", m_filename.empty() ? "NULL" : m_filename.c_str()); + return static_cast(bytesRead); + } + + SizeType FileIOStream::Write(SizeType bytes, const void* iBuffer) + { + AZ_Assert(FileIOBase::GetInstance(), "FileIO is not initialized."); + AZ_Assert(IsOpen(), "Cannot write to a FileIOStream that is not open."); + + AZ::u64 bytesWritten = 0; + const Result result = FileIOBase::GetInstance()->Write(m_handle, iBuffer, bytes, &bytesWritten); + (void)result; + AZ_Error("FileIOStream", result.GetResultCode() == ResultCode::Success, "Write failed."); + return static_cast(bytesWritten); + } + + SizeType FileIOStream::GetCurPos() const + { + AZ_Assert(FileIOBase::GetInstance(), "FileIO is not initialized."); + AZ_Assert(IsOpen(), "Cannot use a FileIOStream that is not open."); + + AZ::u64 currentPosition = 0; + const Result result = FileIOBase::GetInstance()->Tell(m_handle, currentPosition); + (void)result; + AZ_Error("FileIOStream", result.GetResultCode() == ResultCode::Success, "GetCurPos failed."); + return static_cast(currentPosition); + } + + SizeType FileIOStream::GetLength() const + { + AZ_Assert(FileIOBase::GetInstance(), "FileIO is not initialized."); + AZ_Assert(IsOpen(), "Cannot use a FileIOStream that is not open."); + + SizeType fileLengthBytes = 0; + if (!FileIOBase::GetInstance()->Size(m_handle, fileLengthBytes)) { - if (m_handle != InvalidHandle) - { - AZ_Assert(FileIOBase::GetInstance(), "FileIO is not initialized."); - - FileIOBase::GetInstance()->Close(m_handle); - m_handle = InvalidHandle; - m_ownsHandle = false; - AZ_PROFILE_INTERVAL_END(AzCore, &m_filename); - } + AZ_Error("FileIOStream", false, "GetLength failed."); } - bool FileIOStream::IsOpen() const - { - return (m_handle != InvalidHandle); - } + return fileLengthBytes; + } - /*! - \brief Retrieves underlying FileIO Handle from file stream - \return HandleType - */ - HandleType FileIOStream::GetHandle() const - { - return m_handle; - } - - /*! - \brief Retrieves filename - \return const char* - */ - const char* FileIOStream::GetFilename() const - { - return m_filename.data(); - } - - /*! - \brief Retrieves OpenMode flags used to open this file - \return OpenMode - */ - AZ::IO::OpenMode FileIOStream::GetModeFlags() const - { - return m_mode; - } - - bool FileIOStream::CanSeek() const - { - return true; - } - - bool FileIOStream::CanRead() const - { - return (m_mode & (OpenMode::ModeRead | OpenMode::ModeUpdate)) != OpenMode::Invalid; - } - - bool FileIOStream::CanWrite() const - { - return (m_mode & (OpenMode::ModeWrite | OpenMode::ModeAppend | OpenMode::ModeUpdate)) != OpenMode::Invalid; - } - - void FileIOStream::Seek(OffsetType bytes, SeekMode mode) - { - AZ_Assert(FileIOBase::GetInstance(), "FileIO is not initialized."); - AZ_Assert(IsOpen(), "Cannot seek on a FileIOStream that is not open."); - - SeekType seekType = SeekType::SeekFromCurrent; - switch (mode) - { - case GenericStream::ST_SEEK_BEGIN: - seekType = SeekType::SeekFromStart; - break; - case GenericStream::ST_SEEK_CUR: - seekType = SeekType::SeekFromCurrent; - break; - case GenericStream::ST_SEEK_END: - seekType = SeekType::SeekFromEnd; - break; - default: - seekType = SeekType::SeekFromCurrent; - break; - } - - const Result result = FileIOBase::GetInstance()->Seek(m_handle, static_cast(bytes), seekType); - (void)result; - AZ_Error("FileIOStream", result.GetResultCode() == ResultCode::Success, "Seek failed."); - } - - SizeType FileIOStream::Read(SizeType bytes, void* oBuffer) - { - AZ_Assert(FileIOBase::GetInstance(), "FileIO is not initialized."); - AZ_Assert(IsOpen(), "Cannot read from a FileIOStream that is not open."); - - AZ::u64 bytesRead = 0; - const Result result = FileIOBase::GetInstance()->Read(m_handle, oBuffer, bytes, m_errorOnFailure, &bytesRead); - (void)result; - AZ_Error("FileIOStream", result.GetResultCode() == ResultCode::Success, "Read failed in file %s.", m_filename.empty() ? "NULL" : m_filename.c_str()); - return static_cast(bytesRead); - } - - SizeType FileIOStream::Write(SizeType bytes, const void* iBuffer) - { - AZ_Assert(FileIOBase::GetInstance(), "FileIO is not initialized."); - AZ_Assert(IsOpen(), "Cannot write to a FileIOStream that is not open."); - - AZ::u64 bytesWritten = 0; - const Result result = FileIOBase::GetInstance()->Write(m_handle, iBuffer, bytes, &bytesWritten); - (void)result; - AZ_Error("FileIOStream", result.GetResultCode() == ResultCode::Success, "Write failed."); - return static_cast(bytesWritten); - } - - SizeType FileIOStream::GetCurPos() const - { - AZ_Assert(FileIOBase::GetInstance(), "FileIO is not initialized."); - AZ_Assert(IsOpen(), "Cannot use a FileIOStream that is not open."); - - AZ::u64 currentPosition = 0; - const Result result = FileIOBase::GetInstance()->Tell(m_handle, currentPosition); - (void)result; - AZ_Error("FileIOStream", result.GetResultCode() == ResultCode::Success, "GetCurPos failed."); - return static_cast(currentPosition); - } - - SizeType FileIOStream::GetLength() const - { - AZ_Assert(FileIOBase::GetInstance(), "FileIO is not initialized."); - AZ_Assert(IsOpen(), "Cannot use a FileIOStream that is not open."); - - SizeType fileLengthBytes = 0; - if (!FileIOBase::GetInstance()->Size(m_handle, fileLengthBytes)) - { - AZ_Error("FileIOStream", false, "GetLength failed."); - } - - return fileLengthBytes; - } - - } // namespace IO -} // namespace AZ +} // namespace AZ::IO diff --git a/Code/Framework/AzCore/AzCore/IO/IOUtils.cpp b/Code/Framework/AzCore/AzCore/IO/IOUtils.cpp index 1e3a31f8ab..222a36ef70 100644 --- a/Code/Framework/AzCore/AzCore/IO/IOUtils.cpp +++ b/Code/Framework/AzCore/AzCore/IO/IOUtils.cpp @@ -10,69 +10,64 @@ #include #include /// this_thread sleep_for. -namespace AZ +namespace AZ::IO { - namespace IO - { - int TranslateOpenModeToSystemFileMode(const char* path, OpenMode mode) + int TranslateOpenModeToSystemFileMode(const char* path, OpenMode mode) + { + int systemFileMode = 0; + bool read = AnyFlag(mode & OpenMode::ModeRead) || AnyFlag(mode & OpenMode::ModeUpdate); + bool write = AnyFlag(mode & OpenMode::ModeWrite) || AnyFlag(mode & OpenMode::ModeUpdate) || AnyFlag(mode & OpenMode::ModeAppend); + if (write) { - int systemFileMode = 0; - bool read = AnyFlag(mode & OpenMode::ModeRead) || AnyFlag(mode & OpenMode::ModeUpdate); - bool write = AnyFlag(mode & OpenMode::ModeWrite) || AnyFlag(mode & OpenMode::ModeUpdate) || AnyFlag(mode & OpenMode::ModeAppend); - if (write) + // If writing the file, create the file in all cases (except r+) + if (!SystemFile::Exists(path) && !(AnyFlag(mode & OpenMode::ModeRead) && AnyFlag(mode & OpenMode::ModeUpdate))) { - // If writing the file, create the file in all cases (except r+) - if (!SystemFile::Exists(path) && !(AnyFlag(mode & OpenMode::ModeRead) && AnyFlag(mode & OpenMode::ModeUpdate))) - { - // LocalFileIO creates by default - systemFileMode |= SystemFile::SF_OPEN_CREATE; - } - - if (AnyFlag(mode & OpenMode::ModeCreatePath)) - { - systemFileMode |= SystemFile::SF_OPEN_CREATE_PATH; - } - - // If appending, append. - if (AnyFlag(mode & OpenMode::ModeAppend)) - { - systemFileMode |= SystemFile::SF_OPEN_APPEND; - } - // If writing and not appending, empty the file - else if (AnyFlag(mode & OpenMode::ModeWrite)) - { - systemFileMode |= SystemFile::SF_OPEN_TRUNCATE; - } - - // If reading, set read/write, otherwise just write - if (read) - { - systemFileMode |= SystemFile::SF_OPEN_READ_WRITE; - } - else - { - systemFileMode |= SystemFile::SF_OPEN_WRITE_ONLY; - } - } - else if (read) - { - systemFileMode |= SystemFile::SF_OPEN_READ_ONLY; + // LocalFileIO creates by default + systemFileMode |= SystemFile::SF_OPEN_CREATE; } - return systemFileMode; + if (AnyFlag(mode & OpenMode::ModeCreatePath)) + { + systemFileMode |= SystemFile::SF_OPEN_CREATE_PATH; + } + + // If appending, append. + if (AnyFlag(mode & OpenMode::ModeAppend)) + { + systemFileMode |= SystemFile::SF_OPEN_APPEND; + } + // If writing and not appending, empty the file + else if (AnyFlag(mode & OpenMode::ModeWrite)) + { + systemFileMode |= SystemFile::SF_OPEN_TRUNCATE; + } + + // If reading, set read/write, otherwise just write + if (read) + { + systemFileMode |= SystemFile::SF_OPEN_READ_WRITE; + } + else + { + systemFileMode |= SystemFile::SF_OPEN_WRITE_ONLY; + } + } + else if (read) + { + systemFileMode |= SystemFile::SF_OPEN_READ_ONLY; } - bool RetryOpenStream(FileIOStream& stream, int numRetries, int delayBetweenRetry) + return systemFileMode; + } + + bool RetryOpenStream(FileIOStream& stream, int numRetries, int delayBetweenRetry) + { + while ((!stream.IsOpen()) && (numRetries > 0)) { - while ((!stream.IsOpen()) && (numRetries > 0)) - { - numRetries--; - AZStd::this_thread::sleep_for(AZStd::chrono::milliseconds(delayBetweenRetry)); - stream.ReOpen(); - } - return stream.IsOpen(); + numRetries--; + AZStd::this_thread::sleep_for(AZStd::chrono::milliseconds(delayBetweenRetry)); + stream.ReOpen(); } - } // namespace IO -} // namespace AZ - - + return stream.IsOpen(); + } +} // namespace AZ::IO diff --git a/Code/Framework/AzCore/AzCore/IO/Streamer/BlockCache.cpp b/Code/Framework/AzCore/AzCore/IO/Streamer/BlockCache.cpp index e838324408..6c873f3050 100644 --- a/Code/Framework/AzCore/AzCore/IO/Streamer/BlockCache.cpp +++ b/Code/Framework/AzCore/AzCore/IO/Streamer/BlockCache.cpp @@ -15,736 +15,733 @@ #include #include -namespace AZ +namespace AZ::IO { - namespace IO + AZStd::shared_ptr BlockCacheConfig::AddStreamStackEntry( + const HardwareInformation& hardware, AZStd::shared_ptr parent) { - AZStd::shared_ptr BlockCacheConfig::AddStreamStackEntry( - const HardwareInformation& hardware, AZStd::shared_ptr parent) + size_t blockSize; + switch (m_blockSize) { - size_t blockSize; - switch (m_blockSize) - { - case BlockSize::MaxTransfer: - blockSize = hardware.m_maxTransfer; - break; - case BlockSize::MemoryAlignment: - blockSize = hardware.m_maxPhysicalSectorSize; - break; - case BlockSize::SizeAlignment: - blockSize = hardware.m_maxLogicalSectorSize; - break; - default: - blockSize = m_blockSize; - break; - } - - u32 cacheSize = static_cast(m_cacheSizeMib * 1_mib); - if (blockSize * 2 > cacheSize) - { - AZ_Warning("Streamer", false, "Size (%u) for BlockCache isn't big enough to hold at least two cache blocks of size (%zu). " - "The cache size will be increased to fit 2 cache blocks.", cacheSize, blockSize); - cacheSize = aznumeric_caster(blockSize * 2); - } - - auto stackEntry = AZStd::make_shared( - cacheSize, aznumeric_cast(blockSize), aznumeric_cast(hardware.m_maxPhysicalSectorSize), false); - stackEntry->SetNext(AZStd::move(parent)); - return stackEntry; + case BlockSize::MaxTransfer: + blockSize = hardware.m_maxTransfer; + break; + case BlockSize::MemoryAlignment: + blockSize = hardware.m_maxPhysicalSectorSize; + break; + case BlockSize::SizeAlignment: + blockSize = hardware.m_maxLogicalSectorSize; + break; + default: + blockSize = m_blockSize; + break; } - void BlockCacheConfig::Reflect(AZ::ReflectContext* context) + u32 cacheSize = static_cast(m_cacheSizeMib * 1_mib); + if (blockSize * 2 > cacheSize) { - if (auto serializeContext = azrtti_cast(context); serializeContext != nullptr) - { - serializeContext->Enum() - ->Version(1) - ->Value("MaxTransfer", BlockSize::MaxTransfer) - ->Value("MemoryAlignment", BlockSize::MemoryAlignment) - ->Value("SizeAlignment", BlockSize::SizeAlignment); - - serializeContext->Class() - ->Version(1) - ->Field("CacheSizeMib", &BlockCacheConfig::m_cacheSizeMib) - ->Field("BlockSize", &BlockCacheConfig::m_blockSize); - } + AZ_Warning("Streamer", false, "Size (%u) for BlockCache isn't big enough to hold at least two cache blocks of size (%zu). " + "The cache size will be increased to fit 2 cache blocks.", cacheSize, blockSize); + cacheSize = aznumeric_caster(blockSize * 2); } - static constexpr char CacheHitRateName[] = "Cache hit rate"; - static constexpr char CacheableName[] = "Cacheable"; + auto stackEntry = AZStd::make_shared( + cacheSize, aznumeric_cast(blockSize), aznumeric_cast(hardware.m_maxPhysicalSectorSize), false); + stackEntry->SetNext(AZStd::move(parent)); + return stackEntry; + } - void BlockCache::Section::Prefix(const Section& section) + void BlockCacheConfig::Reflect(AZ::ReflectContext* context) + { + if (auto serializeContext = azrtti_cast(context); serializeContext != nullptr) { - AZ_Assert(section.m_used, "Trying to prefix an unused section"); - AZ_Assert(!m_wait && !section.m_wait, "Can't merge two section that are already waiting for data to be loaded."); + serializeContext->Enum() + ->Version(1) + ->Value("MaxTransfer", BlockSize::MaxTransfer) + ->Value("MemoryAlignment", BlockSize::MemoryAlignment) + ->Value("SizeAlignment", BlockSize::SizeAlignment); - if (m_used) + serializeContext->Class() + ->Version(1) + ->Field("CacheSizeMib", &BlockCacheConfig::m_cacheSizeMib) + ->Field("BlockSize", &BlockCacheConfig::m_blockSize); + } + } + + static constexpr char CacheHitRateName[] = "Cache hit rate"; + static constexpr char CacheableName[] = "Cacheable"; + + void BlockCache::Section::Prefix(const Section& section) + { + AZ_Assert(section.m_used, "Trying to prefix an unused section"); + AZ_Assert(!m_wait && !section.m_wait, "Can't merge two section that are already waiting for data to be loaded."); + + if (m_used) + { + AZ_Assert(m_blockOffset == 0, "Unable to add a block cache to this one as this block requires an offset upon completion."); + + AZ_Assert(section.m_readOffset < m_readOffset, "The block that's being merged needs to come before this block."); + m_readOffset = section.m_readOffset + section.m_blockOffset; // Remove any alignment that might have been added. + m_readSize += section.m_readSize - section.m_blockOffset; + + AZ_Assert(section.m_output < m_output, "The block that's being merged needs to come before this block."); + m_output = section.m_output; + m_copySize += section.m_copySize; + } + else + { + m_used = true; + m_readOffset = section.m_readOffset + section.m_blockOffset; + m_readSize = section.m_readSize - section.m_blockOffset; + m_output = section.m_output; + m_copySize = section.m_copySize; + } + m_blockOffset = 0; // Two merged sections do not support caching. + } + + BlockCache::BlockCache(u64 cacheSize, u32 blockSize, u32 alignment, bool onlyEpilogWrites) + : StreamStackEntry("Block cache") + , m_alignment(alignment) + , m_onlyEpilogWrites(onlyEpilogWrites) + { + AZ_Assert(IStreamerTypes::IsPowerOf2(alignment), "Alignment needs to be a power of 2."); + AZ_Assert(IStreamerTypes::IsAlignedTo(blockSize, alignment), "Block size needs to be a multiple of the alignment."); + + m_numBlocks = aznumeric_caster(cacheSize / blockSize); + m_cacheSize = cacheSize - (cacheSize % blockSize); // Only use the amount needed for the cache. + m_blockSize = blockSize; + if (m_numBlocks == 1) + { + m_onlyEpilogWrites = true; + } + + m_cache = reinterpret_cast(AZ::AllocatorInstance::Get().Allocate( + m_cacheSize, alignment, 0, "AZ::IO::Streamer BlockCache", __FILE__, __LINE__)); + m_cachedPaths = AZStd::unique_ptr(new RequestPath[m_numBlocks]); + m_cachedOffsets = AZStd::unique_ptr(new u64[m_numBlocks]); + m_blockLastTouched = AZStd::unique_ptr(new TimePoint[m_numBlocks]); + m_inFlightRequests = AZStd::unique_ptr(new FileRequest*[m_numBlocks]); + + ResetCache(); + } + + BlockCache::~BlockCache() + { + AZ::AllocatorInstance::Get().DeAllocate(m_cache, m_cacheSize, m_alignment); + } + + void BlockCache::QueueRequest(FileRequest* request) + { + AZ_Assert(request, "QueueRequest was provided a null request."); + + AZStd::visit([this, request](auto&& args) + { + using Command = AZStd::decay_t; + if constexpr (AZStd::is_same_v) { - AZ_Assert(m_blockOffset == 0, "Unable to add a block cache to this one as this block requires an offset upon completion."); - - AZ_Assert(section.m_readOffset < m_readOffset, "The block that's being merged needs to come before this block."); - m_readOffset = section.m_readOffset + section.m_blockOffset; // Remove any alignment that might have been added. - m_readSize += section.m_readSize - section.m_blockOffset; - - AZ_Assert(section.m_output < m_output, "The block that's being merged needs to come before this block."); - m_output = section.m_output; - m_copySize += section.m_copySize; + ReadFile(request, args); + return; } else { - m_used = true; - m_readOffset = section.m_readOffset + section.m_blockOffset; - m_readSize = section.m_readSize - section.m_blockOffset; - m_output = section.m_output; - m_copySize = section.m_copySize; - } - m_blockOffset = 0; // Two merged sections do not support caching. - } - - BlockCache::BlockCache(u64 cacheSize, u32 blockSize, u32 alignment, bool onlyEpilogWrites) - : StreamStackEntry("Block cache") - , m_alignment(alignment) - , m_onlyEpilogWrites(onlyEpilogWrites) - { - AZ_Assert(IStreamerTypes::IsPowerOf2(alignment), "Alignment needs to be a power of 2."); - AZ_Assert(IStreamerTypes::IsAlignedTo(blockSize, alignment), "Block size needs to be a multiple of the alignment."); - - m_numBlocks = aznumeric_caster(cacheSize / blockSize); - m_cacheSize = cacheSize - (cacheSize % blockSize); // Only use the amount needed for the cache. - m_blockSize = blockSize; - if (m_numBlocks == 1) - { - m_onlyEpilogWrites = true; - } - - m_cache = reinterpret_cast(AZ::AllocatorInstance::Get().Allocate( - m_cacheSize, alignment, 0, "AZ::IO::Streamer BlockCache", __FILE__, __LINE__)); - m_cachedPaths = AZStd::unique_ptr(new RequestPath[m_numBlocks]); - m_cachedOffsets = AZStd::unique_ptr(new u64[m_numBlocks]); - m_blockLastTouched = AZStd::unique_ptr(new TimePoint[m_numBlocks]); - m_inFlightRequests = AZStd::unique_ptr(new FileRequest*[m_numBlocks]); - - ResetCache(); - } - - BlockCache::~BlockCache() - { - AZ::AllocatorInstance::Get().DeAllocate(m_cache, m_cacheSize, m_alignment); - } - - void BlockCache::QueueRequest(FileRequest* request) - { - AZ_Assert(request, "QueueRequest was provided a null request."); - - AZStd::visit([this, request](auto&& args) - { - using Command = AZStd::decay_t; - if constexpr (AZStd::is_same_v) + if constexpr (AZStd::is_same_v) { - ReadFile(request, args); + FlushCache(args.m_path); + } + else if constexpr (AZStd::is_same_v) + { + FlushEntireCache(); + } + StreamStackEntry::QueueRequest(request); + } + }, request->GetCommand()); + } + + bool BlockCache::ExecuteRequests() + { + size_t delayedCount = m_delayedSections.size(); + + bool delayedRequestProcessed = false; + for (size_t i = 0; i < delayedCount; ++i) + { + Section& delayed = m_delayedSections.front(); + AZ_Assert(delayed.m_parent, "Delayed section doesn't have a reference to the original request."); + auto data = AZStd::get_if(&delayed.m_parent->GetCommand()); + AZ_Assert(data, "A request in the delayed queue of the BlockCache didn't have a parent with read data."); + // This call can add the same section to the back of the queue if there's not + // enough space. Because of this the entry needs to be removed from the delayed + // list no matter what the result is of ServiceFromCache. + if (ServiceFromCache(delayed.m_parent, delayed, data->m_path, data->m_sharedRead) != CacheResult::Delayed) + { + delayedRequestProcessed = true; + } + m_delayedSections.pop_front(); + } + bool nextResult = StreamStackEntry::ExecuteRequests(); + return nextResult || delayedRequestProcessed; + } + + void BlockCache::UpdateStatus(Status& status) const + { + StreamStackEntry::UpdateStatus(status); + s32 numAvailableSlots = CalculateAvailableRequestSlots(); + status.m_numAvailableSlots = AZStd::min(status.m_numAvailableSlots, numAvailableSlots); + status.m_isIdle = status.m_isIdle && + static_cast(numAvailableSlots) == m_numBlocks && + m_delayedSections.empty(); + } + + void BlockCache::UpdateCompletionEstimates(AZStd::chrono::system_clock::time_point now, AZStd::vector& internalPending, + StreamerContext::PreparedQueue::iterator pendingBegin, StreamerContext::PreparedQueue::iterator pendingEnd) + { + // Have the stack downstream estimate the completion time for the requests that are waiting for a slot to execute in. + AddDelayedRequests(internalPending); + + StreamStackEntry::UpdateCompletionEstimates(now, internalPending, pendingBegin, pendingEnd); + + // The in-flight requests don't have to be updated because the subdivided request will bubble up in order so the final + // write will be the latest completion time. Requests that have a wait on another request though will need to be update + // as the estimation of the in-flight request needs to be copied to the wait request to get an accurate prediction. + UpdatePendingRequestEstimations(); + + // Technically here the wait commands for the delayed sections should be updated as well, but it's the parent that's interesting, + // not the wait so don't waste cycles updating the wait. + } + + void BlockCache::AddDelayedRequests(AZStd::vector& internalPending) + { + for (auto& section : m_delayedSections) + { + internalPending.push_back(section.m_parent); + } + } + + void BlockCache::UpdatePendingRequestEstimations() + { + for (auto it : m_pendingRequests) + { + Section& section = it.second; + AZ_Assert(section.m_cacheBlockIndex != s_fileNotCached, "An in-flight cache section doesn't have a cache block associated with it."); + AZ_Assert(m_inFlightRequests[section.m_cacheBlockIndex], + "Cache block %i is reported as being in-flight but has no request.", section.m_cacheBlockIndex); + if (section.m_wait) + { + AZ_Assert(section.m_parent, "A cache section with a wait request pending is missing a parent to wait on."); + auto largestTime = AZStd::max(section.m_parent->GetEstimatedCompletion(), it.first->GetEstimatedCompletion()); + section.m_wait->SetEstimatedCompletion(largestTime); + } + } + } + + void BlockCache::ReadFile(FileRequest* request, FileRequest::ReadData& data) + { + if (!m_next) + { + request->SetStatus(IStreamerTypes::RequestStatus::Failed); + m_context->MarkRequestAsCompleted(request); + return; + } + + auto continueReadFile = [this, request](FileRequest& fileSizeRequest) + { + AZ_PROFILE_FUNCTION(AzCore); + AZ_Assert(m_numMetaDataRetrievalInProgress > 0, + "More requests have completed meta data retrieval in the Block Cache than were requested."); + m_numMetaDataRetrievalInProgress--; + if (fileSizeRequest.GetStatus() == IStreamerTypes::RequestStatus::Completed) + { + auto& requestInfo = AZStd::get(fileSizeRequest.GetCommand()); + if (requestInfo.m_found) + { + ContinueReadFile(request, requestInfo.m_fileSize); return; } - else + } + // Couldn't find the file size so don't try to split and pass the request to the next entry in the stack. + StreamStackEntry::QueueRequest(request); + }; + m_numMetaDataRetrievalInProgress++; + FileRequest* fileSizeRequest = m_context->GetNewInternalRequest(); + fileSizeRequest->CreateFileMetaDataRetrieval(data.m_path); + fileSizeRequest->SetCompletionCallback(AZStd::move(continueReadFile)); + StreamStackEntry::QueueRequest(fileSizeRequest); + } + void BlockCache::ContinueReadFile(FileRequest* request, u64 fileLength) + { + Section prolog; + Section main; + Section epilog; + + auto& data = AZStd::get(request->GetCommand()); + + if (!SplitRequest(prolog, main, epilog, data.m_path, fileLength, data.m_offset, data.m_size, + reinterpret_cast(data.m_output))) + { + m_context->MarkRequestAsCompleted(request); + return; + } + + if (prolog.m_used || epilog.m_used) + { + m_cacheableStat.PushSample(1.0); + Statistic::PlotImmediate(m_name, CacheableName, m_cacheableStat.GetMostRecentSample()); + } + else + { + // Nothing to cache so simply forward the call to the next entry in the stack for direct reading. + m_cacheableStat.PushSample(0.0); + Statistic::PlotImmediate(m_name, CacheableName, m_cacheableStat.GetMostRecentSample()); + m_next->QueueRequest(request); + return; + } + + bool fullyCached = true; + if (prolog.m_used) + { + if (m_onlyEpilogWrites && (main.m_used || epilog.m_used)) + { + // Only the epilog is allowed to write to the cache, but a previous read could + // still have cached the prolog, so check the cache and use the data if it's there + // otherwise merge the section with the main section to have the data read. + if (ReadFromCache(request, prolog, data.m_path) == CacheResult::CacheMiss) { - if constexpr (AZStd::is_same_v) - { - FlushCache(args.m_path); - } - else if constexpr (AZStd::is_same_v) - { - FlushEntireCache(); - } - StreamStackEntry::QueueRequest(request); - } - }, request->GetCommand()); - } - - bool BlockCache::ExecuteRequests() - { - size_t delayedCount = m_delayedSections.size(); - - bool delayedRequestProcessed = false; - for (size_t i = 0; i < delayedCount; ++i) - { - Section& delayed = m_delayedSections.front(); - AZ_Assert(delayed.m_parent, "Delayed section doesn't have a reference to the original request."); - auto data = AZStd::get_if(&delayed.m_parent->GetCommand()); - AZ_Assert(data, "A request in the delayed queue of the BlockCache didn't have a parent with read data."); - // This call can add the same section to the back of the queue if there's not - // enough space. Because of this the entry needs to be removed from the delayed - // list no matter what the result is of ServiceFromCache. - if (ServiceFromCache(delayed.m_parent, delayed, data->m_path, data->m_sharedRead) != CacheResult::Delayed) - { - delayedRequestProcessed = true; - } - m_delayedSections.pop_front(); - } - bool nextResult = StreamStackEntry::ExecuteRequests(); - return nextResult || delayedRequestProcessed; - } - - void BlockCache::UpdateStatus(Status& status) const - { - StreamStackEntry::UpdateStatus(status); - s32 numAvailableSlots = CalculateAvailableRequestSlots(); - status.m_numAvailableSlots = AZStd::min(status.m_numAvailableSlots, numAvailableSlots); - status.m_isIdle = status.m_isIdle && - static_cast(numAvailableSlots) == m_numBlocks && - m_delayedSections.empty(); - } - - void BlockCache::UpdateCompletionEstimates(AZStd::chrono::system_clock::time_point now, AZStd::vector& internalPending, - StreamerContext::PreparedQueue::iterator pendingBegin, StreamerContext::PreparedQueue::iterator pendingEnd) - { - // Have the stack downstream estimate the completion time for the requests that are waiting for a slot to execute in. - AddDelayedRequests(internalPending); - - StreamStackEntry::UpdateCompletionEstimates(now, internalPending, pendingBegin, pendingEnd); - - // The in-flight requests don't have to be updated because the subdivided request will bubble up in order so the final - // write will be the latest completion time. Requests that have a wait on another request though will need to be update - // as the estimation of the in-flight request needs to be copied to the wait request to get an accurate prediction. - UpdatePendingRequestEstimations(); - - // Technically here the wait commands for the delayed sections should be updated as well, but it's the parent that's interesting, - // not the wait so don't waste cycles updating the wait. - } - - void BlockCache::AddDelayedRequests(AZStd::vector& internalPending) - { - for (auto& section : m_delayedSections) - { - internalPending.push_back(section.m_parent); - } - } - - void BlockCache::UpdatePendingRequestEstimations() - { - for (auto it : m_pendingRequests) - { - Section& section = it.second; - AZ_Assert(section.m_cacheBlockIndex != s_fileNotCached, "An in-flight cache section doesn't have a cache block associated with it."); - AZ_Assert(m_inFlightRequests[section.m_cacheBlockIndex], - "Cache block %i is reported as being in-flight but has no request.", section.m_cacheBlockIndex); - if (section.m_wait) - { - AZ_Assert(section.m_parent, "A cache section with a wait request pending is missing a parent to wait on."); - auto largestTime = AZStd::max(section.m_parent->GetEstimatedCompletion(), it.first->GetEstimatedCompletion()); - section.m_wait->SetEstimatedCompletion(largestTime); - } - } - } - - void BlockCache::ReadFile(FileRequest* request, FileRequest::ReadData& data) - { - if (!m_next) - { - request->SetStatus(IStreamerTypes::RequestStatus::Failed); - m_context->MarkRequestAsCompleted(request); - return; - } - - auto continueReadFile = [this, request](FileRequest& fileSizeRequest) - { - AZ_PROFILE_FUNCTION(AzCore); - AZ_Assert(m_numMetaDataRetrievalInProgress > 0, - "More requests have completed meta data retrieval in the Block Cache than were requested."); - m_numMetaDataRetrievalInProgress--; - if (fileSizeRequest.GetStatus() == IStreamerTypes::RequestStatus::Completed) - { - auto& requestInfo = AZStd::get(fileSizeRequest.GetCommand()); - if (requestInfo.m_found) - { - ContinueReadFile(request, requestInfo.m_fileSize); - return; - } - } - // Couldn't find the file size so don't try to split and pass the request to the next entry in the stack. - StreamStackEntry::QueueRequest(request); - }; - m_numMetaDataRetrievalInProgress++; - FileRequest* fileSizeRequest = m_context->GetNewInternalRequest(); - fileSizeRequest->CreateFileMetaDataRetrieval(data.m_path); - fileSizeRequest->SetCompletionCallback(AZStd::move(continueReadFile)); - StreamStackEntry::QueueRequest(fileSizeRequest); - } - void BlockCache::ContinueReadFile(FileRequest* request, u64 fileLength) - { - Section prolog; - Section main; - Section epilog; - - auto& data = AZStd::get(request->GetCommand()); - - if (!SplitRequest(prolog, main, epilog, data.m_path, fileLength, data.m_offset, data.m_size, - reinterpret_cast(data.m_output))) - { - m_context->MarkRequestAsCompleted(request); - return; - } - - if (prolog.m_used || epilog.m_used) - { - m_cacheableStat.PushSample(1.0); - Statistic::PlotImmediate(m_name, CacheableName, m_cacheableStat.GetMostRecentSample()); - } - else - { - // Nothing to cache so simply forward the call to the next entry in the stack for direct reading. - m_cacheableStat.PushSample(0.0); - Statistic::PlotImmediate(m_name, CacheableName, m_cacheableStat.GetMostRecentSample()); - m_next->QueueRequest(request); - return; - } - - bool fullyCached = true; - if (prolog.m_used) - { - if (m_onlyEpilogWrites && (main.m_used || epilog.m_used)) - { - // Only the epilog is allowed to write to the cache, but a previous read could - // still have cached the prolog, so check the cache and use the data if it's there - // otherwise merge the section with the main section to have the data read. - if (ReadFromCache(request, prolog, data.m_path) == CacheResult::CacheMiss) - { - // The data isn't cached so put the prolog in front of the main section - // so it's read in one read request. If main wasn't used, prefixing the prolog - // will cause it to be filled in and used. - main.Prefix(prolog); - m_hitRateStat.PushSample(0.0); - Statistic::PlotImmediate(m_name, CacheHitRateName, m_hitRateStat.GetMostRecentSample()); - } - else - { - m_hitRateStat.PushSample(1.0); - Statistic::PlotImmediate(m_name, CacheHitRateName, m_hitRateStat.GetMostRecentSample()); - } + // The data isn't cached so put the prolog in front of the main section + // so it's read in one read request. If main wasn't used, prefixing the prolog + // will cause it to be filled in and used. + main.Prefix(prolog); + m_hitRateStat.PushSample(0.0); + Statistic::PlotImmediate(m_name, CacheHitRateName, m_hitRateStat.GetMostRecentSample()); } else { - // If m_onlyEpilogWrites is set but main and epilog are not filled in, it means that - // the request was so small it fits in one cache block, in which case the prolog and - // epilog are practically the same. Or this code is reached because both prolog and - // epilog are allowed to write. - bool readFromCache = (ServiceFromCache(request, prolog, data.m_path, data.m_sharedRead) == CacheResult::ReadFromCache); - fullyCached = readFromCache && fullyCached; - - m_hitRateStat.PushSample(readFromCache ? 1.0 : 0.0); + m_hitRateStat.PushSample(1.0); Statistic::PlotImmediate(m_name, CacheHitRateName, m_hitRateStat.GetMostRecentSample()); } } - - if (main.m_used) + else { - FileRequest* mainRequest = m_context->GetNewInternalRequest(); - // No need for a callback as there's nothing to do after the read has been completed. - mainRequest->CreateRead(request, main.m_output, main.m_readSize, data.m_path, - main.m_readOffset, main.m_readSize, data.m_sharedRead); - m_next->QueueRequest(mainRequest); - fullyCached = false; - } - - if (epilog.m_used) - { - bool readFromCache = (ServiceFromCache(request, epilog, data.m_path, data.m_sharedRead) == CacheResult::ReadFromCache); + // If m_onlyEpilogWrites is set but main and epilog are not filled in, it means that + // the request was so small it fits in one cache block, in which case the prolog and + // epilog are practically the same. Or this code is reached because both prolog and + // epilog are allowed to write. + bool readFromCache = (ServiceFromCache(request, prolog, data.m_path, data.m_sharedRead) == CacheResult::ReadFromCache); fullyCached = readFromCache && fullyCached; m_hitRateStat.PushSample(readFromCache ? 1.0 : 0.0); Statistic::PlotImmediate(m_name, CacheHitRateName, m_hitRateStat.GetMostRecentSample()); } + } - if (fullyCached) + if (main.m_used) + { + FileRequest* mainRequest = m_context->GetNewInternalRequest(); + // No need for a callback as there's nothing to do after the read has been completed. + mainRequest->CreateRead(request, main.m_output, main.m_readSize, data.m_path, + main.m_readOffset, main.m_readSize, data.m_sharedRead); + m_next->QueueRequest(mainRequest); + fullyCached = false; + } + + if (epilog.m_used) + { + bool readFromCache = (ServiceFromCache(request, epilog, data.m_path, data.m_sharedRead) == CacheResult::ReadFromCache); + fullyCached = readFromCache && fullyCached; + + m_hitRateStat.PushSample(readFromCache ? 1.0 : 0.0); + Statistic::PlotImmediate(m_name, CacheHitRateName, m_hitRateStat.GetMostRecentSample()); + } + + if (fullyCached) + { + request->SetStatus(IStreamerTypes::RequestStatus::Completed); + m_context->MarkRequestAsCompleted(request); + } + } + + void BlockCache::FlushCache(const RequestPath& filePath) + { + for (u32 i = 0; i < m_numBlocks; ++i) + { + if (m_cachedPaths[i] == filePath) { - request->SetStatus(IStreamerTypes::RequestStatus::Completed); - m_context->MarkRequestAsCompleted(request); + ResetCacheEntry(i); } } + } - void BlockCache::FlushCache(const RequestPath& filePath) + void BlockCache::FlushEntireCache() + { + ResetCache(); + } + + void BlockCache::CollectStatistics(AZStd::vector& statistics) const + { + statistics.push_back(Statistic::CreatePercentage(m_name, CacheHitRateName, CalculateHitRatePercentage())); + statistics.push_back(Statistic::CreatePercentage(m_name, CacheableName, CalculateCacheableRatePercentage())); + statistics.push_back(Statistic::CreateInteger(m_name, "Available slots", CalculateAvailableRequestSlots())); + + StreamStackEntry::CollectStatistics(statistics); + } + + double BlockCache::CalculateHitRatePercentage() const + { + return m_hitRateStat.GetAverage(); + } + + double BlockCache::CalculateCacheableRatePercentage() const + { + return m_cacheableStat.GetAverage(); + } + + s32 BlockCache::CalculateAvailableRequestSlots() const + { + return aznumeric_cast(m_numBlocks) - m_numInFlightRequests - m_numMetaDataRetrievalInProgress - + aznumeric_cast(m_delayedSections.size()); + } + + BlockCache::CacheResult BlockCache::ReadFromCache(FileRequest* request, Section& section, const RequestPath& filePath) + { + u32 cacheLocation = FindInCache(filePath, section.m_readOffset); + if (cacheLocation != s_fileNotCached) { - for (u32 i = 0; i < m_numBlocks; ++i) - { - if (m_cachedPaths[i] == filePath) - { - ResetCacheEntry(i); - } - } + return ReadFromCache(request, section, cacheLocation); } - - void BlockCache::FlushEntireCache() + else { - ResetCache(); + return CacheResult::CacheMiss; } + } - void BlockCache::CollectStatistics(AZStd::vector& statistics) const + BlockCache::CacheResult BlockCache::ReadFromCache(FileRequest* request, Section& section, u32 cacheBlock) + { + if (!IsCacheBlockInFlight(cacheBlock)) { - statistics.push_back(Statistic::CreatePercentage(m_name, CacheHitRateName, CalculateHitRatePercentage())); - statistics.push_back(Statistic::CreatePercentage(m_name, CacheableName, CalculateCacheableRatePercentage())); - statistics.push_back(Statistic::CreateInteger(m_name, "Available slots", CalculateAvailableRequestSlots())); - - StreamStackEntry::CollectStatistics(statistics); + TouchBlock(cacheBlock); + memcpy(section.m_output, GetCacheBlockData(cacheBlock) + section.m_blockOffset, section.m_copySize); + return CacheResult::ReadFromCache; } - - double BlockCache::CalculateHitRatePercentage() const + else { - return m_hitRateStat.GetAverage(); + AZ_Assert(section.m_wait == nullptr, "A wait request has to be set on a block cache section, but one has already been assigned."); + FileRequest* wait = m_context->GetNewInternalRequest(); + wait->CreateWait(request); + section.m_cacheBlockIndex = cacheBlock; + section.m_parent = request; + section.m_wait = wait; + m_pendingRequests.emplace(m_inFlightRequests[cacheBlock], section); + return CacheResult::Queued; } + } - double BlockCache::CalculateCacheableRatePercentage() const - { - return m_cacheableStat.GetAverage(); - } + BlockCache::CacheResult BlockCache::ServiceFromCache( + FileRequest* request, Section& section, const RequestPath& filePath, bool sharedRead) + { + AZ_Assert(m_next, "ServiceFromCache in BlockCache was called when the cache doesn't have a way to read files."); - s32 BlockCache::CalculateAvailableRequestSlots() const + u32 cacheLocation = FindInCache(filePath, section.m_readOffset); + if (cacheLocation == s_fileNotCached) { - return aznumeric_cast(m_numBlocks) - m_numInFlightRequests - m_numMetaDataRetrievalInProgress - - aznumeric_cast(m_delayedSections.size()); - } + m_hitRateStat.PushSample(0.0); + Statistic::PlotImmediate(m_name, CacheHitRateName, m_hitRateStat.GetMostRecentSample()); - BlockCache::CacheResult BlockCache::ReadFromCache(FileRequest* request, Section& section, const RequestPath& filePath) - { - u32 cacheLocation = FindInCache(filePath, section.m_readOffset); + section.m_parent = request; + cacheLocation = RecycleOldestBlock(filePath, section.m_readOffset); if (cacheLocation != s_fileNotCached) { - return ReadFromCache(request, section, cacheLocation); - } - else - { - return CacheResult::CacheMiss; - } - } + FileRequest* readRequest = m_context->GetNewInternalRequest(); + readRequest->CreateRead(request, GetCacheBlockData(cacheLocation), m_blockSize, filePath, section.m_readOffset, + section.m_readSize, sharedRead); + readRequest->SetCompletionCallback([this](FileRequest& request) + { + AZ_PROFILE_FUNCTION(AzCore); + CompleteRead(request); + }); + section.m_cacheBlockIndex = cacheLocation; + m_inFlightRequests[cacheLocation] = readRequest; + m_numInFlightRequests++; - BlockCache::CacheResult BlockCache::ReadFromCache(FileRequest* request, Section& section, u32 cacheBlock) - { - if (!IsCacheBlockInFlight(cacheBlock)) - { - TouchBlock(cacheBlock); - memcpy(section.m_output, GetCacheBlockData(cacheBlock) + section.m_blockOffset, section.m_copySize); - return CacheResult::ReadFromCache; - } - else - { - AZ_Assert(section.m_wait == nullptr, "A wait request has to be set on a block cache section, but one has already been assigned."); - FileRequest* wait = m_context->GetNewInternalRequest(); - wait->CreateWait(request); - section.m_cacheBlockIndex = cacheBlock; - section.m_parent = request; - section.m_wait = wait; - m_pendingRequests.emplace(m_inFlightRequests[cacheBlock], section); + // If set, this is the wait added by the delay. + if (section.m_wait) + { + m_context->MarkRequestAsCompleted(section.m_wait); + section.m_wait = nullptr; + } + + m_pendingRequests.emplace(readRequest, section); + m_next->QueueRequest(readRequest); return CacheResult::Queued; } - } - - BlockCache::CacheResult BlockCache::ServiceFromCache( - FileRequest* request, Section& section, const RequestPath& filePath, bool sharedRead) - { - AZ_Assert(m_next, "ServiceFromCache in BlockCache was called when the cache doesn't have a way to read files."); - - u32 cacheLocation = FindInCache(filePath, section.m_readOffset); - if (cacheLocation == s_fileNotCached) - { - m_hitRateStat.PushSample(0.0); - Statistic::PlotImmediate(m_name, CacheHitRateName, m_hitRateStat.GetMostRecentSample()); - - section.m_parent = request; - cacheLocation = RecycleOldestBlock(filePath, section.m_readOffset); - if (cacheLocation != s_fileNotCached) - { - FileRequest* readRequest = m_context->GetNewInternalRequest(); - readRequest->CreateRead(request, GetCacheBlockData(cacheLocation), m_blockSize, filePath, section.m_readOffset, - section.m_readSize, sharedRead); - readRequest->SetCompletionCallback([this](FileRequest& request) - { - AZ_PROFILE_FUNCTION(AzCore); - CompleteRead(request); - }); - section.m_cacheBlockIndex = cacheLocation; - m_inFlightRequests[cacheLocation] = readRequest; - m_numInFlightRequests++; - - // If set, this is the wait added by the delay. - if (section.m_wait) - { - m_context->MarkRequestAsCompleted(section.m_wait); - section.m_wait = nullptr; - } - - m_pendingRequests.emplace(readRequest, section); - m_next->QueueRequest(readRequest); - return CacheResult::Queued; - } - else - { - // There's no more space in the cache to store this request to. This is because there are more in-flight requests than - // there are slots in the cache. Delay the request until there's a slot available but add a wait for the section to - // make sure the request can't complete if some parts are read. - if (!section.m_wait) - { - section.m_wait = m_context->GetNewInternalRequest(); - section.m_wait->CreateWait(request); - } - m_delayedSections.push_back(section); - return CacheResult::Delayed; - } - } else { - // If set, this is the wait added by the delay when the cache was full. - if (section.m_wait) + // There's no more space in the cache to store this request to. This is because there are more in-flight requests than + // there are slots in the cache. Delay the request until there's a slot available but add a wait for the section to + // make sure the request can't complete if some parts are read. + if (!section.m_wait) { - m_context->MarkRequestAsCompleted(section.m_wait); - section.m_wait = nullptr; + section.m_wait = m_context->GetNewInternalRequest(); + section.m_wait->CreateWait(request); } - - m_hitRateStat.PushSample(1.0); - Statistic::PlotImmediate(m_name, CacheHitRateName, m_hitRateStat.GetMostRecentSample()); - - return ReadFromCache(request, section, cacheLocation); + m_delayedSections.push_back(section); + return CacheResult::Delayed; } } - - void BlockCache::CompleteRead(FileRequest& request) + else { - auto requestInfo = m_pendingRequests.equal_range(&request); - AZ_Assert(requestInfo.first != requestInfo.second, "Block cache was asked to complete a file request it never queued."); - - IStreamerTypes::RequestStatus requestStatus = request.GetStatus(); - bool requestWasSuccessful = requestStatus == IStreamerTypes::RequestStatus::Completed; - u32 cacheBlockIndex = requestInfo.first->second.m_cacheBlockIndex; - - for (auto it = requestInfo.first; it != requestInfo.second; ++it) + // If set, this is the wait added by the delay when the cache was full. + if (section.m_wait) { - Section& section = it->second; - AZ_Assert(section.m_cacheBlockIndex == cacheBlockIndex, - "Section associated with the file request is referencing the incorrect cache block (%u vs %u).", cacheBlockIndex, section.m_cacheBlockIndex); - if (section.m_wait) - { - section.m_wait->SetStatus(requestStatus); - m_context->MarkRequestAsCompleted(section.m_wait); - section.m_wait = nullptr; - } + m_context->MarkRequestAsCompleted(section.m_wait); + section.m_wait = nullptr; + } - if (requestWasSuccessful) - { - memcpy(section.m_output, GetCacheBlockData(cacheBlockIndex) + section.m_blockOffset, section.m_copySize); - } + m_hitRateStat.PushSample(1.0); + Statistic::PlotImmediate(m_name, CacheHitRateName, m_hitRateStat.GetMostRecentSample()); + + return ReadFromCache(request, section, cacheLocation); + } + } + + void BlockCache::CompleteRead(FileRequest& request) + { + auto requestInfo = m_pendingRequests.equal_range(&request); + AZ_Assert(requestInfo.first != requestInfo.second, "Block cache was asked to complete a file request it never queued."); + + IStreamerTypes::RequestStatus requestStatus = request.GetStatus(); + bool requestWasSuccessful = requestStatus == IStreamerTypes::RequestStatus::Completed; + u32 cacheBlockIndex = requestInfo.first->second.m_cacheBlockIndex; + + for (auto it = requestInfo.first; it != requestInfo.second; ++it) + { + Section& section = it->second; + AZ_Assert(section.m_cacheBlockIndex == cacheBlockIndex, + "Section associated with the file request is referencing the incorrect cache block (%u vs %u).", cacheBlockIndex, section.m_cacheBlockIndex); + if (section.m_wait) + { + section.m_wait->SetStatus(requestStatus); + m_context->MarkRequestAsCompleted(section.m_wait); + section.m_wait = nullptr; } if (requestWasSuccessful) { - TouchBlock(cacheBlockIndex); - m_inFlightRequests[cacheBlockIndex] = nullptr; + memcpy(section.m_output, GetCacheBlockData(cacheBlockIndex) + section.m_blockOffset, section.m_copySize); } - else - { - ResetCacheEntry(cacheBlockIndex); - } - AZ_Assert(m_numInFlightRequests > 0, "Clearing out an in-flight request, but there shouldn't be any in flight according to records."); - m_numInFlightRequests--; - m_pendingRequests.erase(&request); } - bool BlockCache::SplitRequest(Section& prolog, Section& main, Section& epilog, - [[maybe_unused]] const RequestPath& filePath, u64 fileLength, - u64 offset, u64 size, u8* buffer) const + if (requestWasSuccessful) { - AZ_Assert(offset + size <= fileLength, "File at path '%s' is being read past the end of the file.", filePath.GetRelativePath()); + TouchBlock(cacheBlockIndex); + m_inFlightRequests[cacheBlockIndex] = nullptr; + } + else + { + ResetCacheEntry(cacheBlockIndex); + } + AZ_Assert(m_numInFlightRequests > 0, "Clearing out an in-flight request, but there shouldn't be any in flight according to records."); + m_numInFlightRequests--; + m_pendingRequests.erase(&request); + } - // - // Prolog - // This looks at the request and sees if there's anything in front of the file that should be cached. This also - // deals with the situation where the entire file request fits inside the cache which could mean there's data - // left after the file as well that could be cached. - // - u64 roundedOffsetStart = AZ_SIZE_ALIGN_DOWN(offset, aznumeric_cast(m_blockSize)); - - u64 blockReadSizeStart = AZStd::min(fileLength - roundedOffsetStart, aznumeric_cast(m_blockSize)); - // Check if the request is on the left edge of the cache block, which means there's nothing in front of it - // that could be cached. - if (roundedOffsetStart == offset) - { - if (offset + size >= fileLength) - { - // The entire (remainder) of the file is read so there's nothing to cache - main.m_readOffset = offset; - main.m_readSize = size; - main.m_output = buffer; - main.m_used = true; - return true; - } - else if (size < blockReadSizeStart) - { - // The entire request fits inside a single cache block, but there's more file to read. - prolog.m_readOffset = offset; - prolog.m_readSize = blockReadSizeStart; - prolog.m_blockOffset = 0; - prolog.m_output = buffer; - prolog.m_copySize = size; - prolog.m_used = true; - return true; - } - // In any other case it means that the entire block would be read so caching has no effect. - } - else - { - // There is a portion of the file before that's not requested so always cache this block. - const u64 blockOffset = offset - roundedOffsetStart; - prolog.m_readOffset = roundedOffsetStart; - prolog.m_blockOffset = blockOffset; - prolog.m_output = buffer; - prolog.m_used = true; + bool BlockCache::SplitRequest(Section& prolog, Section& main, Section& epilog, + [[maybe_unused]] const RequestPath& filePath, u64 fileLength, + u64 offset, u64 size, u8* buffer) const + { + AZ_Assert(offset + size <= fileLength, "File at path '%s' is being read past the end of the file.", filePath.GetRelativePath()); - const bool isEntirelyInCache = blockOffset + size <= blockReadSizeStart; - if (isEntirelyInCache) - { - // The read size is already clamped to the file size above when blockReadSizeStart is set. - AZ_Assert(roundedOffsetStart + blockReadSizeStart <= fileLength, - "Read size in block cache was set to %llu but this is beyond the file length of %llu.", - roundedOffsetStart + blockReadSizeStart, fileLength); - prolog.m_readSize = blockReadSizeStart; - prolog.m_copySize = size; + // + // Prolog + // This looks at the request and sees if there's anything in front of the file that should be cached. This also + // deals with the situation where the entire file request fits inside the cache which could mean there's data + // left after the file as well that could be cached. + // + u64 roundedOffsetStart = AZ_SIZE_ALIGN_DOWN(offset, aznumeric_cast(m_blockSize)); - // There won't be anything else coming after this so continue reading. - return true; - } - else - { - prolog.m_readSize = blockReadSizeStart; - prolog.m_copySize = blockReadSizeStart - blockOffset; - } - } - - - // - // Epilog - // Since the prolog already takes care of the situation where the file fits entirely in the cache the epilog is - // much simpler as it only has to look at the case where there is more file after the request to read for caching. - // - u64 roundedOffsetEnd = AZ_SIZE_ALIGN_DOWN(offset + size, aznumeric_cast(m_blockSize)); - u64 copySize = offset + size - roundedOffsetEnd; - u64 blockReadSizeEnd = m_blockSize; - if ((roundedOffsetEnd + blockReadSizeEnd) > fileLength) + u64 blockReadSizeStart = AZStd::min(fileLength - roundedOffsetStart, aznumeric_cast(m_blockSize)); + // Check if the request is on the left edge of the cache block, which means there's nothing in front of it + // that could be cached. + if (roundedOffsetStart == offset) + { + if (offset + size >= fileLength) { - blockReadSizeEnd = fileLength - roundedOffsetEnd; - } - - // If the read doesn't align with the edge of the cache - if (copySize != 0 && copySize < blockReadSizeEnd) - { - epilog.m_readOffset = roundedOffsetEnd; - epilog.m_readSize = blockReadSizeEnd; - epilog.m_blockOffset = 0; - epilog.m_output = buffer + (roundedOffsetEnd - offset); - epilog.m_copySize = copySize; - epilog.m_used = true; - } - - // - // Main - // If this point is reached there's potentially a block between the prolog and epilog that can be directly read. - // - u64 adjustedOffset = offset; - if (prolog.m_used) - { - adjustedOffset += prolog.m_copySize; - size -= prolog.m_copySize; - } - if (epilog.m_used) - { - size -= epilog.m_copySize; - } - AZ_Assert(IStreamerTypes::IsAlignedTo(adjustedOffset, m_blockSize), - "The adjustments made by the prolog should guarantee the offset is aligned to a cache block."); - if (size != 0) - { - main.m_readOffset = adjustedOffset; + // The entire (remainder) of the file is read so there's nothing to cache + main.m_readOffset = offset; main.m_readSize = size; - main.m_output = buffer + (adjustedOffset - offset); + main.m_output = buffer; main.m_used = true; + return true; } - - return true; - } - - u8* BlockCache::GetCacheBlockData(u32 index) - { - AZ_Assert(index < m_numBlocks, "Index for touch a cache entry in the BlockCache is out of bounds."); - return m_cache + (index * m_blockSize); - } - - void BlockCache::TouchBlock(u32 index) - { - AZ_Assert(index < m_numBlocks, "Index for touch a cache entry in the BlockCache is out of bounds."); - m_blockLastTouched[index] = AZStd::chrono::high_resolution_clock::now(); - } - - u32 BlockCache::RecycleOldestBlock(const RequestPath& filePath, u64 offset) - { - AZ_Assert((offset & (m_blockSize - 1)) == 0, "The offset used to recycle a block cache needs to be a multiple of the block size."); - - // Find the oldest cache block. - TimePoint oldest = m_blockLastTouched[0]; - u32 oldestIndex = 0; - for (u32 i = 1; i < m_numBlocks; ++i) + else if (size < blockReadSizeStart) { - if (m_blockLastTouched[i] < oldest && !m_inFlightRequests[i]) - { - oldest = m_blockLastTouched[i]; - oldestIndex = i; - } + // The entire request fits inside a single cache block, but there's more file to read. + prolog.m_readOffset = offset; + prolog.m_readSize = blockReadSizeStart; + prolog.m_blockOffset = 0; + prolog.m_output = buffer; + prolog.m_copySize = size; + prolog.m_used = true; + return true; } + // In any other case it means that the entire block would be read so caching has no effect. + } + else + { + // There is a portion of the file before that's not requested so always cache this block. + const u64 blockOffset = offset - roundedOffsetStart; + prolog.m_readOffset = roundedOffsetStart; + prolog.m_blockOffset = blockOffset; + prolog.m_output = buffer; + prolog.m_used = true; - if (!IsCacheBlockInFlight(oldestIndex)) + const bool isEntirelyInCache = blockOffset + size <= blockReadSizeStart; + if (isEntirelyInCache) { - // Recycle the block. - m_cachedPaths[oldestIndex] = filePath; - m_cachedOffsets[oldestIndex] = offset; - TouchBlock(oldestIndex); - return oldestIndex; + // The read size is already clamped to the file size above when blockReadSizeStart is set. + AZ_Assert(roundedOffsetStart + blockReadSizeStart <= fileLength, + "Read size in block cache was set to %llu but this is beyond the file length of %llu.", + roundedOffsetStart + blockReadSizeStart, fileLength); + prolog.m_readSize = blockReadSizeStart; + prolog.m_copySize = size; + + // There won't be anything else coming after this so continue reading. + return true; } else { - return s_fileNotCached; + prolog.m_readSize = blockReadSizeStart; + prolog.m_copySize = blockReadSizeStart - blockOffset; } } - u32 BlockCache::FindInCache(const RequestPath& filePath, u64 offset) const - { - AZ_Assert((offset & (m_blockSize - 1)) == 0, "The offset used to find a block in the block cache needs to be a multiple of the block size."); - for (u32 i = 0; i < m_numBlocks; ++i) - { - if (m_cachedPaths[i] == filePath && m_cachedOffsets[i] == offset) - { - return i; - } - } + // + // Epilog + // Since the prolog already takes care of the situation where the file fits entirely in the cache the epilog is + // much simpler as it only has to look at the case where there is more file after the request to read for caching. + // + u64 roundedOffsetEnd = AZ_SIZE_ALIGN_DOWN(offset + size, aznumeric_cast(m_blockSize)); + u64 copySize = offset + size - roundedOffsetEnd; + u64 blockReadSizeEnd = m_blockSize; + if ((roundedOffsetEnd + blockReadSizeEnd) > fileLength) + { + blockReadSizeEnd = fileLength - roundedOffsetEnd; + } + + // If the read doesn't align with the edge of the cache + if (copySize != 0 && copySize < blockReadSizeEnd) + { + epilog.m_readOffset = roundedOffsetEnd; + epilog.m_readSize = blockReadSizeEnd; + epilog.m_blockOffset = 0; + epilog.m_output = buffer + (roundedOffsetEnd - offset); + epilog.m_copySize = copySize; + epilog.m_used = true; + } + + // + // Main + // If this point is reached there's potentially a block between the prolog and epilog that can be directly read. + // + u64 adjustedOffset = offset; + if (prolog.m_used) + { + adjustedOffset += prolog.m_copySize; + size -= prolog.m_copySize; + } + if (epilog.m_used) + { + size -= epilog.m_copySize; + } + AZ_Assert(IStreamerTypes::IsAlignedTo(adjustedOffset, m_blockSize), + "The adjustments made by the prolog should guarantee the offset is aligned to a cache block."); + if (size != 0) + { + main.m_readOffset = adjustedOffset; + main.m_readSize = size; + main.m_output = buffer + (adjustedOffset - offset); + main.m_used = true; + } + + return true; + } + + u8* BlockCache::GetCacheBlockData(u32 index) + { + AZ_Assert(index < m_numBlocks, "Index for touch a cache entry in the BlockCache is out of bounds."); + return m_cache + (index * m_blockSize); + } + + void BlockCache::TouchBlock(u32 index) + { + AZ_Assert(index < m_numBlocks, "Index for touch a cache entry in the BlockCache is out of bounds."); + m_blockLastTouched[index] = AZStd::chrono::high_resolution_clock::now(); + } + + u32 BlockCache::RecycleOldestBlock(const RequestPath& filePath, u64 offset) + { + AZ_Assert((offset & (m_blockSize - 1)) == 0, "The offset used to recycle a block cache needs to be a multiple of the block size."); + + // Find the oldest cache block. + TimePoint oldest = m_blockLastTouched[0]; + u32 oldestIndex = 0; + for (u32 i = 1; i < m_numBlocks; ++i) + { + if (m_blockLastTouched[i] < oldest && !m_inFlightRequests[i]) + { + oldest = m_blockLastTouched[i]; + oldestIndex = i; + } + } + + if (!IsCacheBlockInFlight(oldestIndex)) + { + // Recycle the block. + m_cachedPaths[oldestIndex] = filePath; + m_cachedOffsets[oldestIndex] = offset; + TouchBlock(oldestIndex); + return oldestIndex; + } + else + { return s_fileNotCached; } + } - bool BlockCache::IsCacheBlockInFlight(u32 index) const + u32 BlockCache::FindInCache(const RequestPath& filePath, u64 offset) const + { + AZ_Assert((offset & (m_blockSize - 1)) == 0, "The offset used to find a block in the block cache needs to be a multiple of the block size."); + for (u32 i = 0; i < m_numBlocks; ++i) { - AZ_Assert(index < m_numBlocks, "Index for checking if a cache block is in flight is out of bounds."); - return m_inFlightRequests[index] != nullptr; - } - - void BlockCache::ResetCacheEntry(u32 index) - { - AZ_Assert(index < m_numBlocks, "Index for resetting a cache entry in the BlockCache is out of bounds."); - - m_cachedPaths[index].Clear(); - m_cachedOffsets[index] = 0; - m_blockLastTouched[index] = TimePoint::min(); - m_inFlightRequests[index] = nullptr; - } - - void BlockCache::ResetCache() - { - for (u32 i = 0; i < m_numBlocks; ++i) + if (m_cachedPaths[i] == filePath && m_cachedOffsets[i] == offset) { - ResetCacheEntry(i); + return i; } - m_numInFlightRequests = 0; } - } // namespace IO -} // namespace AZ + + return s_fileNotCached; + } + + bool BlockCache::IsCacheBlockInFlight(u32 index) const + { + AZ_Assert(index < m_numBlocks, "Index for checking if a cache block is in flight is out of bounds."); + return m_inFlightRequests[index] != nullptr; + } + + void BlockCache::ResetCacheEntry(u32 index) + { + AZ_Assert(index < m_numBlocks, "Index for resetting a cache entry in the BlockCache is out of bounds."); + + m_cachedPaths[index].Clear(); + m_cachedOffsets[index] = 0; + m_blockLastTouched[index] = TimePoint::min(); + m_inFlightRequests[index] = nullptr; + } + + void BlockCache::ResetCache() + { + for (u32 i = 0; i < m_numBlocks; ++i) + { + ResetCacheEntry(i); + } + m_numInFlightRequests = 0; + } +} // namespace AZ::IO diff --git a/Code/Framework/AzCore/AzCore/IO/Streamer/DedicatedCache.cpp b/Code/Framework/AzCore/AzCore/IO/Streamer/DedicatedCache.cpp index e0e512e21f..b80a1ea724 100644 --- a/Code/Framework/AzCore/AzCore/IO/Streamer/DedicatedCache.cpp +++ b/Code/Framework/AzCore/AzCore/IO/Streamer/DedicatedCache.cpp @@ -12,320 +12,317 @@ #include #include -namespace AZ +namespace AZ::IO { - namespace IO + AZStd::shared_ptr DedicatedCacheConfig::AddStreamStackEntry( + const HardwareInformation& hardware, AZStd::shared_ptr parent) { - AZStd::shared_ptr DedicatedCacheConfig::AddStreamStackEntry( - const HardwareInformation& hardware, AZStd::shared_ptr parent) + size_t blockSize; + switch (m_blockSize) { - size_t blockSize; - switch (m_blockSize) + case BlockCacheConfig::BlockSize::MaxTransfer: + blockSize = hardware.m_maxTransfer; + break; + case BlockCacheConfig::BlockSize::MemoryAlignment: + blockSize = hardware.m_maxPhysicalSectorSize; + break; + case BlockCacheConfig::BlockSize::SizeAlignment: + blockSize = hardware.m_maxLogicalSectorSize; + break; + default: + blockSize = m_blockSize; + break; + } + + u32 cacheSize = static_cast(m_cacheSizeMib * 1_mib); + if (blockSize > cacheSize) + { + AZ_Warning("Streamer", false, "Size (%u) for DedicatedCache isn't big enough to hold at least one cache blocks of size (%zu). " + "The cache size will be increased to fit one cache block.", cacheSize, blockSize); + cacheSize = aznumeric_caster(blockSize); + } + + auto stackEntry = AZStd::make_shared( + cacheSize, aznumeric_cast(blockSize), aznumeric_cast(hardware.m_maxPhysicalSectorSize), m_writeOnlyEpilog); + stackEntry->SetNext(AZStd::move(parent)); + return stackEntry; + } + + void DedicatedCacheConfig::Reflect(AZ::ReflectContext* context) + { + if (auto serializeContext = azrtti_cast(context); serializeContext != nullptr) + { + serializeContext->Class() + ->Version(1) + ->Field("CacheSizeMib", &DedicatedCacheConfig::m_cacheSizeMib) + ->Field("BlockSize", &DedicatedCacheConfig::m_blockSize) + ->Field("WriteOnlyEpilog", &DedicatedCacheConfig::m_writeOnlyEpilog); + } + } + + + + // + // DedicatedCache + // + + DedicatedCache::DedicatedCache(u64 cacheSize, u32 blockSize, u32 alignment, bool onlyEpilogWrites) + : StreamStackEntry("Dedicated cache") + , m_cacheSize(cacheSize) + , m_alignment(alignment) + , m_blockSize(blockSize) + , m_onlyEpilogWrites(onlyEpilogWrites) + { + } + + void DedicatedCache::SetNext(AZStd::shared_ptr next) + { + m_next = AZStd::move(next); + for (AZStd::unique_ptr& cache : m_cachedFileCaches) + { + cache->SetNext(m_next); + } + } + + void DedicatedCache::SetContext(StreamerContext& context) + { + StreamStackEntry::SetContext(context); + for (AZStd::unique_ptr& cache : m_cachedFileCaches) + { + cache->SetContext(context); + } + } + + void DedicatedCache::PrepareRequest(FileRequest* request) + { + AZ_Assert(request, "PrepareRequest was provided a null request."); + + // Claim the requests so other entries can't claim it and make updates. + AZStd::visit([this, request](auto&& args) + { + using Command = AZStd::decay_t; + if constexpr (AZStd::is_same_v) { - case BlockCacheConfig::BlockSize::MaxTransfer: - blockSize = hardware.m_maxTransfer; - break; - case BlockCacheConfig::BlockSize::MemoryAlignment: - blockSize = hardware.m_maxPhysicalSectorSize; - break; - case BlockCacheConfig::BlockSize::SizeAlignment: - blockSize = hardware.m_maxLogicalSectorSize; - break; - default: - blockSize = m_blockSize; - break; + args.m_range = FileRange::CreateRangeForEntireFile(); + m_context->PushPreparedRequest(request); } - - u32 cacheSize = static_cast(m_cacheSizeMib * 1_mib); - if (blockSize > cacheSize) + else if constexpr (AZStd::is_same_v) { - AZ_Warning("Streamer", false, "Size (%u) for DedicatedCache isn't big enough to hold at least one cache blocks of size (%zu). " - "The cache size will be increased to fit one cache block.", cacheSize, blockSize); - cacheSize = aznumeric_caster(blockSize); - } - - auto stackEntry = AZStd::make_shared( - cacheSize, aznumeric_cast(blockSize), aznumeric_cast(hardware.m_maxPhysicalSectorSize), m_writeOnlyEpilog); - stackEntry->SetNext(AZStd::move(parent)); - return stackEntry; - } - - void DedicatedCacheConfig::Reflect(AZ::ReflectContext* context) - { - if (auto serializeContext = azrtti_cast(context); serializeContext != nullptr) - { - serializeContext->Class() - ->Version(1) - ->Field("CacheSizeMib", &DedicatedCacheConfig::m_cacheSizeMib) - ->Field("BlockSize", &DedicatedCacheConfig::m_blockSize) - ->Field("WriteOnlyEpilog", &DedicatedCacheConfig::m_writeOnlyEpilog); - } - } - - - - // - // DedicatedCache - // - - DedicatedCache::DedicatedCache(u64 cacheSize, u32 blockSize, u32 alignment, bool onlyEpilogWrites) - : StreamStackEntry("Dedicated cache") - , m_cacheSize(cacheSize) - , m_alignment(alignment) - , m_blockSize(blockSize) - , m_onlyEpilogWrites(onlyEpilogWrites) - { - } - - void DedicatedCache::SetNext(AZStd::shared_ptr next) - { - m_next = AZStd::move(next); - for (AZStd::unique_ptr& cache : m_cachedFileCaches) - { - cache->SetNext(m_next); - } - } - - void DedicatedCache::SetContext(StreamerContext& context) - { - StreamStackEntry::SetContext(context); - for (AZStd::unique_ptr& cache : m_cachedFileCaches) - { - cache->SetContext(context); - } - } - - void DedicatedCache::PrepareRequest(FileRequest* request) - { - AZ_Assert(request, "PrepareRequest was provided a null request."); - - // Claim the requests so other entries can't claim it and make updates. - AZStd::visit([this, request](auto&& args) - { - using Command = AZStd::decay_t; - if constexpr (AZStd::is_same_v) - { - args.m_range = FileRange::CreateRangeForEntireFile(); - m_context->PushPreparedRequest(request); - } - else if constexpr (AZStd::is_same_v) - { - args.m_range = FileRange::CreateRangeForEntireFile(); - m_context->PushPreparedRequest(request); - } - else - { - StreamStackEntry::PrepareRequest(request); - } - }, request->GetCommand()); - } - - void DedicatedCache::QueueRequest(FileRequest* request) - { - AZ_Assert(request, "QueueRequest was provided a null request."); - - AZStd::visit([this, request](auto&& args) - { - using Command = AZStd::decay_t; - if constexpr (AZStd::is_same_v) - { - ReadFile(request, args); - return; - } - else if constexpr (AZStd::is_same_v) - { - CreateDedicatedCache(request, args); - return; - } - else if constexpr (AZStd::is_same_v) - { - DestroyDedicatedCache(request, args); - return; - } - else - { - if constexpr (AZStd::is_same_v) - { - FlushCache(args.m_path); - } - else if constexpr (AZStd::is_same_v) - { - FlushEntireCache(); - } - StreamStackEntry::QueueRequest(request); - } - }, request->GetCommand()); - } - - bool DedicatedCache::ExecuteRequests() - { - bool hasProcessedRequest = false; - for (AZStd::unique_ptr& cache : m_cachedFileCaches) - { - hasProcessedRequest = cache->ExecuteRequests() || hasProcessedRequest; - } - return StreamStackEntry::ExecuteRequests() || hasProcessedRequest; - } - - void DedicatedCache::UpdateStatus(Status& status) const - { - // Available slots are not updated because the dedicated caches are often - // small and specific to a tiny subset of files that are loaded. It would therefore - // return a small number of slots that would needlessly hamper streaming as it doesn't - // apply to the majority of files. - - bool isIdle = true; - for (auto& cache : m_cachedFileCaches) - { - Status blockStatus; - cache->UpdateStatus(blockStatus); - isIdle = isIdle && blockStatus.m_isIdle; - } - status.m_isIdle = status.m_isIdle && isIdle; - StreamStackEntry::UpdateStatus(status); - } - - void DedicatedCache::UpdateCompletionEstimates(AZStd::chrono::system_clock::time_point now, - AZStd::vector& internalPending, StreamerContext::PreparedQueue::iterator pendingBegin, - StreamerContext::PreparedQueue::iterator pendingEnd) - { - for (auto& cache : m_cachedFileCaches) - { - cache->AddDelayedRequests(internalPending); - } - - StreamStackEntry::UpdateCompletionEstimates(now, internalPending, pendingBegin, pendingEnd); - - for (auto& cache : m_cachedFileCaches) - { - cache->UpdatePendingRequestEstimations(); - } - } - - void DedicatedCache::ReadFile(FileRequest* request, FileRequest::ReadData& data) - { - size_t index = FindCache(data.m_path, data.m_offset); - if (index == s_fileNotFound) - { - m_usagePercentageStat.PushSample(0.0); - if (m_next) - { - m_next->QueueRequest(request); - } + args.m_range = FileRange::CreateRangeForEntireFile(); + m_context->PushPreparedRequest(request); } else { - m_usagePercentageStat.PushSample(1.0); - BlockCache& cache = *m_cachedFileCaches[index]; - cache.QueueRequest(request); -#if AZ_STREAMER_ADD_EXTRA_PROFILING_INFO - m_overallHitRateStat.PushSample(cache.CalculateHitRatePercentage()); - m_overallCacheableRateStat.PushSample(cache.CalculateCacheableRatePercentage()); -#endif + StreamStackEntry::PrepareRequest(request); } - } + }, request->GetCommand()); + } - void DedicatedCache::FlushCache(const RequestPath& filePath) + void DedicatedCache::QueueRequest(FileRequest* request) + { + AZ_Assert(request, "QueueRequest was provided a null request."); + + AZStd::visit([this, request](auto&& args) { - size_t count = m_cachedFileNames.size(); - for (size_t i = 0; i < count; ++i) + using Command = AZStd::decay_t; + if constexpr (AZStd::is_same_v) { - if (m_cachedFileNames[i] == filePath) - { - // Flush the entire block cache as it's entirely dedicated to the found file. - m_cachedFileCaches[i]->FlushEntireCache(); - } + ReadFile(request, args); + return; } - } - - void DedicatedCache::FlushEntireCache() - { - for (AZStd::unique_ptr& cache : m_cachedFileCaches) + else if constexpr (AZStd::is_same_v) { - cache->FlushEntireCache(); + CreateDedicatedCache(request, args); + return; } - } - - void DedicatedCache::CollectStatistics(AZStd::vector& statistics) const - { - statistics.push_back(Statistic::CreatePercentage(m_name, "Reads from dedicated cache", m_usagePercentageStat.GetAverage())); -#if AZ_STREAMER_ADD_EXTRA_PROFILING_INFO - statistics.push_back(Statistic::CreatePercentage(m_name, "Overall cacheable rate", m_overallCacheableRateStat.GetAverage())); - statistics.push_back(Statistic::CreatePercentage(m_name, "Overall hit rate", m_overallHitRateStat.GetAverage())); -#endif - statistics.push_back(Statistic::CreateInteger(m_name, "Num dedicated caches", aznumeric_caster(m_cachedFileNames.size()))); - StreamStackEntry::CollectStatistics(statistics); - } - - void DedicatedCache::CreateDedicatedCache(FileRequest* request, FileRequest::CreateDedicatedCacheData& data) - { - size_t index = FindCache(data.m_path, data.m_range); - if (index == s_fileNotFound) + else if constexpr (AZStd::is_same_v) { - index = m_cachedFileCaches.size(); - m_cachedFileNames.push_back(data.m_path); - m_cachedFileRanges.push_back(data.m_range); - m_cachedFileCaches.push_back(AZStd::make_unique(m_cacheSize, m_blockSize, m_alignment, m_onlyEpilogWrites)); - m_cachedFileCaches[index]->SetNext(m_next); - m_cachedFileCaches[index]->SetContext(*m_context); - m_cachedFileRefCounts.push_back(1); + DestroyDedicatedCache(request, args); + return; } else { - ++m_cachedFileRefCounts[index]; + if constexpr (AZStd::is_same_v) + { + FlushCache(args.m_path); + } + else if constexpr (AZStd::is_same_v) + { + FlushEntireCache(); + } + StreamStackEntry::QueueRequest(request); } - request->SetStatus(IStreamerTypes::RequestStatus::Completed); - m_context->MarkRequestAsCompleted(request); + }, request->GetCommand()); + } + + bool DedicatedCache::ExecuteRequests() + { + bool hasProcessedRequest = false; + for (AZStd::unique_ptr& cache : m_cachedFileCaches) + { + hasProcessedRequest = cache->ExecuteRequests() || hasProcessedRequest; + } + return StreamStackEntry::ExecuteRequests() || hasProcessedRequest; + } + + void DedicatedCache::UpdateStatus(Status& status) const + { + // Available slots are not updated because the dedicated caches are often + // small and specific to a tiny subset of files that are loaded. It would therefore + // return a small number of slots that would needlessly hamper streaming as it doesn't + // apply to the majority of files. + + bool isIdle = true; + for (auto& cache : m_cachedFileCaches) + { + Status blockStatus; + cache->UpdateStatus(blockStatus); + isIdle = isIdle && blockStatus.m_isIdle; + } + status.m_isIdle = status.m_isIdle && isIdle; + StreamStackEntry::UpdateStatus(status); + } + + void DedicatedCache::UpdateCompletionEstimates(AZStd::chrono::system_clock::time_point now, + AZStd::vector& internalPending, StreamerContext::PreparedQueue::iterator pendingBegin, + StreamerContext::PreparedQueue::iterator pendingEnd) + { + for (auto& cache : m_cachedFileCaches) + { + cache->AddDelayedRequests(internalPending); } - void DedicatedCache::DestroyDedicatedCache(FileRequest* request, FileRequest::DestroyDedicatedCacheData& data) - { - size_t index = FindCache(data.m_path, data.m_range); - if (index != s_fileNotFound) - { - if (m_cachedFileRefCounts[index] > 0) - { - --m_cachedFileRefCounts[index]; - if (m_cachedFileRefCounts[index] == 0) - { - m_cachedFileNames.erase(m_cachedFileNames.begin() + index); - m_cachedFileRanges.erase(m_cachedFileRanges.begin() + index); - m_cachedFileCaches.erase(m_cachedFileCaches.begin() + index); - m_cachedFileRefCounts.erase(m_cachedFileRefCounts.begin() + index); - } - request->SetStatus(IStreamerTypes::RequestStatus::Completed); - m_context->MarkRequestAsCompleted(request); - return; - } - } - request->SetStatus(IStreamerTypes::RequestStatus::Failed); - m_context->MarkRequestAsCompleted(request); - } + StreamStackEntry::UpdateCompletionEstimates(now, internalPending, pendingBegin, pendingEnd); - size_t DedicatedCache::FindCache(const RequestPath& filename, FileRange range) + for (auto& cache : m_cachedFileCaches) { - size_t count = m_cachedFileNames.size(); - for (size_t i = 0; i < count; ++i) - { - if (m_cachedFileNames[i] == filename && m_cachedFileRanges[i] == range) - { - return i; - } - } - return s_fileNotFound; + cache->UpdatePendingRequestEstimations(); } + } - size_t DedicatedCache::FindCache(const RequestPath& filename, u64 offset) + void DedicatedCache::ReadFile(FileRequest* request, FileRequest::ReadData& data) + { + size_t index = FindCache(data.m_path, data.m_offset); + if (index == s_fileNotFound) { - size_t count = m_cachedFileNames.size(); - for (size_t i = 0; i < count; ++i) + m_usagePercentageStat.PushSample(0.0); + if (m_next) { - if (m_cachedFileNames[i] == filename && m_cachedFileRanges[i].IsInRange(offset)) - { - return i; - } + m_next->QueueRequest(request); } - return s_fileNotFound; } - } // namespace IO -} // namespace AZ + else + { + m_usagePercentageStat.PushSample(1.0); + BlockCache& cache = *m_cachedFileCaches[index]; + cache.QueueRequest(request); +#if AZ_STREAMER_ADD_EXTRA_PROFILING_INFO + m_overallHitRateStat.PushSample(cache.CalculateHitRatePercentage()); + m_overallCacheableRateStat.PushSample(cache.CalculateCacheableRatePercentage()); +#endif + } + } + + void DedicatedCache::FlushCache(const RequestPath& filePath) + { + size_t count = m_cachedFileNames.size(); + for (size_t i = 0; i < count; ++i) + { + if (m_cachedFileNames[i] == filePath) + { + // Flush the entire block cache as it's entirely dedicated to the found file. + m_cachedFileCaches[i]->FlushEntireCache(); + } + } + } + + void DedicatedCache::FlushEntireCache() + { + for (AZStd::unique_ptr& cache : m_cachedFileCaches) + { + cache->FlushEntireCache(); + } + } + + void DedicatedCache::CollectStatistics(AZStd::vector& statistics) const + { + statistics.push_back(Statistic::CreatePercentage(m_name, "Reads from dedicated cache", m_usagePercentageStat.GetAverage())); +#if AZ_STREAMER_ADD_EXTRA_PROFILING_INFO + statistics.push_back(Statistic::CreatePercentage(m_name, "Overall cacheable rate", m_overallCacheableRateStat.GetAverage())); + statistics.push_back(Statistic::CreatePercentage(m_name, "Overall hit rate", m_overallHitRateStat.GetAverage())); +#endif + statistics.push_back(Statistic::CreateInteger(m_name, "Num dedicated caches", aznumeric_caster(m_cachedFileNames.size()))); + StreamStackEntry::CollectStatistics(statistics); + } + + void DedicatedCache::CreateDedicatedCache(FileRequest* request, FileRequest::CreateDedicatedCacheData& data) + { + size_t index = FindCache(data.m_path, data.m_range); + if (index == s_fileNotFound) + { + index = m_cachedFileCaches.size(); + m_cachedFileNames.push_back(data.m_path); + m_cachedFileRanges.push_back(data.m_range); + m_cachedFileCaches.push_back(AZStd::make_unique(m_cacheSize, m_blockSize, m_alignment, m_onlyEpilogWrites)); + m_cachedFileCaches[index]->SetNext(m_next); + m_cachedFileCaches[index]->SetContext(*m_context); + m_cachedFileRefCounts.push_back(1); + } + else + { + ++m_cachedFileRefCounts[index]; + } + request->SetStatus(IStreamerTypes::RequestStatus::Completed); + m_context->MarkRequestAsCompleted(request); + } + + void DedicatedCache::DestroyDedicatedCache(FileRequest* request, FileRequest::DestroyDedicatedCacheData& data) + { + size_t index = FindCache(data.m_path, data.m_range); + if (index != s_fileNotFound) + { + if (m_cachedFileRefCounts[index] > 0) + { + --m_cachedFileRefCounts[index]; + if (m_cachedFileRefCounts[index] == 0) + { + m_cachedFileNames.erase(m_cachedFileNames.begin() + index); + m_cachedFileRanges.erase(m_cachedFileRanges.begin() + index); + m_cachedFileCaches.erase(m_cachedFileCaches.begin() + index); + m_cachedFileRefCounts.erase(m_cachedFileRefCounts.begin() + index); + } + request->SetStatus(IStreamerTypes::RequestStatus::Completed); + m_context->MarkRequestAsCompleted(request); + return; + } + } + request->SetStatus(IStreamerTypes::RequestStatus::Failed); + m_context->MarkRequestAsCompleted(request); + } + + size_t DedicatedCache::FindCache(const RequestPath& filename, FileRange range) + { + size_t count = m_cachedFileNames.size(); + for (size_t i = 0; i < count; ++i) + { + if (m_cachedFileNames[i] == filename && m_cachedFileRanges[i] == range) + { + return i; + } + } + return s_fileNotFound; + } + + size_t DedicatedCache::FindCache(const RequestPath& filename, u64 offset) + { + size_t count = m_cachedFileNames.size(); + for (size_t i = 0; i < count; ++i) + { + if (m_cachedFileNames[i] == filename && m_cachedFileRanges[i].IsInRange(offset)) + { + return i; + } + } + return s_fileNotFound; + } +} // namespace AZ::IO diff --git a/Code/Framework/AzCore/AzCore/IO/Streamer/FileRange.cpp b/Code/Framework/AzCore/AzCore/IO/Streamer/FileRange.cpp index df4f77b722..3a568d3f47 100644 --- a/Code/Framework/AzCore/AzCore/IO/Streamer/FileRange.cpp +++ b/Code/Framework/AzCore/AzCore/IO/Streamer/FileRange.cpp @@ -8,104 +8,101 @@ #include -namespace AZ +namespace AZ::IO { - namespace IO + FileRange FileRange::CreateRange(u64 offset, u64 size) { - FileRange FileRange::CreateRange(u64 offset, u64 size) - { - FileRange result; - result.m_hasOffsetEndSet = true; - result.m_isEntireFile = false; - result.m_offsetBegin = offset; - result.m_offsetEnd = offset + size; - return result; - } + FileRange result; + result.m_hasOffsetEndSet = true; + result.m_isEntireFile = false; + result.m_offsetBegin = offset; + result.m_offsetEnd = offset + size; + return result; + } - FileRange FileRange::CreateRangeForEntireFile() - { - FileRange result; - result.m_hasOffsetEndSet = false; - result.m_isEntireFile = true; - result.m_offsetBegin = 0; - result.m_offsetEnd = (static_cast(1) << 63) - 1; - return result; - } + FileRange FileRange::CreateRangeForEntireFile() + { + FileRange result; + result.m_hasOffsetEndSet = false; + result.m_isEntireFile = true; + result.m_offsetBegin = 0; + result.m_offsetEnd = (static_cast(1) << 63) - 1; + return result; + } - FileRange FileRange::CreateRangeForEntireFile(u64 fileSize) - { - FileRange result; - result.m_hasOffsetEndSet = true; - result.m_isEntireFile = true; - result.m_offsetBegin = 0; - result.m_offsetEnd = fileSize; - return result; - } + FileRange FileRange::CreateRangeForEntireFile(u64 fileSize) + { + FileRange result; + result.m_hasOffsetEndSet = true; + result.m_isEntireFile = true; + result.m_offsetBegin = 0; + result.m_offsetEnd = fileSize; + return result; + } - FileRange::FileRange() - : m_isEntireFile(false) - , m_offsetBegin(0) - , m_hasOffsetEndSet(false) - , m_offsetEnd(0) - { - } + FileRange::FileRange() + : m_isEntireFile(false) + , m_offsetBegin(0) + , m_hasOffsetEndSet(false) + , m_offsetEnd(0) + { + } - bool FileRange::operator==(const FileRange& rhs) const + bool FileRange::operator==(const FileRange& rhs) const + { + if (m_isEntireFile) { - if (m_isEntireFile) - { - return rhs.m_isEntireFile && m_offsetBegin == rhs.m_offsetBegin; - } - else - { - return m_offsetBegin == rhs.m_offsetBegin && m_offsetEnd == rhs.m_offsetEnd; - } + return rhs.m_isEntireFile && m_offsetBegin == rhs.m_offsetBegin; } + else + { + return m_offsetBegin == rhs.m_offsetBegin && m_offsetEnd == rhs.m_offsetEnd; + } + } - bool FileRange::operator!=(const FileRange& rhs) const + bool FileRange::operator!=(const FileRange& rhs) const + { + if (m_isEntireFile) { - if (m_isEntireFile) - { - return !rhs.m_isEntireFile || m_offsetBegin != rhs.m_offsetBegin; - } - else - { - return m_offsetBegin != rhs.m_offsetBegin || m_offsetEnd != rhs.m_offsetEnd; - } + return !rhs.m_isEntireFile || m_offsetBegin != rhs.m_offsetBegin; } + else + { + return m_offsetBegin != rhs.m_offsetBegin || m_offsetEnd != rhs.m_offsetEnd; + } + } - bool FileRange::IsEntireFile() const - { - return m_isEntireFile != 0; - } + bool FileRange::IsEntireFile() const + { + return m_isEntireFile != 0; + } - bool FileRange::IsSizeKnown() const - { - // m_hasOffsetEndSet being zero has the special meaning that the file size has not - // specifically been set yet. - return m_hasOffsetEndSet != 0; - } + bool FileRange::IsSizeKnown() const + { + // m_hasOffsetEndSet being zero has the special meaning that the file size has not + // specifically been set yet. + return m_hasOffsetEndSet != 0; + } - bool FileRange::IsInRange(u64 offset) const - { - return m_offsetBegin <= offset && offset < m_offsetEnd; - } + bool FileRange::IsInRange(u64 offset) const + { + return m_offsetBegin <= offset && offset < m_offsetEnd; + } - u64 FileRange::GetOffset() const - { - return m_offsetBegin; - } + u64 FileRange::GetOffset() const + { + return m_offsetBegin; + } - u64 FileRange::GetSize() const - { - AZ_Assert(m_hasOffsetEndSet, "Calling GetSize on a FileRange that doesn't have a size specified."); - return m_offsetEnd - m_offsetBegin; - } + u64 FileRange::GetSize() const + { + AZ_Assert(m_hasOffsetEndSet, "Calling GetSize on a FileRange that doesn't have a size specified."); + return m_offsetEnd - m_offsetBegin; + } - u64 FileRange::GetEndPoint() const - { - AZ_Assert(m_hasOffsetEndSet, "Calling GetEndPoint on a FileRange that doesn't have an end offset specified."); - return m_offsetEnd; - } - } // namespace IO -} // namesapce AZ + u64 FileRange::GetEndPoint() const + { + AZ_Assert(m_hasOffsetEndSet, "Calling GetEndPoint on a FileRange that doesn't have an end offset specified."); + return m_offsetEnd; + } +} // namespace AZ::IO diff --git a/Code/Framework/AzCore/AzCore/IO/Streamer/FileRequest.cpp b/Code/Framework/AzCore/AzCore/IO/Streamer/FileRequest.cpp index 7b9cde76d3..fc05b77b36 100644 --- a/Code/Framework/AzCore/AzCore/IO/Streamer/FileRequest.cpp +++ b/Code/Framework/AzCore/AzCore/IO/Streamer/FileRequest.cpp @@ -12,469 +12,466 @@ #include #include -namespace AZ +namespace AZ::IO { - namespace IO + // + // Command structures. + // + + FileRequest::ExternalRequestData::ExternalRequestData(FileRequestPtr&& request) + : m_request(AZStd::move(request)) + {} + + FileRequest::RequestPathStoreData::RequestPathStoreData(RequestPath path) + : m_path(AZStd::move(path)) + {} + + FileRequest::ReadRequestData::ReadRequestData(RequestPath path, void* output, u64 outputSize, u64 offset, u64 size, + AZStd::chrono::system_clock::time_point deadline, IStreamerTypes::Priority priority) + : m_path(AZStd::move(path)) + , m_allocator(nullptr) + , m_deadline(deadline) + , m_output(output) + , m_outputSize(outputSize) + , m_offset(offset) + , m_size(size) + , m_priority(priority) + , m_memoryType(IStreamerTypes::MemoryType::ReadWrite) // Only generic memory can be assigned externally. + {} + + FileRequest::ReadRequestData::ReadRequestData(RequestPath path, IStreamerTypes::RequestMemoryAllocator* allocator, + u64 offset, u64 size, AZStd::chrono::system_clock::time_point deadline, IStreamerTypes::Priority priority) + : m_path(AZStd::move(path)) + , m_allocator(allocator) + , m_deadline(deadline) + , m_output(nullptr) + , m_outputSize(0) + , m_offset(offset) + , m_size(size) + , m_priority(priority) + , m_memoryType(IStreamerTypes::MemoryType::ReadWrite) // Only generic memory can be assigned externally. + {} + + FileRequest::ReadRequestData::~ReadRequestData() { - // - // Command structures. - // - - FileRequest::ExternalRequestData::ExternalRequestData(FileRequestPtr&& request) - : m_request(AZStd::move(request)) - {} - - FileRequest::RequestPathStoreData::RequestPathStoreData(RequestPath path) - : m_path(AZStd::move(path)) - {} - - FileRequest::ReadRequestData::ReadRequestData(RequestPath path, void* output, u64 outputSize, u64 offset, u64 size, - AZStd::chrono::system_clock::time_point deadline, IStreamerTypes::Priority priority) - : m_path(AZStd::move(path)) - , m_allocator(nullptr) - , m_deadline(deadline) - , m_output(output) - , m_outputSize(outputSize) - , m_offset(offset) - , m_size(size) - , m_priority(priority) - , m_memoryType(IStreamerTypes::MemoryType::ReadWrite) // Only generic memory can be assigned externally. - {} - - FileRequest::ReadRequestData::ReadRequestData(RequestPath path, IStreamerTypes::RequestMemoryAllocator* allocator, - u64 offset, u64 size, AZStd::chrono::system_clock::time_point deadline, IStreamerTypes::Priority priority) - : m_path(AZStd::move(path)) - , m_allocator(allocator) - , m_deadline(deadline) - , m_output(nullptr) - , m_outputSize(0) - , m_offset(offset) - , m_size(size) - , m_priority(priority) - , m_memoryType(IStreamerTypes::MemoryType::ReadWrite) // Only generic memory can be assigned externally. - {} - - FileRequest::ReadRequestData::~ReadRequestData() + if (m_allocator != nullptr) { - if (m_allocator != nullptr) + if (m_output != nullptr) { - if (m_output != nullptr) - { - m_allocator->Release(m_output); - } - m_allocator->UnlockAllocator(); + m_allocator->Release(m_output); } + m_allocator->UnlockAllocator(); } + } - FileRequest::ReadData::ReadData(void* output, u64 outputSize, const RequestPath& path, u64 offset, u64 size, bool sharedRead) - : m_output(output) - , m_outputSize(outputSize) - , m_path(path) - , m_offset(offset) - , m_size(size) - , m_sharedRead(sharedRead) - {} + FileRequest::ReadData::ReadData(void* output, u64 outputSize, const RequestPath& path, u64 offset, u64 size, bool sharedRead) + : m_output(output) + , m_outputSize(outputSize) + , m_path(path) + , m_offset(offset) + , m_size(size) + , m_sharedRead(sharedRead) + {} - FileRequest::CompressedReadData::CompressedReadData(CompressionInfo&& compressionInfo, void* output, u64 readOffset, u64 readSize) - : m_compressionInfo(AZStd::move(compressionInfo)) - , m_output(output) - , m_readOffset(readOffset) - , m_readSize(readSize) - {} + FileRequest::CompressedReadData::CompressedReadData(CompressionInfo&& compressionInfo, void* output, u64 readOffset, u64 readSize) + : m_compressionInfo(AZStd::move(compressionInfo)) + , m_output(output) + , m_readOffset(readOffset) + , m_readSize(readSize) + {} - FileRequest::FileExistsCheckData::FileExistsCheckData(const RequestPath& path) - : m_path(path) - {} + FileRequest::FileExistsCheckData::FileExistsCheckData(const RequestPath& path) + : m_path(path) + {} - FileRequest::FileMetaDataRetrievalData::FileMetaDataRetrievalData(const RequestPath& path) - : m_path(path) - {} + FileRequest::FileMetaDataRetrievalData::FileMetaDataRetrievalData(const RequestPath& path) + : m_path(path) + {} - FileRequest::CancelData::CancelData(FileRequestPtr target) - : m_target(AZStd::move(target)) - {} + FileRequest::CancelData::CancelData(FileRequestPtr target) + : m_target(AZStd::move(target)) + {} - FileRequest::FlushData::FlushData(RequestPath path) - : m_path(AZStd::move(path)) - {} + FileRequest::FlushData::FlushData(RequestPath path) + : m_path(AZStd::move(path)) + {} - FileRequest::RescheduleData::RescheduleData(FileRequestPtr target, AZStd::chrono::system_clock::time_point newDeadline, - IStreamerTypes::Priority newPriority) - : m_target(AZStd::move(target)) - , m_newDeadline(newDeadline) - , m_newPriority(newPriority) - {} + FileRequest::RescheduleData::RescheduleData(FileRequestPtr target, AZStd::chrono::system_clock::time_point newDeadline, + IStreamerTypes::Priority newPriority) + : m_target(AZStd::move(target)) + , m_newDeadline(newDeadline) + , m_newPriority(newPriority) + {} - FileRequest::CreateDedicatedCacheData::CreateDedicatedCacheData(RequestPath path, const FileRange& range) - : m_path(AZStd::move(path)) - , m_range(range) - {} + FileRequest::CreateDedicatedCacheData::CreateDedicatedCacheData(RequestPath path, const FileRange& range) + : m_path(AZStd::move(path)) + , m_range(range) + {} - FileRequest::DestroyDedicatedCacheData::DestroyDedicatedCacheData(RequestPath path, const FileRange& range) - : m_path(AZStd::move(path)) - , m_range(range) - {} + FileRequest::DestroyDedicatedCacheData::DestroyDedicatedCacheData(RequestPath path, const FileRange& range) + : m_path(AZStd::move(path)) + , m_range(range) + {} - FileRequest::ReportData::ReportData(ReportType reportType) - : m_reportType(reportType) - {} + FileRequest::ReportData::ReportData(ReportType reportType) + : m_reportType(reportType) + {} - FileRequest::CustomData::CustomData(AZStd::any data, bool failWhenUnhandled) - : m_data(AZStd::move(data)) - , m_failWhenUnhandled(failWhenUnhandled) - {} + FileRequest::CustomData::CustomData(AZStd::any data, bool failWhenUnhandled) + : m_data(AZStd::move(data)) + , m_failWhenUnhandled(failWhenUnhandled) + {} - // - // FileRequest - // + // + // FileRequest + // - FileRequest::FileRequest(Usage usage) - : m_usage(usage) + FileRequest::FileRequest(Usage usage) + : m_usage(usage) + { + Reset(); + } + + FileRequest::~FileRequest() + { + Reset(); + } + + void FileRequest::CreateRequestLink(FileRequestPtr&& request) + { + AZ_Assert(AZStd::holds_alternative(m_command), + "Attempting to set FileRequest to 'RequestLink', but another task was already assigned."); + m_parent = request->m_request.m_parent; + request->m_request.m_parent = this; + m_dependencies++; + m_command.emplace(AZStd::move(request)); + } + + void FileRequest::CreateRequestPathStore(FileRequest* parent, RequestPath path) + { + AZ_Assert(AZStd::holds_alternative(m_command), + "Attempting to set FileRequest to 'CreateRequestPathStore', but another task was already assigned."); + m_command.emplace(AZStd::move(path)); + SetOptionalParent(parent); + } + + void FileRequest::CreateReadRequest(RequestPath path, void* output, u64 outputSize, u64 offset, u64 size, + AZStd::chrono::system_clock::time_point deadline, IStreamerTypes::Priority priority) + { + AZ_Assert(AZStd::holds_alternative(m_command), + "Attempting to set FileRequest to 'ReadRequest', but another task was already assigned."); + m_command.emplace(AZStd::move(path), output, outputSize, offset, size, deadline, priority); + } + + void FileRequest::CreateReadRequest(RequestPath path, IStreamerTypes::RequestMemoryAllocator* allocator, u64 offset, u64 size, + AZStd::chrono::system_clock::time_point deadline, IStreamerTypes::Priority priority) + { + AZ_Assert(AZStd::holds_alternative(m_command), + "Attempting to set FileRequest to 'ReadRequest', but another task was already assigned."); + m_command.emplace(AZStd::move(path), allocator, offset, size, deadline, priority); + } + + void FileRequest::CreateRead(FileRequest* parent, void* output, u64 outputSize, const RequestPath& path, + u64 offset, u64 size, bool sharedRead) + { + AZ_Assert(AZStd::holds_alternative(m_command), + "Attempting to set FileRequest to 'Read', but another task was already assigned."); + m_command.emplace(output, outputSize, AZStd::move(path), offset, size, sharedRead); + SetOptionalParent(parent); + } + + void FileRequest::CreateCompressedRead(FileRequest* parent, const CompressionInfo& compressionInfo, + void* output, u64 readOffset, u64 readSize) + { + CreateCompressedRead(parent, CompressionInfo(compressionInfo), output, readOffset, readSize); + } + + void FileRequest::CreateCompressedRead(FileRequest* parent, CompressionInfo&& compressionInfo, + void* output, u64 readOffset, u64 readSize) + { + AZ_Assert(AZStd::holds_alternative(m_command), + "Attempting to set FileRequest to 'CompressedRead', but another task was already assigned."); + m_command.emplace(AZStd::move(compressionInfo), output, readOffset, readSize); + SetOptionalParent(parent); + } + + void FileRequest::CreateWait(FileRequest* parent) + { + AZ_Assert(AZStd::holds_alternative(m_command), + "Attempting to set FileRequest to 'Wait', but another task was already assigned."); + m_command.emplace(); + SetOptionalParent(parent); + } + + void FileRequest::CreateFileExistsCheck(const RequestPath& path) + { + AZ_Assert(AZStd::holds_alternative(m_command), + "Attempting to set FileRequest to 'FileExistsCheck', but another task was already assigned."); + m_command.emplace(path); + } + + void FileRequest::CreateFileMetaDataRetrieval(const RequestPath& path) + { + AZ_Assert(AZStd::holds_alternative(m_command), + "Attempting to set FileRequest to 'FileMetaDataRetrieval', but another task was already assigned."); + m_command.emplace(path); + } + + void FileRequest::CreateCancel(FileRequestPtr target) + { + AZ_Assert(AZStd::holds_alternative(m_command), + "Attempting to set FileRequest to 'Cancel', but another task was already assigned."); + m_command.emplace(AZStd::move(target)); + } + + void FileRequest::CreateReschedule(FileRequestPtr target, AZStd::chrono::system_clock::time_point newDeadline, + IStreamerTypes::Priority newPriority) + { + AZ_Assert(AZStd::holds_alternative(m_command), + "Attempting to set FileRequest to 'Reschedule', but another task was already assigned."); + m_command.emplace(AZStd::move(target), newDeadline, newPriority); + } + + void FileRequest::CreateFlush(RequestPath path) + { + AZ_Assert(AZStd::holds_alternative(m_command), + "Attempting to set FileRequest to 'Flush', but another task was already assigned."); + m_command.emplace(AZStd::move(path)); + } + + void FileRequest::CreateFlushAll() + { + AZ_Assert(AZStd::holds_alternative(m_command), + "Attempting to set FileRequest to 'FlushAll', but another task was already assigned."); + m_command.emplace(); + } + + void FileRequest::CreateDedicatedCacheCreation(RequestPath path, const FileRange& range, FileRequest* parent) + { + AZ_Assert(AZStd::holds_alternative(m_command), + "Attempting to set FileRequest to 'CreateDedicateCache', but another task was already assigned."); + m_command.emplace(AZStd::move(path), range); + SetOptionalParent(parent); + } + + void FileRequest::CreateDedicatedCacheDestruction(RequestPath path, const FileRange& range, FileRequest* parent) + { + AZ_Assert(AZStd::holds_alternative(m_command), + "Attempting to set FileRequest to 'DestroyDedicateCache', but another task was already assigned."); + m_command.emplace(AZStd::move(path), range); + SetOptionalParent(parent); + } + + void FileRequest::CreateReport(ReportData::ReportType reportType) + { + AZ_Assert(AZStd::holds_alternative(m_command), + "Attempting to set FileRequest to 'Report', but another task was already assigned."); + m_command.emplace(reportType); + } + + void FileRequest::CreateCustom(AZStd::any data, bool failWhenUnhandled, FileRequest* parent) + { + AZ_Assert(AZStd::holds_alternative(m_command), + "Attempting to set FileRequest to 'Custom', but another task was already assigned."); + m_command.emplace(AZStd::move(data), failWhenUnhandled); + SetOptionalParent(parent); + } + + void FileRequest::SetCompletionCallback(OnCompletionCallback callback) + { + m_onCompletion = AZStd::move(callback); + } + + FileRequest::CommandVariant& FileRequest::GetCommand() + { + return m_command; + } + + const FileRequest::CommandVariant& FileRequest::GetCommand() const + { + return m_command; + } + + IStreamerTypes::RequestStatus FileRequest::GetStatus() const + { + return m_status; + } + + void FileRequest::SetStatus(IStreamerTypes::RequestStatus newStatus) + { + IStreamerTypes::RequestStatus currentStatus = m_status; + switch (newStatus) { - Reset(); - } - - FileRequest::~FileRequest() - { - Reset(); - } - - void FileRequest::CreateRequestLink(FileRequestPtr&& request) - { - AZ_Assert(AZStd::holds_alternative(m_command), - "Attempting to set FileRequest to 'RequestLink', but another task was already assigned."); - m_parent = request->m_request.m_parent; - request->m_request.m_parent = this; - m_dependencies++; - m_command.emplace(AZStd::move(request)); - } - - void FileRequest::CreateRequestPathStore(FileRequest* parent, RequestPath path) - { - AZ_Assert(AZStd::holds_alternative(m_command), - "Attempting to set FileRequest to 'CreateRequestPathStore', but another task was already assigned."); - m_command.emplace(AZStd::move(path)); - SetOptionalParent(parent); - } - - void FileRequest::CreateReadRequest(RequestPath path, void* output, u64 outputSize, u64 offset, u64 size, - AZStd::chrono::system_clock::time_point deadline, IStreamerTypes::Priority priority) - { - AZ_Assert(AZStd::holds_alternative(m_command), - "Attempting to set FileRequest to 'ReadRequest', but another task was already assigned."); - m_command.emplace(AZStd::move(path), output, outputSize, offset, size, deadline, priority); - } - - void FileRequest::CreateReadRequest(RequestPath path, IStreamerTypes::RequestMemoryAllocator* allocator, u64 offset, u64 size, - AZStd::chrono::system_clock::time_point deadline, IStreamerTypes::Priority priority) - { - AZ_Assert(AZStd::holds_alternative(m_command), - "Attempting to set FileRequest to 'ReadRequest', but another task was already assigned."); - m_command.emplace(AZStd::move(path), allocator, offset, size, deadline, priority); - } - - void FileRequest::CreateRead(FileRequest* parent, void* output, u64 outputSize, const RequestPath& path, - u64 offset, u64 size, bool sharedRead) - { - AZ_Assert(AZStd::holds_alternative(m_command), - "Attempting to set FileRequest to 'Read', but another task was already assigned."); - m_command.emplace(output, outputSize, AZStd::move(path), offset, size, sharedRead); - SetOptionalParent(parent); - } - - void FileRequest::CreateCompressedRead(FileRequest* parent, const CompressionInfo& compressionInfo, - void* output, u64 readOffset, u64 readSize) - { - CreateCompressedRead(parent, CompressionInfo(compressionInfo), output, readOffset, readSize); - } - - void FileRequest::CreateCompressedRead(FileRequest* parent, CompressionInfo&& compressionInfo, - void* output, u64 readOffset, u64 readSize) - { - AZ_Assert(AZStd::holds_alternative(m_command), - "Attempting to set FileRequest to 'CompressedRead', but another task was already assigned."); - m_command.emplace(AZStd::move(compressionInfo), output, readOffset, readSize); - SetOptionalParent(parent); - } - - void FileRequest::CreateWait(FileRequest* parent) - { - AZ_Assert(AZStd::holds_alternative(m_command), - "Attempting to set FileRequest to 'Wait', but another task was already assigned."); - m_command.emplace(); - SetOptionalParent(parent); - } - - void FileRequest::CreateFileExistsCheck(const RequestPath& path) - { - AZ_Assert(AZStd::holds_alternative(m_command), - "Attempting to set FileRequest to 'FileExistsCheck', but another task was already assigned."); - m_command.emplace(path); - } - - void FileRequest::CreateFileMetaDataRetrieval(const RequestPath& path) - { - AZ_Assert(AZStd::holds_alternative(m_command), - "Attempting to set FileRequest to 'FileMetaDataRetrieval', but another task was already assigned."); - m_command.emplace(path); - } - - void FileRequest::CreateCancel(FileRequestPtr target) - { - AZ_Assert(AZStd::holds_alternative(m_command), - "Attempting to set FileRequest to 'Cancel', but another task was already assigned."); - m_command.emplace(AZStd::move(target)); - } - - void FileRequest::CreateReschedule(FileRequestPtr target, AZStd::chrono::system_clock::time_point newDeadline, - IStreamerTypes::Priority newPriority) - { - AZ_Assert(AZStd::holds_alternative(m_command), - "Attempting to set FileRequest to 'Reschedule', but another task was already assigned."); - m_command.emplace(AZStd::move(target), newDeadline, newPriority); - } - - void FileRequest::CreateFlush(RequestPath path) - { - AZ_Assert(AZStd::holds_alternative(m_command), - "Attempting to set FileRequest to 'Flush', but another task was already assigned."); - m_command.emplace(AZStd::move(path)); - } - - void FileRequest::CreateFlushAll() - { - AZ_Assert(AZStd::holds_alternative(m_command), - "Attempting to set FileRequest to 'FlushAll', but another task was already assigned."); - m_command.emplace(); - } - - void FileRequest::CreateDedicatedCacheCreation(RequestPath path, const FileRange& range, FileRequest* parent) - { - AZ_Assert(AZStd::holds_alternative(m_command), - "Attempting to set FileRequest to 'CreateDedicateCache', but another task was already assigned."); - m_command.emplace(AZStd::move(path), range); - SetOptionalParent(parent); - } - - void FileRequest::CreateDedicatedCacheDestruction(RequestPath path, const FileRange& range, FileRequest* parent) - { - AZ_Assert(AZStd::holds_alternative(m_command), - "Attempting to set FileRequest to 'DestroyDedicateCache', but another task was already assigned."); - m_command.emplace(AZStd::move(path), range); - SetOptionalParent(parent); - } - - void FileRequest::CreateReport(ReportData::ReportType reportType) - { - AZ_Assert(AZStd::holds_alternative(m_command), - "Attempting to set FileRequest to 'Report', but another task was already assigned."); - m_command.emplace(reportType); - } - - void FileRequest::CreateCustom(AZStd::any data, bool failWhenUnhandled, FileRequest* parent) - { - AZ_Assert(AZStd::holds_alternative(m_command), - "Attempting to set FileRequest to 'Custom', but another task was already assigned."); - m_command.emplace(AZStd::move(data), failWhenUnhandled); - SetOptionalParent(parent); - } - - void FileRequest::SetCompletionCallback(OnCompletionCallback callback) - { - m_onCompletion = AZStd::move(callback); - } - - FileRequest::CommandVariant& FileRequest::GetCommand() - { - return m_command; - } - - const FileRequest::CommandVariant& FileRequest::GetCommand() const - { - return m_command; - } - - IStreamerTypes::RequestStatus FileRequest::GetStatus() const - { - return m_status; - } - - void FileRequest::SetStatus(IStreamerTypes::RequestStatus newStatus) - { - IStreamerTypes::RequestStatus currentStatus = m_status; - switch (newStatus) + case IStreamerTypes::RequestStatus::Pending: + [[fallthrough]]; + case IStreamerTypes::RequestStatus::Queued: + [[fallthrough]]; + case IStreamerTypes::RequestStatus::Processing: + if (currentStatus == IStreamerTypes::RequestStatus::Failed || + currentStatus == IStreamerTypes::RequestStatus::Canceled || + currentStatus == IStreamerTypes::RequestStatus::Completed) { - case IStreamerTypes::RequestStatus::Pending: - [[fallthrough]]; - case IStreamerTypes::RequestStatus::Queued: - [[fallthrough]]; - case IStreamerTypes::RequestStatus::Processing: - if (currentStatus == IStreamerTypes::RequestStatus::Failed || - currentStatus == IStreamerTypes::RequestStatus::Canceled || - currentStatus == IStreamerTypes::RequestStatus::Completed) - { - return; - } - break; - case IStreamerTypes::RequestStatus::Completed: - if (currentStatus == IStreamerTypes::RequestStatus::Failed || currentStatus == IStreamerTypes::RequestStatus::Canceled) - { - return; - } - break; - case IStreamerTypes::RequestStatus::Canceled: - if (currentStatus == IStreamerTypes::RequestStatus::Failed || currentStatus == IStreamerTypes::RequestStatus::Completed) - { - return; - } - break; - case IStreamerTypes::RequestStatus::Failed: - [[fallthrough]]; - default: - break; + return; } - m_status = newStatus; - } - - FileRequest* FileRequest::GetParent() - { - return m_parent; - } - - const FileRequest* FileRequest::GetParent() const - { - return m_parent; - } - - size_t FileRequest::GetNumDependencies() const - { - return m_dependencies; - } - - bool FileRequest::FailsWhenUnhandled() const - { - return AZStd::visit([](auto&& args) + break; + case IStreamerTypes::RequestStatus::Completed: + if (currentStatus == IStreamerTypes::RequestStatus::Failed || currentStatus == IStreamerTypes::RequestStatus::Canceled) { - using Command = AZStd::decay_t; - if constexpr (AZStd::is_same_v) - { - AZ_Assert(false, - "Request does not contain a valid command. It may have been reset already or was never assigned a command."); - return true; - } - else if constexpr (AZStd::is_same_v) - { - return args.m_failWhenUnhandled; - } - else - { - return Command::s_failWhenUnhandled; - } - }, m_command); - } - - void FileRequest::Reset() - { - m_command = AZStd::monostate{}; - m_onCompletion = &OnCompletionPlaceholder; - m_estimatedCompletion = AZStd::chrono::system_clock::time_point(); - m_parent = nullptr; - m_status = IStreamerTypes::RequestStatus::Pending; - m_dependencies = 0; - } - - void FileRequest::SetOptionalParent(FileRequest* parent) - { - if (parent) - { - m_parent = parent; - AZ_Assert(parent->m_dependencies < std::numeric_limitsm_dependencies)>::max(), - "A file request dependency was added, but the parent can't have any more dependencies."); - ++parent->m_dependencies; + return; } - } - - bool FileRequest::WorksOn(FileRequestPtr& request) const - { - const FileRequest* current = this; - while (current) + break; + case IStreamerTypes::RequestStatus::Canceled: + if (currentStatus == IStreamerTypes::RequestStatus::Failed || currentStatus == IStreamerTypes::RequestStatus::Completed) { - auto* link = AZStd::get_if(¤t->m_command); - if (!link) - { - current = current->m_parent; - } - else - { - return link->m_request == request; - } + return; } - return false; + break; + case IStreamerTypes::RequestStatus::Failed: + [[fallthrough]]; + default: + break; } + m_status = newStatus; + } - size_t FileRequest::GetPendingId() const - { - return m_pendingId; - } + FileRequest* FileRequest::GetParent() + { + return m_parent; + } - void FileRequest::SetEstimatedCompletion(AZStd::chrono::system_clock::time_point time) + const FileRequest* FileRequest::GetParent() const + { + return m_parent; + } + + size_t FileRequest::GetNumDependencies() const + { + return m_dependencies; + } + + bool FileRequest::FailsWhenUnhandled() const + { + return AZStd::visit([](auto&& args) { - FileRequest* current = this; - do + using Command = AZStd::decay_t; + if constexpr (AZStd::is_same_v) + { + AZ_Assert(false, + "Request does not contain a valid command. It may have been reset already or was never assigned a command."); + return true; + } + else if constexpr (AZStd::is_same_v) + { + return args.m_failWhenUnhandled; + } + else + { + return Command::s_failWhenUnhandled; + } + }, m_command); + } + + void FileRequest::Reset() + { + m_command = AZStd::monostate{}; + m_onCompletion = &OnCompletionPlaceholder; + m_estimatedCompletion = AZStd::chrono::system_clock::time_point(); + m_parent = nullptr; + m_status = IStreamerTypes::RequestStatus::Pending; + m_dependencies = 0; + } + + void FileRequest::SetOptionalParent(FileRequest* parent) + { + if (parent) + { + m_parent = parent; + AZ_Assert(parent->m_dependencies < std::numeric_limitsm_dependencies)>::max(), + "A file request dependency was added, but the parent can't have any more dependencies."); + ++parent->m_dependencies; + } + } + + bool FileRequest::WorksOn(FileRequestPtr& request) const + { + const FileRequest* current = this; + while (current) + { + auto* link = AZStd::get_if(¤t->m_command); + if (!link) { - current->m_estimatedCompletion = time; current = current->m_parent; - } while (current); - } - - AZStd::chrono::system_clock::time_point FileRequest::GetEstimatedCompletion() const - { - return m_estimatedCompletion; - } - - // - // ExternalFileRequest - // - - ExternalFileRequest::ExternalFileRequest(StreamerContext* owner) - : m_request(FileRequest::Usage::External) - , m_owner(owner) - { - } - - void ExternalFileRequest::add_ref() - { - m_refCount++; - } - - void ExternalFileRequest::release() - { - if (--m_refCount == 0) + } + else { - AZ_Assert(m_owner, "No owning context set for the file request."); - m_owner->RecycleRequest(this); + return link->m_request == request; } } + return false; + } - bool operator==(const FileRequestHandle& lhs, const FileRequestPtr& rhs) - { - return lhs.m_request == &rhs->m_request; - } + size_t FileRequest::GetPendingId() const + { + return m_pendingId; + } - bool operator==(const FileRequestPtr& lhs, const FileRequestHandle& rhs) + void FileRequest::SetEstimatedCompletion(AZStd::chrono::system_clock::time_point time) + { + FileRequest* current = this; + do { - return rhs == lhs; - } + current->m_estimatedCompletion = time; + current = current->m_parent; + } while (current); + } - bool operator!=(const FileRequestHandle& lhs, const FileRequestPtr& rhs) - { - return !(lhs == rhs); - } + AZStd::chrono::system_clock::time_point FileRequest::GetEstimatedCompletion() const + { + return m_estimatedCompletion; + } - bool operator!=(const FileRequestPtr& lhs, const FileRequestHandle& rhs) + // + // ExternalFileRequest + // + + ExternalFileRequest::ExternalFileRequest(StreamerContext* owner) + : m_request(FileRequest::Usage::External) + , m_owner(owner) + { + } + + void ExternalFileRequest::add_ref() + { + m_refCount++; + } + + void ExternalFileRequest::release() + { + if (--m_refCount == 0) { - return !(rhs == lhs); + AZ_Assert(m_owner, "No owning context set for the file request."); + m_owner->RecycleRequest(this); } - } // namespace IO -} // namespace AZ + } + + bool operator==(const FileRequestHandle& lhs, const FileRequestPtr& rhs) + { + return lhs.m_request == &rhs->m_request; + } + + bool operator==(const FileRequestPtr& lhs, const FileRequestHandle& rhs) + { + return rhs == lhs; + } + + bool operator!=(const FileRequestHandle& lhs, const FileRequestPtr& rhs) + { + return !(lhs == rhs); + } + + bool operator!=(const FileRequestPtr& lhs, const FileRequestHandle& rhs) + { + return !(rhs == lhs); + } +} // namespace AZ::IO diff --git a/Code/Framework/AzCore/AzCore/IO/Streamer/FullFileDecompressor.cpp b/Code/Framework/AzCore/AzCore/IO/Streamer/FullFileDecompressor.cpp index 6427571f10..723a5d62c8 100644 --- a/Code/Framework/AzCore/AzCore/IO/Streamer/FullFileDecompressor.cpp +++ b/Code/Framework/AzCore/AzCore/IO/Streamer/FullFileDecompressor.cpp @@ -21,719 +21,717 @@ #include #include -namespace AZ +namespace AZ::IO { - namespace IO + AZStd::shared_ptr FullFileDecompressorConfig::AddStreamStackEntry( + const HardwareInformation& hardware, AZStd::shared_ptr parent) { - AZStd::shared_ptr FullFileDecompressorConfig::AddStreamStackEntry( - const HardwareInformation& hardware, AZStd::shared_ptr parent) - { - auto stackEntry = AZStd::make_shared( - m_maxNumReads, m_maxNumJobs, aznumeric_caster(hardware.m_maxPhysicalSectorSize)); - stackEntry->SetNext(AZStd::move(parent)); - return stackEntry; - } + auto stackEntry = AZStd::make_shared( + m_maxNumReads, m_maxNumJobs, aznumeric_caster(hardware.m_maxPhysicalSectorSize)); + stackEntry->SetNext(AZStd::move(parent)); + return stackEntry; + } - void FullFileDecompressorConfig::Reflect(AZ::ReflectContext* context) + void FullFileDecompressorConfig::Reflect(AZ::ReflectContext* context) + { + if (auto serializeContext = azrtti_cast(context); serializeContext != nullptr) { - if (auto serializeContext = azrtti_cast(context); serializeContext != nullptr) - { - serializeContext->Class() - ->Version(1) - ->Field("MaxNumReads", &FullFileDecompressorConfig::m_maxNumReads) - ->Field("MaxNumJobs", &FullFileDecompressorConfig::m_maxNumJobs); - } + serializeContext->Class() + ->Version(1) + ->Field("MaxNumReads", &FullFileDecompressorConfig::m_maxNumReads) + ->Field("MaxNumJobs", &FullFileDecompressorConfig::m_maxNumJobs); } + } #if AZ_STREAMER_ADD_EXTRA_PROFILING_INFO - static constexpr char DecompBoundName[] = "Decompression bound"; - static constexpr char ReadBoundName[] = "Read bound"; + static constexpr char DecompBoundName[] = "Decompression bound"; + static constexpr char ReadBoundName[] = "Read bound"; #endif // AZ_STREAMER_ADD_EXTRA_PROFILING_INFO - bool FullFileDecompressor::DecompressionInformation::IsProcessing() const + bool FullFileDecompressor::DecompressionInformation::IsProcessing() const + { + return !!m_compressedData; + } + + FullFileDecompressor::FullFileDecompressor(u32 maxNumReads, u32 maxNumJobs, u32 alignment) + : StreamStackEntry("Full file decompressor") + , m_maxNumReads(maxNumReads) + , m_maxNumJobs(maxNumJobs) + , m_alignment(alignment) + { + JobManagerDesc jobDesc; + jobDesc.m_jobManagerName = "Full File Decompressor"; + u32 numThreads = AZ::GetMin(maxNumJobs, AZStd::thread::hardware_concurrency()); + for (u32 i = 0; i < numThreads; ++i) { - return !!m_compressedData; + jobDesc.m_workerThreads.push_back(JobManagerThreadDesc()); } - - FullFileDecompressor::FullFileDecompressor(u32 maxNumReads, u32 maxNumJobs, u32 alignment) - : StreamStackEntry("Full file decompressor") - , m_maxNumReads(maxNumReads) - , m_maxNumJobs(maxNumJobs) - , m_alignment(alignment) + m_decompressionJobManager = AZStd::make_unique(jobDesc); + m_decompressionjobContext = AZStd::make_unique(*m_decompressionJobManager); + + m_processingJobs = AZStd::make_unique(maxNumJobs); + + m_readBuffers = AZStd::make_unique(maxNumReads); + m_readRequests = AZStd::make_unique(maxNumReads); + m_readBufferStatus = AZStd::make_unique(maxNumReads); + for (u32 i = 0; i < maxNumReads; ++i) { - JobManagerDesc jobDesc; - u32 numThreads = AZ::GetMin(maxNumJobs, AZStd::thread::hardware_concurrency()); - for (u32 i = 0; i < numThreads; ++i) - { - jobDesc.m_workerThreads.push_back(JobManagerThreadDesc()); - } - m_decompressionJobManager = AZStd::make_unique(jobDesc); - m_decompressionjobContext = AZStd::make_unique(*m_decompressionJobManager); - - m_processingJobs = AZStd::make_unique(maxNumJobs); - - m_readBuffers = AZStd::make_unique(maxNumReads); - m_readRequests = AZStd::make_unique(maxNumReads); - m_readBufferStatus = AZStd::make_unique(maxNumReads); - for (u32 i = 0; i < maxNumReads; ++i) - { - m_readBufferStatus[i] = ReadBufferStatus::Unused; - } - - // Add initial dummy values to the stats to avoid division by zero later on and avoid needing branches. - m_bytesDecompressed.PushEntry(1); - m_decompressionDurationMicroSec.PushEntry(1); + m_readBufferStatus[i] = ReadBufferStatus::Unused; } - void FullFileDecompressor::PrepareRequest(FileRequest* request) - { - AZ_Assert(request, "PrepareRequest was provided a null request."); + // Add initial dummy values to the stats to avoid division by zero later on and avoid needing branches. + m_bytesDecompressed.PushEntry(1); + m_decompressionDurationMicroSec.PushEntry(1); + } - AZStd::visit([this, request](auto&& args) + void FullFileDecompressor::PrepareRequest(FileRequest* request) + { + AZ_Assert(request, "PrepareRequest was provided a null request."); + + AZStd::visit([this, request](auto&& args) + { + using Command = AZStd::decay_t; + if constexpr (AZStd::is_same_v) { - using Command = AZStd::decay_t; - if constexpr (AZStd::is_same_v) - { - PrepareReadRequest(request, args); - } - else if constexpr (AZStd::is_same_v || - AZStd::is_same_v) - { - PrepareDedicatedCache(request, args.m_path); - } - else - { - StreamStackEntry::PrepareRequest(request); - } - }, request->GetCommand()); + PrepareReadRequest(request, args); + } + else if constexpr (AZStd::is_same_v || + AZStd::is_same_v) + { + PrepareDedicatedCache(request, args.m_path); + } + else + { + StreamStackEntry::PrepareRequest(request); + } + }, request->GetCommand()); + } + + void FullFileDecompressor::QueueRequest(FileRequest* request) + { + AZ_Assert(request, "QueueRequest was provided a null request."); + + AZStd::visit([this, request](auto&& args) + { + using Command = AZStd::decay_t; + if constexpr (AZStd::is_same_v) + { + m_pendingReads.push_back(request); + } + else if constexpr (AZStd::is_same_v) + { + m_pendingFileExistChecks.push_back(request); + } + else + { + StreamStackEntry::QueueRequest(request); + } + }, request->GetCommand()); + } + + bool FullFileDecompressor::ExecuteRequests() + { + bool result = false; + // First queue jobs as this might open up new read slots. + if (m_numInFlightReads > 0 && m_numRunningJobs < m_maxNumJobs) + { + result = StartDecompressions(); } - void FullFileDecompressor::QueueRequest(FileRequest* request) + // Queue as many new reads as possible. + while (!m_pendingReads.empty() && m_numInFlightReads < m_maxNumReads) { - AZ_Assert(request, "QueueRequest was provided a null request."); - - AZStd::visit([this, request](auto&& args) - { - using Command = AZStd::decay_t; - if constexpr (AZStd::is_same_v) - { - m_pendingReads.push_back(request); - } - else if constexpr (AZStd::is_same_v) - { - m_pendingFileExistChecks.push_back(request); - } - else - { - StreamStackEntry::QueueRequest(request); - } - }, request->GetCommand()); + StartArchiveRead(m_pendingReads.front()); + m_pendingReads.pop_front(); + result = true; } - bool FullFileDecompressor::ExecuteRequests() + // If nothing else happened and there is at least one pending file exist check request, run one of those. + if (!result && !m_pendingFileExistChecks.empty()) { - bool result = false; - // First queue jobs as this might open up new read slots. - if (m_numInFlightReads > 0 && m_numRunningJobs < m_maxNumJobs) - { - result = StartDecompressions(); - } - - // Queue as many new reads as possible. - while (!m_pendingReads.empty() && m_numInFlightReads < m_maxNumReads) - { - StartArchiveRead(m_pendingReads.front()); - m_pendingReads.pop_front(); - result = true; - } - - // If nothing else happened and there is at least one pending file exist check request, run one of those. - if (!result && !m_pendingFileExistChecks.empty()) - { - FileExistsCheck(m_pendingFileExistChecks.front()); - m_pendingFileExistChecks.pop_front(); - result = true; - } + FileExistsCheck(m_pendingFileExistChecks.front()); + m_pendingFileExistChecks.pop_front(); + result = true; + } #if AZ_STREAMER_ADD_EXTRA_PROFILING_INFO - bool allPendingDecompression = true; - bool allReading = true; - for (u32 i = 0; i < m_maxNumReads; ++i) - { - allPendingDecompression = - allPendingDecompression && (m_readBufferStatus[i] == ReadBufferStatus::PendingDecompression); - allReading = - allReading && (m_readBufferStatus[i] == ReadBufferStatus::ReadInFlight); - } + bool allPendingDecompression = true; + bool allReading = true; + for (u32 i = 0; i < m_maxNumReads; ++i) + { + allPendingDecompression = + allPendingDecompression && (m_readBufferStatus[i] == ReadBufferStatus::PendingDecompression); + allReading = + allReading && (m_readBufferStatus[i] == ReadBufferStatus::ReadInFlight); + } - m_decompressionBoundStat.PushSample(allPendingDecompression ? 1.0 : 0.0); - Statistic::PlotImmediate(m_name, DecompBoundName, m_decompressionBoundStat.GetMostRecentSample()); + m_decompressionBoundStat.PushSample(allPendingDecompression ? 1.0 : 0.0); + Statistic::PlotImmediate(m_name, DecompBoundName, m_decompressionBoundStat.GetMostRecentSample()); - m_readBoundStat.PushSample(allReading && (m_numRunningJobs < m_maxNumJobs) ? 1.0 : 0.0); - Statistic::PlotImmediate(m_name, ReadBoundName, m_readBoundStat.GetMostRecentSample()); + m_readBoundStat.PushSample(allReading && (m_numRunningJobs < m_maxNumJobs) ? 1.0 : 0.0); + Statistic::PlotImmediate(m_name, ReadBoundName, m_readBoundStat.GetMostRecentSample()); #endif - return StreamStackEntry::ExecuteRequests() || result; - } + return StreamStackEntry::ExecuteRequests() || result; + } - void FullFileDecompressor::UpdateStatus(Status& status) const + void FullFileDecompressor::UpdateStatus(Status& status) const + { + StreamStackEntry::UpdateStatus(status); + s32 numAvailableSlots = aznumeric_cast(m_maxNumReads - m_numInFlightReads); + status.m_numAvailableSlots = AZStd::min(status.m_numAvailableSlots, numAvailableSlots); + status.m_isIdle = status.m_isIdle && IsIdle(); + } + + void FullFileDecompressor::UpdateCompletionEstimates(AZStd::chrono::system_clock::time_point now, AZStd::vector& internalPending, + StreamerContext::PreparedQueue::iterator pendingBegin, StreamerContext::PreparedQueue::iterator pendingEnd) + { + // Create predictions for all pending requests. Some will be further processed after this. + AZStd::reverse_copy(m_pendingFileExistChecks.begin(), m_pendingFileExistChecks.end(), AZStd::back_inserter(internalPending)); + AZStd::reverse_copy(m_pendingReads.begin(), m_pendingReads.end(), AZStd::back_inserter(internalPending)); + + StreamStackEntry::UpdateCompletionEstimates(now, internalPending, pendingBegin, pendingEnd); + + double totalBytesDecompressed = aznumeric_caster(m_bytesDecompressed.GetTotal()); + double totalDecompressionDuration = aznumeric_caster(m_decompressionDurationMicroSec.GetTotal()); + AZStd::chrono::microseconds cumulativeDelay = AZStd::chrono::microseconds::max(); + + // Check the number of jobs that are processing. + for (u32 i = 0; i < m_maxNumJobs; ++i) { - StreamStackEntry::UpdateStatus(status); - s32 numAvailableSlots = aznumeric_cast(m_maxNumReads - m_numInFlightReads); - status.m_numAvailableSlots = AZStd::min(status.m_numAvailableSlots, numAvailableSlots); - status.m_isIdle = status.m_isIdle && IsIdle(); - } - - void FullFileDecompressor::UpdateCompletionEstimates(AZStd::chrono::system_clock::time_point now, AZStd::vector& internalPending, - StreamerContext::PreparedQueue::iterator pendingBegin, StreamerContext::PreparedQueue::iterator pendingEnd) - { - // Create predictions for all pending requests. Some will be further processed after this. - AZStd::reverse_copy(m_pendingFileExistChecks.begin(), m_pendingFileExistChecks.end(), AZStd::back_inserter(internalPending)); - AZStd::reverse_copy(m_pendingReads.begin(), m_pendingReads.end(), AZStd::back_inserter(internalPending)); - - StreamStackEntry::UpdateCompletionEstimates(now, internalPending, pendingBegin, pendingEnd); - - double totalBytesDecompressed = aznumeric_caster(m_bytesDecompressed.GetTotal()); - double totalDecompressionDuration = aznumeric_caster(m_decompressionDurationMicroSec.GetTotal()); - AZStd::chrono::microseconds cumulativeDelay = AZStd::chrono::microseconds::max(); - - // Check the number of jobs that are processing. - for (u32 i = 0; i < m_maxNumJobs; ++i) + if (m_processingJobs[i].IsProcessing()) { - if (m_processingJobs[i].IsProcessing()) - { - FileRequest* compressedRequest = m_processingJobs[i].m_waitRequest->GetParent(); - AZ_Assert(compressedRequest, "A wait request attached to FullFileDecompressor was completed but didn't have a parent compressed request."); - auto data = AZStd::get_if(&compressedRequest->GetCommand()); - AZ_Assert(data, "Compressed request in the decompression queue in FullFileDecompressor didn't contain compression read data."); - - size_t bytesToDecompress = data->m_compressionInfo.m_compressedSize; - auto decompressionDuration = AZStd::chrono::microseconds( - aznumeric_cast((bytesToDecompress * totalDecompressionDuration) / totalBytesDecompressed)); - auto timeInProcessing = now - m_processingJobs[i].m_jobStartTime; - auto timeLeft = decompressionDuration > timeInProcessing ? decompressionDuration - timeInProcessing : AZStd::chrono::microseconds(0); - // Get the shortest time as this indicates the next decompression to become available. - cumulativeDelay = AZStd::min(timeLeft, cumulativeDelay); - m_processingJobs[i].m_waitRequest->SetEstimatedCompletion(now + timeLeft); - } - } - if (cumulativeDelay == AZStd::chrono::microseconds::max()) - { - cumulativeDelay = AZStd::chrono::microseconds(0); - } - - // Next update all reads that are in flight. These will have an estimation for the read to complete, but will then be queued - // for decompression, so add the time needed decompression. Assume that decompression happens in parallel. - AZStd::chrono::microseconds decompressionDelay = - AZStd::chrono::microseconds(aznumeric_cast(m_decompressionJobDelayMicroSec.CalculateAverage())); - AZStd::chrono::microseconds smallestDecompressionDuration = AZStd::chrono::microseconds::max(); - for (u32 i = 0; i < m_maxNumReads; ++i) - { - AZStd::chrono::system_clock::time_point baseTime; - switch (m_readBufferStatus[i]) - { - case ReadBufferStatus::Unused: - continue; - case ReadBufferStatus::ReadInFlight: - // Internal read requests can start and complete but pending finalization before they're ever scheduled in which case - // the estimated time is not set. - baseTime = m_readRequests[i]->GetEstimatedCompletion(); - if (baseTime == AZStd::chrono::system_clock::time_point()) - { - baseTime = now; - } - break; - case ReadBufferStatus::PendingDecompression: - baseTime = now; - break; - default: - AZ_Assert(false, "Unsupported buffer type: %i.", m_readBufferStatus[i]); - continue; - } - - baseTime += cumulativeDelay; // Delay until the first decompression slot becomes available. - baseTime += decompressionDelay; // The average time it takes for the job system to pick up the decompression job. - - // Calculate the amount of time it will take to decompress the data. - FileRequest* compressedRequest = m_readRequests[i]->GetParent(); + FileRequest* compressedRequest = m_processingJobs[i].m_waitRequest->GetParent(); + AZ_Assert(compressedRequest, "A wait request attached to FullFileDecompressor was completed but didn't have a parent compressed request."); auto data = AZStd::get_if(&compressedRequest->GetCommand()); - + AZ_Assert(data, "Compressed request in the decompression queue in FullFileDecompressor didn't contain compression read data."); + size_t bytesToDecompress = data->m_compressionInfo.m_compressedSize; auto decompressionDuration = AZStd::chrono::microseconds( aznumeric_cast((bytesToDecompress * totalDecompressionDuration) / totalBytesDecompressed)); - smallestDecompressionDuration = AZStd::min(smallestDecompressionDuration, decompressionDuration); - baseTime += decompressionDuration; - - m_readRequests[i]->SetEstimatedCompletion(baseTime); - } - if (smallestDecompressionDuration != AZStd::chrono::microseconds::max()) - { - cumulativeDelay += smallestDecompressionDuration; // Time after which the decompression jobs and pending reads have completed. - } - - // For all internally pending compressed reads add the decompression time. The read time will have already been added downstream. - // Because this call will go from the top of the stack to the bottom, but estimation is calculated from the bottom to the top, this - // list should be processed in reverse order. - for (auto pendingIt = internalPending.rbegin(); pendingIt != internalPending.rend(); ++pendingIt) - { - EstimateCompressedReadRequest(*pendingIt, cumulativeDelay, decompressionDelay, - totalDecompressionDuration, totalBytesDecompressed); - } - - // Finally add a prediction for all the requests that are waiting to be queued. - for (auto requestIt = pendingBegin; requestIt != pendingEnd; ++requestIt) - { - EstimateCompressedReadRequest(*requestIt, cumulativeDelay, decompressionDelay, - totalDecompressionDuration, totalBytesDecompressed); + auto timeInProcessing = now - m_processingJobs[i].m_jobStartTime; + auto timeLeft = decompressionDuration > timeInProcessing ? decompressionDuration - timeInProcessing : AZStd::chrono::microseconds(0); + // Get the shortest time as this indicates the next decompression to become available. + cumulativeDelay = AZStd::min(timeLeft, cumulativeDelay); + m_processingJobs[i].m_waitRequest->SetEstimatedCompletion(now + timeLeft); } } - - void FullFileDecompressor::EstimateCompressedReadRequest(FileRequest* request, AZStd::chrono::microseconds& cumulativeDelay, - AZStd::chrono::microseconds decompressionDelay, double totalDecompressionDurationUs, double totalBytesDecompressed) const + if (cumulativeDelay == AZStd::chrono::microseconds::max()) { - auto data = AZStd::get_if(&request->GetCommand()); - if (data) - { - AZStd::chrono::microseconds processingTime = decompressionDelay; - size_t bytesToDecompress = data->m_compressionInfo.m_compressedSize; - processingTime += AZStd::chrono::microseconds( - aznumeric_cast((bytesToDecompress * totalDecompressionDurationUs) / totalBytesDecompressed)); - - cumulativeDelay += processingTime; - request->SetEstimatedCompletion(request->GetEstimatedCompletion() + processingTime); - } + cumulativeDelay = AZStd::chrono::microseconds(0); } - void FullFileDecompressor::CollectStatistics(AZStd::vector& statistics) const + // Next update all reads that are in flight. These will have an estimation for the read to complete, but will then be queued + // for decompression, so add the time needed decompression. Assume that decompression happens in parallel. + AZStd::chrono::microseconds decompressionDelay = + AZStd::chrono::microseconds(aznumeric_cast(m_decompressionJobDelayMicroSec.CalculateAverage())); + AZStd::chrono::microseconds smallestDecompressionDuration = AZStd::chrono::microseconds::max(); + for (u32 i = 0; i < m_maxNumReads; ++i) { - constexpr double bytesToMB = 1.0 / (1024.0 * 1024.0); - constexpr double usToSec = 1.0 / (1000.0 * 1000.0); - constexpr double usToMs = 1.0 / 1000.0; - - if (m_bytesDecompressed.GetNumRecorded() > 1) // There's always a default added. + AZStd::chrono::system_clock::time_point baseTime; + switch (m_readBufferStatus[i]) { - //It only makes sense to add decompression statistics when reading from PAK files. - statistics.push_back(Statistic::CreateInteger(m_name, "Available decompression slots", m_maxNumJobs - m_numRunningJobs)); - statistics.push_back(Statistic::CreateInteger(m_name, "Available read slots", m_maxNumReads - m_numInFlightReads)); - statistics.push_back(Statistic::CreateInteger(m_name, "Pending decompression", m_numPendingDecompression)); - statistics.push_back(Statistic::CreateFloat(m_name, "Buffer memory (MB)", m_memoryUsage * bytesToMB)); + case ReadBufferStatus::Unused: + continue; + case ReadBufferStatus::ReadInFlight: + // Internal read requests can start and complete but pending finalization before they're ever scheduled in which case + // the estimated time is not set. + baseTime = m_readRequests[i]->GetEstimatedCompletion(); + if (baseTime == AZStd::chrono::system_clock::time_point()) + { + baseTime = now; + } + break; + case ReadBufferStatus::PendingDecompression: + baseTime = now; + break; + default: + AZ_Assert(false, "Unsupported buffer type: %i.", m_readBufferStatus[i]); + continue; + } - double averageJobStartDelay = m_decompressionJobDelayMicroSec.CalculateAverage() * usToMs; - statistics.push_back(Statistic::CreateFloat(m_name, "Decompression job delay (avg. ms)", averageJobStartDelay)); + baseTime += cumulativeDelay; // Delay until the first decompression slot becomes available. + baseTime += decompressionDelay; // The average time it takes for the job system to pick up the decompression job. - double totalBytesDecompressedMB = m_bytesDecompressed.GetTotal() * bytesToMB; - double totalDecompressionTimeSec = m_decompressionDurationMicroSec.GetTotal() * usToSec; - statistics.push_back(Statistic::CreateFloat(m_name, "Decompression Speed per job (avg. mbps)", totalBytesDecompressedMB / totalDecompressionTimeSec)); + // Calculate the amount of time it will take to decompress the data. + FileRequest* compressedRequest = m_readRequests[i]->GetParent(); + auto data = AZStd::get_if(&compressedRequest->GetCommand()); + + size_t bytesToDecompress = data->m_compressionInfo.m_compressedSize; + auto decompressionDuration = AZStd::chrono::microseconds( + aznumeric_cast((bytesToDecompress * totalDecompressionDuration) / totalBytesDecompressed)); + smallestDecompressionDuration = AZStd::min(smallestDecompressionDuration, decompressionDuration); + baseTime += decompressionDuration; + + m_readRequests[i]->SetEstimatedCompletion(baseTime); + } + if (smallestDecompressionDuration != AZStd::chrono::microseconds::max()) + { + cumulativeDelay += smallestDecompressionDuration; // Time after which the decompression jobs and pending reads have completed. + } + + // For all internally pending compressed reads add the decompression time. The read time will have already been added downstream. + // Because this call will go from the top of the stack to the bottom, but estimation is calculated from the bottom to the top, this + // list should be processed in reverse order. + for (auto pendingIt = internalPending.rbegin(); pendingIt != internalPending.rend(); ++pendingIt) + { + EstimateCompressedReadRequest(*pendingIt, cumulativeDelay, decompressionDelay, + totalDecompressionDuration, totalBytesDecompressed); + } + + // Finally add a prediction for all the requests that are waiting to be queued. + for (auto requestIt = pendingBegin; requestIt != pendingEnd; ++requestIt) + { + EstimateCompressedReadRequest(*requestIt, cumulativeDelay, decompressionDelay, + totalDecompressionDuration, totalBytesDecompressed); + } + } + + void FullFileDecompressor::EstimateCompressedReadRequest(FileRequest* request, AZStd::chrono::microseconds& cumulativeDelay, + AZStd::chrono::microseconds decompressionDelay, double totalDecompressionDurationUs, double totalBytesDecompressed) const + { + auto data = AZStd::get_if(&request->GetCommand()); + if (data) + { + AZStd::chrono::microseconds processingTime = decompressionDelay; + size_t bytesToDecompress = data->m_compressionInfo.m_compressedSize; + processingTime += AZStd::chrono::microseconds( + aznumeric_cast((bytesToDecompress * totalDecompressionDurationUs) / totalBytesDecompressed)); + + cumulativeDelay += processingTime; + request->SetEstimatedCompletion(request->GetEstimatedCompletion() + processingTime); + } + } + + void FullFileDecompressor::CollectStatistics(AZStd::vector& statistics) const + { + constexpr double bytesToMB = 1.0 / (1024.0 * 1024.0); + constexpr double usToSec = 1.0 / (1000.0 * 1000.0); + constexpr double usToMs = 1.0 / 1000.0; + + if (m_bytesDecompressed.GetNumRecorded() > 1) // There's always a default added. + { + //It only makes sense to add decompression statistics when reading from PAK files. + statistics.push_back(Statistic::CreateInteger(m_name, "Available decompression slots", m_maxNumJobs - m_numRunningJobs)); + statistics.push_back(Statistic::CreateInteger(m_name, "Available read slots", m_maxNumReads - m_numInFlightReads)); + statistics.push_back(Statistic::CreateInteger(m_name, "Pending decompression", m_numPendingDecompression)); + statistics.push_back(Statistic::CreateFloat(m_name, "Buffer memory (MB)", m_memoryUsage * bytesToMB)); + + double averageJobStartDelay = m_decompressionJobDelayMicroSec.CalculateAverage() * usToMs; + statistics.push_back(Statistic::CreateFloat(m_name, "Decompression job delay (avg. ms)", averageJobStartDelay)); + + double totalBytesDecompressedMB = m_bytesDecompressed.GetTotal() * bytesToMB; + double totalDecompressionTimeSec = m_decompressionDurationMicroSec.GetTotal() * usToSec; + statistics.push_back(Statistic::CreateFloat(m_name, "Decompression Speed per job (avg. mbps)", totalBytesDecompressedMB / totalDecompressionTimeSec)); #if AZ_STREAMER_ADD_EXTRA_PROFILING_INFO - statistics.push_back(Statistic::CreatePercentage(m_name, DecompBoundName, m_decompressionBoundStat.GetAverage())); - statistics.push_back(Statistic::CreatePercentage(m_name, ReadBoundName, m_readBoundStat.GetAverage())); + statistics.push_back(Statistic::CreatePercentage(m_name, DecompBoundName, m_decompressionBoundStat.GetAverage())); + statistics.push_back(Statistic::CreatePercentage(m_name, ReadBoundName, m_readBoundStat.GetAverage())); #endif - } - - StreamStackEntry::CollectStatistics(statistics); } - bool FullFileDecompressor::IsIdle() const - { - return - m_pendingReads.empty() && - m_pendingFileExistChecks.empty() && - m_numInFlightReads == 0 && - m_numPendingDecompression == 0 && - m_numRunningJobs == 0; - } + StreamStackEntry::CollectStatistics(statistics); + } - void FullFileDecompressor::PrepareReadRequest(FileRequest* request, FileRequest::ReadRequestData& data) + bool FullFileDecompressor::IsIdle() const + { + return + m_pendingReads.empty() && + m_pendingFileExistChecks.empty() && + m_numInFlightReads == 0 && + m_numPendingDecompression == 0 && + m_numRunningJobs == 0; + } + + void FullFileDecompressor::PrepareReadRequest(FileRequest* request, FileRequest::ReadRequestData& data) + { + CompressionInfo info; + if (CompressionUtils::FindCompressionInfo(info, data.m_path.GetRelativePath())) { - CompressionInfo info; - if (CompressionUtils::FindCompressionInfo(info, data.m_path.GetRelativePath())) + FileRequest* nextRequest = m_context->GetNewInternalRequest(); + if (info.m_isCompressed) { - FileRequest* nextRequest = m_context->GetNewInternalRequest(); - if (info.m_isCompressed) - { - AZ_Assert(info.m_decompressor, - "FullFileDecompressor::PrepareRequest found a compressed file, but no decompressor to decompress with."); - nextRequest->CreateCompressedRead(request, AZStd::move(info), data.m_output, data.m_offset, data.m_size); - } - else - { - FileRequest* pathStorageRequest = m_context->GetNewInternalRequest(); - pathStorageRequest->CreateRequestPathStore(request, AZStd::move(info.m_archiveFilename)); - auto& pathStorage = AZStd::get(pathStorageRequest->GetCommand()); - - nextRequest->CreateRead(pathStorageRequest, data.m_output, data.m_outputSize, pathStorage.m_path, - info.m_offset + data.m_offset, data.m_size, info.m_isSharedPak); - } - - if (info.m_conflictResolution == ConflictResolution::PreferFile) - { - auto callback = [this, nextRequest](const FileRequest& checkRequest) - { - AZ_PROFILE_FUNCTION(AzCore); - auto check = AZStd::get_if(&checkRequest.GetCommand()); - AZ_Assert(check, - "Callback in FullFileDecompressor::PrepareReadRequest expected FileExistsCheck but got another command."); - if (check->m_found) - { - FileRequest* originalRequest = m_context->RejectRequest(nextRequest); - if (AZStd::holds_alternative(originalRequest->GetCommand())) - { - originalRequest = m_context->RejectRequest(originalRequest); - } - StreamStackEntry::PrepareRequest(originalRequest); - } - else - { - m_context->PushPreparedRequest(nextRequest); - } - }; - FileRequest* fileCheckRequest = m_context->GetNewInternalRequest(); - fileCheckRequest->CreateFileExistsCheck(data.m_path); - fileCheckRequest->SetCompletionCallback(AZStd::move(callback)); - StreamStackEntry::QueueRequest(fileCheckRequest); - } - else - { - m_context->PushPreparedRequest(nextRequest); - } + AZ_Assert(info.m_decompressor, + "FullFileDecompressor::PrepareRequest found a compressed file, but no decompressor to decompress with."); + nextRequest->CreateCompressedRead(request, AZStd::move(info), data.m_output, data.m_offset, data.m_size); } else { - StreamStackEntry::PrepareRequest(request); - } - } + FileRequest* pathStorageRequest = m_context->GetNewInternalRequest(); + pathStorageRequest->CreateRequestPathStore(request, AZStd::move(info.m_archiveFilename)); + auto& pathStorage = AZStd::get(pathStorageRequest->GetCommand()); - void FullFileDecompressor::PrepareDedicatedCache(FileRequest* request, const RequestPath& path) - { - CompressionInfo info; - if (CompressionUtils::FindCompressionInfo(info, path.GetRelativePath())) + nextRequest->CreateRead(pathStorageRequest, data.m_output, data.m_outputSize, pathStorage.m_path, + info.m_offset + data.m_offset, data.m_size, info.m_isSharedPak); + } + + if (info.m_conflictResolution == ConflictResolution::PreferFile) { - FileRequest* nextRequest = m_context->GetNewInternalRequest(); - AZStd::visit([request, &info, nextRequest](auto&& args) + auto callback = [this, nextRequest](const FileRequest& checkRequest) { - using Command = AZStd::decay_t; - if constexpr (AZStd::is_same_v) + AZ_PROFILE_FUNCTION(AzCore); + auto check = AZStd::get_if(&checkRequest.GetCommand()); + AZ_Assert(check, + "Callback in FullFileDecompressor::PrepareReadRequest expected FileExistsCheck but got another command."); + if (check->m_found) { - nextRequest->CreateDedicatedCacheCreation(AZStd::move(info.m_archiveFilename), - FileRange::CreateRange(info.m_offset, info.m_compressedSize), request); - } - else if constexpr (AZStd::is_same_v) - { - nextRequest->CreateDedicatedCacheDestruction(AZStd::move(info.m_archiveFilename), - FileRange::CreateRange(info.m_offset, info.m_compressedSize), request); - } - }, request->GetCommand()); - - if (info.m_conflictResolution == ConflictResolution::PreferFile) - { - auto callback = [this, nextRequest](const FileRequest& checkRequest) - { - AZ_PROFILE_FUNCTION(AzCore); - auto check = AZStd::get_if(&checkRequest.GetCommand()); - AZ_Assert(check, - "Callback in FullFileDecompressor::PrepareDedicatedCache expected FileExistsCheck but got another command."); - if (check->m_found) + FileRequest* originalRequest = m_context->RejectRequest(nextRequest); + if (AZStd::holds_alternative(originalRequest->GetCommand())) { - FileRequest* originalRequest = nextRequest->GetParent(); - m_context->RejectRequest(nextRequest); - StreamStackEntry::PrepareRequest(originalRequest); + originalRequest = m_context->RejectRequest(originalRequest); } - else - { - m_context->PushPreparedRequest(nextRequest); - } - }; - FileRequest* fileCheckRequest = m_context->GetNewInternalRequest(); - fileCheckRequest->CreateFileExistsCheck(path); - fileCheckRequest->SetCompletionCallback(AZStd::move(callback)); - StreamStackEntry::QueueRequest(fileCheckRequest); - } - else - { - m_context->PushPreparedRequest(nextRequest); - } - } - else - { - StreamStackEntry::PrepareRequest(request); - } - } - - void FullFileDecompressor::FileExistsCheck(FileRequest* checkRequest) - { - auto& fileCheckRequest = AZStd::get(checkRequest->GetCommand()); - CompressionInfo info; - if (CompressionUtils::FindCompressionInfo(info, fileCheckRequest.m_path.GetRelativePath())) - { - fileCheckRequest.m_found = true; - } - else - { - // The file isn't in the archive but might still exist as a loose file, so let the next node have a shot. - StreamStackEntry::QueueRequest(checkRequest); - } - } - - void FullFileDecompressor::StartArchiveRead(FileRequest* compressedReadRequest) - { - if (!m_next) - { - compressedReadRequest->SetStatus(IStreamerTypes::RequestStatus::Failed); - m_context->MarkRequestAsCompleted(compressedReadRequest); - return; - } - - for (u32 i = 0; i < m_maxNumReads; ++i) - { - if (m_readBufferStatus[i] == ReadBufferStatus::Unused) - { - auto data = AZStd::get_if(&compressedReadRequest->GetCommand()); - AZ_Assert(data, "Compressed request that's starting a read in FullFileDecompressor didn't contain compression read data."); - AZ_Assert(data->m_compressionInfo.m_decompressor, - "FileRequest for FullFileDecompressor is missing a decompression callback."); - - CompressionInfo& info = data->m_compressionInfo; - AZ_Assert(info.m_decompressor, "FullFileDecompressor is planning to a queue a request for reading but couldn't find a decompressor."); - - // The buffer is aligned down but the offset is not corrected. If the offset was adjusted it would mean the same data is read - // multiple times and negates the block cache's ability to detect these cases. By still adjusting it means that the reads between - // the BlockCache's prolog and epilog are read into aligned buffers. - size_t offsetAdjustment = info.m_offset - AZ_SIZE_ALIGN_DOWN(info.m_offset, aznumeric_cast(m_alignment)); - size_t bufferSize = AZ_SIZE_ALIGN_UP((info.m_compressedSize + offsetAdjustment), aznumeric_cast(m_alignment)); - m_readBuffers[i] = reinterpret_cast(AZ::AllocatorInstance::Get().Allocate( - bufferSize, m_alignment, 0, "AZ::IO::Streamer FullFileDecompressor", __FILE__, __LINE__)); - m_memoryUsage += bufferSize; - - FileRequest* archiveReadRequest = m_context->GetNewInternalRequest(); - archiveReadRequest->CreateRead(compressedReadRequest, m_readBuffers[i] + offsetAdjustment, bufferSize, info.m_archiveFilename, - info.m_offset, info.m_compressedSize, info.m_isSharedPak); - archiveReadRequest->SetCompletionCallback( - [this, readSlot = i](FileRequest& request) - { - AZ_PROFILE_FUNCTION(AzCore); - FinishArchiveRead(&request, readSlot); - }); - m_next->QueueRequest(archiveReadRequest); - - m_readRequests[i] = archiveReadRequest; - m_readBufferStatus[i] = ReadBufferStatus::ReadInFlight; - - AZ_Assert(m_numInFlightReads < m_maxNumReads, - "A FileRequest was queued for reading in FullFileDecompressor, but there's no slots available."); - m_numInFlightReads++; - - return; - } - } - AZ_Assert(false, "%u of %u read slots are use in the FullFileDecompressor, but no empty slot was found.", m_numInFlightReads, m_maxNumReads); - } - - void FullFileDecompressor::FinishArchiveRead(FileRequest* readRequest, u32 readSlot) - { - AZ_Assert(m_readRequests[readSlot] == readRequest, - "Request in the archive read slot isn't the same as request that's being completed."); - - FileRequest* compressedRequest = readRequest->GetParent(); - AZ_Assert(compressedRequest, "Read requests started by FullFileDecompressor is missing a parent request."); - - if (readRequest->GetStatus() == IStreamerTypes::RequestStatus::Completed) - { - m_readBufferStatus[readSlot] = ReadBufferStatus::PendingDecompression; - ++m_numPendingDecompression; - - // Add this wait so the compressed request isn't fully completed yet as only the read part is done. The - // job thread will finish this wait, which in turn will trigger this function again on the main streaming thread. - FileRequest* waitRequest = m_context->GetNewInternalRequest(); - waitRequest->CreateWait(compressedRequest); - m_readRequests[readSlot] = waitRequest; - } - else - { - auto data = AZStd::get_if(&compressedRequest->GetCommand()); - AZ_Assert(data, "Compressed request in FullFileDecompressor that finished unsuccessfully didn't contain compression read data."); - CompressionInfo& info = data->m_compressionInfo; - size_t offsetAdjustment = info.m_offset - AZ_SIZE_ALIGN_DOWN(info.m_offset, aznumeric_cast(m_alignment)); - size_t bufferSize = AZ_SIZE_ALIGN_UP((info.m_compressedSize + offsetAdjustment), aznumeric_cast(m_alignment)); - m_memoryUsage -= bufferSize; - - if (m_readBuffers[readSlot] != nullptr) - { - AZ::AllocatorInstance::Get().DeAllocate(m_readBuffers[readSlot], bufferSize, m_alignment); - m_readBuffers[readSlot] = nullptr; - } - m_readRequests[readSlot] = nullptr; - m_readBufferStatus[readSlot] = ReadBufferStatus::Unused; - AZ_Assert(m_numInFlightReads > 0, - "Trying to decrement a read request after it was canceled or failed in FullFileDecompressor, " - "but no read requests are supposed to be queued."); - m_numInFlightReads--; - } - } - - bool FullFileDecompressor::StartDecompressions() - { - bool queuedJobs = false; - u32 jobSlot = 0; - for (u32 readSlot = 0; readSlot < m_maxNumReads; ++readSlot) - { - // Find completed read. - if (m_readBufferStatus[readSlot] != ReadBufferStatus::PendingDecompression) - { - continue; - } - - // Find decompression slot - for (; jobSlot < m_maxNumJobs; ++jobSlot) - { - if (m_processingJobs[jobSlot].IsProcessing()) - { - continue; - } - - FileRequest* waitRequest = m_readRequests[readSlot]; - AZ_Assert(AZStd::holds_alternative(waitRequest->GetCommand()), - "File request waiting for decompression wasn't marked as being a wait operation."); - FileRequest* compressedRequest = waitRequest->GetParent(); - AZ_Assert(compressedRequest, "Read requests started by FullFileDecompressor is missing a parent request."); - - waitRequest->SetCompletionCallback([this, jobSlot](FileRequest& request) - { - AZ_PROFILE_FUNCTION(AzCore); - FinishDecompression(&request, jobSlot); - }); - - DecompressionInformation& info = m_processingJobs[jobSlot]; - info.m_waitRequest = waitRequest; - info.m_queueStartTime = AZStd::chrono::high_resolution_clock::now(); - info.m_jobStartTime = info.m_queueStartTime; // Set these to the same in case the scheduler requests an update before the job has started. - info.m_compressedData = m_readBuffers[readSlot]; // Transfer ownership of the pointer. - m_readBuffers[readSlot] = nullptr; - - AZ::Job* decompressionJob; - auto data = AZStd::get_if(&compressedRequest->GetCommand()); - AZ_Assert(data, "Compressed request in FullFileDecompressor that's starting decompression didn't contain compression read data."); - AZ_Assert(data->m_compressionInfo.m_decompressor, "FullFileDecompressor is queuing a decompression job but couldn't find a decompressor."); - - info.m_alignmentOffset = aznumeric_caster(data->m_compressionInfo.m_offset - - AZ_SIZE_ALIGN_DOWN(data->m_compressionInfo.m_offset, aznumeric_cast(m_alignment))); - - if (data->m_readOffset == 0 && data->m_readSize == data->m_compressionInfo.m_uncompressedSize) - { - auto job = [this, &info]() - { - FullDecompression(m_context, info); - }; - decompressionJob = AZ::CreateJobFunction(job, true, m_decompressionjobContext.get()); + StreamStackEntry::PrepareRequest(originalRequest); } else { - m_memoryUsage += data->m_compressionInfo.m_uncompressedSize; - auto job = [this, &info]() - { - PartialDecompression(m_context, info); - }; - decompressionJob = AZ::CreateJobFunction(job, true, m_decompressionjobContext.get()); + m_context->PushPreparedRequest(nextRequest); } - --m_numPendingDecompression; - ++m_numRunningJobs; - decompressionJob->Start(); - - m_readRequests[readSlot] = nullptr; - m_readBufferStatus[readSlot] = ReadBufferStatus::Unused; - AZ_Assert(m_numInFlightReads > 0, "Trying to decrement a read request after it's queued for decompression in FullFileDecompressor, but no read requests are supposed to be queued."); - m_numInFlightReads--; - - queuedJobs = true; - break; - } - - if (m_numInFlightReads == 0 || m_numRunningJobs == m_maxNumJobs) - { - return queuedJobs; - } + }; + FileRequest* fileCheckRequest = m_context->GetNewInternalRequest(); + fileCheckRequest->CreateFileExistsCheck(data.m_path); + fileCheckRequest->SetCompletionCallback(AZStd::move(callback)); + StreamStackEntry::QueueRequest(fileCheckRequest); } - return queuedJobs; + else + { + m_context->PushPreparedRequest(nextRequest); + } + } + else + { + StreamStackEntry::PrepareRequest(request); + } + } + + void FullFileDecompressor::PrepareDedicatedCache(FileRequest* request, const RequestPath& path) + { + CompressionInfo info; + if (CompressionUtils::FindCompressionInfo(info, path.GetRelativePath())) + { + FileRequest* nextRequest = m_context->GetNewInternalRequest(); + AZStd::visit([request, &info, nextRequest](auto&& args) + { + using Command = AZStd::decay_t; + if constexpr (AZStd::is_same_v) + { + nextRequest->CreateDedicatedCacheCreation(AZStd::move(info.m_archiveFilename), + FileRange::CreateRange(info.m_offset, info.m_compressedSize), request); + } + else if constexpr (AZStd::is_same_v) + { + nextRequest->CreateDedicatedCacheDestruction(AZStd::move(info.m_archiveFilename), + FileRange::CreateRange(info.m_offset, info.m_compressedSize), request); + } + }, request->GetCommand()); + + if (info.m_conflictResolution == ConflictResolution::PreferFile) + { + auto callback = [this, nextRequest](const FileRequest& checkRequest) + { + AZ_PROFILE_FUNCTION(AzCore); + auto check = AZStd::get_if(&checkRequest.GetCommand()); + AZ_Assert(check, + "Callback in FullFileDecompressor::PrepareDedicatedCache expected FileExistsCheck but got another command."); + if (check->m_found) + { + FileRequest* originalRequest = nextRequest->GetParent(); + m_context->RejectRequest(nextRequest); + StreamStackEntry::PrepareRequest(originalRequest); + } + else + { + m_context->PushPreparedRequest(nextRequest); + } + }; + FileRequest* fileCheckRequest = m_context->GetNewInternalRequest(); + fileCheckRequest->CreateFileExistsCheck(path); + fileCheckRequest->SetCompletionCallback(AZStd::move(callback)); + StreamStackEntry::QueueRequest(fileCheckRequest); + } + else + { + m_context->PushPreparedRequest(nextRequest); + } + } + else + { + StreamStackEntry::PrepareRequest(request); + } + } + + void FullFileDecompressor::FileExistsCheck(FileRequest* checkRequest) + { + auto& fileCheckRequest = AZStd::get(checkRequest->GetCommand()); + CompressionInfo info; + if (CompressionUtils::FindCompressionInfo(info, fileCheckRequest.m_path.GetRelativePath())) + { + fileCheckRequest.m_found = true; + } + else + { + // The file isn't in the archive but might still exist as a loose file, so let the next node have a shot. + StreamStackEntry::QueueRequest(checkRequest); + } + } + + void FullFileDecompressor::StartArchiveRead(FileRequest* compressedReadRequest) + { + if (!m_next) + { + compressedReadRequest->SetStatus(IStreamerTypes::RequestStatus::Failed); + m_context->MarkRequestAsCompleted(compressedReadRequest); + return; } - void FullFileDecompressor::FinishDecompression([[maybe_unused]] FileRequest* waitRequest, u32 jobSlot) + for (u32 i = 0; i < m_maxNumReads; ++i) { - DecompressionInformation& jobInfo = m_processingJobs[jobSlot]; - AZ_Assert(jobInfo.m_waitRequest == waitRequest, "Job slot didn't contain the expected wait request."); + if (m_readBufferStatus[i] == ReadBufferStatus::Unused) + { + auto data = AZStd::get_if(&compressedReadRequest->GetCommand()); + AZ_Assert(data, "Compressed request that's starting a read in FullFileDecompressor didn't contain compression read data."); + AZ_Assert(data->m_compressionInfo.m_decompressor, + "FileRequest for FullFileDecompressor is missing a decompression callback."); - auto endTime = AZStd::chrono::high_resolution_clock::now(); + CompressionInfo& info = data->m_compressionInfo; + AZ_Assert(info.m_decompressor, "FullFileDecompressor is planning to a queue a request for reading but couldn't find a decompressor."); - FileRequest* compressedRequest = jobInfo.m_waitRequest->GetParent(); - AZ_Assert(compressedRequest, "A wait request attached to FullFileDecompressor was completed but didn't have a parent compressed request."); + // The buffer is aligned down but the offset is not corrected. If the offset was adjusted it would mean the same data is read + // multiple times and negates the block cache's ability to detect these cases. By still adjusting it means that the reads between + // the BlockCache's prolog and epilog are read into aligned buffers. + size_t offsetAdjustment = info.m_offset - AZ_SIZE_ALIGN_DOWN(info.m_offset, aznumeric_cast(m_alignment)); + size_t bufferSize = AZ_SIZE_ALIGN_UP((info.m_compressedSize + offsetAdjustment), aznumeric_cast(m_alignment)); + m_readBuffers[i] = reinterpret_cast(AZ::AllocatorInstance::Get().Allocate( + bufferSize, m_alignment, 0, "AZ::IO::Streamer FullFileDecompressor", __FILE__, __LINE__)); + m_memoryUsage += bufferSize; + + FileRequest* archiveReadRequest = m_context->GetNewInternalRequest(); + archiveReadRequest->CreateRead(compressedReadRequest, m_readBuffers[i] + offsetAdjustment, bufferSize, info.m_archiveFilename, + info.m_offset, info.m_compressedSize, info.m_isSharedPak); + archiveReadRequest->SetCompletionCallback( + [this, readSlot = i](FileRequest& request) + { + AZ_PROFILE_FUNCTION(AzCore); + FinishArchiveRead(&request, readSlot); + }); + m_next->QueueRequest(archiveReadRequest); + + m_readRequests[i] = archiveReadRequest; + m_readBufferStatus[i] = ReadBufferStatus::ReadInFlight; + + AZ_Assert(m_numInFlightReads < m_maxNumReads, + "A FileRequest was queued for reading in FullFileDecompressor, but there's no slots available."); + m_numInFlightReads++; + + return; + } + } + AZ_Assert(false, "%u of %u read slots are use in the FullFileDecompressor, but no empty slot was found.", m_numInFlightReads, m_maxNumReads); + } + + void FullFileDecompressor::FinishArchiveRead(FileRequest* readRequest, u32 readSlot) + { + AZ_Assert(m_readRequests[readSlot] == readRequest, + "Request in the archive read slot isn't the same as request that's being completed."); + + FileRequest* compressedRequest = readRequest->GetParent(); + AZ_Assert(compressedRequest, "Read requests started by FullFileDecompressor is missing a parent request."); + + if (readRequest->GetStatus() == IStreamerTypes::RequestStatus::Completed) + { + m_readBufferStatus[readSlot] = ReadBufferStatus::PendingDecompression; + ++m_numPendingDecompression; + + // Add this wait so the compressed request isn't fully completed yet as only the read part is done. The + // job thread will finish this wait, which in turn will trigger this function again on the main streaming thread. + FileRequest* waitRequest = m_context->GetNewInternalRequest(); + waitRequest->CreateWait(compressedRequest); + m_readRequests[readSlot] = waitRequest; + } + else + { auto data = AZStd::get_if(&compressedRequest->GetCommand()); - AZ_Assert(data, "Compressed request in FullFileDecompressor that completed decompression didn't contain compression read data."); + AZ_Assert(data, "Compressed request in FullFileDecompressor that finished unsuccessfully didn't contain compression read data."); CompressionInfo& info = data->m_compressionInfo; size_t offsetAdjustment = info.m_offset - AZ_SIZE_ALIGN_DOWN(info.m_offset, aznumeric_cast(m_alignment)); size_t bufferSize = AZ_SIZE_ALIGN_UP((info.m_compressedSize + offsetAdjustment), aznumeric_cast(m_alignment)); m_memoryUsage -= bufferSize; - if (data->m_readOffset != 0 || data->m_readSize != data->m_compressionInfo.m_uncompressedSize) + + if (m_readBuffers[readSlot] != nullptr) { - m_memoryUsage -= data->m_compressionInfo.m_uncompressedSize; + AZ::AllocatorInstance::Get().DeAllocate(m_readBuffers[readSlot], bufferSize, m_alignment); + m_readBuffers[readSlot] = nullptr; + } + m_readRequests[readSlot] = nullptr; + m_readBufferStatus[readSlot] = ReadBufferStatus::Unused; + AZ_Assert(m_numInFlightReads > 0, + "Trying to decrement a read request after it was canceled or failed in FullFileDecompressor, " + "but no read requests are supposed to be queued."); + m_numInFlightReads--; + } + } + + bool FullFileDecompressor::StartDecompressions() + { + bool queuedJobs = false; + u32 jobSlot = 0; + for (u32 readSlot = 0; readSlot < m_maxNumReads; ++readSlot) + { + // Find completed read. + if (m_readBufferStatus[readSlot] != ReadBufferStatus::PendingDecompression) + { + continue; } - m_decompressionJobDelayMicroSec.PushEntry(AZStd::chrono::duration_cast( - jobInfo.m_jobStartTime - jobInfo.m_queueStartTime).count()); - m_decompressionDurationMicroSec.PushEntry(AZStd::chrono::duration_cast( - endTime - jobInfo.m_jobStartTime).count()); - m_bytesDecompressed.PushEntry(data->m_compressionInfo.m_compressedSize); + // Find decompression slot + for (; jobSlot < m_maxNumJobs; ++jobSlot) + { + if (m_processingJobs[jobSlot].IsProcessing()) + { + continue; + } - AZ::AllocatorInstance::Get().DeAllocate(jobInfo.m_compressedData, bufferSize, m_alignment); - jobInfo.m_compressedData = nullptr; - AZ_Assert(m_numRunningJobs > 0, "About to complete a decompression job, but the internal count doesn't see a running job."); - --m_numRunningJobs; - return; + FileRequest* waitRequest = m_readRequests[readSlot]; + AZ_Assert(AZStd::holds_alternative(waitRequest->GetCommand()), + "File request waiting for decompression wasn't marked as being a wait operation."); + FileRequest* compressedRequest = waitRequest->GetParent(); + AZ_Assert(compressedRequest, "Read requests started by FullFileDecompressor is missing a parent request."); + + waitRequest->SetCompletionCallback([this, jobSlot](FileRequest& request) + { + AZ_PROFILE_FUNCTION(AzCore); + FinishDecompression(&request, jobSlot); + }); + + DecompressionInformation& info = m_processingJobs[jobSlot]; + info.m_waitRequest = waitRequest; + info.m_queueStartTime = AZStd::chrono::high_resolution_clock::now(); + info.m_jobStartTime = info.m_queueStartTime; // Set these to the same in case the scheduler requests an update before the job has started. + info.m_compressedData = m_readBuffers[readSlot]; // Transfer ownership of the pointer. + m_readBuffers[readSlot] = nullptr; + + AZ::Job* decompressionJob; + auto data = AZStd::get_if(&compressedRequest->GetCommand()); + AZ_Assert(data, "Compressed request in FullFileDecompressor that's starting decompression didn't contain compression read data."); + AZ_Assert(data->m_compressionInfo.m_decompressor, "FullFileDecompressor is queuing a decompression job but couldn't find a decompressor."); + + info.m_alignmentOffset = aznumeric_caster(data->m_compressionInfo.m_offset - + AZ_SIZE_ALIGN_DOWN(data->m_compressionInfo.m_offset, aznumeric_cast(m_alignment))); + + if (data->m_readOffset == 0 && data->m_readSize == data->m_compressionInfo.m_uncompressedSize) + { + auto job = [this, &info]() + { + FullDecompression(m_context, info); + }; + decompressionJob = AZ::CreateJobFunction(job, true, m_decompressionjobContext.get()); + } + else + { + m_memoryUsage += data->m_compressionInfo.m_uncompressedSize; + auto job = [this, &info]() + { + PartialDecompression(m_context, info); + }; + decompressionJob = AZ::CreateJobFunction(job, true, m_decompressionjobContext.get()); + } + --m_numPendingDecompression; + ++m_numRunningJobs; + decompressionJob->Start(); + + m_readRequests[readSlot] = nullptr; + m_readBufferStatus[readSlot] = ReadBufferStatus::Unused; + AZ_Assert(m_numInFlightReads > 0, "Trying to decrement a read request after it's queued for decompression in FullFileDecompressor, but no read requests are supposed to be queued."); + m_numInFlightReads--; + + queuedJobs = true; + break; + } + + if (m_numInFlightReads == 0 || m_numRunningJobs == m_maxNumJobs) + { + return queuedJobs; + } } + return queuedJobs; + } - void FullFileDecompressor::FullDecompression(StreamerContext* context, DecompressionInformation& info) + void FullFileDecompressor::FinishDecompression([[maybe_unused]] FileRequest* waitRequest, u32 jobSlot) + { + DecompressionInformation& jobInfo = m_processingJobs[jobSlot]; + AZ_Assert(jobInfo.m_waitRequest == waitRequest, "Job slot didn't contain the expected wait request."); + + auto endTime = AZStd::chrono::high_resolution_clock::now(); + + FileRequest* compressedRequest = jobInfo.m_waitRequest->GetParent(); + AZ_Assert(compressedRequest, "A wait request attached to FullFileDecompressor was completed but didn't have a parent compressed request."); + auto data = AZStd::get_if(&compressedRequest->GetCommand()); + AZ_Assert(data, "Compressed request in FullFileDecompressor that completed decompression didn't contain compression read data."); + CompressionInfo& info = data->m_compressionInfo; + size_t offsetAdjustment = info.m_offset - AZ_SIZE_ALIGN_DOWN(info.m_offset, aznumeric_cast(m_alignment)); + size_t bufferSize = AZ_SIZE_ALIGN_UP((info.m_compressedSize + offsetAdjustment), aznumeric_cast(m_alignment)); + m_memoryUsage -= bufferSize; + if (data->m_readOffset != 0 || data->m_readSize != data->m_compressionInfo.m_uncompressedSize) { - info.m_jobStartTime = AZStd::chrono::high_resolution_clock::now(); - - FileRequest* compressedRequest = info.m_waitRequest->GetParent(); - AZ_Assert(compressedRequest, "A wait request attached to FullFileDecompressor was completed but didn't have a parent compressed request."); - auto request = AZStd::get_if(&compressedRequest->GetCommand()); - AZ_Assert(request, "Compressed request in FullFileDecompressor that's running full decompression didn't contain compression read data."); - CompressionInfo& compressionInfo = request->m_compressionInfo; - AZ_Assert(compressionInfo.m_decompressor, "Full decompressor job started, but there's no decompressor callback assigned."); - - AZ_Assert(request->m_readOffset == 0, "FullFileDecompressor is doing a full decompression on a file request with an offset (%zu).", - request->m_readOffset); - AZ_Assert(compressionInfo.m_uncompressedSize == request->m_readSize, - "FullFileDecompressor is doing a full decompression, but the target buffer size (%llu) doesn't match the decompressed size (%zu).", - request->m_readSize, compressionInfo.m_uncompressedSize); - - bool success = compressionInfo.m_decompressor(compressionInfo, info.m_compressedData + info.m_alignmentOffset, - compressionInfo.m_compressedSize, request->m_output, compressionInfo.m_uncompressedSize); - info.m_waitRequest->SetStatus(success ? IStreamerTypes::RequestStatus::Completed : IStreamerTypes::RequestStatus::Failed); - - context->MarkRequestAsCompleted(info.m_waitRequest); - context->WakeUpSchedulingThread(); + m_memoryUsage -= data->m_compressionInfo.m_uncompressedSize; } - void FullFileDecompressor::PartialDecompression(StreamerContext* context, DecompressionInformation& info) - { - info.m_jobStartTime = AZStd::chrono::high_resolution_clock::now(); + m_decompressionJobDelayMicroSec.PushEntry(AZStd::chrono::duration_cast( + jobInfo.m_jobStartTime - jobInfo.m_queueStartTime).count()); + m_decompressionDurationMicroSec.PushEntry(AZStd::chrono::duration_cast( + endTime - jobInfo.m_jobStartTime).count()); + m_bytesDecompressed.PushEntry(data->m_compressionInfo.m_compressedSize); - FileRequest* compressedRequest = info.m_waitRequest->GetParent(); - AZ_Assert(compressedRequest, "A wait request attached to FullFileDecompressor was completed but didn't have a parent compressed request."); - auto request = AZStd::get_if(&compressedRequest->GetCommand()); - AZ_Assert(request, "Compressed request in FullFileDecompressor that's running partial decompression didn't contain compression read data."); - CompressionInfo& compressionInfo = request->m_compressionInfo; - AZ_Assert(compressionInfo.m_decompressor, "Partial decompressor job started, but there's no decompressor callback assigned."); + AZ::AllocatorInstance::Get().DeAllocate(jobInfo.m_compressedData, bufferSize, m_alignment); + jobInfo.m_compressedData = nullptr; + AZ_Assert(m_numRunningJobs > 0, "About to complete a decompression job, but the internal count doesn't see a running job."); + --m_numRunningJobs; + return; + } - AZStd::unique_ptr decompressionBuffer = AZStd::unique_ptr(new u8[compressionInfo.m_uncompressedSize]); - bool success = compressionInfo.m_decompressor(compressionInfo, info.m_compressedData + info.m_alignmentOffset, - compressionInfo.m_compressedSize, decompressionBuffer.get(), compressionInfo.m_uncompressedSize); - info.m_waitRequest->SetStatus(success ? IStreamerTypes::RequestStatus::Completed : IStreamerTypes::RequestStatus::Failed); - - memcpy(request->m_output, decompressionBuffer.get() + request->m_readOffset, request->m_readSize); + void FullFileDecompressor::FullDecompression(StreamerContext* context, DecompressionInformation& info) + { + info.m_jobStartTime = AZStd::chrono::high_resolution_clock::now(); - context->MarkRequestAsCompleted(info.m_waitRequest); - context->WakeUpSchedulingThread(); - } - } // namespace IO -} // namespace AZ + FileRequest* compressedRequest = info.m_waitRequest->GetParent(); + AZ_Assert(compressedRequest, "A wait request attached to FullFileDecompressor was completed but didn't have a parent compressed request."); + auto request = AZStd::get_if(&compressedRequest->GetCommand()); + AZ_Assert(request, "Compressed request in FullFileDecompressor that's running full decompression didn't contain compression read data."); + CompressionInfo& compressionInfo = request->m_compressionInfo; + AZ_Assert(compressionInfo.m_decompressor, "Full decompressor job started, but there's no decompressor callback assigned."); + + AZ_Assert(request->m_readOffset == 0, "FullFileDecompressor is doing a full decompression on a file request with an offset (%zu).", + request->m_readOffset); + AZ_Assert(compressionInfo.m_uncompressedSize == request->m_readSize, + "FullFileDecompressor is doing a full decompression, but the target buffer size (%llu) doesn't match the decompressed size (%zu).", + request->m_readSize, compressionInfo.m_uncompressedSize); + + bool success = compressionInfo.m_decompressor(compressionInfo, info.m_compressedData + info.m_alignmentOffset, + compressionInfo.m_compressedSize, request->m_output, compressionInfo.m_uncompressedSize); + info.m_waitRequest->SetStatus(success ? IStreamerTypes::RequestStatus::Completed : IStreamerTypes::RequestStatus::Failed); + + context->MarkRequestAsCompleted(info.m_waitRequest); + context->WakeUpSchedulingThread(); + } + + void FullFileDecompressor::PartialDecompression(StreamerContext* context, DecompressionInformation& info) + { + info.m_jobStartTime = AZStd::chrono::high_resolution_clock::now(); + + FileRequest* compressedRequest = info.m_waitRequest->GetParent(); + AZ_Assert(compressedRequest, "A wait request attached to FullFileDecompressor was completed but didn't have a parent compressed request."); + auto request = AZStd::get_if(&compressedRequest->GetCommand()); + AZ_Assert(request, "Compressed request in FullFileDecompressor that's running partial decompression didn't contain compression read data."); + CompressionInfo& compressionInfo = request->m_compressionInfo; + AZ_Assert(compressionInfo.m_decompressor, "Partial decompressor job started, but there's no decompressor callback assigned."); + + AZStd::unique_ptr decompressionBuffer = AZStd::unique_ptr(new u8[compressionInfo.m_uncompressedSize]); + bool success = compressionInfo.m_decompressor(compressionInfo, info.m_compressedData + info.m_alignmentOffset, + compressionInfo.m_compressedSize, decompressionBuffer.get(), compressionInfo.m_uncompressedSize); + info.m_waitRequest->SetStatus(success ? IStreamerTypes::RequestStatus::Completed : IStreamerTypes::RequestStatus::Failed); + + memcpy(request->m_output, decompressionBuffer.get() + request->m_readOffset, request->m_readSize); + + context->MarkRequestAsCompleted(info.m_waitRequest); + context->WakeUpSchedulingThread(); + } +} // namespace AZ::IO diff --git a/Code/Framework/AzCore/AzCore/IO/Streamer/ReadSplitter.cpp b/Code/Framework/AzCore/AzCore/IO/Streamer/ReadSplitter.cpp index 00c1c63933..a952e31a93 100644 --- a/Code/Framework/AzCore/AzCore/IO/Streamer/ReadSplitter.cpp +++ b/Code/Framework/AzCore/AzCore/IO/Streamer/ReadSplitter.cpp @@ -14,376 +14,373 @@ #include #include -namespace AZ +namespace AZ::IO { - namespace IO + AZStd::shared_ptr ReadSplitterConfig::AddStreamStackEntry( + const HardwareInformation& hardware, AZStd::shared_ptr parent) { - AZStd::shared_ptr ReadSplitterConfig::AddStreamStackEntry( - const HardwareInformation& hardware, AZStd::shared_ptr parent) + size_t splitSize; + switch (m_splitSize) { - size_t splitSize; - switch (m_splitSize) - { - case SplitSize::MaxTransfer: - splitSize = hardware.m_maxTransfer; - break; - case SplitSize::MemoryAlignment: - splitSize = hardware.m_maxPhysicalSectorSize; - break; - default: - splitSize = m_splitSize; - break; - } - - size_t bufferSize = m_bufferSizeMib * 1_mib; - if (bufferSize < splitSize) - { - AZ_Warning("Streamer", false, "The buffer size for the Read Splitter is smaller than the individual split size. " - "It will be increased to fit at least one split."); - bufferSize = splitSize; - } - - auto stackEntry = AZStd::make_shared( - splitSize, - aznumeric_caster(hardware.m_maxPhysicalSectorSize), - aznumeric_caster(hardware.m_maxLogicalSectorSize), - bufferSize, m_adjustOffset, m_splitAlignedRequests); - stackEntry->SetNext(AZStd::move(parent)); - return stackEntry; + case SplitSize::MaxTransfer: + splitSize = hardware.m_maxTransfer; + break; + case SplitSize::MemoryAlignment: + splitSize = hardware.m_maxPhysicalSectorSize; + break; + default: + splitSize = m_splitSize; + break; } - void ReadSplitterConfig::Reflect(AZ::ReflectContext* context) + size_t bufferSize = m_bufferSizeMib * 1_mib; + if (bufferSize < splitSize) { - if (auto serializeContext = azrtti_cast(context); serializeContext != nullptr) - { - serializeContext->Enum() - ->Version(1) - ->Value("MaxTransfer", SplitSize::MaxTransfer) - ->Value("MemoryAlignment", SplitSize::MemoryAlignment); - - serializeContext->Class() - ->Version(1) - ->Field("BufferSizeMib", &ReadSplitterConfig::m_bufferSizeMib) - ->Field("SplitSize", &ReadSplitterConfig::m_splitSize) - ->Field("AdjustOffset", &ReadSplitterConfig::m_adjustOffset) - ->Field("SplitAlignedRequests", &ReadSplitterConfig::m_splitAlignedRequests); - } + AZ_Warning("Streamer", false, "The buffer size for the Read Splitter is smaller than the individual split size. " + "It will be increased to fit at least one split."); + bufferSize = splitSize; } - static constexpr char AvgNumSubReadsName[] = "Avg. num sub reads"; - static constexpr char AlignedReadsName[] = "Aligned reads"; - static constexpr char NumAvailableBufferSlotsName[] = "Num available buffer slots"; - static constexpr char NumPendingReadsName[] = "Num pending reads"; + auto stackEntry = AZStd::make_shared( + splitSize, + aznumeric_caster(hardware.m_maxPhysicalSectorSize), + aznumeric_caster(hardware.m_maxLogicalSectorSize), + bufferSize, m_adjustOffset, m_splitAlignedRequests); + stackEntry->SetNext(AZStd::move(parent)); + return stackEntry; + } - ReadSplitter::ReadSplitter(u64 maxReadSize, u32 memoryAlignment, u32 sizeAlignment, size_t bufferSize, - bool adjustOffset, bool splitAlignedRequests) - : StreamStackEntry("Read splitter") - , m_buffer(nullptr) - , m_bufferSize(bufferSize) - , m_maxReadSize(maxReadSize) - , m_memoryAlignment(memoryAlignment) - , m_sizeAlignment(sizeAlignment) - , m_adjustOffset(adjustOffset) - , m_splitAlignedRequests(splitAlignedRequests) + void ReadSplitterConfig::Reflect(AZ::ReflectContext* context) + { + if (auto serializeContext = azrtti_cast(context); serializeContext != nullptr) { - AZ_Assert(IStreamerTypes::IsPowerOf2(memoryAlignment), "Memory alignment needs to be a power of 2"); - AZ_Assert(IStreamerTypes::IsPowerOf2(sizeAlignment), "Size alignment needs to be a power of 2"); - AZ_Assert(IStreamerTypes::IsAlignedTo(maxReadSize, sizeAlignment), - "Maximum read size isn't aligned to a multiple of the size alignment."); + serializeContext->Enum() + ->Version(1) + ->Value("MaxTransfer", SplitSize::MaxTransfer) + ->Value("MemoryAlignment", SplitSize::MemoryAlignment); - size_t numBufferSlots = bufferSize / maxReadSize; - // Don't divide the reads up in more sub-reads than there are dependencies available. - numBufferSlots = AZStd::min(numBufferSlots, FileRequest::GetMaxNumDependencies()); - m_bufferCopyInformation = AZStd::unique_ptr(new BufferCopyInformation[numBufferSlots]); - m_availableBufferSlots.reserve(numBufferSlots); - for (u32 i = aznumeric_caster(numBufferSlots); i > 0; --i) - { - m_availableBufferSlots.push_back(i - 1); - } + serializeContext->Class() + ->Version(1) + ->Field("BufferSizeMib", &ReadSplitterConfig::m_bufferSizeMib) + ->Field("SplitSize", &ReadSplitterConfig::m_splitSize) + ->Field("AdjustOffset", &ReadSplitterConfig::m_adjustOffset) + ->Field("SplitAlignedRequests", &ReadSplitterConfig::m_splitAlignedRequests); + } + } + + static constexpr char AvgNumSubReadsName[] = "Avg. num sub reads"; + static constexpr char AlignedReadsName[] = "Aligned reads"; + static constexpr char NumAvailableBufferSlotsName[] = "Num available buffer slots"; + static constexpr char NumPendingReadsName[] = "Num pending reads"; + + ReadSplitter::ReadSplitter(u64 maxReadSize, u32 memoryAlignment, u32 sizeAlignment, size_t bufferSize, + bool adjustOffset, bool splitAlignedRequests) + : StreamStackEntry("Read splitter") + , m_buffer(nullptr) + , m_bufferSize(bufferSize) + , m_maxReadSize(maxReadSize) + , m_memoryAlignment(memoryAlignment) + , m_sizeAlignment(sizeAlignment) + , m_adjustOffset(adjustOffset) + , m_splitAlignedRequests(splitAlignedRequests) + { + AZ_Assert(IStreamerTypes::IsPowerOf2(memoryAlignment), "Memory alignment needs to be a power of 2"); + AZ_Assert(IStreamerTypes::IsPowerOf2(sizeAlignment), "Size alignment needs to be a power of 2"); + AZ_Assert(IStreamerTypes::IsAlignedTo(maxReadSize, sizeAlignment), + "Maximum read size isn't aligned to a multiple of the size alignment."); + + size_t numBufferSlots = bufferSize / maxReadSize; + // Don't divide the reads up in more sub-reads than there are dependencies available. + numBufferSlots = AZStd::min(numBufferSlots, FileRequest::GetMaxNumDependencies()); + m_bufferCopyInformation = AZStd::unique_ptr(new BufferCopyInformation[numBufferSlots]); + m_availableBufferSlots.reserve(numBufferSlots); + for (u32 i = aznumeric_caster(numBufferSlots); i > 0; --i) + { + m_availableBufferSlots.push_back(i - 1); + } + } + + ReadSplitter::~ReadSplitter() + { + if (m_buffer) + { + AZ::AllocatorInstance::Get().DeAllocate(m_buffer, m_bufferSize, m_memoryAlignment); + } + } + + void ReadSplitter::QueueRequest(FileRequest* request) + { + AZ_Assert(request, "QueueRequest was provided a null request."); + if (!m_next) + { + request->SetStatus(IStreamerTypes::RequestStatus::Failed); + m_context->MarkRequestAsCompleted(request); + return; } - ReadSplitter::~ReadSplitter() + auto data = AZStd::get_if(&request->GetCommand()); + if (data == nullptr) { - if (m_buffer) - { - AZ::AllocatorInstance::Get().DeAllocate(m_buffer, m_bufferSize, m_memoryAlignment); - } + StreamStackEntry::QueueRequest(request); + return; } - void ReadSplitter::QueueRequest(FileRequest* request) - { - AZ_Assert(request, "QueueRequest was provided a null request."); - if (!m_next) - { - request->SetStatus(IStreamerTypes::RequestStatus::Failed); - m_context->MarkRequestAsCompleted(request); - return; - } + m_averageNumSubReadsStat.PushSample(aznumeric_cast((data->m_size / m_maxReadSize) + 1)); + Statistic::PlotImmediate(m_name, AvgNumSubReadsName, m_averageNumSubReadsStat.GetMostRecentSample()); - auto data = AZStd::get_if(&request->GetCommand()); - if (data == nullptr) + bool isAligned = IStreamerTypes::IsAlignedTo(data->m_output, m_memoryAlignment); + if (m_adjustOffset) + { + isAligned = isAligned && IStreamerTypes::IsAlignedTo(data->m_offset, m_sizeAlignment); + } + + if (isAligned || m_bufferSize == 0) + { + m_alignedReadsStat.PushSample(isAligned ? 1.0 : 0.0); + if (!m_splitAlignedRequests) { StreamStackEntry::QueueRequest(request); - return; - } - - m_averageNumSubReadsStat.PushSample(aznumeric_cast((data->m_size / m_maxReadSize) + 1)); - Statistic::PlotImmediate(m_name, AvgNumSubReadsName, m_averageNumSubReadsStat.GetMostRecentSample()); - - bool isAligned = IStreamerTypes::IsAlignedTo(data->m_output, m_memoryAlignment); - if (m_adjustOffset) - { - isAligned = isAligned && IStreamerTypes::IsAlignedTo(data->m_offset, m_sizeAlignment); - } - - if (isAligned || m_bufferSize == 0) - { - m_alignedReadsStat.PushSample(isAligned ? 1.0 : 0.0); - if (!m_splitAlignedRequests) - { - StreamStackEntry::QueueRequest(request); - } - else - { - QueueAlignedRead(request); - } } else { - m_alignedReadsStat.PushSample(0.0); - InitializeBuffer(); - QueueBufferedRead(request); + QueueAlignedRead(request); } } - - void ReadSplitter::QueueAlignedRead(FileRequest* request) + else { - auto data = AZStd::get_if(&request->GetCommand()); - AZ_Assert(data != nullptr, "Provided request to queue by the Read Splitter did not contain a read command."); + m_alignedReadsStat.PushSample(0.0); + InitializeBuffer(); + QueueBufferedRead(request); + } + } - if (data->m_size <= m_maxReadSize) - { - StreamStackEntry::QueueRequest(request); - return; - } + void ReadSplitter::QueueAlignedRead(FileRequest* request) + { + auto data = AZStd::get_if(&request->GetCommand()); + AZ_Assert(data != nullptr, "Provided request to queue by the Read Splitter did not contain a read command."); - PendingRead pendingRead; - pendingRead.m_request = request; - pendingRead.m_output = reinterpret_cast(data->m_output); - pendingRead.m_outputSize = data->m_outputSize; - pendingRead.m_readSize = data->m_size; - pendingRead.m_offset = data->m_offset; - pendingRead.m_isBuffered = false; - - if (!m_pendingReads.empty()) - { - m_pendingReads.push_back(pendingRead); - return; - } - - if (!QueueAlignedRead(pendingRead)) - { - m_pendingReads.push_back(pendingRead); - } + if (data->m_size <= m_maxReadSize) + { + StreamStackEntry::QueueRequest(request); + return; } - bool ReadSplitter::QueueAlignedRead(PendingRead& pending) + PendingRead pendingRead; + pendingRead.m_request = request; + pendingRead.m_output = reinterpret_cast(data->m_output); + pendingRead.m_outputSize = data->m_outputSize; + pendingRead.m_readSize = data->m_size; + pendingRead.m_offset = data->m_offset; + pendingRead.m_isBuffered = false; + + if (!m_pendingReads.empty()) { - auto data = AZStd::get_if(&pending.m_request->GetCommand()); - AZ_Assert(data != nullptr, "Provided request to queue by the Read Splitter did not contain a read command."); + m_pendingReads.push_back(pendingRead); + return; + } - while (pending.m_readSize > 0) + if (!QueueAlignedRead(pendingRead)) + { + m_pendingReads.push_back(pendingRead); + } + } + + bool ReadSplitter::QueueAlignedRead(PendingRead& pending) + { + auto data = AZStd::get_if(&pending.m_request->GetCommand()); + AZ_Assert(data != nullptr, "Provided request to queue by the Read Splitter did not contain a read command."); + + while (pending.m_readSize > 0) + { + if (pending.m_request->GetNumDependencies() >= FileRequest::GetMaxNumDependencies()) { - if (pending.m_request->GetNumDependencies() >= FileRequest::GetMaxNumDependencies()) + // Add a wait to make sure the read request isn't completed if all sub-reads completed before + // the ReadSplitter has had a chance to add new sub-reads to complete the read. + if (pending.m_wait == nullptr) { - // Add a wait to make sure the read request isn't completed if all sub-reads completed before - // the ReadSplitter has had a chance to add new sub-reads to complete the read. - if (pending.m_wait == nullptr) - { - pending.m_wait = m_context->GetNewInternalRequest(); - pending.m_wait->CreateWait(pending.m_request); - } - return false; + pending.m_wait = m_context->GetNewInternalRequest(); + pending.m_wait->CreateWait(pending.m_request); } + return false; + } - u64 readSize = m_maxReadSize; - size_t bufferSize = m_maxReadSize; - if (pending.m_readSize < m_maxReadSize) + u64 readSize = m_maxReadSize; + size_t bufferSize = m_maxReadSize; + if (pending.m_readSize < m_maxReadSize) + { + readSize = pending.m_readSize; + // This will be the last read so give the remainder of the output buffer to the final request. + bufferSize = pending.m_outputSize; + } + + FileRequest* subRequest = m_context->GetNewInternalRequest(); + subRequest->CreateRead(pending.m_request, pending.m_output, bufferSize, data->m_path, pending.m_offset, readSize, data->m_sharedRead); + subRequest->SetCompletionCallback([this](FileRequest&) { - readSize = pending.m_readSize; - // This will be the last read so give the remainder of the output buffer to the final request. - bufferSize = pending.m_outputSize; + AZ_PROFILE_FUNCTION(AzCore); + QueuePendingRequest(); + }); + m_next->QueueRequest(subRequest); + + pending.m_offset += readSize; + pending.m_readSize -= readSize; + pending.m_outputSize -= bufferSize; + pending.m_output += readSize; + } + if (pending.m_wait != nullptr) + { + m_context->MarkRequestAsCompleted(pending.m_wait); + pending.m_wait = nullptr; + } + return true; + } + + void ReadSplitter::QueueBufferedRead(FileRequest* request) + { + auto data = AZStd::get_if(&request->GetCommand()); + AZ_Assert(data != nullptr, "Provided request to queue by the Read Splitter did not contain a read command."); + + PendingRead pendingRead; + pendingRead.m_request = request; + pendingRead.m_output = reinterpret_cast(data->m_output); + pendingRead.m_outputSize = data->m_outputSize; + pendingRead.m_readSize = data->m_size; + pendingRead.m_offset = data->m_offset; + pendingRead.m_isBuffered = true; + + if (!m_pendingReads.empty()) + { + m_pendingReads.push_back(pendingRead); + return; + } + + if (!QueueBufferedRead(pendingRead)) + { + m_pendingReads.push_back(pendingRead); + } + } + + bool ReadSplitter::QueueBufferedRead(PendingRead& pending) + { + auto data = AZStd::get_if(&pending.m_request->GetCommand()); + AZ_Assert(data != nullptr, "Provided request to queue by the Read Splitter did not contain a read command."); + + while (pending.m_readSize > 0) + { + if (!m_availableBufferSlots.empty()) + { + u32 bufferSlot = m_availableBufferSlots.back(); + m_availableBufferSlots.pop_back(); + + u64 readSize; + u64 copySize; + u64 offset; + BufferCopyInformation& copyInfo = m_bufferCopyInformation[bufferSlot]; + copyInfo.m_target = pending.m_output; + + if (m_adjustOffset) + { + offset = AZ_SIZE_ALIGN_DOWN(pending.m_offset, aznumeric_cast(m_sizeAlignment)); + size_t bufferOffset = pending.m_offset - offset; + copyInfo.m_bufferOffset = bufferOffset; + readSize = AZStd::min(pending.m_readSize + bufferOffset, m_maxReadSize); + copySize = readSize - bufferOffset; } - + else + { + offset = pending.m_offset; + readSize = AZStd::min(pending.m_readSize, m_maxReadSize); + copySize = readSize; + } + AZ_Assert(readSize <= m_maxReadSize, "Read size %llu in read splitter exceeds the maximum split size of %llu.", + readSize, m_maxReadSize); + copyInfo.m_size = copySize; + FileRequest* subRequest = m_context->GetNewInternalRequest(); - subRequest->CreateRead(pending.m_request, pending.m_output, bufferSize, data->m_path, pending.m_offset, readSize, data->m_sharedRead); - subRequest->SetCompletionCallback([this](FileRequest&) + subRequest->CreateRead(pending.m_request, GetBufferSlot(bufferSlot), m_maxReadSize, data->m_path, + offset, readSize, data->m_sharedRead); + subRequest->SetCompletionCallback([this, bufferSlot]([[maybe_unused]] FileRequest& request) { AZ_PROFILE_FUNCTION(AzCore); + + BufferCopyInformation& copyInfo = m_bufferCopyInformation[bufferSlot]; + memcpy(copyInfo.m_target, GetBufferSlot(bufferSlot) + copyInfo.m_bufferOffset, copyInfo.m_size); + m_availableBufferSlots.push_back(bufferSlot); + QueuePendingRequest(); }); m_next->QueueRequest(subRequest); - pending.m_offset += readSize; - pending.m_readSize -= readSize; - pending.m_outputSize -= bufferSize; - pending.m_output += readSize; + pending.m_offset += copySize; + pending.m_readSize -= copySize; + pending.m_outputSize -= copySize; + pending.m_output += copySize; } - if (pending.m_wait != nullptr) + else { - m_context->MarkRequestAsCompleted(pending.m_wait); - pending.m_wait = nullptr; - } - return true; - } - - void ReadSplitter::QueueBufferedRead(FileRequest* request) - { - auto data = AZStd::get_if(&request->GetCommand()); - AZ_Assert(data != nullptr, "Provided request to queue by the Read Splitter did not contain a read command."); - - PendingRead pendingRead; - pendingRead.m_request = request; - pendingRead.m_output = reinterpret_cast(data->m_output); - pendingRead.m_outputSize = data->m_outputSize; - pendingRead.m_readSize = data->m_size; - pendingRead.m_offset = data->m_offset; - pendingRead.m_isBuffered = true; - - if (!m_pendingReads.empty()) - { - m_pendingReads.push_back(pendingRead); - return; - } - - if (!QueueBufferedRead(pendingRead)) - { - m_pendingReads.push_back(pendingRead); - } - } - - bool ReadSplitter::QueueBufferedRead(PendingRead& pending) - { - auto data = AZStd::get_if(&pending.m_request->GetCommand()); - AZ_Assert(data != nullptr, "Provided request to queue by the Read Splitter did not contain a read command."); - - while (pending.m_readSize > 0) - { - if (!m_availableBufferSlots.empty()) + // Add a wait to make sure the read request isn't completed if all sub-reads completed before + // the ReadSplitter has had a chance to add new sub-reads to complete the read. + if (pending.m_wait == nullptr) { - u32 bufferSlot = m_availableBufferSlots.back(); - m_availableBufferSlots.pop_back(); - - u64 readSize; - u64 copySize; - u64 offset; - BufferCopyInformation& copyInfo = m_bufferCopyInformation[bufferSlot]; - copyInfo.m_target = pending.m_output; - - if (m_adjustOffset) - { - offset = AZ_SIZE_ALIGN_DOWN(pending.m_offset, aznumeric_cast(m_sizeAlignment)); - size_t bufferOffset = pending.m_offset - offset; - copyInfo.m_bufferOffset = bufferOffset; - readSize = AZStd::min(pending.m_readSize + bufferOffset, m_maxReadSize); - copySize = readSize - bufferOffset; - } - else - { - offset = pending.m_offset; - readSize = AZStd::min(pending.m_readSize, m_maxReadSize); - copySize = readSize; - } - AZ_Assert(readSize <= m_maxReadSize, "Read size %llu in read splitter exceeds the maximum split size of %llu.", - readSize, m_maxReadSize); - copyInfo.m_size = copySize; - - FileRequest* subRequest = m_context->GetNewInternalRequest(); - subRequest->CreateRead(pending.m_request, GetBufferSlot(bufferSlot), m_maxReadSize, data->m_path, - offset, readSize, data->m_sharedRead); - subRequest->SetCompletionCallback([this, bufferSlot]([[maybe_unused]] FileRequest& request) - { - AZ_PROFILE_FUNCTION(AzCore); - - BufferCopyInformation& copyInfo = m_bufferCopyInformation[bufferSlot]; - memcpy(copyInfo.m_target, GetBufferSlot(bufferSlot) + copyInfo.m_bufferOffset, copyInfo.m_size); - m_availableBufferSlots.push_back(bufferSlot); - - QueuePendingRequest(); - }); - m_next->QueueRequest(subRequest); - - pending.m_offset += copySize; - pending.m_readSize -= copySize; - pending.m_outputSize -= copySize; - pending.m_output += copySize; - } - else - { - // Add a wait to make sure the read request isn't completed if all sub-reads completed before - // the ReadSplitter has had a chance to add new sub-reads to complete the read. - if (pending.m_wait == nullptr) - { - pending.m_wait = m_context->GetNewInternalRequest(); - pending.m_wait->CreateWait(pending.m_request); - } - return false; + pending.m_wait = m_context->GetNewInternalRequest(); + pending.m_wait->CreateWait(pending.m_request); } + return false; } - if (pending.m_wait != nullptr) + } + if (pending.m_wait != nullptr) + { + m_context->MarkRequestAsCompleted(pending.m_wait); + pending.m_wait = nullptr; + } + return true; + } + + void ReadSplitter::QueuePendingRequest() + { + if (!m_pendingReads.empty()) + { + PendingRead& pendingRead = m_pendingReads.front(); + if (pendingRead.m_isBuffered ? QueueBufferedRead(pendingRead) : QueueAlignedRead(pendingRead)) { - m_context->MarkRequestAsCompleted(pending.m_wait); - pending.m_wait = nullptr; - } - return true; - } - - void ReadSplitter::QueuePendingRequest() - { - if (!m_pendingReads.empty()) - { - PendingRead& pendingRead = m_pendingReads.front(); - if (pendingRead.m_isBuffered ? QueueBufferedRead(pendingRead) : QueueAlignedRead(pendingRead)) - { - m_pendingReads.pop_front(); - } + m_pendingReads.pop_front(); } } + } - void ReadSplitter::UpdateStatus(Status& status) const + void ReadSplitter::UpdateStatus(Status& status) const + { + StreamStackEntry::UpdateStatus(status); + if (m_bufferSize > 0) { - StreamStackEntry::UpdateStatus(status); - if (m_bufferSize > 0) - { - s32 numAvailableSlots = aznumeric_cast(m_availableBufferSlots.size()); - status.m_numAvailableSlots = AZStd::min(status.m_numAvailableSlots, numAvailableSlots); - status.m_isIdle = status.m_isIdle && m_pendingReads.empty(); - } + s32 numAvailableSlots = aznumeric_cast(m_availableBufferSlots.size()); + status.m_numAvailableSlots = AZStd::min(status.m_numAvailableSlots, numAvailableSlots); + status.m_isIdle = status.m_isIdle && m_pendingReads.empty(); } + } - void ReadSplitter::CollectStatistics(AZStd::vector& statistics) const - { - statistics.push_back(Statistic::CreateFloat(m_name, AvgNumSubReadsName, m_averageNumSubReadsStat.GetAverage())); - statistics.push_back(Statistic::CreatePercentage(m_name, AlignedReadsName, m_alignedReadsStat.GetAverage())); - statistics.push_back(Statistic::CreateInteger(m_name, NumAvailableBufferSlotsName, aznumeric_caster(m_availableBufferSlots.size()))); - statistics.push_back(Statistic::CreateInteger(m_name, NumPendingReadsName, aznumeric_caster(m_pendingReads.size()))); - StreamStackEntry::CollectStatistics(statistics); - } + void ReadSplitter::CollectStatistics(AZStd::vector& statistics) const + { + statistics.push_back(Statistic::CreateFloat(m_name, AvgNumSubReadsName, m_averageNumSubReadsStat.GetAverage())); + statistics.push_back(Statistic::CreatePercentage(m_name, AlignedReadsName, m_alignedReadsStat.GetAverage())); + statistics.push_back(Statistic::CreateInteger(m_name, NumAvailableBufferSlotsName, aznumeric_caster(m_availableBufferSlots.size()))); + statistics.push_back(Statistic::CreateInteger(m_name, NumPendingReadsName, aznumeric_caster(m_pendingReads.size()))); + StreamStackEntry::CollectStatistics(statistics); + } - void ReadSplitter::InitializeBuffer() + void ReadSplitter::InitializeBuffer() + { + // Lazy initialization to avoid allocating memory if it's not needed. + if (m_bufferSize != 0 && m_buffer == nullptr) { - // Lazy initialization to avoid allocating memory if it's not needed. - if (m_bufferSize != 0 && m_buffer == nullptr) - { - m_buffer = reinterpret_cast(AZ::AllocatorInstance::Get().Allocate( - m_bufferSize, m_memoryAlignment, 0, "AZ::IO::Streamer ReadSplitter", __FILE__, __LINE__)); - } + m_buffer = reinterpret_cast(AZ::AllocatorInstance::Get().Allocate( + m_bufferSize, m_memoryAlignment, 0, "AZ::IO::Streamer ReadSplitter", __FILE__, __LINE__)); } + } - u8* ReadSplitter::GetBufferSlot(size_t index) - { - AZ_Assert(m_buffer != nullptr, "A buffer slot was requested by the Read Splitter before the buffer was initialized."); - return m_buffer + (index * m_maxReadSize); - } - } // namespace IO -} // namesapce AZ + u8* ReadSplitter::GetBufferSlot(size_t index) + { + AZ_Assert(m_buffer != nullptr, "A buffer slot was requested by the Read Splitter before the buffer was initialized."); + return m_buffer + (index * m_maxReadSize); + } +} // namespace AZ::IO diff --git a/Code/Framework/AzCore/AzCore/IPC/SharedMemory.cpp b/Code/Framework/AzCore/AzCore/IPC/SharedMemory.cpp index af73ab4936..c3fa69a205 100644 --- a/Code/Framework/AzCore/AzCore/IPC/SharedMemory.cpp +++ b/Code/Framework/AzCore/AzCore/IPC/SharedMemory.cpp @@ -13,23 +13,18 @@ #include -namespace AZ +namespace AZ::Internal { - namespace Internal + struct RingData { - struct RingData - { - AZ::u32 m_readOffset; - AZ::u32 m_writeOffset; - AZ::u32 m_startOffset; - AZ::u32 m_endOffset; - AZ::u32 m_dataToRead; - AZ::u8 m_pad[32 - sizeof(AZStd::spin_mutex)]; - }; - } // namespace Internal -} // namespace AZ - - + AZ::u32 m_readOffset; + AZ::u32 m_writeOffset; + AZ::u32 m_startOffset; + AZ::u32 m_endOffset; + AZ::u32 m_dataToRead; + AZ::u8 m_pad[32 - sizeof(AZStd::spin_mutex)]; + }; +} // namespace AZ::Internal using namespace AZ; diff --git a/Code/Framework/AzCore/AzCore/Jobs/Internal/JobManagerWorkStealing.cpp b/Code/Framework/AzCore/AzCore/Jobs/Internal/JobManagerWorkStealing.cpp index c05590ca91..ce8455d9a1 100644 --- a/Code/Framework/AzCore/AzCore/Jobs/Internal/JobManagerWorkStealing.cpp +++ b/Code/Framework/AzCore/AzCore/Jobs/Internal/JobManagerWorkStealing.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include @@ -83,7 +84,7 @@ AZ_THREAD_LOCAL JobManagerWorkStealing::ThreadInfo* JobManagerWorkStealing::m_cu JobManagerWorkStealing::JobManagerWorkStealing(const JobManagerDesc& desc) : m_isAsynchronous(!desc.m_workerThreads.empty()) - , m_workerThreads(AZStd::move(CreateWorkerThreads(desc.m_workerThreads))) + , m_workerThreads(AZStd::move(CreateWorkerThreads(desc))) { //allow workers to begin processing after they have all been created, needed to wait since they may access each others queues m_initSemaphore.release(static_cast(desc.m_workerThreads.size())); @@ -618,8 +619,9 @@ JobManagerWorkStealing::ThreadInfo* JobManagerWorkStealing::FindCurrentThreadInf return info; } -JobManagerWorkStealing::ThreadList JobManagerWorkStealing::CreateWorkerThreads(const JobManagerDesc::DescList& workerDescList) +JobManagerWorkStealing::ThreadList JobManagerWorkStealing::CreateWorkerThreads(const JobManagerDesc& jmDesc) { + const JobManagerDesc::DescList& workerDescList = jmDesc.m_workerThreads; ThreadList workerThreads(workerDescList.size()); m_threads.reserve(workerDescList.size()); @@ -632,8 +634,12 @@ JobManagerWorkStealing::ThreadList JobManagerWorkStealing::CreateWorkerThreads(c info->m_owningManager = this; info->m_workerId = iThread; + AZStd::fixed_string<128> threadName = AZStd::fixed_string<128>::format( + "%s worker thread %d", + jmDesc.m_jobManagerName[0] != '\0' ? jmDesc.m_jobManagerName : "AZ JobManager", + iThread); AZStd::thread_desc threadDesc; - threadDesc.m_name = "AZ JobManager worker thread"; + threadDesc.m_name = threadName.c_str(); threadDesc.m_cpuId = desc.m_cpuId; threadDesc.m_priority = desc.m_priority; if (desc.m_stackSize != 0) diff --git a/Code/Framework/AzCore/AzCore/Jobs/Internal/JobManagerWorkStealing.h b/Code/Framework/AzCore/AzCore/Jobs/Internal/JobManagerWorkStealing.h index 55de872d86..734c166d6a 100644 --- a/Code/Framework/AzCore/AzCore/Jobs/Internal/JobManagerWorkStealing.h +++ b/Code/Framework/AzCore/AzCore/Jobs/Internal/JobManagerWorkStealing.h @@ -115,7 +115,7 @@ namespace AZ void ProcessJobsAssist(ThreadInfo* info, Job* suspendedJob, AZStd::atomic* notifyFlag); void ProcessJobsSynchronous(ThreadInfo* info, Job* suspendedJob, AZStd::atomic* notifyFlag); void ProcessJobsInternal(ThreadInfo* info, Job* suspendedJob, AZStd::atomic* notifyFlag); - ThreadList CreateWorkerThreads(const JobManagerDesc::DescList& workerDescList); + ThreadList CreateWorkerThreads(const JobManagerDesc& jmDesc); #ifndef AZ_MONOLITHIC_BUILD ThreadInfo* CrossModuleFindAndSetWorkerThreadInfo() const; #endif diff --git a/Code/Framework/AzCore/AzCore/Jobs/JobManagerComponent.cpp b/Code/Framework/AzCore/AzCore/Jobs/JobManagerComponent.cpp index 6f5ccc93e4..acf24e8d42 100644 --- a/Code/Framework/AzCore/AzCore/Jobs/JobManagerComponent.cpp +++ b/Code/Framework/AzCore/AzCore/Jobs/JobManagerComponent.cpp @@ -51,16 +51,18 @@ namespace AZ JobManagerBus::Handler::BusConnect(); JobManagerDesc desc; + desc.m_jobManagerName = "Default JobManager"; JobManagerThreadDesc threadDesc; int numberOfWorkerThreads = m_numberOfWorkerThreads; if (numberOfWorkerThreads <= 0) // spawn default number of threads { + #if (AZ_TRAIT_THREAD_NUM_JOB_MANAGER_WORKER_THREADS) + numberOfWorkerThreads = AZ_TRAIT_THREAD_NUM_JOB_MANAGER_WORKER_THREADS; + #else uint32_t scaledHardwareThreads = Threading::CalcNumWorkerThreads(cl_jobThreadsConcurrencyRatio, cl_jobThreadsMinNumber, cl_jobThreadsNumReserved); numberOfWorkerThreads = AZ::GetMin(static_cast(desc.m_workerThreads.capacity()), scaledHardwareThreads); - #if (AZ_TRAIT_MAX_JOB_MANAGER_WORKER_THREADS) - numberOfWorkerThreads = AZ::GetMin(numberOfWorkerThreads, AZ_TRAIT_MAX_JOB_MANAGER_WORKER_THREADS); - #endif // (AZ_TRAIT_MAX_JOB_MANAGER_WORKER_THREADS) + #endif // (AZ_TRAIT_THREAD_NUM_JOB_MANAGER_WORKER_THREADS) } threadDesc.m_cpuId = AFFINITY_MASK_USERTHREADS; diff --git a/Code/Framework/AzCore/AzCore/Jobs/JobManagerDesc.h b/Code/Framework/AzCore/AzCore/Jobs/JobManagerDesc.h index 94f84f27b3..b2156291bc 100644 --- a/Code/Framework/AzCore/AzCore/Jobs/JobManagerDesc.h +++ b/Code/Framework/AzCore/AzCore/Jobs/JobManagerDesc.h @@ -51,6 +51,8 @@ namespace AZ { JobManagerDesc() {} + const char* m_jobManagerName = ""; + using DescList = AZStd::fixed_vector; DescList m_workerThreads; ///< List of worker threads to create }; diff --git a/Code/Framework/AzCore/AzCore/Math/Geometry2DUtils.cpp b/Code/Framework/AzCore/AzCore/Math/Geometry2DUtils.cpp index 47a7e0a2db..912794a518 100644 --- a/Code/Framework/AzCore/AzCore/Math/Geometry2DUtils.cpp +++ b/Code/Framework/AzCore/AzCore/Math/Geometry2DUtils.cpp @@ -8,138 +8,135 @@ #include -namespace AZ +namespace AZ::Geometry2DUtils { - namespace Geometry2DUtils + float ShortestDistanceSqPointSegment(const Vector2& point, const Vector2& segmentStart, const Vector2& segmentEnd, + float epsilon) { - float ShortestDistanceSqPointSegment(const Vector2& point, const Vector2& segmentStart, const Vector2& segmentEnd, - float epsilon) + const AZ::Vector2 segmentVector = segmentEnd - segmentStart; + + // check if the line degenerates to a point + const float segmentLengthSq = segmentVector.GetLengthSq(); + if (segmentLengthSq < epsilon * epsilon) { - const AZ::Vector2 segmentVector = segmentEnd - segmentStart; - - // check if the line degenerates to a point - const float segmentLengthSq = segmentVector.GetLengthSq(); - if (segmentLengthSq < epsilon * epsilon) - { - return (point - segmentStart).GetLengthSq(); - } - - // if the point projects on to the line segment then the shortest distance is the perpendicular - const float projection = (point - segmentStart).Dot(segmentVector); - if (projection >= 0.0f && projection <= segmentLengthSq) - { - const Vector2 perpendicular = (point - segmentStart - projection / segmentLengthSq * segmentVector); - return perpendicular.GetLengthSq(); - } - - // otherwise the point must be closest to one of the end points of the segment - return GetMin( - (point - segmentStart).GetLengthSq(), - (point - segmentEnd).GetLengthSq()); + return (point - segmentStart).GetLengthSq(); } - float Signed2DTriangleArea(const Vector2& a, const Vector2& b, const Vector2& c) + // if the point projects on to the line segment then the shortest distance is the perpendicular + const float projection = (point - segmentStart).Dot(segmentVector); + if (projection >= 0.0f && projection <= segmentLengthSq) { - return 0.5f * ((a.GetX() - c.GetX()) * (b.GetY() - c.GetY()) - (a.GetY() - c.GetY()) * (b.GetX() - c.GetX())); + const Vector2 perpendicular = (point - segmentStart - projection / segmentLengthSq * segmentVector); + return perpendicular.GetLengthSq(); } - float ShortestDistanceSqSegmentSegment( - const Vector2& segment1Start, const Vector2& segment1End, - const Vector2& segment2Start, const Vector2& segment2End) + // otherwise the point must be closest to one of the end points of the segment + return GetMin( + (point - segmentStart).GetLengthSq(), + (point - segmentEnd).GetLengthSq()); + } + + float Signed2DTriangleArea(const Vector2& a, const Vector2& b, const Vector2& c) + { + return 0.5f * ((a.GetX() - c.GetX()) * (b.GetY() - c.GetY()) - (a.GetY() - c.GetY()) * (b.GetX() - c.GetX())); + } + + float ShortestDistanceSqSegmentSegment( + const Vector2& segment1Start, const Vector2& segment1End, + const Vector2& segment2Start, const Vector2& segment2End) + { + // if the segments cross, then the distance is zero + + // if the two ends of segment 2 are on different sides of segment 1, then these two triangles will have + // different winding orders (see Real-Time Collision Detection, Christer Ericson, ISBN 978-1558607323, + // Chapter 5.1.9.1) + const float area1 = Signed2DTriangleArea(segment1Start, segment1End, segment2End); + const float area2 = Signed2DTriangleArea(segment1Start, segment1End, segment2Start); + if (area1 * area2 < 0.0f) { - // if the segments cross, then the distance is zero - - // if the two ends of segment 2 are on different sides of segment 1, then these two triangles will have - // different winding orders (see Real-Time Collision Detection, Christer Ericson, ISBN 978-1558607323, - // Chapter 5.1.9.1) - const float area1 = Signed2DTriangleArea(segment1Start, segment1End, segment2End); - const float area2 = Signed2DTriangleArea(segment1Start, segment1End, segment2Start); - if (area1 * area2 < 0.0f) + // similarly we can check if the two ends of segment 1 are on different sides of segment 2 + const float area3 = Signed2DTriangleArea(segment2Start, segment2End, segment1Start); + const float area4 = area3 + area2 - area1; + if (area3 * area4 < 0.0f) { - // similarly we can check if the two ends of segment 1 are on different sides of segment 2 - const float area3 = Signed2DTriangleArea(segment2Start, segment2End, segment1Start); - const float area4 = area3 + area2 - area1; - if (area3 * area4 < 0.0f) - { - return 0.0f; - } + return 0.0f; } - - // otherwise the shortest distance must be between one of the segment end points and the other segment - return GetMin( - GetMin( - ShortestDistanceSqPointSegment(segment1Start, segment2Start, segment2End), - ShortestDistanceSqPointSegment(segment1End, segment2Start, segment2End)), - GetMin( - ShortestDistanceSqPointSegment(segment2Start, segment1Start, segment1End), - ShortestDistanceSqPointSegment(segment2End, segment1Start, segment1End)) - ); } - bool IsSimplePolygon(const AZStd::vector& vertices, float epsilon) + // otherwise the shortest distance must be between one of the segment end points and the other segment + return GetMin( + GetMin( + ShortestDistanceSqPointSegment(segment1Start, segment2Start, segment2End), + ShortestDistanceSqPointSegment(segment1End, segment2Start, segment2End)), + GetMin( + ShortestDistanceSqPointSegment(segment2Start, segment1Start, segment1End), + ShortestDistanceSqPointSegment(segment2End, segment1Start, segment1End)) + ); + } + + bool IsSimplePolygon(const AZStd::vector& vertices, float epsilon) + { + // note that this implementation is quadratic in the number of vertices + // if it becomes a bottleneck, there are approaches which are O(n log n), e.g. the Bentley-Ottmann algorithm + + const size_t vertexCount = vertices.size(); + + if (vertexCount < 3) { - // note that this implementation is quadratic in the number of vertices - // if it becomes a bottleneck, there are approaches which are O(n log n), e.g. the Bentley-Ottmann algorithm - - const size_t vertexCount = vertices.size(); - - if (vertexCount < 3) - { - return false; - } - - if (vertexCount == 3) - { - return true; - } - - const float epsilonSq = epsilon * epsilon; - - for (size_t i = 0; i < vertexCount; ++i) - { - // make it easy to nicely wrap indices - const size_t safeIndex = i + vertexCount; - - const size_t endIndex = (safeIndex - 1) % vertexCount; - const size_t beginIndex = (safeIndex + 2) % vertexCount; - - for (size_t j = beginIndex; j != endIndex; j = (j + 1) % vertexCount) - { - const float distSq = ShortestDistanceSqSegmentSegment( - vertices[i], - vertices[(i + 1) % vertexCount], - vertices[j], - vertices[(j + 1) % vertexCount] - ); - - if (distSq < epsilonSq) - { - return false; - } - } - } + return false; + } + if (vertexCount == 3) + { return true; } - bool IsConvex(const AZStd::vector& vertices) + const float epsilonSq = epsilon * epsilon; + + for (size_t i = 0; i < vertexCount; ++i) { - const size_t vertexCount = vertices.size(); + // make it easy to nicely wrap indices + const size_t safeIndex = i + vertexCount; - if (vertexCount < 3) - { - return false; - } + const size_t endIndex = (safeIndex - 1) % vertexCount; + const size_t beginIndex = (safeIndex + 2) % vertexCount; - for (size_t i = 0; i < vertexCount; ++i) + for (size_t j = beginIndex; j != endIndex; j = (j + 1) % vertexCount) { - if (Signed2DTriangleArea(vertices[i], vertices[(i + 1) % vertexCount], vertices[(i + 2) % vertexCount]) < 0.0f) + const float distSq = ShortestDistanceSqSegmentSegment( + vertices[i], + vertices[(i + 1) % vertexCount], + vertices[j], + vertices[(j + 1) % vertexCount] + ); + + if (distSq < epsilonSq) { return false; } } - - return true; } - } // namespace Geometry2DUtils -} // namespace AZ + + return true; + } + + bool IsConvex(const AZStd::vector& vertices) + { + const size_t vertexCount = vertices.size(); + + if (vertexCount < 3) + { + return false; + } + + for (size_t i = 0; i < vertexCount; ++i) + { + if (Signed2DTriangleArea(vertices[i], vertices[(i + 1) % vertexCount], vertices[(i + 2) % vertexCount]) < 0.0f) + { + return false; + } + } + + return true; + } +} // namespace AZ::Geometry2DUtils diff --git a/Code/Framework/AzCore/AzCore/Math/Sfmt.cpp b/Code/Framework/AzCore/AzCore/Math/Sfmt.cpp index 66404a9b3f..5f4dc9e5df 100644 --- a/Code/Framework/AzCore/AzCore/Math/Sfmt.cpp +++ b/Code/Framework/AzCore/AzCore/Math/Sfmt.cpp @@ -14,28 +14,26 @@ #include // for memset -namespace AZ +namespace AZ::SfmtInternal { - namespace SfmtInternal - { - static const int N32 = N * 4; - static const int N64 = N * 2; - static const int POS1 = 122; - static const int SL1 = 18; - static const int SR1 = 11; - static const int SL2 = 1; - static const int SR2 = 1; - static const unsigned int MSK1 = 0xdfffffefU; - static const unsigned int MSK2 = 0xddfecb7fU; - static const unsigned int MSK3 = 0xbffaffffU; - static const unsigned int MSK4 = 0xbffffff6U; - static const unsigned int PARITY1 = 0x00000001U; - static const unsigned int PARITY2 = 0x00000000U; - static const unsigned int PARITY3 = 0x00000000U; - static const unsigned int PARITY4 = 0x13c9e684U; + static const int N32 = N * 4; + static const int N64 = N * 2; + static const int POS1 = 122; + static const int SL1 = 18; + static const int SR1 = 11; + static const int SL2 = 1; + static const int SR2 = 1; + static const unsigned int MSK1 = 0xdfffffefU; + static const unsigned int MSK2 = 0xddfecb7fU; + static const unsigned int MSK3 = 0xbffaffffU; + static const unsigned int MSK4 = 0xbffffff6U; + static const unsigned int PARITY1 = 0x00000001U; + static const unsigned int PARITY2 = 0x00000000U; + static const unsigned int PARITY3 = 0x00000000U; + static const unsigned int PARITY4 = 0x13c9e684U; - /** a parity check vector which certificate the period of 2^{MEXP} */ - static unsigned int parity[4] = {PARITY1, PARITY2, PARITY3, PARITY4}; + /** a parity check vector which certificate the period of 2^{MEXP} */ + static unsigned int parity[4] = {PARITY1, PARITY2, PARITY3, PARITY4}; #ifdef ONLY64 # define idxof(_i) (_i ^ 1) @@ -45,259 +43,257 @@ namespace AZ #if AZ_TRAIT_USE_PLATFORM_SIMD_SSE - /** - * This function represents the recursion formula. - * @param a a 128-bit part of the internal state array - * @param b a 128-bit part of the internal state array - * @param c a 128-bit part of the internal state array - * @param d a 128-bit part of the internal state array - * @param mask 128-bit mask - * @return output - */ - AZ_FORCE_INLINE static Simd::Vec4::Int32Type simd_recursion(Simd::Vec4::Int32Type* a, Simd::Vec4::Int32Type* b, Simd::Vec4::Int32Type c, Simd::Vec4::Int32Type d, Simd::Vec4::Int32Type mask) + /** + * This function represents the recursion formula. + * @param a a 128-bit part of the internal state array + * @param b a 128-bit part of the internal state array + * @param c a 128-bit part of the internal state array + * @param d a 128-bit part of the internal state array + * @param mask 128-bit mask + * @return output + */ + AZ_FORCE_INLINE static Simd::Vec4::Int32Type simd_recursion(Simd::Vec4::Int32Type* a, Simd::Vec4::Int32Type* b, Simd::Vec4::Int32Type c, Simd::Vec4::Int32Type d, Simd::Vec4::Int32Type mask) + { + Simd::Vec4::Int32Type v, x, y, z; + x = *a; + y = _mm_srli_epi32(*b, SR1); + z = _mm_srli_si128(c, SR2); + v = _mm_slli_epi32(d, SL1); + z = Simd::Vec4::Xor(z, x); + z = Simd::Vec4::Xor(z, v); + x = _mm_slli_si128(x, SL2); + y = Simd::Vec4::And(y, mask); + z = Simd::Vec4::Xor(z, x); + z = Simd::Vec4::Xor(z, y); + return z; + } + + /** + * This function fills the internal state array with pseudorandom + * integers. + */ + inline void gen_rand_all(Sfmt& g) + { + int i; + Simd::Vec4::Int32Type r, r1, r2, mask; + mask = Simd::Vec4::LoadImmediate((int32_t)MSK4, (int32_t)MSK3, (int32_t)MSK2, (int32_t)MSK1); + + r1 = Simd::Vec4::LoadAligned((const int32_t*)&g.m_sfmt[N - 2].si); + r2 = Simd::Vec4::LoadAligned((const int32_t*)&g.m_sfmt[N - 1].si); + for (i = 0; i < N - POS1; i++) { - Simd::Vec4::Int32Type v, x, y, z; - x = *a; - y = _mm_srli_epi32(*b, SR1); - z = _mm_srli_si128(c, SR2); - v = _mm_slli_epi32(d, SL1); - z = Simd::Vec4::Xor(z, x); - z = Simd::Vec4::Xor(z, v); - x = _mm_slli_si128(x, SL2); - y = Simd::Vec4::And(y, mask); - z = Simd::Vec4::Xor(z, x); - z = Simd::Vec4::Xor(z, y); - return z; + r = simd_recursion(&g.m_sfmt[i].si, &g.m_sfmt[i + POS1].si, r1, r2, mask); + Simd::Vec4::StoreAligned((int32_t*)&g.m_sfmt[i].si, r); + r1 = r2; + r2 = r; } - - /** - * This function fills the internal state array with pseudorandom - * integers. - */ - inline void gen_rand_all(Sfmt& g) + for (; i < N; i++) { - int i; - Simd::Vec4::Int32Type r, r1, r2, mask; - mask = Simd::Vec4::LoadImmediate((int32_t)MSK4, (int32_t)MSK3, (int32_t)MSK2, (int32_t)MSK1); - - r1 = Simd::Vec4::LoadAligned((const int32_t*)&g.m_sfmt[N - 2].si); - r2 = Simd::Vec4::LoadAligned((const int32_t*)&g.m_sfmt[N - 1].si); - for (i = 0; i < N - POS1; i++) - { - r = simd_recursion(&g.m_sfmt[i].si, &g.m_sfmt[i + POS1].si, r1, r2, mask); - Simd::Vec4::StoreAligned((int32_t*)&g.m_sfmt[i].si, r); - r1 = r2; - r2 = r; - } - for (; i < N; i++) - { - r = simd_recursion(&g.m_sfmt[i].si, &g.m_sfmt[i + POS1 - N].si, r1, r2, mask); - Simd::Vec4::StoreAligned((int32_t*)&g.m_sfmt[i].si, r); - r1 = r2; - r2 = r; - } + r = simd_recursion(&g.m_sfmt[i].si, &g.m_sfmt[i + POS1 - N].si, r1, r2, mask); + Simd::Vec4::StoreAligned((int32_t*)&g.m_sfmt[i].si, r); + r1 = r2; + r2 = r; } + } - /** - * This function fills the user-specified array with pseudorandom - * integers. - * - * @param array an 128-bit array to be filled by pseudorandom numbers. - * @param size number of 128-bit pesudorandom numbers to be generated. - */ - inline void gen_rand_array(Sfmt& g, w128_t* array, int size) + /** + * This function fills the user-specified array with pseudorandom + * integers. + * + * @param array an 128-bit array to be filled by pseudorandom numbers. + * @param size number of 128-bit pesudorandom numbers to be generated. + */ + inline void gen_rand_array(Sfmt& g, w128_t* array, int size) + { + int i, j; + Simd::Vec4::Int32Type r, r1, r2, mask; + mask = Simd::Vec4::LoadImmediate((int32_t)MSK4, (int32_t)MSK3, (int32_t)MSK2, (int32_t)MSK1); + + r1 = Simd::Vec4::LoadAligned((const int32_t*)&g.m_sfmt[N - 2].si); + r2 = Simd::Vec4::LoadAligned((const int32_t*)&g.m_sfmt[N - 1].si); + for (i = 0; i < N - POS1; i++) { - int i, j; - Simd::Vec4::Int32Type r, r1, r2, mask; - mask = Simd::Vec4::LoadImmediate((int32_t)MSK4, (int32_t)MSK3, (int32_t)MSK2, (int32_t)MSK1); - - r1 = Simd::Vec4::LoadAligned((const int32_t*)&g.m_sfmt[N - 2].si); - r2 = Simd::Vec4::LoadAligned((const int32_t*)&g.m_sfmt[N - 1].si); - for (i = 0; i < N - POS1; i++) - { - r = simd_recursion(&g.m_sfmt[i].si, &g.m_sfmt[i + POS1].si, r1, r2, mask); - Simd::Vec4::StoreAligned((int32_t*)&array[i].si, r); - r1 = r2; - r2 = r; - } - for (; i < N; i++) - { - r = simd_recursion(&g.m_sfmt[i].si, &array[i + POS1 - N].si, r1, r2, mask); - Simd::Vec4::StoreAligned((int32_t*)&array[i].si, r); - r1 = r2; - r2 = r; - } - /* main loop */ - for (; i < size - N; i++) - { - r = simd_recursion(&array[i - N].si, &array[i + POS1 - N].si, r1, r2, mask); - Simd::Vec4::StoreAligned((int32_t*)&array[i].si, r); - r1 = r2; - r2 = r; - } - for (j = 0; j < 2 * N - size; j++) - { - r = Simd::Vec4::LoadAligned((const int32_t*)&array[j + size - N].si); - Simd::Vec4::StoreAligned((int32_t*)&g.m_sfmt[j].si, r); - } - for (; i < size; i++) - { - r = simd_recursion(&array[i - N].si, &array[i + POS1 - N].si, r1, r2, mask); - Simd::Vec4::StoreAligned((int32_t*)&array[i].si, r); - Simd::Vec4::StoreAligned((int32_t*)&g.m_sfmt[j++].si, r); - r1 = r2; - r2 = r; - } + r = simd_recursion(&g.m_sfmt[i].si, &g.m_sfmt[i + POS1].si, r1, r2, mask); + Simd::Vec4::StoreAligned((int32_t*)&array[i].si, r); + r1 = r2; + r2 = r; } + for (; i < N; i++) + { + r = simd_recursion(&g.m_sfmt[i].si, &array[i + POS1 - N].si, r1, r2, mask); + Simd::Vec4::StoreAligned((int32_t*)&array[i].si, r); + r1 = r2; + r2 = r; + } + /* main loop */ + for (; i < size - N; i++) + { + r = simd_recursion(&array[i - N].si, &array[i + POS1 - N].si, r1, r2, mask); + Simd::Vec4::StoreAligned((int32_t*)&array[i].si, r); + r1 = r2; + r2 = r; + } + for (j = 0; j < 2 * N - size; j++) + { + r = Simd::Vec4::LoadAligned((const int32_t*)&array[j + size - N].si); + Simd::Vec4::StoreAligned((int32_t*)&g.m_sfmt[j].si, r); + } + for (; i < size; i++) + { + r = simd_recursion(&array[i - N].si, &array[i + POS1 - N].si, r1, r2, mask); + Simd::Vec4::StoreAligned((int32_t*)&array[i].si, r); + Simd::Vec4::StoreAligned((int32_t*)&g.m_sfmt[j++].si, r); + r1 = r2; + r2 = r; + } + } #else - inline void rshift128(w128_t* out, w128_t const* in, int shift) + inline void rshift128(w128_t* out, w128_t const* in, int shift) + { + AZ::u64 th, tl, oh, ol; + #ifdef ONLY64 + th = ((AZ::u64)in->u[2] << 32) | ((AZ::u64)in->u[3]); + tl = ((AZ::u64)in->u[0] << 32) | ((AZ::u64)in->u[1]); + + oh = th >> (shift * 8); + ol = tl >> (shift * 8); + ol |= th << (64 - shift * 8); + out->u[0] = (AZ::u32)(ol >> 32); + out->u[1] = (AZ::u32)ol; + out->u[2] = (AZ::u32)(oh >> 32); + out->u[3] = (AZ::u32)oh; +#else + th = ((AZ::u64)in->u[3] << 32) | ((AZ::u64)in->u[2]); + tl = ((AZ::u64)in->u[1] << 32) | ((AZ::u64)in->u[0]); + + oh = th >> (shift * 8); + ol = tl >> (shift * 8); + ol |= th << (64 - shift * 8); + out->u[1] = (AZ::u32)(ol >> 32); + out->u[0] = (AZ::u32)ol; + out->u[3] = (AZ::u32)(oh >> 32); + out->u[2] = (AZ::u32)oh; +#endif + } + + inline void lshift128(w128_t* out, w128_t const* in, int shift) + { + AZ::u64 th, tl, oh, ol; +#ifdef ONLY64 + th = ((AZ::u64)in->u[2] << 32) | ((AZ::u64)in->u[3]); + tl = ((AZ::u64)in->u[0] << 32) | ((AZ::u64)in->u[1]); + + oh = th << (shift * 8); + ol = tl << (shift * 8); + oh |= tl >> (64 - shift * 8); + out->u[0] = (AZ::u32)(ol >> 32); + out->u[1] = (AZ::u32)ol; + out->u[2] = (AZ::u32)(oh >> 32); + out->u[3] = (AZ::u32)oh; +#else + th = ((AZ::u64)in->u[3] << 32) | ((AZ::u64)in->u[2]); + tl = ((AZ::u64)in->u[1] << 32) | ((AZ::u64)in->u[0]); + + oh = th << (shift * 8); + ol = tl << (shift * 8); + oh |= tl >> (64 - shift * 8); + out->u[1] = (AZ::u32)(ol >> 32); + out->u[0] = (AZ::u32)ol; + out->u[3] = (AZ::u32)(oh >> 32); + out->u[2] = (AZ::u32)oh; +#endif + } + + inline void do_recursion(w128_t* r, w128_t* a, w128_t* b, w128_t* c, w128_t* d) + { + w128_t x; + w128_t y; + lshift128(&x, a, SL2); + rshift128(&y, c, SR2); +#ifdef ONLY64 + r->u[0] = a->u[0] ^ x.u[0] ^ ((b->u[0] >> SR1) & MSK2) ^ y.u[0] ^ (d->u[0] << SL1); + r->u[1] = a->u[1] ^ x.u[1] ^ ((b->u[1] >> SR1) & MSK1) ^ y.u[1] ^ (d->u[1] << SL1); + r->u[2] = a->u[2] ^ x.u[2] ^ ((b->u[2] >> SR1) & MSK4) ^ y.u[2] ^ (d->u[2] << SL1); + r->u[3] = a->u[3] ^ x.u[3] ^ ((b->u[3] >> SR1) & MSK3) ^ y.u[3] ^ (d->u[3] << SL1); +#else + r->u[0] = a->u[0] ^ x.u[0] ^ ((b->u[0] >> SR1) & MSK1) ^ y.u[0] ^ (d->u[0] << SL1); + r->u[1] = a->u[1] ^ x.u[1] ^ ((b->u[1] >> SR1) & MSK2) ^ y.u[1] ^ (d->u[1] << SL1); + r->u[2] = a->u[2] ^ x.u[2] ^ ((b->u[2] >> SR1) & MSK3) ^ y.u[2] ^ (d->u[2] << SL1); + r->u[3] = a->u[3] ^ x.u[3] ^ ((b->u[3] >> SR1) & MSK4) ^ y.u[3] ^ (d->u[3] << SL1); +#endif + } + /** + * This function fills the internal state array with pseudorandom + * integers. + */ + inline void gen_rand_all(Sfmt& g) + { + int i; + w128_t* r1, * r2; + + r1 = &g.m_sfmt[N - 2]; + r2 = &g.m_sfmt[N - 1]; + for (i = 0; i < N - POS1; i++) { - AZ::u64 th, tl, oh, ol; - #ifdef ONLY64 - th = ((AZ::u64)in->u[2] << 32) | ((AZ::u64)in->u[3]); - tl = ((AZ::u64)in->u[0] << 32) | ((AZ::u64)in->u[1]); - - oh = th >> (shift * 8); - ol = tl >> (shift * 8); - ol |= th << (64 - shift * 8); - out->u[0] = (AZ::u32)(ol >> 32); - out->u[1] = (AZ::u32)ol; - out->u[2] = (AZ::u32)(oh >> 32); - out->u[3] = (AZ::u32)oh; - #else - th = ((AZ::u64)in->u[3] << 32) | ((AZ::u64)in->u[2]); - tl = ((AZ::u64)in->u[1] << 32) | ((AZ::u64)in->u[0]); - - oh = th >> (shift * 8); - ol = tl >> (shift * 8); - ol |= th << (64 - shift * 8); - out->u[1] = (AZ::u32)(ol >> 32); - out->u[0] = (AZ::u32)ol; - out->u[3] = (AZ::u32)(oh >> 32); - out->u[2] = (AZ::u32)oh; - #endif + do_recursion(&g.m_sfmt[i], &g.m_sfmt[i], &g.m_sfmt[i + POS1], r1, r2); + r1 = r2; + r2 = &g.m_sfmt[i]; } - - inline void lshift128(w128_t* out, w128_t const* in, int shift) + for (; i < N; i++) { - AZ::u64 th, tl, oh, ol; - #ifdef ONLY64 - th = ((AZ::u64)in->u[2] << 32) | ((AZ::u64)in->u[3]); - tl = ((AZ::u64)in->u[0] << 32) | ((AZ::u64)in->u[1]); - - oh = th << (shift * 8); - ol = tl << (shift * 8); - oh |= tl >> (64 - shift * 8); - out->u[0] = (AZ::u32)(ol >> 32); - out->u[1] = (AZ::u32)ol; - out->u[2] = (AZ::u32)(oh >> 32); - out->u[3] = (AZ::u32)oh; - #else - th = ((AZ::u64)in->u[3] << 32) | ((AZ::u64)in->u[2]); - tl = ((AZ::u64)in->u[1] << 32) | ((AZ::u64)in->u[0]); - - oh = th << (shift * 8); - ol = tl << (shift * 8); - oh |= tl >> (64 - shift * 8); - out->u[1] = (AZ::u32)(ol >> 32); - out->u[0] = (AZ::u32)ol; - out->u[3] = (AZ::u32)(oh >> 32); - out->u[2] = (AZ::u32)oh; - #endif + do_recursion(&g.m_sfmt[i], &g.m_sfmt[i], &g.m_sfmt[i + POS1 - N], r1, r2); + r1 = r2; + r2 = &g.m_sfmt[i]; } + } - inline void do_recursion(w128_t* r, w128_t* a, w128_t* b, w128_t* c, w128_t* d) + /** + * This function fills the user-specified array with pseudorandom + * integers. + * + * @param array an 128-bit array to be filled by pseudorandom numbers. + * @param size number of 128-bit pseudorandom numbers to be generated. + */ + inline void gen_rand_array(Sfmt& g, w128_t* array, int size) + { + int i, j; + w128_t* r1, * r2; + + r1 = &g.m_sfmt[N - 2]; + r2 = &g.m_sfmt[N - 1]; + for (i = 0; i < N - POS1; i++) { - w128_t x; - w128_t y; - lshift128(&x, a, SL2); - rshift128(&y, c, SR2); - #ifdef ONLY64 - r->u[0] = a->u[0] ^ x.u[0] ^ ((b->u[0] >> SR1) & MSK2) ^ y.u[0] ^ (d->u[0] << SL1); - r->u[1] = a->u[1] ^ x.u[1] ^ ((b->u[1] >> SR1) & MSK1) ^ y.u[1] ^ (d->u[1] << SL1); - r->u[2] = a->u[2] ^ x.u[2] ^ ((b->u[2] >> SR1) & MSK4) ^ y.u[2] ^ (d->u[2] << SL1); - r->u[3] = a->u[3] ^ x.u[3] ^ ((b->u[3] >> SR1) & MSK3) ^ y.u[3] ^ (d->u[3] << SL1); - #else - r->u[0] = a->u[0] ^ x.u[0] ^ ((b->u[0] >> SR1) & MSK1) ^ y.u[0] ^ (d->u[0] << SL1); - r->u[1] = a->u[1] ^ x.u[1] ^ ((b->u[1] >> SR1) & MSK2) ^ y.u[1] ^ (d->u[1] << SL1); - r->u[2] = a->u[2] ^ x.u[2] ^ ((b->u[2] >> SR1) & MSK3) ^ y.u[2] ^ (d->u[2] << SL1); - r->u[3] = a->u[3] ^ x.u[3] ^ ((b->u[3] >> SR1) & MSK4) ^ y.u[3] ^ (d->u[3] << SL1); - #endif + do_recursion(&array[i], &g.m_sfmt[i], &g.m_sfmt[i + POS1], r1, r2); + r1 = r2; + r2 = &array[i]; } - /** - * This function fills the internal state array with pseudorandom - * integers. - */ - inline void gen_rand_all(Sfmt& g) + for (; i < N; i++) { - int i; - w128_t* r1, * r2; - - r1 = &g.m_sfmt[N - 2]; - r2 = &g.m_sfmt[N - 1]; - for (i = 0; i < N - POS1; i++) - { - do_recursion(&g.m_sfmt[i], &g.m_sfmt[i], &g.m_sfmt[i + POS1], r1, r2); - r1 = r2; - r2 = &g.m_sfmt[i]; - } - for (; i < N; i++) - { - do_recursion(&g.m_sfmt[i], &g.m_sfmt[i], &g.m_sfmt[i + POS1 - N], r1, r2); - r1 = r2; - r2 = &g.m_sfmt[i]; - } + do_recursion(&array[i], &g.m_sfmt[i], &array[i + POS1 - N], r1, r2); + r1 = r2; + r2 = &array[i]; } - - /** - * This function fills the user-specified array with pseudorandom - * integers. - * - * @param array an 128-bit array to be filled by pseudorandom numbers. - * @param size number of 128-bit pseudorandom numbers to be generated. - */ - inline void gen_rand_array(Sfmt& g, w128_t* array, int size) + for (; i < size - N; i++) { - int i, j; - w128_t* r1, * r2; - - r1 = &g.m_sfmt[N - 2]; - r2 = &g.m_sfmt[N - 1]; - for (i = 0; i < N - POS1; i++) - { - do_recursion(&array[i], &g.m_sfmt[i], &g.m_sfmt[i + POS1], r1, r2); - r1 = r2; - r2 = &array[i]; - } - for (; i < N; i++) - { - do_recursion(&array[i], &g.m_sfmt[i], &array[i + POS1 - N], r1, r2); - r1 = r2; - r2 = &array[i]; - } - for (; i < size - N; i++) - { - do_recursion(&array[i], &array[i - N], &array[i + POS1 - N], r1, r2); - r1 = r2; - r2 = &array[i]; - } - for (j = 0; j < 2 * N - size; j++) - { - g.m_sfmt[j] = array[j + size - N]; - } - for (; i < size; i++, j++) - { - do_recursion(&array[i], &array[i - N], &array[i + POS1 - N], r1, r2); - r1 = r2; - r2 = &array[i]; - g.m_sfmt[j] = array[i]; - } + do_recursion(&array[i], &array[i - N], &array[i + POS1 - N], r1, r2); + r1 = r2; + r2 = &array[i]; } + for (j = 0; j < 2 * N - size; j++) + { + g.m_sfmt[j] = array[j + size - N]; + } + for (; i < size; i++, j++) + { + do_recursion(&array[i], &array[i - N], &array[i + POS1 - N], r1, r2); + r1 = r2; + r2 = &array[i]; + g.m_sfmt[j] = array[i]; + } + } #endif - } // SmftInternal -} // AZ - +} // namespace AZ::SfmtInternal using namespace AZ; diff --git a/Code/Framework/AzCore/AzCore/Math/Uuid.h b/Code/Framework/AzCore/AzCore/Math/Uuid.h index 6b77e7ec3e..eeacb04877 100644 --- a/Code/Framework/AzCore/AzCore/Math/Uuid.h +++ b/Code/Framework/AzCore/AzCore/Math/Uuid.h @@ -45,7 +45,7 @@ namespace AZ static constexpr int ValidUuidStringLength = 32; /// Number of characters (data only, no extra formatting) in a valid UUID string static const size_t MaxStringBuffer = 39; /// 32 Uuid + 4 dashes + 2 brackets + 1 terminate - Uuid() {} + Uuid() = default; Uuid(const char* string, size_t stringLength = 0) { *this = CreateString(string, stringLength); } static Uuid CreateNull(); diff --git a/Code/Framework/AzCore/AzCore/Math/Vector2.h b/Code/Framework/AzCore/AzCore/Math/Vector2.h index 7c37d74135..91eb61d6c8 100644 --- a/Code/Framework/AzCore/AzCore/Math/Vector2.h +++ b/Code/Framework/AzCore/AzCore/Math/Vector2.h @@ -30,7 +30,7 @@ namespace AZ Vector2() = default; - Vector2(const Vector2& v); + Vector2(const Vector2& v) = default; //! Constructs vector with all components set to the same specified value. explicit Vector2(float x); diff --git a/Code/Framework/AzCore/AzCore/Math/Vector2.inl b/Code/Framework/AzCore/AzCore/Math/Vector2.inl index 086be2bbc3..9691dd3a5c 100644 --- a/Code/Framework/AzCore/AzCore/Math/Vector2.inl +++ b/Code/Framework/AzCore/AzCore/Math/Vector2.inl @@ -8,13 +8,6 @@ namespace AZ { - AZ_MATH_INLINE Vector2::Vector2(const Vector2& v) - : m_value(v.m_value) - { - ; - } - - AZ_MATH_INLINE Vector2::Vector2(float x) : m_value(Simd::Vec2::Splat(x)) { diff --git a/Code/Framework/AzCore/AzCore/Math/Vector3.h b/Code/Framework/AzCore/AzCore/Math/Vector3.h index 821dc8292c..6b7c53266d 100644 --- a/Code/Framework/AzCore/AzCore/Math/Vector3.h +++ b/Code/Framework/AzCore/AzCore/Math/Vector3.h @@ -100,7 +100,7 @@ namespace AZ void Set(float x, float y, float z); //! Sets components from an array of 3 floats in xyz order. - void Set(float values[]); + void Set(const float values[]); //! Indexed access using operator(), just for convenience. float operator()(int32_t index) const; diff --git a/Code/Framework/AzCore/AzCore/Math/Vector3.inl b/Code/Framework/AzCore/AzCore/Math/Vector3.inl index 879ade38cf..6371c688b8 100644 --- a/Code/Framework/AzCore/AzCore/Math/Vector3.inl +++ b/Code/Framework/AzCore/AzCore/Math/Vector3.inl @@ -186,7 +186,7 @@ namespace AZ } - AZ_MATH_INLINE void Vector3::Set(float values[]) + AZ_MATH_INLINE void Vector3::Set(const float values[]) { m_value = Simd::Vec3::LoadImmediate(values[0], values[1], values[2]); } diff --git a/Code/Framework/AzCore/AzCore/Memory/AllocatorManager.cpp b/Code/Framework/AzCore/AzCore/Memory/AllocatorManager.cpp index 3c09b4cae6..44ce08ebd9 100644 --- a/Code/Framework/AzCore/AzCore/Memory/AllocatorManager.cpp +++ b/Code/Framework/AzCore/AzCore/Memory/AllocatorManager.cpp @@ -20,44 +20,42 @@ #include #include -using namespace AZ; - #if !defined(RELEASE) && !defined(AZCORE_MEMORY_ENABLE_OVERRIDES) # define AZCORE_MEMORY_ENABLE_OVERRIDES #endif -namespace AZ +namespace AZ::Internal { - namespace Internal + struct AMStringHasher { - struct AMStringHasher + using is_transparent = void; + template + size_t operator()(const ConvertibleToStringView& key) { - using is_transparent = void; - template - size_t operator()(const ConvertibleToStringView& key) - { - return AZStd::hash{}(key); - } - }; - using AMString = AZStd::basic_string, AZStdIAllocator>; - using AllocatorNameMap = AZStd::unordered_map, AZStdIAllocator>; - using AllocatorRemappings = AZStd::unordered_map, AZStdIAllocator>; + return AZStd::hash{}(key); + } + }; + using AMString = AZStd::basic_string, AZStdIAllocator>; + using AllocatorNameMap = AZStd::unordered_map, AZStdIAllocator>; + using AllocatorRemappings = AZStd::unordered_map, AZStdIAllocator>; - // For allocators that are created before we have an environment, we keep some module-local data for them so that we can register them - // properly once the environment is attached. - struct PreEnvironmentAttachData - { - static const int MAX_UNREGISTERED_ALLOCATORS = 8; - AZStd::mutex m_mutex; - MallocSchema m_mallocSchema; - IAllocator* m_unregisteredAllocators[MAX_UNREGISTERED_ALLOCATORS]; - int m_unregisteredAllocatorCount = 0; - }; + // For allocators that are created before we have an environment, we keep some module-local data for them so that we can register them + // properly once the environment is attached. + struct PreEnvironmentAttachData + { + static const int MAX_UNREGISTERED_ALLOCATORS = 8; + AZStd::mutex m_mutex; + MallocSchema m_mallocSchema; + IAllocator* m_unregisteredAllocators[MAX_UNREGISTERED_ALLOCATORS]; + int m_unregisteredAllocatorCount = 0; + }; - } } -struct AZ::AllocatorManager::InternalData +namespace AZ +{ + +struct AllocatorManager::InternalData { explicit InternalData(const AZStdIAllocator& alloc) : m_allocatorMap(alloc) @@ -69,13 +67,13 @@ struct AZ::AllocatorManager::InternalData Internal::AllocatorRemappings m_remappingsReverse; }; -static AZ::EnvironmentVariable s_allocManager = nullptr; +static EnvironmentVariable s_allocManager = nullptr; static AllocatorManager* s_allocManagerDebug = nullptr; // For easier viewing in crash dumps /// Returns a module-local instance of data to use for allocators that are created before the environment is attached. -static AZ::Internal::PreEnvironmentAttachData& GetPreEnvironmentAttachData() +static Internal::PreEnvironmentAttachData& GetPreEnvironmentAttachData() { - static AZ::Internal::PreEnvironmentAttachData s_data; + static Internal::PreEnvironmentAttachData s_data; return s_data; } @@ -131,7 +129,7 @@ AllocatorManager& AllocatorManager::Instance() if (!s_allocManager) { AZ_Assert(Environment::IsReady(), "Environment must be ready before calling Instance()"); - s_allocManager = AZ::Environment::CreateVariable(AZ_CRC("AZ::AllocatorManager::s_allocManager", 0x6bdd908c)); + s_allocManager = Environment::CreateVariable(AZ_CRC_CE("AZ::AllocatorManager::s_allocManager")); // Register any allocators that were created in this module before we attached to the environment auto& data = GetPreEnvironmentAttachData(); @@ -156,9 +154,9 @@ AllocatorManager& AllocatorManager::Instance() ////////////////////////////////////////////////////////////////////////// // Create malloc schema using custom AZ_OS_MALLOC allocator. -AZ::MallocSchema* AllocatorManager::CreateMallocSchema() +MallocSchema* AllocatorManager::CreateMallocSchema() { - return static_cast(new(AZ_OS_MALLOC(sizeof(AZ::MallocSchema), alignof(AZ::MallocSchema))) AZ::MallocSchema()); + return static_cast(new(AZ_OS_MALLOC(sizeof(MallocSchema), alignof(MallocSchema))) MallocSchema()); } @@ -168,7 +166,7 @@ AZ::MallocSchema* AllocatorManager::CreateMallocSchema() //========================================================================= AllocatorManager::AllocatorManager() : m_profilingRefcount(0) - , m_mallocSchema(CreateMallocSchema(), [](AZ::MallocSchema* schema) + , m_mallocSchema(CreateMallocSchema(), [](MallocSchema* schema) { if (schema) { @@ -182,7 +180,7 @@ AllocatorManager::AllocatorManager() m_numAllocators = 0; m_isAllocatorLeaking = false; m_configurationFinalized = false; - m_defaultTrackingRecordMode = AZ::Debug::AllocationRecords::RECORD_NO_RECORDS; + m_defaultTrackingRecordMode = Debug::AllocationRecords::RECORD_NO_RECORDS; m_data = new (m_mallocSchema->Allocate(sizeof(InternalData), AZStd::alignment_of::value, 0)) InternalData(AZStdIAllocator(m_mallocSchema.get())); } @@ -411,12 +409,12 @@ AllocatorManager::RemoveOutOfMemoryListener() // [9/16/2011] //========================================================================= void -AllocatorManager::SetTrackingMode(AZ::Debug::AllocationRecords::Mode mode) +AllocatorManager::SetTrackingMode(Debug::AllocationRecords::Mode mode) { AZStd::lock_guard lock(m_allocatorListMutex); for (int i = 0; i < m_numAllocators; ++i) { - AZ::Debug::AllocationRecords* records = m_allocators[i]->GetRecords(); + Debug::AllocationRecords* records = m_allocators[i]->GetRecords(); if (records) { records->SetMode(mode); @@ -595,31 +593,31 @@ void AllocatorManager::GetAllocatorStats(size_t& allocatedBytes, size_t& capacit AZStd::lock_guard lock(m_allocatorListMutex); const int allocatorCount = GetNumAllocators(); - AZStd::unordered_map existingAllocators; - AZStd::unordered_map sourcesToAllocators; + AZStd::unordered_map existingAllocators; + AZStd::unordered_map sourcesToAllocators; // Build a mapping of original allocator sources to their allocators for (int i = 0; i < allocatorCount; ++i) { - AZ::IAllocator* allocator = GetAllocator(i); + IAllocator* allocator = GetAllocator(i); sourcesToAllocators.emplace(allocator->GetOriginalAllocationSource(), allocator); } for (int i = 0; i < allocatorCount; ++i) { - AZ::IAllocator* allocator = GetAllocator(i); - AZ::IAllocatorAllocate* source = allocator->GetAllocationSource(); - AZ::IAllocatorAllocate* originalSource = allocator->GetOriginalAllocationSource(); - AZ::IAllocatorAllocate* schema = allocator->GetSchema(); - AZ::IAllocator* alias = (source != originalSource) ? sourcesToAllocators[source] : nullptr; + IAllocator* allocator = GetAllocator(i); + IAllocatorAllocate* source = allocator->GetAllocationSource(); + IAllocatorAllocate* originalSource = allocator->GetOriginalAllocationSource(); + IAllocatorAllocate* schema = allocator->GetSchema(); + IAllocator* alias = (source != originalSource) ? sourcesToAllocators[source] : nullptr; if (schema && !alias) { // Check to see if this allocator's source maps to another allocator // Need to check both the schema and the allocator itself, as either one might be used as the alias depending on how it's implemented - AZStd::array checkAllocators = { { schema, allocator->GetAllocationSource() } }; + AZStd::array checkAllocators = { { schema, allocator->GetAllocationSource() } }; - for (AZ::IAllocatorAllocate* check : checkAllocators) + for (IAllocatorAllocate* check : checkAllocators) { auto existing = existingAllocators.emplace(check, allocator); @@ -631,7 +629,7 @@ void AllocatorManager::GetAllocatorStats(size_t& allocatedBytes, size_t& capacit } } - static const AZ::IAllocator* OS_ALLOCATOR = &AZ::AllocatorInstance::GetAllocator(); + static const IAllocator* OS_ALLOCATOR = &AllocatorInstance::GetAllocator(); size_t sourceAllocatedBytes = source->NumAllocatedBytes(); size_t sourceCapacityBytes = source->Capacity(); @@ -742,3 +740,5 @@ AllocatorManager::DebugBreak(void* address, const Debug::AllocationInfo& info) } } } + +} // namespace AZ diff --git a/Code/Framework/AzCore/AzCore/Memory/AllocatorOverrideShim.cpp b/Code/Framework/AzCore/AzCore/Memory/AllocatorOverrideShim.cpp index 154d59edd3..e4928e83c5 100644 --- a/Code/Framework/AzCore/AzCore/Memory/AllocatorOverrideShim.cpp +++ b/Code/Framework/AzCore/AzCore/Memory/AllocatorOverrideShim.cpp @@ -8,223 +8,220 @@ #include -namespace AZ +namespace AZ::Internal { - namespace Internal + AllocatorOverrideShim* AllocatorOverrideShim::Create(IAllocator* owningAllocator, IAllocatorAllocate* shimAllocationSource) { - AllocatorOverrideShim* AllocatorOverrideShim::Create(IAllocator* owningAllocator, IAllocatorAllocate* shimAllocationSource) + void* memory = shimAllocationSource->Allocate(sizeof(AllocatorOverrideShim), AZStd::alignment_of::value, 0); + auto result = new (memory) AllocatorOverrideShim(owningAllocator, shimAllocationSource); + return result; + } + + void AllocatorOverrideShim::Destroy(AllocatorOverrideShim* source) + { + auto shimAllocationSource = source->m_shimAllocationSource; + source->~AllocatorOverrideShim(); + shimAllocationSource->DeAllocate(source); + } + + AllocatorOverrideShim::AllocatorOverrideShim(IAllocator* owningAllocator, IAllocatorAllocate* shimAllocationSource) + : m_owningAllocator(owningAllocator) + , m_source(owningAllocator->GetOriginalAllocationSource()) + , m_overridingSource(owningAllocator->GetOriginalAllocationSource()) + , m_shimAllocationSource(shimAllocationSource) + , m_records(typename AllocationSet::hasher(), typename AllocationSet::key_eq(), StdAllocationSrc(shimAllocationSource)) + { + } + + void AllocatorOverrideShim::SetOverride(IAllocatorAllocate* source) + { + m_overridingSource = source; + } + + IAllocatorAllocate* AllocatorOverrideShim::GetOverride() const + { + return m_overridingSource; + } + + bool AllocatorOverrideShim::IsOverridden() const + { + return m_source != m_overridingSource; + } + + bool AllocatorOverrideShim::HasOrphanedAllocations() const + { + return !m_records.empty(); + } + + void AllocatorOverrideShim::SetFinalizedConfiguration() + { + m_finalizedConfiguration = true; + } + + typename AllocatorOverrideShim::pointer_type AllocatorOverrideShim::Allocate(size_type byteSize, size_type alignment, int flags, const char* name, const char* fileName, int lineNum, unsigned int suppressStackRecord) + { + pointer_type ptr = m_overridingSource->Allocate(byteSize, alignment, flags, name, fileName, lineNum, suppressStackRecord); + + if (!IsOverridden()) { - void* memory = shimAllocationSource->Allocate(sizeof(AllocatorOverrideShim), AZStd::alignment_of::value, 0); - auto result = new (memory) AllocatorOverrideShim(owningAllocator, shimAllocationSource); - return result; + lock_type lock(m_mutex); + m_records.insert(ptr); // Record in case we need to orphan this allocation later } - void AllocatorOverrideShim::Destroy(AllocatorOverrideShim* source) + return ptr; + } + + void AllocatorOverrideShim::DeAllocate(pointer_type ptr, size_type byteSize, size_type alignment) + { + IAllocatorAllocate* source = m_overridingSource; + bool destroy = false; + { - auto shimAllocationSource = source->m_shimAllocationSource; - source->~AllocatorOverrideShim(); - shimAllocationSource->DeAllocate(source); + lock_type lock(m_mutex); + + // Check to see if this came from a prior allocation source + if (m_records.erase(ptr) && IsOverridden()) + { + source = m_source; + + if (m_records.empty() && m_finalizedConfiguration) + { + // All orphaned records are gone; we are no longer needed + m_owningAllocator->SetAllocationSource(m_overridingSource); + destroy = true; // Must destroy outside the lock + } + } } - AllocatorOverrideShim::AllocatorOverrideShim(IAllocator* owningAllocator, IAllocatorAllocate* shimAllocationSource) - : m_owningAllocator(owningAllocator) - , m_source(owningAllocator->GetOriginalAllocationSource()) - , m_overridingSource(owningAllocator->GetOriginalAllocationSource()) - , m_shimAllocationSource(shimAllocationSource) - , m_records(typename AllocationSet::hasher(), typename AllocationSet::key_eq(), StdAllocationSrc(shimAllocationSource)) + source->DeAllocate(ptr, byteSize, alignment); + + if (destroy) { + Destroy(this); + } + } + + typename AllocatorOverrideShim::size_type AllocatorOverrideShim::Resize(pointer_type ptr, size_type newSize) + { + IAllocatorAllocate* source = m_overridingSource; + + if (IsOverridden()) + { + // Determine who owns the allocation + lock_type lock(m_mutex); + + if (m_records.count(ptr)) + { + source = m_source; + } } - void AllocatorOverrideShim::SetOverride(IAllocatorAllocate* source) + size_t result = source->Resize(ptr, newSize); + + return result; + } + + typename AllocatorOverrideShim::pointer_type AllocatorOverrideShim::ReAllocate(pointer_type ptr, size_type newSize, size_type newAlignment) + { + pointer_type newPtr = nullptr; + bool useOverride = true; + bool destroy = false; + + if (IsOverridden()) { - m_overridingSource = source; + lock_type lock(m_mutex); + + if (m_records.erase(ptr)) + { + // An old allocation needs to be transferred to the new, overriding allocator. + useOverride = false; // We'll do the reallocation here + size_t oldSize = m_source->AllocationSize(ptr); + + if (newSize) + { + newPtr = m_overridingSource->Allocate(newSize, newAlignment, 0); + memcpy(newPtr, ptr, AZStd::min(newSize, oldSize)); + } + + m_source->DeAllocate(ptr, oldSize); + + if (m_records.empty() && m_finalizedConfiguration) + { + // All orphaned records are gone; we are no longer needed + m_owningAllocator->SetAllocationSource(m_overridingSource); + destroy = true; // Must destroy outside the lock + } + } } - IAllocatorAllocate* AllocatorOverrideShim::GetOverride() const + if (useOverride) { - return m_overridingSource; - } - - bool AllocatorOverrideShim::IsOverridden() const - { - return m_source != m_overridingSource; - } - - bool AllocatorOverrideShim::HasOrphanedAllocations() const - { - return !m_records.empty(); - } - - void AllocatorOverrideShim::SetFinalizedConfiguration() - { - m_finalizedConfiguration = true; - } - - typename AllocatorOverrideShim::pointer_type AllocatorOverrideShim::Allocate(size_type byteSize, size_type alignment, int flags, const char* name, const char* fileName, int lineNum, unsigned int suppressStackRecord) - { - pointer_type ptr = m_overridingSource->Allocate(byteSize, alignment, flags, name, fileName, lineNum, suppressStackRecord); + // Default behavior, we weren't deleting an old allocation + newPtr = m_overridingSource->ReAllocate(ptr, newSize, newAlignment); if (!IsOverridden()) { + // Still need to do bookkeeping if we haven't been overridden yet lock_type lock(m_mutex); - m_records.insert(ptr); // Record in case we need to orphan this allocation later - } - - return ptr; - } - - void AllocatorOverrideShim::DeAllocate(pointer_type ptr, size_type byteSize, size_type alignment) - { - IAllocatorAllocate* source = m_overridingSource; - bool destroy = false; - - { - lock_type lock(m_mutex); - - // Check to see if this came from a prior allocation source - if (m_records.erase(ptr) && IsOverridden()) - { - source = m_source; - - if (m_records.empty() && m_finalizedConfiguration) - { - // All orphaned records are gone; we are no longer needed - m_owningAllocator->SetAllocationSource(m_overridingSource); - destroy = true; // Must destroy outside the lock - } - } - } - - source->DeAllocate(ptr, byteSize, alignment); - - if (destroy) - { - Destroy(this); + m_records.erase(ptr); + m_records.insert(newPtr); } } - typename AllocatorOverrideShim::size_type AllocatorOverrideShim::Resize(pointer_type ptr, size_type newSize) + if (destroy) { - IAllocatorAllocate* source = m_overridingSource; - - if (IsOverridden()) - { - // Determine who owns the allocation - lock_type lock(m_mutex); - - if (m_records.count(ptr)) - { - source = m_source; - } - } - - size_t result = source->Resize(ptr, newSize); - - return result; - } - - typename AllocatorOverrideShim::pointer_type AllocatorOverrideShim::ReAllocate(pointer_type ptr, size_type newSize, size_type newAlignment) - { - pointer_type newPtr = nullptr; - bool useOverride = true; - bool destroy = false; - - if (IsOverridden()) - { - lock_type lock(m_mutex); - - if (m_records.erase(ptr)) - { - // An old allocation needs to be transferred to the new, overriding allocator. - useOverride = false; // We'll do the reallocation here - size_t oldSize = m_source->AllocationSize(ptr); - - if (newSize) - { - newPtr = m_overridingSource->Allocate(newSize, newAlignment, 0); - memcpy(newPtr, ptr, AZStd::min(newSize, oldSize)); - } - - m_source->DeAllocate(ptr, oldSize); - - if (m_records.empty() && m_finalizedConfiguration) - { - // All orphaned records are gone; we are no longer needed - m_owningAllocator->SetAllocationSource(m_overridingSource); - destroy = true; // Must destroy outside the lock - } - } - } - - if (useOverride) - { - // Default behavior, we weren't deleting an old allocation - newPtr = m_overridingSource->ReAllocate(ptr, newSize, newAlignment); - - if (!IsOverridden()) - { - // Still need to do bookkeeping if we haven't been overridden yet - lock_type lock(m_mutex); - m_records.erase(ptr); - m_records.insert(newPtr); - } - } - - if (destroy) - { - Destroy(this); - } - - return newPtr; - } - - typename AllocatorOverrideShim::size_type AllocatorOverrideShim::AllocationSize(pointer_type ptr) - { - IAllocatorAllocate* source = m_overridingSource; - - if (IsOverridden()) - { - // Determine who owns the allocation - lock_type lock(m_mutex); - - if (m_records.count(ptr)) - { - source = m_source; - } - } - - return source->AllocationSize(ptr); - } - - void AllocatorOverrideShim::GarbageCollect() - { - m_source->GarbageCollect(); - } - - typename AllocatorOverrideShim::size_type AllocatorOverrideShim::NumAllocatedBytes() const - { - return m_source->NumAllocatedBytes(); - } - - typename AllocatorOverrideShim::size_type AllocatorOverrideShim::Capacity() const - { - return m_source->Capacity(); - } - - typename AllocatorOverrideShim::size_type AllocatorOverrideShim::GetMaxAllocationSize() const - { - return m_source->GetMaxAllocationSize(); - } - - auto AllocatorOverrideShim::GetMaxContiguousAllocationSize() const -> size_type - { - return m_source->GetMaxContiguousAllocationSize(); - } - - IAllocatorAllocate* AllocatorOverrideShim::GetSubAllocator() - { - return m_source->GetSubAllocator(); + Destroy(this); } + return newPtr; } -} + + typename AllocatorOverrideShim::size_type AllocatorOverrideShim::AllocationSize(pointer_type ptr) + { + IAllocatorAllocate* source = m_overridingSource; + + if (IsOverridden()) + { + // Determine who owns the allocation + lock_type lock(m_mutex); + + if (m_records.count(ptr)) + { + source = m_source; + } + } + + return source->AllocationSize(ptr); + } + + void AllocatorOverrideShim::GarbageCollect() + { + m_source->GarbageCollect(); + } + + typename AllocatorOverrideShim::size_type AllocatorOverrideShim::NumAllocatedBytes() const + { + return m_source->NumAllocatedBytes(); + } + + typename AllocatorOverrideShim::size_type AllocatorOverrideShim::Capacity() const + { + return m_source->Capacity(); + } + + typename AllocatorOverrideShim::size_type AllocatorOverrideShim::GetMaxAllocationSize() const + { + return m_source->GetMaxAllocationSize(); + } + + auto AllocatorOverrideShim::GetMaxContiguousAllocationSize() const -> size_type + { + return m_source->GetMaxContiguousAllocationSize(); + } + + IAllocatorAllocate* AllocatorOverrideShim::GetSubAllocator() + { + return m_source->GetSubAllocator(); + } + +} // namespace AZ::Internal diff --git a/Code/Framework/AzCore/AzCore/Memory/HphaSchema.cpp b/Code/Framework/AzCore/AzCore/Memory/HphaSchema.cpp index 6af8f201c2..6e40ccd8cd 100644 --- a/Code/Framework/AzCore/AzCore/Memory/HphaSchema.cpp +++ b/Code/Framework/AzCore/AzCore/Memory/HphaSchema.cpp @@ -140,8 +140,8 @@ namespace AZ { class const_iterator; class iterator { - typedef T& reference; - typedef T* pointer; + using reference = T&; + using pointer = T*; friend class const_iterator; T* mPtr; public: @@ -171,8 +171,8 @@ namespace AZ { class const_iterator { - typedef const T& reference; - typedef const T* pointer; + using reference = const T &; + using pointer = const T *; const T* mPtr; public: const_iterator() @@ -327,7 +327,7 @@ namespace AZ { uint64_t mSizeAndFlags; public: - typedef block_header* block_ptr; + using block_ptr = block_header *; size_t size() const { return mSizeAndFlags & ~BL_FLAG_MASK; } block_ptr next() const {return (block_ptr)((char*)mem() + size()); } block_ptr prev() const {return mPrev; } @@ -415,7 +415,7 @@ namespace AZ { void dec_ref() { HPPA_ASSERT(mUseCount > 0); mUseCount--; } bool check_marker(size_t marker) const { return mMarker == (marker ^ ((size_t)this)); } }; - typedef intrusive_list page_list; + using page_list = intrusive_list; class bucket { page_list mPageList; diff --git a/Code/Framework/AzCore/AzCore/Memory/MallocSchema.cpp b/Code/Framework/AzCore/AzCore/Memory/MallocSchema.cpp index 76a71e0f08..9aa31cd8b6 100644 --- a/Code/Framework/AzCore/AzCore/Memory/MallocSchema.cpp +++ b/Code/Framework/AzCore/AzCore/Memory/MallocSchema.cpp @@ -11,149 +11,168 @@ #include #include +namespace AZ::Internal +{ + struct Header + { + uint32_t offset; + uint32_t size; + }; +} // namespace AZ::Internal + namespace AZ { - namespace Internal + //--------------------------------------------------------------------- + // MallocSchema methods + //--------------------------------------------------------------------- + + MallocSchema::MallocSchema(const Descriptor& desc) + : m_bytesAllocated(0) { - struct Header + if (desc.m_useAZMalloc) { - uint32_t offset; - uint32_t size; - }; + static const int DEFAULT_ALIGNMENT = sizeof(void*) * 2; // Default malloc alignment + + m_mallocFn = [](size_t byteSize) + { + return AZ_OS_MALLOC(byteSize, DEFAULT_ALIGNMENT); + }; + m_freeFn = [](void* ptr) + { + AZ_OS_FREE(ptr); + }; + } + else + { + m_mallocFn = &malloc; + m_freeFn = &free; + } } -} -//--------------------------------------------------------------------- -// MallocSchema methods -//--------------------------------------------------------------------- - -AZ::MallocSchema::MallocSchema(const Descriptor& desc) : - m_bytesAllocated(0) -{ - if (desc.m_useAZMalloc) + MallocSchema::~MallocSchema() { - static const int DEFAULT_ALIGNMENT = sizeof(void*) * 2; // Default malloc alignment - - m_mallocFn = [](size_t byteSize) { return AZ_OS_MALLOC(byteSize, DEFAULT_ALIGNMENT); }; - m_freeFn = [](void* ptr) { AZ_OS_FREE(ptr); }; } - else + + MallocSchema::pointer_type MallocSchema::Allocate( + size_type byteSize, + size_type alignment, + int flags, + const char* name, + const char* fileName, + int lineNum, + unsigned int suppressStackRecord) { - m_mallocFn = &malloc; - m_freeFn = &free; + (void)flags; + (void)name; + (void)fileName; + (void)lineNum; + (void)suppressStackRecord; + + if (!byteSize) + { + return nullptr; + } + + if (alignment == 0) + { + alignment = sizeof(void*) * 2; // Default malloc alignment + } + + AZ_Assert(byteSize < 0x100000000ull, "Malloc allocator only allocates up to 4GB"); + + size_type required = byteSize + sizeof(Internal::Header) + + ((alignment > sizeof(double)) + ? alignment + : 0); // Malloc will align to a minimum boundary for native objects, so we only pad if aligning to a large value + void* data = (*m_mallocFn)(required); + void* result = PointerAlignUp(reinterpret_cast(reinterpret_cast(data) + sizeof(Internal::Header)), alignment); + Internal::Header* header = PointerAlignDown( + (Internal::Header*)(reinterpret_cast(result) - sizeof(Internal::Header)), AZStd::alignment_of::value); + + header->offset = static_cast(reinterpret_cast(result) - reinterpret_cast(data)); + header->size = static_cast(byteSize); + m_bytesAllocated += byteSize; + + return result; } -} -AZ::MallocSchema::~MallocSchema() -{ -} + void MallocSchema::DeAllocate(pointer_type ptr, size_type byteSize, size_type alignment) + { + (void)byteSize; + (void)alignment; -AZ::MallocSchema::pointer_type AZ::MallocSchema::Allocate(size_type byteSize, size_type alignment, int flags, const char* name, const char* fileName, int lineNum, unsigned int suppressStackRecord) -{ - (void)flags; - (void)name; - (void)fileName; - (void)lineNum; - (void)suppressStackRecord; + if (!ptr) + { + return; + } - if (!byteSize) + Internal::Header* header = PointerAlignDown( + reinterpret_cast(reinterpret_cast(ptr) - sizeof(Internal::Header)), + AZStd::alignment_of::value); + void* freePtr = reinterpret_cast(reinterpret_cast(ptr) - static_cast(header->offset)); + + m_bytesAllocated -= header->size; + (*m_freeFn)(freePtr); + } + + MallocSchema::pointer_type MallocSchema::ReAllocate(pointer_type ptr, size_type newSize, size_type newAlignment) + { + void* newPtr = Allocate(newSize, newAlignment, 0); + size_t oldSize = AllocationSize(ptr); + + memcpy(newPtr, ptr, AZStd::min(oldSize, newSize)); + DeAllocate(ptr, 0, 0); + + return newPtr; + } + + MallocSchema::size_type MallocSchema::Resize(pointer_type ptr, size_type newSize) + { + (void)ptr; + (void)newSize; + + return 0; + } + + MallocSchema::size_type MallocSchema::AllocationSize(pointer_type ptr) + { + if (!ptr) + { + return 0; + } + Internal::Header* header = PointerAlignDown( + reinterpret_cast(reinterpret_cast(ptr) - sizeof(Internal::Header)), + AZStd::alignment_of::value); + return header->size; + } + + MallocSchema::size_type MallocSchema::NumAllocatedBytes() const + { + return m_bytesAllocated; + } + + MallocSchema::size_type MallocSchema::Capacity() const + { + return 0; + } + + MallocSchema::size_type MallocSchema::GetMaxAllocationSize() const + { + return 0xFFFFFFFFull; + } + + MallocSchema::size_type MallocSchema::GetMaxContiguousAllocationSize() const + { + return AZ_CORE_MAX_ALLOCATOR_SIZE; + } + + IAllocatorAllocate* MallocSchema::GetSubAllocator() { return nullptr; } - if (alignment == 0) + void MallocSchema::GarbageCollect() { - alignment = sizeof(void*) * 2; // Default malloc alignment } - AZ_Assert(byteSize < 0x100000000ull, "Malloc allocator only allocates up to 4GB"); - - size_type required = byteSize + sizeof(Internal::Header) + ((alignment > sizeof(double)) ? alignment : 0); // Malloc will align to a minimum boundary for native objects, so we only pad if aligning to a large value - void* data = (*m_mallocFn)(required); - void* result = PointerAlignUp(reinterpret_cast(reinterpret_cast(data) + sizeof(Internal::Header)), alignment); - Internal::Header* header = PointerAlignDown((Internal::Header*)(reinterpret_cast(result) - sizeof(Internal::Header)), AZStd::alignment_of::value); - - header->offset = static_cast(reinterpret_cast(result) - reinterpret_cast(data)); - header->size = static_cast(byteSize); - m_bytesAllocated += byteSize; - - return result; -} - -void AZ::MallocSchema::DeAllocate(pointer_type ptr, size_type byteSize, size_type alignment) -{ - (void)byteSize; - (void)alignment; - - if (!ptr) - { - return; - } - - Internal::Header* header = PointerAlignDown(reinterpret_cast(reinterpret_cast(ptr) - sizeof(Internal::Header)), AZStd::alignment_of::value); - void* freePtr = reinterpret_cast(reinterpret_cast(ptr) - static_cast(header->offset)); - - m_bytesAllocated -= header->size; - (*m_freeFn)(freePtr); -} - -AZ::MallocSchema::pointer_type AZ::MallocSchema::ReAllocate(pointer_type ptr, size_type newSize, size_type newAlignment) -{ - void* newPtr = Allocate(newSize, newAlignment, 0); - size_t oldSize = AllocationSize(ptr); - - memcpy(newPtr, ptr, AZStd::min(oldSize, newSize)); - DeAllocate(ptr, 0, 0); - - return newPtr; -} - -AZ::MallocSchema::size_type AZ::MallocSchema::Resize(pointer_type ptr, size_type newSize) -{ - (void)ptr; - (void)newSize; - - return 0; -} - -AZ::MallocSchema::size_type AZ::MallocSchema::AllocationSize(pointer_type ptr) -{ - size_type result = 0; - - if (ptr) - { - Internal::Header* header = PointerAlignDown(reinterpret_cast(reinterpret_cast(ptr) - sizeof(Internal::Header)), AZStd::alignment_of::value); - result = header->size; - } - - return result; -} - -AZ::MallocSchema::size_type AZ::MallocSchema::NumAllocatedBytes() const -{ - return m_bytesAllocated; -} - -AZ::MallocSchema::size_type AZ::MallocSchema::Capacity() const -{ - return 0; -} - -AZ::MallocSchema::size_type AZ::MallocSchema::GetMaxAllocationSize() const -{ - return 0xFFFFFFFFull; -} - -AZ::MallocSchema::size_type AZ::MallocSchema::GetMaxContiguousAllocationSize() const -{ - return AZ_CORE_MAX_ALLOCATOR_SIZE; -} - -AZ::IAllocatorAllocate* AZ::MallocSchema::GetSubAllocator() -{ - return nullptr; -} - -void AZ::MallocSchema::GarbageCollect() -{ -} +} // namespace AZ diff --git a/Code/Framework/AzCore/AzCore/Memory/MemoryDriller.cpp b/Code/Framework/AzCore/AzCore/Memory/MemoryDriller.cpp index 2ea25c3397..dc35c6322b 100644 --- a/Code/Framework/AzCore/AzCore/Memory/MemoryDriller.cpp +++ b/Code/Framework/AzCore/AzCore/Memory/MemoryDriller.cpp @@ -15,280 +15,277 @@ #include #include -namespace AZ +namespace AZ::Debug { - namespace Debug + //========================================================================= + // MemoryDriller + // [2/6/2013] + //========================================================================= + MemoryDriller::MemoryDriller(const Descriptor& desc) { - //========================================================================= - // MemoryDriller - // [2/6/2013] - //========================================================================= - MemoryDriller::MemoryDriller(const Descriptor& desc) + (void)desc; + BusConnect(); + + AllocatorManager::Instance().EnterProfilingMode(); + { - (void)desc; - BusConnect(); - - AllocatorManager::Instance().EnterProfilingMode(); - - { - // Register all allocators that were created before the driller existed - auto allocatorLock = AllocatorManager::Instance().LockAllocators(); - - for (int i = 0; i < AllocatorManager::Instance().GetNumAllocators(); ++i) - { - IAllocator* allocator = AllocatorManager::Instance().GetAllocator(i); - RegisterAllocator(allocator); - } - } - } - - //========================================================================= - // ~MemoryDriller - // [2/6/2013] - //========================================================================= - MemoryDriller::~MemoryDriller() - { - BusDisconnect(); - AllocatorManager::Instance().ExitProfilingMode(); - } - - //========================================================================= - // Start - // [2/6/2013] - //========================================================================= - void MemoryDriller::Start(const Param* params, int numParams) - { - (void)params; - (void)numParams; - - // dump current allocations for all allocators with tracking + // Register all allocators that were created before the driller existed auto allocatorLock = AllocatorManager::Instance().LockAllocators(); + for (int i = 0; i < AllocatorManager::Instance().GetNumAllocators(); ++i) { IAllocator* allocator = AllocatorManager::Instance().GetAllocator(i); - if (auto records = allocator->GetRecords()) - { - RegisterAllocatorOutput(allocator); - const AllocationRecordsType& allocMap = records->GetMap(); - for (AllocationRecordsType::const_iterator allocIt = allocMap.begin(); allocIt != allocMap.end(); ++allocIt) - { - RegisterAllocationOutput(allocator, allocIt->first, &allocIt->second); - } - } + RegisterAllocator(allocator); } } + } - //========================================================================= - // Stop - // [2/6/2013] - //========================================================================= - void MemoryDriller::Stop() + //========================================================================= + // ~MemoryDriller + // [2/6/2013] + //========================================================================= + MemoryDriller::~MemoryDriller() + { + BusDisconnect(); + AllocatorManager::Instance().ExitProfilingMode(); + } + + //========================================================================= + // Start + // [2/6/2013] + //========================================================================= + void MemoryDriller::Start(const Param* params, int numParams) + { + (void)params; + (void)numParams; + + // dump current allocations for all allocators with tracking + auto allocatorLock = AllocatorManager::Instance().LockAllocators(); + for (int i = 0; i < AllocatorManager::Instance().GetNumAllocators(); ++i) { - } - - //========================================================================= - // RegisterAllocator - // [2/6/2013] - //========================================================================= - void MemoryDriller::RegisterAllocator(IAllocator* allocator) - { - // Ignore if our allocator is already registered - if (allocator->GetRecords() != nullptr) + IAllocator* allocator = AllocatorManager::Instance().GetAllocator(i); + if (auto records = allocator->GetRecords()) { - return; - } - - auto debugConfig = allocator->GetDebugConfig(); - - if (!debugConfig.m_excludeFromDebugging) - { - allocator->SetRecords(aznew Debug::AllocationRecords((unsigned char)debugConfig.m_stackRecordLevels, debugConfig.m_usesMemoryGuards, debugConfig.m_marksUnallocatedMemory, allocator->GetName())); - - m_allAllocatorRecords.push_back(allocator->GetRecords()); - - if (m_output == nullptr) - { - return; // we have no active output - } RegisterAllocatorOutput(allocator); - } - } - //========================================================================= - // RegisterAllocatorOutput - // [2/6/2013] - //========================================================================= - void MemoryDriller::RegisterAllocatorOutput(IAllocator* allocator) - { - auto records = allocator->GetRecords(); - m_output->BeginTag(AZ_CRC("MemoryDriller", 0x1b31269d)); - m_output->BeginTag(AZ_CRC("RegisterAllocator", 0x19f08114)); - m_output->Write(AZ_CRC("Name", 0x5e237e06), allocator->GetName()); - m_output->Write(AZ_CRC("Id", 0xbf396750), allocator); - m_output->Write(AZ_CRC("Capacity", 0xb5e8b174), allocator->GetAllocationSource()->Capacity()); - m_output->Write(AZ_CRC("RecordsId", 0x7caaca88), records); - if (records) - { - m_output->Write(AZ_CRC("RecordsMode", 0x764c147a), (char)records->GetMode()); - m_output->Write(AZ_CRC("NumStackLevels", 0xad9cff15), records->GetNumStackLevels()); - } - m_output->EndTag(AZ_CRC("RegisterAllocator", 0x19f08114)); - m_output->EndTag(AZ_CRC("MemoryDriller", 0x1b31269d)); - } - - //========================================================================= - // UnregisterAllocator - // [2/6/2013] - //========================================================================= - void MemoryDriller::UnregisterAllocator(IAllocator* allocator) - { - auto allocatorRecords = allocator->GetRecords(); - AZ_Assert(allocatorRecords, "This allocator is not registered with the memory driller!"); - for (auto records : m_allAllocatorRecords) - { - if (records == allocatorRecords) + const AllocationRecordsType& allocMap = records->GetMap(); + for (AllocationRecordsType::const_iterator allocIt = allocMap.begin(); allocIt != allocMap.end(); ++allocIt) { - m_allAllocatorRecords.remove(records); - break; + RegisterAllocationOutput(allocator, allocIt->first, &allocIt->second); } } - delete allocatorRecords; - allocator->SetRecords(nullptr); + } + } + + //========================================================================= + // Stop + // [2/6/2013] + //========================================================================= + void MemoryDriller::Stop() + { + } + + //========================================================================= + // RegisterAllocator + // [2/6/2013] + //========================================================================= + void MemoryDriller::RegisterAllocator(IAllocator* allocator) + { + // Ignore if our allocator is already registered + if (allocator->GetRecords() != nullptr) + { + return; + } + + auto debugConfig = allocator->GetDebugConfig(); + + if (!debugConfig.m_excludeFromDebugging) + { + allocator->SetRecords(aznew Debug::AllocationRecords((unsigned char)debugConfig.m_stackRecordLevels, debugConfig.m_usesMemoryGuards, debugConfig.m_marksUnallocatedMemory, allocator->GetName())); + + m_allAllocatorRecords.push_back(allocator->GetRecords()); + + if (m_output == nullptr) + { + return; // we have no active output + } + RegisterAllocatorOutput(allocator); + } + } + //========================================================================= + // RegisterAllocatorOutput + // [2/6/2013] + //========================================================================= + void MemoryDriller::RegisterAllocatorOutput(IAllocator* allocator) + { + auto records = allocator->GetRecords(); + m_output->BeginTag(AZ_CRC("MemoryDriller", 0x1b31269d)); + m_output->BeginTag(AZ_CRC("RegisterAllocator", 0x19f08114)); + m_output->Write(AZ_CRC("Name", 0x5e237e06), allocator->GetName()); + m_output->Write(AZ_CRC("Id", 0xbf396750), allocator); + m_output->Write(AZ_CRC("Capacity", 0xb5e8b174), allocator->GetAllocationSource()->Capacity()); + m_output->Write(AZ_CRC("RecordsId", 0x7caaca88), records); + if (records) + { + m_output->Write(AZ_CRC("RecordsMode", 0x764c147a), (char)records->GetMode()); + m_output->Write(AZ_CRC("NumStackLevels", 0xad9cff15), records->GetNumStackLevels()); + } + m_output->EndTag(AZ_CRC("RegisterAllocator", 0x19f08114)); + m_output->EndTag(AZ_CRC("MemoryDriller", 0x1b31269d)); + } + + //========================================================================= + // UnregisterAllocator + // [2/6/2013] + //========================================================================= + void MemoryDriller::UnregisterAllocator(IAllocator* allocator) + { + auto allocatorRecords = allocator->GetRecords(); + AZ_Assert(allocatorRecords, "This allocator is not registered with the memory driller!"); + for (auto records : m_allAllocatorRecords) + { + if (records == allocatorRecords) + { + m_allAllocatorRecords.remove(records); + break; + } + } + delete allocatorRecords; + allocator->SetRecords(nullptr); + + if (m_output == nullptr) + { + return; // we have no active output + } + m_output->BeginTag(AZ_CRC("MemoryDriller", 0x1b31269d)); + m_output->Write(AZ_CRC("UnregisterAllocator", 0xb2b54f93), allocator); + m_output->EndTag(AZ_CRC("MemoryDriller", 0x1b31269d)); + } + + //========================================================================= + // RegisterAllocation + // [2/6/2013] + //========================================================================= + void MemoryDriller::RegisterAllocation(IAllocator* allocator, void* address, size_t byteSize, size_t alignment, const char* name, const char* fileName, int lineNum, unsigned int stackSuppressCount) + { + auto records = allocator->GetRecords(); + if (records) + { + const AllocationInfo* info = records->RegisterAllocation(address, byteSize, alignment, name, fileName, lineNum, stackSuppressCount + 1); + if (m_output == nullptr) + { + return; // we have no active output + } + RegisterAllocationOutput(allocator, address, info); + } + } + + //========================================================================= + // RegisterAllocationOutput + // [2/6/2013] + //========================================================================= + void MemoryDriller::RegisterAllocationOutput(IAllocator* allocator, void* address, const AllocationInfo* info) + { + auto records = allocator->GetRecords(); + m_output->BeginTag(AZ_CRC("MemoryDriller", 0x1b31269d)); + m_output->BeginTag(AZ_CRC("RegisterAllocation", 0x992a9780)); + m_output->Write(AZ_CRC("RecordsId", 0x7caaca88), records); + m_output->Write(AZ_CRC("Address", 0x0d4e6f81), address); + if (info) + { + if (info->m_name) + { + m_output->Write(AZ_CRC("Name", 0x5e237e06), info->m_name); + } + m_output->Write(AZ_CRC("Alignment", 0x2cce1e5c), info->m_alignment); + m_output->Write(AZ_CRC("Size", 0xf7c0246a), info->m_byteSize); + if (info->m_fileName) + { + m_output->Write(AZ_CRC("FileName", 0x3c0be965), info->m_fileName); + m_output->Write(AZ_CRC("FileLine", 0xb33c2395), info->m_lineNum); + } + // copy the stack frames directly, resolving the stack should happen later as this is a SLOW procedure. + if (info->m_stackFrames) + { + m_output->Write(AZ_CRC("Stack", 0x41a87b6a), info->m_stackFrames, info->m_stackFrames + records->GetNumStackLevels()); + } + } + m_output->EndTag(AZ_CRC("RegisterAllocation", 0x992a9780)); + m_output->EndTag(AZ_CRC("MemoryDriller", 0x1b31269d)); + } + + //========================================================================= + // UnRegisterAllocation + // [2/6/2013] + //========================================================================= + void MemoryDriller::UnregisterAllocation(IAllocator* allocator, void* address, size_t byteSize, size_t alignment, AllocationInfo* info) + { + auto records = allocator->GetRecords(); + if (records) + { + records->UnregisterAllocation(address, byteSize, alignment, info); if (m_output == nullptr) { return; // we have no active output } m_output->BeginTag(AZ_CRC("MemoryDriller", 0x1b31269d)); - m_output->Write(AZ_CRC("UnregisterAllocator", 0xb2b54f93), allocator); - m_output->EndTag(AZ_CRC("MemoryDriller", 0x1b31269d)); - } - - //========================================================================= - // RegisterAllocation - // [2/6/2013] - //========================================================================= - void MemoryDriller::RegisterAllocation(IAllocator* allocator, void* address, size_t byteSize, size_t alignment, const char* name, const char* fileName, int lineNum, unsigned int stackSuppressCount) - { - auto records = allocator->GetRecords(); - if (records) - { - const AllocationInfo* info = records->RegisterAllocation(address, byteSize, alignment, name, fileName, lineNum, stackSuppressCount + 1); - if (m_output == nullptr) - { - return; // we have no active output - } - RegisterAllocationOutput(allocator, address, info); - } - } - - //========================================================================= - // RegisterAllocationOutput - // [2/6/2013] - //========================================================================= - void MemoryDriller::RegisterAllocationOutput(IAllocator* allocator, void* address, const AllocationInfo* info) - { - auto records = allocator->GetRecords(); - m_output->BeginTag(AZ_CRC("MemoryDriller", 0x1b31269d)); - m_output->BeginTag(AZ_CRC("RegisterAllocation", 0x992a9780)); + m_output->BeginTag(AZ_CRC("UnRegisterAllocation", 0xea5dc4cd)); m_output->Write(AZ_CRC("RecordsId", 0x7caaca88), records); m_output->Write(AZ_CRC("Address", 0x0d4e6f81), address); - if (info) - { - if (info->m_name) - { - m_output->Write(AZ_CRC("Name", 0x5e237e06), info->m_name); - } - m_output->Write(AZ_CRC("Alignment", 0x2cce1e5c), info->m_alignment); - m_output->Write(AZ_CRC("Size", 0xf7c0246a), info->m_byteSize); - if (info->m_fileName) - { - m_output->Write(AZ_CRC("FileName", 0x3c0be965), info->m_fileName); - m_output->Write(AZ_CRC("FileLine", 0xb33c2395), info->m_lineNum); - } - // copy the stack frames directly, resolving the stack should happen later as this is a SLOW procedure. - if (info->m_stackFrames) - { - m_output->Write(AZ_CRC("Stack", 0x41a87b6a), info->m_stackFrames, info->m_stackFrames + records->GetNumStackLevels()); - } - } - m_output->EndTag(AZ_CRC("RegisterAllocation", 0x992a9780)); + m_output->EndTag(AZ_CRC("UnRegisterAllocation", 0xea5dc4cd)); m_output->EndTag(AZ_CRC("MemoryDriller", 0x1b31269d)); } + } - //========================================================================= - // UnRegisterAllocation - // [2/6/2013] - //========================================================================= - void MemoryDriller::UnregisterAllocation(IAllocator* allocator, void* address, size_t byteSize, size_t alignment, AllocationInfo* info) + //========================================================================= + // ReallocateAllocation + // [10/1/2018] + //========================================================================= + void MemoryDriller::ReallocateAllocation(IAllocator* allocator, void* prevAddress, void* newAddress, size_t newByteSize, size_t newAlignment) + { + AllocationInfo info; + UnregisterAllocation(allocator, prevAddress, 0, 0, &info); + RegisterAllocation(allocator, newAddress, newByteSize, newAlignment, info.m_name, info.m_fileName, info.m_lineNum, 0); + } + + //========================================================================= + // ResizeAllocation + // [2/6/2013] + //========================================================================= + void MemoryDriller::ResizeAllocation(IAllocator* allocator, void* address, size_t newSize) + { + auto records = allocator->GetRecords(); + if (records) { - auto records = allocator->GetRecords(); - if (records) - { - records->UnregisterAllocation(address, byteSize, alignment, info); + records->ResizeAllocation(address, newSize); - if (m_output == nullptr) - { - return; // we have no active output - } - m_output->BeginTag(AZ_CRC("MemoryDriller", 0x1b31269d)); - m_output->BeginTag(AZ_CRC("UnRegisterAllocation", 0xea5dc4cd)); - m_output->Write(AZ_CRC("RecordsId", 0x7caaca88), records); - m_output->Write(AZ_CRC("Address", 0x0d4e6f81), address); - m_output->EndTag(AZ_CRC("UnRegisterAllocation", 0xea5dc4cd)); - m_output->EndTag(AZ_CRC("MemoryDriller", 0x1b31269d)); + if (m_output == nullptr) + { + return; // we have no active output + } + m_output->BeginTag(AZ_CRC("MemoryDriller", 0x1b31269d)); + m_output->BeginTag(AZ_CRC("ResizeAllocation", 0x8a9c78dc)); + m_output->Write(AZ_CRC("RecordsId", 0x7caaca88), records); + m_output->Write(AZ_CRC("Address", 0x0d4e6f81), address); + m_output->Write(AZ_CRC("Size", 0xf7c0246a), newSize); + m_output->EndTag(AZ_CRC("ResizeAllocation", 0x8a9c78dc)); + m_output->EndTag(AZ_CRC("MemoryDriller", 0x1b31269d)); + } + } + + void MemoryDriller::DumpAllAllocations() + { + // Create a copy so allocations done during the printing dont end up affecting the container + const AZStd::list allocationRecords = m_allAllocatorRecords; + + for (auto records : allocationRecords) + { + // Skip if we have had no allocations made + if (records->RequestedAllocs()) + { + records->EnumerateAllocations(AZ::Debug::PrintAllocationsCB(true, true)); } } + } - //========================================================================= - // ReallocateAllocation - // [10/1/2018] - //========================================================================= - void MemoryDriller::ReallocateAllocation(IAllocator* allocator, void* prevAddress, void* newAddress, size_t newByteSize, size_t newAlignment) - { - AllocationInfo info; - UnregisterAllocation(allocator, prevAddress, 0, 0, &info); - RegisterAllocation(allocator, newAddress, newByteSize, newAlignment, info.m_name, info.m_fileName, info.m_lineNum, 0); - } - - //========================================================================= - // ResizeAllocation - // [2/6/2013] - //========================================================================= - void MemoryDriller::ResizeAllocation(IAllocator* allocator, void* address, size_t newSize) - { - auto records = allocator->GetRecords(); - if (records) - { - records->ResizeAllocation(address, newSize); - - if (m_output == nullptr) - { - return; // we have no active output - } - m_output->BeginTag(AZ_CRC("MemoryDriller", 0x1b31269d)); - m_output->BeginTag(AZ_CRC("ResizeAllocation", 0x8a9c78dc)); - m_output->Write(AZ_CRC("RecordsId", 0x7caaca88), records); - m_output->Write(AZ_CRC("Address", 0x0d4e6f81), address); - m_output->Write(AZ_CRC("Size", 0xf7c0246a), newSize); - m_output->EndTag(AZ_CRC("ResizeAllocation", 0x8a9c78dc)); - m_output->EndTag(AZ_CRC("MemoryDriller", 0x1b31269d)); - } - } - - void MemoryDriller::DumpAllAllocations() - { - // Create a copy so allocations done during the printing dont end up affecting the container - const AZStd::list allocationRecords = m_allAllocatorRecords; - - for (auto records : allocationRecords) - { - // Skip if we have had no allocations made - if (records->RequestedAllocs()) - { - records->EnumerateAllocations(AZ::Debug::PrintAllocationsCB(true, true)); - } - } - } - - }// namespace Debug -} // namespace AZ +} // namespace AZ::Debug diff --git a/Code/Framework/AzCore/AzCore/Memory/PoolSchema.cpp b/Code/Framework/AzCore/AzCore/Memory/PoolSchema.cpp index 0bef6b7d28..9167864450 100644 --- a/Code/Framework/AzCore/AzCore/Memory/PoolSchema.cpp +++ b/Code/Framework/AzCore/AzCore/Memory/PoolSchema.cpp @@ -35,8 +35,8 @@ namespace AZ public: AZ_CLASS_ALLOCATOR(PoolAllocation, SystemAllocator, 0) - typedef typename Allocator::Page PageType; - typedef typename Allocator::Bucket BucketType; + using PageType = typename Allocator::Page; + using BucketType = typename Allocator::Bucket; PoolAllocation(Allocator* alloc, size_t pageSize, size_t minAllocationSize, size_t maxAllocationSize); virtual ~PoolAllocation(); @@ -89,7 +89,7 @@ namespace AZ void SetupFreeList(size_t elementSize, size_t pageDataBlockSize); /// We just use a free list of nodes which we cast to the pool type. - typedef AZStd::intrusive_slist > FreeListType; + using FreeListType = AZStd::intrusive_slist>; FreeListType m_freeList; u32 m_bin; @@ -103,7 +103,7 @@ namespace AZ */ struct Bucket { - typedef AZStd::intrusive_list > PageListType; + using PageListType = AZStd::intrusive_list>; PageListType m_pages; }; @@ -162,7 +162,7 @@ namespace AZ return page; } - typedef PoolAllocation AllocatorType; + using AllocatorType = PoolAllocation; IAllocatorAllocate* m_pageAllocator; AllocatorType m_allocator; void* m_staticDataBlock; @@ -199,7 +199,7 @@ namespace AZ void SetupFreeList(size_t elementSize, size_t pageDataBlockSize); /// We just use a free list of nodes which we cast to the pool type. - typedef AZStd::intrusive_slist > FreeListType; + using FreeListType = AZStd::intrusive_slist>; FreeListType m_freeList; AZStd::lock_free_intrusive_stack_node m_lfStack; ///< Lock Free stack node @@ -215,7 +215,7 @@ namespace AZ */ struct Bucket { - typedef AZStd::intrusive_list > PageListType; + using PageListType = AZStd::intrusive_list>; PageListType m_pages; }; @@ -291,7 +291,7 @@ namespace AZ ThreadPoolSchema::SetThreadPoolData m_threadPoolSetter; // Fox X64 we push/pop pages using the m_mutex to sync. Pages are - typedef Bucket::PageListType FreePagesType; + using FreePagesType = Bucket::PageListType; FreePagesType m_freePages; AZStd::vector m_threads; ///< Array with all separate thread data. Used to traverse end free elements. @@ -313,12 +313,12 @@ namespace AZ ThreadPoolData(ThreadPoolSchemaImpl* alloc, size_t pageSize, size_t minAllocationSize, size_t maxAllocationSize); ~ThreadPoolData(); - typedef PoolAllocation AllocatorType; + using AllocatorType = PoolAllocation; /** * Stack with freed elements from other threads. We don't need stamped stack since the ABA problem can not * happen here. We push from many threads and pop from only one (we don't push from it). */ - typedef AZStd::lock_free_intrusive_stack > FreedElementsStack; + using FreedElementsStack = AZStd::lock_free_intrusive_stack>; AllocatorType m_allocator; FreedElementsStack m_freedElements; diff --git a/Code/Framework/AzCore/AzCore/Module/Environment.cpp b/Code/Framework/AzCore/AzCore/Module/Environment.cpp index 71da948a35..790af730bf 100644 --- a/Code/Framework/AzCore/AzCore/Module/Environment.cpp +++ b/Code/Framework/AzCore/AzCore/Module/Environment.cpp @@ -24,10 +24,10 @@ namespace AZ class OSStdAllocator { public: - typedef void* pointer_type; - typedef AZStd::size_t size_type; - typedef AZStd::ptrdiff_t difference_type; - typedef AZStd::false_type allow_memory_leaks; ///< Regular allocators should not leak. + using pointer_type = void *; + using size_type = AZStd::size_t; + using difference_type = AZStd::ptrdiff_t; + using allow_memory_leaks = AZStd::false_type; ///< Regular allocators should not leak. OSStdAllocator(Environment::AllocatorInterface* allocator) : m_name("GlobalEnvironmentAllocator") @@ -122,7 +122,7 @@ namespace AZ : public EnvironmentInterface { public: - typedef AZStd::unordered_map, AZStd::equal_to, OSStdAllocator> MapType; + using MapType = AZStd::unordered_map, AZStd::equal_to, OSStdAllocator>; static EnvironmentInterface* Get(); static void Attach(EnvironmentInstance sourceEnvironment, bool useAsGetFallback); diff --git a/Code/Framework/AzCore/AzCore/Module/Internal/ModuleManagerSearchPathTool.cpp b/Code/Framework/AzCore/AzCore/Module/Internal/ModuleManagerSearchPathTool.cpp index 10aa9904a3..0797fef93f 100644 --- a/Code/Framework/AzCore/AzCore/Module/Internal/ModuleManagerSearchPathTool.cpp +++ b/Code/Framework/AzCore/AzCore/Module/Internal/ModuleManagerSearchPathTool.cpp @@ -10,21 +10,18 @@ #include #include -namespace AZ +namespace AZ::Internal { - namespace Internal + AZ::OSString ModuleManagerSearchPathTool::GetModuleDirectory(const AZ::DynamicModuleDescriptor& moduleDesc) { - AZ::OSString ModuleManagerSearchPathTool::GetModuleDirectory(const AZ::DynamicModuleDescriptor& moduleDesc) + // For each module that is loaded, attempt to set the module's folder as a path for dependent module resolution + AZ::OSString modulePath = moduleDesc.m_dynamicLibraryPath; + AZ::ComponentApplicationBus::Broadcast(&AZ::ComponentApplicationBus::Events::ResolveModulePath, modulePath); + auto lastPathSep = modulePath.find_last_of(AZ_TRAIT_OS_PATH_SEPARATOR); + if (lastPathSep != modulePath.npos) { - // For each module that is loaded, attempt to set the module's folder as a path for dependent module resolution - AZ::OSString modulePath = moduleDesc.m_dynamicLibraryPath; - AZ::ComponentApplicationBus::Broadcast(&AZ::ComponentApplicationBus::Events::ResolveModulePath, modulePath); - auto lastPathSep = modulePath.find_last_of(AZ_TRAIT_OS_PATH_SEPARATOR); - if (lastPathSep != modulePath.npos) - { - modulePath = modulePath.substr(0, lastPathSep); - } - return modulePath; + modulePath = modulePath.substr(0, lastPathSep); } - } // namespace Internal -} // namespace AZ + return modulePath; + } +} // namespace AZ::Internal diff --git a/Code/Framework/AzCore/AzCore/Name/Internal/NameData.cpp b/Code/Framework/AzCore/AzCore/Name/Internal/NameData.cpp index 574b0bcc7e..69bead11ac 100644 --- a/Code/Framework/AzCore/AzCore/Name/Internal/NameData.cpp +++ b/Code/Framework/AzCore/AzCore/Name/Internal/NameData.cpp @@ -9,45 +9,41 @@ #include #include -namespace AZ +namespace AZ::Internal { - namespace Internal + NameData::NameData(AZStd::string&& name, Hash hash) + : m_name{AZStd::move(name)} + , m_hash{hash} + {} + + AZStd::string_view NameData::GetName() const { - NameData::NameData(AZStd::string&& name, Hash hash) - : m_name{AZStd::move(name)} - , m_hash{hash} - {} + return m_name; + } - AZStd::string_view NameData::GetName() const - { - return m_name; - } + NameData::Hash NameData::GetHash() const + { + return m_hash; + } - NameData::Hash NameData::GetHash() const - { - return m_hash; - } + void NameData::add_ref() + { + AZ_Assert(m_useCount >= 0, "NameData has been deleted"); + ++m_useCount; + } - void NameData::add_ref() + void NameData::release() + { + // this could be released after we decrement the counter, therefore we will + // base the release on the hash which is stable + Hash hash = m_hash; + AZ_Assert(m_useCount > 0, "m_useCount is already 0!"); + if (m_useCount.fetch_sub(1) == 1) { - AZ_Assert(m_useCount >= 0, "NameData has been deleted"); - ++m_useCount; - } - - void NameData::release() - { - // this could be released after we decrement the counter, therefore we will - // base the release on the hash which is stable - Hash hash = m_hash; - AZ_Assert(m_useCount > 0, "m_useCount is already 0!"); - if (m_useCount.fetch_sub(1) == 1) + if (AZ::NameDictionary::IsReady()) { - if (AZ::NameDictionary::IsReady()) - { - AZ::NameDictionary::Instance().TryReleaseName(hash); - } + AZ::NameDictionary::Instance().TryReleaseName(hash); } } } -} - +} // namespace AZ::Internal diff --git a/Code/Framework/AzCore/AzCore/Name/NameDictionary.cpp b/Code/Framework/AzCore/AzCore/Name/NameDictionary.cpp index 3047a2894e..1b39eb81bd 100644 --- a/Code/Framework/AzCore/AzCore/Name/NameDictionary.cpp +++ b/Code/Framework/AzCore/AzCore/Name/NameDictionary.cpp @@ -32,7 +32,12 @@ namespace AZ if (!s_instance) { - s_instance = AZ::Environment::CreateVariable(NameDictionaryInstanceName); + // Because the NameDictionary allocates memory using the AZ::Allocator and it is created + // in the executable memory space, it's ownership cannot be transferred to other module memory spaces + // Otherwise this could cause the the NameDictionary to be destroyed in static de-init + // after the AZ::Allocators have been destroyed + // Therefore we supply the isTransferOwnership value of false using CreateVariableEx + s_instance = AZ::Environment::CreateVariableEx(NameDictionaryInstanceName, true, false); } } @@ -50,7 +55,12 @@ namespace AZ if (!s_instance) { - s_instance = Environment::FindVariable(NameDictionaryInstanceName); + // Because the NameDictionary allocates memory using the AZ::Allocator and it is created + // in the executable memory space, it's ownership cannot be transferred to other module memory spaces + // Otherwise this could cause the the NameDictionary to be destroyed in static de-init + // after the AZ::Allocators have been destroyed + // Therefore we supply the isTransferOwnership value of false using CreateVariableEx + s_instance = AZ::Environment::CreateVariableEx(NameDictionaryInstanceName, true, false); } return s_instance.IsConstructed(); diff --git a/Code/Framework/AzCore/AzCore/Platform.cpp b/Code/Framework/AzCore/AzCore/Platform.cpp index ad345f65e8..0defef826e 100644 --- a/Code/Framework/AzCore/AzCore/Platform.cpp +++ b/Code/Framework/AzCore/AzCore/Platform.cpp @@ -8,19 +8,16 @@ #include -namespace AZ +namespace AZ::Platform { - namespace Platform - { - MachineId s_machineId = MachineId(0); + MachineId s_machineId = MachineId(0); - void SetLocalMachineId(AZ::u32 machineId) + void SetLocalMachineId(AZ::u32 machineId) + { + AZ_Assert(machineId != 0, "0 machine ID is reserved!"); + if (s_machineId != 0) { - AZ_Assert(machineId != 0, "0 machine ID is reserved!"); - if (s_machineId != 0) - { - s_machineId = machineId; - } + s_machineId = machineId; } } -} +} // namespace AZ::Platform diff --git a/Code/Framework/AzCore/AzCore/RTTI/BehaviorContextUtilities.cpp b/Code/Framework/AzCore/AzCore/RTTI/BehaviorContextUtilities.cpp index 6fb03073b0..5632c258c3 100644 --- a/Code/Framework/AzCore/AzCore/RTTI/BehaviorContextUtilities.cpp +++ b/Code/Framework/AzCore/AzCore/RTTI/BehaviorContextUtilities.cpp @@ -117,9 +117,9 @@ namespace AZ if (!explicitOverloads.m_overloads.empty()) { - for (auto methodAndClass : explicitOverloads.m_overloads) + for (const auto& methodAndClass : explicitOverloads.m_overloads) { - overloads.push_back({ methodAndClass.first, methodAndClass.second }); + overloads.emplace_back(methodAndClass.first, methodAndClass.second); } } else @@ -128,7 +128,7 @@ namespace AZ do { - overloads.push_back({ overload, behaviorClass }); + overloads.emplace_back(overload, behaviorClass); overload = overload->m_overload; } while (overload); diff --git a/Code/Framework/AzCore/AzCore/Script/ScriptSystemComponent.cpp b/Code/Framework/AzCore/AzCore/Script/ScriptSystemComponent.cpp index 3b2aebdee6..4b71c57682 100644 --- a/Code/Framework/AzCore/AzCore/Script/ScriptSystemComponent.cpp +++ b/Code/Framework/AzCore/AzCore/Script/ScriptSystemComponent.cpp @@ -170,61 +170,77 @@ ScriptContext* ScriptSystemComponent::AddContext(ScriptContext* context, int ga ScriptContext* ScriptSystemComponent::AddContextWithId(ScriptContextId id) { AZ_Assert(m_contexts.empty() || id != ScriptContextIds::DefaultScriptContextId, "Default script context ID is reserved! Please provide a Unique context ID for you ScriptContext!"); - if (GetContext(id) == nullptr) + if (GetContext(id) != nullptr) { - m_contexts.emplace_back(); - ContextContainer& cc = m_contexts.back(); - cc.m_context = aznew ScriptContext(id); - cc.m_isOwner = true; - cc.m_garbageCollectorSteps = m_defaultGarbageCollectorSteps; - - cc.m_context->SetRequireHook(AZStd::bind(&ScriptSystemComponent::DefaultRequireHook, this, AZStd::placeholders::_1, AZStd::placeholders::_2, AZStd::placeholders::_3)); - - if (id != ScriptContextIds::CryScriptContextId) + return nullptr; + } + m_contexts.emplace_back(); + ContextContainer& cc = m_contexts.back(); + cc.m_context = aznew ScriptContext(id); + cc.m_isOwner = true; + cc.m_garbageCollectorSteps = m_defaultGarbageCollectorSteps; + cc.m_context->SetRequireHook( + [this](lua_State* lua, ScriptContext* context, const char* module) -> int { - // Reflect script classes - ComponentApplication* app = nullptr; - EBUS_EVENT_RESULT(app, ComponentApplicationBus, GetApplication); - if (app && app->GetDescriptor().m_enableScriptReflection) + return DefaultRequireHook(lua, context, module); + }); + + if (id != ScriptContextIds::CryScriptContextId) + { + // Reflect script classes + ComponentApplication* app = nullptr; + EBUS_EVENT_RESULT(app, ComponentApplicationBus, GetApplication); + if (app && app->GetDescriptor().m_enableScriptReflection) + { + if (app->GetBehaviorContext()) { - if (app->GetBehaviorContext()) - { - cc.m_context->BindTo(app->GetBehaviorContext()); - } - else - { - AZ_Error("Script", false, "We are asked to enabled scripting, but the Applicaion has no BehaviorContext! Scripting relies on BehaviorContext!"); - } + cc.m_context->BindTo(app->GetBehaviorContext()); + } + else + { + AZ_Error("Script", false, "We are asked to enabled scripting, but the Applicaion has no BehaviorContext! Scripting relies on BehaviorContext!"); } } - - return cc.m_context; } - return nullptr; + return cc.m_context; } void ScriptSystemComponent::RestoreDefaultRequireHook(ScriptContextId id) { - if (auto context = GetContext(id)) + auto context = GetContext(id); + if (!context) { - for (auto& inMemoryModule : m_inMemoryModules) - { - ClearAssetReferences(inMemoryModule.second->GetId()); - } - - m_inMemoryModules.clear(); - context->SetRequireHook(AZStd::bind(&ScriptSystemComponent::DefaultRequireHook, this, AZStd::placeholders::_1, AZStd::placeholders::_2, AZStd::placeholders::_3)); + return; } + + for (auto& inMemoryModule : m_inMemoryModules) + { + ClearAssetReferences(inMemoryModule.second->GetId()); + } + + m_inMemoryModules.clear(); + context->SetRequireHook( + [this](lua_State* lua, ScriptContext* context, const char* module) -> int + { + return DefaultRequireHook(lua, context, module); + }); } void ScriptSystemComponent::UseInMemoryRequireHook(const InMemoryScriptModules& modules, ScriptContextId id) { - if (auto context = GetContext(id)) + auto context = GetContext(id); + if (nullptr == context) { - m_inMemoryModules = modules; - context->SetRequireHook(AZStd::bind(&ScriptSystemComponent::InMemoryRequireHook, this, AZStd::placeholders::_1, AZStd::placeholders::_2, AZStd::placeholders::_3)); + return; } + + m_inMemoryModules = modules; + context->SetRequireHook( + [this](lua_State* lua, ScriptContext* context, const char* module) -> int + { + return InMemoryRequireHook(lua, context, module); + }); } //========================================================================= diff --git a/Code/Framework/AzCore/AzCore/ScriptCanvas/ScriptCanvasOnDemandNames.cpp b/Code/Framework/AzCore/AzCore/ScriptCanvas/ScriptCanvasOnDemandNames.cpp index b0d141bba9..d0bea11432 100644 --- a/Code/Framework/AzCore/AzCore/ScriptCanvas/ScriptCanvasOnDemandNames.cpp +++ b/Code/Framework/AzCore/AzCore/ScriptCanvas/ScriptCanvasOnDemandNames.cpp @@ -28,133 +28,130 @@ #include #include -namespace AZ +namespace AZ::ScriptCanvasOnDemandReflection { - namespace ScriptCanvasOnDemandReflection + // the use of this might have to come at the end of on demand reflection...instead of instantly + // basically, it required that dependent classes are reflected first, I'm not sure they are yet. + AZStd::string GetPrettyNameForAZTypeId(AZ::BehaviorContext& context, AZ::Uuid typeId) { - // the use of this might have to come at the end of on demand reflection...instead of instantly - // basically, it required that dependent classes are reflected first, I'm not sure they are yet. - AZStd::string GetPrettyNameForAZTypeId(AZ::BehaviorContext& context, AZ::Uuid typeId) + // return capitalized versions of what we need, otherwise just the regular name + // then strip all the stuff + if (typeId == azrtti_typeid()) { - // return capitalized versions of what we need, otherwise just the regular name - // then strip all the stuff - if (typeId == azrtti_typeid()) + return "AABB"; + } + else if (typeId == azrtti_typeid()) + { + return "Boolean"; + } + else if (typeId == azrtti_typeid()) + { + return "Color"; + } + else if (typeId == azrtti_typeid()) + { + return "CRC"; + } + else if (typeId == azrtti_typeid()) + { + return "EntityId"; + } + else if (typeId == azrtti_typeid()) + { + return "Matrix3x3"; + } + else if (typeId == azrtti_typeid()) + { + return "Matrix4x4"; + } + else if (typeId == azrtti_typeid()) + { + return "Number:s8"; + } + else if (typeId == azrtti_typeid()) + { + return "Number:s16"; + } + else if (typeId == azrtti_typeid()) + { + return "Number:s32"; + } + else if (typeId == azrtti_typeid()) + { + return "Number:s64"; + } + else if (typeId == azrtti_typeid()) + { + return "Number:u8"; + } + else if (typeId == azrtti_typeid()) + { + return "Number:u16"; + } + else if (typeId == azrtti_typeid()) + { + return "Number:u32"; + } + else if (typeId == azrtti_typeid()) + { + return "Number:u64"; + } + else if (typeId == azrtti_typeid()) + { + return "Number:float"; + } + else if (typeId == azrtti_typeid()) + { + return "Number"; + } + else if (typeId == azrtti_typeid()) + { + return "OBB"; + } + else if (typeId == azrtti_typeid()) + { + return "Plane"; + } + else if (typeId == azrtti_typeid()) + { + return "Quaternion"; + } + else if (typeId == azrtti_typeid() || typeId == azrtti_typeid()) + { + return "String"; + } + else if (typeId == azrtti_typeid()) + { + return "Transform"; + } + else if (typeId == azrtti_typeid()) + { + return "Vector2"; + } + else if (typeId == azrtti_typeid()) + { + return "Vector3"; + } + else if (typeId == azrtti_typeid()) + { + return "Vector4"; + } + else + { + auto bcClassIter = context.m_typeToClassMap.find(typeId); + if (bcClassIter != context.m_typeToClassMap.end()) { - return "AABB"; - } - else if (typeId == azrtti_typeid()) - { - return "Boolean"; - } - else if (typeId == azrtti_typeid()) - { - return "Color"; - } - else if (typeId == azrtti_typeid()) - { - return "CRC"; - } - else if (typeId == azrtti_typeid()) - { - return "EntityId"; - } - else if (typeId == azrtti_typeid()) - { - return "Matrix3x3"; - } - else if (typeId == azrtti_typeid()) - { - return "Matrix4x4"; - } - else if (typeId == azrtti_typeid()) - { - return "Number:s8"; - } - else if (typeId == azrtti_typeid()) - { - return "Number:s16"; - } - else if (typeId == azrtti_typeid()) - { - return "Number:s32"; - } - else if (typeId == azrtti_typeid()) - { - return "Number:s64"; - } - else if (typeId == azrtti_typeid()) - { - return "Number:u8"; - } - else if (typeId == azrtti_typeid()) - { - return "Number:u16"; - } - else if (typeId == azrtti_typeid()) - { - return "Number:u32"; - } - else if (typeId == azrtti_typeid()) - { - return "Number:u64"; - } - else if (typeId == azrtti_typeid()) - { - return "Number:float"; - } - else if (typeId == azrtti_typeid()) - { - return "Number"; - } - else if (typeId == azrtti_typeid()) - { - return "OBB"; - } - else if (typeId == azrtti_typeid()) - { - return "Plane"; - } - else if (typeId == azrtti_typeid()) - { - return "Quaternion"; - } - else if (typeId == azrtti_typeid() || typeId == azrtti_typeid()) - { - return "String"; - } - else if (typeId == azrtti_typeid()) - { - return "Transform"; - } - else if (typeId == azrtti_typeid()) - { - return "Vector2"; - } - else if (typeId == azrtti_typeid()) - { - return "Vector3"; - } - else if (typeId == azrtti_typeid()) - { - return "Vector4"; + const AZ::BehaviorClass& bcClass = *(bcClassIter->second); + AZStd::string uglyName = bcClass.m_name; + AZ::StringFunc::Replace(uglyName, "AZStd::", "", true); + AZ::StringFunc::Replace(uglyName, "AZ::", "", true); + AZ::StringFunc::Replace(uglyName, "::", ".", true); + return uglyName; } else { - auto bcClassIter = context.m_typeToClassMap.find(typeId); - if (bcClassIter != context.m_typeToClassMap.end()) - { - const AZ::BehaviorClass& bcClass = *(bcClassIter->second); - AZStd::string uglyName = bcClass.m_name; - AZ::StringFunc::Replace(uglyName, "AZStd::", "", true); - AZ::StringFunc::Replace(uglyName, "AZ::", "", true); - AZ::StringFunc::Replace(uglyName, "::", ".", true); - return uglyName; - } - else - { - return "Invalid"; - } + return "Invalid"; } } - } // namespace ScriptCanvasOnDemandReflection -} // namespace AZ + } +} // namespace AZ::ScriptCanvasOnDemandReflection diff --git a/Code/Framework/AzCore/AzCore/Serialization/AZStdContainers.inl b/Code/Framework/AzCore/AzCore/Serialization/AZStdContainers.inl index bae79a6fe7..a633af22da 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/AZStdContainers.inl +++ b/Code/Framework/AzCore/AzCore/Serialization/AZStdContainers.inl @@ -54,12 +54,8 @@ namespace AZStd namespace AZ { - //template - //class ScriptProperty; - namespace Internal { - template void SetupClassElementFromType(SerializeContext::ClassElement& classElement) { @@ -86,15 +82,14 @@ namespace AZ { auto uuid = AzTypeInfo::Uuid(); - using ContainerType = AttributeContainerType; - classElement.m_attributes.emplace_back(AZ_CRC("EnumType", 0xb177e1b5), CreateModuleAttribute(AZStd::move(uuid))); + classElement.m_attributes.emplace_back(AZ_CRC("EnumType", 0xb177e1b5), CreateModuleAttribute(AZStd::move(uuid))); } } template AZStd::enable_if_t::value> InitializeDefaultIfPodType(T& t) { - t = {}; + t = T{}; } template @@ -648,7 +643,6 @@ namespace AZ // Register our key type within an lvalue to rvalue wrapper as an attribute AZ::TypeId uuid = azrtti_typeid(); - using ContainerType = AttributeContainerType; /** * This should technically bind the reference value from the GetCurrentSerializeContextModule() call @@ -658,7 +652,7 @@ namespace AZ */ m_classElement.m_attributes.set_allocator(AZStdFunctorAllocator([]() -> IAllocatorAllocate& { return GetCurrentSerializeContextModule().GetAllocator(); })); - m_classElement.m_attributes.emplace_back(AZ_CRC("KeyType", 0x15bc5303), CreateModuleAttribute(AZStd::move(uuid))); + m_classElement.m_attributes.emplace_back(AZ_CRC("KeyType", 0x15bc5303), CreateModuleAttribute(AZStd::move(uuid))); } // Reflect our wrapped key and value types to serializeContext so that may later be used diff --git a/Code/Framework/AzCore/AzCore/Serialization/DataOverlayProviderMsgs.cpp b/Code/Framework/AzCore/AzCore/Serialization/DataOverlayProviderMsgs.cpp index 37f4623301..58f86bf831 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/DataOverlayProviderMsgs.cpp +++ b/Code/Framework/AzCore/AzCore/Serialization/DataOverlayProviderMsgs.cpp @@ -19,8 +19,11 @@ namespace AZ nodeStack.push_back(m_dataContainer); SerializeContext::EnumerateInstanceCallContext callContext( - AZStd::bind(&DataOverlayTarget::ElementBegin, this, &nodeStack, AZStd::placeholders::_1, AZStd::placeholders::_2, AZStd::placeholders::_3), - AZStd::bind(&DataOverlayTarget::ElementEnd, this, &nodeStack), + [this, &nodeStack](void* instancePointer, const SerializeContext::ClassData* classData, const SerializeContext::ClassElement* classElement)->bool + { + return ElementBegin(&nodeStack, instancePointer, classData, classElement); + }, + [this, &nodeStack]()->bool { return ElementEnd(&nodeStack); }, m_sc, SerializeContext::ENUM_ACCESS_FOR_READ, m_errorLogger diff --git a/Code/Framework/AzCore/AzCore/Serialization/DataPatch.cpp b/Code/Framework/AzCore/AzCore/Serialization/DataPatch.cpp index 6f1635148c..d27a5005b4 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/DataPatch.cpp +++ b/Code/Framework/AzCore/AzCore/Serialization/DataPatch.cpp @@ -36,7 +36,7 @@ namespace AZ class DataNode { public: - typedef AZStd::list ChildDataNodes; + using ChildDataNodes = AZStd::list; DataNode() { @@ -148,25 +148,28 @@ namespace AZ m_root.Reset(); m_currentNode = nullptr; - if (m_context && rootClassPtr) + if (!m_context || !rootClassPtr) { - SerializeContext::EnumerateInstanceCallContext callContext( - AZStd::bind(&DataNodeTree::BeginNode, this, AZStd::placeholders::_1, AZStd::placeholders::_2, AZStd::placeholders::_3), - AZStd::bind(&DataNodeTree::EndNode, this), - m_context, - SerializeContext::ENUM_ACCESS_FOR_READ, - nullptr - ); - - m_context->EnumerateInstanceConst( - &callContext, - rootClassPtr, - rootClassId, - nullptr, - nullptr - ); + return; } + SerializeContext::EnumerateInstanceCallContext callContext( + [this](void* instancePointer, const SerializeContext::ClassData* classData, const SerializeContext::ClassElement* classElement)->bool + { + return BeginNode(instancePointer, classData, classElement); + }, + [this]()->bool { return EndNode(); }, + m_context, + SerializeContext::ENUM_ACCESS_FOR_READ, + nullptr + ); + m_context->EnumerateInstanceConst( + &callContext, + rootClassPtr, + rootClassId, + nullptr, + nullptr + ); m_currentNode = nullptr; } diff --git a/Code/Framework/AzCore/AzCore/Serialization/EditContext.cpp b/Code/Framework/AzCore/AzCore/Serialization/EditContext.cpp index d0c433df16..8a4688d748 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/EditContext.cpp +++ b/Code/Framework/AzCore/AzCore/Serialization/EditContext.cpp @@ -34,7 +34,7 @@ namespace AZ } classIt->ClearElements(); } - for (auto enumIt : m_enumData) + for (auto& enumIt : m_enumData) { enumIt.second.ClearAttributes(); } @@ -103,7 +103,7 @@ namespace AZ //========================================================================= void ElementData::ClearAttributes() { - for (auto attrib : m_attributes) + for (auto& attrib : m_attributes) { delete attrib.second; } diff --git a/Code/Framework/AzCore/AzCore/Serialization/Json/JsonDeserializer.cpp b/Code/Framework/AzCore/AzCore/Serialization/Json/JsonDeserializer.cpp index a741294544..4e80d9ba69 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/Json/JsonDeserializer.cpp +++ b/Code/Framework/AzCore/AzCore/Serialization/Json/JsonDeserializer.cpp @@ -759,6 +759,7 @@ namespace AZ else { typeIdResult.m_determination = JsonDeserializer::TypeIdDetermination::FailedToDetermine; + typeIdResult.m_typeId = Uuid::CreateNull(); } } else if (input.IsString()) @@ -768,6 +769,7 @@ namespace AZ else { typeIdResult.m_determination = JsonDeserializer::TypeIdDetermination::FailedToDetermine; + typeIdResult.m_typeId = Uuid::CreateNull(); } switch (typeIdResult.m_determination) diff --git a/Code/Framework/AzCore/AzCore/Serialization/Json/JsonSerializationResult.cpp b/Code/Framework/AzCore/AzCore/Serialization/Json/JsonSerializationResult.cpp index 822c1c43d5..16bad5a466 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/Json/JsonSerializationResult.cpp +++ b/Code/Framework/AzCore/AzCore/Serialization/Json/JsonSerializationResult.cpp @@ -10,265 +10,264 @@ #include #include -namespace AZ +namespace AZ::JsonSerializationResult::Internal { - namespace JsonSerializationResult + template + void AppendToString(AZ::JsonSerializationResult::ResultCode code, + StringType& target, AZStd::string_view path) { - namespace Internal + if (code.GetTask() == static_cast(0)) { - template - void AppendToString(AZ::JsonSerializationResult::ResultCode code, - StringType& target, AZStd::string_view path) - { - if (code.GetTask() == static_cast(0)) - { - target.append("The result code wasn't initialized"); - return; - } - - target.append("The operation "); - switch (code.GetProcessing()) - { - case Processing::Halted: - target.append("has halted during "); - break; - case Processing::Altered: - target.append("has taken an alternative approach for "); - break; - case Processing::PartialAlter: - target.append("has taken a partially alternative approach for "); - break; - case Processing::Completed: - target.append("has completed "); - break; - default: - target.append("has unknown processing status for "); - break; - } - - switch (code.GetTask()) - { - case Tasks::RetrieveInfo: - target.append("a retrieve info operation "); - break; - case Tasks::CreateDefault: - target.append("a create default operation "); - break; - case Tasks::Convert: - target.append("a convert operation "); - break; - case Tasks::ReadField: - target.append("a read field operation "); - break; - case Tasks::WriteValue: - target.append("a write value operation "); - break; - case Tasks::Merge: - target.append("a merge operation "); - break; - case Tasks::CreatePatch: - target.append("a create patch operation "); - break; - case Tasks::Import: - target.append("an import operation"); - break; - default: - target.append("an unknown operation "); - break; - } - - if (!path.empty()) - { - target.append("for '"); - target.append(path.begin(), path.end()); - target.append("' "); - } - - switch (code.GetOutcome()) - { - case Outcomes::Success: - target.append("which resulted in success"); - break; - case Outcomes::DefaultsUsed: - target.append("by using only default values"); - break; - case Outcomes::PartialDefaults: - target.append("by using one or more default values"); - break; - case Outcomes::Skipped: - target.append("because a field or value was skipped"); - break; - case Outcomes::PartialSkip: - target.append("because one or more fields or values were skipped"); - break; - case Outcomes::Unavailable: - target.append("because the target was unavailable"); - break; - case Outcomes::Unsupported: - target.append("because the action was unsupported"); - break; - case Outcomes::TypeMismatch: - target.append("because the source and target are unrelated types"); - break; - case Outcomes::TestFailed: - target.append("because a test against a value failed"); - break; - case Outcomes::Missing: - target.append("because a required field or value was missing"); - break; - case Outcomes::Invalid: - target.append("because a field or element has an invalid value"); - break; - case Outcomes::Unknown: - target.append("because information was missing"); - break; - case Outcomes::Catastrophic: - target.append("because a catastrophic issue was encountered"); - break; - default: - break; - } - } - } // namespace JsonSerializationResultInternal - - ResultCode::ResultCode(Tasks task) - : m_code(0) - { - m_options.m_task = task; + target.append("The result code wasn't initialized"); + return; } - ResultCode::ResultCode(uint32_t code) - : m_code(code) - {} - - ResultCode::ResultCode(Tasks task, Outcomes outcome) + target.append("The operation "); + switch (code.GetProcessing()) { - m_options.m_task = task; - switch (outcome) - { - case Outcomes::Success: // fall through - case Outcomes::Skipped: // fall through - case Outcomes::PartialSkip: // fall through - case Outcomes::DefaultsUsed: // fall through - case Outcomes::PartialDefaults: - m_options.m_processing = Processing::Completed; - break; - case Outcomes::Unavailable: // fall through - case Outcomes::Unsupported: - m_options.m_processing = Processing::Altered; - break; - case Outcomes::TypeMismatch: // fall through - case Outcomes::TestFailed: // fall through - case Outcomes::Missing: // fall through - case Outcomes::Invalid: // fall through - case Outcomes::Unknown: // fall through - case Outcomes::Catastrophic: // fall through - default: - m_options.m_processing = Processing::Halted; - break; - } - m_options.m_outcome = outcome; + case Processing::Halted: + target.append("has halted during "); + break; + case Processing::Altered: + target.append("has taken an alternative approach for "); + break; + case Processing::PartialAlter: + target.append("has taken a partially alternative approach for "); + break; + case Processing::Completed: + target.append("has completed "); + break; + default: + target.append("has unknown processing status for "); + break; } - bool ResultCode::HasDoneWork() const + switch (code.GetTask()) { - return m_options.m_outcome != static_cast(0); + case Tasks::RetrieveInfo: + target.append("a retrieve info operation "); + break; + case Tasks::CreateDefault: + target.append("a create default operation "); + break; + case Tasks::Convert: + target.append("a convert operation "); + break; + case Tasks::ReadField: + target.append("a read field operation "); + break; + case Tasks::WriteValue: + target.append("a write value operation "); + break; + case Tasks::Merge: + target.append("a merge operation "); + break; + case Tasks::CreatePatch: + target.append("a create patch operation "); + break; + case Tasks::Import: + target.append("an import operation"); + break; + default: + target.append("an unknown operation "); + break; } - ResultCode& ResultCode::Combine(ResultCode other) + if (!path.empty()) { - *this = Combine(*this, other); - return *this; + target.append("for '"); + target.append(path.begin(), path.end()); + target.append("' "); } - ResultCode& ResultCode::Combine(const Result& other) + switch (code.GetOutcome()) { - *this = Combine(*this, other.GetResultCode()); - return *this; + case Outcomes::Success: + target.append("which resulted in success"); + break; + case Outcomes::DefaultsUsed: + target.append("by using only default values"); + break; + case Outcomes::PartialDefaults: + target.append("by using one or more default values"); + break; + case Outcomes::Skipped: + target.append("because a field or value was skipped"); + break; + case Outcomes::PartialSkip: + target.append("because one or more fields or values were skipped"); + break; + case Outcomes::Unavailable: + target.append("because the target was unavailable"); + break; + case Outcomes::Unsupported: + target.append("because the action was unsupported"); + break; + case Outcomes::TypeMismatch: + target.append("because the source and target are unrelated types"); + break; + case Outcomes::TestFailed: + target.append("because a test against a value failed"); + break; + case Outcomes::Missing: + target.append("because a required field or value was missing"); + break; + case Outcomes::Invalid: + target.append("because a field or element has an invalid value"); + break; + case Outcomes::Unknown: + target.append("because information was missing"); + break; + case Outcomes::Catastrophic: + target.append("because a catastrophic issue was encountered"); + break; + default: + break; } + } +} // namespace AZ::JsonSerializationResult::Internal - ResultCode ResultCode::Combine(ResultCode lhs, ResultCode rhs) +namespace AZ::JsonSerializationResult +{ + + ResultCode::ResultCode(Tasks task) + : m_code(0) + { + m_options.m_task = task; + } + + ResultCode::ResultCode(uint32_t code) + : m_code(code) + {} + + ResultCode::ResultCode(Tasks task, Outcomes outcome) + { + m_options.m_task = task; + switch (outcome) { - ResultCode result = ResultCode(AZStd::max(lhs.m_code, rhs.m_code)); - - if ((lhs.m_options.m_outcome == Outcomes::Success && rhs.m_options.m_outcome == Outcomes::DefaultsUsed) || - (lhs.m_options.m_outcome == Outcomes::DefaultsUsed && rhs.m_options.m_outcome == Outcomes::Success)) - { - result.m_options.m_outcome = Outcomes::PartialDefaults; - } - else if ((lhs.m_options.m_outcome == Outcomes::Success && rhs.m_options.m_outcome == Outcomes::Skipped) || - (lhs.m_options.m_outcome == Outcomes::Skipped && rhs.m_options.m_outcome == Outcomes::Success)) - { - result.m_options.m_outcome = Outcomes::PartialSkip; - } - - if ((lhs.m_options.m_processing == Processing::Completed && rhs.m_options.m_processing == Processing::Altered) || - (lhs.m_options.m_processing == Processing::Altered && rhs.m_options.m_processing == Processing::Completed)) - { - result.m_options.m_processing = Processing::PartialAlter; - } - - return result; + case Outcomes::Success: // fall through + case Outcomes::Skipped: // fall through + case Outcomes::PartialSkip: // fall through + case Outcomes::DefaultsUsed: // fall through + case Outcomes::PartialDefaults: + m_options.m_processing = Processing::Completed; + break; + case Outcomes::Unavailable: // fall through + case Outcomes::Unsupported: + m_options.m_processing = Processing::Altered; + break; + case Outcomes::TypeMismatch: // fall through + case Outcomes::TestFailed: // fall through + case Outcomes::Missing: // fall through + case Outcomes::Invalid: // fall through + case Outcomes::Unknown: // fall through + case Outcomes::Catastrophic: // fall through + default: + m_options.m_processing = Processing::Halted; + break; } + m_options.m_outcome = outcome; + } - Tasks ResultCode::GetTask() const + bool ResultCode::HasDoneWork() const + { + return m_options.m_outcome != static_cast(0); + } + + ResultCode& ResultCode::Combine(ResultCode other) + { + *this = Combine(*this, other); + return *this; + } + + ResultCode& ResultCode::Combine(const Result& other) + { + *this = Combine(*this, other.GetResultCode()); + return *this; + } + + ResultCode ResultCode::Combine(ResultCode lhs, ResultCode rhs) + { + ResultCode result = ResultCode(AZStd::max(lhs.m_code, rhs.m_code)); + + if ((lhs.m_options.m_outcome == Outcomes::Success && rhs.m_options.m_outcome == Outcomes::DefaultsUsed) || + (lhs.m_options.m_outcome == Outcomes::DefaultsUsed && rhs.m_options.m_outcome == Outcomes::Success)) { - return m_options.m_task; + result.m_options.m_outcome = Outcomes::PartialDefaults; } - - Processing ResultCode::GetProcessing() const + else if ((lhs.m_options.m_outcome == Outcomes::Success && rhs.m_options.m_outcome == Outcomes::Skipped) || + (lhs.m_options.m_outcome == Outcomes::Skipped && rhs.m_options.m_outcome == Outcomes::Success)) { - return m_options.m_processing == static_cast(0) ? - Processing::Completed : m_options.m_processing; + result.m_options.m_outcome = Outcomes::PartialSkip; } - Outcomes ResultCode::GetOutcome() const + if ((lhs.m_options.m_processing == Processing::Completed && rhs.m_options.m_processing == Processing::Altered) || + (lhs.m_options.m_processing == Processing::Altered && rhs.m_options.m_processing == Processing::Completed)) { - return m_options.m_outcome == static_cast(0) ? - Outcomes::DefaultsUsed : m_options.m_outcome; + result.m_options.m_processing = Processing::PartialAlter; } - void ResultCode::AppendToString(AZ::OSString& target, AZStd::string_view path) const - { - Internal::AppendToString(*this, target, path); - } + return result; + } - void ResultCode::AppendToString(AZStd::string& target, AZStd::string_view path) const - { - Internal::AppendToString(*this, target, path); - } + Tasks ResultCode::GetTask() const + { + return m_options.m_task; + } - AZStd::string ResultCode::ToString(AZStd::string_view path) const - { - AZStd::string result; - AppendToString(result, path); - return result; - } + Processing ResultCode::GetProcessing() const + { + return m_options.m_processing == static_cast(0) ? + Processing::Completed : m_options.m_processing; + } - AZ::OSString ResultCode::ToOSString(AZStd::string_view path) const - { - AZ::OSString result; - AppendToString(result, path); - return result; - } + Outcomes ResultCode::GetOutcome() const + { + return m_options.m_outcome == static_cast(0) ? + Outcomes::DefaultsUsed : m_options.m_outcome; + } + + void ResultCode::AppendToString(AZ::OSString& target, AZStd::string_view path) const + { + Internal::AppendToString(*this, target, path); + } + + void ResultCode::AppendToString(AZStd::string& target, AZStd::string_view path) const + { + Internal::AppendToString(*this, target, path); + } + + AZStd::string ResultCode::ToString(AZStd::string_view path) const + { + AZStd::string result; + AppendToString(result, path); + return result; + } + + AZ::OSString ResultCode::ToOSString(AZStd::string_view path) const + { + AZ::OSString result; + AppendToString(result, path); + return result; + } - Result::Result(const JsonIssueCallback& callback, AZStd::string_view message, ResultCode result, AZStd::string_view path) - : m_result(callback(message, result, path)) - {} + Result::Result(const JsonIssueCallback& callback, AZStd::string_view message, ResultCode result, AZStd::string_view path) + : m_result(callback(message, result, path)) + {} - Result::Result(const JsonIssueCallback& callback, AZStd::string_view message, Tasks task, Outcomes outcome, AZStd::string_view path) - : m_result(callback(message, ResultCode(task, outcome), path)) - {} + Result::Result(const JsonIssueCallback& callback, AZStd::string_view message, Tasks task, Outcomes outcome, AZStd::string_view path) + : m_result(callback(message, ResultCode(task, outcome), path)) + {} - Result::operator ResultCode() const - { - return m_result; - } + Result::operator ResultCode() const + { + return m_result; + } - ResultCode Result::GetResultCode() const - { - return m_result; - } - } // namespace JsonSerializationResult -} // namespace AZ + ResultCode Result::GetResultCode() const + { + return m_result; + } + +} // namespace AZ::JsonSerializationResult diff --git a/Code/Framework/AzCore/AzCore/Serialization/Json/JsonSystemComponent.cpp b/Code/Framework/AzCore/AzCore/Serialization/Json/JsonSystemComponent.cpp index da02e70181..0ba44e4e61 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/Json/JsonSystemComponent.cpp +++ b/Code/Framework/AzCore/AzCore/Serialization/Json/JsonSystemComponent.cpp @@ -104,6 +104,8 @@ namespace AZ ->HandlesType(); jsonContext->Serializer() ->HandlesType(); + jsonContext->Serializer() + ->HandlesType(); MathReflect(jsonContext); } diff --git a/Code/Framework/AzCore/AzCore/Serialization/Json/JsonUtils.cpp b/Code/Framework/AzCore/AzCore/Serialization/Json/JsonUtils.cpp index 1a4e7b3e80..6d7edb0716 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/Json/JsonUtils.cpp +++ b/Code/Framework/AzCore/AzCore/Serialization/Json/JsonUtils.cpp @@ -24,438 +24,435 @@ #include -namespace AZ +namespace AZ::JsonSerializationUtils { - namespace JsonSerializationUtils + static const char* FileTypeTag = "Type"; + static const char* FileType = "JsonSerialization"; + static const char* VersionTag = "Version"; + static const char* ClassNameTag = "ClassName"; + static const char* ClassDataTag = "ClassData"; + + AZ::Outcome WriteJsonString(const rapidjson::Document& document, AZStd::string& jsonText, WriteJsonSettings settings) { - static const char* FileTypeTag = "Type"; - static const char* FileType = "JsonSerialization"; - static const char* VersionTag = "Version"; - static const char* ClassNameTag = "ClassName"; - static const char* ClassDataTag = "ClassData"; + AZ::IO::ByteContainerStream stream{&jsonText}; + return WriteJsonStream(document, stream, settings); + } - AZ::Outcome WriteJsonString(const rapidjson::Document& document, AZStd::string& jsonText, WriteJsonSettings settings) + AZ::Outcome WriteJsonFile(const rapidjson::Document& document, AZStd::string_view filePath, WriteJsonSettings settings) + { + // Write the json into memory first and then write the file, rather than passing a file stream to rapidjson. + // This should avoid creating a large number of micro-writes to the file. + AZStd::string fileContent; + auto outcome = WriteJsonString(document, fileContent, settings); + if (!outcome.IsSuccess()) { - AZ::IO::ByteContainerStream stream{&jsonText}; - return WriteJsonStream(document, stream, settings); + return outcome; } - AZ::Outcome WriteJsonFile(const rapidjson::Document& document, AZStd::string_view filePath, WriteJsonSettings settings) - { - // Write the json into memory first and then write the file, rather than passing a file stream to rapidjson. - // This should avoid creating a large number of micro-writes to the file. - AZStd::string fileContent; - auto outcome = WriteJsonString(document, fileContent, settings); - if (!outcome.IsSuccess()) - { - return outcome; - } + return AZ::Utils::WriteFile(fileContent, filePath); + } - return AZ::Utils::WriteFile(fileContent, filePath); + AZ::Outcome WriteJsonStream(const rapidjson::Document& document, IO::GenericStream& stream, WriteJsonSettings settings) + { + AZ::IO::RapidJSONStreamWriter jsonStreamWriter(&stream); + + rapidjson::PrettyWriter writer(jsonStreamWriter); + + if (settings.m_maxDecimalPlaces >= 0) + { + writer.SetMaxDecimalPlaces(settings.m_maxDecimalPlaces); } - AZ::Outcome WriteJsonStream(const rapidjson::Document& document, IO::GenericStream& stream, WriteJsonSettings settings) + if (document.Accept(writer)) { - AZ::IO::RapidJSONStreamWriter jsonStreamWriter(&stream); + return AZ::Success(); + } + else + { + return AZ::Failure(AZStd::string{"Json Writer failed"}); + } + } - rapidjson::PrettyWriter writer(jsonStreamWriter); - - if (settings.m_maxDecimalPlaces >= 0) - { - writer.SetMaxDecimalPlaces(settings.m_maxDecimalPlaces); - } - - if (document.Accept(writer)) - { - return AZ::Success(); - } - else - { - return AZ::Failure(AZStd::string{"Json Writer failed"}); - } + AZ::Outcome SaveObjectToStreamByType(const void* objectPtr, const Uuid& classId, IO::GenericStream& stream, + const void* defaultObjectPtr, const JsonSerializerSettings* settings) + { + if (!stream.CanWrite()) + { + return AZ::Failure(AZStd::string("The GenericStream can't be written to")); } - AZ::Outcome SaveObjectToStreamByType(const void* objectPtr, const Uuid& classId, IO::GenericStream& stream, - const void* defaultObjectPtr, const JsonSerializerSettings* settings) + JsonSerializerSettings saveSettings; + if (settings) { - if (!stream.CanWrite()) - { - return AZ::Failure(AZStd::string("The GenericStream can't be written to")); - } + saveSettings = *settings; + } - JsonSerializerSettings saveSettings; - if (settings) - { - saveSettings = *settings; - } - - AZ::SerializeContext* serializeContext = saveSettings.m_serializeContext; + AZ::SerializeContext* serializeContext = saveSettings.m_serializeContext; + if (!serializeContext) + { + AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationBus::Events::GetSerializeContext); if (!serializeContext) { - AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationBus::Events::GetSerializeContext); - if (!serializeContext) - { - return AZ::Failure(AZStd::string::format("Need SerializeContext for saving")); - } - saveSettings.m_serializeContext = serializeContext; + return AZ::Failure(AZStd::string::format("Need SerializeContext for saving")); } - - rapidjson::Document jsonDocument; - jsonDocument.SetObject(); - jsonDocument.AddMember(rapidjson::StringRef(FileTypeTag), rapidjson::StringRef(FileType), jsonDocument.GetAllocator()); - - rapidjson::Value serializedObject; - - JsonSerializationResult::ResultCode jsonResult = JsonSerialization::Store(serializedObject, jsonDocument.GetAllocator(), - objectPtr, defaultObjectPtr, classId, saveSettings); - - if (jsonResult.GetProcessing() != JsonSerializationResult::Processing::Completed) - { - return AZ::Failure(jsonResult.ToString("")); - } - - const SerializeContext::ClassData* classData = serializeContext->FindClassData(classId); - - jsonDocument.AddMember(rapidjson::StringRef(VersionTag), 1, jsonDocument.GetAllocator()); - jsonDocument.AddMember(rapidjson::StringRef(ClassNameTag), rapidjson::StringRef(classData->m_name), jsonDocument.GetAllocator()); - jsonDocument.AddMember(rapidjson::StringRef(ClassDataTag), AZStd::move(serializedObject), jsonDocument.GetAllocator()); - - AZ::IO::RapidJSONStreamWriter jsonStreamWriter(&stream); - rapidjson::PrettyWriter writer(jsonStreamWriter); - bool jsonWriteResult = jsonDocument.Accept(writer); - if (!jsonWriteResult) - { - return AZ::Failure(AZStd::string::format("Unable to write class %s with json serialization format'", - classId.ToString().data())); - } - - return AZ::Success(); + saveSettings.m_serializeContext = serializeContext; } - AZ::Outcome SaveObjectToFileByType(const void* classPtr, const Uuid& classId, const AZStd::string& filePath, - const void* defaultClassPtr, const JsonSerializerSettings* settings) + rapidjson::Document jsonDocument; + jsonDocument.SetObject(); + jsonDocument.AddMember(rapidjson::StringRef(FileTypeTag), rapidjson::StringRef(FileType), jsonDocument.GetAllocator()); + + rapidjson::Value serializedObject; + + JsonSerializationResult::ResultCode jsonResult = JsonSerialization::Store(serializedObject, jsonDocument.GetAllocator(), + objectPtr, defaultObjectPtr, classId, saveSettings); + + if (jsonResult.GetProcessing() != JsonSerializationResult::Processing::Completed) { - AZStd::vector buffer; - buffer.reserve(1024); - AZ::IO::ByteContainerStream > byteStream(&buffer); - auto saveResult = SaveObjectToStreamByType(classPtr, classId, byteStream, defaultClassPtr, settings); - if (saveResult.IsSuccess()) - { - AZ::IO::FileIOStream outputFileStream; - if (!outputFileStream.Open(filePath.c_str(), AZ::IO::OpenMode::ModeWrite | AZ::IO::OpenMode::ModeCreatePath | AZ::IO::OpenMode::ModeText)) - { - return AZ::Failure(AZStd::string::format("Error opening file '%s' for writing", filePath.c_str())); - } - outputFileStream.Write(buffer.size(), buffer.data()); - } - return saveResult; + return AZ::Failure(jsonResult.ToString("")); } - // Helper function to check whether the load outcome was success (for loading json serialization file) - bool WasLoadSuccess(JsonSerializationResult::Outcomes outcome) - { - return (outcome == JsonSerializationResult::Outcomes::Success - || outcome == JsonSerializationResult::Outcomes::DefaultsUsed - || outcome == JsonSerializationResult::Outcomes::PartialDefaults); - } - - AZ::Outcome PrepareDeserializerSettings(const JsonDeserializerSettings* inputSettings, JsonDeserializerSettings& returnSettings - , AZStd::string& deserializeError) - { - if (inputSettings) - { - returnSettings = *inputSettings; - } + const SerializeContext::ClassData* classData = serializeContext->FindClassData(classId); + jsonDocument.AddMember(rapidjson::StringRef(VersionTag), 1, jsonDocument.GetAllocator()); + jsonDocument.AddMember(rapidjson::StringRef(ClassNameTag), rapidjson::StringRef(classData->m_name), jsonDocument.GetAllocator()); + jsonDocument.AddMember(rapidjson::StringRef(ClassDataTag), AZStd::move(serializedObject), jsonDocument.GetAllocator()); + + AZ::IO::RapidJSONStreamWriter jsonStreamWriter(&stream); + rapidjson::PrettyWriter writer(jsonStreamWriter); + bool jsonWriteResult = jsonDocument.Accept(writer); + if (!jsonWriteResult) + { + return AZ::Failure(AZStd::string::format("Unable to write class %s with json serialization format'", + classId.ToString().data())); + } + + return AZ::Success(); + } + + AZ::Outcome SaveObjectToFileByType(const void* classPtr, const Uuid& classId, const AZStd::string& filePath, + const void* defaultClassPtr, const JsonSerializerSettings* settings) + { + AZStd::vector buffer; + buffer.reserve(1024); + AZ::IO::ByteContainerStream > byteStream(&buffer); + auto saveResult = SaveObjectToStreamByType(classPtr, classId, byteStream, defaultClassPtr, settings); + if (saveResult.IsSuccess()) + { + AZ::IO::FileIOStream outputFileStream; + if (!outputFileStream.Open(filePath.c_str(), AZ::IO::OpenMode::ModeWrite | AZ::IO::OpenMode::ModeCreatePath | AZ::IO::OpenMode::ModeText)) + { + return AZ::Failure(AZStd::string::format("Error opening file '%s' for writing", filePath.c_str())); + } + outputFileStream.Write(buffer.size(), buffer.data()); + } + return saveResult; + } + + // Helper function to check whether the load outcome was success (for loading json serialization file) + bool WasLoadSuccess(JsonSerializationResult::Outcomes outcome) + { + return (outcome == JsonSerializationResult::Outcomes::Success + || outcome == JsonSerializationResult::Outcomes::DefaultsUsed + || outcome == JsonSerializationResult::Outcomes::PartialDefaults); + } + + AZ::Outcome PrepareDeserializerSettings(const JsonDeserializerSettings* inputSettings, JsonDeserializerSettings& returnSettings + , AZStd::string& deserializeError) + { + if (inputSettings) + { + returnSettings = *inputSettings; + } + + if (!returnSettings.m_serializeContext) + { + AZ::ComponentApplicationBus::BroadcastResult(returnSettings.m_serializeContext, &AZ::ComponentApplicationBus::Events::GetSerializeContext); if (!returnSettings.m_serializeContext) { - AZ::ComponentApplicationBus::BroadcastResult(returnSettings.m_serializeContext, &AZ::ComponentApplicationBus::Events::GetSerializeContext); - if (!returnSettings.m_serializeContext) + return AZ::Failure(AZStd::string("Need SerializeContext for loading")); + } + } + + // Report unused data field as error by default + auto reporting = returnSettings.m_reporting; + auto issueReportingCallback = [&deserializeError, reporting](AZStd::string_view message, JsonSerializationResult::ResultCode result, AZStd::string_view target) -> JsonSerializationResult::ResultCode + { + using namespace JsonSerializationResult; + + if (!WasLoadSuccess(result.GetOutcome())) + { + // This if is a hack around fault in the JSON serialization system + // Jira: LY-106587 + if (message != "No part of the string could be interpreted as a uuid.") { - return AZ::Failure(AZStd::string("Need SerializeContext for loading")); + deserializeError.append(message); + deserializeError.append(AZStd::string::format(" '%s' \n", target.data())); } } - // Report unused data field as error by default - auto reporting = returnSettings.m_reporting; - auto issueReportingCallback = [&deserializeError, reporting](AZStd::string_view message, JsonSerializationResult::ResultCode result, AZStd::string_view target) -> JsonSerializationResult::ResultCode + if (reporting) { - using namespace JsonSerializationResult; + result = reporting(message, result, target); + } - if (!WasLoadSuccess(result.GetOutcome())) - { - // This if is a hack around fault in the JSON serialization system - // Jira: LY-106587 - if (message != "No part of the string could be interpreted as a uuid.") - { - deserializeError.append(message); - deserializeError.append(AZStd::string::format(" '%s' \n", target.data())); - } - } + return result; + }; - if (reporting) - { - result = reporting(message, result, target); - } + returnSettings.m_reporting = issueReportingCallback; - return result; - }; + return AZ::Success(); + } - returnSettings.m_reporting = issueReportingCallback; - return AZ::Success(); + AZ::Outcome ReadJsonString(AZStd::string_view jsonText) + { + if (jsonText.empty()) + { + return AZ::Failure(AZStd::string("Failed to parse JSON: input string is empty.")); } - - AZ::Outcome ReadJsonString(AZStd::string_view jsonText) + rapidjson::Document jsonDocument; + jsonDocument.Parse(jsonText.data(), jsonText.size()); + if (jsonDocument.HasParseError()) { - if (jsonText.empty()) + size_t lineNumber = 1; + + const size_t errorOffset = jsonDocument.GetErrorOffset(); + for (size_t searchOffset = jsonText.find('\n'); + searchOffset < errorOffset && searchOffset < AZStd::string::npos; + searchOffset = jsonText.find('\n', searchOffset + 1)) { - return AZ::Failure(AZStd::string("Failed to parse JSON: input string is empty.")); + lineNumber++; } - rapidjson::Document jsonDocument; - jsonDocument.Parse(jsonText.data(), jsonText.size()); - if (jsonDocument.HasParseError()) - { - size_t lineNumber = 1; + return AZ::Failure(AZStd::string::format("JSON parse error at line %zu: %s", lineNumber, rapidjson::GetParseError_En(jsonDocument.GetParseError()))); + } + else + { + return AZ::Success(AZStd::move(jsonDocument)); + } + } - const size_t errorOffset = jsonDocument.GetErrorOffset(); - for (size_t searchOffset = jsonText.find('\n'); - searchOffset < errorOffset && searchOffset < AZStd::string::npos; - searchOffset = jsonText.find('\n', searchOffset + 1)) - { - lineNumber++; - } - - return AZ::Failure(AZStd::string::format("JSON parse error at line %zu: %s", lineNumber, rapidjson::GetParseError_En(jsonDocument.GetParseError()))); - } - else - { - return AZ::Success(AZStd::move(jsonDocument)); - } + AZ::Outcome ReadJsonStream(IO::GenericStream& stream) + { + IO::SizeType length = stream.GetLength(); + + AZStd::vector memoryBuffer; + memoryBuffer.resize_no_construct(static_cast::size_type>(static_cast::size_type>(length) + 1)); + + IO::SizeType bytesRead = stream.Read(length, memoryBuffer.data()); + if (bytesRead != length) + { + return AZ::Failure(AZStd::string{"Cannot to read input stream."}); } - AZ::Outcome ReadJsonStream(IO::GenericStream& stream) + memoryBuffer.back() = 0; + + return ReadJsonString(AZStd::string_view{memoryBuffer.data(), memoryBuffer.size()}); + } + + AZ::Outcome ReadJsonFile(AZStd::string_view filePath, size_t maxFileSize) + { + // Read into memory first and then parse the json, rather than passing a file stream to rapidjson. + // This should avoid creating a large number of micro-reads from the file. + + auto readResult = AZ::Utils::ReadFile(filePath, maxFileSize); + if(!readResult.IsSuccess()) { - IO::SizeType length = stream.GetLength(); - - AZStd::vector memoryBuffer; - memoryBuffer.resize_no_construct(static_cast::size_type>(static_cast::size_type>(length) + 1)); - - IO::SizeType bytesRead = stream.Read(length, memoryBuffer.data()); - if (bytesRead != length) - { - return AZ::Failure(AZStd::string{"Cannot to read input stream."}); - } - - memoryBuffer.back() = 0; - - return ReadJsonString(AZStd::string_view{memoryBuffer.data(), memoryBuffer.size()}); + return AZ::Failure(readResult.GetError()); } - AZ::Outcome ReadJsonFile(AZStd::string_view filePath, size_t maxFileSize) + AZStd::string jsonContent = readResult.TakeValue(); + + auto result = ReadJsonString(jsonContent); + if (!result.IsSuccess()) { - // Read into memory first and then parse the json, rather than passing a file stream to rapidjson. - // This should avoid creating a large number of micro-reads from the file. + return AZ::Failure(AZStd::string::format("Failed to load '%.*s'. %s", AZ_STRING_ARG(filePath), result.GetError().c_str())); + } + else + { + return result; + } + } - auto readResult = AZ::Utils::ReadFile(filePath, maxFileSize); - if(!readResult.IsSuccess()) - { - return AZ::Failure(readResult.GetError()); - } - - AZStd::string jsonContent = readResult.TakeValue(); - - auto result = ReadJsonString(jsonContent); - if (!result.IsSuccess()) - { - return AZ::Failure(AZStd::string::format("Failed to load '%.*s'. %s", AZ_STRING_ARG(filePath), result.GetError().c_str())); - } - else - { - return result; - } + // Helper function to validate the JSON is structured with the standard header for a generic class + AZ::Outcome ValidateJsonClassHeader(const rapidjson::Document& jsonDocument) + { + auto typeItr = jsonDocument.FindMember(FileTypeTag); + if (typeItr == jsonDocument.MemberEnd() || !typeItr->value.IsString() || azstricmp(typeItr->value.GetString(), FileType) != 0) + { + return AZ::Failure(AZStd::string::format("Not a valid JsonSerialization file")); } - // Helper function to validate the JSON is structured with the standard header for a generic class - AZ::Outcome ValidateJsonClassHeader(const rapidjson::Document& jsonDocument) + auto nameItr = jsonDocument.FindMember(ClassNameTag); + if (nameItr == jsonDocument.MemberEnd() || !nameItr->value.IsString()) { - auto typeItr = jsonDocument.FindMember(FileTypeTag); - if (typeItr == jsonDocument.MemberEnd() || !typeItr->value.IsString() || azstricmp(typeItr->value.GetString(), FileType) != 0) - { - return AZ::Failure(AZStd::string::format("Not a valid JsonSerialization file")); - } - - auto nameItr = jsonDocument.FindMember(ClassNameTag); - if (nameItr == jsonDocument.MemberEnd() || !nameItr->value.IsString()) - { - return AZ::Failure(AZStd::string::format("File should contain ClassName")); - } - - auto dataItr = jsonDocument.FindMember(ClassDataTag); - // data can be empty but it should be an object - if (dataItr != jsonDocument.MemberEnd() && !dataItr->value.IsObject()) - { - return AZ::Failure(AZStd::string::format("ClassData should be an object")); - } - - return AZ::Success(); + return AZ::Failure(AZStd::string::format("File should contain ClassName")); } - AZ::Outcome LoadObjectFromStringByType(void* objectToLoad, const Uuid& classId, AZStd::string_view stream, - const JsonDeserializerSettings* settings) + auto dataItr = jsonDocument.FindMember(ClassDataTag); + // data can be empty but it should be an object + if (dataItr != jsonDocument.MemberEnd() && !dataItr->value.IsObject()) { - JsonDeserializerSettings loadSettings; - AZStd::string deserializeErrors; - auto prepare = PrepareDeserializerSettings(settings, loadSettings, deserializeErrors); - if (!prepare.IsSuccess()) - { - return AZ::Failure(prepare.GetError()); - } + return AZ::Failure(AZStd::string::format("ClassData should be an object")); + } - auto parseResult = ReadJsonString(stream); - if (!parseResult.IsSuccess()) - { - return AZ::Failure(parseResult.GetError()); - } + return AZ::Success(); + } - const rapidjson::Document& jsonDocument = parseResult.GetValue(); + AZ::Outcome LoadObjectFromStringByType(void* objectToLoad, const Uuid& classId, AZStd::string_view stream, + const JsonDeserializerSettings* settings) + { + JsonDeserializerSettings loadSettings; + AZStd::string deserializeErrors; + auto prepare = PrepareDeserializerSettings(settings, loadSettings, deserializeErrors); + if (!prepare.IsSuccess()) + { + return AZ::Failure(prepare.GetError()); + } - auto validateResult = ValidateJsonClassHeader(jsonDocument); - if (!validateResult.IsSuccess()) - { - return AZ::Failure(validateResult.GetError()); - } + auto parseResult = ReadJsonString(stream); + if (!parseResult.IsSuccess()) + { + return AZ::Failure(parseResult.GetError()); + } - const char* className = jsonDocument.FindMember(ClassNameTag)->value.GetString(); + const rapidjson::Document& jsonDocument = parseResult.GetValue(); - // validate class name - auto classData = loadSettings.m_serializeContext->FindClassData(classId); - if (!classData) - { - return AZ::Failure(AZStd::string::format("Try to load class from Id %s", classId.ToString().c_str())); - } + auto validateResult = ValidateJsonClassHeader(jsonDocument); + if (!validateResult.IsSuccess()) + { + return AZ::Failure(validateResult.GetError()); + } - if (azstricmp(classData->m_name, className) != 0) - { - return AZ::Failure(AZStd::string::format("Try to load class %s from class %s data", classData->m_name, className)); - } + const char* className = jsonDocument.FindMember(ClassNameTag)->value.GetString(); - JsonSerializationResult::ResultCode result = JsonSerialization::Load(objectToLoad, classId, jsonDocument.FindMember(ClassDataTag)->value, loadSettings); + // validate class name + auto classData = loadSettings.m_serializeContext->FindClassData(classId); + if (!classData) + { + return AZ::Failure(AZStd::string::format("Try to load class from Id %s", classId.ToString().c_str())); + } + + if (azstricmp(classData->m_name, className) != 0) + { + return AZ::Failure(AZStd::string::format("Try to load class %s from class %s data", classData->m_name, className)); + } + + JsonSerializationResult::ResultCode result = JsonSerialization::Load(objectToLoad, classId, jsonDocument.FindMember(ClassDataTag)->value, loadSettings); + + if (!WasLoadSuccess(result.GetOutcome()) || !deserializeErrors.empty()) + { + return AZ::Failure(deserializeErrors); + } + + return AZ::Success(); + } + + AZ::Outcome LoadObjectFromStreamByType(void* objectToLoad, const Uuid& classId, IO::GenericStream& stream, + const JsonDeserializerSettings* settings) + { + JsonDeserializerSettings loadSettings; + AZStd::string deserializeErrors; + auto prepare = PrepareDeserializerSettings(settings, loadSettings, deserializeErrors); + if (!prepare.IsSuccess()) + { + return AZ::Failure(prepare.GetError()); + } + + auto parseResult = ReadJsonStream(stream); + if (!parseResult.IsSuccess()) + { + return AZ::Failure(parseResult.GetError()); + } + + const rapidjson::Document& jsonDocument = parseResult.GetValue(); + + auto validateResult = ValidateJsonClassHeader(jsonDocument); + if (!validateResult.IsSuccess()) + { + return AZ::Failure(validateResult.GetError()); + } + + const char* className = jsonDocument.FindMember(ClassNameTag)->value.GetString(); + + // validate class name + auto classData = loadSettings.m_serializeContext->FindClassData(classId); + if (!classData) + { + return AZ::Failure(AZStd::string::format("Try to load class from Id %s", classId.ToString().c_str())); + } + + if (azstricmp(classData->m_name, className) != 0) + { + return AZ::Failure(AZStd::string::format("Try to load class %s from class %s data", classData->m_name, className)); + } + + JsonSerializationResult::ResultCode result = JsonSerialization::Load(objectToLoad, classId, jsonDocument.FindMember(ClassDataTag)->value, loadSettings); + + if (!WasLoadSuccess(result.GetOutcome()) || !deserializeErrors.empty()) + { + return AZ::Failure(deserializeErrors); + } + + return AZ::Success(); + } + + AZ::Outcome LoadAnyObjectFromStream(IO::GenericStream& stream, const JsonDeserializerSettings* settings) + { + JsonDeserializerSettings loadSettings; + AZStd::string deserializeErrors; + auto prepare = PrepareDeserializerSettings(settings, loadSettings, deserializeErrors); + if (!prepare.IsSuccess()) + { + return AZ::Failure(prepare.GetError()); + } + + auto parseResult = ReadJsonStream(stream); + if (!parseResult.IsSuccess()) + { + return AZ::Failure(parseResult.GetError()); + } + + const rapidjson::Document& jsonDocument = parseResult.GetValue(); + + auto validateResult = ValidateJsonClassHeader(jsonDocument); + if (!parseResult.IsSuccess()) + { + return AZ::Failure(parseResult.GetError()); + } + + const char* className = jsonDocument.FindMember(ClassNameTag)->value.GetString(); + AZStd::vector ids = loadSettings.m_serializeContext->FindClassId(AZ::Crc32(className)); + + // Load with first found class id + if (ids.size() >= 1) + { + auto classId = ids[0]; + AZStd::any anyData = loadSettings.m_serializeContext->CreateAny(classId); + auto& objectData = jsonDocument.FindMember(ClassDataTag)->value; + JsonSerializationResult::ResultCode result = JsonSerialization::Load(AZStd::any_cast(&anyData), classId, objectData, loadSettings); if (!WasLoadSuccess(result.GetOutcome()) || !deserializeErrors.empty()) { return AZ::Failure(deserializeErrors); } - return AZ::Success(); + return AZ::Success(anyData); } - AZ::Outcome LoadObjectFromStreamByType(void* objectToLoad, const Uuid& classId, IO::GenericStream& stream, - const JsonDeserializerSettings* settings) + return AZ::Failure(AZStd::string::format("Can't find serialize context for class %s", className)); + } + + AZ::Outcome LoadAnyObjectFromFile(const AZStd::string& filePath, const JsonDeserializerSettings* settings) + { + AZ::IO::FileIOStream inputFileStream; + if (!inputFileStream.Open(filePath.c_str(), AZ::IO::OpenMode::ModeRead | AZ::IO::OpenMode::ModeText)) { - JsonDeserializerSettings loadSettings; - AZStd::string deserializeErrors; - auto prepare = PrepareDeserializerSettings(settings, loadSettings, deserializeErrors); - if (!prepare.IsSuccess()) - { - return AZ::Failure(prepare.GetError()); - } - - auto parseResult = ReadJsonStream(stream); - if (!parseResult.IsSuccess()) - { - return AZ::Failure(parseResult.GetError()); - } - - const rapidjson::Document& jsonDocument = parseResult.GetValue(); - - auto validateResult = ValidateJsonClassHeader(jsonDocument); - if (!validateResult.IsSuccess()) - { - return AZ::Failure(validateResult.GetError()); - } - - const char* className = jsonDocument.FindMember(ClassNameTag)->value.GetString(); - - // validate class name - auto classData = loadSettings.m_serializeContext->FindClassData(classId); - if (!classData) - { - return AZ::Failure(AZStd::string::format("Try to load class from Id %s", classId.ToString().c_str())); - } - - if (azstricmp(classData->m_name, className) != 0) - { - return AZ::Failure(AZStd::string::format("Try to load class %s from class %s data", classData->m_name, className)); - } - - JsonSerializationResult::ResultCode result = JsonSerialization::Load(objectToLoad, classId, jsonDocument.FindMember(ClassDataTag)->value, loadSettings); - - if (!WasLoadSuccess(result.GetOutcome()) || !deserializeErrors.empty()) - { - return AZ::Failure(deserializeErrors); - } - - return AZ::Success(); - } - - AZ::Outcome LoadAnyObjectFromStream(IO::GenericStream& stream, const JsonDeserializerSettings* settings) - { - JsonDeserializerSettings loadSettings; - AZStd::string deserializeErrors; - auto prepare = PrepareDeserializerSettings(settings, loadSettings, deserializeErrors); - if (!prepare.IsSuccess()) - { - return AZ::Failure(prepare.GetError()); - } - - auto parseResult = ReadJsonStream(stream); - if (!parseResult.IsSuccess()) - { - return AZ::Failure(parseResult.GetError()); - } - - const rapidjson::Document& jsonDocument = parseResult.GetValue(); - - auto validateResult = ValidateJsonClassHeader(jsonDocument); - if (!parseResult.IsSuccess()) - { - return AZ::Failure(parseResult.GetError()); - } - - const char* className = jsonDocument.FindMember(ClassNameTag)->value.GetString(); - AZStd::vector ids = loadSettings.m_serializeContext->FindClassId(AZ::Crc32(className)); - - // Load with first found class id - if (ids.size() >= 1) - { - auto classId = ids[0]; - AZStd::any anyData = loadSettings.m_serializeContext->CreateAny(classId); - auto& objectData = jsonDocument.FindMember(ClassDataTag)->value; - JsonSerializationResult::ResultCode result = JsonSerialization::Load(AZStd::any_cast(&anyData), classId, objectData, loadSettings); - - if (!WasLoadSuccess(result.GetOutcome()) || !deserializeErrors.empty()) - { - return AZ::Failure(deserializeErrors); - } - - return AZ::Success(anyData); - } - - return AZ::Failure(AZStd::string::format("Can't find serialize context for class %s", className)); + return AZ::Failure(AZStd::string::format("Error opening file '%s' for reading", filePath.c_str())); } + return LoadAnyObjectFromStream(inputFileStream, settings); + } - AZ::Outcome LoadAnyObjectFromFile(const AZStd::string& filePath, const JsonDeserializerSettings* settings) - { - AZ::IO::FileIOStream inputFileStream; - if (!inputFileStream.Open(filePath.c_str(), AZ::IO::OpenMode::ModeRead | AZ::IO::OpenMode::ModeText)) - { - return AZ::Failure(AZStd::string::format("Error opening file '%s' for reading", filePath.c_str())); - } - return LoadAnyObjectFromStream(inputFileStream, settings); - } - - } // namespace JsonSerializationUtils -} // namespace AZ +} // namespace AZ::JsonSerializationUtils diff --git a/Code/Framework/AzCore/AzCore/Serialization/Json/UnsupportedTypesSerializer.cpp b/Code/Framework/AzCore/AzCore/Serialization/Json/UnsupportedTypesSerializer.cpp index 2392ff435f..ad1839f974 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/Json/UnsupportedTypesSerializer.cpp +++ b/Code/Framework/AzCore/AzCore/Serialization/Json/UnsupportedTypesSerializer.cpp @@ -15,6 +15,7 @@ namespace AZ AZ_CLASS_ALLOCATOR_IMPL(JsonAnySerializer, SystemAllocator, 0); AZ_CLASS_ALLOCATOR_IMPL(JsonVariantSerializer, SystemAllocator, 0); AZ_CLASS_ALLOCATOR_IMPL(JsonOptionalSerializer, SystemAllocator, 0); + AZ_CLASS_ALLOCATOR_IMPL(JsonBitsetSerializer, SystemAllocator, 0); JsonSerializationResult::Result JsonUnsupportedTypesSerializer::Load(void*, const Uuid&, const rapidjson::Value&, JsonDeserializerContext& context) @@ -49,4 +50,10 @@ namespace AZ return "The Json Serialization doesn't support AZStd::optional by design. No JSON format has yet been found that wasn't deemed too " "complex or overly verbose."; } + + AZStd::string_view JsonBitsetSerializer::GetMessage() const + { + return "The Json Serialization doesn't support AZStd::bitset by design. No JSON format has yet been found that is content creator " + "friendly i.e., easy to comprehend the intent."; + } } // namespace AZ diff --git a/Code/Framework/AzCore/AzCore/Serialization/Json/UnsupportedTypesSerializer.h b/Code/Framework/AzCore/AzCore/Serialization/Json/UnsupportedTypesSerializer.h index d913289d3d..fdcac4c761 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/Json/UnsupportedTypesSerializer.h +++ b/Code/Framework/AzCore/AzCore/Serialization/Json/UnsupportedTypesSerializer.h @@ -65,4 +65,14 @@ namespace AZ protected: AZStd::string_view GetMessage() const override; }; + + class JsonBitsetSerializer : public JsonUnsupportedTypesSerializer + { + public: + AZ_RTTI(JsonBitsetSerializer, "{10CE969D-D69E-4B3F-8593-069736F8F705}", JsonUnsupportedTypesSerializer); + AZ_CLASS_ALLOCATOR_DECL; + + protected: + AZStd::string_view GetMessage() const override; + }; } // namespace AZ diff --git a/Code/Framework/AzCore/AzCore/Serialization/ObjectStream.cpp b/Code/Framework/AzCore/AzCore/Serialization/ObjectStream.cpp index 746c80f3ea..ac44ac150c 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/ObjectStream.cpp +++ b/Code/Framework/AzCore/AzCore/Serialization/ObjectStream.cpp @@ -1050,7 +1050,7 @@ namespace AZ } m_xmlNode = next; - Uuid specializedId; + Uuid specializedId = Uuid::CreateNull(); // now parse the node rapidxml::xml_attribute* attr = m_xmlNode->first_attribute(); while (attr) @@ -1643,12 +1643,15 @@ namespace AZ m_writeElementResultStack.push_back(WriteElement(ptr, classData, classElement)); return m_writeElementResultStack.back(); }; - auto closeElementCB = [this, classData]() + auto closeElementCB = [this, classTypeId = classData->m_typeId]() { if (m_writeElementResultStack.empty()) { - AZ_UNUSED(classData); // Prevent unused warning in release builds - AZ_Error("Serialize", false, "CloseElement is attempted to be called without a corresponding WriteElement when writing class %s", classData->m_name); + // ClassData could be dangling pointer if it was unreflected by the ObjectStreamWriteOverrideCB + // So use the classTypeId instead + AZ_UNUSED(classTypeId); + AZ_Error("Serialize", false, "CloseElement is attempted to be called without a corresponding WriteElement when writing class %s", + classTypeId.ToString>().c_str()); return true; } if (m_writeElementResultStack.back()) @@ -1665,16 +1668,14 @@ namespace AZ SerializeContext::ENUM_ACCESS_FOR_READ, &m_errorLogger ); - ObjectStreamWriteOverrideCB writeCB; - if (objectStreamWriteOverrideCB.Read(writeCB)) + if (objectStreamWriteOverrideCB.Invoke(callContext, objectPtr, *classData, classElement)) { - writeCB(callContext, objectPtr, *classData, classElement); return false; } else { auto objectStreamError = AZStd::string::format("Unable to invoke ObjectStream Write Element Override for class element %s of class data %s", - classElement->m_name ? classElement->m_name : "", classData->m_name); + classElement && classElement->m_name ? classElement->m_name : "", classData->m_name); m_errorLogger.ReportError(objectStreamError.c_str()); } } diff --git a/Code/Framework/AzCore/AzCore/Serialization/SerializationUtils.cpp b/Code/Framework/AzCore/AzCore/Serialization/SerializationUtils.cpp index 37eacd940e..8439ff8e2c 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/SerializationUtils.cpp +++ b/Code/Framework/AzCore/AzCore/Serialization/SerializationUtils.cpp @@ -18,502 +18,499 @@ #include -namespace AZ +namespace AZ::Utils { - namespace Utils + bool LoadObjectFromStreamInPlace(IO::GenericStream& stream, AZ::SerializeContext* context, const SerializeContext::ClassData* objectClassData, void* targetPointer, const FilterDescriptor& filterDesc) { - bool LoadObjectFromStreamInPlace(IO::GenericStream& stream, AZ::SerializeContext* context, const SerializeContext::ClassData* objectClassData, void* targetPointer, const FilterDescriptor& filterDesc) + AZ_PROFILE_FUNCTION(AzCore); + + AZ_Assert(objectClassData, "Class data is required."); + + if (!context) { - AZ_PROFILE_FUNCTION(AzCore); - - AZ_Assert(objectClassData, "Class data is required."); - - if (!context) - { - EBUS_EVENT_RESULT(context, ComponentApplicationBus, GetSerializeContext); - AZ_Assert(context, "No serialize context"); - } - - if (!context) - { - return false; - } - - AZ_Assert(targetPointer, "You must provide a target pointer"); - - bool foundSuccess = false; - using CreationCallback = AZStd::function; - auto handler = [&targetPointer, objectClassData, &foundSuccess](void** instance, const SerializeContext::ClassData** classData, const Uuid& classId, SerializeContext* context) - { - void* convertibleInstance{}; - if (objectClassData->ConvertFromType(convertibleInstance, classId, targetPointer, *context)) - { - foundSuccess = true; - if (instance) - { - // The ObjectStream will ask us for the address of the target to load into, so provide it. - *instance = convertibleInstance; - } - if (classData) - { - // The ObjectStream will ask us for the class data of the target being loaded into, so provide it if needed. - // This allows us to load directly into a generic object (templated containers, strings, etc). - *classData = objectClassData; - } - } - }; - bool readSuccess = ObjectStream::LoadBlocking(&stream, *context, ObjectStream::ClassReadyCB(), filterDesc, CreationCallback(handler, AZ::OSStdAllocator())); - - AZ_Warning("Serialization", readSuccess, "LoadObjectFromStreamInPlace: Stream did not deserialize correctly"); - AZ_Warning("Serialization", foundSuccess, "LoadObjectFromStreamInPlace: Did not find the expected type in the stream"); - - return readSuccess && foundSuccess; + EBUS_EVENT_RESULT(context, ComponentApplicationBus, GetSerializeContext); + AZ_Assert(context, "No serialize context"); } - bool LoadObjectFromStreamInPlace(IO::GenericStream& stream, AZ::SerializeContext* context, const Uuid& targetClassId, void* targetPointer, const FilterDescriptor& filterDesc) + if (!context) { - AZ_PROFILE_FUNCTION(AzCore); - - if (!context) - { - EBUS_EVENT_RESULT(context, ComponentApplicationBus, GetSerializeContext); - AZ_Assert(context, "No serialize context"); - } - - if (!context) - { - return false; - } - - const SerializeContext::ClassData* classData = context->FindClassData(targetClassId); - if (!classData) - { - AZ_Error("Serialization", false, - "Unable to locate class data for uuid \"%s\". This object cannot be serialized as a root element. " - "Make sure the Uuid is valid, or if this is a generic type, use the override that takes a ClassData pointer instead.", - targetClassId.ToString().c_str()); - return false; - } - - return LoadObjectFromStreamInPlace(stream, context, classData, targetPointer, filterDesc); - } - - bool LoadObjectFromFileInPlace(const AZStd::string& filePath, const Uuid& targetClassId, void* destination, AZ::SerializeContext* context /*= nullptr*/, const FilterDescriptor& filterDesc /*= FilterDescriptor()*/) - { - AZ::IO::FileIOStream fileStream; - if (!fileStream.Open(filePath.c_str(), IO::OpenMode::ModeRead | IO::OpenMode::ModeBinary)) - { - return false; - } - - return LoadObjectFromStreamInPlace(fileStream, context, targetClassId, destination, filterDesc); - } - - void* LoadObjectFromStream(IO::GenericStream& stream, AZ::SerializeContext* context, const Uuid* targetClassId, const FilterDescriptor& filterDesc) - { - AZ_PROFILE_FUNCTION(AzCore); - - if (!context) - { - EBUS_EVENT_RESULT(context, ComponentApplicationBus, GetSerializeContext); - AZ_Assert(context, "No serialize context"); - } - - if (!context) - { - return nullptr; - } - - void* loadedInstance = nullptr; - bool success = ObjectStream::LoadBlocking(&stream, *context, - [&loadedInstance, targetClassId](void* classPtr, const Uuid& classId, const SerializeContext* serializeContext) - { - if (targetClassId) - { - void* instance = serializeContext->DownCast(classPtr, classId, *targetClassId); - - // Given a valid object - if (instance) - { - AZ_Assert(!loadedInstance, "loadedInstance must be NULL, otherwise we are being invoked with multiple valid objects"); - loadedInstance = instance; - return; - } - } - else - { - if (!loadedInstance) - { - loadedInstance = classPtr; - return; - } - } - - auto classData = serializeContext->FindClassData(classId); - if (classData && classData->m_factory) - { - classData->m_factory->Destroy(classPtr); - } - }, - filterDesc, - ObjectStream::InplaceLoadRootInfoCB() - ); - - if (!success) - { - return nullptr; - } - - return loadedInstance; - } - - void* LoadObjectFromFile(const AZStd::string& filePath, const Uuid& targetClassId, SerializeContext* context, const FilterDescriptor& filterDesc, int /*platformFlags*/) - { - AZ_PROFILE_FUNCTION(AzCore); - - AZ::IO::FileIOStream fileStream; - if (!fileStream.Open(filePath.c_str(), IO::OpenMode::ModeRead | IO::OpenMode::ModeBinary)) - { - return nullptr; - } - - void* loadedObject = LoadObjectFromStream(fileStream, context, &targetClassId, filterDesc); - return loadedObject; - } - - bool SaveObjectToStream(IO::GenericStream& stream, DataStream::StreamType streamType, const void* classPtr, const Uuid& classId, SerializeContext* context, const SerializeContext::ClassData* classData) - { - AZ_PROFILE_FUNCTION(AzCore); - - if (!context) - { - EBUS_EVENT_RESULT(context, ComponentApplicationBus, GetSerializeContext); - - if(!context) - { - AZ_Assert(false, "No serialize context"); - return false; - } - } - - if (!classPtr) - { - AZ_Assert(false, "SaveObjectToStream: classPtr is null, object cannot be serialized."); - return false; - } - - AZ::ObjectStream* objectStream = AZ::ObjectStream::Create(&stream, *context, streamType); - if (!objectStream) - { - return false; - } - - if (!objectStream->WriteClass(classPtr, classId, classData)) - { - objectStream->Finalize(); - return false; - } - - if (!objectStream->Finalize()) - { - return false; - } - - return true; - } - - bool SaveStreamToFile(const AZStd::string& filePath, const AZStd::vector& streamData, int platformFlags) - { - AZ::IO::FileIOBase* fileIo = AZ::IO::FileIOBase::GetInstance(); - AZ::IO::FixedMaxPathString resolvedPath; - if (fileIo == nullptr || !fileIo->ResolvePath(filePath.c_str(), resolvedPath.data(), resolvedPath.capacity() + 1)) - { - resolvedPath = filePath; - } - if (AZ::IO::SystemFile fileHandle; fileHandle.Open(resolvedPath.c_str(), - AZ::IO::SystemFile::SF_OPEN_CREATE | AZ::IO::SystemFile::SF_OPEN_CREATE_PATH | AZ::IO::SystemFile::SF_OPEN_WRITE_ONLY, - platformFlags)) - { - AZ::IO::SizeType bytesWritten = fileHandle.Write(streamData.data(), streamData.size()); - return bytesWritten == streamData.size(); - } - return false; } - bool SaveObjectToFile(const AZStd::string& filePath, DataStream::StreamType fileType, const void* classPtr, const Uuid& classId, SerializeContext* context, int platformFlags) - { - AZ_PROFILE_FUNCTION(AzCore); + AZ_Assert(targetPointer, "You must provide a target pointer"); - // \note This is ok for tools, but we should use the streamer to write objects directly (no memory store) - AZStd::vector dstData; - AZ::IO::ByteContainerStream > dstByteStream(&dstData); - - if (!SaveObjectToStream(dstByteStream, fileType, classPtr, classId, context)) + bool foundSuccess = false; + using CreationCallback = AZStd::function; + auto handler = [&targetPointer, objectClassData, &foundSuccess](void** instance, const SerializeContext::ClassData** classData, const Uuid& classId, SerializeContext* context) { - return false; - } - - return SaveStreamToFile(filePath, dstData, platformFlags); - } - - /*! - \brief Finds any descendant DataElementNodes of the @classElement which match each Crc32 values in the supplied elementCrcQueue - \param context SerializeContext used for looking up ClassData - \param classElement Top level DataElementNode to begin comparison each the Crc32 queue - \param elementCrcQueue Container of Crc32 values in the order in which DataElementNodes should be matched as the DataElementNode tree is traversed - \return Vector of valid pointers to DataElementNodes which match the entire element Crc32 queue - */ - AZStd::vector FindDescendantElements(AZ::SerializeContext& context, AZ::SerializeContext::DataElementNode& classElement, - const AZStd::vector& elementCrcQueue) - { - AZStd::vector dataElementNodes; - FindDescendantElements(context, classElement, dataElementNodes, elementCrcQueue.begin(), elementCrcQueue.end()); - - return dataElementNodes; - } - - /*! - \brief Finds any descendant DataElementNodes of the @classElement which match each Crc32 values in the supplied elementCrcQueue - \param context SerializeContext used for looking up ClassData - \param classElement The current DataElementNode which will be compared against be to current top Crc32 value in the Crc32 queue - \param dataElementNodes[out] Array to populate with a DataElementNode which was found by matching all Crc32 values in the Crc32 queue - \param first The current front of the Crc32 queue - \param last The end of the Crc32 queue - */ - void FindDescendantElements(AZ::SerializeContext& context, AZ::SerializeContext::DataElementNode& classElement, - AZStd::vector& dataElementNodes, AZStd::vector::const_iterator first, AZStd::vector::const_iterator last) - { - if (first == last) - { - return; - } - - for (int i = 0; i < classElement.GetNumSubElements(); ++i) - { - auto& childElement = classElement.GetSubElement(i); - if (*first == AZ::Crc32(childElement.GetName())) + void* convertibleInstance{}; + if (objectClassData->ConvertFromType(convertibleInstance, classId, targetPointer, *context)) { - if (AZStd::distance(first, last) == 1) + foundSuccess = true; + if (instance) { - dataElementNodes.push_back(&childElement); + // The ObjectStream will ask us for the address of the target to load into, so provide it. + *instance = convertibleInstance; + } + if (classData) + { + // The ObjectStream will ask us for the class data of the target being loaded into, so provide it if needed. + // This allows us to load directly into a generic object (templated containers, strings, etc). + *classData = objectClassData; + } + } + }; + bool readSuccess = ObjectStream::LoadBlocking(&stream, *context, ObjectStream::ClassReadyCB(), filterDesc, CreationCallback(handler, AZ::OSStdAllocator())); + + AZ_Warning("Serialization", readSuccess, "LoadObjectFromStreamInPlace: Stream did not deserialize correctly"); + AZ_Warning("Serialization", foundSuccess, "LoadObjectFromStreamInPlace: Did not find the expected type in the stream"); + + return readSuccess && foundSuccess; + } + + bool LoadObjectFromStreamInPlace(IO::GenericStream& stream, AZ::SerializeContext* context, const Uuid& targetClassId, void* targetPointer, const FilterDescriptor& filterDesc) + { + AZ_PROFILE_FUNCTION(AzCore); + + if (!context) + { + EBUS_EVENT_RESULT(context, ComponentApplicationBus, GetSerializeContext); + AZ_Assert(context, "No serialize context"); + } + + if (!context) + { + return false; + } + + const SerializeContext::ClassData* classData = context->FindClassData(targetClassId); + if (!classData) + { + AZ_Error("Serialization", false, + "Unable to locate class data for uuid \"%s\". This object cannot be serialized as a root element. " + "Make sure the Uuid is valid, or if this is a generic type, use the override that takes a ClassData pointer instead.", + targetClassId.ToString().c_str()); + return false; + } + + return LoadObjectFromStreamInPlace(stream, context, classData, targetPointer, filterDesc); + } + + bool LoadObjectFromFileInPlace(const AZStd::string& filePath, const Uuid& targetClassId, void* destination, AZ::SerializeContext* context /*= nullptr*/, const FilterDescriptor& filterDesc /*= FilterDescriptor()*/) + { + AZ::IO::FileIOStream fileStream; + if (!fileStream.Open(filePath.c_str(), IO::OpenMode::ModeRead | IO::OpenMode::ModeBinary)) + { + return false; + } + + return LoadObjectFromStreamInPlace(fileStream, context, targetClassId, destination, filterDesc); + } + + void* LoadObjectFromStream(IO::GenericStream& stream, AZ::SerializeContext* context, const Uuid* targetClassId, const FilterDescriptor& filterDesc) + { + AZ_PROFILE_FUNCTION(AzCore); + + if (!context) + { + EBUS_EVENT_RESULT(context, ComponentApplicationBus, GetSerializeContext); + AZ_Assert(context, "No serialize context"); + } + + if (!context) + { + return nullptr; + } + + void* loadedInstance = nullptr; + bool success = ObjectStream::LoadBlocking(&stream, *context, + [&loadedInstance, targetClassId](void* classPtr, const Uuid& classId, const SerializeContext* serializeContext) + { + if (targetClassId) + { + void* instance = serializeContext->DownCast(classPtr, classId, *targetClassId); + + // Given a valid object + if (instance) + { + AZ_Assert(!loadedInstance, "loadedInstance must be NULL, otherwise we are being invoked with multiple valid objects"); + loadedInstance = instance; + return; + } } else { - FindDescendantElements(context, childElement, dataElementNodes, AZStd::next(first), last); - } - } - } - } - - bool IsVectorContainerType(const AZ::Uuid& type) - { - AZ::SerializeContext* serializeContext = nullptr; - AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); - - if (serializeContext) - { - AZ::TypeId containerTypeId = type; - - if (GenericClassInfo* classInfo = serializeContext->FindGenericClassInfo(type)) - { - // This type is a container - containerTypeId = classInfo->GetGenericTypeId(); - } - - if (containerTypeId == AZ::GetGenericClassInfoVectorTypeId() - || containerTypeId == AZ::GetGenericClassInfoFixedVectorTypeId() - || containerTypeId == AZ::GetGenericClassInfoArrayTypeId() - ) - { - return true; - } - } - - return false; - } - - bool IsSetContainerType(const AZ::Uuid& type) - { - AZ::SerializeContext* serializeContext = nullptr; - AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); - - if (serializeContext) - { - AZ::TypeId containerTypeId = type; - - if (GenericClassInfo* classInfo = serializeContext->FindGenericClassInfo(type)) - { - // This type is a container - containerTypeId = classInfo->GetGenericTypeId(); - } - - if (containerTypeId == AZ::GetGenericClassSetTypeId() - || containerTypeId == AZ::GetGenericClassUnorderedSetTypeId() - ) - { - return true; - } - } - - return false; - } - - - bool IsMapContainerType(const AZ::Uuid& type) - { - AZ::SerializeContext* serializeContext = nullptr; - AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); - - if (serializeContext) - { - AZ::Uuid containerTypeId = type; - - if (GenericClassInfo* classInfo = serializeContext->FindGenericClassInfo(type)) - { - containerTypeId = classInfo->GetGenericTypeId(); - } - - if (containerTypeId == AZ::GetGenericClassMapTypeId() - || containerTypeId == AZ::GetGenericClassUnorderedMapTypeId() - ) - { - return true; - } - } - - return false; - } - - bool IsContainerType(const AZ::Uuid& type) - { - return IsVectorContainerType(type) || IsSetContainerType(type) || IsMapContainerType(type); - } - - AZStd::vector GetContainedTypes(const AZ::Uuid& type) - { - AZStd::vector types; - - AZ::SerializeContext* serializeContext = nullptr; - AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); - - if (serializeContext) - { - if (GenericClassInfo* classInfo = serializeContext->FindGenericClassInfo(type)) - { - for (int i = 0; i < classInfo->GetNumTemplatedArguments(); ++i) - { - types.push_back(classInfo->GetTemplatedTypeId(i)); - } - } - } - - return types; - } - - bool IsOutcomeType(const AZ::Uuid& type) - { - AZ::SerializeContext* serializeContext = nullptr; - AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); - - if (serializeContext) - { - GenericClassInfo* classInfo = serializeContext->FindGenericClassInfo(type); - return classInfo && classInfo->GetGenericTypeId() == AZ::GetGenericOutcomeTypeId(); - } - - return false; - } - - bool IsPairContainerType(const AZ::Uuid& type) - { - AZ::SerializeContext* serializeContext = nullptr; - AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); - - if (serializeContext) - { - AZ::Uuid containerTypeId = type; - - if (GenericClassInfo* classInfo = serializeContext->FindGenericClassInfo(type)) - { - containerTypeId = classInfo->GetGenericTypeId(); - } - - if (containerTypeId == AZ::GetGenericClassPairTypeId()) - { - return true; - } - } - - return false; - } - - AZ::TypeId GetGenericContainerType(const AZ::TypeId& type) - { - AZ::SerializeContext* serializeContext = nullptr; - AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); - - if (serializeContext) - { - if (GenericClassInfo* classInfo = serializeContext->FindGenericClassInfo(type)) - { - // This type is a container - return classInfo->GetGenericTypeId(); - } - } - - return azrtti_typeid(); - } - - bool IsGenericContainerType(const AZ::TypeId& type) - { - return IsContainerType(type) && GetGenericContainerType(type) == azrtti_typeid(); - } - - AZStd::pair GetOutcomeTypes(const AZ::Uuid& type) - { - AZStd::vector types; - - AZ::SerializeContext* serializeContext = nullptr; - AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); - - if (serializeContext) - { - if (GenericClassInfo* classInfo = serializeContext->FindGenericClassInfo(type)) - { - AZ_Assert(classInfo->GetNumTemplatedArguments() == 2, "Outcome template arguments must be 2, even if void, void"); - return AZStd::make_pair(classInfo->GetTemplatedTypeId(0), classInfo->GetTemplatedTypeId(1)); - } - } - - return AZStd::make_pair(azrtti_typeid(), azrtti_typeid()); - } - - void* ResolvePointer(void* ptr, const SerializeContext::ClassElement& classElement, const SerializeContext& context) - { - if (classElement.m_flags & SerializeContext::ClassElement::FLG_POINTER) - { - // In the case of pointer-to-pointer, we'll deference. - ptr = *(void**)(ptr); - - // Pointer-to-pointer fields may be base class / polymorphic, so cast pointer to actual type, - // safe for passing as 'this' to member functions. - if (ptr && classElement.m_azRtti) - { - Uuid actualClassId = classElement.m_azRtti->GetActualUuid(ptr); - if (actualClassId != classElement.m_typeId) - { - const SerializeContext::ClassData* classData = context.FindClassData(actualClassId); - if (classData) + if (!loadedInstance) { - ptr = classElement.m_azRtti->Cast(ptr, classData->m_azRtti->GetTypeId()); + loadedInstance = classPtr; + return; } } - } - } - return ptr; + auto classData = serializeContext->FindClassData(classId); + if (classData && classData->m_factory) + { + classData->m_factory->Destroy(classPtr); + } + }, + filterDesc, + ObjectStream::InplaceLoadRootInfoCB() + ); + + if (!success) + { + return nullptr; } - } // namespace Utils -} // namespace AZ + return loadedInstance; + } + + void* LoadObjectFromFile(const AZStd::string& filePath, const Uuid& targetClassId, SerializeContext* context, const FilterDescriptor& filterDesc, int /*platformFlags*/) + { + AZ_PROFILE_FUNCTION(AzCore); + + AZ::IO::FileIOStream fileStream; + if (!fileStream.Open(filePath.c_str(), IO::OpenMode::ModeRead | IO::OpenMode::ModeBinary)) + { + return nullptr; + } + + void* loadedObject = LoadObjectFromStream(fileStream, context, &targetClassId, filterDesc); + return loadedObject; + } + + bool SaveObjectToStream(IO::GenericStream& stream, DataStream::StreamType streamType, const void* classPtr, const Uuid& classId, SerializeContext* context, const SerializeContext::ClassData* classData) + { + AZ_PROFILE_FUNCTION(AzCore); + + if (!context) + { + EBUS_EVENT_RESULT(context, ComponentApplicationBus, GetSerializeContext); + + if(!context) + { + AZ_Assert(false, "No serialize context"); + return false; + } + } + + if (!classPtr) + { + AZ_Assert(false, "SaveObjectToStream: classPtr is null, object cannot be serialized."); + return false; + } + + AZ::ObjectStream* objectStream = AZ::ObjectStream::Create(&stream, *context, streamType); + if (!objectStream) + { + return false; + } + + if (!objectStream->WriteClass(classPtr, classId, classData)) + { + objectStream->Finalize(); + return false; + } + + if (!objectStream->Finalize()) + { + return false; + } + + return true; + } + + bool SaveStreamToFile(const AZStd::string& filePath, const AZStd::vector& streamData, int platformFlags) + { + AZ::IO::FileIOBase* fileIo = AZ::IO::FileIOBase::GetInstance(); + AZ::IO::FixedMaxPathString resolvedPath; + if (fileIo == nullptr || !fileIo->ResolvePath(filePath.c_str(), resolvedPath.data(), resolvedPath.capacity() + 1)) + { + resolvedPath = filePath; + } + if (AZ::IO::SystemFile fileHandle; fileHandle.Open(resolvedPath.c_str(), + AZ::IO::SystemFile::SF_OPEN_CREATE | AZ::IO::SystemFile::SF_OPEN_CREATE_PATH | AZ::IO::SystemFile::SF_OPEN_WRITE_ONLY, + platformFlags)) + { + AZ::IO::SizeType bytesWritten = fileHandle.Write(streamData.data(), streamData.size()); + return bytesWritten == streamData.size(); + } + + return false; + } + + bool SaveObjectToFile(const AZStd::string& filePath, DataStream::StreamType fileType, const void* classPtr, const Uuid& classId, SerializeContext* context, int platformFlags) + { + AZ_PROFILE_FUNCTION(AzCore); + + // \note This is ok for tools, but we should use the streamer to write objects directly (no memory store) + AZStd::vector dstData; + AZ::IO::ByteContainerStream > dstByteStream(&dstData); + + if (!SaveObjectToStream(dstByteStream, fileType, classPtr, classId, context)) + { + return false; + } + + return SaveStreamToFile(filePath, dstData, platformFlags); + } + + /*! + \brief Finds any descendant DataElementNodes of the @classElement which match each Crc32 values in the supplied elementCrcQueue + \param context SerializeContext used for looking up ClassData + \param classElement Top level DataElementNode to begin comparison each the Crc32 queue + \param elementCrcQueue Container of Crc32 values in the order in which DataElementNodes should be matched as the DataElementNode tree is traversed + \return Vector of valid pointers to DataElementNodes which match the entire element Crc32 queue + */ + AZStd::vector FindDescendantElements(AZ::SerializeContext& context, AZ::SerializeContext::DataElementNode& classElement, + const AZStd::vector& elementCrcQueue) + { + AZStd::vector dataElementNodes; + FindDescendantElements(context, classElement, dataElementNodes, elementCrcQueue.begin(), elementCrcQueue.end()); + + return dataElementNodes; + } + + /*! + \brief Finds any descendant DataElementNodes of the @classElement which match each Crc32 values in the supplied elementCrcQueue + \param context SerializeContext used for looking up ClassData + \param classElement The current DataElementNode which will be compared against be to current top Crc32 value in the Crc32 queue + \param dataElementNodes[out] Array to populate with a DataElementNode which was found by matching all Crc32 values in the Crc32 queue + \param first The current front of the Crc32 queue + \param last The end of the Crc32 queue + */ + void FindDescendantElements(AZ::SerializeContext& context, AZ::SerializeContext::DataElementNode& classElement, + AZStd::vector& dataElementNodes, AZStd::vector::const_iterator first, AZStd::vector::const_iterator last) + { + if (first == last) + { + return; + } + + for (int i = 0; i < classElement.GetNumSubElements(); ++i) + { + auto& childElement = classElement.GetSubElement(i); + if (*first == AZ::Crc32(childElement.GetName())) + { + if (AZStd::distance(first, last) == 1) + { + dataElementNodes.push_back(&childElement); + } + else + { + FindDescendantElements(context, childElement, dataElementNodes, AZStd::next(first), last); + } + } + } + } + + bool IsVectorContainerType(const AZ::Uuid& type) + { + AZ::SerializeContext* serializeContext = nullptr; + AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); + + if (serializeContext) + { + AZ::TypeId containerTypeId = type; + + if (GenericClassInfo* classInfo = serializeContext->FindGenericClassInfo(type)) + { + // This type is a container + containerTypeId = classInfo->GetGenericTypeId(); + } + + if (containerTypeId == AZ::GetGenericClassInfoVectorTypeId() + || containerTypeId == AZ::GetGenericClassInfoFixedVectorTypeId() + || containerTypeId == AZ::GetGenericClassInfoArrayTypeId() + ) + { + return true; + } + } + + return false; + } + + bool IsSetContainerType(const AZ::Uuid& type) + { + AZ::SerializeContext* serializeContext = nullptr; + AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); + + if (serializeContext) + { + AZ::TypeId containerTypeId = type; + + if (GenericClassInfo* classInfo = serializeContext->FindGenericClassInfo(type)) + { + // This type is a container + containerTypeId = classInfo->GetGenericTypeId(); + } + + if (containerTypeId == AZ::GetGenericClassSetTypeId() + || containerTypeId == AZ::GetGenericClassUnorderedSetTypeId() + ) + { + return true; + } + } + + return false; + } + + + bool IsMapContainerType(const AZ::Uuid& type) + { + AZ::SerializeContext* serializeContext = nullptr; + AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); + + if (serializeContext) + { + AZ::Uuid containerTypeId = type; + + if (GenericClassInfo* classInfo = serializeContext->FindGenericClassInfo(type)) + { + containerTypeId = classInfo->GetGenericTypeId(); + } + + if (containerTypeId == AZ::GetGenericClassMapTypeId() + || containerTypeId == AZ::GetGenericClassUnorderedMapTypeId() + ) + { + return true; + } + } + + return false; + } + + bool IsContainerType(const AZ::Uuid& type) + { + return IsVectorContainerType(type) || IsSetContainerType(type) || IsMapContainerType(type); + } + + AZStd::vector GetContainedTypes(const AZ::Uuid& type) + { + AZStd::vector types; + + AZ::SerializeContext* serializeContext = nullptr; + AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); + + if (serializeContext) + { + if (GenericClassInfo* classInfo = serializeContext->FindGenericClassInfo(type)) + { + for (int i = 0; i < classInfo->GetNumTemplatedArguments(); ++i) + { + types.push_back(classInfo->GetTemplatedTypeId(i)); + } + } + } + + return types; + } + + bool IsOutcomeType(const AZ::Uuid& type) + { + AZ::SerializeContext* serializeContext = nullptr; + AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); + + if (serializeContext) + { + GenericClassInfo* classInfo = serializeContext->FindGenericClassInfo(type); + return classInfo && classInfo->GetGenericTypeId() == AZ::GetGenericOutcomeTypeId(); + } + + return false; + } + + bool IsPairContainerType(const AZ::Uuid& type) + { + AZ::SerializeContext* serializeContext = nullptr; + AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); + + if (serializeContext) + { + AZ::Uuid containerTypeId = type; + + if (GenericClassInfo* classInfo = serializeContext->FindGenericClassInfo(type)) + { + containerTypeId = classInfo->GetGenericTypeId(); + } + + if (containerTypeId == AZ::GetGenericClassPairTypeId()) + { + return true; + } + } + + return false; + } + + AZ::TypeId GetGenericContainerType(const AZ::TypeId& type) + { + AZ::SerializeContext* serializeContext = nullptr; + AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); + + if (serializeContext) + { + if (GenericClassInfo* classInfo = serializeContext->FindGenericClassInfo(type)) + { + // This type is a container + return classInfo->GetGenericTypeId(); + } + } + + return azrtti_typeid(); + } + + bool IsGenericContainerType(const AZ::TypeId& type) + { + return IsContainerType(type) && GetGenericContainerType(type) == azrtti_typeid(); + } + + AZStd::pair GetOutcomeTypes(const AZ::Uuid& type) + { + AZStd::vector types; + + AZ::SerializeContext* serializeContext = nullptr; + AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); + + if (serializeContext) + { + if (GenericClassInfo* classInfo = serializeContext->FindGenericClassInfo(type)) + { + AZ_Assert(classInfo->GetNumTemplatedArguments() == 2, "Outcome template arguments must be 2, even if void, void"); + return AZStd::make_pair(classInfo->GetTemplatedTypeId(0), classInfo->GetTemplatedTypeId(1)); + } + } + + return AZStd::make_pair(azrtti_typeid(), azrtti_typeid()); + } + + void* ResolvePointer(void* ptr, const SerializeContext::ClassElement& classElement, const SerializeContext& context) + { + if (classElement.m_flags & SerializeContext::ClassElement::FLG_POINTER) + { + // In the case of pointer-to-pointer, we'll deference. + ptr = *(void**)(ptr); + + // Pointer-to-pointer fields may be base class / polymorphic, so cast pointer to actual type, + // safe for passing as 'this' to member functions. + if (ptr && classElement.m_azRtti) + { + Uuid actualClassId = classElement.m_azRtti->GetActualUuid(ptr); + if (actualClassId != classElement.m_typeId) + { + const SerializeContext::ClassData* classData = context.FindClassData(actualClassId); + if (classData) + { + ptr = classElement.m_azRtti->Cast(ptr, classData->m_azRtti->GetTypeId()); + } + } + } + } + + return ptr; + } + +} // namespace AZ::Utils diff --git a/Code/Framework/AzCore/AzCore/Serialization/SerializeContext.cpp b/Code/Framework/AzCore/AzCore/Serialization/SerializeContext.cpp index 81546f4f28..ff0ad571f7 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/SerializeContext.cpp +++ b/Code/Framework/AzCore/AzCore/Serialization/SerializeContext.cpp @@ -2065,11 +2065,15 @@ namespace AZ } EnumerateInstanceCallContext callContext( - AZStd::bind(&SerializeContext::BeginCloneElement, this, AZStd::placeholders::_1, AZStd::placeholders::_2, AZStd::placeholders::_3, &cloneData, &m_errorLogger, &scratchBuffer), - AZStd::bind(&SerializeContext::EndCloneElement, this, &cloneData), - this, - SerializeContext::ENUM_ACCESS_FOR_READ, - &m_errorLogger); + [&](void* ptr, const ClassData* classData, const ClassElement* elementData) -> bool + { + return BeginCloneElement(ptr, classData, elementData, &cloneData, &m_errorLogger, &scratchBuffer); + }, + [&]() -> bool + { + return EndCloneElement(&cloneData); + }, + this, SerializeContext::ENUM_ACCESS_FOR_READ, &m_errorLogger); EnumerateInstance( &callContext @@ -2098,19 +2102,17 @@ namespace AZ if (ptr) { EnumerateInstanceCallContext callContext( - AZStd::bind(&SerializeContext::BeginCloneElementInplace, this, dest, AZStd::placeholders::_1, AZStd::placeholders::_2, AZStd::placeholders::_3, &cloneData, &m_errorLogger, &scratchBuffer), - AZStd::bind(&SerializeContext::EndCloneElement, this, &cloneData), - this, - SerializeContext::ENUM_ACCESS_FOR_READ, - &m_errorLogger); + [&](void* ptr, const ClassData* classData, const ClassElement* elementData) -> bool + { + return BeginCloneElementInplace(dest, ptr, classData, elementData, &cloneData, &m_errorLogger, &scratchBuffer); + }, + [&]() -> bool + { + return EndCloneElement(&cloneData); + }, + this, SerializeContext::ENUM_ACCESS_FOR_READ, &m_errorLogger); - EnumerateInstance( - &callContext - , const_cast(ptr) - , classId - , nullptr - , nullptr - ); + EnumerateInstance(&callContext, const_cast(ptr), classId, nullptr, nullptr); } } @@ -2941,14 +2943,10 @@ namespace AZ { m_errorHandler = errorHandler ? errorHandler : &m_defaultErrorHandler; - m_elementCallback = AZStd::bind(static_cast(&SerializeContext::EnumerateInstance) - , m_context - , this - , AZStd::placeholders::_1 - , AZStd::placeholders::_2 - , AZStd::placeholders::_3 - , AZStd::placeholders::_4 - ); + m_elementCallback = [this](void* ptr, const Uuid& classId, const ClassData* classData, const ClassElement* classElement)->bool + { + return m_context->EnumerateInstance(this, ptr, classId, classData, classElement); + }; } //========================================================================= diff --git a/Code/Framework/AzCore/AzCore/Serialization/SerializeContext.h b/Code/Framework/AzCore/AzCore/Serialization/SerializeContext.h index a37780029e..bf96bcdb9a 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/SerializeContext.h +++ b/Code/Framework/AzCore/AzCore/Serialization/SerializeContext.h @@ -90,7 +90,7 @@ namespace AZ using AttributePtr = AZStd::shared_ptr; using AttributeSharedPair = AZStd::pair; - template + template > AttributePtr CreateModuleAttribute(T&& attrValue); /** @@ -540,6 +540,7 @@ namespace AZ */ struct ClassElement { + AZ_TYPE_INFO(ClassElement, "{7D386902-A1D9-4525-8284-F68435FE1D05}"); enum Flags { FLG_POINTER = (1 << 0), ///< Element is stored as pointer (it's not a value). @@ -563,22 +564,22 @@ namespace AZ void ClearAttributes(); Attribute* FindAttribute(AttributeId attributeId) const; - const char* m_name; ///< Used in XML output and debugging purposes - u32 m_nameCrc; ///< CRC32 of m_name - Uuid m_typeId; - size_t m_dataSize; - size_t m_offset; + const char* m_name{ "" }; ///< Used in XML output and debugging purposes + u32 m_nameCrc{}; ///< CRC32 of m_name + Uuid m_typeId = AZ::TypeId::CreateNull(); + size_t m_dataSize{}; + size_t m_offset{}; - IRttiHelper* m_azRtti; ///< Interface used to support RTTI. + IRttiHelper* m_azRtti{}; ///< Interface used to support RTTI. GenericClassInfo* m_genericClassInfo = nullptr; ///< Valid when the generic class is set. So you don't search for the actual type in the class register. - Edit::ElementData* m_editData; ///< Pointer to edit data (generated by EditContext). + Edit::ElementData* m_editData{}; ///< Pointer to edit data (generated by EditContext). AZStd::vector m_attributes{ AZStdFunctorAllocator([]() -> IAllocatorAllocate& { return AZ::AllocatorInstance::Get(); }) }; ///< Attributes attached to ClassElement. Lambda is required here as AZStdFunctorAllocator expects a function pointer ///< that returns an IAllocatorAllocate& and the AZ::AllocatorInstance::Get returns an AZ::SystemAllocator& /// which while it inherits from IAllocatorAllocate, does not work as function pointers do not support covariant return types AttributeOwnership m_attributeOwnership = AttributeOwnership::Parent; - int m_flags; ///< + int m_flags{}; ///< }; typedef AZStd::vector ClassElementArray; @@ -589,6 +590,8 @@ namespace AZ class ClassData { public: + AZ_TYPE_INFO(ClassData, "{20EB8E2E-D807-4039-84E2-CE37D7647CD4}"); + ClassData(); ~ClassData() { ClearAttributes(); } ClassData(ClassData&&) = default; @@ -1040,6 +1043,7 @@ namespace AZ */ struct EnumerateInstanceCallContext { + AZ_TYPE_INFO(EnumerateInstanceCallContext, "{FCC1DB4B-72BD-4D78-9C23-C84B91589D33}"); EnumerateInstanceCallContext(const BeginElemEnumCB& beginElemCB, const EndElemEnumCB& endElemCB, const SerializeContext* context, unsigned int accessflags, ErrorHandler* errorHandler); BeginElemEnumCB m_beginElemCB; ///< Optional callback when entering an element's hierarchy. @@ -2539,7 +2543,7 @@ namespace AZ /// associated with current module /// @param attrValue value to store within the attribute /// @param ContainerType second parameter which is used for function parameter deduction - template + template AttributePtr CreateModuleAttribute(T&& attrValue) { IAllocatorAllocate& moduleAllocator = GetCurrentSerializeContextModule().GetAllocator(); diff --git a/Code/Framework/AzCore/AzCore/Serialization/std/VariantReflection.inl b/Code/Framework/AzCore/AzCore/Serialization/std/VariantReflection.inl index 70972bb846..06d4f76c80 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/std/VariantReflection.inl +++ b/Code/Framework/AzCore/AzCore/Serialization/std/VariantReflection.inl @@ -433,9 +433,7 @@ namespace AZ m_classData.m_attributes.set_allocator(AZStd::move(dllAllocator)); // Create the ObjectStreamWriteOverrideCB in the current module - using ContainerType = AttributeData>; - m_classData.m_attributes.emplace_back(AZ_CRC("ObjectStreamWriteElementOverride", 0x35eb659f), CreateModuleAttribute(&ObjectStreamWriter)); + m_classData.m_attributes.emplace_back(AZ_CRC("ObjectStreamWriteElementOverride", 0x35eb659f), CreateModuleAttribute(&ObjectStreamWriter)); } SerializeContext::ClassData* GetClassData() override diff --git a/Code/Framework/AzCore/AzCore/Settings/SettingsRegistryImpl.cpp b/Code/Framework/AzCore/AzCore/Settings/SettingsRegistryImpl.cpp index cbf25c29d4..43c8a64b93 100644 --- a/Code/Framework/AzCore/AzCore/Settings/SettingsRegistryImpl.cpp +++ b/Code/Framework/AzCore/AzCore/Settings/SettingsRegistryImpl.cpp @@ -327,7 +327,7 @@ namespace AZ while (!localNotifierQueue.empty()) { - for (SignalNotifierArgs notifierArgs : localNotifierQueue) + for (const SignalNotifierArgs& notifierArgs : localNotifierQueue) { localNotifierEvent.Signal(notifierArgs.m_jsonPath, notifierArgs.m_type); } diff --git a/Code/Framework/AzCore/AzCore/Settings/SettingsRegistryMergeUtils.cpp b/Code/Framework/AzCore/AzCore/Settings/SettingsRegistryMergeUtils.cpp index 3668ab14fd..975217a131 100644 --- a/Code/Framework/AzCore/AzCore/Settings/SettingsRegistryMergeUtils.cpp +++ b/Code/Framework/AzCore/AzCore/Settings/SettingsRegistryMergeUtils.cpp @@ -266,7 +266,8 @@ namespace AZ::SettingsRegistryMergeUtils // Step 3 locate the project root and attempt to find the engine root using the registered engine // for the project in the project.json file - AZ::IO::FixedMaxPath projectRoot = FindProjectRoot(settingsRegistry); + AZ::IO::FixedMaxPath projectRoot; + settingsRegistry.Get(projectRoot.Native(), FilePathKey_ProjectPath); if (projectRoot.empty()) { return {}; @@ -668,7 +669,7 @@ namespace AZ::SettingsRegistryMergeUtils // NOTE: We make the project-path in the BootstrapSettingsRootKey absolute first AZ::IO::FixedMaxPath projectPath = FindProjectRoot(registry); - if (constexpr auto projectPathKey = FixedValueString(BootstrapSettingsRootKey) + "/project_path"; + if ([[maybe_unused]] constexpr auto projectPathKey = FixedValueString(BootstrapSettingsRootKey) + "/project_path"; !projectPath.empty()) { if (projectPath.IsRelative()) @@ -693,6 +694,7 @@ namespace AZ::SettingsRegistryMergeUtils R"(Project path isn't set in the Settings Registry at "%.*s".)" " Project-related filepaths will be set relative to the executable directory\n", AZ_STRING_ARG(projectPathKey)); + projectPath = exePath; registry.Set(FilePathKey_ProjectPath, exePath.Native()); } diff --git a/Code/Framework/AzCore/AzCore/Slice/SliceComponent.cpp b/Code/Framework/AzCore/AzCore/Slice/SliceComponent.cpp index 0b410369f0..ca89e95162 100644 --- a/Code/Framework/AzCore/AzCore/Slice/SliceComponent.cpp +++ b/Code/Framework/AzCore/AzCore/Slice/SliceComponent.cpp @@ -840,7 +840,7 @@ namespace AZ } SliceComponent::SliceInstance* SliceComponent::SliceReference::CreateInstanceFromExistingEntities(AZStd::vector& entities, - const EntityIdToEntityIdMap assetToLiveIdMap, + const EntityIdToEntityIdMap& assetToLiveIdMap, SliceInstanceId sliceInstanceId) { AZ_PROFILE_FUNCTION(AzCore); diff --git a/Code/Framework/AzCore/AzCore/Slice/SliceComponent.h b/Code/Framework/AzCore/AzCore/Slice/SliceComponent.h index 7a66167a96..ae4ec155c7 100644 --- a/Code/Framework/AzCore/AzCore/Slice/SliceComponent.h +++ b/Code/Framework/AzCore/AzCore/Slice/SliceComponent.h @@ -443,7 +443,7 @@ namespace AZ * @return A pointer to the newly created slice instance. Returns nullptr on error or if the SliceComponent is not instantiated. */ SliceInstance* CreateInstanceFromExistingEntities(AZStd::vector& entities, - const EntityIdToEntityIdMap assetToLiveIdMap, + const EntityIdToEntityIdMap& assetToLiveIdMap, SliceInstanceId sliceInstanceId = SliceInstanceId::CreateRandom()); /** diff --git a/Code/Framework/AzCore/AzCore/Socket/AzSocket.cpp b/Code/Framework/AzCore/AzCore/Socket/AzSocket.cpp index f15c288ad8..71c0aeea6d 100644 --- a/Code/Framework/AzCore/AzCore/Socket/AzSocket.cpp +++ b/Code/Framework/AzCore/AzCore/Socket/AzSocket.cpp @@ -8,77 +8,74 @@ #include -namespace AZ +namespace AZ::AzSock { - namespace AzSock + AzSocketAddress::AzSocketAddress() { - AzSocketAddress::AzSocketAddress() - { - Reset(); - } - - AzSocketAddress& AzSocketAddress::operator=(const AZSOCKADDR& addr) - { - m_sockAddr = *reinterpret_cast(&addr); - return *this; - } - - bool AzSocketAddress::operator==(const AzSocketAddress& rhs) const - { - return m_sockAddr.sin_family == rhs.m_sockAddr.sin_family - && m_sockAddr.sin_addr.s_addr == rhs.m_sockAddr.sin_addr.s_addr - && m_sockAddr.sin_port == rhs.m_sockAddr.sin_port; - } - - const AZSOCKADDR* AzSocketAddress::GetTargetAddress() const - { - return reinterpret_cast(&m_sockAddr); - } - - AZStd::string AzSocketAddress::GetIP() const - { - char ip[INET_ADDRSTRLEN]; - inet_ntop(AF_INET, const_cast(&m_sockAddr.sin_addr), ip, AZ_ARRAY_SIZE(ip)); - return AZStd::string(ip); - } - - AZStd::string AzSocketAddress::GetAddress() const - { - char ip[INET_ADDRSTRLEN]; - inet_ntop(AF_INET, const_cast(&m_sockAddr.sin_addr), ip, AZ_ARRAY_SIZE(ip)); - return AZStd::string::format("%s:%d", ip, AZ::AzSock::NetToHostShort(m_sockAddr.sin_port)); - } - - AZ::u16 AzSocketAddress::GetAddrPort() const - { - return AZ::AzSock::NetToHostShort(m_sockAddr.sin_port); - } - - void AzSocketAddress::SetAddrPort(AZ::u16 port) - { - m_sockAddr.sin_port = AZ::AzSock::HostToNetShort(port); - } - - bool AzSocketAddress::SetAddress(const AZStd::string& ip, AZ::u16 port) - { - AZ_Assert(!ip.empty(), "Invalid address string!"); - Reset(); - return AZ::AzSock::ResolveAddress(ip, port, m_sockAddr); - } - - bool AzSocketAddress::SetAddress(AZ::u32 ip, AZ::u16 port) - { - Reset(); - m_sockAddr.sin_addr.s_addr = AZ::AzSock::HostToNetLong(ip); - m_sockAddr.sin_port = AZ::AzSock::HostToNetShort(port); - return true; - } - - void AzSocketAddress::Reset() - { - memset(&m_sockAddr, 0, sizeof(m_sockAddr)); - m_sockAddr.sin_family = AF_INET; - m_sockAddr.sin_addr.s_addr = INADDR_ANY; - } + Reset(); } -} + + AzSocketAddress& AzSocketAddress::operator=(const AZSOCKADDR& addr) + { + m_sockAddr = *reinterpret_cast(&addr); + return *this; + } + + bool AzSocketAddress::operator==(const AzSocketAddress& rhs) const + { + return m_sockAddr.sin_family == rhs.m_sockAddr.sin_family + && m_sockAddr.sin_addr.s_addr == rhs.m_sockAddr.sin_addr.s_addr + && m_sockAddr.sin_port == rhs.m_sockAddr.sin_port; + } + + const AZSOCKADDR* AzSocketAddress::GetTargetAddress() const + { + return reinterpret_cast(&m_sockAddr); + } + + AZStd::string AzSocketAddress::GetIP() const + { + char ip[INET_ADDRSTRLEN]; + inet_ntop(AF_INET, const_cast(&m_sockAddr.sin_addr), ip, AZ_ARRAY_SIZE(ip)); + return AZStd::string(ip); + } + + AZStd::string AzSocketAddress::GetAddress() const + { + char ip[INET_ADDRSTRLEN]; + inet_ntop(AF_INET, const_cast(&m_sockAddr.sin_addr), ip, AZ_ARRAY_SIZE(ip)); + return AZStd::string::format("%s:%d", ip, AZ::AzSock::NetToHostShort(m_sockAddr.sin_port)); + } + + AZ::u16 AzSocketAddress::GetAddrPort() const + { + return AZ::AzSock::NetToHostShort(m_sockAddr.sin_port); + } + + void AzSocketAddress::SetAddrPort(AZ::u16 port) + { + m_sockAddr.sin_port = AZ::AzSock::HostToNetShort(port); + } + + bool AzSocketAddress::SetAddress(const AZStd::string& ip, AZ::u16 port) + { + AZ_Assert(!ip.empty(), "Invalid address string!"); + Reset(); + return AZ::AzSock::ResolveAddress(ip, port, m_sockAddr); + } + + bool AzSocketAddress::SetAddress(AZ::u32 ip, AZ::u16 port) + { + Reset(); + m_sockAddr.sin_addr.s_addr = AZ::AzSock::HostToNetLong(ip); + m_sockAddr.sin_port = AZ::AzSock::HostToNetShort(port); + return true; + } + + void AzSocketAddress::Reset() + { + memset(&m_sockAddr, 0, sizeof(m_sockAddr)); + m_sockAddr.sin_family = AF_INET; + m_sockAddr.sin_addr.s_addr = INADDR_ANY; + } +} // namespace AZ::AzSock diff --git a/Code/Framework/AzCore/AzCore/Statistics/RunningStatistic.cpp b/Code/Framework/AzCore/AzCore/Statistics/RunningStatistic.cpp index 47f85c8309..3093d38a10 100644 --- a/Code/Framework/AzCore/AzCore/Statistics/RunningStatistic.cpp +++ b/Code/Framework/AzCore/AzCore/Statistics/RunningStatistic.cpp @@ -10,66 +10,63 @@ #include "RunningStatistic.h" -namespace AZ +namespace AZ::Statistics { - namespace Statistics + void RunningStatistic::Reset() { - void RunningStatistic::Reset() + m_numSamples = 0; + m_mostRecentSample = 0.0; + m_minimum = 0.0; + m_maximum = 0.0; + m_sum = 0.0; + m_average = 0.0; + m_varianceTracking = 0.0; + } + + void RunningStatistic::PushSample(double value) + { + m_numSamples++; + m_mostRecentSample = value; + m_sum += value; + + if (m_numSamples == 1) { - m_numSamples = 0; - m_mostRecentSample = 0.0; - m_minimum = 0.0; - m_maximum = 0.0; - m_sum = 0.0; - m_average = 0.0; - m_varianceTracking = 0.0; + m_minimum = value; + m_maximum = value; + m_average = value; + return; } - void RunningStatistic::PushSample(double value) + if (value < m_minimum) { - m_numSamples++; - m_mostRecentSample = value; - m_sum += value; - - if (m_numSamples == 1) - { - m_minimum = value; - m_maximum = value; - m_average = value; - return; - } - - if (value < m_minimum) - { - m_minimum = value; - } - else if (value > m_maximum) - { - m_maximum = value; - } - - //See header notes and references to understand this way of calculating - //running average & variance. - const double newAverage = m_average + (value - m_average) / m_numSamples; - m_varianceTracking = m_varianceTracking + (value - m_average)*(value - newAverage); - - m_average = newAverage; + m_minimum = value; + } + else if (value > m_maximum) + { + m_maximum = value; } - double RunningStatistic::GetVariance(VarianceType varianceType) const - { - if (m_numSamples > 1) - { - const AZ::u64 varianceDivisor = (varianceType == VarianceType::S) ? m_numSamples - 1 : m_numSamples; - return m_varianceTracking / varianceDivisor; - } - return 0.0; - } + //See header notes and references to understand this way of calculating + //running average & variance. + const double newAverage = m_average + (value - m_average) / m_numSamples; + m_varianceTracking = m_varianceTracking + (value - m_average)*(value - newAverage); - double RunningStatistic::GetStdev(VarianceType varianceType) const + m_average = newAverage; + } + + double RunningStatistic::GetVariance(VarianceType varianceType) const + { + if (m_numSamples > 1) { - return sqrt(GetVariance(varianceType)); + const AZ::u64 varianceDivisor = (varianceType == VarianceType::S) ? m_numSamples - 1 : m_numSamples; + return m_varianceTracking / varianceDivisor; } - - }//namespace Statistics -}//namespace AZ + return 0.0; + } + + double RunningStatistic::GetStdev(VarianceType varianceType) const + { + return sqrt(GetVariance(varianceType)); + } + +} // namespace AZ::Statistics diff --git a/Code/Framework/AzCore/AzCore/Statistics/StatisticalProfilerProxySystemComponent.cpp b/Code/Framework/AzCore/AzCore/Statistics/StatisticalProfilerProxySystemComponent.cpp index 00bb97b745..ef87307624 100644 --- a/Code/Framework/AzCore/AzCore/Statistics/StatisticalProfilerProxySystemComponent.cpp +++ b/Code/Framework/AzCore/AzCore/Statistics/StatisticalProfilerProxySystemComponent.cpp @@ -12,55 +12,52 @@ #include "StatisticalProfilerProxySystemComponent.h" //////////////////////////////////////////////////////////////////////////////////////////////////// -namespace AZ +namespace AZ::Statistics { - namespace Statistics + StatisticalProfilerProxy* StatisticalProfilerProxy::TimedScope::m_profilerProxy = nullptr; + + //////////////////////////////////////////////////////////////////////////////////////////////// + void StatisticalProfilerProxySystemComponent::Reflect(AZ::ReflectContext* context) { - StatisticalProfilerProxy* StatisticalProfilerProxy::TimedScope::m_profilerProxy = nullptr; - - //////////////////////////////////////////////////////////////////////////////////////////////// - void StatisticalProfilerProxySystemComponent::Reflect(AZ::ReflectContext* context) + if (AZ::SerializeContext* serializeContext = azrtti_cast(context)) { - if (AZ::SerializeContext* serializeContext = azrtti_cast(context)) - { - serializeContext->Class() - ->Version(1); - } + serializeContext->Class() + ->Version(1); } + } - //////////////////////////////////////////////////////////////////////////////////////////////// - void StatisticalProfilerProxySystemComponent::GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided) - { - provided.push_back(AZ_CRC("StatisticalProfilerService", 0x20066f73)); - } + //////////////////////////////////////////////////////////////////////////////////////////////// + void StatisticalProfilerProxySystemComponent::GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided) + { + provided.push_back(AZ_CRC("StatisticalProfilerService", 0x20066f73)); + } - //////////////////////////////////////////////////////////////////////////////////////////////// - void StatisticalProfilerProxySystemComponent::GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible) - { - incompatible.push_back(AZ_CRC("StatisticalProfilerService", 0x20066f73)); - } + //////////////////////////////////////////////////////////////////////////////////////////////// + void StatisticalProfilerProxySystemComponent::GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible) + { + incompatible.push_back(AZ_CRC("StatisticalProfilerService", 0x20066f73)); + } - //////////////////////////////////////////////////////////////////////////////////////////////// - StatisticalProfilerProxySystemComponent::StatisticalProfilerProxySystemComponent() - : m_StatisticalProfilerProxy(nullptr) - { - } + //////////////////////////////////////////////////////////////////////////////////////////////// + StatisticalProfilerProxySystemComponent::StatisticalProfilerProxySystemComponent() + : m_StatisticalProfilerProxy(nullptr) + { + } - //////////////////////////////////////////////////////////////////////////////////////////////// - StatisticalProfilerProxySystemComponent::~StatisticalProfilerProxySystemComponent() - { - } + //////////////////////////////////////////////////////////////////////////////////////////////// + StatisticalProfilerProxySystemComponent::~StatisticalProfilerProxySystemComponent() + { + } - //////////////////////////////////////////////////////////////////////////////////////////////// - void StatisticalProfilerProxySystemComponent::Activate() - { - m_StatisticalProfilerProxy = new StatisticalProfilerProxy; - } + //////////////////////////////////////////////////////////////////////////////////////////////// + void StatisticalProfilerProxySystemComponent::Activate() + { + m_StatisticalProfilerProxy = new StatisticalProfilerProxy; + } - //////////////////////////////////////////////////////////////////////////////////////////////// - void StatisticalProfilerProxySystemComponent::Deactivate() - { - delete m_StatisticalProfilerProxy; - } - } //namespace Statistics -} // namespace AZ + //////////////////////////////////////////////////////////////////////////////////////////////// + void StatisticalProfilerProxySystemComponent::Deactivate() + { + delete m_StatisticalProfilerProxy; + } +} // namespace AZ::Statistics diff --git a/Code/Framework/AzCore/AzCore/StringFunc/StringFunc.cpp b/Code/Framework/AzCore/AzCore/StringFunc/StringFunc.cpp index ff30291a70..8405424f7d 100644 --- a/Code/Framework/AzCore/AzCore/StringFunc/StringFunc.cpp +++ b/Code/Framework/AzCore/AzCore/StringFunc/StringFunc.cpp @@ -416,2147 +416,2155 @@ namespace AZ::StringFunc::Internal } -namespace AZ +namespace AZ::StringFunc { - namespace StringFunc + AZStd::string_view LStrip(AZStd::string_view in, AZStd::string_view stripCharacters) { - AZStd::string_view LStrip(AZStd::string_view in, AZStd::string_view stripCharacters) + if (size_t pos = in.find_first_not_of(stripCharacters); pos != AZStd::string_view::npos) { - if (size_t pos = in.find_first_not_of(stripCharacters); pos != AZStd::string_view::npos) - { - return in.substr(pos); - } + return in.substr(pos); + } - return {}; - }; + return {}; + }; - AZStd::string_view RStrip(AZStd::string_view in, AZStd::string_view stripCharacters) + AZStd::string_view RStrip(AZStd::string_view in, AZStd::string_view stripCharacters) + { + if (size_t pos = in.find_last_not_of(stripCharacters); pos != AZStd::string_view::npos) { - if (size_t pos = in.find_last_not_of(stripCharacters); pos != AZStd::string_view::npos) - { - return in.substr(0, pos < in.size() ? pos + 1 : pos); - } + return in.substr(0, pos < in.size() ? pos + 1 : pos); + } - return {}; - }; + return {}; + }; - AZStd::string_view StripEnds(AZStd::string_view in, AZStd::string_view stripCharacters) + AZStd::string_view StripEnds(AZStd::string_view in, AZStd::string_view stripCharacters) + { + return LStrip(RStrip(in, stripCharacters), stripCharacters); + }; + + bool Equal(const char* inA, const char* inB, bool bCaseSensitive /*= false*/, size_t n /*= 0*/) + { + if (!inA || !inB) { - return LStrip(RStrip(in, stripCharacters), stripCharacters); - }; + return false; + } - bool Equal(const char* inA, const char* inB, bool bCaseSensitive /*= false*/, size_t n /*= 0*/) + if (inA == inB) { - if (!inA || !inB) - { - return false; - } + return true; + } - if (inA == inB) + if (bCaseSensitive) + { + if (n) { - return true; - } - - if (bCaseSensitive) - { - if (n) - { - return !strncmp(inA, inB, n); - } - else - { - return !strcmp(inA, inB); - } + return !strncmp(inA, inB, n); } else { - if (n) - { - return !azstrnicmp(inA, inB, n); - } - else - { - return !azstricmp(inA, inB); - } + return !strcmp(inA, inB); } } - bool Equal(AZStd::string_view inA, AZStd::string_view inB, bool bCaseSensitive) + else { - const size_t maxCharsToCompare = inA.size(); - - return inA.size() == inB.size() && (bCaseSensitive - ? strncmp(inA.data(), inB.data(), maxCharsToCompare) == 0 - : azstrnicmp(inA.data(), inB.data(), maxCharsToCompare) == 0); - } - - bool StartsWith(AZStd::string_view sourceValue, AZStd::string_view prefixValue, bool bCaseSensitive) - { - return sourceValue.size() >= prefixValue.size() - && Equal(sourceValue.data(), prefixValue.data(), bCaseSensitive, prefixValue.size()); - } - - bool EndsWith(AZStd::string_view sourceValue, AZStd::string_view suffixValue, bool bCaseSensitive) - { - return sourceValue.size() >= suffixValue.size() - && Equal(sourceValue.substr(sourceValue.size() - suffixValue.size(), AZStd::string_view::npos).data(), suffixValue.data(), bCaseSensitive, suffixValue.size()); - } - - bool Contains(AZStd::string_view in, char ch, bool bCaseSensitive) - { - return Find(in, ch, 0, false, bCaseSensitive) != AZStd::string_view::npos; - } - bool Contains(AZStd::string_view in, AZStd::string_view sv, bool bCaseSensitive) - { - return Find(in, sv, 0, false, bCaseSensitive) != AZStd::string_view::npos; - } - - size_t Find(AZStd::string_view in, char c, size_t pos /*= 0*/, bool bReverse /*= false*/, bool bCaseSensitive /*= false*/) - { - if (in.empty()) + if (n) { - return AZStd::string::npos; + return !azstrnicmp(inA, inB, n); } - - if (pos == AZStd::string::npos) + else { - pos = 0; + return !azstricmp(inA, inB); } + } + } + bool Equal(AZStd::string_view inA, AZStd::string_view inB, bool bCaseSensitive) + { + const size_t maxCharsToCompare = inA.size(); - size_t inLen = in.size(); - if (inLen < pos) - { - return AZStd::string::npos; - } + return inA.size() == inB.size() && (bCaseSensitive + ? strncmp(inA.data(), inB.data(), maxCharsToCompare) == 0 + : azstrnicmp(inA.data(), inB.data(), maxCharsToCompare) == 0); + } + bool StartsWith(AZStd::string_view sourceValue, AZStd::string_view prefixValue, bool bCaseSensitive) + { + return sourceValue.size() >= prefixValue.size() + && Equal(sourceValue.data(), prefixValue.data(), bCaseSensitive, prefixValue.size()); + } + + bool EndsWith(AZStd::string_view sourceValue, AZStd::string_view suffixValue, bool bCaseSensitive) + { + return sourceValue.size() >= suffixValue.size() + && Equal(sourceValue.substr(sourceValue.size() - suffixValue.size(), AZStd::string_view::npos).data(), suffixValue.data(), bCaseSensitive, suffixValue.size()); + } + + bool Contains(AZStd::string_view in, char ch, bool bCaseSensitive) + { + return Find(in, ch, 0, false, bCaseSensitive) != AZStd::string_view::npos; + } + bool Contains(AZStd::string_view in, AZStd::string_view sv, bool bCaseSensitive) + { + return Find(in, sv, 0, false, bCaseSensitive) != AZStd::string_view::npos; + } + + size_t Find(AZStd::string_view in, char c, size_t pos /*= 0*/, bool bReverse /*= false*/, bool bCaseSensitive /*= false*/) + { + if (in.empty()) + { + return AZStd::string::npos; + } + + if (pos == AZStd::string::npos) + { + pos = 0; + } + + size_t inLen = in.size(); + if (inLen < pos) + { + return AZStd::string::npos; + } + + if (!bCaseSensitive) + { + c = (char)tolower(c); + } + + if (bReverse) + { + pos = inLen - pos - 1; + } + + char character; + + do + { if (!bCaseSensitive) { - c = (char)tolower(c); + character = (char)tolower(in[pos]); + } + else + { + character = in[pos]; + } + + if (character == c) + { + return pos; } if (bReverse) { - pos = inLen - pos - 1; + pos = pos > 0 ? pos-1 : pos; } - - char character; - - do + else { - if (!bCaseSensitive) - { - character = (char)tolower(in[pos]); - } - else - { - character = in[pos]; - } + pos++; + } + } while (bReverse ? pos : character != '\0'); - if (character == c) - { - return pos; - } + return AZStd::string::npos; + } - if (bReverse) - { - pos = pos > 0 ? pos-1 : pos; - } - else - { - pos++; - } - } while (bReverse ? pos : character != '\0'); + size_t Find(AZStd::string_view in, AZStd::string_view s, size_t offset /*= 0*/, bool bReverse /*= false*/, bool bCaseSensitive /*= false*/) + { + // Formally an empty string matches at the offset if it is <= to the size of the input string + if (s.empty() && offset <= in.size()) + { + return offset; + } + if (in.empty()) + { return AZStd::string::npos; } - size_t Find(AZStd::string_view in, AZStd::string_view s, size_t offset /*= 0*/, bool bReverse /*= false*/, bool bCaseSensitive /*= false*/) + const size_t inlen = in.size(); + const size_t slen = s.size(); + + if (offset == AZStd::string::npos) { - // Formally an empty string matches at the offset if it is <= to the size of the input string - if (s.empty() && offset <= in.size()) + offset = 0; + } + + if (offset + slen > inlen) + { + return AZStd::string::npos; + } + + const char* pCur; + + if (bReverse) + { + // Start at the end (- pos) + pCur = in.data() + inlen - slen - offset; + } + else + { + // Start at the beginning (+ pos) + pCur = in.data() + offset; + } + + do + { + if (bCaseSensitive) { - return offset; + if (!strncmp(pCur, s.data(), slen)) + { + return static_cast(pCur - in.data()); + } } - - if (in.empty()) + else { - return AZStd::string::npos; + if (!azstrnicmp(pCur, s.data(), slen)) + { + return static_cast(pCur - in.data()); + } } - const size_t inlen = in.size(); - const size_t slen = s.size(); - - if (offset == AZStd::string::npos) - { - offset = 0; - } - - if (offset + slen > inlen) - { - return AZStd::string::npos; - } - - const char* pCur; - if (bReverse) { - // Start at the end (- pos) - pCur = in.data() + inlen - slen - offset; + pCur--; } else { - // Start at the beginning (+ pos) - pCur = in.data() + offset; + pCur++; + } + } while (bReverse ? pCur >= in.data() : pCur - in.data() <= static_cast(inlen)); + + return AZStd::string::npos; + } + + char FirstCharacter(const char* in) + { + if (!in) + { + return '\0'; + } + if (in[0] == '\n') + { + return '\0'; + } + return in[0]; + } + + char LastCharacter(const char* in) + { + if (!in) + { + return '\0'; + } + size_t len = strlen(in); + if (!len) + { + return '\0'; + } + return in[len - 1]; + } + + AZStd::string& Append(AZStd::string& inout, const char s) + { + return inout.append(1, s); + } + + AZStd::string& Append(AZStd::string& inout, const char* str) + { + if (!str) + { + return inout; + } + return inout.append(str); + } + + AZStd::string& Prepend(AZStd::string& inout, const char s) + { + return inout.insert((size_t)0, 1, s); + } + + AZStd::string& Prepend(AZStd::string& inout, const char* str) + { + if (!str) + { + return inout; + } + return inout.insert(0, str); + } + + AZStd::string& LChop(AZStd::string& inout, size_t num) + { + return Internal::LChop(inout, num); + } + + AZStd::string_view LChop(AZStd::string_view in, size_t num) + { + return Internal::LChop(in, num); + } + + AZStd::string& RChop(AZStd::string& inout, size_t num) + { + return Internal::RChop(inout, num); + } + + AZStd::string_view RChop(AZStd::string_view in, size_t num) + { + return Internal::RChop(in, num); + } + + AZStd::string& LKeep(AZStd::string& inout, size_t pos, bool bKeepPosCharacter) + { + return Internal::LKeep(inout, pos, bKeepPosCharacter); + } + + AZStd::string& RKeep(AZStd::string& inout, size_t pos, bool bKeepPosCharacter) + { + return Internal::RKeep(inout, pos, bKeepPosCharacter); + } + + bool Replace(AZStd::string& inout, const char replaceA, const char withB, bool bCaseSensitive, bool bReplaceFirst, bool bReplaceLast) + { + return Internal::Replace(inout, replaceA, withB, bCaseSensitive, bReplaceFirst, bReplaceLast); + } + + bool Replace(AZStd::string& inout, const char* replaceA, const char* withB, bool bCaseSensitive, bool bReplaceFirst, bool bReplaceLast) + { + return Internal::Replace(inout, replaceA, withB, bCaseSensitive, bReplaceFirst, bReplaceLast); + } + + bool Strip(AZStd::string& inout, const char stripCharacter, bool bCaseSensitive, bool bStripBeginning, bool bStripEnding) + { + return Internal::Strip(inout, stripCharacter, bCaseSensitive, bStripBeginning, bStripEnding); + } + + bool Strip(AZStd::string& inout, const char* stripCharacters, bool bCaseSensitive, bool bStripBeginning, bool bStripEnding) + { + return Internal::Strip(inout, stripCharacters, bCaseSensitive, bStripBeginning, bStripEnding); + } + + AZStd::string& TrimWhiteSpace(AZStd::string& value, bool leading, bool trailing) + { + static const char* trimmable = " \t\r\n"; + if (value.length() > 0) + { + if (leading) + { + value.erase(0, value.find_first_not_of(trimmable)); + } + if (trailing) + { + value.erase(value.find_last_not_of(trimmable) + 1); + } + } + return value; + } + + void Tokenize(AZStd::string_view in, AZStd::vector& tokens, const char delimiter, bool keepEmptyStrings, bool keepSpaceStrings) + { + return Tokenize(in, tokens, { &delimiter, 1 }, keepEmptyStrings, keepSpaceStrings); + } + + void Tokenize(AZStd::string_view in, AZStd::vector& tokens, AZStd::string_view delimiters, bool keepEmptyStrings, bool keepSpaceStrings) + { + auto insertVisitor = [&tokens](AZStd::string_view token) + { + tokens.push_back(token); + }; + return TokenizeVisitor(in, insertVisitor, delimiters, keepEmptyStrings, keepSpaceStrings); + } + + void TokenizeVisitor(AZStd::string_view in, const TokenVisitor& tokenVisitor, const char delimiter, bool keepEmptyStrings, bool keepSpaceStrings) + { + return TokenizeVisitor(in, tokenVisitor, { &delimiter, 1 }, keepEmptyStrings, keepSpaceStrings); + } + + void TokenizeVisitor(AZStd::string_view in, const TokenVisitor& tokenVisitor, AZStd::string_view delimiters, + bool keepEmptyStrings, bool keepSpaceStrings) + { + if (delimiters.empty() || in.empty()) + { + return; + } + + while (AZStd::optional nextToken = TokenizeNext(in, delimiters)) + { + bool bIsEmpty = nextToken->empty(); + bool bIsSpaces = false; + if (!bIsEmpty) + { + AZStd::string_view strippedNextToken = StripEnds(*nextToken, " "); + bIsSpaces = strippedNextToken.empty(); } - do + if ((bIsEmpty && keepEmptyStrings) || + (bIsSpaces && keepSpaceStrings) || + (!bIsSpaces && !bIsEmpty)) { - if (bCaseSensitive) + tokenVisitor(*nextToken); + } + } + } + + void TokenizeVisitorReverse(AZStd::string_view in, const TokenVisitor& tokenVisitor, const char delimiter, bool keepEmptyStrings, bool keepSpaceStrings) + { + return TokenizeVisitorReverse(in, tokenVisitor, { &delimiter, 1 }, keepEmptyStrings, keepSpaceStrings); + } + + void TokenizeVisitorReverse(AZStd::string_view in, const TokenVisitor& tokenVisitor, AZStd::string_view delimiters, + bool keepEmptyStrings, bool keepSpaceStrings) + { + if (delimiters.empty() || in.empty()) + { + return; + } + + while (AZStd::optional nextToken = TokenizeLast(in, delimiters)) + { + bool bIsEmpty = nextToken->empty(); + bool bIsSpaces = false; + if (!bIsEmpty) + { + AZStd::string_view strippedNextToken = StripEnds(*nextToken, " "); + bIsSpaces = strippedNextToken.empty(); + } + + if ((bIsEmpty && keepEmptyStrings) || + (bIsSpaces && keepSpaceStrings) || + (!bIsSpaces && !bIsEmpty)) + { + tokenVisitor(*nextToken); + } + } + } + + AZStd::optional TokenizeNext(AZStd::string_view& inout, const char delimiter) + { + return TokenizeNext(inout, { &delimiter, 1 }); + } + AZStd::optional TokenizeNext(AZStd::string_view& inout, AZStd::string_view delimiters) + { + if (delimiters.empty() || inout.empty()) + { + return AZStd::nullopt; + } + + AZStd::string_view resultToken; + if (size_t pos = inout.find_first_of(delimiters); pos == AZStd::string_view::npos) + { + // The delimiter has not been found, a new view containing the entire + // string will be returned and the input parameter will be set to empty + resultToken.swap(inout); + } + else + { + resultToken = { inout.data(), pos }; + // Strip off all previous characters before the delimiter plus + // the delimiter itself from the input view + inout.remove_prefix(pos + 1); + } + + return resultToken; + } + + AZStd::optional TokenizeLast(AZStd::string_view& inout, const char delimiter) + { + return TokenizeLast(inout, { &delimiter, 1 }); + } + AZStd::optional TokenizeLast(AZStd::string_view& inout, AZStd::string_view delimiters) + { + if (delimiters.empty() || inout.empty()) + { + return AZStd::nullopt; + } + + AZStd::string_view resultToken; + if (size_t pos = inout.find_last_of(delimiters); pos == AZStd::string_view::npos) + { + // The delimiter has not been found, a new view containing the entire + // string will be returned and the input parameter will be set to empty + resultToken.swap(inout); + } + else + { + resultToken = inout.substr(pos + 1); + // Strip off all previous characters before the delimiter plus + // the delimiter itself from the input view + inout = inout.substr(0, pos); + } + + return resultToken; + } + + bool FindFirstOf(AZStd::string_view inString, size_t offset, const AZStd::vector& searchStrings, uint32_t& outIndex, size_t& outOffset) + { + bool found = false; + + outIndex = 0; + outOffset = AZStd::string::npos; + for (int32_t i = 0; i < searchStrings.size(); ++i) + { + const AZStd::string& search = searchStrings[i]; + + size_t entry = inString.find(search, offset); + if (entry != AZStd::string::npos) + { + if (!found || (entry < outOffset)) { - if (!strncmp(pCur, s.data(), slen)) - { - return static_cast(pCur - in.data()); - } - } - else - { - if (!azstrnicmp(pCur, s.data(), slen)) - { - return static_cast(pCur - in.data()); - } - } - - if (bReverse) - { - pCur--; - } - else - { - pCur++; - } - } while (bReverse ? pCur >= in.data() : pCur - in.data() <= static_cast(inlen)); - - return AZStd::string::npos; - } - - char FirstCharacter(const char* in) - { - if (!in) - { - return '\0'; - } - if (in[0] == '\n') - { - return '\0'; - } - return in[0]; - } - - char LastCharacter(const char* in) - { - if (!in) - { - return '\0'; - } - size_t len = strlen(in); - if (!len) - { - return '\0'; - } - return in[len - 1]; - } - - AZStd::string& Append(AZStd::string& inout, const char s) - { - return inout.append(1, s); - } - - AZStd::string& Append(AZStd::string& inout, const char* str) - { - if (!str) - { - return inout; - } - return inout.append(str); - } - - AZStd::string& Prepend(AZStd::string& inout, const char s) - { - return inout.insert((size_t)0, 1, s); - } - - AZStd::string& Prepend(AZStd::string& inout, const char* str) - { - if (!str) - { - return inout; - } - return inout.insert(0, str); - } - - AZStd::string& LChop(AZStd::string& inout, size_t num) - { - return Internal::LChop(inout, num); - } - - AZStd::string_view LChop(AZStd::string_view in, size_t num) - { - return Internal::LChop(in, num); - } - - AZStd::string& RChop(AZStd::string& inout, size_t num) - { - return Internal::RChop(inout, num); - } - - AZStd::string_view RChop(AZStd::string_view in, size_t num) - { - return Internal::RChop(in, num); - } - - AZStd::string& LKeep(AZStd::string& inout, size_t pos, bool bKeepPosCharacter) - { - return Internal::LKeep(inout, pos, bKeepPosCharacter); - } - - AZStd::string& RKeep(AZStd::string& inout, size_t pos, bool bKeepPosCharacter) - { - return Internal::RKeep(inout, pos, bKeepPosCharacter); - } - - bool Replace(AZStd::string& inout, const char replaceA, const char withB, bool bCaseSensitive, bool bReplaceFirst, bool bReplaceLast) - { - return Internal::Replace(inout, replaceA, withB, bCaseSensitive, bReplaceFirst, bReplaceLast); - } - - bool Replace(AZStd::string& inout, const char* replaceA, const char* withB, bool bCaseSensitive, bool bReplaceFirst, bool bReplaceLast) - { - return Internal::Replace(inout, replaceA, withB, bCaseSensitive, bReplaceFirst, bReplaceLast); - } - - bool Strip(AZStd::string& inout, const char stripCharacter, bool bCaseSensitive, bool bStripBeginning, bool bStripEnding) - { - return Internal::Strip(inout, stripCharacter, bCaseSensitive, bStripBeginning, bStripEnding); - } - - bool Strip(AZStd::string& inout, const char* stripCharacters, bool bCaseSensitive, bool bStripBeginning, bool bStripEnding) - { - return Internal::Strip(inout, stripCharacters, bCaseSensitive, bStripBeginning, bStripEnding); - } - - AZStd::string& TrimWhiteSpace(AZStd::string& value, bool leading, bool trailing) - { - static const char* trimmable = " \t\r\n"; - if (value.length() > 0) - { - if (leading) - { - value.erase(0, value.find_first_not_of(trimmable)); - } - if (trailing) - { - value.erase(value.find_last_not_of(trimmable) + 1); - } - } - return value; - } - - void Tokenize(AZStd::string_view in, AZStd::vector& tokens, const char delimiter, bool keepEmptyStrings, bool keepSpaceStrings) - { - return Tokenize(in, tokens, { &delimiter, 1 }, keepEmptyStrings, keepSpaceStrings); - } - - void Tokenize(AZStd::string_view in, AZStd::vector& tokens, AZStd::string_view delimiters, bool keepEmptyStrings, bool keepSpaceStrings) - { - auto insertVisitor = [&tokens](AZStd::string_view token) - { - tokens.push_back(token); - }; - return TokenizeVisitor(in, insertVisitor, delimiters, keepEmptyStrings, keepSpaceStrings); - } - - void TokenizeVisitor(AZStd::string_view in, const TokenVisitor& tokenVisitor, const char delimiter, bool keepEmptyStrings, bool keepSpaceStrings) - { - return TokenizeVisitor(in, tokenVisitor, { &delimiter, 1 }, keepEmptyStrings, keepSpaceStrings); - } - - void TokenizeVisitor(AZStd::string_view in, const TokenVisitor& tokenVisitor, AZStd::string_view delimiters, - bool keepEmptyStrings, bool keepSpaceStrings) - { - if (delimiters.empty() || in.empty()) - { - return; - } - - while (AZStd::optional nextToken = TokenizeNext(in, delimiters)) - { - bool bIsEmpty = nextToken->empty(); - bool bIsSpaces = false; - if (!bIsEmpty) - { - AZStd::string_view strippedNextToken = StripEnds(*nextToken, " "); - bIsSpaces = strippedNextToken.empty(); - } - - if ((bIsEmpty && keepEmptyStrings) || - (bIsSpaces && keepSpaceStrings) || - (!bIsSpaces && !bIsEmpty)) - { - tokenVisitor(*nextToken); + found = true; + outIndex = i; + outOffset = entry; } } } - void TokenizeVisitorReverse(AZStd::string_view in, const TokenVisitor& tokenVisitor, const char delimiter, bool keepEmptyStrings, bool keepSpaceStrings) + return found; + } + + void Tokenize(AZStd::string_view input, AZStd::vector& tokens, const AZStd::vector& delimiters, bool keepEmptyStrings /*= false*/, bool keepSpaceStrings /*= false*/) + { + if (input.empty()) { - return TokenizeVisitorReverse(in, tokenVisitor, { &delimiter, 1 }, keepEmptyStrings, keepSpaceStrings); + return; } - void TokenizeVisitorReverse(AZStd::string_view in, const TokenVisitor& tokenVisitor, AZStd::string_view delimiters, - bool keepEmptyStrings, bool keepSpaceStrings) + size_t offset = 0; + for (;;) { - if (delimiters.empty() || in.empty()) + uint32_t nextMatch = 0; + size_t nextOffset = offset; + if (!FindFirstOf(input, offset, delimiters, nextMatch, nextOffset)) { - return; + // No more occurrences of a separator, consume whatever is left and exit + tokens.push_back(input.substr(offset)); + break; } - while (AZStd::optional nextToken = TokenizeLast(in, delimiters)) + // Take the substring, not including the separator, and increment our offset + AZStd::string nextSubstring = input.substr(offset, nextOffset - offset); + if (keepEmptyStrings || keepSpaceStrings || !nextSubstring.empty()) { - bool bIsEmpty = nextToken->empty(); - bool bIsSpaces = false; - if (!bIsEmpty) - { - AZStd::string_view strippedNextToken = StripEnds(*nextToken, " "); - bIsSpaces = strippedNextToken.empty(); - } - - if ((bIsEmpty && keepEmptyStrings) || - (bIsSpaces && keepSpaceStrings) || - (!bIsSpaces && !bIsEmpty)) - { - tokenVisitor(*nextToken); - } + tokens.push_back(nextSubstring); } + + offset = nextOffset + delimiters[nextMatch].size(); } + } - AZStd::optional TokenizeNext(AZStd::string_view& inout, const char delimiter) + int ToInt(const char* in) + { + if (!in) { - return TokenizeNext(inout, { &delimiter, 1 }); + return 0; } - AZStd::optional TokenizeNext(AZStd::string_view& inout, AZStd::string_view delimiters) + return atoi(in); + } + + bool LooksLikeInt(const char* in, int* pInt /*=nullptr*/) + { + if (!in) { - if (delimiters.empty() || inout.empty()) - { - return AZStd::nullopt; - } - - AZStd::string_view resultToken; - if (size_t pos = inout.find_first_of(delimiters); pos == AZStd::string_view::npos) - { - // The delimiter has not been found, a new view containing the entire - // string will be returned and the input parameter will be set to empty - resultToken.swap(inout); - } - else - { - resultToken = { inout.data(), pos }; - // Strip off all previous characters before the delimiter plus - // the delimiter itself from the input view - inout.remove_prefix(pos + 1); - } - - return resultToken; - } - - AZStd::optional TokenizeLast(AZStd::string_view& inout, const char delimiter) - { - return TokenizeLast(inout, { &delimiter, 1 }); - } - AZStd::optional TokenizeLast(AZStd::string_view& inout, AZStd::string_view delimiters) - { - if (delimiters.empty() || inout.empty()) - { - return AZStd::nullopt; - } - - AZStd::string_view resultToken; - if (size_t pos = inout.find_last_of(delimiters); pos == AZStd::string_view::npos) - { - // The delimiter has not been found, a new view containing the entire - // string will be returned and the input parameter will be set to empty - resultToken.swap(inout); - } - else - { - resultToken = inout.substr(pos + 1); - // Strip off all previous characters before the delimiter plus - // the delimiter itself from the input view - inout = inout.substr(0, pos); - } - - return resultToken; - } - - bool FindFirstOf(AZStd::string_view inString, size_t offset, const AZStd::vector& searchStrings, uint32_t& outIndex, size_t& outOffset) - { - bool found = false; - - outIndex = 0; - outOffset = AZStd::string::npos; - for (int32_t i = 0; i < searchStrings.size(); ++i) - { - const AZStd::string& search = searchStrings[i]; - - size_t entry = inString.find(search, offset); - if (entry != AZStd::string::npos) - { - if (!found || (entry < outOffset)) - { - found = true; - outIndex = i; - outOffset = entry; - } - } - } - - return found; - } - - void Tokenize(AZStd::string_view input, AZStd::vector& tokens, const AZStd::vector& delimiters, bool keepEmptyStrings /*= false*/, bool keepSpaceStrings /*= false*/) - { - if (input.empty()) - { - return; - } - - size_t offset = 0; - for (;;) - { - uint32_t nextMatch = 0; - size_t nextOffset = offset; - if (!FindFirstOf(input, offset, delimiters, nextMatch, nextOffset)) - { - // No more occurrences of a separator, consume whatever is left and exit - tokens.push_back(input.substr(offset)); - break; - } - - // Take the substring, not including the separator, and increment our offset - AZStd::string nextSubstring = input.substr(offset, nextOffset - offset); - if (keepEmptyStrings || keepSpaceStrings || !nextSubstring.empty()) - { - tokens.push_back(nextSubstring); - } - - offset = nextOffset + delimiters[nextMatch].size(); - } - } - - int ToInt(const char* in) - { - if (!in) - { - return 0; - } - return atoi(in); - } - - bool LooksLikeInt(const char* in, int* pInt /*=nullptr*/) - { - if (!in) - { - return false; - } - - //if pos is past then end of the string false - size_t len = strlen(in); - if (!len)//must at least 1 characters to work with "1" - { - return false; - } - - const char* pStr = in; - - size_t countNeg = 0; - while (*pStr != '\0' && - (isdigit(*pStr) || - *pStr == '-')) - { - if (*pStr == '-') - { - countNeg++; - } - pStr++; - } - - if (*pStr == '\0' && - countNeg < 2) - { - if (pInt) - { - *pInt = ToInt(in); - } - - return true; - } return false; } - double ToDouble(const char* in) + //if pos is past then end of the string false + size_t len = strlen(in); + if (!len)//must at least 1 characters to work with "1" { - if (!in) - { - return 0.; - } - return atof(in); - } - - bool LooksLikeDouble(const char* in, double* pDouble) - { - if (!in) - { - return false; - } - - size_t len = strlen(in); - if (len < 2)//must have at least 2 characters to work with "1." - { - return false; - } - - const char* pStr = in; - - size_t countDot = 0; - size_t countNeg = 0; - while (*pStr != '\0' && - (isdigit(*pStr) || - (*pStr == '-' || - *pStr == '.'))) - { - if (*pStr == '.') - { - countDot++; - } - if (*pStr == '-') - { - countNeg++; - } - pStr++; - } - - if (*pStr == '\0' && - countDot == 1 && - countNeg < 2) - { - if (pDouble) - { - *pDouble = ToDouble(in); - } - - return true; - } - return false; } - float ToFloat(const char* in) + const char* pStr = in; + + size_t countNeg = 0; + while (*pStr != '\0' && + (isdigit(*pStr) || + *pStr == '-')) { - if (!in) + if (*pStr == '-') { - return 0.f; + countNeg++; } - return (float)atof(in); + pStr++; } - bool LooksLikeFloat(const char* in, float* pFloat /* = nullptr */) + if (*pStr == '\0' && + countNeg < 2) { - bool result = false; - - if (pFloat) + if (pInt) { - double doubleValue = 0.0; - result = LooksLikeDouble(in, &doubleValue); - - (*pFloat) = aznumeric_cast(doubleValue); - } - else - { - result = LooksLikeDouble(in); + *pInt = ToInt(in); } - return result; + return true; } + return false; + } - bool ToBool(const char* in) + double ToDouble(const char* in) + { + if (!in) + { + return 0.; + } + return atof(in); + } + + bool LooksLikeDouble(const char* in, double* pDouble) + { + if (!in) { - bool boolValue = false; - if (LooksLikeBool(in, &boolValue)) - { - return boolValue; - } return false; } - bool LooksLikeBool(const char* in, bool* pBool /* = nullptr */) + size_t len = strlen(in); + if (len < 2)//must have at least 2 characters to work with "1." { - if (!in) - { - return false; - } - - if (!azstricmp(in, "true") || !azstricmp(in, "1")) - { - if (pBool) - { - *pBool = true; - } - return true; - } - - if (!azstricmp(in, "false") || !azstricmp(in, "0")) - { - if (pBool) - { - *pBool = false; - } - return true; - } - return false; } - template - bool LooksLikeVectorHelper(const char* in, VECTOR_TYPE* outVector) - { - AZStd::vector tokens; - Tokenize(in, tokens, ',', false, true); - if (tokens.size() == ELEMENT_COUNT) - { - float vectorValues[4] = { 0.0f, 0.0f, 0.0f, 0.0f }; + const char* pStr = in; + size_t countDot = 0; + size_t countNeg = 0; + while (*pStr != '\0' && + (isdigit(*pStr) || + (*pStr == '-' || + *pStr == '.'))) + { + if (*pStr == '.') + { + countDot++; + } + if (*pStr == '-') + { + countNeg++; + } + pStr++; + } + + if (*pStr == '\0' && + countDot == 1 && + countNeg < 2) + { + if (pDouble) + { + *pDouble = ToDouble(in); + } + + return true; + } + + return false; + } + + float ToFloat(const char* in) + { + if (!in) + { + return 0.f; + } + return (float)atof(in); + } + + bool LooksLikeFloat(const char* in, float* pFloat /* = nullptr */) + { + bool result = false; + + if (pFloat) + { + double doubleValue = 0.0; + result = LooksLikeDouble(in, &doubleValue); + + (*pFloat) = aznumeric_cast(doubleValue); + } + else + { + result = LooksLikeDouble(in); + } + + return result; + } + + bool ToBool(const char* in) + { + bool boolValue = false; + if (LooksLikeBool(in, &boolValue)) + { + return boolValue; + } + return false; + } + + bool LooksLikeBool(const char* in, bool* pBool /* = nullptr */) + { + if (!in) + { + return false; + } + + if (!azstricmp(in, "true") || !azstricmp(in, "1")) + { + if (pBool) + { + *pBool = true; + } + return true; + } + + if (!azstricmp(in, "false") || !azstricmp(in, "0")) + { + if (pBool) + { + *pBool = false; + } + return true; + } + + return false; + } + + template + bool LooksLikeVectorHelper(const char* in, VECTOR_TYPE* outVector) + { + AZStd::vector tokens; + Tokenize(in, tokens, ',', false, true); + if (tokens.size() == ELEMENT_COUNT) + { + float vectorValues[4] = { 0.0f, 0.0f, 0.0f, 0.0f }; + + for (uint32_t element = 0; element < ELEMENT_COUNT; ++element) + { + if (!LooksLikeFloat(tokens[element].c_str(), outVector ? &vectorValues[element] : nullptr)) + { + return false; + } + } + + if (outVector) + { for (uint32_t element = 0; element < ELEMENT_COUNT; ++element) { - if (!LooksLikeFloat(tokens[element].c_str(), outVector ? &vectorValues[element] : nullptr)) - { - return false; - } + outVector->SetElement(element, vectorValues[element]); } - - if (outVector) - { - for (uint32_t element = 0; element < ELEMENT_COUNT; ++element) - { - outVector->SetElement(element, vectorValues[element]); - } - } - - return true; } - return false; - } - - bool LooksLikeVector2(const char* in, AZ::Vector2* outVector) - { - return LooksLikeVectorHelper(in, outVector); - } - - AZ::Vector2 ToVector2(const char* in) - { - AZ::Vector2 vector; - LooksLikeVector2(in, &vector); - return vector; - } - - bool LooksLikeVector3(const char* in, AZ::Vector3* outVector) - { - return LooksLikeVectorHelper(in, outVector); - } - - AZ::Vector3 ToVector3(const char* in) - { - AZ::Vector3 vector; - LooksLikeVector3(in, &vector); - return vector; - } - - bool LooksLikeVector4(const char* in, AZ::Vector4* outVector) - { - return LooksLikeVectorHelper(in, outVector); - } - - AZ::Vector4 ToVector4(const char* in) - { - AZ::Vector4 vector; - LooksLikeVector4(in, &vector); - return vector; - } - - bool ToHexDump(const char* in, AZStd::string& out) - { - struct TInline - { - static void ByteToHex(char* pszHex, unsigned char bValue) - { - pszHex[0] = bValue / 16; - - if (pszHex[0] < 10) - { - pszHex[0] += '0'; - } - else - { - pszHex[0] -= 10; - pszHex[0] += 'A'; - } - - pszHex[1] = bValue % 16; - - if (pszHex[1] < 10) - { - pszHex[1] += '0'; - } - else - { - pszHex[1] -= 10; - pszHex[1] += 'A'; - } - } - }; - - size_t len = strlen(in); - if (len < 1) //must be at least 1 character to work with - { - return false; - } - - size_t nBytes = len; - - char* pszData = reinterpret_cast(azmalloc((nBytes * 2) + 1)); - - for (size_t ii = 0; ii < nBytes; ++ii) - { - TInline::ByteToHex(&pszData[ii * 2], in[ii]); - } - - pszData[nBytes * 2] = 0x00; - out = pszData; - azfree(pszData); - return true; } - bool FromHexDump(const char* in, AZStd::string& out) + return false; + } + + bool LooksLikeVector2(const char* in, AZ::Vector2* outVector) + { + return LooksLikeVectorHelper(in, outVector); + } + + AZ::Vector2 ToVector2(const char* in) + { + AZ::Vector2 vector; + LooksLikeVector2(in, &vector); + return vector; + } + + bool LooksLikeVector3(const char* in, AZ::Vector3* outVector) + { + return LooksLikeVectorHelper(in, outVector); + } + + AZ::Vector3 ToVector3(const char* in) + { + AZ::Vector3 vector; + LooksLikeVector3(in, &vector); + return vector; + } + + bool LooksLikeVector4(const char* in, AZ::Vector4* outVector) + { + return LooksLikeVectorHelper(in, outVector); + } + + AZ::Vector4 ToVector4(const char* in) + { + AZ::Vector4 vector; + LooksLikeVector4(in, &vector); + return vector; + } + + bool ToHexDump(const char* in, AZStd::string& out) + { + struct TInline { - struct TInline + static void ByteToHex(char* pszHex, unsigned char bValue) { - static unsigned char HexToByte(const char* pszHex) + pszHex[0] = bValue / 16; + + if (pszHex[0] < 10) { - unsigned char bHigh = 0; - unsigned char bLow = 0; - - if ((pszHex[0] >= '0') && (pszHex[0] <= '9')) - { - bHigh = pszHex[0] - '0'; - } - else if ((pszHex[0] >= 'A') && (pszHex[0] <= 'F')) - { - bHigh = (pszHex[0] - 'A') + 10; - } - - bHigh = bHigh << 4; - - if ((pszHex[1] >= '0') && (pszHex[1] <= '9')) - { - bLow = pszHex[1] - '0'; - } - else if ((pszHex[1] >= 'A') && (pszHex[1] <= 'F')) - { - bLow = (pszHex[1] - 'A') + 10; - } - - return bHigh | bLow; - } - }; - - size_t len = strlen(in); - if (len < 2) //must be at least 2 characters to work with - { - return false; - } - - size_t nBytes = len / 2; - char* pszData = reinterpret_cast(azmalloc(nBytes + 1)); - - for (size_t ii = 0; ii < nBytes; ++ii) - { - pszData[ii] = TInline::HexToByte(&in[ii * 2]); - } - - pszData[nBytes] = 0x00; - out = pszData; - azfree(pszData); - - return true; - } - - namespace NumberFormatting - { - int GroupDigits(char* buffer, size_t bufferSize, size_t decimalPosHint, char digitSeparator, char decimalSeparator, int groupingSize, int firstGroupingSize) - { - static const int MAX_SEPARATORS = 16; - - AZ_Assert(buffer, "Null string buffer"); - AZ_Assert(bufferSize > decimalPosHint, "Decimal position %lu cannot be located beyond bufferSize %lu", decimalPosHint, bufferSize); - AZ_Assert(groupingSize > 0, "Grouping size must be a positive integer"); - - int numberEndPos = 0; - int stringEndPos = 0; - - if (decimalPosHint > 0 && decimalPosHint < (bufferSize - 1) && buffer[decimalPosHint] == decimalSeparator) - { - // Assume the number ends at the supplied location - numberEndPos = (int)decimalPosHint; - stringEndPos = numberEndPos + (int)strnlen(buffer + numberEndPos, bufferSize - numberEndPos); + pszHex[0] += '0'; } else { - // Search for the final digit or separator while obtaining the string length - int lastDigitSeenPos = 0; - - while (stringEndPos < bufferSize) - { - char c = buffer[stringEndPos]; - - if (!c) - { - break; - } - else if (c == decimalSeparator) - { - // End the number if there's a decimal - numberEndPos = stringEndPos; - } - else if (numberEndPos <= 0 && c >= '0' && c <= '9') - { - // Otherwise keep track of where the last digit we've seen is - lastDigitSeenPos = stringEndPos; - } - - stringEndPos++; - } - - if (numberEndPos <= 0) - { - if (lastDigitSeenPos > 0) - { - // No decimal, so use the last seen digit as the end of the number - numberEndPos = lastDigitSeenPos + 1; - } - else - { - // No digits, no decimals, therefore no change in the string - return stringEndPos; - } - } + pszHex[0] -= 10; + pszHex[0] += 'A'; } - if (firstGroupingSize <= 0) + pszHex[1] = bValue % 16; + + if (pszHex[1] < 10) { - firstGroupingSize = groupingSize; + pszHex[1] += '0'; + } + else + { + pszHex[1] -= 10; + pszHex[1] += 'A'; + } + } + }; + + size_t len = strlen(in); + if (len < 1) //must be at least 1 character to work with + { + return false; + } + + size_t nBytes = len; + + char* pszData = reinterpret_cast(azmalloc((nBytes * 2) + 1)); + + for (size_t ii = 0; ii < nBytes; ++ii) + { + TInline::ByteToHex(&pszData[ii * 2], in[ii]); + } + + pszData[nBytes * 2] = 0x00; + out = pszData; + azfree(pszData); + + return true; + } + + bool FromHexDump(const char* in, AZStd::string& out) + { + struct TInline + { + static unsigned char HexToByte(const char* pszHex) + { + unsigned char bHigh = 0; + unsigned char bLow = 0; + + if ((pszHex[0] >= '0') && (pszHex[0] <= '9')) + { + bHigh = pszHex[0] - '0'; + } + else if ((pszHex[0] >= 'A') && (pszHex[0] <= 'F')) + { + bHigh = (pszHex[0] - 'A') + 10; } - // Determine where to place the separators - int groupingSizes[] = { firstGroupingSize + 1, groupingSize }; // First group gets +1 since we begin all subsequent groups at the second digit - int groupingOffsetsToNext[] = { 1, 0 }; // We will offset from the first entry to the second, then stay at the second for remaining iterations - const int* currentGroupingSize = groupingSizes; - const int* currentGroupingOffsetToNext = groupingOffsetsToNext; - AZStd::fixed_vector separatorLocations; - int groupCounter = 0; - int digitPosition = numberEndPos - 1; + bHigh = bHigh << 4; - while (digitPosition >= 0) + if ((pszHex[1] >= '0') && (pszHex[1] <= '9')) { - // Walk backwards in the string from the least significant digit to the most significant, demarcating consecutive groups of digits - char c = buffer[digitPosition]; + bLow = pszHex[1] - '0'; + } + else if ((pszHex[1] >= 'A') && (pszHex[1] <= 'F')) + { + bLow = (pszHex[1] - 'A') + 10; + } - if (c >= '0' && c <= '9') - { - if (++groupCounter == *currentGroupingSize) - { - // Demarcate a new group of digits at this location - separatorLocations.push_back(buffer + digitPosition); - currentGroupingSize += *currentGroupingOffsetToNext; - currentGroupingOffsetToNext += *currentGroupingOffsetToNext; - groupCounter = 0; - } + return bHigh | bLow; + } + }; - digitPosition--; - } - else + size_t len = strlen(in); + if (len < 2) //must be at least 2 characters to work with + { + return false; + } + + size_t nBytes = len / 2; + char* pszData = reinterpret_cast(azmalloc(nBytes + 1)); + + for (size_t ii = 0; ii < nBytes; ++ii) + { + pszData[ii] = TInline::HexToByte(&in[ii * 2]); + } + + pszData[nBytes] = 0x00; + out = pszData; + azfree(pszData); + + return true; + } + + namespace NumberFormatting + { + int GroupDigits(char* buffer, size_t bufferSize, size_t decimalPosHint, char digitSeparator, char decimalSeparator, int groupingSize, int firstGroupingSize) + { + static const int MAX_SEPARATORS = 16; + + AZ_Assert(buffer, "Null string buffer"); + AZ_Assert(bufferSize > decimalPosHint, "Decimal position %lu cannot be located beyond bufferSize %lu", decimalPosHint, bufferSize); + AZ_Assert(groupingSize > 0, "Grouping size must be a positive integer"); + + int numberEndPos = 0; + int stringEndPos = 0; + + if (decimalPosHint > 0 && decimalPosHint < (bufferSize - 1) && buffer[decimalPosHint] == decimalSeparator) + { + // Assume the number ends at the supplied location + numberEndPos = (int)decimalPosHint; + stringEndPos = numberEndPos + (int)strnlen(buffer + numberEndPos, bufferSize - numberEndPos); + } + else + { + // Search for the final digit or separator while obtaining the string length + int lastDigitSeenPos = 0; + + while (stringEndPos < bufferSize) + { + char c = buffer[stringEndPos]; + + if (!c) { break; } - } - - if (stringEndPos + separatorLocations.size() >= bufferSize) - { - // Won't fit into buffer, so return unchanged - return stringEndPos; - } - - // Insert the separators by shifting characters forward in the string, starting at the end and working backwards - const char* src = buffer + stringEndPos; - char* dest = buffer + stringEndPos + separatorLocations.size(); - auto separatorItr = separatorLocations.begin(); - - while (separatorItr != separatorLocations.end()) - { - while (src > *separatorItr) + else if (c == decimalSeparator) { - *dest-- = *src--; + // End the number if there's a decimal + numberEndPos = stringEndPos; + } + else if (numberEndPos <= 0 && c >= '0' && c <= '9') + { + // Otherwise keep track of where the last digit we've seen is + lastDigitSeenPos = stringEndPos; } - // Insert the separator and reduce the distance between our destination and source by one - *dest-- = digitSeparator; - ++separatorItr; + stringEndPos++; } - return (int)(stringEndPos + separatorLocations.size()); + if (numberEndPos <= 0) + { + if (lastDigitSeenPos > 0) + { + // No decimal, so use the last seen digit as the end of the number + numberEndPos = lastDigitSeenPos + 1; + } + else + { + // No digits, no decimals, therefore no change in the string + return stringEndPos; + } + } } - } - namespace AssetPath + if (firstGroupingSize <= 0) + { + firstGroupingSize = groupingSize; + } + + // Determine where to place the separators + int groupingSizes[] = { firstGroupingSize + 1, groupingSize }; // First group gets +1 since we begin all subsequent groups at the second digit + int groupingOffsetsToNext[] = { 1, 0 }; // We will offset from the first entry to the second, then stay at the second for remaining iterations + const int* currentGroupingSize = groupingSizes; + const int* currentGroupingOffsetToNext = groupingOffsetsToNext; + AZStd::fixed_vector separatorLocations; + int groupCounter = 0; + int digitPosition = numberEndPos - 1; + + while (digitPosition >= 0) + { + // Walk backwards in the string from the least significant digit to the most significant, demarcating consecutive groups of digits + char c = buffer[digitPosition]; + + if (c >= '0' && c <= '9') + { + if (++groupCounter == *currentGroupingSize) + { + // Demarcate a new group of digits at this location + separatorLocations.push_back(buffer + digitPosition); + currentGroupingSize += *currentGroupingOffsetToNext; + currentGroupingOffsetToNext += *currentGroupingOffsetToNext; + groupCounter = 0; + } + + digitPosition--; + } + else + { + break; + } + } + + if (stringEndPos + separatorLocations.size() >= bufferSize) + { + // Won't fit into buffer, so return unchanged + return stringEndPos; + } + + // Insert the separators by shifting characters forward in the string, starting at the end and working backwards + const char* src = buffer + stringEndPos; + char* dest = buffer + stringEndPos + separatorLocations.size(); + auto separatorItr = separatorLocations.begin(); + + while (separatorItr != separatorLocations.end()) + { + while (src > *separatorItr) + { + *dest-- = *src--; + } + + // Insert the separator and reduce the distance between our destination and source by one + *dest-- = digitSeparator; + ++separatorItr; + } + + return (int)(stringEndPos + separatorLocations.size()); + } + } + + namespace AssetPath + { + namespace Internal { - void CalculateBranchToken(const AZStd::string& appRootPath, AZStd::string& token) + AZ::u32 CalculateBranchTokenHash(AZStd::string_view engineRootPath) { // Normalize the token to prepare for CRC32 calculation - AZStd::string normalized = appRootPath; + auto NormalizeEnginePath = [](const char element) -> char + { + // Substitute path separators with '_' and lower case + return element == AZ::IO::WindowsPathSeparator || element == AZ::IO::PosixPathSeparator + ? '_' + : static_cast(std::tolower(element)); + }; - // Strip out any trailing path separators - AZ::StringFunc::Strip(normalized, AZ_CORRECT_FILESYSTEM_SEPARATOR_STRING AZ_WRONG_FILESYSTEM_SEPARATOR_STRING,false, false, true); - - // Lower case always - AZStd::to_lower(normalized.begin(), normalized.end()); - - // Substitute path separators with '_' - AZStd::replace(normalized.begin(), normalized.end(), '\\', '_'); - AZStd::replace(normalized.begin(), normalized.end(), '/', '_'); + // Trim off trailing path separators + engineRootPath = RStrip(engineRootPath, AZ_CORRECT_AND_WRONG_FILESYSTEM_SEPARATOR); + AZ::IO::FixedMaxPathString enginePath; + AZStd::transform( + engineRootPath.begin(), engineRootPath.end(), AZStd::back_inserter(enginePath), AZStd::move(NormalizeEnginePath)); // Perform the CRC32 calculation - const AZ::Crc32 branchTokenCrc(normalized.c_str(), normalized.size(), true); - char branchToken[12]; - azsnprintf(branchToken, AZ_ARRAY_SIZE(branchToken), "0x%08X", static_cast(branchTokenCrc)); - token = AZStd::string(branchToken); + constexpr bool forceLowercase = true; + return static_cast(AZ::Crc32(enginePath.c_str(), enginePath.size(), forceLowercase)); } + } // namespace Internal + void CalculateBranchToken(AZStd::string_view engineRootPath, AZStd::string& token) + { + token = AZStd::string::format("0x%08X", Internal::CalculateBranchTokenHash(engineRootPath)); + } + void CalculateBranchToken(AZStd::string_view engineRootPath, AZ::IO::FixedMaxPathString& token) + { + token = AZ::IO::FixedMaxPathString::format("0x%08X", Internal::CalculateBranchTokenHash(engineRootPath)); + } + } // namespace AssetPath + + namespace AssetDatabasePath + { + bool Normalize(AZStd::string& inout) + { + // Asset Paths uses the forward slash for the database separator + AZ::IO::Path path(AZStd::move(inout), AZ_CORRECT_DATABASE_SEPARATOR); + bool appendTrailingSlash = (path.Native().ends_with(AZ_CORRECT_DATABASE_SEPARATOR) || path.Native().ends_with(AZ_WRONG_DATABASE_SEPARATOR)) + && path.HasRelativePath(); + inout = AZStd::move(path.LexicallyNormal().Native()); + if (appendTrailingSlash) + { + inout.push_back(AZ_CORRECT_DATABASE_SEPARATOR); + } + return IsValid(inout.c_str()); } - namespace AssetDatabasePath + bool IsValid(const char* in) { - bool Normalize(AZStd::string& inout) + if (!in) { - // Asset Paths uses the forward slash for the database separator - AZ::IO::Path path(AZStd::move(inout), AZ_CORRECT_DATABASE_SEPARATOR); - bool appendTrailingSlash = (path.Native().ends_with(AZ_CORRECT_DATABASE_SEPARATOR) || path.Native().ends_with(AZ_WRONG_DATABASE_SEPARATOR)) - && path.HasRelativePath(); - inout = AZStd::move(path.LexicallyNormal().Native()); - if (appendTrailingSlash) - { - inout.push_back(AZ_CORRECT_DATABASE_SEPARATOR); - } - return IsValid(inout.c_str()); + return false; } - bool IsValid(const char* in) + if (!strlen(in)) { - if (!in) - { - return false; - } + return false; + } - if (!strlen(in)) - { - return false; - } + if (Find(in, AZ_DATABASE_INVALID_CHARACTERS) != AZStd::string::npos) + { + return false; + } - if (Find(in, AZ_DATABASE_INVALID_CHARACTERS) != AZStd::string::npos) - { - return false; - } - - if (Find(in, AZ_WRONG_DATABASE_SEPARATOR) != AZStd::string::npos) - { - return false; - } + if (Find(in, AZ_WRONG_DATABASE_SEPARATOR) != AZStd::string::npos) + { + return false; + } #ifndef AZ_FILENAME_ALLOW_SPACES - if (Find(in, AZ_SPACE_CHARACTERS) != AZStd::string::npos) - { - return false; - } + if (Find(in, AZ_SPACE_CHARACTERS) != AZStd::string::npos) + { + return false; + } #endif // AZ_FILENAME_ALLOW_SPACES - if (LastCharacter(in) == AZ_CORRECT_DATABASE_SEPARATOR) - { - return false; - } - - return true; - } - - bool Split(const char* in, [[maybe_unused]] AZStd::string* pDstProjectRootOut, AZStd::string* pDstDatabaseRootOut, - AZStd::string* pDstDatabasePathOut , AZStd::string* pDstFileOut, AZStd::string* pDstFileExtensionOut) + if (LastCharacter(in) == AZ_CORRECT_DATABASE_SEPARATOR) { - AZStd::string_view path{ in }; - if (path.empty()) - { - return false; - } - - AZ::IO::PathView pathView(path, AZ_CORRECT_DATABASE_SEPARATOR); - if (pDstDatabaseRootOut) - { - AZStd::string_view rootNameView = pathView.RootName().Native(); - if (rootNameView.size() > pDstDatabaseRootOut->max_size()) - { - return false; - } - *pDstDatabaseRootOut = rootNameView; - } - if (pDstDatabasePathOut) - { - AZStd::string_view rootPathView = pathView.RootPath().Native(); - AZStd::string_view relPathParentView = pathView.ParentPath().RelativePath().Native(); - if (rootPathView.size() + relPathParentView.size() > pDstDatabasePathOut->max_size()) - { - return false; - } - // Append the root directory if there is one - *pDstDatabasePathOut = rootPathView; - // Append the relative path portion of the split path excluding the filename - *pDstDatabasePathOut += relPathParentView; - } - if (pDstFileOut) - { - AZStd::string_view stemView = pathView.Stem().Native(); - if (stemView.size() > pDstFileOut->max_size()) - { - return false; - } - *pDstFileOut = stemView; - } - if (pDstFileExtensionOut) - { - AZStd::string_view extensionView = pathView.Extension().Native(); - if (extensionView.size() > pDstFileExtensionOut->max_size()) - { - return false; - } - *pDstFileExtensionOut = extensionView; - } - - return true; + return false; } - bool Join(const char* pFirstPart, const char* pSecondPart, AZStd::string& out, [[maybe_unused]] bool bCaseInsensitive /*= true*/, bool bNormalize /*= true*/) - { - // both paths cannot be empty - if (!pFirstPart || !pSecondPart) - { - return false; - } + return true; + } - AZ::IO::PathView secondPath(pSecondPart); - AZ_Warning("StringFunc", secondPath.IsRelative(), "The second join parameter %s is an absolute path," - " this will replace the first part of the path resulting in an output of just the second part", - pSecondPart); - - AZ::IO::Path resultPath(pFirstPart, AZ_CORRECT_DATABASE_SEPARATOR); - resultPath /= secondPath; - out = bNormalize ? AZStd::move(resultPath.LexicallyNormal().Native()) : AZStd::move(resultPath.Native()); - return true; - } - } //namespace AssetDatabasePath - - namespace Root + bool Split(const char* in, [[maybe_unused]] AZStd::string* pDstProjectRootOut, AZStd::string* pDstDatabaseRootOut, + AZStd::string* pDstDatabasePathOut , AZStd::string* pDstFileOut, AZStd::string* pDstFileExtensionOut) { - bool Normalize(AZStd::string& inout) + AZStd::string_view path{ in }; + if (path.empty()) { - AZ::IO::Path path(AZStd::move(inout)); - path = path.LexicallyNormal(); - // After normalization check if the path contains a relative path - bool appendTrailingSlash = path.HasRelativePath(); - inout = AZStd::move(path.Native()); - if (appendTrailingSlash) - { - inout.push_back(AZ_CORRECT_FILESYSTEM_SEPARATOR); // Append a trailing separator for Root path normalization - } - return IsValid(inout.c_str()); + return false; } - bool IsValid(const char* in) + AZ::IO::PathView pathView(path, AZ_CORRECT_DATABASE_SEPARATOR); + if (pDstDatabaseRootOut) { - if (!in) + AZStd::string_view rootNameView = pathView.RootName().Native(); + if (rootNameView.size() > pDstDatabaseRootOut->max_size()) { return false; } - - if (!strlen(in)) + *pDstDatabaseRootOut = rootNameView; + } + if (pDstDatabasePathOut) + { + AZStd::string_view rootPathView = pathView.RootPath().Native(); + AZStd::string_view relPathParentView = pathView.ParentPath().RelativePath().Native(); + if (rootPathView.size() + relPathParentView.size() > pDstDatabasePathOut->max_size()) { return false; } - - if (Find(in, AZ_FILESYSTEM_INVALID_CHARACTERS) != AZStd::string::npos) + // Append the root directory if there is one + *pDstDatabasePathOut = rootPathView; + // Append the relative path portion of the split path excluding the filename + *pDstDatabasePathOut += relPathParentView; + } + if (pDstFileOut) + { + AZStd::string_view stemView = pathView.Stem().Native(); + if (stemView.size() > pDstFileOut->max_size()) { return false; } - - if (Find(in, AZ_WRONG_FILESYSTEM_SEPARATOR) != AZStd::string::npos) + *pDstFileOut = stemView; + } + if (pDstFileExtensionOut) + { + AZStd::string_view extensionView = pathView.Extension().Native(); + if (extensionView.size() > pDstFileExtensionOut->max_size()) { return false; } + *pDstFileExtensionOut = extensionView; + } - #ifndef AZ_FILENAME_ALLOW_SPACES - if (Find(in, AZ_SPACE_CHARACTERS) != AZStd::string::npos) - { - return false; - } - #endif // AZ_FILENAME_ALLOW_SPACES + return true; + } - AZ::IO::PathView pathView(in); - if (!pathView.HasRootPath()) - { - return false; - } + bool Join(const char* pFirstPart, const char* pSecondPart, AZStd::string& out, [[maybe_unused]] bool bCaseInsensitive /*= true*/, bool bNormalize /*= true*/) + { + // both paths cannot be empty + if (!pFirstPart || !pSecondPart) + { + return false; + } - if (LastCharacter(in) != AZ_CORRECT_FILESYSTEM_SEPARATOR) - { - return false; - } + AZ::IO::PathView secondPath(pSecondPart); + AZ_Warning("StringFunc", secondPath.IsRelative(), "The second join parameter %s is an absolute path," + " this will replace the first part of the path resulting in an output of just the second part", + pSecondPart); + AZ::IO::Path resultPath(pFirstPart, AZ_CORRECT_DATABASE_SEPARATOR); + resultPath /= secondPath; + out = bNormalize ? AZStd::move(resultPath.LexicallyNormal().Native()) : AZStd::move(resultPath.Native()); + return true; + } + } //namespace AssetDatabasePath + + namespace Root + { + bool Normalize(AZStd::string& inout) + { + AZ::IO::Path path(AZStd::move(inout)); + path = path.LexicallyNormal(); + // After normalization check if the path contains a relative path + bool appendTrailingSlash = path.HasRelativePath(); + inout = AZStd::move(path.Native()); + if (appendTrailingSlash) + { + inout.push_back(AZ_CORRECT_FILESYSTEM_SEPARATOR); // Append a trailing separator for Root path normalization + } + return IsValid(inout.c_str()); + } + + bool IsValid(const char* in) + { + if (!in) + { + return false; + } + + if (!strlen(in)) + { + return false; + } + + if (Find(in, AZ_FILESYSTEM_INVALID_CHARACTERS) != AZStd::string::npos) + { + return false; + } + + if (Find(in, AZ_WRONG_FILESYSTEM_SEPARATOR) != AZStd::string::npos) + { + return false; + } + +#ifndef AZ_FILENAME_ALLOW_SPACES + if (Find(in, AZ_SPACE_CHARACTERS) != AZStd::string::npos) + { + return false; + } +#endif // AZ_FILENAME_ALLOW_SPACES + + AZ::IO::PathView pathView(in); + if (!pathView.HasRootPath()) + { + return false; + } + + if (LastCharacter(in) != AZ_CORRECT_FILESYSTEM_SEPARATOR) + { + return false; + } + + return true; + } + }//namespace Root + + namespace RelativePath + { + bool Normalize(AZStd::string& inout) + { + AZ::IO::Path path(AZStd::move(inout)); + path = path.LexicallyNormal(); + // After normalization check if the path contains a relative path + bool appendTrailingSlash = path.HasRelativePath(); + inout = AZStd::move(path.Native()); + if (appendTrailingSlash) + { + inout.push_back(AZ_CORRECT_FILESYSTEM_SEPARATOR); // Append trailing separator for Relative path normalization if it it is not empty + } + return IsValid(inout.c_str()); + } + + bool IsValid(const char* in) + { + if (!in) + { + return false; + } + + if (!strlen(in)) + { return true; } - }//namespace Root - namespace RelativePath + if (Find(in, AZ_FILESYSTEM_INVALID_CHARACTERS) != AZStd::string::npos) + { + return false; + } + + if (Find(in, AZ_WRONG_FILESYSTEM_SEPARATOR) != AZStd::string::npos) + { + return false; + } + +#ifndef AZ_FILENAME_ALLOW_SPACES + if (Find(in, AZ_SPACE_CHARACTERS) != AZStd::string::npos) + { + return false; + } +#endif // AZ_FILENAME_ALLOW_SPACES + + if (Path::HasDrive(in)) + { + return false; + } + + if (FirstCharacter(in) == AZ_CORRECT_FILESYSTEM_SEPARATOR) + { + return false; + } + + if (LastCharacter(in) != AZ_CORRECT_FILESYSTEM_SEPARATOR) + { + return false; + } + + return true; + } + }//namespace RelativePath + + namespace Path + { + bool Normalize(AZStd::string& inout) { - bool Normalize(AZStd::string& inout) + AZ::IO::Path path(AZStd::move(inout)); + bool appendTrailingSlash = (path.Native().ends_with(AZ_CORRECT_FILESYSTEM_SEPARATOR) || path.Native().ends_with(AZ_WRONG_FILESYSTEM_SEPARATOR)); + path = path.LexicallyNormal(); + // After normalization check if the path contains a relative path and addition to ending with a path separator before + appendTrailingSlash = appendTrailingSlash && path.HasRelativePath(); + inout = AZStd::move(path.Native()); + if (appendTrailingSlash) { - AZ::IO::Path path(AZStd::move(inout)); - path = path.LexicallyNormal(); - // After normalization check if the path contains a relative path - bool appendTrailingSlash = path.HasRelativePath(); - inout = AZStd::move(path.Native()); - if (appendTrailingSlash) - { - inout.push_back(AZ_CORRECT_FILESYSTEM_SEPARATOR); // Append trailing separator for Relative path normalization if it it is not empty - } - return IsValid(inout.c_str()); + inout.push_back(AZ_CORRECT_FILESYSTEM_SEPARATOR); } + return IsValid(inout.c_str()); + } - bool IsValid(const char* in) - { - if (!in) - { - return false; - } - - if (!strlen(in)) - { - return true; - } - - if (Find(in, AZ_FILESYSTEM_INVALID_CHARACTERS) != AZStd::string::npos) - { - return false; - } - - if (Find(in, AZ_WRONG_FILESYSTEM_SEPARATOR) != AZStd::string::npos) - { - return false; - } - - #ifndef AZ_FILENAME_ALLOW_SPACES - if (Find(in, AZ_SPACE_CHARACTERS) != AZStd::string::npos) - { - return false; - } - #endif // AZ_FILENAME_ALLOW_SPACES - - if (Path::HasDrive(in)) - { - return false; - } - - if (FirstCharacter(in) == AZ_CORRECT_FILESYSTEM_SEPARATOR) - { - return false; - } - - if (LastCharacter(in) != AZ_CORRECT_FILESYSTEM_SEPARATOR) - { - return false; - } - - return true; - } - }//namespace RelativePath - - namespace Path + bool Normalize(FixedString& inout) { - bool Normalize(AZStd::string& inout) + AZ::IO::FixedMaxPath path(AZStd::move(inout)); + bool appendTrailingSlash = (path.Native().ends_with(AZ_CORRECT_FILESYSTEM_SEPARATOR) || path.Native().ends_with(AZ_WRONG_FILESYSTEM_SEPARATOR)); + path = path.LexicallyNormal(); + // After normalization check if the path contains a relative path and addition to ending with a path separator before + appendTrailingSlash = appendTrailingSlash && path.HasRelativePath(); + inout = AZStd::move(path.Native()); + if (appendTrailingSlash) { - AZ::IO::Path path(AZStd::move(inout)); - bool appendTrailingSlash = (path.Native().ends_with(AZ_CORRECT_FILESYSTEM_SEPARATOR) || path.Native().ends_with(AZ_WRONG_FILESYSTEM_SEPARATOR)); - path = path.LexicallyNormal(); - // After normalization check if the path contains a relative path and addition to ending with a path separator before - appendTrailingSlash = appendTrailingSlash && path.HasRelativePath(); - inout = AZStd::move(path.Native()); - if (appendTrailingSlash) - { - inout.push_back(AZ_CORRECT_FILESYSTEM_SEPARATOR); - } - return IsValid(inout.c_str()); + inout.push_back(AZ_CORRECT_FILESYSTEM_SEPARATOR); + } + return IsValid(inout.c_str()); + } + + bool IsValid(const char* in, bool bHasDrive /*= false*/, bool bHasExtension /*= false*/, AZStd::string* errors /*= nullptr*/) + { + //if they gave us a error reporting string empty it. + if (errors) + { + errors->clear(); } - bool Normalize(FixedString& inout) + //empty is not a valid path + if (!in) { - AZ::IO::FixedMaxPath path(AZStd::move(inout)); - bool appendTrailingSlash = (path.Native().ends_with(AZ_CORRECT_FILESYSTEM_SEPARATOR) || path.Native().ends_with(AZ_WRONG_FILESYSTEM_SEPARATOR)); - path = path.LexicallyNormal(); - // After normalization check if the path contains a relative path and addition to ending with a path separator before - appendTrailingSlash = appendTrailingSlash && path.HasRelativePath(); - inout = AZStd::move(path.Native()); - if (appendTrailingSlash) - { - inout.push_back(AZ_CORRECT_FILESYSTEM_SEPARATOR); - } - return IsValid(inout.c_str()); - } - - bool IsValid(const char* in, bool bHasDrive /*= false*/, bool bHasExtension /*= false*/, AZStd::string* errors /*= nullptr*/) - { - //if they gave us a error reporting string empty it. if (errors) { - errors->clear(); + *errors += "The path is Empty."; } + return false; + } - //empty is not a valid path - if (!in) + //empty is not a valid path + size_t length = strlen(in); + if (!length) + { + if (errors) { - if (errors) - { - *errors += "The path is Empty."; - } - return false; + *errors += "The path is Empty."; } + return false; + } - //empty is not a valid path - size_t length = strlen(in); - if (!length) + //invalid characters + const char* inEnd = in + length; + const char* invalidCharactersBegin = AZ_FILESYSTEM_INVALID_CHARACTERS; + const char* invalidCharactersEnd = invalidCharactersBegin + AZ_ARRAY_SIZE(AZ_FILESYSTEM_INVALID_CHARACTERS); + if (AZStd::find_first_of(in, inEnd, invalidCharactersBegin, invalidCharactersEnd) != inEnd) + { + if (errors) { - if (errors) - { - *errors += "The path is Empty."; - } - return false; + *errors += "The path has invalid characters."; } + return false; + } - //invalid characters - const char* inEnd = in + length; - const char* invalidCharactersBegin = AZ_FILESYSTEM_INVALID_CHARACTERS; - const char* invalidCharactersEnd = invalidCharactersBegin + AZ_ARRAY_SIZE(AZ_FILESYSTEM_INVALID_CHARACTERS); - if (AZStd::find_first_of(in, inEnd, invalidCharactersBegin, invalidCharactersEnd) != inEnd) + //invalid characters + if (Find(in, AZ_WRONG_FILESYSTEM_SEPARATOR) != AZStd::string::npos) + { + if (errors) { - if (errors) - { - *errors += "The path has invalid characters."; - } - return false; + *errors += "The path has wrong separator."; } + return false; + } - //invalid characters - if (Find(in, AZ_WRONG_FILESYSTEM_SEPARATOR) != AZStd::string::npos) +#ifndef AZ_FILENAME_ALLOW_SPACES + const char* spaceCharactersBegin = AZ_SPACE_CHARACTERS; + const char* spaceCharactersEnd = spaceCharactersBegin + AZ_ARRAY_SIZE(AZ_SPACE_CHARACTERS); + if (AZStd::find_first_of(in, inEnd, spaceCharactersBegin, spaceCharactersEnd) != inEnd) + { + if (errors) { - if (errors) - { - *errors += "The path has wrong separator."; - } - return false; + *errors += "The path has space characters."; } + return false; + } +#endif // AZ_FILENAME_ALLOW_SPACES - #ifndef AZ_FILENAME_ALLOW_SPACES - const char* spaceCharactersBegin = AZ_SPACE_CHARACTERS; - const char* spaceCharactersEnd = spaceCharactersBegin + AZ_ARRAY_SIZE(AZ_SPACE_CHARACTERS); - if (AZStd::find_first_of(in, inEnd, spaceCharactersBegin, spaceCharactersEnd) != inEnd) + //does it have a drive if specified + if (bHasDrive && !HasDrive(in)) + { + if (errors) { - if (errors) - { - *errors += "The path has space characters."; - } - return false; + *errors += "The path should have a drive. The path ["; + *errors += in; + *errors += "] is invalid."; } - #endif // AZ_FILENAME_ALLOW_SPACES + return false; + } - //does it have a drive if specified - if (bHasDrive && !HasDrive(in)) + //does it have and extension if specified + if (bHasExtension && !HasExtension(in)) + { + if (errors) { - if (errors) - { - *errors += "The path should have a drive. The path ["; - *errors += in; - *errors += "] is invalid."; - } - return false; + *errors += "The path should have the a file extension. The path ["; + *errors += in; + *errors += "] is invalid."; } + return false; + } - //does it have and extension if specified - if (bHasExtension && !HasExtension(in)) + //start at the beginning and walk down the characters of the path + const char* elementStart = in; + const char* walk = elementStart; + while (*walk) + { + if (*walk == AZ_CORRECT_FILESYSTEM_SEPARATOR) //is this the correct separator { - if (errors) - { - *errors += "The path should have the a file extension. The path ["; - *errors += in; - *errors += "] is invalid."; - } - return false; + elementStart = walk; } - - //start at the beginning and walk down the characters of the path - const char* elementStart = in; - const char* walk = elementStart; - while (*walk) +#if AZ_TRAIT_OS_USE_WINDOWS_FILE_PATHS + else if (*walk == AZ_FILESYSTEM_DRIVE_SEPARATOR) //is this the drive separator { - if (*walk == AZ_CORRECT_FILESYSTEM_SEPARATOR) //is this the correct separator - { - elementStart = walk; - } - #if AZ_TRAIT_OS_USE_WINDOWS_FILE_PATHS - else if (*walk == AZ_FILESYSTEM_DRIVE_SEPARATOR) //is this the drive separator - { - //A AZ_FILESYSTEM_DRIVE_SEPARATOR character con only occur in the first - //component of a valid path. If the elementStart is not GetBufferPtr() - //then we have past the first component - if (elementStart != in) - { - if (errors) - { - *errors += "There is a stray AZ_FILESYSTEM_DRIVE_SEPARATOR = "; - *errors += AZ_FILESYSTEM_DRIVE_SEPARATOR; - *errors += " found after the first component. The path ["; - *errors += in; - *errors += "] is invalid."; - } - return false; - } - } - #endif - #ifndef AZ_FILENAME_ALLOW_SPACES - else if (*walk == ' ') //is this a space + //A AZ_FILESYSTEM_DRIVE_SEPARATOR character con only occur in the first + //component of a valid path. If the elementStart is not GetBufferPtr() + //then we have past the first component + if (elementStart != in) { if (errors) { - *errors += "The component ["; - for (const char* c = elementStart + 1; c != walk; ++c) - { - *errors += *c; - } - *errors += "] has a SPACE character. The path ["; + *errors += "There is a stray AZ_FILESYSTEM_DRIVE_SEPARATOR = "; + *errors += AZ_FILESYSTEM_DRIVE_SEPARATOR; + *errors += " found after the first component. The path ["; *errors += in; *errors += "] is invalid."; } return false; } - #endif - - ++walk; } - - #if !AZ_TRAIT_OS_ALLOW_UNLIMITED_PATH_COMPONENT_LENGTH - //is this full path longer than AZ::IO::MaxPathLength (The longest a path with all components can possibly be)? - if (walk - in > AZ::IO::MaxPathLength) +#endif +#ifndef AZ_FILENAME_ALLOW_SPACES + else if (*walk == ' ') //is this a space { - if (errors != 0) + if (errors) { - *errors += "The path ["; + *errors += "The component ["; + for (const char* c = elementStart + 1; c != walk; ++c) + { + *errors += *c; + } + *errors += "] has a SPACE character. The path ["; *errors += in; - *errors += "] is over the AZ::IO::MaxPathLength = "; - char buf[64]; - _itoa_s(AZ::IO::MaxPathLength, buf, 10); - *errors += buf; - *errors += " characters total length limit."; + *errors += "] is invalid."; } return false; } - #endif +#endif - return true; + ++walk; } - bool ConstructFull(const char* pRootPath, const char* pFileName, AZStd::string& out, bool bNormalize /* = false*/) +#if !AZ_TRAIT_OS_ALLOW_UNLIMITED_PATH_COMPONENT_LENGTH + //is this full path longer than AZ::IO::MaxPathLength (The longest a path with all components can possibly be)? + if (walk - in > AZ::IO::MaxPathLength) { - if (!pRootPath || AZ::IO::PathView(pRootPath).IsRelative() - || !pFileName || AZ::IO::PathView(pFileName).IsAbsolute()) + if (errors != 0) { - return false; - } - AZ::IO::Path path(pRootPath); - path /= pFileName; - if (bNormalize) - { - out = AZStd::move(path.LexicallyNormal().Native()); - } - else - { - out = AZStd::move(path.Native()); - } - return IsValid(out.c_str()); - } - - bool ConstructFull(const char* pRootPath, const char* pFileName, const char* pFileExtension, AZStd::string& out, bool bNormalize /* = false*/) - { - if (!pRootPath || AZ::IO::PathView(pRootPath).IsRelative() - || !pFileName || AZ::IO::PathView(pFileName).IsAbsolute()) - { - return false; - } - AZ::IO::Path path(pRootPath); - path /= pFileName; - if (pFileExtension) - { - path.ReplaceExtension(pFileExtension); - } - if (bNormalize) - { - out = AZStd::move(path.LexicallyNormal().Native()); - } - else - { - out = AZStd::move(path.Native()); - } - return IsValid(out.c_str()); - } - - bool ConstructFull(const char* pRoot, const char* pRelativePath, const char* pFileName, const char* pFileExtension, AZStd::string& out, bool bNormalize /* = false*/) - { - if (!pRoot || AZ::IO::PathView(pRoot).IsRelative() - || !pRelativePath || AZ::IO::PathView(pRelativePath).IsAbsolute() - || !pFileName || AZ::IO::PathView(pFileName).IsAbsolute()) - { - return false; - } - AZ::IO::Path path(pRoot); - path /= pRelativePath; - path /= pFileName; - if (pFileExtension) - { - path.ReplaceExtension(pFileExtension); - } - if (bNormalize) - { - out = AZStd::move(path.LexicallyNormal().Native()); - } - else - { - out = AZStd::move(path.Native()); - } - return IsValid(out.c_str()); - } - - bool Split(const char* in, AZStd::string* pDstDrive, AZStd::string* pDstPath, AZStd::string* pDstName, AZStd::string* pDstExtension) - { - AZStd::string_view path{ in }; - if (path.empty()) - { - return false; - } - - AZ::IO::PathView pathView(path); - if (pDstDrive) - { - AZStd::string_view rootNameView = pathView.RootName().Native(); - if (rootNameView.size() > pDstDrive->max_size()) - { - return false; - } - *pDstDrive = rootNameView; - } - if (pDstPath) - { - AZStd::string_view rootDirectoryView = pathView.RootDirectory().Native(); - AZStd::string_view relPathParentView = pathView.ParentPath().RelativePath().Native(); - if (rootDirectoryView.size() + relPathParentView.size() > pDstPath->max_size()) - { - return false; - } - // Append the root directory if there is one - *pDstPath = rootDirectoryView; - // Append the relative path portion of the split path excluding the filename - *pDstPath += relPathParentView; - } - if (pDstName) - { - AZStd::string_view stemView = pathView.Stem().Native(); - if (stemView.size() > pDstName->max_size()) - { - return false; - } - *pDstName = stemView; - } - if (pDstExtension) - { - AZStd::string_view extensionView = pathView.Extension().Native(); - if (extensionView.size() > pDstExtension->max_size()) - { - return false; - } - *pDstExtension = extensionView; - } - - return true; - } - - bool Join(const char* pFirstPart, const char* pSecondPart, AZStd::string& out, [[maybe_unused]] bool bCaseInsensitive, bool bNormalize) - { - if (!pFirstPart || !pSecondPart) - { - return false; - } - - AZ::IO::PathView secondPath(pSecondPart); - AZ_Warning("StringFunc", secondPath.IsRelative(), "The second join parameter %s is an absolute path," - " this will replace the first part of the path resulting in an output of just the second part", - pSecondPart); - - AZ::IO::Path resultPath(pFirstPart); - resultPath /= secondPath; - out = bNormalize ? AZStd::move(resultPath.LexicallyNormal().Native()) : AZStd::move(resultPath.Native()); - return true; - } - - bool Join(const char* pFirstPart, const char* pSecondPart, FixedString& out, [[maybe_unused]] bool bCaseInsensitive, bool bNormalize) - { - if (!pFirstPart || !pSecondPart) - { - return false; - } - - AZ::IO::PathView secondPath(pSecondPart); - AZ_Warning("StringFunc", secondPath.IsRelative(), "The second join parameter %s is an absolute path," - " this will replace the first part of the path resulting in an output of just the second part", - pSecondPart); - - AZ::IO::FixedMaxPath resultPath(pFirstPart); - resultPath /= secondPath; - out = bNormalize ? AZStd::move(resultPath.LexicallyNormal().Native()) : AZStd::move(resultPath.Native()); - return true; - } - - bool HasDrive(const char* in, bool bCheckAllFileSystemFormats /*= false*/) - { - // no drive if empty - if (!in || in[0] == '\0') - { - return false; - } - AZ::IO::PathView pathView(in); - return pathView.HasRootName() || (bCheckAllFileSystemFormats && pathView.HasRootDirectory()); - } - - bool HasExtension(const char* in) - { - //it doesn't have an extension if it's empty - if (!in || in[0] == '\0') - { - return false; - } - - return AZ::IO::PathView(in).HasExtension(); - } - - bool IsExtension(const char* in, const char* pExtension, bool bCaseInsenitive /*= false*/) - { - //it doesn't have an extension if it's empty - if (!in || in[0] == '\0' || !pExtension || pExtension[0] == '\0') - { - return false; - } - - AZStd::string_view pathExtension = AZ::IO::PathView(in).Extension().Native(); - if (pathExtension.starts_with(AZ_FILESYSTEM_EXTENSION_SEPARATOR)) - { - pathExtension.remove_prefix(1); - } - AZStd::string_view extensionView(pExtension); - if (extensionView.starts_with(AZ_FILESYSTEM_EXTENSION_SEPARATOR)) - { - extensionView.remove_prefix(1); - } - - return AZStd::equal(pathExtension.begin(), pathExtension.end(), extensionView.begin(), extensionView.end(), - [bCaseInsenitive](const char lhs, const char rhs) - { - return !bCaseInsenitive ? lhs == rhs : tolower(lhs) == tolower(rhs); - }); - } - - bool IsRelative(const char* in) - { - //not relative if empty - if (!in || in[0] == '\0') - { - return false; - } - - return AZ::IO::PathView(in).IsRelative(); - } - - bool StripDrive(AZStd::string& inout) - { - AZ::IO::PathView pathView(inout); - AZ::IO::PathView rootNameView(pathView.RootName()); - if (!rootNameView.empty()) - { - inout.replace(0, rootNameView.Native().size(), ""); - return true; + *errors += "The path ["; + *errors += in; + *errors += "] is over the AZ::IO::MaxPathLength = "; + char buf[64]; + _itoa_s(AZ::IO::MaxPathLength, buf, 10); + *errors += buf; + *errors += " characters total length limit."; } return false; } +#endif - void StripPath(AZStd::string& inout) + return true; + } + + bool ConstructFull(const char* pRootPath, const char* pFileName, AZStd::string& out, bool bNormalize /* = false*/) + { + if (!pRootPath || AZ::IO::PathView(pRootPath).IsRelative() + || !pFileName || AZ::IO::PathView(pFileName).IsAbsolute()) { - inout = AZ::IO::PathView(inout).Filename().Native(); + return false; + } + AZ::IO::Path path(pRootPath); + path /= pFileName; + if (bNormalize) + { + out = AZStd::move(path.LexicallyNormal().Native()); + } + else + { + out = AZStd::move(path.Native()); + } + return IsValid(out.c_str()); + } + + bool ConstructFull(const char* pRootPath, const char* pFileName, const char* pFileExtension, AZStd::string& out, bool bNormalize /* = false*/) + { + if (!pRootPath || AZ::IO::PathView(pRootPath).IsRelative() + || !pFileName || AZ::IO::PathView(pFileName).IsAbsolute()) + { + return false; + } + AZ::IO::Path path(pRootPath); + path /= pFileName; + if (pFileExtension) + { + path.ReplaceExtension(pFileExtension); + } + if (bNormalize) + { + out = AZStd::move(path.LexicallyNormal().Native()); + } + else + { + out = AZStd::move(path.Native()); + } + return IsValid(out.c_str()); + } + + bool ConstructFull(const char* pRoot, const char* pRelativePath, const char* pFileName, const char* pFileExtension, AZStd::string& out, bool bNormalize /* = false*/) + { + if (!pRoot || AZ::IO::PathView(pRoot).IsRelative() + || !pRelativePath || AZ::IO::PathView(pRelativePath).IsAbsolute() + || !pFileName || AZ::IO::PathView(pFileName).IsAbsolute()) + { + return false; + } + AZ::IO::Path path(pRoot); + path /= pRelativePath; + path /= pFileName; + if (pFileExtension) + { + path.ReplaceExtension(pFileExtension); + } + if (bNormalize) + { + out = AZStd::move(path.LexicallyNormal().Native()); + } + else + { + out = AZStd::move(path.Native()); + } + return IsValid(out.c_str()); + } + + bool Split(const char* in, AZStd::string* pDstDrive, AZStd::string* pDstPath, AZStd::string* pDstName, AZStd::string* pDstExtension) + { + AZStd::string_view path{ in }; + if (path.empty()) + { + return false; } - void StripFullName(AZStd::string& inout) + AZ::IO::PathView pathView(path); + if (pDstDrive) { - inout = AZ::IO::Path(AZStd::move(inout)).RemoveFilename().Native(); - } - - void StripExtension(AZStd::string& inout) - { - AZ::IO::Path path(AZStd::move(inout)); - path.ReplaceExtension(); - inout = AZStd::move(path.Native()); - } - - bool StripComponent(AZStd::string& inout, bool bLastComponent /* = false*/) - { - AZ::IO::PathView pathView(inout); - auto pathBeginIter = pathView.begin(); - auto pathEndIter = pathView.end(); - if (pathBeginIter == pathEndIter) + AZStd::string_view rootNameView = pathView.RootName().Native(); + if (rootNameView.size() > pDstDrive->max_size()) { return false; } - AZ::IO::Path resultPath; - if (!bLastComponent) - { - // Removing leading path component - AZStd::advance(pathBeginIter, 1); - } - else - { - // Remove trailing path component - AZStd::advance(pathEndIter, -1); - } - for (; pathBeginIter != pathEndIter; ++pathBeginIter) - { - resultPath /= *pathBeginIter; - } - if (resultPath.empty()) + *pDstDrive = rootNameView; + } + if (pDstPath) + { + AZStd::string_view rootDirectoryView = pathView.RootDirectory().Native(); + AZStd::string_view relPathParentView = pathView.ParentPath().RelativePath().Native(); + if (rootDirectoryView.size() + relPathParentView.size() > pDstPath->max_size()) { return false; } - inout = AZStd::move(resultPath.Native()); + // Append the root directory if there is one + *pDstPath = rootDirectoryView; + // Append the relative path portion of the split path excluding the filename + *pDstPath += relPathParentView; + } + if (pDstName) + { + AZStd::string_view stemView = pathView.Stem().Native(); + if (stemView.size() > pDstName->max_size()) + { + return false; + } + *pDstName = stemView; + } + if (pDstExtension) + { + AZStd::string_view extensionView = pathView.Extension().Native(); + if (extensionView.size() > pDstExtension->max_size()) + { + return false; + } + *pDstExtension = extensionView; + } + + return true; + } + + bool Join(const char* pFirstPart, const char* pSecondPart, AZStd::string& out, [[maybe_unused]] bool bCaseInsensitive, bool bNormalize) + { + if (!pFirstPart || !pSecondPart) + { + return false; + } + + AZ::IO::PathView secondPath(pSecondPart); + AZ_Warning("StringFunc", secondPath.IsRelative(), "The second join parameter %s is an absolute path," + " this will replace the first part of the path resulting in an output of just the second part", + pSecondPart); + + AZ::IO::Path resultPath(pFirstPart); + resultPath /= secondPath; + out = bNormalize ? AZStd::move(resultPath.LexicallyNormal().Native()) : AZStd::move(resultPath.Native()); + return true; + } + + bool Join(const char* pFirstPart, const char* pSecondPart, FixedString& out, [[maybe_unused]] bool bCaseInsensitive, bool bNormalize) + { + if (!pFirstPart || !pSecondPart) + { + return false; + } + + AZ::IO::PathView secondPath(pSecondPart); + AZ_Warning("StringFunc", secondPath.IsRelative(), "The second join parameter %s is an absolute path," + " this will replace the first part of the path resulting in an output of just the second part", + pSecondPart); + + AZ::IO::FixedMaxPath resultPath(pFirstPart); + resultPath /= secondPath; + out = bNormalize ? AZStd::move(resultPath.LexicallyNormal().Native()) : AZStd::move(resultPath.Native()); + return true; + } + + bool HasDrive(const char* in, bool bCheckAllFileSystemFormats /*= false*/) + { + // no drive if empty + if (!in || in[0] == '\0') + { + return false; + } + AZ::IO::PathView pathView(in); + return pathView.HasRootName() || (bCheckAllFileSystemFormats && pathView.HasRootDirectory()); + } + + bool HasExtension(const char* in) + { + //it doesn't have an extension if it's empty + if (!in || in[0] == '\0') + { + return false; + } + + return AZ::IO::PathView(in).HasExtension(); + } + + bool IsExtension(const char* in, const char* pExtension, bool bCaseInsenitive /*= false*/) + { + //it doesn't have an extension if it's empty + if (!in || in[0] == '\0' || !pExtension || pExtension[0] == '\0') + { + return false; + } + + AZStd::string_view pathExtension = AZ::IO::PathView(in).Extension().Native(); + if (pathExtension.starts_with(AZ_FILESYSTEM_EXTENSION_SEPARATOR)) + { + pathExtension.remove_prefix(1); + } + AZStd::string_view extensionView(pExtension); + if (extensionView.starts_with(AZ_FILESYSTEM_EXTENSION_SEPARATOR)) + { + extensionView.remove_prefix(1); + } + + return AZStd::equal(pathExtension.begin(), pathExtension.end(), extensionView.begin(), extensionView.end(), + [bCaseInsenitive](const char lhs, const char rhs) + { + return !bCaseInsenitive ? lhs == rhs : tolower(lhs) == tolower(rhs); + }); + } + + bool IsRelative(const char* in) + { + //not relative if empty + if (!in || in[0] == '\0') + { + return false; + } + + return AZ::IO::PathView(in).IsRelative(); + } + + bool StripDrive(AZStd::string& inout) + { + AZ::IO::PathView pathView(inout); + AZ::IO::PathView rootNameView(pathView.RootName()); + if (!rootNameView.empty()) + { + inout.replace(0, rootNameView.Native().size(), ""); return true; } + return false; + } - bool GetDrive(const char* in, AZStd::string& out) + void StripPath(AZStd::string& inout) + { + inout = AZ::IO::PathView(inout).Filename().Native(); + } + + void StripFullName(AZStd::string& inout) + { + inout = AZ::IO::Path(AZStd::move(inout)).RemoveFilename().Native(); + } + + void StripExtension(AZStd::string& inout) + { + AZ::IO::Path path(AZStd::move(inout)); + path.ReplaceExtension(); + inout = AZStd::move(path.Native()); + } + + bool StripComponent(AZStd::string& inout, bool bLastComponent /* = false*/) + { + AZ::IO::PathView pathView(inout); + auto pathBeginIter = pathView.begin(); + auto pathEndIter = pathView.end(); + if (pathBeginIter == pathEndIter) { - if (!in || in[0] == '\0') - { - return false; - } + return false; + } + AZ::IO::Path resultPath; + if (!bLastComponent) + { + // Removing leading path component + AZStd::advance(pathBeginIter, 1); + } + else + { + // Remove trailing path component + AZStd::advance(pathEndIter, -1); + } + for (; pathBeginIter != pathEndIter; ++pathBeginIter) + { + resultPath /= *pathBeginIter; + } + if (resultPath.empty()) + { + return false; + } + inout = AZStd::move(resultPath.Native()); + return true; + } - out = AZ::IO::PathView(in).RootName().Native(); + bool GetDrive(const char* in, AZStd::string& out) + { + if (!in || in[0] == '\0') + { + return false; + } + + out = AZ::IO::PathView(in).RootName().Native(); + return !out.empty(); + } + + AZStd::optional GetParentDir(AZStd::string_view path) + { + if (path.empty()) + { + return {}; + } + + AZStd::string_view parentDir = AZ::IO::PathView(path).ParentPath().Native(); + return !parentDir.empty() ? AZStd::make_optional(parentDir) : AZStd::nullopt; + } + + bool GetFullPath(const char* in, AZStd::string& out) + { + if (!in || in[0] == '\0') + { + return false; + } + + out = AZ::IO::PathView(in).ParentPath().Native(); + return !out.empty(); + } + + bool GetFolderPath(const char* in, AZStd::string& out) + { + return GetFullPath(in, out); + } + + bool GetFolder(const char* in, AZStd::string& out, bool bFirst /* = false*/) + { + if (!in || in[0] == '\0') + { + return false; + } + + if (!bFirst) + { + out = AZ::IO::PathView(in).ParentPath().Filename().Native(); return !out.empty(); } - - AZStd::optional GetParentDir(AZStd::string_view path) + else { - if (path.empty()) - { - return {}; - } - - AZStd::string_view parentDir = AZ::IO::PathView(path).ParentPath().Native(); - return !parentDir.empty() ? AZStd::make_optional(parentDir) : AZStd::nullopt; - } - - bool GetFullPath(const char* in, AZStd::string& out) - { - if (!in || in[0] == '\0') - { - return false; - } - - out = AZ::IO::PathView(in).ParentPath().Native(); + AZStd::string_view relativePath = AZ::IO::PathView(in).RelativePath().Native(); + size_t nextSeparator = relativePath.find_first_of(AZ_CORRECT_FILESYSTEM_SEPARATOR); + out = nextSeparator != AZStd::string_view::npos ? relativePath.substr(0, nextSeparator) : relativePath; return !out.empty(); } + } - bool GetFolderPath(const char* in, AZStd::string& out) + bool GetFullFileName(const char* in, AZStd::string& out) + { + if (!in || in[0] == '\0') { - return GetFullPath(in, out); + return false; } - bool GetFolder(const char* in, AZStd::string& out, bool bFirst /* = false*/) - { - if (!in || in[0] == '\0') - { - return false; - } + out = AZ::IO::PathView(in).Filename().Native(); + return !out.empty(); + } - if (!bFirst) - { - out = AZ::IO::PathView(in).ParentPath().Filename().Native(); - return !out.empty(); - } - else - { - AZStd::string_view relativePath = AZ::IO::PathView(in).RelativePath().Native(); - size_t nextSeparator = relativePath.find_first_of(AZ_CORRECT_FILESYSTEM_SEPARATOR); - out = nextSeparator != AZStd::string_view::npos ? relativePath.substr(0, nextSeparator) : relativePath; - return !out.empty(); - } + bool GetFileName(const char* in, AZStd::string& out) + { + if (!in || in[0] == '\0') + { + return false; } - bool GetFullFileName(const char* in, AZStd::string& out) - { - if (!in || in[0] == '\0') - { - return false; - } + out = AZ::IO::PathView(in).Stem().Native(); + return !out.empty(); + } - out = AZ::IO::PathView(in).Filename().Native(); - return !out.empty(); + bool GetExtension(const char* in, AZStd::string& out, bool includeDot) + { + if (!in || in[0] == '\0') + { + return false; } - bool GetFileName(const char* in, AZStd::string& out) + AZStd::string_view extensionView = AZ::IO::PathView(in).Extension().Native(); + // PathView returns extensions with the character, so remove the + // if it is not included + if (!includeDot && extensionView.starts_with(AZ_FILESYSTEM_EXTENSION_SEPARATOR)) { - if (!in || in[0] == '\0') + extensionView.remove_prefix(1); + } + out = extensionView; + return !out.empty(); + } + + void ReplaceFullName(AZStd::string& inout, const char* pFileName /* = nullptr*/, const char* pFileExtension /* = nullptr*/) + { + //strip the full file name if it has one + AZ::IO::Path path(AZStd::move(inout)); + path.RemoveFilename(); + if (pFileName) + { + path /= pFileName; + } + if (pFileExtension) + { + path.ReplaceExtension(pFileExtension); + } + inout = AZStd::move(path.Native()); + } + + void ReplaceExtension(AZStd::string& inout, const char* newExtension /* = nullptr*/) + { + //treat this as a strip + if (!newExtension || newExtension[0] == '\0') + { + return; + } + AZ::IO::Path path(AZStd::move(inout)); + path.ReplaceExtension(newExtension); + inout = AZStd::move(path.Native()); + } + + AZStd::string& AppendSeparator(AZStd::string& inout) + { + if (inout.ends_with(AZ_WRONG_FILESYSTEM_SEPARATOR)) + { + inout.replace(inout.end() - 1, inout.end(), 1, AZ_CORRECT_FILESYSTEM_SEPARATOR); + } + else if (!inout.ends_with(AZ_CORRECT_FILESYSTEM_SEPARATOR)) + { + inout.append(1, AZ_CORRECT_FILESYSTEM_SEPARATOR); + } + return inout; + } + } // namespace Path + + namespace Json + { + /* + According to http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf: + A string is a sequence of Unicode code points wrapped with quotation marks (U+0022). All characters may be + placed within the quotation marks except for the characters that must be escaped: quotation mark (U+0022), + reverse solidus (U+005C), and the control characters U+0000 to U+001F. + */ + AZStd::string& ToEscapedString(AZStd::string& inout) + { + size_t strSize = inout.size(); + + for (size_t i = 0; i < strSize; ++i) + { + char character = inout[i]; + + // defaults to 1 if it hits any cases except default + size_t jumpChar = 1; + switch (character) { - return false; + case '"': + inout.insert(i, "\\"); + break; + + case '\\': + inout.insert(i, "\\"); + break; + + case '/': + inout.insert(i, "\\"); + break; + + case '\b': + inout.replace(i, i + 1, "\\b"); + break; + + case '\f': + inout.replace(i, i + 1, "\\f"); + break; + + case '\n': + inout.replace(i, i + 1, "\\n"); + break; + + case '\r': + inout.replace(i, i + 1, "\\r"); + break; + + case '\t': + inout.replace(i, i + 1, "\\t"); + break; + + default: + /* + Control characters U+0000 to U+001F may be represented as a six - character sequence : a reverse solidus, + followed by the lowercase letter u, followed by four hexadecimal digits that encode the code point. + */ + if (character >= '\x0000' && character <= '\x001f') + { + // jumping "\uXXXX" characters + jumpChar = 6; + + AZStd::string hexStr = AZStd::string::format("\\u%04x", static_cast(character)); + inout.replace(i, i + 1, hexStr); + } + else + { + jumpChar = 0; + } } - out = AZ::IO::PathView(in).Stem().Native(); - return !out.empty(); + i += jumpChar; + strSize += jumpChar; } - bool GetExtension(const char* in, AZStd::string& out, bool includeDot) - { - if (!in || in[0] == '\0') - { - return false; - } + return inout; + } + } // namespace Json - AZStd::string_view extensionView = AZ::IO::PathView(in).Extension().Native(); - // PathView returns extensions with the character, so remove the - // if it is not included - if (!includeDot && extensionView.starts_with(AZ_FILESYSTEM_EXTENSION_SEPARATOR)) - { - extensionView.remove_prefix(1); - } - out = extensionView; - return !out.empty(); - } + namespace Base64 + { + static const char base64pad = '='; - void ReplaceFullName(AZStd::string& inout, const char* pFileName /* = nullptr*/, const char* pFileExtension /* = nullptr*/) - { - //strip the full file name if it has one - AZ::IO::Path path(AZStd::move(inout)); - path.RemoveFilename(); - if (pFileName) - { - path /= pFileName; - } - if (pFileExtension) - { - path.ReplaceExtension(pFileExtension); - } - inout = AZStd::move(path.Native()); - } + static const char c_base64Table[] = + { + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789+/" + }; - void ReplaceExtension(AZStd::string& inout, const char* newExtension /* = nullptr*/) - { - //treat this as a strip - if (!newExtension || newExtension[0] == '\0') - { - return; - } - AZ::IO::Path path(AZStd::move(inout)); - path.ReplaceExtension(newExtension); - inout = AZStd::move(path.Native()); - } + static const AZ::u8 c_inverseBase64Table[] = + { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3e, 0xff, 0xff, 0xff, 0x3f, + 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, + 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff + }; - AZStd::string& AppendSeparator(AZStd::string& inout) - { - if (inout.ends_with(AZ_WRONG_FILESYSTEM_SEPARATOR)) - { - inout.replace(inout.end() - 1, inout.end(), 1, AZ_CORRECT_FILESYSTEM_SEPARATOR); - } - else if (!inout.ends_with(AZ_CORRECT_FILESYSTEM_SEPARATOR)) - { - inout.append(1, AZ_CORRECT_FILESYSTEM_SEPARATOR); - } - return inout; - } - } // namespace Path + bool IsValidEncodedChar(const char encodedChar) + { + return c_inverseBase64Table[static_cast(encodedChar)] != 0xff; + } - namespace Json + AZStd::string Encode(const AZ::u8* in, const size_t size) { /* - According to http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf: - A string is a sequence of Unicode code points wrapped with quotation marks (U+0022). All characters may be - placed within the quotation marks except for the characters that must be escaped: quotation mark (U+0022), - reverse solidus (U+005C), and the control characters U+0000 to U+001F. + figure retrieved from the Base encoding rfc https://tools.ietf.org/html/rfc4648 + +--first octet--+-second octet--+--third octet--+ + |7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0| + +-----------+---+-------+-------+---+-----------+ + |5 4 3 2 1 0|5 4 3 2 1 0|5 4 3 2 1 0|5 4 3 2 1 0| + +--1.index--+--2.index--+--3.index--+--4.index--+ */ - AZStd::string& ToEscapedString(AZStd::string& inout) + AZStd::string result; + + const size_t remainder = size % 3; + const size_t alignEndSize = size - remainder; + const AZ::u8* encodeBuf = in; + size_t encodeIndex = 0; + for (; encodeIndex < alignEndSize; encodeIndex += 3) { - size_t strSize = inout.size(); - - for (size_t i = 0; i < strSize; ++i) - { - char character = inout[i]; - - // defaults to 1 if it hits any cases except default - size_t jumpChar = 1; - switch (character) - { - case '"': - inout.insert(i, "\\"); - break; - - case '\\': - inout.insert(i, "\\"); - break; - - case '/': - inout.insert(i, "\\"); - break; - - case '\b': - inout.replace(i, i + 1, "\\b"); - break; - - case '\f': - inout.replace(i, i + 1, "\\f"); - break; - - case '\n': - inout.replace(i, i + 1, "\\n"); - break; - - case '\r': - inout.replace(i, i + 1, "\\r"); - break; - - case '\t': - inout.replace(i, i + 1, "\\t"); - break; - - default: - /* - Control characters U+0000 to U+001F may be represented as a six - character sequence : a reverse solidus, - followed by the lowercase letter u, followed by four hexadecimal digits that encode the code point. - */ - if (character >= '\x0000' && character <= '\x001f') - { - // jumping "\uXXXX" characters - jumpChar = 6; - - AZStd::string hexStr = AZStd::string::format("\\u%04x", static_cast(character)); - inout.replace(i, i + 1, hexStr); - } - else - { - jumpChar = 0; - } - } - - i += jumpChar; - strSize += jumpChar; - } - - return inout; - } - } // namespace Json - - namespace Base64 - { - static const char base64pad = '='; - - static const char c_base64Table[] = - { - "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - "abcdefghijklmnopqrstuvwxyz" - "0123456789+/" - }; - - static const AZ::u8 c_inverseBase64Table[] = - { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3e, 0xff, 0xff, 0xff, 0x3f, - 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, - 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, - 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - }; - - bool IsValidEncodedChar(const char encodedChar) - { - return c_inverseBase64Table[static_cast(encodedChar)] != 0xff; - } - - AZStd::string Encode(const AZ::u8* in, const size_t size) - { - /* - figure retrieved from the Base encoding rfc https://tools.ietf.org/html/rfc4648 - +--first octet--+-second octet--+--third octet--+ - |7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0| - +-----------+---+-------+-------+---+-----------+ - |5 4 3 2 1 0|5 4 3 2 1 0|5 4 3 2 1 0|5 4 3 2 1 0| - +--1.index--+--2.index--+--3.index--+--4.index--+ - */ - AZStd::string result; - - const size_t remainder = size % 3; - const size_t alignEndSize = size - remainder; - const AZ::u8* encodeBuf = in; - size_t encodeIndex = 0; - for (; encodeIndex < alignEndSize; encodeIndex += 3) - { - encodeBuf = &in[encodeIndex]; - - result.push_back(c_base64Table[(encodeBuf[0] & 0xfc) >> 2]); - result.push_back(c_base64Table[((encodeBuf[0] & 0x03) << 4) | ((encodeBuf[1] & 0xf0) >> 4)]); - result.push_back(c_base64Table[((encodeBuf[1] & 0x0f) << 2) | ((encodeBuf[2] & 0xc0) >> 6)]); - result.push_back(c_base64Table[encodeBuf[2] & 0x3f]); - } - encodeBuf = &in[encodeIndex]; - if (remainder == 2) - { - result.push_back(c_base64Table[(encodeBuf[0] & 0xfc) >> 2]); - result.push_back(c_base64Table[((encodeBuf[0] & 0x03) << 4) | ((encodeBuf[1] & 0xf0) >> 4)]); - result.push_back(c_base64Table[((encodeBuf[1] & 0x0f) << 2)]); - result.push_back(base64pad); - } - else if (remainder == 1) - { - result.push_back(c_base64Table[(encodeBuf[0] & 0xfc) >> 2]); - result.push_back(c_base64Table[(encodeBuf[0] & 0x03) << 4]); - result.push_back(base64pad); - result.push_back(base64pad); - } - return result; + result.push_back(c_base64Table[(encodeBuf[0] & 0xfc) >> 2]); + result.push_back(c_base64Table[((encodeBuf[0] & 0x03) << 4) | ((encodeBuf[1] & 0xf0) >> 4)]); + result.push_back(c_base64Table[((encodeBuf[1] & 0x0f) << 2) | ((encodeBuf[2] & 0xc0) >> 6)]); + result.push_back(c_base64Table[encodeBuf[2] & 0x3f]); } - bool Decode(AZStd::vector& out, const char* in, const size_t size) + encodeBuf = &in[encodeIndex]; + if (remainder == 2) { - if (size % 4 != 0) - { - AZ_Warning("StringFunc", size % 4 == 0, "Base 64 encoded data length must be multiple of 4"); - return false; - } - - AZStd::vector result; - result.reserve(size * 3 / 4); - const char* decodeBuf = in; - size_t decodeIndex = 0; - for (; decodeIndex < size; decodeIndex += 4) - { - decodeBuf = &in[decodeIndex]; - //Check if each character is a valid Base64 encoded character - { - // First Octet - if (!IsValidEncodedChar(decodeBuf[0])) - { - AZ_Warning("StringFunc", false, "Invalid Base64 encoded text at offset %tu", AZStd::distance(in, &decodeBuf[0])); - return false; - } - if (!IsValidEncodedChar(decodeBuf[1])) - { - AZ_Warning("StringFunc", false, "Invalid Base64 encoded text at offset %tu", AZStd::distance(in, &decodeBuf[1])); - return false; - } - - result.push_back((c_inverseBase64Table[static_cast(decodeBuf[0])] << 2) | ((c_inverseBase64Table[static_cast(decodeBuf[1])] & 0x30) >> 4)); - } - - { - // Second Octet - if (decodeBuf[2] == base64pad) - { - break; - } - - if (!IsValidEncodedChar(decodeBuf[2])) - { - AZ_Warning("StringFunc", false, "Invalid Base64 encoded text at offset %tu", AZStd::distance(in, &decodeBuf[2])); - return false; - } - - result.push_back(((c_inverseBase64Table[static_cast(decodeBuf[1])] & 0x0f) << 4) | ((c_inverseBase64Table[static_cast(decodeBuf[2])] & 0x3c) >> 2)); - } - - { - // Third Octet - if (decodeBuf[3] == base64pad) - { - break; - } - - if (!IsValidEncodedChar(decodeBuf[3])) - { - AZ_Warning("StringFunc", false, "Invalid Base64 encoded text at offset %tu", AZStd::distance(in, &decodeBuf[3])); - return false; - } - - result.push_back(((c_inverseBase64Table[static_cast(decodeBuf[2])] & 0x03) << 6) | (c_inverseBase64Table[static_cast(decodeBuf[3])] & 0x3f)); - } - } - - out = AZStd::move(result); - return true; + result.push_back(c_base64Table[(encodeBuf[0] & 0xfc) >> 2]); + result.push_back(c_base64Table[((encodeBuf[0] & 0x03) << 4) | ((encodeBuf[1] & 0xf0) >> 4)]); + result.push_back(c_base64Table[((encodeBuf[1] & 0x0f) << 2)]); + result.push_back(base64pad); } + else if (remainder == 1) + { + result.push_back(c_base64Table[(encodeBuf[0] & 0xfc) >> 2]); + result.push_back(c_base64Table[(encodeBuf[0] & 0x03) << 4]); + result.push_back(base64pad); + result.push_back(base64pad); + } + + return result; } - namespace Utf8 + bool Decode(AZStd::vector& out, const char* in, const size_t size) { - bool CheckNonAsciiChar(const AZStd::string& in) + if (size % 4 != 0) { - for (int i = 0; i < in.length(); ++i) - { - char byte = in[i]; - if (byte & 0x80) - { - return true; - } - } + AZ_Warning("StringFunc", size % 4 == 0, "Base 64 encoded data length must be multiple of 4"); return false; } + + AZStd::vector result; + result.reserve(size * 3 / 4); + const char* decodeBuf = in; + size_t decodeIndex = 0; + for (; decodeIndex < size; decodeIndex += 4) + { + decodeBuf = &in[decodeIndex]; + //Check if each character is a valid Base64 encoded character + { + // First Octet + if (!IsValidEncodedChar(decodeBuf[0])) + { + AZ_Warning("StringFunc", false, "Invalid Base64 encoded text at offset %tu", AZStd::distance(in, &decodeBuf[0])); + return false; + } + if (!IsValidEncodedChar(decodeBuf[1])) + { + AZ_Warning("StringFunc", false, "Invalid Base64 encoded text at offset %tu", AZStd::distance(in, &decodeBuf[1])); + return false; + } + + result.push_back((c_inverseBase64Table[static_cast(decodeBuf[0])] << 2) | ((c_inverseBase64Table[static_cast(decodeBuf[1])] & 0x30) >> 4)); + } + + { + // Second Octet + if (decodeBuf[2] == base64pad) + { + break; + } + + if (!IsValidEncodedChar(decodeBuf[2])) + { + AZ_Warning("StringFunc", false, "Invalid Base64 encoded text at offset %tu", AZStd::distance(in, &decodeBuf[2])); + return false; + } + + result.push_back(((c_inverseBase64Table[static_cast(decodeBuf[1])] & 0x0f) << 4) | ((c_inverseBase64Table[static_cast(decodeBuf[2])] & 0x3c) >> 2)); + } + + { + // Third Octet + if (decodeBuf[3] == base64pad) + { + break; + } + + if (!IsValidEncodedChar(decodeBuf[3])) + { + AZ_Warning("StringFunc", false, "Invalid Base64 encoded text at offset %tu", AZStd::distance(in, &decodeBuf[3])); + return false; + } + + result.push_back(((c_inverseBase64Table[static_cast(decodeBuf[2])] & 0x03) << 6) | (c_inverseBase64Table[static_cast(decodeBuf[3])] & 0x3f)); + } + } + + out = AZStd::move(result); + return true; } - } // namespace StringFunc -} // namespace AZ + } + + namespace Utf8 + { + bool CheckNonAsciiChar(const AZStd::string& in) + { + for (int i = 0; i < in.length(); ++i) + { + char byte = in[i]; + if (byte & 0x80) + { + return true; + } + } + return false; + } + } +} // namespace AZ::StringFunc diff --git a/Code/Framework/AzCore/AzCore/StringFunc/StringFunc.h b/Code/Framework/AzCore/AzCore/StringFunc/StringFunc.h index 1e651afc93..55236a0fff 100644 --- a/Code/Framework/AzCore/AzCore/StringFunc/StringFunc.h +++ b/Code/Framework/AzCore/AzCore/StringFunc/StringFunc.h @@ -485,10 +485,11 @@ namespace AZ //! CalculateBranchToken /*! Calculate the branch token that is used for asset processor connection negotiations * - * \param appRootPath - The absolute path of the app root to base the token calculation on + * \param engineRootPath - The absolute path to the engine root to base the token calculation on * \param token - The result of the branch token calculation */ - void CalculateBranchToken(const AZStd::string& appRootPath, AZStd::string& token); + void CalculateBranchToken(AZStd::string_view engineRootPath, AZStd::string& token); + void CalculateBranchToken(AZStd::string_view engineRootPath, AZ::IO::FixedMaxPathString& token); } ////////////////////////////////////////////////////////////////////////// diff --git a/Code/Framework/AzCore/AzCore/Task/TaskGraphSystemComponent.cpp b/Code/Framework/AzCore/AzCore/Task/TaskGraphSystemComponent.cpp index 56b56e96a1..1cacef7ff3 100644 --- a/Code/Framework/AzCore/AzCore/Task/TaskGraphSystemComponent.cpp +++ b/Code/Framework/AzCore/AzCore/Task/TaskGraphSystemComponent.cpp @@ -30,8 +30,13 @@ namespace AZ if (Interface::Get() == nullptr) { + #if (AZ_TRAIT_THREAD_NUM_TASK_GRAPH_WORKER_THREADS) + const uint32_t numberOfWorkerThreads = AZ_TRAIT_THREAD_NUM_TASK_GRAPH_WORKER_THREADS; + #else + const uint32_t numberOfWorkerThreads = Threading::CalcNumWorkerThreads(cl_taskGraphThreadsConcurrencyRatio, cl_taskGraphThreadsMinNumber, cl_taskGraphThreadsNumReserved); + #endif // (AZ_TRAIT_THREAD_NUM_TASK_GRAPH_WORKER_THREADS) Interface::Register(this); // small window that another thread can try to use taskgraph between this line and the set instance. - m_taskExecutor = aznew TaskExecutor(Threading::CalcNumWorkerThreads(cl_taskGraphThreadsConcurrencyRatio, cl_taskGraphThreadsMinNumber, cl_taskGraphThreadsNumReserved)); + m_taskExecutor = aznew TaskExecutor(numberOfWorkerThreads); TaskExecutor::SetInstance(m_taskExecutor); } } diff --git a/Code/Framework/AzCore/AzCore/Time/ITime.h b/Code/Framework/AzCore/AzCore/Time/ITime.h index a97ba2319a..a61b629f35 100644 --- a/Code/Framework/AzCore/AzCore/Time/ITime.h +++ b/Code/Framework/AzCore/AzCore/Time/ITime.h @@ -12,8 +12,8 @@ #include #include #include -#include #include +#include namespace AZ { @@ -24,15 +24,21 @@ namespace AZ //! Using int64_t as the underlying type, this is good to represent approximately 292,471 years AZ_TYPE_SAFE_INTEGRAL(TimeUs, int64_t); + namespace Time + { + static const AZ::TimeMs ZeroTimeMs = AZ::TimeMs{ 0 }; + static const AZ::TimeUs ZeroTimeUs = AZ::TimeUs{ 0 }; + } + //! @class ITime //! @brief This is an AZ::Interface<> for managing time related operations. //! AZ::ITime and associated types may not operate in realtime. These abstractions are to allow our application //! simulation to operate both slower and faster than realtime in a well defined and user controllable manner - //! The rate at which time passes for AZ::ITime is controlled by the cvar t_scale - //! t_scale == 0 means simulation time should halt - //! 0 < t_scale < 1 will cause time to pass slower than realtime, with t_scale 0.1 being roughly 1/10th realtime - //! t_scale == 1 will cause time to pass at roughly realtime - //! t_scale > 1 will cause time to pass faster than normal, with t_scale 10 being roughly 10x realtime + //! The rate at which time passes for AZ::ITime is controlled by the cvar t_simulationTickScale + //! t_simulationTickScale == 0 means simulation time should halt + //! 0 < t_simulationTickScale < 1 will cause time to pass slower than realtime, with t_simulationTickScale 0.1 being roughly 1/10th realtime + //! t_simulationTickScale == 1 will cause time to pass at roughly realtime + //! t_simulationTickScale > 1 will cause time to pass faster than normal, with t_simulationTickScale 10 being roughly 10x realtime class ITime { public: @@ -41,15 +47,72 @@ namespace AZ ITime() = default; virtual ~ITime() = default; - //! Returns the number of milliseconds since application start. - //! @return the number of milliseconds that have elapsed since application start + //! Returns the number of milliseconds since application start scaled by t_simulationTickScale. + //! @return The number of milliseconds that have elapsed since application start. virtual TimeMs GetElapsedTimeMs() const = 0; - //! Returns the number of microseconds since application start. + //! Returns the number of microseconds since application start scaled by t_simulationTickScale. //! @return the number of microseconds that have elapsed since application start virtual TimeUs GetElapsedTimeUs() const = 0; + + //! Returns the number of milliseconds since application start. + //! This value is not affected by the t_simulationTickScale cvar. + //! @return The number of milliseconds that have elapsed since application start. + virtual TimeMs GetRealElapsedTimeMs() const = 0; + + //! Returns the number of microseconds since application start. + //! This value is not affected by the t_simulationTickScale cvar. + //! @return The number of microseconds that have elapsed since application start. + virtual TimeUs GetRealElapsedTimeUs() const = 0; + + //! Returns the current simulation tick delta time. + //! This is affected by the cvars t_simulationTickScale, t_simulationTickDeltaOverride, and t_maxGameTickDelta. + //! @return The number of microseconds elapsed since the last game tick. + virtual TimeUs GetSimulationTickDeltaTimeUs() const = 0; + + //! Returns the non-manipulated tick time. + //! @return The number of microseconds elapsed since the last game tick. + virtual TimeUs GetRealTickDeltaTimeUs() const = 0; + + //! Returns the time since application start of when the last simulation tick was updated. + virtual TimeUs GetLastSimulationTickTime() const = 0; + + //! If > 0 this will override the simulation tick delta time with the provided value. + //! When enabled this will ignore any set simulation tick scale. + //! Setting to 0 disables the override. + //! @param timeMs The time in milliseconds to use for the tick delta. + virtual void SetSimulationTickDeltaOverride(TimeMs timeMs) = 0; + + //! Returns the current simulation tick override. + //! 0 means disabled. + //! @returns The current simulation tick override in milliseconds. + virtual TimeMs GetSimulationTickDeltaOverride() const = 0; + + //! A scalar amount to adjust the passage of time by, 1.0 == realtime, 0.5 == half realtime, 2.0 == doubletime. + //! @param scale The scalar value to apply to the simulation time. + virtual void SetSimulationTickScale(float scale) = 0; + + //! Returns the current simulation tick scale. + //! 1.0 == realtime, 0.5 == half realtime, 2.0 == doubletime. + //! @returns The simulation tick scale value. + virtual float GetSimulationTickScale() const = 0; + + //! The minimum rate to force the simulation tick to run. + //! 0 for as fast as possible. 30 = ~33ms, 60 = ~16ms. + //! Setting to 0 will disable rate limiting. + //! @note It is not guaranteed to hit the requested tick rate exactly. + //! @param rate The rate in frames per second. + virtual void SetSimulationTickRate(int rate) = 0; + + //! Return the current simulation tick rate. + //! 0 means disabled. + //! @return The rate in frames per second. + virtual int32_t GetSimulationTickRate() const = 0; AZ_DISABLE_COPY_MOVE(ITime); + + static const AZ::TimeMs ZeroTimeMs = AZ::TimeMs{ 0 }; + static const AZ::TimeUs ZeroTimeUs = AZ::TimeUs{ 0 }; }; // EBus wrapper for ScriptCanvas @@ -74,6 +137,36 @@ namespace AZ return AZ::Interface::Get()->GetElapsedTimeUs(); } + //! This is a simple convenience wrapper + inline TimeMs GetRealElapsedTimeMs() + { + return AZ::Interface::Get()->GetRealElapsedTimeMs(); + } + + //! This is a simple convenience wrapper + inline TimeUs GetRealElapsedTimeUs() + { + return AZ::Interface::Get()->GetRealElapsedTimeUs(); + } + + //! This is a simple convenience wrapper + inline TimeUs GetSimulationTickDeltaTimeUs() + { + return AZ::Interface::Get()->GetSimulationTickDeltaTimeUs(); + } + + //! This is a simple convenience wrapper + inline TimeUs GetRealTickDeltaTimeUs() + { + return AZ::Interface::Get()->GetRealTickDeltaTimeUs(); + } + + //! This is a simple convenience wrapper + inline TimeUs GetLastSimulationTickTime() + { + return AZ::Interface::Get()->GetLastSimulationTickTime(); + } + //! Converts from milliseconds to microseconds inline TimeUs TimeMsToUs(TimeMs value) { @@ -92,12 +185,24 @@ namespace AZ return static_cast(value) / 1000.0f; } + //! Converts from milliseconds to seconds + inline double TimeMsToSecondsDouble(TimeMs value) + { + return static_cast(value) / 1000.0; + } + //! Converts from microseconds to seconds inline float TimeUsToSeconds(TimeUs value) { return static_cast(value) / 1000000.0f; } + //! Converts from microseconds to seconds + inline double TimeUsToSecondsDouble(TimeUs value) + { + return static_cast(value) / 1000000.0; + } + //! Converts from milliseconds to AZStd::chrono::time_point inline auto TimeMsToChrono(TimeMs value) { @@ -113,6 +218,20 @@ namespace AZ auto chronoValue = AZStd::chrono::microseconds(aznumeric_cast(value)); return epoch + chronoValue; } + + //! A utility function to convert from seconds to TimeMs + inline TimeMs SecondsToTimeMs(const double value) + { + const double valueMs = value * 1000.0; + return static_cast(static_cast(valueMs)); + } + + //! A utility function to convert from seconds to TimeUs + inline TimeUs SecondsToTimeUs(const double value) + { + const double valueMs = value * 1000000.0; + return static_cast(static_cast(valueMs)); + } } // namespace AZ AZ_TYPE_SAFE_INTEGRAL_SERIALIZEBINDING(AZ::TimeMs); diff --git a/Code/Framework/AzCore/AzCore/Time/TimeSystem.cpp b/Code/Framework/AzCore/AzCore/Time/TimeSystem.cpp new file mode 100644 index 0000000000..a5e0908ac4 --- /dev/null +++ b/Code/Framework/AzCore/AzCore/Time/TimeSystem.cpp @@ -0,0 +1,213 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include +#include +#include +#include + +namespace AZ +{ + namespace + { + void cvar_t_simulationTickScale_Changed(const float& value) + { + if (auto* timeSystem = AZ::Interface::Get()) + { + timeSystem->SetSimulationTickScale(value); + } + } + + void cvar_t_simulationTickDeltaOverride_Changed(const float& value) + { + if (auto* timeSystem = AZ::Interface::Get()) + { + timeSystem->SetSimulationTickDeltaOverride(AZ::SecondsToTimeMs(value)); + } + } + + void cvar_t_simulationTickRate_Changed(const int& rate) + { + AZ_Warning("tick", false, "Simulation tick rate limiting is currently disabled. Setting will not be applied."); + if (auto* timeSystem = AZ::Interface::Get()) + { + timeSystem->SetSimulationTickRate(rate); + } + } + } // namespace + + AZ_CVAR(float, t_simulationTickScale, 1.0f, cvar_t_simulationTickScale_Changed, AZ::ConsoleFunctorFlags::Null, + "A scalar amount to adjust time passage by, 1.0 == realtime, 0.5 == half realtime, 2.0 == doubletime"); + + AZ_CVAR(float, t_simulationTickDeltaOverride, 0.0f, cvar_t_simulationTickDeltaOverride_Changed, AZ::ConsoleFunctorFlags::Null, + "If > 0, overrides the simulation tick delta time with the provided value (Seconds) and ignores any t_simulationTickScale value."); + + AZ_CVAR(int, t_simulationTickRate, 0, cvar_t_simulationTickRate_Changed, AZ::ConsoleFunctorFlags::Null, + "The minimum rate to force the game simulation tick to run. 0 for as fast as possible. 30 = ~33ms, 60 = ~16ms"); + + void TimeSystem::Reflect(AZ::ReflectContext* context) + { + if (AZ::SerializeContext* serializeContext = azrtti_cast(context)) + { + serializeContext->Class() + ->Version(1); + } + } + + TimeSystem::TimeSystem() + { + m_lastInvokedTimeUs = static_cast(AZStd::GetTimeNowMicroSecond()); + AZ::Interface::Register(this); + ITimeRequestBus::Handler::BusConnect(); + } + + TimeSystem::~TimeSystem() + { + AZ::Interface::Unregister(this); + ITimeRequestBus::Handler::BusDisconnect(); + } + + TimeMs TimeSystem::GetElapsedTimeMs() const + { + return AZ::TimeUsToMs(GetElapsedTimeUs()); + } + + TimeUs TimeSystem::GetElapsedTimeUs() const + { + TimeUs currentTime = static_cast(AZStd::GetTimeNowMicroSecond()); + TimeUs deltaTime = currentTime - m_lastInvokedTimeUs; + + if (t_simulationTickScale != 1.0f) + { + const float floatDelta = AZStd::GetMax(static_cast(deltaTime) * t_simulationTickScale, 1.0f); + deltaTime = static_cast(static_cast(floatDelta)); + } + + m_accumulatedTimeUs += deltaTime; + m_lastInvokedTimeUs = currentTime; + + return m_accumulatedTimeUs; + } + + TimeMs TimeSystem::GetRealElapsedTimeMs() const + { + return AZ::TimeUsToMs(GetRealElapsedTimeUs()); + } + + TimeUs TimeSystem::GetRealElapsedTimeUs() const + { + return static_cast(AZStd::GetTimeNowMicroSecond()); + } + + TimeUs TimeSystem::GetSimulationTickDeltaTimeUs() const + { + return m_simulationTickDeltaTimeUs; + } + + TimeUs TimeSystem::GetRealTickDeltaTimeUs() const + { + return m_realTickDeltaTimeUs; + } + + TimeUs TimeSystem::GetLastSimulationTickTime() const + { + return m_lastSimulationTickTimeUs; + } + + TimeUs TimeSystem::AdvanceTickDeltaTimes() + { + const TimeUs currentTimeUs = static_cast(AZStd::GetTimeNowMicroSecond()); + + //real time + m_realTickDeltaTimeUs = currentTimeUs - m_lastSimulationTickTimeUs; + + //game time + if (m_simulationTickDeltaOverride > AZ::Time::ZeroTimeUs) + { + m_simulationTickDeltaTimeUs = m_simulationTickDeltaOverride; + m_lastSimulationTickTimeUs = currentTimeUs; + return m_simulationTickDeltaTimeUs; + } + + m_simulationTickDeltaTimeUs = currentTimeUs - m_lastSimulationTickTimeUs; + + if (!AZ::IsClose(t_simulationTickScale, 1.0f)) + { + const double floatDelta = AZStd::GetMax(static_cast(m_simulationTickDeltaTimeUs) * static_cast(t_simulationTickScale), 1.0); + m_simulationTickDeltaTimeUs = static_cast(static_cast(floatDelta)); + } + m_lastSimulationTickTimeUs = currentTimeUs; + + return m_simulationTickDeltaTimeUs; + } + + void TimeSystem::ApplyTickRateLimiterIfNeeded() + { + // Currently disabling the Tick rate limiter as there are some reported issues when using it. + #ifdef ENABLE_TICK_RATE_LIMITER + // If tick rate limiting is on, ensure (1 / t_simulationTickRate) ms has elapsed since the last frame, + // sleeping if there's still time remaining. + if (t_simulationTickRate > 0) + { + const TimeUs currentTimeUs = AZ::GetRealElapsedTimeUs(); + const TimeUs timeUntilNextTick = (m_lastSimulationTickTimeUs + m_simulationTickLimitTimeUs) - currentTimeUs; + if (timeUntilNextTick > AZ::Time::ZeroTimeUs) + { + AZ_TracePrintf("tick", "Sleeping for %.2f", AZ::TimeUsToSecondsDouble(timeUntilNextTick)); + AZStd::this_thread::sleep_for(AZStd::chrono::microseconds(static_cast(timeUntilNextTick))); + } + } + #endif // #ifdef ENABLE_TICK_RATE_LIMITER + } + + void TimeSystem::SetSimulationTickDeltaOverride(TimeMs timeMs) + { + const TimeUs timeUs = AZ::TimeMsToUs(timeMs); + if (timeUs != m_simulationTickDeltaOverride) + { + m_simulationTickDeltaOverride = timeUs; + t_simulationTickDeltaOverride = AZ::TimeUsToSeconds(timeUs); //update the cvar + } + } + + TimeMs TimeSystem::GetSimulationTickDeltaOverride() const + { + return AZ::TimeUsToMs(m_simulationTickDeltaOverride); + } + + void TimeSystem::SetSimulationTickScale(float scale) + { + if (!AZ::IsClose(scale, t_simulationTickScale)) + { + t_simulationTickScale = scale; + } + } + + float TimeSystem::GetSimulationTickScale() const + { + return t_simulationTickScale; + } + + void TimeSystem::SetSimulationTickRate(int rate) + { + m_simulationTickLimitRate = AZStd::abs(rate); + if (m_simulationTickLimitRate != 0) + { + m_simulationTickLimitTimeUs = AZ::SecondsToTimeUs(1.0f / m_simulationTickLimitRate); + } + else + { + m_simulationTickLimitTimeUs = AZ::Time::ZeroTimeUs; + } + } + + int32_t TimeSystem::GetSimulationTickRate() const + { + return m_simulationTickLimitRate; + } +} // namespace AZ diff --git a/Code/Framework/AzCore/AzCore/Time/TimeSystem.h b/Code/Framework/AzCore/AzCore/Time/TimeSystem.h new file mode 100644 index 0000000000..ded70c9be5 --- /dev/null +++ b/Code/Framework/AzCore/AzCore/Time/TimeSystem.h @@ -0,0 +1,83 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#pragma once + +#include +#include + +namespace AZ +{ + class ReflectContext; + + //! Implementation of the ITime system interface. + class TimeSystem + : public ITimeRequestBus::Handler + { + public: + AZ_RTTI(AZ::TimeSystem, "{CE1C5E4F-7DC1-4248-B10C-AC55E8924A48}", AZ::ITime); + + static void Reflect(AZ::ReflectContext* context); + + TimeSystem(); + virtual ~TimeSystem(); + + //! ITime overrides. + //! @{ + TimeMs GetElapsedTimeMs() const override; + TimeUs GetElapsedTimeUs() const override; + TimeMs GetRealElapsedTimeMs() const override; + TimeUs GetRealElapsedTimeUs() const override; + TimeUs GetSimulationTickDeltaTimeUs() const override; + TimeUs GetRealTickDeltaTimeUs() const override; + TimeUs GetLastSimulationTickTime() const override; + void SetSimulationTickDeltaOverride(TimeMs timeMs) override; + TimeMs GetSimulationTickDeltaOverride() const override; + void SetSimulationTickScale(float scale) override; + float GetSimulationTickScale() const override; + void SetSimulationTickRate(int rate) override; + int32_t GetSimulationTickRate() const override; + //! @} + + //! Advances the Simulation and Real tick delta time counters. + //! This is called from the owner of the TimeSystem, ComponentApplication in Tick(). + //! @return The delta in microseconds from the last call to AdvanceTickDeltaTimes(). Value will be the same as GetSimulationTickDeltaTimeUs(). + TimeUs AdvanceTickDeltaTimes(); + + //! If t_simulationTickRate is >0 this will try to have the game delta time run at a maximum of the rate set. + //! This is called from the owner of the TimeSystem, ComponentApplication in Tick(). + //! example. If t_simulationTickRate is set to 60Fps, and the game tick delta is <17ms(60fps), this will add a sleep for the remaining time. + //! example. If t_simulationTickRate is set to 60Fps, and the game tick delta is >=17ms(60fps), this will not sleep at all. + //! @note It is not guaranteed to hit the requested tick rate exactly. + void ApplyTickRateLimiterIfNeeded(); + private: + //! Used to calculate the delta time between calls to GetElapsedTimeMs/TimeUs(). + //! Mutable to allow GetElapsedTimeMs/TimeUs() to be a const functions. + mutable TimeUs m_lastInvokedTimeUs = AZ::Time::ZeroTimeUs; + + //! Accumulates the delta time of GetElapsedTimeMs/TimeUs() calls. + //! Mutable to allow GetElapsedTimeMs/TimeUs() to be a const functions. + mutable TimeUs m_accumulatedTimeUs = AZ::Time::ZeroTimeUs; + + //! The current game tick delta time. + //! Can be affected by time system cvars. + //! Updated in AdvanceTickDeltaTimes(). + TimeUs m_simulationTickDeltaTimeUs = AZ::Time::ZeroTimeUs; + + //! The current real tick delta time. + //! Will not be affected by time system cvars. + //! Updated in AdvanceTickDeltaTimes(). + TimeUs m_realTickDeltaTimeUs = AZ::Time::ZeroTimeUs; + + TimeUs m_lastSimulationTickTimeUs = AZ::Time::ZeroTimeUs; //!< Used to determine the game tick delta time. + + TimeUs m_simulationTickDeltaOverride = AZ::Time::ZeroTimeUs; // -#include -#include - -namespace AZ -{ - AZ_CVAR(float, t_scale, 1.0f, nullptr, AZ::ConsoleFunctorFlags::Null, "A scalar amount to adjust time passage by, 1.0 == realtime, 0.5 == half realtime, 2.0 == doubletime"); - - void TimeSystemComponent::Reflect(AZ::ReflectContext* context) - { - if (AZ::SerializeContext* serializeContext = azrtti_cast(context)) - { - serializeContext->Class() - ->Version(1); - } - } - - void TimeSystemComponent::GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided) - { - provided.push_back(AZ_CRC_CE("TimeService")); - } - - void TimeSystemComponent::GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible) - { - incompatible.push_back(AZ_CRC_CE("TimeService")); - } - - TimeSystemComponent::TimeSystemComponent() - { - m_lastInvokedTimeUs = static_cast(AZStd::GetTimeNowMicroSecond()); - AZ::Interface::Register(this); - ITimeRequestBus::Handler::BusConnect(); - } - - TimeSystemComponent::~TimeSystemComponent() - { - ITimeRequestBus::Handler::BusDisconnect(); - AZ::Interface::Unregister(this); - } - - void TimeSystemComponent::Activate() - { - ; - } - - void TimeSystemComponent::Deactivate() - { - ; - } - - TimeMs TimeSystemComponent::GetElapsedTimeMs() const - { - return TimeUsToMs(GetElapsedTimeUs()); - } - - TimeUs TimeSystemComponent::GetElapsedTimeUs() const - { - TimeUs currentTime = static_cast(AZStd::GetTimeNowMicroSecond()); - TimeUs deltaTime = currentTime - m_lastInvokedTimeUs; - - if (t_scale != 1.0f) - { - float floatDelta = static_cast(deltaTime) * t_scale; - deltaTime = static_cast(static_cast(floatDelta)); - } - - m_accumulatedTimeUs += deltaTime; - m_lastInvokedTimeUs = currentTime; - - return m_accumulatedTimeUs; - } -} diff --git a/Code/Framework/AzCore/AzCore/Time/TimeSystemComponent.h b/Code/Framework/AzCore/AzCore/Time/TimeSystemComponent.h deleted file mode 100644 index 3ab3dbc234..0000000000 --- a/Code/Framework/AzCore/AzCore/Time/TimeSystemComponent.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#pragma once - -#include -#include -#include - -namespace AZ -{ - //! Implementation of the ITime system interface. - class TimeSystemComponent - : public AZ::Component - , public ITimeRequestBus::Handler - { - public: - - AZ_COMPONENT(TimeSystemComponent, "{CE1C5E4F-7DC1-4248-B10C-AC55E8924A48}"); - - static void Reflect(AZ::ReflectContext* context); - static void GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided); - static void GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible); - - TimeSystemComponent(); - virtual ~TimeSystemComponent(); - - //! AZ::Component overrides. - //! @{ - void Activate() override; - void Deactivate() override; - //! @} - - //! ITime overrides. - //! @{ - TimeMs GetElapsedTimeMs() const override; - TimeUs GetElapsedTimeUs() const override; - //! @} - - private: - - mutable TimeUs m_lastInvokedTimeUs = TimeUs{0}; - mutable TimeUs m_accumulatedTimeUs = TimeUs{0}; - }; -} diff --git a/Code/Framework/AzCore/AzCore/UnitTest/MockComponentApplication.h b/Code/Framework/AzCore/AzCore/UnitTest/MockComponentApplication.h index 8f069da9dd..190fa09cb7 100644 --- a/Code/Framework/AzCore/AzCore/UnitTest/MockComponentApplication.h +++ b/Code/Framework/AzCore/AzCore/UnitTest/MockComponentApplication.h @@ -41,7 +41,6 @@ namespace UnitTest MOCK_METHOD0(GetSerializeContext, AZ::SerializeContext* ()); MOCK_METHOD0(GetJsonRegistrationContext, AZ::JsonRegistrationContext* ()); MOCK_METHOD0(GetBehaviorContext, AZ::BehaviorContext* ()); - MOCK_CONST_METHOD0(GetAppRoot, const char* ()); MOCK_CONST_METHOD0(GetEngineRoot, const char* ()); MOCK_CONST_METHOD0(GetExecutableFolder, const char* ()); MOCK_CONST_METHOD1(QueryApplicationType, void(AZ::ApplicationTypeQuery&)); diff --git a/Code/Framework/AzCore/AzCore/UnitTest/Mocks/MockITime.h b/Code/Framework/AzCore/AzCore/UnitTest/Mocks/MockITime.h new file mode 100644 index 0000000000..3d31056e27 --- /dev/null +++ b/Code/Framework/AzCore/AzCore/UnitTest/Mocks/MockITime.h @@ -0,0 +1,119 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ +#pragma once + +#include +#include + +namespace AZ +{ + class MockTimeSystem; + using NiceTimeSystemMock =::testing::NiceMock; + + //used if you wish to mock any of the Get time functions. + class MockTimeSystem + : public ITimeRequestBus::Handler + { + public: + MockTimeSystem() + { + AZ::Interface::Register(this); + ITimeRequestBus::Handler::BusConnect(); + } + virtual ~MockTimeSystem() + { + AZ::Interface::Unregister(this); + ITimeRequestBus::Handler::BusDisconnect(); + } + + MOCK_CONST_METHOD0(GetElapsedTimeMs, TimeMs()); + MOCK_CONST_METHOD0(GetElapsedTimeUs, TimeUs()); + MOCK_CONST_METHOD0(GetRealElapsedTimeMs, TimeMs()); + MOCK_CONST_METHOD0(GetRealElapsedTimeUs, TimeUs()); + MOCK_CONST_METHOD0(GetSimulationTickDeltaTimeUs, TimeUs()); + MOCK_CONST_METHOD0(GetRealTickDeltaTimeUs, TimeUs()); + MOCK_CONST_METHOD0(GetLastSimulationTickTime, TimeUs()); + MOCK_METHOD1(SetSimulationTickDeltaOverride, void(TimeMs)); + MOCK_CONST_METHOD0(GetSimulationTickDeltaOverride, TimeMs()); + MOCK_METHOD1(SetSimulationTickScale, void(float)); + MOCK_CONST_METHOD0(GetSimulationTickScale, float()); + MOCK_METHOD1(SetSimulationTickRate, void(int)); + MOCK_CONST_METHOD0(GetSimulationTickRate, int32_t()); + }; + + //used if you wish to override any of the Get time functions with specific functionality. + class StubTimeSystem + : public AZ::TimeSystem + { + public: + AZ_RTTI(AZ::StubTimeSystem, "{DD5D5A6A-345F-49FD-A61E-A40E63C49CFA}", AZ::TimeSystem); + + virtual AZ::TimeMs GetElapsedTimeMs() const override + { + return AZ::Time::ZeroTimeMs; + } + + virtual AZ::TimeUs GetElapsedTimeUs() const override + { + return AZ::Time::ZeroTimeUs; + } + + virtual AZ::TimeMs GetRealElapsedTimeMs() const override + { + return AZ::Time::ZeroTimeMs; + } + + virtual AZ::TimeUs GetRealElapsedTimeUs() const override + { + return AZ::Time::ZeroTimeUs; + } + + virtual AZ::TimeUs GetSimulationTickDeltaTimeUs() const override + { + return AZ::Time::ZeroTimeUs; + } + + virtual AZ::TimeUs GetRealTickDeltaTimeUs() const override + { + return AZ::Time::ZeroTimeUs; + } + + virtual AZ::TimeUs GetLastSimulationTickTime() const override + { + return AZ::Time::ZeroTimeUs; + } + + virtual void SetSimulationTickDeltaOverride([[maybe_unused]]TimeMs timeMs) override + { + } + + virtual TimeMs GetSimulationTickDeltaOverride() const override + { + return AZ::Time::ZeroTimeMs; + } + + virtual void SetSimulationTickScale([[maybe_unused]] float scale) override + { + } + + virtual float GetSimulationTickScale() const override + { + return 1.0f; + } + + virtual void SetSimulationTickRate([[maybe_unused]] int rate) override + { + } + + virtual int32_t GetSimulationTickRate() const override + { + return 0; + } + }; + +} // namespace AZ diff --git a/Code/Framework/AzCore/AzCore/UnitTest/UnitTest.h b/Code/Framework/AzCore/AzCore/UnitTest/UnitTest.h index 5244493c78..be9199b6c4 100644 --- a/Code/Framework/AzCore/AzCore/UnitTest/UnitTest.h +++ b/Code/Framework/AzCore/AzCore/UnitTest/UnitTest.h @@ -60,6 +60,7 @@ namespace UnitTest m_isAssertTest = true; m_numAssertsFailed = 0; } + int StopAssertTests() { m_isAssertTest = false; @@ -69,6 +70,11 @@ namespace UnitTest } bool m_isAssertTest; + bool m_suppressErrors = true; + bool m_suppressWarnings = true; + bool m_suppressAsserts = true; + bool m_suppressOutput = true; + bool m_suppressPrintf = true; int m_numAssertsFailed; }; @@ -114,7 +120,7 @@ namespace UnitTest // utility classes that you can derive from or contain, which suppress AZ_Asserts // and AZ_Errors to the below macros (processAssert, etc) - // If TraceBusHook or TraceBusRedirector have been started in your unit tests, + // If TraceBusHook or TraceBusRedirector have been started in your unit tests, // use AZ_TEST_START_TRACE_SUPPRESSION and AZ_TEST_STOP_TRACE_SUPPRESSION(numExpectedAsserts) macros to perform AZ_Assert and AZ_Error suppression class TraceBusRedirector : public AZ::Debug::TraceMessageBus::Handler @@ -124,16 +130,19 @@ namespace UnitTest if (UnitTest::TestRunner::Instance().m_isAssertTest) { UnitTest::TestRunner::Instance().ProcessAssert(message, file, line, false); + return true; } - else + else if (UnitTest::TestRunner::Instance().m_suppressAsserts) { GTEST_MESSAGE_AT_(file, line, message, ::testing::TestPartResult::kNonFatalFailure); + return true; } - return true; + + return false; } bool OnAssert(const char* /*message*/) override { - return true; // stop processing + return UnitTest::TestRunner::Instance().m_suppressAsserts; // stop processing } bool OnPreError(const char* /*window*/, const char* file, int line, const char* /*func*/, const char* message) override { @@ -142,6 +151,7 @@ namespace UnitTest UnitTest::TestRunner::Instance().ProcessAssert(message, file, line, false); return true; } + return false; } bool OnError(const char* /*window*/, const char* message) override @@ -149,12 +159,15 @@ namespace UnitTest if (UnitTest::TestRunner::Instance().m_isAssertTest) { UnitTest::TestRunner::Instance().ProcessAssert(message, __FILE__, __LINE__, UnitTest::AssertionExpr(false)); + return true; } - else + else if (UnitTest::TestRunner::Instance().m_suppressErrors) { GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure); + return true; } - return true; // stop processing + + return false; } bool OnPreWarning(const char* /*window*/, const char* /*fileName*/, int /*line*/, const char* /*func*/, const char* /*message*/) override { @@ -163,21 +176,21 @@ namespace UnitTest } bool OnWarning(const char* /*window*/, const char* /*message*/) override { - return true; + return UnitTest::TestRunner::Instance().m_suppressWarnings; } bool OnOutput(const char* /*window*/, const char* /*message*/) override { - return true; + return UnitTest::TestRunner::Instance().m_suppressOutput; } bool OnPrintf(const char* window, const char* message) override { if (AZStd::string_view(window) == "Memory") // We want to print out the memory leak's stack traces { - ColoredPrintf(COLOR_RED, "[ MEMORY ] %s", message); + ColoredPrintf(COLOR_RED, "[ MEMORY ] %s", message); } - return true; + return UnitTest::TestRunner::Instance().m_suppressPrintf; } }; @@ -259,7 +272,6 @@ namespace UnitTest bool m_environmentSetup = false; bool m_createdAllocator = false; }; - } diff --git a/Code/Framework/AzCore/AzCore/azcore_files.cmake b/Code/Framework/AzCore/AzCore/azcore_files.cmake index a5cc3fdcd4..30662f37c4 100644 --- a/Code/Framework/AzCore/AzCore/azcore_files.cmake +++ b/Code/Framework/AzCore/AzCore/azcore_files.cmake @@ -654,8 +654,8 @@ set(FILES Threading/ThreadUtils.h Threading/ThreadUtils.cpp Time/ITime.h - Time/TimeSystemComponent.cpp - Time/TimeSystemComponent.h + Time/TimeSystem.cpp + Time/TimeSystem.h ) # Prevent the following files from being grouped in UNITY builds diff --git a/Code/Framework/AzCore/AzCore/azcoretestcommon_files.cmake b/Code/Framework/AzCore/AzCore/azcoretestcommon_files.cmake index 6c25641f9f..e31dc803b9 100644 --- a/Code/Framework/AzCore/AzCore/azcoretestcommon_files.cmake +++ b/Code/Framework/AzCore/AzCore/azcoretestcommon_files.cmake @@ -12,5 +12,6 @@ set(FILES UnitTest/UnitTest.h UnitTest/TestTypes.h UnitTest/Mocks/MockFileIOBase.h + UnitTest/Mocks/MockITime.h UnitTest/Mocks/MockSettingsRegistry.h ) diff --git a/Code/Framework/AzCore/AzCore/std/string/memorytoascii.cpp b/Code/Framework/AzCore/AzCore/std/string/memorytoascii.cpp index 8f2d5ddf25..21f3a1c5f4 100644 --- a/Code/Framework/AzCore/AzCore/std/string/memorytoascii.cpp +++ b/Code/Framework/AzCore/AzCore/std/string/memorytoascii.cpp @@ -8,179 +8,176 @@ #include -namespace AZStd +namespace AZStd::MemoryToASCII { - namespace MemoryToASCII + AZStd::string ToString(const void* memoryAddrs, AZStd::size_t dataSize, AZStd::size_t maxShowSize, AZStd::size_t dataWidth/*=16*/, Options format/*=Options::Default*/) { - AZStd::string ToString(const void* memoryAddrs, AZStd::size_t dataSize, AZStd::size_t maxShowSize, AZStd::size_t dataWidth/*=16*/, Options format/*=Options::Default*/) + AZStd::string output; + + if ((memoryAddrs != nullptr) && (dataSize > 0)) { - AZStd::string output; + const AZ::u8 *data = reinterpret_cast(memoryAddrs); - if ((memoryAddrs != nullptr) && (dataSize > 0)) + if (static_cast(format) != 0) { - const AZ::u8 *data = reinterpret_cast(memoryAddrs); + output.reserve(8162); - if (static_cast(format) != 0) + bool showHeader = static_cast(format) & static_cast(Options::Header) ? true : false; + bool showOffset = static_cast(format) & static_cast(Options::Offset) ? true : false; + bool showBinary = static_cast(format) & static_cast(Options::Binary) ? true : false; + bool showASCII = static_cast(format) & static_cast(Options::ASCII) ? true : false; + bool showInfo = static_cast(format) & static_cast(Options::Info) ? true : false; + + // Because of the auto formatting for the headers, the min width is 3 + if (dataWidth < 3) { - output.reserve(8162); + dataWidth = 3; + } - bool showHeader = static_cast(format) & static_cast(Options::Header) ? true : false; - bool showOffset = static_cast(format) & static_cast(Options::Offset) ? true : false; - bool showBinary = static_cast(format) & static_cast(Options::Binary) ? true : false; - bool showASCII = static_cast(format) & static_cast(Options::ASCII) ? true : false; - bool showInfo = static_cast(format) & static_cast(Options::Info) ? true : false; + if (showHeader) + { + AZStd::string line1; + AZStd::string line2; + line1.reserve(1024); + line2.reserve(1024); - // Because of the auto formatting for the headers, the min width is 3 - if (dataWidth < 3) + if (showOffset) { - dataWidth = 3; + line1 += "Offset"; + line2 += "------"; + + if (showBinary || showASCII) + { + line1 += " "; + line2 += " "; + } } - if (showHeader) + if (showBinary) { - AZStd::string line1; - AZStd::string line2; - line1.reserve(1024); - line2.reserve(1024); + static const char *kHeaderName = "Data"; + static AZStd::size_t kHeaderNameSize = 4; - if (showOffset) + AZStd::size_t lineLength = (dataWidth * 3) - 1; + AZStd::size_t numPreSpaces = (lineLength - kHeaderNameSize) / 2; + AZStd::size_t numPostSpaces = lineLength - numPreSpaces - kHeaderNameSize; + + line1 += AZStd::string(numPreSpaces, ' ') + kHeaderName + AZStd::string(numPostSpaces, ' '); + //line2 += AZStd::string(lineLength, '-'); + for(size_t i=0; i 0) { - line1 += " "; - line2 += " "; - } - } - - if (showBinary) - { - static const char *kHeaderName = "Data"; - static AZStd::size_t kHeaderNameSize = 4; - - AZStd::size_t lineLength = (dataWidth * 3) - 1; - AZStd::size_t numPreSpaces = (lineLength - kHeaderNameSize) / 2; - AZStd::size_t numPostSpaces = lineLength - numPreSpaces - kHeaderNameSize; - - line1 += AZStd::string(numPreSpaces, ' ') + kHeaderName + AZStd::string(numPostSpaces, ' '); - //line2 += AZStd::string(lineLength, '-'); - for(size_t i=0; i 0) - { - line2 += "-"; - } - - line2 += AZStd::string::format("%02zx", i); + line2 += "-"; } - if (showASCII) - { - line1 += " "; - line2 += " "; - } + line2 += AZStd::string::format("%02zx", i); } if (showASCII) { - static const char *kHeaderName = "ASCII"; - static AZStd::size_t kHeaderNameSize = 5; - - AZStd::size_t numPreSpaces = (dataWidth - kHeaderNameSize) / 2; - AZStd::size_t numPostSpaces = dataWidth - numPreSpaces - kHeaderNameSize; - - line1 += AZStd::string(numPreSpaces, ' ') + kHeaderName + AZStd::string(numPostSpaces, ' '); - line2 += AZStd::string(dataWidth, '-'); + line1 += " "; + line2 += " "; } - - if (showInfo) - { - output += AZStd::string::format("Address: 0x%p Data Size:%zu Max Size:%zu\n", data, dataSize, maxShowSize); - } - - output += line1 + "\n"; - output += line2 + "\n"; } - AZStd::size_t offset = 0; - AZStd::size_t maxSize = dataSize > maxShowSize ? maxShowSize : dataSize; - - while (offset < maxSize) + if (showASCII) { - if (showOffset) - { - output += AZStd::string::format("%06zx", offset); + static const char *kHeaderName = "ASCII"; + static AZStd::size_t kHeaderNameSize = 5; - if (showBinary || showASCII) + AZStd::size_t numPreSpaces = (dataWidth - kHeaderNameSize) / 2; + AZStd::size_t numPostSpaces = dataWidth - numPreSpaces - kHeaderNameSize; + + line1 += AZStd::string(numPreSpaces, ' ') + kHeaderName + AZStd::string(numPostSpaces, ' '); + line2 += AZStd::string(dataWidth, '-'); + } + + if (showInfo) + { + output += AZStd::string::format("Address: 0x%p Data Size:%zu Max Size:%zu\n", data, dataSize, maxShowSize); + } + + output += line1 + "\n"; + output += line2 + "\n"; + } + + AZStd::size_t offset = 0; + AZStd::size_t maxSize = dataSize > maxShowSize ? maxShowSize : dataSize; + + while (offset < maxSize) + { + if (showOffset) + { + output += AZStd::string::format("%06zx", offset); + + if (showBinary || showASCII) + { + output += " "; + } + } + + if (showBinary) + { + AZStd::string binLine; + binLine.reserve((dataWidth * 3) * 2); + + for (AZStd::size_t index = 0; index < dataWidth; index++) + { + if (!binLine.empty()) { - output += " "; + binLine += " "; + } + + if ((offset + index) < maxSize) + { + binLine += AZStd::string::format("%02x", data[offset + index]); + } + else + { + binLine += " "; } } - if (showBinary) - { - AZStd::string binLine; - binLine.reserve((dataWidth * 3) * 2); - - for (AZStd::size_t index = 0; index < dataWidth; index++) - { - if (!binLine.empty()) - { - binLine += " "; - } - - if ((offset + index) < maxSize) - { - binLine += AZStd::string::format("%02x", data[offset + index]); - } - else - { - binLine += " "; - } - } - - output += binLine; - - if (showASCII) - { - output += " "; - } - } + output += binLine; if (showASCII) { - AZStd::string asciiLine; - asciiLine.reserve(dataWidth * 2); + output += " "; + } + } - for (AZStd::size_t index = 0; index < dataWidth; index++) + if (showASCII) + { + AZStd::string asciiLine; + asciiLine.reserve(dataWidth * 2); + + for (AZStd::size_t index = 0; index < dataWidth; index++) + { + if ((offset + index) > maxSize) { - if ((offset + index) > maxSize) - { - break; - } - else - { - char value = static_cast(data[offset + index]); - - if ((value < 32) || (value > 127)) - value = ' '; - - asciiLine += value; - } + break; } + else + { + char value = static_cast(data[offset + index]); - output += asciiLine; + if ((value < 32) || (value > 127)) + value = ' '; + + asciiLine += value; + } } - output += "\n"; - offset += dataWidth; + output += asciiLine; } + + output += "\n"; + offset += dataWidth; } } - - return output; } - } // namespace MemoryToASCII -} // namespace AZStd + + return output; + } +} // namespace AZStd::MemoryToASCII diff --git a/Code/Framework/AzCore/Platform/Android/AzCore/AzCore_Traits_Android.h b/Code/Framework/AzCore/Platform/Android/AzCore/AzCore_Traits_Android.h index 495c8d5f2c..e05e000a4e 100644 --- a/Code/Framework/AzCore/Platform/Android/AzCore/AzCore_Traits_Android.h +++ b/Code/Framework/AzCore/Platform/Android/AzCore/AzCore_Traits_Android.h @@ -75,7 +75,6 @@ #define AZ_TRAIT_HEAPSCHEMA_COMPILE_MALLINFO 0 #define AZ_TRAIT_IS_ABS_PATH_IF_COLON_FOUND_ANYWHERE 0 #define AZ_TRAIT_JSON_CLANG_IGNORE_UNKNOWN_WARNING 0 -#define AZ_TRAIT_MAX_JOB_MANAGER_WORKER_THREADS 0 #define AZ_TRAIT_PERF_MEMORYBENCHMARK_IS_AVAILABLE 0 #define AZ_TRAIT_PUMP_SYSTEM_EVENTS_WHILE_LOADING 0 #define AZ_TRAIT_PUMP_SYSTEM_EVENTS_WHILE_LOADING_INTERVAL_MS 0 diff --git a/Code/Framework/AzCore/Platform/Common/UnixLike/AzCore/Debug/Trace_UnixLike.cpp b/Code/Framework/AzCore/Platform/Common/UnixLike/AzCore/Debug/Trace_UnixLike.cpp index f4d7db802b..92a80b0d9a 100644 --- a/Code/Framework/AzCore/Platform/Common/UnixLike/AzCore/Debug/Trace_UnixLike.cpp +++ b/Code/Framework/AzCore/Platform/Common/UnixLike/AzCore/Debug/Trace_UnixLike.cpp @@ -13,73 +13,67 @@ #include #include -namespace AZ +namespace AZ::Debug::Platform { - namespace Debug - { - namespace Platform - { #if defined(AZ_ENABLE_DEBUG_TOOLS) - bool performDebuggerDetection() + bool performDebuggerDetection() + { + AZ::IO::SystemFile processStatusFile; + if (!processStatusFile.Open("/proc/self/status", AZ::IO::SystemFile::SF_OPEN_READ_ONLY)) + { + return false; + } + + char buffer[4096]; + AZ::IO::SystemFile::SizeType numRead = processStatusFile.Read(sizeof(buffer), buffer); + + const AZStd::string_view processStatusView(buffer, buffer + numRead); + constexpr AZStd::string_view tracerPidString = "TracerPid:"; + const size_t tracerPidOffset = processStatusView.find(tracerPidString); + if (tracerPidOffset == AZStd::string_view::npos) + { + return false; + } + for (size_t i = tracerPidOffset + tracerPidString.length(); i < numRead; ++i) + { + if (!::isspace(processStatusView[i])) { - AZ::IO::SystemFile processStatusFile; - if (!processStatusFile.Open("/proc/self/status", AZ::IO::SystemFile::SF_OPEN_READ_ONLY)) - { - return false; - } - - char buffer[4096]; - AZ::IO::SystemFile::SizeType numRead = processStatusFile.Read(sizeof(buffer), buffer); - - const AZStd::string_view processStatusView(buffer, buffer + numRead); - constexpr AZStd::string_view tracerPidString = "TracerPid:"; - const size_t tracerPidOffset = processStatusView.find(tracerPidString); - if (tracerPidOffset == AZStd::string_view::npos) - { - return false; - } - for (size_t i = tracerPidOffset + tracerPidString.length(); i < numRead; ++i) - { - if (!::isspace(processStatusView[i])) - { - return processStatusView[i] != '0'; - } - } - return false; - } - - bool IsDebuggerPresent() - { - static bool s_detectionPerformed = false; - static bool s_debuggerDetected = false; - if (!s_detectionPerformed) - { - s_debuggerDetected = performDebuggerDetection(); - s_detectionPerformed = true; - } - return s_debuggerDetected; - } - - bool AttachDebugger() - { - // Not supported yet - AZ_Assert(false, "AttachDebugger() is not supported for Unix platform yet"); - return false; - } - - void HandleExceptions(bool) - {} - - void DebugBreak() - { - raise(SIGINT); - } -#endif // AZ_ENABLE_DEBUG_TOOLS - - void Terminate(int exitCode) - { - _exit(exitCode); + return processStatusView[i] != '0'; } } + return false; } -} + + bool IsDebuggerPresent() + { + static bool s_detectionPerformed = false; + static bool s_debuggerDetected = false; + if (!s_detectionPerformed) + { + s_debuggerDetected = performDebuggerDetection(); + s_detectionPerformed = true; + } + return s_debuggerDetected; + } + + bool AttachDebugger() + { + // Not supported yet + AZ_Assert(false, "AttachDebugger() is not supported for Unix platform yet"); + return false; + } + + void HandleExceptions(bool) + {} + + void DebugBreak() + { + raise(SIGINT); + } +#endif // AZ_ENABLE_DEBUG_TOOLS + + void Terminate(int exitCode) + { + _exit(exitCode); + } +} // namespace AZ::Debug::Platform diff --git a/Code/Framework/AzCore/Platform/Common/UnixLike/AzCore/IO/Internal/SystemFileUtils_UnixLike.cpp b/Code/Framework/AzCore/Platform/Common/UnixLike/AzCore/IO/Internal/SystemFileUtils_UnixLike.cpp index 07614ad56b..4c605f6154 100644 --- a/Code/Framework/AzCore/Platform/Common/UnixLike/AzCore/IO/Internal/SystemFileUtils_UnixLike.cpp +++ b/Code/Framework/AzCore/Platform/Common/UnixLike/AzCore/IO/Internal/SystemFileUtils_UnixLike.cpp @@ -8,82 +8,76 @@ #include "SystemFileUtils_UnixLike.h" -namespace AZ +namespace AZ::IO::Internal { - namespace IO + bool FormatAndPeelOffWildCardExtension(const char* sourcePath, char* filePath, size_t filePathSize, char* extensionPath, size_t extensionSize, bool keepWildcard) { - namespace Internal + if (sourcePath == nullptr || filePath == nullptr || extensionPath == nullptr || filePathSize == 0 || extensionSize == 0) { - bool FormatAndPeelOffWildCardExtension(const char* sourcePath, char* filePath, size_t filePathSize, char* extensionPath, size_t extensionSize, bool keepWildcard) + AZ_Error("AZ::IO::Internal", false, "FormatAndPeelOffWildCardExtension: One or more parameters was invalid."); + return false; + } + const char* pSrcPath = sourcePath; + char* pDestPath = filePath; + size_t destinationSize = filePathSize; + unsigned numFileChars = 0; + unsigned numExtensionChars = 0; + unsigned* pNumDestChars = &numFileChars; + bool bIsWildcardExtension = false; + while (*pSrcPath) + { + char srcChar = *pSrcPath++; + + // Skip '*' and '.' + if ((!bIsWildcardExtension && srcChar != '*') || (bIsWildcardExtension && srcChar != '.' && (keepWildcard || srcChar != '*'))) { - if (sourcePath == nullptr || filePath == nullptr || extensionPath == nullptr || filePathSize == 0 || extensionSize == 0) + unsigned numChars = *pNumDestChars; + pDestPath[numChars++] = srcChar; + *pNumDestChars = numChars; + + --destinationSize; + if (destinationSize == 0) { - AZ_Error("AZ::IO::Internal", false, "FormatAndPeelOffWildCardExtension: One or more parameters was invalid."); + AZ_Error( + "AZ::IO::Internal", + false, + "Error splitting sourcePath '%s' into filePath and extension, %s length is larger than storage size %d.", + sourcePath, + bIsWildcardExtension ? "extensionPath" : "filePath", + bIsWildcardExtension ? extensionSize : filePathSize); return false; } - const char* pSrcPath = sourcePath; - char* pDestPath = filePath; - size_t destinationSize = filePathSize; - unsigned numFileChars = 0; - unsigned numExtensionChars = 0; - unsigned* pNumDestChars = &numFileChars; - bool bIsWildcardExtension = false; - while (*pSrcPath) + } + // Wild-card extension is separate + if (srcChar == '*') + { + bIsWildcardExtension = true; + pDestPath = extensionPath; + destinationSize = extensionSize; + pNumDestChars = &numExtensionChars; + if (keepWildcard) { - char srcChar = *pSrcPath++; + unsigned numChars = *pNumDestChars; + pDestPath[numChars++] = srcChar; + *pNumDestChars = numChars; - // Skip '*' and '.' - if ((!bIsWildcardExtension && srcChar != '*') || (bIsWildcardExtension && srcChar != '.' && (keepWildcard || srcChar != '*'))) + --destinationSize; + if (destinationSize == 0) { - unsigned numChars = *pNumDestChars; - pDestPath[numChars++] = srcChar; - *pNumDestChars = numChars; - - --destinationSize; - if (destinationSize == 0) - { - AZ_Error( - "AZ::IO::Internal", - false, - "Error splitting sourcePath '%s' into filePath and extension, %s length is larger than storage size %d.", - sourcePath, - bIsWildcardExtension ? "extensionPath" : "filePath", - bIsWildcardExtension ? extensionSize : filePathSize); - return false; - } - } - // Wild-card extension is separate - if (srcChar == '*') - { - bIsWildcardExtension = true; - pDestPath = extensionPath; - destinationSize = extensionSize; - pNumDestChars = &numExtensionChars; - if (keepWildcard) - { - unsigned numChars = *pNumDestChars; - pDestPath[numChars++] = srcChar; - *pNumDestChars = numChars; - - --destinationSize; - if (destinationSize == 0) - { - AZ_Error( - "AZ::IO::Internal", - false, - "Error splitting sourcePath '%s' into filePath and extension, extensionPath length is larger than storage size %d.", - sourcePath, - extensionSize); - return false; - } - } + AZ_Error( + "AZ::IO::Internal", + false, + "Error splitting sourcePath '%s' into filePath and extension, extensionPath length is larger than storage size %d.", + sourcePath, + extensionSize); + return false; } } - // Close strings - filePath[numFileChars] = 0; - extensionPath[numExtensionChars] = 0; - return true; } } + // Close strings + filePath[numFileChars] = 0; + extensionPath[numExtensionChars] = 0; + return true; } -} +} // namespace AZ::IO::Internal diff --git a/Code/Framework/AzCore/Platform/Common/UnixLike/AzCore/Platform_UnixLike.cpp b/Code/Framework/AzCore/Platform/Common/UnixLike/AzCore/Platform_UnixLike.cpp index bdc2e753be..4a316bcde6 100644 --- a/Code/Framework/AzCore/Platform/Common/UnixLike/AzCore/Platform_UnixLike.cpp +++ b/Code/Framework/AzCore/Platform/Common/UnixLike/AzCore/Platform_UnixLike.cpp @@ -14,31 +14,28 @@ #include #include -namespace AZ +namespace AZ::Platform { - namespace Platform + ProcessId GetCurrentProcessId() { - ProcessId GetCurrentProcessId() - { - return static_cast(::getpid()); - } + return static_cast(::getpid()); + } - MachineId GetLocalMachineId() + MachineId GetLocalMachineId() + { + if (s_machineId == 0) { + // In specialized server situations, SetLocalMachineId() should be used, with whatever criteria works best in that environment + // A proper implementation for each supported system will be needed instead of this temporary measure to avoid collision in the small scale. + // On a larger scale, the odds of two people getting in here at the same millisecond will go up drastically, and we'll have the same issue again, + // though far less reproducible, for duplicated EntityId's across a network. + s_machineId = static_cast(AZStd::GetTimeUTCMilliSecond() & 0xffffffff); if (s_machineId == 0) { - // In specialized server situations, SetLocalMachineId() should be used, with whatever criteria works best in that environment - // A proper implementation for each supported system will be needed instead of this temporary measure to avoid collision in the small scale. - // On a larger scale, the odds of two people getting in here at the same millisecond will go up drastically, and we'll have the same issue again, - // though far less reproducible, for duplicated EntityId's across a network. - s_machineId = static_cast(AZStd::GetTimeUTCMilliSecond() & 0xffffffff); - if (s_machineId == 0) - { - s_machineId = 1; - AZ_Warning("System", false, "0 machine ID is reserved!"); - } + s_machineId = 1; + AZ_Warning("System", false, "0 machine ID is reserved!"); } - return s_machineId; } - } // namespace Platform -} + return s_machineId; + } +} // namespace AZ::Platform diff --git a/Code/Framework/AzCore/Platform/Common/UnixLike/AzCore/Socket/AzSocket_UnixLike.cpp b/Code/Framework/AzCore/Platform/Common/UnixLike/AzCore/Socket/AzSocket_UnixLike.cpp index 5b35b13d8b..555d70f1e6 100644 --- a/Code/Framework/AzCore/Platform/Common/UnixLike/AzCore/Socket/AzSocket_UnixLike.cpp +++ b/Code/Framework/AzCore/Platform/Common/UnixLike/AzCore/Socket/AzSocket_UnixLike.cpp @@ -18,365 +18,362 @@ #define INVALID_SOCKET (-1) #define closesocket(_s) close(_s) #define GetInternalSocketError errno -typedef int SOCKET; -typedef AZ::u32 AZSOCKLEN; +using SOCKET = int; +using AZSOCKLEN = AZ::u32; -namespace AZ +namespace AZ::AzSock { - namespace AzSock + AZ::s32 TranslateOSError(AZ::s32 oserror) { - AZ::s32 TranslateOSError(AZ::s32 oserror) - { - AZ::s32 error; + AZ::s32 error; #define TRANSLATE(_from, _to) case (_from): error = static_cast(_to); break; - switch (oserror) - { - TRANSLATE(0, AzSockError::eASE_NO_ERROR); - TRANSLATE(EACCES, AzSockError::eASE_EACCES); - TRANSLATE(EADDRINUSE, AzSockError::eASE_EADDRINUSE); - TRANSLATE(EADDRNOTAVAIL, AzSockError::eASE_EADDRNOTAVAIL); - TRANSLATE(EAFNOSUPPORT, AzSockError::eASE_EAFNOSUPPORT); - TRANSLATE(EALREADY, AzSockError::eASE_EALREADY); - TRANSLATE(EBADF, AzSockError::eASE_EBADF); - TRANSLATE(ECONNABORTED, AzSockError::eASE_ECONNABORTED); - TRANSLATE(ECONNREFUSED, AzSockError::eASE_ECONNREFUSED); - TRANSLATE(ECONNRESET, AzSockError::eASE_ECONNRESET); - TRANSLATE(EFAULT, AzSockError::eASE_EFAULT); - TRANSLATE(EHOSTDOWN, AzSockError::eASE_EHOSTDOWN); - TRANSLATE(EINPROGRESS, AzSockError::eASE_EINPROGRESS); - TRANSLATE(EINTR, AzSockError::eASE_EINTR); - TRANSLATE(EINVAL, AzSockError::eASE_EINVAL); - TRANSLATE(EISCONN, AzSockError::eASE_EISCONN); - TRANSLATE(EMFILE, AzSockError::eASE_EMFILE); - TRANSLATE(EMSGSIZE, AzSockError::eASE_EMSGSIZE); - TRANSLATE(ENETUNREACH, AzSockError::eASE_ENETUNREACH); - TRANSLATE(ENOBUFS, AzSockError::eASE_ENOBUFS); - TRANSLATE(ENOPROTOOPT, AzSockError::eASE_ENOPROTOOPT); - TRANSLATE(ENOTCONN, AzSockError::eASE_ENOTCONN); - TRANSLATE(EOPNOTSUPP, AzSockError::eASE_EOPNOTSUPP); - TRANSLATE(EPROTONOSUPPORT, AzSockError::eASE_EAFNOSUPPORT); - TRANSLATE(ETIMEDOUT, AzSockError::eASE_ETIMEDOUT); - TRANSLATE(ETOOMANYREFS, AzSockError::eASE_ETOOMANYREFS); - TRANSLATE(EWOULDBLOCK, AzSockError::eASE_EWOULDBLOCK); + switch (oserror) + { + TRANSLATE(0, AzSockError::eASE_NO_ERROR); + TRANSLATE(EACCES, AzSockError::eASE_EACCES); + TRANSLATE(EADDRINUSE, AzSockError::eASE_EADDRINUSE); + TRANSLATE(EADDRNOTAVAIL, AzSockError::eASE_EADDRNOTAVAIL); + TRANSLATE(EAFNOSUPPORT, AzSockError::eASE_EAFNOSUPPORT); + TRANSLATE(EALREADY, AzSockError::eASE_EALREADY); + TRANSLATE(EBADF, AzSockError::eASE_EBADF); + TRANSLATE(ECONNABORTED, AzSockError::eASE_ECONNABORTED); + TRANSLATE(ECONNREFUSED, AzSockError::eASE_ECONNREFUSED); + TRANSLATE(ECONNRESET, AzSockError::eASE_ECONNRESET); + TRANSLATE(EFAULT, AzSockError::eASE_EFAULT); + TRANSLATE(EHOSTDOWN, AzSockError::eASE_EHOSTDOWN); + TRANSLATE(EINPROGRESS, AzSockError::eASE_EINPROGRESS); + TRANSLATE(EINTR, AzSockError::eASE_EINTR); + TRANSLATE(EINVAL, AzSockError::eASE_EINVAL); + TRANSLATE(EISCONN, AzSockError::eASE_EISCONN); + TRANSLATE(EMFILE, AzSockError::eASE_EMFILE); + TRANSLATE(EMSGSIZE, AzSockError::eASE_EMSGSIZE); + TRANSLATE(ENETUNREACH, AzSockError::eASE_ENETUNREACH); + TRANSLATE(ENOBUFS, AzSockError::eASE_ENOBUFS); + TRANSLATE(ENOPROTOOPT, AzSockError::eASE_ENOPROTOOPT); + TRANSLATE(ENOTCONN, AzSockError::eASE_ENOTCONN); + TRANSLATE(EOPNOTSUPP, AzSockError::eASE_EOPNOTSUPP); + TRANSLATE(EPROTONOSUPPORT, AzSockError::eASE_EAFNOSUPPORT); + TRANSLATE(ETIMEDOUT, AzSockError::eASE_ETIMEDOUT); + TRANSLATE(ETOOMANYREFS, AzSockError::eASE_ETOOMANYREFS); + TRANSLATE(EWOULDBLOCK, AzSockError::eASE_EWOULDBLOCK); - default: - AZ_TracePrintf("AzSock", "AzSocket could not translate OS error code %x, treating as miscellaneous.\n", oserror); - error = static_cast(AzSockError::eASE_MISC_ERROR); - break; - } + default: + AZ_TracePrintf("AzSock", "AzSocket could not translate OS error code %x, treating as miscellaneous.\n", oserror); + error = static_cast(AzSockError::eASE_MISC_ERROR); + break; + } #undef TRANSLATE - return error; - } + return error; + } - AZ::s32 TranslateSocketOption(AzSocketOption opt) - { - AZ::s32 value; + AZ::s32 TranslateSocketOption(AzSocketOption opt) + { + AZ::s32 value; #define TRANSLATE(_from, _to) case (_from): value = (_to); break; - switch (opt) - { - TRANSLATE(AzSocketOption::REUSEADDR, SO_REUSEADDR); - TRANSLATE(AzSocketOption::KEEPALIVE, SO_KEEPALIVE); - TRANSLATE(AzSocketOption::LINGER, SO_LINGER); + switch (opt) + { + TRANSLATE(AzSocketOption::REUSEADDR, SO_REUSEADDR); + TRANSLATE(AzSocketOption::KEEPALIVE, SO_KEEPALIVE); + TRANSLATE(AzSocketOption::LINGER, SO_LINGER); - default: - AZ_TracePrintf("AzSock", "AzSocket option %x not yet supported", opt); - value = 0; - break; - } + default: + AZ_TracePrintf("AzSock", "AzSocket option %x not yet supported", opt); + value = 0; + break; + } #undef TRANSLATE - return value; - } + return value; + } - AZSOCKET HandleInvalidSocket(SOCKET sock) + AZSOCKET HandleInvalidSocket(SOCKET sock) + { + AZSOCKET azsock = static_cast(sock); + if (sock == INVALID_SOCKET) { - AZSOCKET azsock = static_cast(sock); - if (sock == INVALID_SOCKET) - { - azsock = TranslateOSError(GetInternalSocketError); - } - return azsock; + azsock = TranslateOSError(GetInternalSocketError); } + return azsock; + } - AZ::s32 HandleSocketError(AZ::s32 socketError) + AZ::s32 HandleSocketError(AZ::s32 socketError) + { + if (socketError == SOCKET_ERROR) { - if (socketError == SOCKET_ERROR) - { - socketError = TranslateOSError(GetInternalSocketError); - } - return socketError; + socketError = TranslateOSError(GetInternalSocketError); } + return socketError; + } - const char* GetStringForError(AZ::s32 errorNumber) - { - AzSockError errorCode = AzSockError(errorNumber); + const char* GetStringForError(AZ::s32 errorNumber) + { + AzSockError errorCode = AzSockError(errorNumber); #define CASE_RETSTRING(errorEnum) case errorEnum: { return #errorEnum; } - switch (errorCode) - { - CASE_RETSTRING(AzSockError::eASE_NO_ERROR); - CASE_RETSTRING(AzSockError::eASE_SOCKET_INVALID); - CASE_RETSTRING(AzSockError::eASE_EACCES); - CASE_RETSTRING(AzSockError::eASE_EADDRINUSE); - CASE_RETSTRING(AzSockError::eASE_EADDRNOTAVAIL); - CASE_RETSTRING(AzSockError::eASE_EAFNOSUPPORT); - CASE_RETSTRING(AzSockError::eASE_EALREADY); - CASE_RETSTRING(AzSockError::eASE_EBADF); - CASE_RETSTRING(AzSockError::eASE_ECONNABORTED); - CASE_RETSTRING(AzSockError::eASE_ECONNREFUSED); - CASE_RETSTRING(AzSockError::eASE_ECONNRESET); - CASE_RETSTRING(AzSockError::eASE_EFAULT); - CASE_RETSTRING(AzSockError::eASE_EHOSTDOWN); - CASE_RETSTRING(AzSockError::eASE_EINPROGRESS); - CASE_RETSTRING(AzSockError::eASE_EINTR); - CASE_RETSTRING(AzSockError::eASE_EINVAL); - CASE_RETSTRING(AzSockError::eASE_EISCONN); - CASE_RETSTRING(AzSockError::eASE_EMFILE); - CASE_RETSTRING(AzSockError::eASE_EMSGSIZE); - CASE_RETSTRING(AzSockError::eASE_ENETUNREACH); - CASE_RETSTRING(AzSockError::eASE_ENOBUFS); - CASE_RETSTRING(AzSockError::eASE_ENOPROTOOPT); - CASE_RETSTRING(AzSockError::eASE_ENOTCONN); - CASE_RETSTRING(AzSockError::eASE_ENOTINITIALISED); - CASE_RETSTRING(AzSockError::eASE_EOPNOTSUPP); - CASE_RETSTRING(AzSockError::eASE_EPIPE); - CASE_RETSTRING(AzSockError::eASE_EPROTONOSUPPORT); - CASE_RETSTRING(AzSockError::eASE_ETIMEDOUT); - CASE_RETSTRING(AzSockError::eASE_ETOOMANYREFS); - CASE_RETSTRING(AzSockError::eASE_EWOULDBLOCK); - CASE_RETSTRING(AzSockError::eASE_EWOULDBLOCK_CONN); - CASE_RETSTRING(AzSockError::eASE_MISC_ERROR); - } + switch (errorCode) + { + CASE_RETSTRING(AzSockError::eASE_NO_ERROR); + CASE_RETSTRING(AzSockError::eASE_SOCKET_INVALID); + CASE_RETSTRING(AzSockError::eASE_EACCES); + CASE_RETSTRING(AzSockError::eASE_EADDRINUSE); + CASE_RETSTRING(AzSockError::eASE_EADDRNOTAVAIL); + CASE_RETSTRING(AzSockError::eASE_EAFNOSUPPORT); + CASE_RETSTRING(AzSockError::eASE_EALREADY); + CASE_RETSTRING(AzSockError::eASE_EBADF); + CASE_RETSTRING(AzSockError::eASE_ECONNABORTED); + CASE_RETSTRING(AzSockError::eASE_ECONNREFUSED); + CASE_RETSTRING(AzSockError::eASE_ECONNRESET); + CASE_RETSTRING(AzSockError::eASE_EFAULT); + CASE_RETSTRING(AzSockError::eASE_EHOSTDOWN); + CASE_RETSTRING(AzSockError::eASE_EINPROGRESS); + CASE_RETSTRING(AzSockError::eASE_EINTR); + CASE_RETSTRING(AzSockError::eASE_EINVAL); + CASE_RETSTRING(AzSockError::eASE_EISCONN); + CASE_RETSTRING(AzSockError::eASE_EMFILE); + CASE_RETSTRING(AzSockError::eASE_EMSGSIZE); + CASE_RETSTRING(AzSockError::eASE_ENETUNREACH); + CASE_RETSTRING(AzSockError::eASE_ENOBUFS); + CASE_RETSTRING(AzSockError::eASE_ENOPROTOOPT); + CASE_RETSTRING(AzSockError::eASE_ENOTCONN); + CASE_RETSTRING(AzSockError::eASE_ENOTINITIALISED); + CASE_RETSTRING(AzSockError::eASE_EOPNOTSUPP); + CASE_RETSTRING(AzSockError::eASE_EPIPE); + CASE_RETSTRING(AzSockError::eASE_EPROTONOSUPPORT); + CASE_RETSTRING(AzSockError::eASE_ETIMEDOUT); + CASE_RETSTRING(AzSockError::eASE_ETOOMANYREFS); + CASE_RETSTRING(AzSockError::eASE_EWOULDBLOCK); + CASE_RETSTRING(AzSockError::eASE_EWOULDBLOCK_CONN); + CASE_RETSTRING(AzSockError::eASE_MISC_ERROR); + } #undef CASE_RETSTRING - return "(invalid)"; - } - - AZ::u32 HostToNetLong(AZ::u32 hstLong) - { - return htonl(hstLong); - } - - AZ::u32 NetToHostLong(AZ::u32 netLong) - { - return ntohl(netLong); - } - - AZ::u16 HostToNetShort(AZ::u16 hstShort) - { - return htons(hstShort); - } - - AZ::u16 NetToHostShort(AZ::u16 netShort) - { - return ntohs(netShort); - } - - AZ::s32 GetHostName(AZStd::string& hostname) - { - AZ::s32 result = 0; - hostname.clear(); - char name[256]; - result = HandleSocketError(gethostname(name, AZ_ARRAY_SIZE(name))); - if (result == static_cast(AzSockError::eASE_NO_ERROR)) - { - hostname = name; - } - return result; - } - - AZSOCKET Socket() - { - return Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); - } - - AZSOCKET Socket(AZ::s32 af, AZ::s32 type, AZ::s32 protocol) - { - return HandleInvalidSocket(socket(af, type, protocol)); - } - - AZ::s32 SetSockOpt(AZSOCKET sock, AZ::s32 level, AZ::s32 optname, const char* optval, AZ::s32 optlen) - { - AZSOCKLEN length(optlen); - return HandleSocketError(setsockopt(sock, level, optname, optval, length)); - } - - AZ::s32 SetSocketOption(AZSOCKET sock, AzSocketOption opt, bool enable) - { - AZ::u32 val = enable ? 1 : 0; - return SetSockOpt(sock, SOL_SOCKET, TranslateSocketOption(opt), reinterpret_cast(&val), sizeof(val)); - } - - AZ::s32 EnableTCPNoDelay(AZSOCKET sock, bool enable) - { - AZ::u32 val = enable ? 1 : 0; - return SetSockOpt(sock, IPPROTO_TCP, TCP_NODELAY, reinterpret_cast(&val), sizeof(val)); - } - - AZ::s32 SetSocketBlockingMode(AZSOCKET sock, bool blocking) - { - AZ::s32 flags = ::fcntl(sock, F_GETFL); - flags &= ~O_NONBLOCK; - flags |= (blocking ? 0 : O_NONBLOCK); - return ::fcntl(sock, F_SETFL, flags); - } - - AZ::s32 CloseSocket(AZSOCKET sock) - { - return HandleSocketError(closesocket(sock)); - } - - AZ::s32 Shutdown(AZSOCKET sock, AZ::s32 how) - { - return HandleSocketError(shutdown(sock, how)); - } - - AZ::s32 GetSockName(AZSOCKET sock, AzSocketAddress& addr) - { - AZSOCKADDR sAddr; - AZSOCKLEN sAddrLen = sizeof(AZSOCKADDR); - memset(&sAddr, 0, sAddrLen); - AZ::s32 result = HandleSocketError(getsockname(sock, &sAddr, &sAddrLen)); - addr = sAddr; - return result; - } - - AZ::s32 Connect(AZSOCKET sock, const AzSocketAddress& addr) - { - AZ::s32 err = HandleSocketError(connect(sock, addr.GetTargetAddress(), sizeof(AZSOCKADDR_IN))); - if (err == static_cast(AzSockError::eASE_EINPROGRESS)) - { - err = static_cast(AzSockError::eASE_EWOULDBLOCK_CONN); - } - return err; - } - - AZ::s32 Listen(AZSOCKET sock, AZ::s32 backlog) - { - return HandleSocketError(listen(sock, backlog)); - } - - AZSOCKET Accept(AZSOCKET sock, AzSocketAddress& addr) - { - AZSOCKADDR sAddr; - AZSOCKLEN sAddrLen = sizeof(AZSOCKADDR); - memset(&sAddr, 0, sAddrLen); - AZSOCKET outSock = HandleInvalidSocket(accept(sock, &sAddr, &sAddrLen)); - addr = sAddr; - return outSock; - } - - AZ::s32 Send(AZSOCKET sock, const char* buf, AZ::s32 len, AZ::s32 flags) - { - AZ::s32 msgNoSignal = MSG_NOSIGNAL; - return HandleSocketError(send(sock, buf, len, flags | msgNoSignal)); - } - - AZ::s32 Recv(AZSOCKET sock, char* buf, AZ::s32 len, AZ::s32 flags) - { - return HandleSocketError(recv(sock, buf, len, flags)); - } - - AZ::s32 Bind(AZSOCKET sock, const AzSocketAddress& addr) - { - return HandleSocketError(bind(sock, addr.GetTargetAddress(), sizeof(AZSOCKADDR_IN))); - } - - AZ::s32 Select(AZSOCKET sock, AZFD_SET* readfdsock, AZFD_SET* writefdsock, AZFD_SET* exceptfdsock, AZTIMEVAL* timeout) - { - return HandleSocketError(::select(sock + 1, readfdsock, writefdsock, exceptfdsock, timeout)); - } - - AZ::s32 IsRecvPending(AZSOCKET sock, AZTIMEVAL* timeout) - { - AZFD_SET readSet; - FD_ZERO(&readSet); - FD_SET(sock, &readSet); - - AZ::s32 ret = Select(sock, &readSet, nullptr, nullptr, timeout); - if (ret >= 0) - { - ret = FD_ISSET(sock, &readSet); - if (ret != 0) - { - ret = 1; - } - } - - return ret; - } - - AZ::s32 WaitForWritableSocket(AZSOCKET sock, AZTIMEVAL* timeout) - { - AZFD_SET writeSet; - FD_ZERO(&writeSet); - FD_SET(sock, &writeSet); - - AZ::s32 ret = Select(sock, nullptr, &writeSet, nullptr, timeout); - if (ret >= 0) - { - ret = FD_ISSET(sock, &writeSet); - if (ret != 0) - { - ret = 1; - } - } - - return ret; - } - - AZ::s32 Startup() - { - return static_cast(AzSockError::eASE_NO_ERROR); - } - - AZ::s32 Cleanup() - { - return static_cast(AzSockError::eASE_NO_ERROR); - } - - bool ResolveAddress(const AZStd::string& ip, AZ::u16 port, AZSOCKADDR_IN& socketAddress) - { - bool foundAddr = false; - addrinfo hints; - memset(&hints, 0, sizeof(addrinfo)); - addrinfo* addrInfo; - hints.ai_family = AF_INET; - hints.ai_flags = AI_CANONNAME; - char strPort[8]; - azsnprintf(strPort, AZ_ARRAY_SIZE(strPort), "%d", port); - - const char* address = ip.c_str(); - if (address && strlen(address) == 0) // getaddrinfo doesn't accept empty string - { - address = nullptr; - } - - AZ::s32 err = HandleSocketError(getaddrinfo(address, strPort, &hints, &addrInfo)); - if (err == 0) // eASE_NO_ERROR - { - if (addrInfo->ai_family == AF_INET) - { - socketAddress = *reinterpret_cast(addrInfo->ai_addr); - foundAddr = true; - } - - freeaddrinfo(addrInfo); - } - else - { - AZ_Assert(false, "AzSocketAddress could not resolve address %s with port %d. (reason - %s)", ip.c_str(), port, GetStringForError(err)); - } - return foundAddr; - } + return "(invalid)"; } -} + + AZ::u32 HostToNetLong(AZ::u32 hstLong) + { + return htonl(hstLong); + } + + AZ::u32 NetToHostLong(AZ::u32 netLong) + { + return ntohl(netLong); + } + + AZ::u16 HostToNetShort(AZ::u16 hstShort) + { + return htons(hstShort); + } + + AZ::u16 NetToHostShort(AZ::u16 netShort) + { + return ntohs(netShort); + } + + AZ::s32 GetHostName(AZStd::string& hostname) + { + AZ::s32 result = 0; + hostname.clear(); + char name[256]; + result = HandleSocketError(gethostname(name, AZ_ARRAY_SIZE(name))); + if (result == static_cast(AzSockError::eASE_NO_ERROR)) + { + hostname = name; + } + return result; + } + + AZSOCKET Socket() + { + return Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + } + + AZSOCKET Socket(AZ::s32 af, AZ::s32 type, AZ::s32 protocol) + { + return HandleInvalidSocket(socket(af, type, protocol)); + } + + AZ::s32 SetSockOpt(AZSOCKET sock, AZ::s32 level, AZ::s32 optname, const char* optval, AZ::s32 optlen) + { + AZSOCKLEN length(optlen); + return HandleSocketError(setsockopt(sock, level, optname, optval, length)); + } + + AZ::s32 SetSocketOption(AZSOCKET sock, AzSocketOption opt, bool enable) + { + AZ::u32 val = enable ? 1 : 0; + return SetSockOpt(sock, SOL_SOCKET, TranslateSocketOption(opt), reinterpret_cast(&val), sizeof(val)); + } + + AZ::s32 EnableTCPNoDelay(AZSOCKET sock, bool enable) + { + AZ::u32 val = enable ? 1 : 0; + return SetSockOpt(sock, IPPROTO_TCP, TCP_NODELAY, reinterpret_cast(&val), sizeof(val)); + } + + AZ::s32 SetSocketBlockingMode(AZSOCKET sock, bool blocking) + { + AZ::s32 flags = ::fcntl(sock, F_GETFL); + flags &= ~O_NONBLOCK; + flags |= (blocking ? 0 : O_NONBLOCK); + return ::fcntl(sock, F_SETFL, flags); + } + + AZ::s32 CloseSocket(AZSOCKET sock) + { + return HandleSocketError(closesocket(sock)); + } + + AZ::s32 Shutdown(AZSOCKET sock, AZ::s32 how) + { + return HandleSocketError(shutdown(sock, how)); + } + + AZ::s32 GetSockName(AZSOCKET sock, AzSocketAddress& addr) + { + AZSOCKADDR sAddr; + AZSOCKLEN sAddrLen = sizeof(AZSOCKADDR); + memset(&sAddr, 0, sAddrLen); + AZ::s32 result = HandleSocketError(getsockname(sock, &sAddr, &sAddrLen)); + addr = sAddr; + return result; + } + + AZ::s32 Connect(AZSOCKET sock, const AzSocketAddress& addr) + { + AZ::s32 err = HandleSocketError(connect(sock, addr.GetTargetAddress(), sizeof(AZSOCKADDR_IN))); + if (err == static_cast(AzSockError::eASE_EINPROGRESS)) + { + err = static_cast(AzSockError::eASE_EWOULDBLOCK_CONN); + } + return err; + } + + AZ::s32 Listen(AZSOCKET sock, AZ::s32 backlog) + { + return HandleSocketError(listen(sock, backlog)); + } + + AZSOCKET Accept(AZSOCKET sock, AzSocketAddress& addr) + { + AZSOCKADDR sAddr; + AZSOCKLEN sAddrLen = sizeof(AZSOCKADDR); + memset(&sAddr, 0, sAddrLen); + AZSOCKET outSock = HandleInvalidSocket(accept(sock, &sAddr, &sAddrLen)); + addr = sAddr; + return outSock; + } + + AZ::s32 Send(AZSOCKET sock, const char* buf, AZ::s32 len, AZ::s32 flags) + { + AZ::s32 msgNoSignal = MSG_NOSIGNAL; + return HandleSocketError(send(sock, buf, len, flags | msgNoSignal)); + } + + AZ::s32 Recv(AZSOCKET sock, char* buf, AZ::s32 len, AZ::s32 flags) + { + return HandleSocketError(recv(sock, buf, len, flags)); + } + + AZ::s32 Bind(AZSOCKET sock, const AzSocketAddress& addr) + { + return HandleSocketError(bind(sock, addr.GetTargetAddress(), sizeof(AZSOCKADDR_IN))); + } + + AZ::s32 Select(AZSOCKET sock, AZFD_SET* readfdsock, AZFD_SET* writefdsock, AZFD_SET* exceptfdsock, AZTIMEVAL* timeout) + { + return HandleSocketError(::select(sock + 1, readfdsock, writefdsock, exceptfdsock, timeout)); + } + + AZ::s32 IsRecvPending(AZSOCKET sock, AZTIMEVAL* timeout) + { + AZFD_SET readSet; + FD_ZERO(&readSet); + FD_SET(sock, &readSet); + + AZ::s32 ret = Select(sock, &readSet, nullptr, nullptr, timeout); + if (ret >= 0) + { + ret = FD_ISSET(sock, &readSet); + if (ret != 0) + { + ret = 1; + } + } + + return ret; + } + + AZ::s32 WaitForWritableSocket(AZSOCKET sock, AZTIMEVAL* timeout) + { + AZFD_SET writeSet; + FD_ZERO(&writeSet); + FD_SET(sock, &writeSet); + + AZ::s32 ret = Select(sock, nullptr, &writeSet, nullptr, timeout); + if (ret >= 0) + { + ret = FD_ISSET(sock, &writeSet); + if (ret != 0) + { + ret = 1; + } + } + + return ret; + } + + AZ::s32 Startup() + { + return static_cast(AzSockError::eASE_NO_ERROR); + } + + AZ::s32 Cleanup() + { + return static_cast(AzSockError::eASE_NO_ERROR); + } + + bool ResolveAddress(const AZStd::string& ip, AZ::u16 port, AZSOCKADDR_IN& socketAddress) + { + bool foundAddr = false; + addrinfo hints; + memset(&hints, 0, sizeof(addrinfo)); + addrinfo* addrInfo; + hints.ai_family = AF_INET; + hints.ai_flags = AI_CANONNAME; + char strPort[8]; + azsnprintf(strPort, AZ_ARRAY_SIZE(strPort), "%d", port); + + const char* address = ip.c_str(); + if (address && strlen(address) == 0) // getaddrinfo doesn't accept empty string + { + address = nullptr; + } + + AZ::s32 err = HandleSocketError(getaddrinfo(address, strPort, &hints, &addrInfo)); + if (err == 0) // eASE_NO_ERROR + { + if (addrInfo->ai_family == AF_INET) + { + socketAddress = *reinterpret_cast(addrInfo->ai_addr); + foundAddr = true; + } + + freeaddrinfo(addrInfo); + } + else + { + AZ_Assert(false, "AzSocketAddress could not resolve address %s with port %d. (reason - %s)", ip.c_str(), port, GetStringForError(err)); + } + return foundAddr; + } +} // namespace AZ::AzSock diff --git a/Code/Framework/AzCore/Platform/Common/UnixLike/AzCore/Utils/Utils_UnixLike.cpp b/Code/Framework/AzCore/Platform/Common/UnixLike/AzCore/Utils/Utils_UnixLike.cpp index 7327c8f152..8a93f88ac2 100644 --- a/Code/Framework/AzCore/Platform/Common/UnixLike/AzCore/Utils/Utils_UnixLike.cpp +++ b/Code/Framework/AzCore/Platform/Common/UnixLike/AzCore/Utils/Utils_UnixLike.cpp @@ -11,68 +11,65 @@ #include #include -namespace AZ +namespace AZ::Utils { - namespace Utils + void RequestAbnormalTermination() { - void RequestAbnormalTermination() + abort(); + } + + void NativeErrorMessageBox(const char*, const char*) {} + + AZ::IO::FixedMaxPathString GetHomeDirectory() + { + constexpr AZStd::string_view overrideHomeDirKey = "/Amazon/Settings/override_home_dir"; + AZ::IO::FixedMaxPathString overrideHomeDir; + if (auto settingsRegistry = AZ::SettingsRegistry::Get(); settingsRegistry != nullptr) { - abort(); - } - - void NativeErrorMessageBox(const char*, const char*) {} - - AZ::IO::FixedMaxPathString GetHomeDirectory() - { - constexpr AZStd::string_view overrideHomeDirKey = "/Amazon/Settings/override_home_dir"; - AZ::IO::FixedMaxPathString overrideHomeDir; - if (auto settingsRegistry = AZ::SettingsRegistry::Get(); settingsRegistry != nullptr) + if (settingsRegistry->Get(overrideHomeDir, overrideHomeDirKey)) { - if (settingsRegistry->Get(overrideHomeDir, overrideHomeDirKey)) - { - AZ::IO::FixedMaxPath path{overrideHomeDir}; - return path.Native(); - } - } - - if (const char* homePath = std::getenv("HOME"); homePath != nullptr) - { - AZ::IO::FixedMaxPath path{homePath}; + AZ::IO::FixedMaxPath path{overrideHomeDir}; return path.Native(); } - - struct passwd* pass = getpwuid(getuid()); - if (pass) - { - AZ::IO::FixedMaxPath path{pass->pw_dir}; - return path.Native(); - } - - return {}; } - bool ConvertToAbsolutePath(const char* path, char* absolutePath, AZ::u64 maxLength) + if (const char* homePath = std::getenv("HOME"); homePath != nullptr) { + AZ::IO::FixedMaxPath path{homePath}; + return path.Native(); + } + + struct passwd* pass = getpwuid(getuid()); + if (pass) + { + AZ::IO::FixedMaxPath path{pass->pw_dir}; + return path.Native(); + } + + return {}; + } + + bool ConvertToAbsolutePath(const char* path, char* absolutePath, AZ::u64 maxLength) + { #ifdef PATH_MAX - static constexpr size_t UnixMaxPathLength = PATH_MAX; + static constexpr size_t UnixMaxPathLength = PATH_MAX; #else - // Fallback to 4096 if the PATH_MAX macro isn't defined on the Unix System - static constexpr size_t UnixMaxPathLength = 4096; + // Fallback to 4096 if the PATH_MAX macro isn't defined on the Unix System + static constexpr size_t UnixMaxPathLength = 4096; #endif - if (!AZ::IO::PathView(path).IsAbsolute()) + if (!AZ::IO::PathView(path).IsAbsolute()) + { + // note that realpath fails if the path does not exist and actually changes the return value + // to be the actual place that FAILED, which we don't want. + // if we fail, we'd prefer to fall through and at least use the original path. + char absolutePathBuffer[UnixMaxPathLength]; + if (const char* result = realpath(path, absolutePathBuffer); result != nullptr) { - // note that realpath fails if the path does not exist and actually changes the return value - // to be the actual place that FAILED, which we don't want. - // if we fail, we'd prefer to fall through and at least use the original path. - char absolutePathBuffer[UnixMaxPathLength]; - if (const char* result = realpath(path, absolutePathBuffer); result != nullptr) - { - azstrcpy(absolutePath, maxLength, absolutePathBuffer); - return true; - } + azstrcpy(absolutePath, maxLength, absolutePathBuffer); + return true; } - azstrcpy(absolutePath, maxLength, path); - return AZ::IO::PathView(absolutePath).IsAbsolute(); } - } // namespace Utils -} // namespace AZ + azstrcpy(absolutePath, maxLength, path); + return AZ::IO::PathView(absolutePath).IsAbsolute(); + } +} // namespace AZ::Utils diff --git a/Code/Framework/AzCore/Platform/Linux/AzCore/AzCore_Traits_Linux.h b/Code/Framework/AzCore/Platform/Linux/AzCore/AzCore_Traits_Linux.h index 6ba369e86d..2c0d554078 100644 --- a/Code/Framework/AzCore/Platform/Linux/AzCore/AzCore_Traits_Linux.h +++ b/Code/Framework/AzCore/Platform/Linux/AzCore/AzCore_Traits_Linux.h @@ -75,7 +75,6 @@ #define AZ_TRAIT_HEAPSCHEMA_COMPILE_MALLINFO 1 #define AZ_TRAIT_IS_ABS_PATH_IF_COLON_FOUND_ANYWHERE 0 #define AZ_TRAIT_JSON_CLANG_IGNORE_UNKNOWN_WARNING 0 -#define AZ_TRAIT_MAX_JOB_MANAGER_WORKER_THREADS 0 #define AZ_TRAIT_PERF_MEMORYBENCHMARK_IS_AVAILABLE 0 #define AZ_TRAIT_PUMP_SYSTEM_EVENTS_WHILE_LOADING 0 #define AZ_TRAIT_PUMP_SYSTEM_EVENTS_WHILE_LOADING_INTERVAL_MS 0 diff --git a/Code/Framework/AzCore/Platform/Linux/AzCore/Debug/Trace_Linux.cpp b/Code/Framework/AzCore/Platform/Linux/AzCore/Debug/Trace_Linux.cpp index 1ca06fcf7f..e4cd0d0db4 100644 --- a/Code/Framework/AzCore/Platform/Linux/AzCore/Debug/Trace_Linux.cpp +++ b/Code/Framework/AzCore/Platform/Linux/AzCore/Debug/Trace_Linux.cpp @@ -9,16 +9,10 @@ #include #include -namespace AZ +namespace AZ::Debug::Platform { - namespace Debug + void OutputToDebugger([[maybe_unused]] const char* title, [[maybe_unused]] const char* message) { - namespace Platform - { - void OutputToDebugger([[maybe_unused]] const char* title, [[maybe_unused]] const char* message) - { - // std::cout << title << ": " << message; - } - } + // std::cout << title << ": " << message; } -} +} // namespace AZ::Debug::Platform diff --git a/Code/Framework/AzCore/Platform/Linux/AzCore/Memory/HeapSchema_Linux.cpp b/Code/Framework/AzCore/Platform/Linux/AzCore/Memory/HeapSchema_Linux.cpp index e28832cf61..d9defd5acc 100644 --- a/Code/Framework/AzCore/Platform/Linux/AzCore/Memory/HeapSchema_Linux.cpp +++ b/Code/Framework/AzCore/Platform/Linux/AzCore/Memory/HeapSchema_Linux.cpp @@ -8,13 +8,10 @@ #include -namespace AZ +namespace AZ::Platform { - namespace Platform + size_t GetHeapCapacity() { - size_t GetHeapCapacity() - { - return 0; - } + return 0; } -} +} // namespace AZ::Platform diff --git a/Code/Framework/AzCore/Platform/Linux/AzCore/Module/DynamicModuleHandle_Linux.cpp b/Code/Framework/AzCore/Platform/Linux/AzCore/Module/DynamicModuleHandle_Linux.cpp index 62718c2d46..aee2bdb622 100644 --- a/Code/Framework/AzCore/Platform/Linux/AzCore/Module/DynamicModuleHandle_Linux.cpp +++ b/Code/Framework/AzCore/Platform/Linux/AzCore/Module/DynamicModuleHandle_Linux.cpp @@ -10,28 +10,25 @@ #include #include -namespace AZ +namespace AZ::Platform { - namespace Platform + AZ::IO::FixedMaxPath GetModulePath() { - AZ::IO::FixedMaxPath GetModulePath() - { - return AZ::Utils::GetExecutableDirectory(); - } - - void* OpenModule(const AZ::OSString& fileName, bool& alreadyOpen) - { - void* handle = dlopen(fileName.c_str(), RTLD_NOLOAD); - alreadyOpen = (handle != nullptr); - if (!alreadyOpen) - { - handle = dlopen(fileName.c_str(), RTLD_NOW); - } - return handle; - } - - void ConstructModuleFullFileName(AZ::IO::FixedMaxPath&) - { - } + return AZ::Utils::GetExecutableDirectory(); } -} + + void* OpenModule(const AZ::OSString& fileName, bool& alreadyOpen) + { + void* handle = dlopen(fileName.c_str(), RTLD_NOLOAD); + alreadyOpen = (handle != nullptr); + if (!alreadyOpen) + { + handle = dlopen(fileName.c_str(), RTLD_NOW); + } + return handle; + } + + void ConstructModuleFullFileName(AZ::IO::FixedMaxPath&) + { + } +} // namespace AZ::Platform diff --git a/Code/Framework/AzCore/Platform/Linux/AzCore/Module/Internal/ModuleManagerSearchPathTool_Linux.cpp b/Code/Framework/AzCore/Platform/Linux/AzCore/Module/Internal/ModuleManagerSearchPathTool_Linux.cpp index 39b4cbd4ea..9dfa08e554 100644 --- a/Code/Framework/AzCore/Platform/Linux/AzCore/Module/Internal/ModuleManagerSearchPathTool_Linux.cpp +++ b/Code/Framework/AzCore/Platform/Linux/AzCore/Module/Internal/ModuleManagerSearchPathTool_Linux.cpp @@ -8,20 +8,17 @@ #include -namespace AZ +namespace AZ::Internal { - namespace Internal + ModuleManagerSearchPathTool::ModuleManagerSearchPathTool() { - ModuleManagerSearchPathTool::ModuleManagerSearchPathTool() - { - } + } - ModuleManagerSearchPathTool::~ModuleManagerSearchPathTool() - { - } + ModuleManagerSearchPathTool::~ModuleManagerSearchPathTool() + { + } - void ModuleManagerSearchPathTool::SetModuleSearchPath(const AZ::DynamicModuleDescriptor&) - { - } - } // namespace Internal -} // namespace AZ + void ModuleManagerSearchPathTool::SetModuleSearchPath(const AZ::DynamicModuleDescriptor&) + { + } +} // namespace AZ::Internal diff --git a/Code/Framework/AzCore/Platform/Linux/AzCore/Utils/Utils_Linux.cpp b/Code/Framework/AzCore/Platform/Linux/AzCore/Utils/Utils_Linux.cpp index d75eab0139..ed4e2674c5 100644 --- a/Code/Framework/AzCore/Platform/Linux/AzCore/Utils/Utils_Linux.cpp +++ b/Code/Framework/AzCore/Platform/Linux/AzCore/Utils/Utils_Linux.cpp @@ -13,42 +13,39 @@ #include -namespace AZ +namespace AZ::Utils { - namespace Utils + GetExecutablePathReturnType GetExecutablePath(char* exeStorageBuffer, size_t exeStorageSize) { - GetExecutablePathReturnType GetExecutablePath(char* exeStorageBuffer, size_t exeStorageSize) + GetExecutablePathReturnType result; + result.m_pathIncludesFilename = true; + + // http://man7.org/linux/man-pages/man5/proc.5.html + const ssize_t bytesWritten = readlink("/proc/self/exe", exeStorageBuffer, exeStorageSize); + if (bytesWritten == -1) { - GetExecutablePathReturnType result; - result.m_pathIncludesFilename = true; - - // http://man7.org/linux/man-pages/man5/proc.5.html - const ssize_t bytesWritten = readlink("/proc/self/exe", exeStorageBuffer, exeStorageSize); - if (bytesWritten == -1) - { - result.m_pathStored = ExecutablePathResult::GeneralError; - } - else if (bytesWritten == exeStorageSize) - { - result.m_pathStored = ExecutablePathResult::BufferSizeNotLargeEnough; - } - else - { - // readlink doesn't null terminate - exeStorageBuffer[bytesWritten] = '\0'; - } - - return result; + result.m_pathStored = ExecutablePathResult::GeneralError; + } + else if (bytesWritten == exeStorageSize) + { + result.m_pathStored = ExecutablePathResult::BufferSizeNotLargeEnough; + } + else + { + // readlink doesn't null terminate + exeStorageBuffer[bytesWritten] = '\0'; } - AZStd::optional GetDefaultAppRootPath() - { - return AZStd::nullopt; - } - - AZStd::optional GetDevWriteStoragePath() - { - return AZStd::nullopt; - } + return result; } -} + + AZStd::optional GetDefaultAppRootPath() + { + return AZStd::nullopt; + } + + AZStd::optional GetDevWriteStoragePath() + { + return AZStd::nullopt; + } +} // namespace AZ::Utils diff --git a/Code/Framework/AzCore/Platform/Mac/AzCore/AzCore_Traits_Mac.h b/Code/Framework/AzCore/Platform/Mac/AzCore/AzCore_Traits_Mac.h index a41b5c6baa..816a28b728 100644 --- a/Code/Framework/AzCore/Platform/Mac/AzCore/AzCore_Traits_Mac.h +++ b/Code/Framework/AzCore/Platform/Mac/AzCore/AzCore_Traits_Mac.h @@ -75,7 +75,6 @@ #define AZ_TRAIT_HEAPSCHEMA_COMPILE_MALLINFO 1 #define AZ_TRAIT_IS_ABS_PATH_IF_COLON_FOUND_ANYWHERE 0 #define AZ_TRAIT_JSON_CLANG_IGNORE_UNKNOWN_WARNING 0 -#define AZ_TRAIT_MAX_JOB_MANAGER_WORKER_THREADS 0 #define AZ_TRAIT_PERF_MEMORYBENCHMARK_IS_AVAILABLE 0 #define AZ_TRAIT_PUMP_SYSTEM_EVENTS_WHILE_LOADING 0 #define AZ_TRAIT_PUMP_SYSTEM_EVENTS_WHILE_LOADING_INTERVAL_MS 0 diff --git a/Code/Framework/AzCore/Platform/Windows/AzCore/AzCore_Traits_Windows.h b/Code/Framework/AzCore/Platform/Windows/AzCore/AzCore_Traits_Windows.h index 2f9fcefdbd..83cff9b54f 100644 --- a/Code/Framework/AzCore/Platform/Windows/AzCore/AzCore_Traits_Windows.h +++ b/Code/Framework/AzCore/Platform/Windows/AzCore/AzCore_Traits_Windows.h @@ -75,7 +75,6 @@ #define AZ_TRAIT_HEAPSCHEMA_COMPILE_MALLINFO 1 #define AZ_TRAIT_IS_ABS_PATH_IF_COLON_FOUND_ANYWHERE 0 #define AZ_TRAIT_JSON_CLANG_IGNORE_UNKNOWN_WARNING 1 -#define AZ_TRAIT_MAX_JOB_MANAGER_WORKER_THREADS 0 #define AZ_TRAIT_PERF_MEMORYBENCHMARK_IS_AVAILABLE 1 #define AZ_TRAIT_PUMP_SYSTEM_EVENTS_WHILE_LOADING 0 #define AZ_TRAIT_PUMP_SYSTEM_EVENTS_WHILE_LOADING_INTERVAL_MS 0 diff --git a/Code/Framework/AzCore/Platform/iOS/AzCore/AzCore_Traits_iOS.h b/Code/Framework/AzCore/Platform/iOS/AzCore/AzCore_Traits_iOS.h index d53f4b057e..b0832c54f6 100644 --- a/Code/Framework/AzCore/Platform/iOS/AzCore/AzCore_Traits_iOS.h +++ b/Code/Framework/AzCore/Platform/iOS/AzCore/AzCore_Traits_iOS.h @@ -76,7 +76,6 @@ #define AZ_TRAIT_HEAPSCHEMA_COMPILE_MALLINFO 1 #define AZ_TRAIT_IS_ABS_PATH_IF_COLON_FOUND_ANYWHERE 0 #define AZ_TRAIT_JSON_CLANG_IGNORE_UNKNOWN_WARNING 0 -#define AZ_TRAIT_MAX_JOB_MANAGER_WORKER_THREADS 0 #define AZ_TRAIT_PERF_MEMORYBENCHMARK_IS_AVAILABLE 0 #define AZ_TRAIT_PUMP_SYSTEM_EVENTS_WHILE_LOADING 0 #define AZ_TRAIT_PUMP_SYSTEM_EVENTS_WHILE_LOADING_INTERVAL_MS 0 diff --git a/Code/Framework/AzCore/Tests/Asset/AssetManagerLoadingTests.cpp b/Code/Framework/AzCore/Tests/Asset/AssetManagerLoadingTests.cpp index e33dbce9c1..fe38451101 100644 --- a/Code/Framework/AzCore/Tests/Asset/AssetManagerLoadingTests.cpp +++ b/Code/Framework/AzCore/Tests/Asset/AssetManagerLoadingTests.cpp @@ -608,24 +608,9 @@ namespace UnitTest AZ::Data::AssetData::AssetStatus expected_base_status = AZ::Data::AssetData::AssetStatus::Ready; EXPECT_EQ(baseStatus, expected_base_status); } - - struct DebugListener : AZ::Interface::Registrar - { - void AssetStatusUpdate(AZ::Data::AssetId id, AZ::Data::AssetData::AssetStatus status) override - { - AZ::Debug::Trace::Output( - "", AZStd::string::format("Status %s - %d\n", id.ToString().c_str(), static_cast(status)).c_str()); - } - void ReleaseAsset(AZ::Data::AssetId id) override - { - AZ::Debug::Trace::Output( - "", AZStd::string::format("Release %s\n", id.ToString().c_str()).c_str()); - } - }; - + TEST_F(AssetJobsFloodTest, RapidAcquireAndRelease) { - DebugListener listener; auto assetUuids = { MyAsset1Id, MyAsset2Id, @@ -652,7 +637,7 @@ namespace UnitTest threads.emplace_back([this, &threadCount, &cv, assetUuid]() { bool checkLoaded = true; - for (int i = 0; i < 5000; i++) + for (int i = 0; i < 1000; i++) { Asset asset1 = m_testAssetManager->GetAsset(assetUuid, azrtti_typeid(), AZ::Data::AssetLoadBehavior::PreLoad); @@ -678,7 +663,7 @@ namespace UnitTest while (threadCount > 0 && !timedOut) { AZStd::unique_lock lock(mutex); - timedOut = (AZStd::cv_status::timeout == cv.wait_until(lock, AZStd::chrono::system_clock::now() + DefaultTimeoutSeconds * 20000)); + timedOut = (AZStd::cv_status::timeout == cv.wait_until(lock, AZStd::chrono::system_clock::now() + DefaultTimeoutSeconds)); } ASSERT_EQ(threadCount, 0) << "Thread count is non-zero, a thread has likely deadlocked. Test will not shut down cleanly."; @@ -1190,7 +1175,7 @@ namespace UnitTest #if AZ_TRAIT_DISABLE_FAILED_ASSET_MANAGER_TESTS TEST_F(AssetJobsFloodTest, DISABLED_ContainerFilterTest_ContainersWithAndWithoutFiltering_Success) #else - TEST_F(AssetJobsFloodTest, DISABLED_ContainerFilterTest_ContainersWithAndWithoutFiltering_Success) + TEST_F(AssetJobsFloodTest, ContainerFilterTest_ContainersWithAndWithoutFiltering_Success) #endif // !AZ_TRAIT_DISABLE_FAILED_ASSET_MANAGER_TESTS { m_assetHandlerAndCatalog->AssetCatalogRequestBus::Handler::BusConnect(); @@ -2297,6 +2282,45 @@ namespace UnitTest AssetManager::Destroy(); } + struct MockAssetContainer : AssetContainer + { + MockAssetContainer(Asset assetData, const AssetLoadParameters& loadParams) + { + // Copying the code in the original constructor, we can't call that constructor because it will not invoke our virtual method + m_rootAsset = AssetInternal::WeakAsset(assetData); + m_containerAssetId = m_rootAsset.GetId(); + + AddDependentAssets(assetData, loadParams); + } + + protected: + AZStd::vector>> CreateAndQueueDependentAssets( + const AZStd::vector& dependencyInfoList, const AssetLoadParameters& loadParamsCopyWithNoLoadingFilter) override + { + auto result = AssetContainer::CreateAndQueueDependentAssets(dependencyInfoList, loadParamsCopyWithNoLoadingFilter); + + // Sleep for a long enough time to allow asset loads to complete and start triggering AssetReady events + // This forces the race condition to occur + AZStd::this_thread::sleep_for(AZStd::chrono::milliseconds(500)); + + return result; + } + }; + + struct MockAssetManager : AssetManager + { + explicit MockAssetManager(const Descriptor& desc) + : AssetManager(desc) + { + } + + protected: + AZStd::shared_ptr CreateAssetContainer(Asset asset, const AssetLoadParameters& loadParams) const override + { + return AZStd::shared_ptr(aznew MockAssetContainer(asset, loadParams)); + } + }; + void ParallelDeepAssetReferences() { SerializeContext context; @@ -2304,7 +2328,7 @@ namespace UnitTest AssetWithAssetReference::Reflect(context); AssetManager::Descriptor desc; - AssetManager::Create(desc); + AssetManager::SetInstance(aznew MockAssetManager(desc)); auto& db = AssetManager::Instance(); @@ -2327,17 +2351,17 @@ namespace UnitTest // AssetC is MYASSETC AssetWithAssetReference c; - c.m_asset = AssetManager::Instance().CreateAsset(AssetId(MyAssetDId)); // point at D + c.m_asset = db.CreateAsset(AssetId(MyAssetDId)); // point at D EXPECT_TRUE(AZ::Utils::SaveObjectToFile(GetTestFolderPath() + "TestAsset3.txt", AZ::DataStream::ST_XML, &c, &context)); // AssetB is MYASSETB AssetWithAssetReference b; - b.m_asset = AssetManager::Instance().CreateAsset(AssetId(MyAssetCId)); // point at C + b.m_asset = db.CreateAsset(AssetId(MyAssetCId)); // point at C EXPECT_TRUE(AZ::Utils::SaveObjectToFile(GetTestFolderPath() + "TestAsset2.txt", AZ::DataStream::ST_XML, &b, &context)); // AssetA will be written to disk as MYASSETA AssetWithAssetReference a; - a.m_asset = AssetManager::Instance().CreateAsset(AssetId(MyAssetBId)); // point at B + a.m_asset = db.CreateAsset(AssetId(MyAssetBId)); // point at B EXPECT_TRUE(AZ::Utils::SaveObjectToFile(GetTestFolderPath() + "TestAsset1.txt", AZ::DataStream::ST_XML, &a, &context)); } @@ -2546,7 +2570,7 @@ namespace UnitTest TEST_F(AssetJobsMultithreadedTest, DISABLED_ParallelDeepAssetReferences) #else // temporarily disabled until sporadic failures can be root caused - TEST_F(AssetJobsMultithreadedTest, DISABLED_ParallelDeepAssetReferences) + TEST_F(AssetJobsMultithreadedTest, ParallelDeepAssetReferences) #endif // AZ_TRAIT_DISABLE_FAILED_ASSET_MANAGER_TESTS { ParallelDeepAssetReferences(); diff --git a/Code/Framework/AzCore/Tests/Asset/BaseAssetManagerTest.cpp b/Code/Framework/AzCore/Tests/Asset/BaseAssetManagerTest.cpp index 4dbd3c0e1e..c6fa296cbc 100644 --- a/Code/Framework/AzCore/Tests/Asset/BaseAssetManagerTest.cpp +++ b/Code/Framework/AzCore/Tests/Asset/BaseAssetManagerTest.cpp @@ -67,7 +67,10 @@ namespace UnitTest { SerializeContextFixture::SetUp(); + SuppressTraceOutput(false); + AZ::JobManagerDesc jobDesc; + AZ::JobManagerThreadDesc threadDesc; for (size_t threadCount = 0; threadCount < GetNumJobManagerThreads(); threadCount++) { @@ -111,9 +114,21 @@ namespace UnitTest delete m_jobContext; delete m_jobManager; + // Reset back to default suppression settings to avoid affecting other tests + SuppressTraceOutput(true); + SerializeContextFixture::TearDown(); } + void BaseAssetManagerTest::SuppressTraceOutput(bool suppress) + { + UnitTest::TestRunner::Instance().m_suppressAsserts = suppress; + UnitTest::TestRunner::Instance().m_suppressErrors = suppress; + UnitTest::TestRunner::Instance().m_suppressWarnings = suppress; + UnitTest::TestRunner::Instance().m_suppressPrintf = suppress; + UnitTest::TestRunner::Instance().m_suppressOutput = suppress; + } + void BaseAssetManagerTest::WriteAssetToDisk(const AZStd::string& assetName, [[maybe_unused]] const AZStd::string& assetIdGuid) { AZStd::string assetFileName = GetTestFolderPath() + assetName; diff --git a/Code/Framework/AzCore/Tests/Asset/BaseAssetManagerTest.h b/Code/Framework/AzCore/Tests/Asset/BaseAssetManagerTest.h index 757edb3713..29c2c124cd 100644 --- a/Code/Framework/AzCore/Tests/Asset/BaseAssetManagerTest.h +++ b/Code/Framework/AzCore/Tests/Asset/BaseAssetManagerTest.h @@ -63,6 +63,8 @@ namespace UnitTest void SetUp() override; void TearDown() override; + static void SuppressTraceOutput(bool suppress); + // Helper methods to create and destroy actual assets on the disk for true end-to-end asset loading. void WriteAssetToDisk(const AZStd::string& assetName, const AZStd::string& assetIdGuid); void DeleteAssetFromDisk(const AZStd::string& assetName); diff --git a/Code/Framework/AzCore/Tests/BehaviorContextFixture.h b/Code/Framework/AzCore/Tests/BehaviorContextFixture.h index 1895f2e35b..3c6d48add7 100644 --- a/Code/Framework/AzCore/Tests/BehaviorContextFixture.h +++ b/Code/Framework/AzCore/Tests/BehaviorContextFixture.h @@ -59,7 +59,6 @@ namespace UnitTest AZ::SerializeContext* GetSerializeContext() override { return nullptr; } AZ::BehaviorContext* GetBehaviorContext() override { return m_behaviorContext; } AZ::JsonRegistrationContext* GetJsonRegistrationContext() override { return nullptr; } - const char* GetAppRoot() const override { return nullptr; } const char* GetEngineRoot() const override { return nullptr; } const char* GetExecutableFolder() const override { return nullptr; } void EnumerateEntities(const EntityCallback& /*callback*/) override {} diff --git a/Code/Framework/AzCore/Tests/Components.cpp b/Code/Framework/AzCore/Tests/Components.cpp index 55b1c193b3..013d998c52 100644 --- a/Code/Framework/AzCore/Tests/Components.cpp +++ b/Code/Framework/AzCore/Tests/Components.cpp @@ -1060,26 +1060,21 @@ namespace UnitTest /** * UserSettingsComponent test */ - class UserSettingsTestApp - : public ComponentApplication - , public UserSettingsFileLocatorBus::Handler - { - public: - void SetExecutableFolder(const char* path) - { - m_exeDirectory = path; - } - + class UserSettingsTestApp + : public ComponentApplication + , public UserSettingsFileLocatorBus::Handler + { + public: AZStd::string ResolveFilePath(u32 providerId) override { AZStd::string filePath; if (providerId == UserSettings::CT_GLOBAL) { - filePath = (m_exeDirectory / "GlobalUserSettings.xml").String(); + filePath = (AZ::IO::Path(GetTestFolderPath()) / "GlobalUserSettings.xml").Native(); } else if (providerId == UserSettings::CT_LOCAL) { - filePath = (m_exeDirectory / "LocalUserSettings.xml").String(); + filePath = (AZ::IO::Path(GetTestFolderPath()) / "LocalUserSettings.xml").Native(); } return filePath; } @@ -1117,7 +1112,6 @@ namespace UnitTest ComponentApplication::Descriptor appDesc; appDesc.m_memoryBlocksByteSize = 10 * 1024 * 1024; Entity* systemEntity = app.Create(appDesc); - app.SetExecutableFolder(GetTestFolderPath().c_str()); app.UserSettingsFileLocatorBus::Handler::BusConnect(); // Make sure user settings file does not exist at this point diff --git a/Code/Framework/AzCore/Tests/Debug.cpp b/Code/Framework/AzCore/Tests/Debug.cpp index 0d6e1a51e0..bd90611af3 100644 --- a/Code/Framework/AzCore/Tests/Debug.cpp +++ b/Code/Framework/AzCore/Tests/Debug.cpp @@ -6,7 +6,6 @@ * */ -#include #include #include #include diff --git a/Code/Framework/AzCore/Tests/EBus/ScheduledEventTests.cpp b/Code/Framework/AzCore/Tests/EBus/ScheduledEventTests.cpp index ec9a09fb09..b9c690edcc 100644 --- a/Code/Framework/AzCore/Tests/EBus/ScheduledEventTests.cpp +++ b/Code/Framework/AzCore/Tests/EBus/ScheduledEventTests.cpp @@ -11,7 +11,7 @@ #include #include #include -#include +#include #include #include @@ -26,22 +26,22 @@ namespace UnitTest SetupAllocator(); AZ::NameDictionary::Create(); - m_loggerComponent = new AZ::LoggerSystemComponent; - m_timeComponent = new AZ::TimeSystemComponent; - m_eventSchedulerComponent = new AZ::EventSchedulerSystemComponent; + m_loggerComponent = AZStd::make_unique(); + m_timeSystem = AZStd::make_unique(); + m_eventSchedulerComponent = AZStd::make_unique(); - m_testEvent = new AZ::ScheduledEvent([this] { TestBasicEvent(); }, AZ::Name("UnitTestEvent fire once event")); - m_testRequeue = new AZ::ScheduledEvent([this] { TestAutoRequeuedEvent(); }, AZ::Name("UnitTestEvent auto Requeue")); + m_testEvent = AZStd::make_unique([this] { TestBasicEvent(); }, AZ::Name("UnitTestEvent fire once event")); + m_testRequeue = AZStd::make_unique([this] { TestAutoRequeuedEvent(); }, AZ::Name("UnitTestEvent auto Requeue")); } void TearDown() override { - delete m_testEvent; - delete m_testRequeue; + m_testEvent.reset(); + m_testRequeue.reset(); - delete m_eventSchedulerComponent; - delete m_timeComponent; - delete m_loggerComponent; + m_eventSchedulerComponent.reset(); + m_timeSystem.reset(); + m_loggerComponent.reset(); AZ::NameDictionary::Destroy(); TeardownAllocator(); @@ -60,12 +60,12 @@ namespace UnitTest uint32_t m_basicEventTriggerCount = 0; uint32_t m_requeuedEventTriggerCount = 0; - AZ::ScheduledEvent* m_testEvent = nullptr; - AZ::ScheduledEvent* m_testRequeue = nullptr; + AZStd::unique_ptr m_testEvent; + AZStd::unique_ptr m_testRequeue; - AZ::LoggerSystemComponent* m_loggerComponent = nullptr; - AZ::TimeSystemComponent* m_timeComponent = nullptr; - AZ::EventSchedulerSystemComponent* m_eventSchedulerComponent = nullptr; + AZStd::unique_ptr m_loggerComponent; + AZStd::unique_ptr m_timeSystem; + AZStd::unique_ptr m_eventSchedulerComponent; }; TEST_F(ScheduledEventTests, TestFireOnce) diff --git a/Code/Framework/AzCore/Tests/Math/FrustumTests.cpp b/Code/Framework/AzCore/Tests/Math/FrustumTests.cpp index 294d622a92..31fa6b626f 100644 --- a/Code/Framework/AzCore/Tests/Math/FrustumTests.cpp +++ b/Code/Framework/AzCore/Tests/Math/FrustumTests.cpp @@ -552,7 +552,6 @@ namespace UnitTest box.testCaseName = "BoxShaped"; frustums.push_back(box); - // Default values in a CCamera from Cry_Camera.h FrustumTestCase defaultCameraFrustum; defaultCameraFrustum.nearTopLeft = AZ::Vector3(-0.204621f, 0.200000f, 0.153465f); defaultCameraFrustum.nearTopRight = AZ::Vector3(0.204621f, 0.200000f, 0.153465f); diff --git a/Code/Framework/AzCore/Tests/Serialization.cpp b/Code/Framework/AzCore/Tests/Serialization.cpp index f1d5edc490..219744a480 100644 --- a/Code/Framework/AzCore/Tests/Serialization.cpp +++ b/Code/Framework/AzCore/Tests/Serialization.cpp @@ -1240,7 +1240,6 @@ namespace UnitTest SerializeContext* GetSerializeContext() override { return m_serializeContext.get(); } BehaviorContext* GetBehaviorContext() override { return nullptr; } JsonRegistrationContext* GetJsonRegistrationContext() override { return nullptr; } - const char* GetAppRoot() const override { return nullptr; } const char* GetEngineRoot() const override { return nullptr; } const char* GetExecutableFolder() const override { return nullptr; } void EnumerateEntities(const EntityCallback& /*callback*/) override {} diff --git a/Code/Framework/AzCore/Tests/Time/TimeTests.cpp b/Code/Framework/AzCore/Tests/Time/TimeTests.cpp index 6727ef1501..7ba01ec0e0 100644 --- a/Code/Framework/AzCore/Tests/Time/TimeTests.cpp +++ b/Code/Framework/AzCore/Tests/Time/TimeTests.cpp @@ -6,7 +6,7 @@ * */ -#include +#include #include namespace UnitTest @@ -18,16 +18,16 @@ namespace UnitTest void SetUp() override { SetupAllocator(); - m_timeComponent = new AZ::TimeSystemComponent; + m_timeSystem = AZStd::make_unique(); } void TearDown() override { - delete m_timeComponent; + m_timeSystem.reset(); TeardownAllocator(); } - AZ::TimeSystemComponent* m_timeComponent = nullptr; + AZStd::unique_ptr m_timeSystem; }; TEST_F(TimeTests, TestConversionUsToMs) @@ -44,6 +44,30 @@ namespace UnitTest EXPECT_EQ(timeUs, AZ::TimeUs{ 1000000 }); } + TEST_F(TimeTests, TestConversionTimeMsToSeconds) + { + AZ::TimeMs timeMs = AZ::TimeMs{ 1000 }; + float timeSecondsFloat = AZ::TimeMsToSeconds(timeMs); + EXPECT_TRUE(AZ::IsClose(timeSecondsFloat, 1.0f)); + + double timeSecondsDouble = AZ::TimeMsToSecondsDouble(timeMs); + EXPECT_TRUE(AZ::IsClose(timeSecondsDouble, 1.0)); + } + + TEST_F(TimeTests, TestConversionSecondsToTimeUs) + { + double seconds = 1.0; + AZ::TimeUs timeUs = AZ::SecondsToTimeUs(seconds); + EXPECT_EQ(timeUs, AZ::TimeUs{ 1000000 }); + } + + TEST_F(TimeTests, TestConversionSecondsToTimeMs) + { + double seconds = 1.0; + AZ::TimeMs timeMs = AZ::SecondsToTimeMs(seconds); + EXPECT_EQ(timeMs, AZ::TimeMs{ 1000 }); + } + TEST_F(TimeTests, TestClocks) { AZ::TimeUs timeUs = AZ::GetElapsedTimeUs(); diff --git a/Code/Framework/AzFramework/AzFramework/API/ApplicationAPI.h b/Code/Framework/AzFramework/AzFramework/API/ApplicationAPI.h index 1c5db0a82b..e536082d61 100644 --- a/Code/Framework/AzFramework/AzFramework/API/ApplicationAPI.h +++ b/Code/Framework/AzFramework/AzFramework/API/ApplicationAPI.h @@ -67,12 +67,6 @@ namespace AzFramework /// Make path relative to the provided root. virtual void MakePathRelative(AZStd::string& /*fullPath*/, const char* /*rootPath*/) {} - /// Gets the engine root path where the modules for the current engine are located. - virtual const char* GetEngineRoot() const { return nullptr; } - - /// Retrieves the app root path for the application. - virtual const char* GetAppRoot() const { return nullptr; } - /// Get the Command Line arguments passed in. virtual const CommandLine* GetCommandLine() { return nullptr; } diff --git a/Code/Framework/AzFramework/AzFramework/Application/Application.cpp b/Code/Framework/AzFramework/AzFramework/Application/Application.cpp index 323e834413..b3521a877f 100644 --- a/Code/Framework/AzFramework/AzFramework/Application/Application.cpp +++ b/Code/Framework/AzFramework/AzFramework/Application/Application.cpp @@ -69,6 +69,7 @@ #include #include #include +#include #include "Application.h" #include @@ -224,13 +225,6 @@ namespace AzFramework } } - void Application::PreModuleLoad() - { - SetRootPath(RootPathType::EngineRoot, m_engineRoot.c_str()); - AZ_TracePrintf(s_azFrameworkWarningWindow, "Engine Path: %s\n", m_engineRoot.c_str()); - } - - void Application::Stop() { if (m_isStarted) @@ -318,6 +312,8 @@ namespace AzFramework AzFramework::SurfaceData::SurfaceTagWeight::Reflect(context); AzFramework::SurfaceData::SurfacePoint::Reflect(context); AzFramework::Terrain::TerrainDataRequests::Reflect(context); + Physics::HeightfieldProviderRequests::Reflect(context); + Physics::HeightMaterialPoint::Reflect(context); if (AZ::SerializeContext* serializeContext = azrtti_cast(context)) { @@ -394,11 +390,6 @@ namespace AzFramework outModules.emplace_back(aznew AzFrameworkModule()); } - const char* Application::GetAppRoot() const - { - return m_appRoot.c_str(); - } - const char* Application::GetCurrentConfigurationName() const { #if defined(_RELEASE) @@ -434,19 +425,19 @@ namespace AzFramework void Application::ResolveEnginePath(AZStd::string& engineRelativePath) const { - AZ::IO::FixedMaxPath fullPath = m_engineRoot / engineRelativePath; + auto fullPath = AZ::IO::FixedMaxPath(GetEngineRoot()) / engineRelativePath; engineRelativePath = fullPath.String(); } void Application::CalculateBranchTokenForEngineRoot(AZStd::string& token) const { - AzFramework::StringFunc::AssetPath::CalculateBranchToken(m_engineRoot.String(), token); + AZ::StringFunc::AssetPath::CalculateBranchToken(GetEngineRoot(), token); } //////////////////////////////////////////////////////////////////////////// void Application::MakePathRootRelative(AZStd::string& fullPath) { - MakePathRelative(fullPath, m_engineRoot.c_str()); + MakePathRelative(fullPath, GetEngineRoot()); } //////////////////////////////////////////////////////////////////////////// @@ -562,11 +553,9 @@ namespace AzFramework //////////////////////////////////////////////////////////////////////////// - AZ_CVAR(float, t_frameTimeOverride, 0.0f, nullptr, AZ::ConsoleFunctorFlags::Null, "If > 0, overrides the application delta frame-time with the provided value"); - - void Application::Tick(float deltaOverride /*= -1.f*/) + void Application::Tick() { - ComponentApplication::Tick((t_frameTimeOverride > 0.0f) ? t_frameTimeOverride : deltaOverride); + ComponentApplication::Tick(); } //////////////////////////////////////////////////////////////////////////// @@ -582,30 +571,6 @@ namespace AzFramework } } - void Application::SetRootPath(RootPathType type, const char* source) - { - [[maybe_unused]] const size_t sourceLen = strlen(source); - - // Copy the source path to the intended root path and correct the path separators as well - switch (type) - { - case RootPathType::AppRoot: - { - AZ_Assert(sourceLen < m_appRoot.Native().max_size(), "String overflow for App Root: %s", source); - m_appRoot = AZ::IO::PathView(source).LexicallyNormal(); - } - break; - case RootPathType::EngineRoot: - { - AZ_Assert(sourceLen < m_engineRoot.Native().max_size(), "String overflow for Engine Root: %s", source); - m_engineRoot = AZ::IO::PathView(source).LexicallyNormal(); - } - break; - default: - AZ_Assert(false, "Invalid RootPathType (%d)", static_cast(type)); - } - } - struct DeprecatedAliasesKeyVisitor : AZ::SettingsRegistryInterface::Visitor { diff --git a/Code/Framework/AzFramework/AzFramework/Application/Application.h b/Code/Framework/AzFramework/AzFramework/Application/Application.h index c6b1dfeaae..27144e4376 100644 --- a/Code/Framework/AzFramework/AzFramework/Application/Application.h +++ b/Code/Framework/AzFramework/AzFramework/Application/Application.h @@ -87,7 +87,7 @@ namespace AzFramework */ virtual void Stop(); - void Tick(float deltaOverride = -1.f) override; + void Tick() override; AZ::ComponentTypeList GetRequiredSystemComponents() const override; @@ -95,8 +95,6 @@ namespace AzFramework ////////////////////////////////////////////////////////////////////////// //! ApplicationRequests::Bus::Handler - const char* GetEngineRoot() const override { return m_engineRoot.c_str(); } - const char* GetAppRoot() const override; void ResolveEnginePath(AZStd::string& engineRelativePath) const override; void CalculateBranchTokenForEngineRoot(AZStd::string& token) const override; bool IsPrefabSystemEnabled() const override; @@ -146,8 +144,6 @@ namespace AzFramework */ void SetFileIOAliases(); - void PreModuleLoad() override; - ////////////////////////////////////////////////////////////////////////// //! AZ::ComponentApplication void RegisterCoreComponents() override; @@ -181,13 +177,7 @@ namespace AzFramework bool m_ownsConsole = false; bool m_exitMainLoopRequested = false; - - enum class RootPathType - { - AppRoot, - EngineRoot - }; - void SetRootPath(RootPathType type, const char* source); + }; } // namespace AzFramework diff --git a/Code/Framework/AzFramework/AzFramework/Archive/Archive.cpp b/Code/Framework/AzFramework/AzFramework/Archive/Archive.cpp index c1c5775958..a60a657d87 100644 --- a/Code/Framework/AzFramework/AzFramework/Archive/Archive.cpp +++ b/Code/Framework/AzFramework/AzFramework/Archive/Archive.cpp @@ -34,7 +34,6 @@ #include #include #include -#include #include #include #include @@ -43,8 +42,10 @@ namespace AZ::IO { - AZ_CVAR(int, sys_PakPriority, aznumeric_cast(ArchiveVars{}.nPriority), nullptr, AZ::ConsoleFunctorFlags::Null, - "If set to 1, tells Archive to try to open the file in pak first, then go to file system"); + AZ_CVAR(int, sys_PakPriority, aznumeric_cast(ArchiveVars{}.m_fileSearchPriority), nullptr, AZ::ConsoleFunctorFlags::Null, + "If set to 0, tells Archive to try to open the file on the file system first othewise check mounted paks.\n" + "If set to 1, tells Archive to try to open the file in pak first, then go to file system.\n" + "If set to 2, tells the Archive to only open files from the pak"); AZ_CVAR(int, sys_PakMessageInvalidFileAccess, ArchiveVars{}.nMessageInvalidFileAccess, nullptr, AZ::ConsoleFunctorFlags::Null, "Message Box synchronous file access when in game"); @@ -437,9 +438,9 @@ namespace AZ::IO ////////////////////////////////////////////////////////////////////////// - bool Archive::IsFileExist(AZStd::string_view sFilename, EFileSearchLocation fileLocation) + bool Archive::IsFileExist(AZStd::string_view sFilename, FileSearchLocation fileLocation) { - const AZ::IO::ArchiveLocationPriority nVarPakPriority = GetPakPriority(); + const AZ::IO::FileSearchPriority nVarPakPriority = GetPakPriority(); auto szFullPath = AZ::IO::FileIOBase::GetDirectInstance()->ResolvePath(sFilename); if (!szFullPath) @@ -450,25 +451,25 @@ namespace AZ::IO switch(fileLocation) { - case IArchive::eFileLocation_Any: + case FileSearchLocation::Any: // Search for file based on pak priority switch (nVarPakPriority) { - case ArchiveLocationPriority::ePakPriorityFileFirst: + case FileSearchPriority::FileFirst: return FileIOBase::GetDirectInstance()->Exists(szFullPath->c_str()) || FindPakFileEntry(szFullPath->Native()); - case ArchiveLocationPriority::ePakPriorityPakFirst: + case FileSearchPriority::PakFirst: return FindPakFileEntry(szFullPath->Native()) || IO::FileIOBase::GetDirectInstance()->Exists(szFullPath->c_str()); - case ArchiveLocationPriority::ePakPriorityPakOnly: + case FileSearchPriority::PakOnly: return FindPakFileEntry(szFullPath->Native()); default: - AZ_Assert(false, "PakPriority %d doesn't match a value in the ArchiveLocationPriority enum", + AZ_Assert(false, "PakPriority %d doesn't match a value in the FileSearchPriority enum", aznumeric_cast(nVarPakPriority)); } break; - case IArchive::eFileLocation_InPak: + case FileSearchLocation::InPak: return FindPakFileEntry(szFullPath->Native()); - case IArchive::eFileLocation_OnDisk: - if (nVarPakPriority != ArchiveLocationPriority::ePakPriorityPakOnly) + case FileSearchLocation::OnDisk: + if (nVarPakPriority != FileSearchPriority::PakOnly) { return FileIOBase::GetDirectInstance()->Exists(szFullPath->c_str()); } @@ -485,7 +486,7 @@ namespace AZ::IO ////////////////////////////////////////////////////////////////////////// bool Archive::IsFolder(AZStd::string_view sPath) { - AZStd::fixed_string filePath{ sPath }; + AZ::IO::FixedMaxPath filePath{ sPath }; return AZ::IO::FileIOBase::GetDirectInstance()->IsDirectory(filePath.c_str()); } @@ -515,7 +516,7 @@ namespace AZ::IO // get the priority into local variable to avoid it changing in the course of // this function execution (?) - const ArchiveLocationPriority nVarPakPriority = GetPakPriority(); + const FileSearchPriority nVarPakPriority = GetPakPriority(); AZ::IO::OpenMode nOSFlags = AZ::IO::GetOpenModeFromStringMode(szMode); @@ -628,17 +629,17 @@ namespace AZ::IO switch (nVarPakPriority) { - case ArchiveLocationPriority::ePakPriorityFileFirst: + case FileSearchPriority::FileFirst: { AZ::IO::HandleType fileHandle = OpenFromFileSystem(); return fileHandle != AZ::IO::InvalidHandle ? fileHandle : OpenFromArchive(); } - case ArchiveLocationPriority::ePakPriorityPakFirst: + case FileSearchPriority::PakFirst: { AZ::IO::HandleType fileHandle = OpenFromArchive(); return fileHandle != AZ::IO::InvalidHandle ? fileHandle : OpenFromFileSystem(); } - case ArchiveLocationPriority::ePakPriorityPakOnly: + case FileSearchPriority::PakOnly: { return OpenFromArchive(); } @@ -810,7 +811,7 @@ namespace AZ::IO return 0; } - if (GetPakPriority() == ArchiveLocationPriority::ePakPriorityFileFirst) // if the file system files have priority now.. + if (GetPakPriority() == FileSearchPriority::FileFirst) // if the file system files have priority now.. { IArchive::SignedFileSize nFileSize = GetFileSizeOnDisk(fullPath->Native()); if (nFileSize != IArchive::FILE_NOT_PRESENT) @@ -825,7 +826,7 @@ namespace AZ::IO return pFileEntry->desc.lSizeUncompressed; } - if (bAllowUseFileSystem || GetPakPriority() == ArchiveLocationPriority::ePakPriorityPakFirst) // if the archive files had more priority, we didn't attempt fopen before- try it now + if (bAllowUseFileSystem || GetPakPriority() == FileSearchPriority::PakFirst) // if the archive files had more priority, we didn't attempt fopen before- try it now { IArchive::SignedFileSize nFileSize = GetFileSizeOnDisk(fullPath->Native()); if (nFileSize != IArchive::FILE_NOT_PRESENT) @@ -1023,7 +1024,7 @@ namespace AZ::IO ////////////////////////////////////////////////////////////////////////// - AZ::IO::ArchiveFileIterator Archive::FindFirst(AZStd::string_view pDir, EFileSearchType searchType) + AZ::IO::ArchiveFileIterator Archive::FindFirst(AZStd::string_view pDir, FileSearchLocation searchType) { auto szFullPath = AZ::IO::FileIOBase::GetDirectInstance()->ResolvePath(pDir); if (!szFullPath) @@ -1036,18 +1037,21 @@ namespace AZ::IO bool bAllowUseFileSystem{}; switch (searchType) { - case IArchive::eFileSearchType_AllowInZipsOnly: - bAllowUseFileSystem = false; - bScanZips = true; - break; - case IArchive::eFileSearchType_AllowOnDiskAndInZips: - bAllowUseFileSystem = true; - bScanZips = true; - break; - case IArchive::eFileSearchType_AllowOnDiskOnly: - bAllowUseFileSystem = true; - bScanZips = false; - break; + case FileSearchLocation::InPak: + bAllowUseFileSystem = false; + bScanZips = true; + break; + case FileSearchLocation::Any: + bAllowUseFileSystem = true; + bScanZips = true; + break; + case FileSearchLocation::OnDisk: + bAllowUseFileSystem = true; + bScanZips = false; + break; + default: + AZ_Assert(false, "Invalid search location value supplied"); + break; } AZStd::intrusive_ptr pFindData = aznew AZ::IO::FindData(); @@ -1218,7 +1222,7 @@ namespace AZ::IO else { // [LYN-2376] Remove once legacy slice support is removed - AZStd::vector levelDirs; + AZStd::vector levelDirs; if (addLevels) { @@ -1241,6 +1245,10 @@ namespace AZ::IO m_arrZips.insert(revItZip.base(), desc); + // This lock is for m_arrZips. + // Unlock it now because the modification is complete, and events responding to this signal + // will attempt to lock the same mutex, causing the application to lock up. + lock.unlock(); m_levelOpenEvent.Signal(levelDirs); } @@ -1376,7 +1384,7 @@ namespace AZ::IO return true; } - if (AZ::IO::ArchiveFileIterator fileIterator = FindFirst(pWildcardIn, IArchive::eFileSearchType_AllowOnDiskOnly); fileIterator) + if (AZ::IO::ArchiveFileIterator fileIterator = FindFirst(pWildcardIn, FileSearchLocation::OnDisk); fileIterator) { AZStd::vector files; do @@ -1951,15 +1959,15 @@ namespace AZ::IO } // gets the current archive priority - ArchiveLocationPriority Archive::GetPakPriority() const + FileSearchPriority Archive::GetPakPriority() const { - int pakPriority = aznumeric_cast(ArchiveVars{}.nPriority); + FileSearchPriority pakPriority = ArchiveVars{}.m_fileSearchPriority; if (auto console = AZ::Interface::Get(); console != nullptr) { - [[maybe_unused]] AZ::GetValueResult getCvarResult = console->GetCvarValue("sys_PakPriority", pakPriority); + [[maybe_unused]] AZ::GetValueResult getCvarResult = console->GetCvarValue("sys_PakPriority", reinterpret_cast(pakPriority)); AZ_Error("Archive", getCvarResult == AZ::GetValueResult::Success, "Lookup of 'sys_PakPriority console variable failed with error %s", AZ::GetEnumString(getCvarResult)); } - return static_cast(pakPriority); + return pakPriority; } ////////////////////////////////////////////////////////////////////////// @@ -2026,13 +2034,13 @@ namespace AZ::IO switch (GetPakPriority()) { - case ArchiveLocationPriority::ePakPriorityFileFirst: + case FileSearchPriority::FileFirst: info.m_conflictResolution = AZ::IO::ConflictResolution::PreferFile; break; - case ArchiveLocationPriority::ePakPriorityPakFirst: + case FileSearchPriority::PakFirst: info.m_conflictResolution = AZ::IO::ConflictResolution::PreferArchive; break; - case ArchiveLocationPriority::ePakPriorityPakOnly: + case FileSearchPriority::PakOnly: info.m_conflictResolution = AZ::IO::ConflictResolution::UseArchiveOnly; break; } @@ -2143,13 +2151,13 @@ namespace AZ::IO return manifestInfo; } - AZStd::vector Archive::ScanForLevels(ZipDir::CachePtr pZip) + AZStd::vector Archive::ScanForLevels(ZipDir::CachePtr pZip) { - AZStd::queue scanDirs; - AZStd::vector levelDirs; - AZStd::string currentDir = "levels"; - AZStd::string currentDirPattern; - AZStd::string currentFilePattern; + AZStd::queue scanDirs; + AZStd::vector levelDirs; + AZ::IO::Path currentDir = "levels"; + AZ::IO::Path currentDirPattern; + AZ::IO::Path currentFilePattern; ZipDir::FindDir findDir(pZip); findDir.FindFirst(currentDir.c_str()); @@ -2167,11 +2175,10 @@ namespace AZ::IO scanDirs.pop(); } - currentDirPattern = currentDir + AZ_FILESYSTEM_SEPARATOR_WILDCARD; - currentFilePattern = currentDir + AZ_CORRECT_FILESYSTEM_SEPARATOR_STRING + "level.pak"; + currentDirPattern = currentDir / "*"; + currentFilePattern = currentDir / "level.pak"; - ZipDir::FileEntry* fileEntry = findFile.FindExact(currentFilePattern.c_str()); - if (fileEntry) + if (ZipDir::FileEntry* fileEntry = findFile.FindExact(currentFilePattern); fileEntry) { levelDirs.emplace_back(currentDir); continue; @@ -2179,9 +2186,7 @@ namespace AZ::IO for (findDir.FindFirst(currentDirPattern.c_str()); findDir.GetDirEntry(); findDir.FindNext()) { - AZStd::string_view dirName = findDir.GetDirName(); - AZStd::string dirToAdd = AZStd::string::format("%s/%.*s", currentDir.data(), aznumeric_cast(dirName.size()), dirName.data()); - scanDirs.push(dirToAdd); + scanDirs.push(currentDir / findDir.GetDirName()); } } while (!scanDirs.empty()); diff --git a/Code/Framework/AzFramework/AzFramework/Archive/Archive.h b/Code/Framework/AzFramework/AzFramework/Archive/Archive.h index 279702b433..d429aa8f17 100644 --- a/Code/Framework/AzFramework/AzFramework/Archive/Archive.h +++ b/Code/Framework/AzFramework/AzFramework/Archive/Archive.h @@ -207,7 +207,7 @@ namespace AZ::IO uint64_t FTell(AZ::IO::HandleType handle) override; int FFlush(AZ::IO::HandleType handle) override; int FClose(AZ::IO::HandleType handle) override; - AZ::IO::ArchiveFileIterator FindFirst(AZStd::string_view pDir, EFileSearchType searchType = eFileSearchType_AllowInZipsOnly) override; + AZ::IO::ArchiveFileIterator FindFirst(AZStd::string_view pDir, FileSearchLocation searchType = FileSearchLocation::InPak) override; AZ::IO::ArchiveFileIterator FindNext(AZ::IO::ArchiveFileIterator fileIterator) override; bool FindClose(AZ::IO::ArchiveFileIterator fileIterator) override; int FEof(AZ::IO::HandleType handle) override; @@ -219,7 +219,7 @@ namespace AZ::IO bool RemoveDir(AZStd::string_view pName) override; // remove directory from FS (if supported) bool IsAbsPath(AZStd::string_view pPath) override; - bool IsFileExist(AZStd::string_view sFilename, EFileSearchLocation fileLocation = eFileLocation_Any) override; + bool IsFileExist(AZStd::string_view sFilename, FileSearchLocation fileLocation = FileSearchLocation::Any) override; bool IsFolder(AZStd::string_view sPath) override; IArchive::SignedFileSize GetFileSizeOnDisk(AZStd::string_view filename) override; @@ -255,7 +255,7 @@ namespace AZ::IO bool DisableRuntimeFileAccess(bool status, AZStd::thread_id threadId) override; // gets the current archive priority - ArchiveLocationPriority GetPakPriority() const override; + FileSearchPriority GetPakPriority() const override; uint64_t GetFileOffsetOnMedia(AZStd::string_view szName) const override; @@ -305,7 +305,7 @@ namespace AZ::IO AZStd::shared_ptr GetBundleCatalog(ZipDir::CachePtr pZip, const AZStd::string& catalogName); // [LYN-2376] Remove once legacy slice support is removed - AZStd::vector ScanForLevels(ZipDir::CachePtr pZip); + AZStd::vector ScanForLevels(ZipDir::CachePtr pZip); mutable AZStd::shared_mutex m_csOpenFiles; ZipPseudoFileArray m_arrOpenFiles; diff --git a/Code/Framework/AzFramework/AzFramework/Archive/ArchiveFileIO.cpp b/Code/Framework/AzFramework/AzFramework/Archive/ArchiveFileIO.cpp index 9e6e1034ea..8cc2b9dfb4 100644 --- a/Code/Framework/AzFramework/AzFramework/Archive/ArchiveFileIO.cpp +++ b/Code/Framework/AzFramework/AzFramework/Archive/ArchiveFileIO.cpp @@ -169,7 +169,7 @@ namespace AZ::IO size = m_archive->FGetSize(filePath, true); if (!size) { - return m_archive->IsFileExist(filePath, IArchive::eFileLocation_Any) ? IO::ResultCode::Success : IO::ResultCode::Error; + return m_archive->IsFileExist(filePath, FileSearchLocation::Any) ? IO::ResultCode::Success : IO::ResultCode::Error; } return IO::ResultCode::Success; diff --git a/Code/Framework/AzFramework/AzFramework/Archive/ArchiveFindData.cpp b/Code/Framework/AzFramework/AzFramework/Archive/ArchiveFindData.cpp index 7b483dc5de..9e4290131e 100644 --- a/Code/Framework/AzFramework/AzFramework/Archive/ArchiveFindData.cpp +++ b/Code/Framework/AzFramework/AzFramework/Archive/ArchiveFindData.cpp @@ -78,9 +78,9 @@ namespace AZ::IO { // get the priority into local variable to avoid it changing in the course of // this function execution - ArchiveLocationPriority nVarPakPriority = archive->GetPakPriority(); + FileSearchPriority nVarPakPriority = archive->GetPakPriority(); - if (nVarPakPriority == ArchiveLocationPriority::ePakPriorityFileFirst) + if (nVarPakPriority == FileSearchPriority::FileFirst) { // first, find the file system files ScanFS(archive, szDir); @@ -96,7 +96,7 @@ namespace AZ::IO { ScanZips(archive, szDir); } - if (bAllowUseFS || nVarPakPriority != ArchiveLocationPriority::ePakPriorityPakOnly) + if (bAllowUseFS || nVarPakPriority != FileSearchPriority::PakOnly) { ScanFS(archive, szDir); } diff --git a/Code/Framework/AzFramework/AzFramework/Archive/ArchiveVars.cpp b/Code/Framework/AzFramework/AzFramework/Archive/ArchiveVars.cpp new file mode 100644 index 0000000000..0098d97b8d --- /dev/null +++ b/Code/Framework/AzFramework/AzFramework/Archive/ArchiveVars.cpp @@ -0,0 +1,24 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + + +#include + +namespace AZ::IO +{ + FileSearchPriority GetDefaultFileSearchPriority() + { +#if defined(LY_ARCHIVE_FILE_SEARCH_MODE) + return FileSearchPriority{ LY_ARCHIVE_FILE_SEARCH_MODE }; +#else + return FileSearchPriority{ !ArchiveVars::IsReleaseConfig + ? FileSearchPriority::FileFirst + : FileSearchPriority::PakOnly }; +#endif + } +} diff --git a/Code/Framework/AzFramework/AzFramework/Archive/ArchiveVars.h b/Code/Framework/AzFramework/AzFramework/Archive/ArchiveVars.h index 931b07fa71..253e3b0c5b 100644 --- a/Code/Framework/AzFramework/AzFramework/Archive/ArchiveVars.h +++ b/Code/Framework/AzFramework/AzFramework/Archive/ArchiveVars.h @@ -13,13 +13,24 @@ namespace AZ::IO { - enum class ArchiveLocationPriority + enum class FileSearchPriority { - ePakPriorityFileFirst = 0, - ePakPriorityPakFirst = 1, - ePakPriorityPakOnly = 2 + FileFirst, + PakFirst, + PakOnly }; + + //file location enum used in isFileExist to control where the archive system looks for the file. + enum class FileSearchLocation + { + Any, + OnDisk, + InPak + }; + + FileSearchPriority GetDefaultFileSearchPriority(); + // variables that control behavior of the Archive subsystem struct ArchiveVars { @@ -28,8 +39,6 @@ namespace AZ::IO #else inline static constexpr bool IsReleaseConfig{}; #endif - - public: int nReadSlice{}; int nSaveTotalResourceList{}; int nSaveFastloadResourceList{}; @@ -42,9 +51,7 @@ namespace AZ::IO int nLoadCache{}; int nLoadModePaks{}; int nStreamCache{ STREAM_CACHE_DEFAULT }; - ArchiveLocationPriority nPriority{ IsReleaseConfig - ? ArchiveLocationPriority::ePakPriorityPakOnly - : ArchiveLocationPriority::ePakPriorityFileFirst }; // Which file location to favor (loose vs. pak files) + FileSearchPriority m_fileSearchPriority{ GetDefaultFileSearchPriority()}; int nMessageInvalidFileAccess{}; int nLogInvalidFileAccess{ IsReleaseConfig ? 0 : 1 }; int nDisableNonLevelRelatedPaks{ 1 }; diff --git a/Code/Framework/AzFramework/AzFramework/Archive/IArchive.h b/Code/Framework/AzFramework/AzFramework/Archive/IArchive.h index bd9615110a..d7eaee6e24 100644 --- a/Code/Framework/AzFramework/AzFramework/Archive/IArchive.h +++ b/Code/Framework/AzFramework/AzFramework/Archive/IArchive.h @@ -18,13 +18,13 @@ #include #include - +#include enum EStreamSourceMediaType : int32_t; namespace AZ::IO { - enum class ArchiveLocationPriority; + enum class FileSearchPriority; struct IResourceList; struct INestedArchive; struct IArchive; @@ -114,14 +114,6 @@ namespace AZ::IO RFOM_NextLevel // used for level2level loading }; - //file location enum used in isFileExist to control where the archive system looks for the file. - enum EFileSearchLocation - { - eFileLocation_Any = 0, - eFileLocation_OnDisk, - eFileLocation_InPak, - }; - enum EInMemoryArchiveLocation { eInMemoryPakLocale_Unload = 0, @@ -130,12 +122,6 @@ namespace AZ::IO eInMemoryPakLocale_PAK, }; - enum EFileSearchType - { - eFileSearchType_AllowInZipsOnly = 0, - eFileSearchType_AllowOnDiskAndInZips, - eFileSearchType_AllowOnDiskOnly - }; using SignedFileSize = int64_t; @@ -213,7 +199,7 @@ namespace AZ::IO virtual AZStd::intrusive_ptr PoolAllocMemoryBlock(size_t nSize, const char* sUsage, size_t nAlign = 1) = 0; // Arguments: - virtual ArchiveFileIterator FindFirst(AZStd::string_view pDir, EFileSearchType searchType = eFileSearchType_AllowInZipsOnly) = 0; + virtual ArchiveFileIterator FindFirst(AZStd::string_view pDir, FileSearchLocation searchType = FileSearchLocation::InPak) = 0; virtual ArchiveFileIterator FindNext(AZ::IO::ArchiveFileIterator handle) = 0; virtual bool FindClose(AZ::IO::ArchiveFileIterator handle) = 0; //returns file modification time @@ -221,7 +207,7 @@ namespace AZ::IO // Description: // Checks if specified file exist in filesystem. - virtual bool IsFileExist(AZStd::string_view sFilename, EFileSearchLocation = eFileLocation_Any) = 0; + virtual bool IsFileExist(AZStd::string_view sFilename, FileSearchLocation = FileSearchLocation::Any) = 0; // Checks if path is a folder virtual bool IsFolder(AZStd::string_view sPath) = 0; @@ -283,7 +269,7 @@ namespace AZ::IO virtual bool DisableRuntimeFileAccess(bool status, AZStd::thread_id threadId) = 0; // gets the current pak priority - virtual ArchiveLocationPriority GetPakPriority() const = 0; + virtual FileSearchPriority GetPakPriority() const = 0; // Summary: // Return offset in archive file (ideally has to return offset on DVD) for streaming requests sorting @@ -295,7 +281,7 @@ namespace AZ::IO // Event sent when a archive file is opened that contains a level.pak // @param const AZStd::vector& - Array of directories containing level.pak files - using LevelPackOpenEvent = AZ::Event&>; + using LevelPackOpenEvent = AZ::Event&>; virtual auto GetLevelPackOpenEvent()->LevelPackOpenEvent* = 0; // Event sent when a archive contains a level.pak is closed // @param const AZStd::string_view - Name of the pak file that was closed diff --git a/Code/Framework/AzFramework/AzFramework/Asset/AssetBundleManifest.cpp b/Code/Framework/AzFramework/AzFramework/Asset/AssetBundleManifest.cpp index 43a5e8fdb3..b4da5745be 100644 --- a/Code/Framework/AzFramework/AzFramework/Asset/AssetBundleManifest.cpp +++ b/Code/Framework/AzFramework/AzFramework/Asset/AssetBundleManifest.cpp @@ -7,23 +7,153 @@ */ #include +#include +#include #include namespace AzFramework { - - const int AssetBundleManifest::CurrentBundleVersion = 2; + // Redirects writing of the AssetBundleManifest to an older version if the bundle version + // is not set to the current version + static void OldBundleManifestWriter(AZ::SerializeContext::EnumerateInstanceCallContext& callContext, const void* bundleManifestPointer, + const AZ::SerializeContext::ClassData&, const AZ::SerializeContext::ClassElement* assetBundleManifestClassElement); + + static bool BundleManifestVersionConverter(AZ::SerializeContext& context, AZ::SerializeContext::DataElementNode& rootElement); + + const int AssetBundleManifest::CurrentBundleVersion = 3; const char AssetBundleManifest::s_manifestFileName[] = "manifest.xml"; + + AssetBundleManifest::AssetBundleManifest() = default; + AssetBundleManifest::~AssetBundleManifest() = default; + void AssetBundleManifest::ReflectSerialize(AZ::SerializeContext* serializeContext) { if (serializeContext) { serializeContext->Class() - ->Version(2) + ->Version(CurrentBundleVersion, &BundleManifestVersionConverter) + ->Attribute(AZ::SerializeContextAttributes::ObjectStreamWriteElementOverride, &OldBundleManifestWriter) ->Field("BundleVersion", &AssetBundleManifest::m_bundleVersion) ->Field("CatalogName", &AssetBundleManifest::m_catalogName) - ->Field("DependentBundleNames", &AssetBundleManifest::m_depedendentBundleNames) + ->Field("DependentBundleNames", &AssetBundleManifest::m_dependentBundleNames) ->Field("LevelNames", &AssetBundleManifest::m_levelDirs); + + // Make sure the AZStd::vector type is reflected so that it can be read + // using DataElement::GetChildData + serializeContext->RegisterGenericType>(); } } + + bool BundleManifestVersionConverter(AZ::SerializeContext& context, AZ::SerializeContext::DataElementNode& rootElement) + { + if (rootElement.GetVersion() < 3) + { + static constexpr AZ::u32 levelNamesCrc = AZ_CRC_CE("LevelNames"); + AZStd::vector newLevelDirs; + if (AZStd::vector oldLevelNames; rootElement.GetChildData(levelNamesCrc, oldLevelNames)) + { + newLevelDirs.insert(newLevelDirs.end(), + AZStd::make_move_iterator(oldLevelNames.begin()), AZStd::make_move_iterator(oldLevelNames.end())); + } + else + { + AZ_Error("AssetBundleManifest", false, R"(Unable to read "levelNames" from AssetBundleManifest version %u )", + rootElement.GetVersion()); + } + + rootElement.RemoveElementByName(levelNamesCrc); + rootElement.AddElementWithData(context, "LevelNames", newLevelDirs); + } + return true; + } + + void OldBundleManifestWriter(AZ::SerializeContext::EnumerateInstanceCallContext& callContext, const void* bundleManifestPointer, + const AZ::SerializeContext::ClassData&, const AZ::SerializeContext::ClassElement* assetBundleManifestClassElement) + { + // Copy the AssetBundleManifest current version instance to the AssetBundleManifest V2 instance + auto assetBundleManifestCurrent = reinterpret_cast(bundleManifestPointer); + if (assetBundleManifestCurrent->GetBundleVersion() <= 2) + { + auto serializeContext = const_cast(callContext.m_context); + + struct AssetBundleManifestV2 + { + // Use the same ClassName and typeid as the AssetBundleManifest + AZ_TYPE_INFO(AssetBundleManifest, azrtti_typeid()); + AZStd::string m_catalogName; + AZStd::vector m_dependentBundleNames; + AZStd::vector m_levelDirs; + int m_bundleVersion{}; + }; + auto ReflectAssetBundleManifestV2 = [](AZ::SerializeContext* serializeContext) + { + serializeContext->Class() + ->Version(2) + ->Field("BundleVersion", &AssetBundleManifestV2::m_bundleVersion) + ->Field("CatalogName", &AssetBundleManifestV2::m_catalogName) + ->Field("DependentBundleNames", &AssetBundleManifestV2::m_dependentBundleNames) + ->Field("LevelNames", &AssetBundleManifestV2::m_levelDirs); + }; + + // Unreflect the AssetBundleManifest class at the version since it shares the same typeid + // as the older version and Reflect the V2 AssetBundlerManifest + serializeContext->EnableRemoveReflection(); + AssetBundleManifest::ReflectSerialize(serializeContext); + serializeContext->DisableRemoveReflection(); + ReflectAssetBundleManifestV2(serializeContext); + + // Use the Current AssetBundleManifest instance to make a Version 2 AssetBundleManifest + AssetBundleManifestV2 assetBundleManifestV2; + assetBundleManifestV2.m_catalogName = assetBundleManifestCurrent->GetCatalogName(); + assetBundleManifestV2.m_dependentBundleNames = assetBundleManifestCurrent->GetDependentBundleNames(); + assetBundleManifestV2.m_bundleVersion = assetBundleManifestCurrent->GetBundleVersion(); + for (const AZ::IO::Path& levelDir : assetBundleManifestCurrent->GetLevelDirectories()) + { + assetBundleManifestV2.m_levelDirs.emplace_back(levelDir.Native()); + } + + const AZ::TypeId& assetBundlerManifestTypeId = azrtti_typeid(); + const auto assetBundleManifestV2ClassData = serializeContext->FindClassData(assetBundlerManifestTypeId); + + // Create an AssetBundleManifest Version 2 Class Eleemnt + // It will copy over the name and nameCrc values of the current AssetBundleManifestelemnt + auto CreateAssetBundleManifestV2ClassElement = [&assetBundlerManifestTypeId]( + const AZ::SerializeContext::ClassElement* currentVersionElement) -> AZ::SerializeContext::ClassElement + { + AZ::SerializeContext::ClassElement v2ClassElement; + // Copy over the name of he current + if (currentVersionElement) + { + v2ClassElement.m_name = currentVersionElement->m_name; + v2ClassElement.m_nameCrc = currentVersionElement->m_nameCrc; + } + v2ClassElement.m_dataSize = sizeof(AssetBundleManifest); + v2ClassElement.m_azRtti = AZ::GetRttiHelper(); + v2ClassElement.m_genericClassInfo = nullptr; + v2ClassElement.m_typeId = assetBundlerManifestTypeId; + v2ClassElement.m_editData = nullptr; + v2ClassElement.m_attributeOwnership = AZ::SerializeContext::ClassElement::AttributeOwnership::Self; + return v2ClassElement; + }; + const auto assetBundleManifestV2ClassElement = CreateAssetBundleManifestV2ClassElement(assetBundleManifestClassElement); + + serializeContext->EnumerateInstanceConst(&callContext, &assetBundleManifestV2, assetBundlerManifestTypeId, + assetBundleManifestV2ClassData, assetBundleManifestClassElement ? &assetBundleManifestV2ClassElement : nullptr); + + // Unreflect the V2 AssetBundleManifest and Re-reflect the AssetBundleManifest class at the current version + serializeContext->EnableRemoveReflection(); + ReflectAssetBundleManifestV2(serializeContext); + serializeContext->DisableRemoveReflection(); + AssetBundleManifest::ReflectSerialize(serializeContext); + } + } + + const AZStd::vector& AssetBundleManifest::GetLevelDirectories() const + { + return m_levelDirs; + } + void AssetBundleManifest::SetLevelsDirectory(const AZStd::vector& levelDirs) + { + m_levelDirs = levelDirs; + } } // namespace AzFramework diff --git a/Code/Framework/AzFramework/AzFramework/Asset/AssetBundleManifest.h b/Code/Framework/AzFramework/AzFramework/Asset/AssetBundleManifest.h index 9760482231..eb0390a8c0 100644 --- a/Code/Framework/AzFramework/AzFramework/Asset/AssetBundleManifest.h +++ b/Code/Framework/AzFramework/AzFramework/Asset/AssetBundleManifest.h @@ -8,6 +8,7 @@ #pragma once +#include #include #include #include @@ -27,7 +28,8 @@ namespace AzFramework AZ_TYPE_INFO(AssetBundleManifest, "{8628A669-7B19-4C48-A7CB-F670CC9586FD}"); AZ_CLASS_ALLOCATOR(AssetBundleManifest, AZ::SystemAllocator, 0); - AssetBundleManifest() = default; + AssetBundleManifest(); + ~AssetBundleManifest(); static void ReflectSerialize(AZ::SerializeContext* serializeContext); @@ -35,21 +37,21 @@ namespace AzFramework // of files within the AssetBundle in order to update the Asset Registry at runtime when // loading the bundle const AZStd::string& GetCatalogName() const { return m_catalogName; } - AZStd::vector GetDependentBundleNames() const { return m_depedendentBundleNames; } - AZStd::vector GetLevelDirectories() const { return m_levelDirs; } + AZStd::vector GetDependentBundleNames() const { return m_dependentBundleNames; } + const AZStd::vector& GetLevelDirectories() const; int GetBundleVersion() const { return m_bundleVersion; } void SetCatalogName(const AZStd::string& catalogName) { m_catalogName = catalogName; } void SetBundleVersion(int bundleVersion) { m_bundleVersion = bundleVersion; } - void SetDependentBundleNames(const AZStd::vector& dependentBundleNames) { m_depedendentBundleNames = dependentBundleNames; } - void SetLevelsDirectory(const AZStd::vector& levelDirs) { m_levelDirs = levelDirs; } + void SetDependentBundleNames(const AZStd::vector& dependentBundleNames) { m_dependentBundleNames = dependentBundleNames; } + void SetLevelsDirectory(const AZStd::vector& levelDirs); static const char s_manifestFileName[]; static const int CurrentBundleVersion; - private: + private: AZStd::string m_catalogName; - AZStd::vector m_depedendentBundleNames; - AZStd::vector m_levelDirs; + AZStd::vector m_dependentBundleNames; + AZStd::vector m_levelDirs; int m_bundleVersion = CurrentBundleVersion; }; diff --git a/Code/Framework/AzFramework/AzFramework/Asset/AssetCatalog.cpp b/Code/Framework/AzFramework/AzFramework/Asset/AssetCatalog.cpp index 3d76bcefc4..0c6b195434 100644 --- a/Code/Framework/AzFramework/AzFramework/Asset/AssetCatalog.cpp +++ b/Code/Framework/AzFramework/AzFramework/Asset/AssetCatalog.cpp @@ -1186,7 +1186,7 @@ namespace AzFramework } - bool AssetCatalog::CreateBundleManifest(const AZStd::string& deltaCatalogPath, const AZStd::vector& dependentBundleNames, const AZStd::string& fileDirectory, int bundleVersion, const AZStd::vector& levelDirs) + bool AssetCatalog::CreateBundleManifest(const AZStd::string& deltaCatalogPath, const AZStd::vector& dependentBundleNames, const AZStd::string& fileDirectory, int bundleVersion, const AZStd::vector& levelDirs) { if (bundleVersion > AzFramework::AssetBundleManifest::CurrentBundleVersion || bundleVersion < 0) { diff --git a/Code/Framework/AzFramework/AzFramework/Asset/AssetCatalog.h b/Code/Framework/AzFramework/AzFramework/Asset/AssetCatalog.h index 64f3c2e3d2..20f1355e7f 100644 --- a/Code/Framework/AzFramework/AzFramework/Asset/AssetCatalog.h +++ b/Code/Framework/AzFramework/AzFramework/Asset/AssetCatalog.h @@ -67,7 +67,7 @@ namespace AzFramework bool InsertDeltaCatalogBefore(AZStd::shared_ptr deltaCatalog, AZStd::shared_ptr afterDeltaCatalog) override; bool RemoveDeltaCatalog(AZStd::shared_ptr deltaCatalog) override; static bool SaveAssetBundleManifest(const char* assetBundleManifestFile, AzFramework::AssetBundleManifest* bundleManifest); - bool CreateBundleManifest(const AZStd::string& deltaCatalogPath, const AZStd::vector& dependentBundleNames, const AZStd::string& fileDirectory, int bundleVersion, const AZStd::vector& levelDirs) override; + bool CreateBundleManifest(const AZStd::string& deltaCatalogPath, const AZStd::vector& dependentBundleNames, const AZStd::string& fileDirectory, int bundleVersion, const AZStd::vector& levelDirs) override; bool CreateDeltaCatalog(const AZStd::vector& files, const AZStd::string& filePath) override; void AddExtension(const char* extension) override; diff --git a/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.cpp b/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.cpp index bc109b73c2..809f664a10 100644 --- a/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.cpp +++ b/Code/Framework/AzFramework/AzFramework/Components/TransformComponent.cpp @@ -534,7 +534,7 @@ namespace AzFramework void TransformComponent::SetParentImpl(AZ::EntityId parentId, bool isKeepWorldTM) { - if (parentId == GetEntityId()) + if (GetEntity() && parentId == GetEntityId()) { AZ_Warning("TransformComponent", false, "An entity can not be set as its own parent."); return; diff --git a/Code/Framework/AzFramework/AzFramework/Entity/EntityDebugDisplayBus.h b/Code/Framework/AzFramework/AzFramework/Entity/EntityDebugDisplayBus.h index 49506364f4..b81a0ab7f0 100644 --- a/Code/Framework/AzFramework/AzFramework/Entity/EntityDebugDisplayBus.h +++ b/Code/Framework/AzFramework/AzFramework/Entity/EntityDebugDisplayBus.h @@ -76,9 +76,12 @@ namespace AzFramework virtual void DrawSolidCone(const AZ::Vector3& pos, const AZ::Vector3& dir, float radius, float height, bool drawShaded = true) { (void)pos; (void)dir; (void)radius; (void)height; (void)drawShaded; } virtual void DrawWireCylinder(const AZ::Vector3& center, const AZ::Vector3& axis, float radius, float height) { (void)center; (void)axis; (void)radius; (void)height; } virtual void DrawSolidCylinder(const AZ::Vector3& center, const AZ::Vector3& axis, float radius, float height, bool drawShaded = true) { (void)center; (void)axis; (void)radius; (void)height; (void)drawShaded; } + virtual void DrawWireCylinderNoEnds(const AZ::Vector3& center, const AZ::Vector3& axis, float radius, float height) { (void)center; (void)axis; (void)radius; (void)height; } + virtual void DrawSolidCylinderNoEnds(const AZ::Vector3& center, const AZ::Vector3& axis, float radius, float height, bool drawShaded = true) { (void)center; (void)axis; (void)radius; (void)height; (void)drawShaded; } virtual void DrawWireCapsule(const AZ::Vector3& center, const AZ::Vector3& axis, float radius, float heightStraightSection) { (void)center; (void)axis; (void)radius; (void)heightStraightSection; } virtual void DrawWireSphere(const AZ::Vector3& pos, float radius) { (void)pos; (void)radius; } virtual void DrawWireSphere(const AZ::Vector3& pos, const AZ::Vector3 radius) { (void)pos; (void)radius; } + virtual void DrawWireHemisphere(const AZ::Vector3& pos, const AZ::Vector3& axis, float radius) { (void)pos; (void)axis; (void)radius; } virtual void DrawWireDisk(const AZ::Vector3& pos, const AZ::Vector3& dir, float radius) { (void)pos; (void)dir; (void)radius; } virtual void DrawBall(const AZ::Vector3& pos, float radius, bool drawShaded = true) { (void)pos; (void)radius; (void)drawShaded; } virtual void DrawDisk(const AZ::Vector3& pos, const AZ::Vector3& dir, float radius) { (void)pos; (void)dir; (void)radius; } diff --git a/Code/Framework/AzFramework/AzFramework/Physics/HeightfieldProviderBus.cpp b/Code/Framework/AzFramework/AzFramework/Physics/HeightfieldProviderBus.cpp new file mode 100644 index 0000000000..38fac9655c --- /dev/null +++ b/Code/Framework/AzFramework/AzFramework/Physics/HeightfieldProviderBus.cpp @@ -0,0 +1,46 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include "HeightfieldProviderBus.h" +#include +#include +#include + +namespace Physics +{ + void HeightfieldProviderRequests::Reflect(AZ::ReflectContext* context) + { + if (AZ::BehaviorContext* behaviorContext = azrtti_cast(context)) + { + behaviorContext->EBus("HeightfieldProviderRequestsBus") + ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common) + ->Attribute(AZ::Script::Attributes::Module, "physics") + ->Attribute(AZ::Script::Attributes::Category, "PhysX") + ->Event("GetHeightfieldGridSpacing", &Physics::HeightfieldProviderRequestsBus::Events::GetHeightfieldGridSpacing) + ->Event("GetHeightfieldAabb", &Physics::HeightfieldProviderRequestsBus::Events::GetHeightfieldAabb) + ->Event("GetHeightfieldTransform", &Physics::HeightfieldProviderRequestsBus::Events::GetHeightfieldTransform) + ->Event("GetMaterialList", &Physics::HeightfieldProviderRequestsBus::Events::GetMaterialList) + ->Event("GetHeights", &Physics::HeightfieldProviderRequestsBus::Events::GetHeights) + ->Event("GetHeightsAndMaterials", &Physics::HeightfieldProviderRequestsBus::Events::GetHeightsAndMaterials) + ->Event("GetHeightfieldMinHeight", &Physics::HeightfieldProviderRequestsBus::Events::GetHeightfieldMinHeight) + ->Event("GetHeightfieldMaxHeight", &Physics::HeightfieldProviderRequestsBus::Events::GetHeightfieldMaxHeight) + ->Event("GetHeightfieldGridColumns", &Physics::HeightfieldProviderRequestsBus::Events::GetHeightfieldGridColumns) + ->Event("GetHeightfieldGridRows", &Physics::HeightfieldProviderRequestsBus::Events::GetHeightfieldGridRows) + ; + } + } + + void HeightMaterialPoint::Reflect(AZ::ReflectContext* context) + { + if (AZ::BehaviorContext* behaviorContext = azrtti_cast(context)) + { + behaviorContext->Class()->Attribute(AZ::Script::Attributes::Category, "Physics"); + } + } + +} // namespace Physics diff --git a/Code/Framework/AzFramework/AzFramework/Physics/HeightfieldProviderBus.h b/Code/Framework/AzFramework/AzFramework/Physics/HeightfieldProviderBus.h index 73523ee1ba..da361f0a2b 100644 --- a/Code/Framework/AzFramework/AzFramework/Physics/HeightfieldProviderBus.h +++ b/Code/Framework/AzFramework/AzFramework/Physics/HeightfieldProviderBus.h @@ -26,10 +26,25 @@ namespace Physics struct HeightMaterialPoint { + HeightMaterialPoint( + float height = 0.0f, QuadMeshType type = QuadMeshType::SubdivideUpperLeftToBottomRight, uint8_t index = 0) + : m_height(height) + , m_quadMeshType(type) + , m_materialIndex(index) + , m_padding(0) + { + } + + virtual ~HeightMaterialPoint() = default; + + static void Reflect(AZ::ReflectContext* context); + + AZ_RTTI(HeightMaterialPoint, "{DF167ED4-24E6-4F7B-8AB7-42622F7DBAD3}"); float m_height{ 0.0f }; //!< Holds the height of this point in the heightfield relative to the heightfield entity location. QuadMeshType m_quadMeshType{ QuadMeshType::SubdivideUpperLeftToBottomRight }; //!< By default, create two triangles like this |\|, where this point is in the upper left corner. uint8_t m_materialIndex{ 0 }; //!< The surface material index for the upper left corner of this quad. uint16_t m_padding{ 0 }; //!< available for future use. + }; //! An interface to provide heightfield values. @@ -37,6 +52,8 @@ namespace Physics : public AZ::ComponentBus { public: + static void Reflect(AZ::ReflectContext* context); + //! Returns the distance between each height in the map. //! @return Vector containing Column Spacing, Rows Spacing. virtual AZ::Vector2 GetHeightfieldGridSpacing() const = 0; @@ -46,11 +63,27 @@ namespace Physics //! @param numRows contains the size of the grid in the y direction. virtual void GetHeightfieldGridSize(int32_t& numColumns, int32_t& numRows) const = 0; + //! Returns the height field gridsize columns. + //! @return the size of the grid in the x direction. + virtual int32_t GetHeightfieldGridColumns() const = 0; + + //! Returns the height field gridsize rows. + //! @return the size of the grid in the y direction. + virtual int32_t GetHeightfieldGridRows() const = 0; + //! Returns the height field min and max height bounds. //! @param minHeightBounds contains the minimum height that the heightfield can contain. //! @param maxHeightBounds contains the maximum height that the heightfield can contain. virtual void GetHeightfieldHeightBounds(float& minHeightBounds, float& maxHeightBounds) const = 0; + //! Returns the height field min height bounds. + //! @return the minimum height that the heightfield can contain. + virtual float GetHeightfieldMinHeight() const = 0; + + //! Returns the height field max height bounds. + //! @return the maximum height that the heightfield can contain. + virtual float GetHeightfieldMaxHeight() const = 0; + //! Returns the AABB of the heightfield. //! This is provided separately from the shape AABB because the heightfield might choose to modify the AABB bounds. //! @return AABB of the heightfield. diff --git a/Code/Framework/AzFramework/AzFramework/Physics/Material.cpp b/Code/Framework/AzFramework/AzFramework/Physics/Material.cpp index 222bc48dda..d78d4e0943 100644 --- a/Code/Framework/AzFramework/AzFramework/Physics/Material.cpp +++ b/Code/Framework/AzFramework/AzFramework/Physics/Material.cpp @@ -360,6 +360,11 @@ namespace Physics ->Field("MaterialId", &Physics::MaterialId::m_id) ; } + + if (AZ::BehaviorContext* behaviorContext = azrtti_cast(context)) + { + behaviorContext->Class()->Attribute(AZ::Script::Attributes::Category, "Physics"); + } } MaterialId MaterialId::Create() diff --git a/Code/Framework/AzFramework/AzFramework/Viewport/CameraInput.cpp b/Code/Framework/AzFramework/AzFramework/Viewport/CameraInput.cpp index 26c9db64aa..771884ac6a 100644 --- a/Code/Framework/AzFramework/AzFramework/Viewport/CameraInput.cpp +++ b/Code/Framework/AzFramework/AzFramework/Viewport/CameraInput.cpp @@ -94,27 +94,27 @@ namespace AzFramework float y; float z; - // 2.4 Factor as RzRyRx - if (orientation.GetElement(2, 0) < 1.0f) + // 2.5 Factor as RzRxRy + if (orientation.GetElement(2, 1) < 1.0f) { - if (orientation.GetElement(2, 0) > -1.0f) + if (orientation.GetElement(2, 1) > -1.0f) { - x = AZStd::atan2(orientation.GetElement(2, 1), orientation.GetElement(2, 2)); - y = AZStd::asin(-orientation.GetElement(2, 0)); - z = AZStd::atan2(orientation.GetElement(1, 0), orientation.GetElement(0, 0)); + x = AZStd::asin(orientation.GetElement(2, 1)); + y = AZStd::atan2(-orientation.GetElement(2, 0), orientation.GetElement(2, 2)); + z = AZStd::atan2(-orientation.GetElement(0, 1), orientation.GetElement(1, 1)); } else { - x = 0.0f; - y = AZ::Constants::Pi * 0.5f; - z = -AZStd::atan2(-orientation.GetElement(2, 1), orientation.GetElement(1, 1)); + x = -AZ::Constants::Pi * 0.5f; + y = 0.0f; + z = -AZStd::atan2(orientation.GetElement(0, 2), orientation.GetElement(0, 0)); } } else { - x = 0.0f; - y = -AZ::Constants::Pi * 0.5f; - z = AZStd::atan2(-orientation.GetElement(1, 2), orientation.GetElement(1, 1)); + x = AZ::Constants::Pi * 0.5f; + y = 0.0f; + z = AZStd::atan2(orientation.GetElement(0, 2), orientation.GetElement(0, 0)); } return { x, y, z }; @@ -122,14 +122,36 @@ namespace AzFramework void UpdateCameraFromTransform(Camera& camera, const AZ::Transform& transform) { - const auto eulerAngles = AzFramework::EulerAngles(AZ::Matrix3x3::CreateFromTransform(transform)); + UpdateCameraFromTranslationAndRotation( + camera, transform.GetTranslation(), AzFramework::EulerAngles(AZ::Matrix3x3::CreateFromTransform(transform))); + } + void UpdateCameraFromTranslationAndRotation(Camera& camera, const AZ::Vector3& translation, const AZ::Vector3& eulerAngles) + { camera.m_pitch = eulerAngles.GetX(); camera.m_yaw = eulerAngles.GetZ(); - camera.m_pivot = transform.GetTranslation(); + camera.m_pivot = translation; camera.m_offset = AZ::Vector3::CreateZero(); } + float SmoothValueTime(const float smoothness, float deltaTime) + { + // note: the math for the lerp smoothing implementation for camera rotation and translation was inspired by this excellent + // article by Scott Lembcke: https://www.gamasutra.com/blogs/ScottLembcke/20180404/316046/Improved_Lerp_Smoothing.php + const float rate = AZStd::exp2(smoothness); + return AZStd::exp2(-rate * deltaTime); + } + + float SmoothValue(const float target, const float current, const float time) + { + return AZ::Lerp(target, current, time); + } + + float SmoothValue(const float target, const float current, const float smoothness, const float deltaTime) + { + return SmoothValue(target, current, SmoothValueTime(smoothness, deltaTime)); + } + bool CameraSystem::HandleEvents(const InputEvent& event) { if (const auto& cursor = AZStd::get_if(&event)) @@ -291,6 +313,11 @@ namespace AzFramework { return false; }; + + m_constrainPitch = []() constexpr + { + return true; + }; } bool RotateCameraInput::HandleEvents(const InputEvent& event, const ScreenVector& cursorDelta, [[maybe_unused]] const float scrollDelta) @@ -312,7 +339,10 @@ namespace AzFramework nextCamera.m_yaw -= float(cursorDelta.m_x) * rotateSpeed * Invert(m_invertYawFn()); nextCamera.m_yaw = WrapYawRotation(nextCamera.m_yaw); - nextCamera.m_pitch = ClampPitchRotation(nextCamera.m_pitch); + if (m_constrainPitch()) + { + nextCamera.m_pitch = ClampPitchRotation(nextCamera.m_pitch); + } return nextCamera; } @@ -726,14 +756,14 @@ namespace AzFramework Camera SmoothCamera(const Camera& currentCamera, const Camera& targetCamera, const CameraProps& cameraProps, const float deltaTime) { - const auto clamp_rotation = [](const float angle) + const auto clampRotation = [](const float angle) { return AZStd::fmod(angle + AZ::Constants::TwoPi, AZ::Constants::TwoPi); }; // keep yaw in 0 - 360 range - float targetYaw = clamp_rotation(targetCamera.m_yaw); - const float currentYaw = clamp_rotation(currentCamera.m_yaw); + float targetYaw = clampRotation(targetCamera.m_yaw); + const float currentYaw = clampRotation(currentCamera.m_yaw); // return the sign of the float input (-1, 0, 1) const auto sign = [](const float value) @@ -742,21 +772,17 @@ namespace AzFramework }; // ensure smooth transition when moving across 0 - 360 boundary - const float yawDelta = targetYaw - currentYaw; - if (AZStd::abs(yawDelta) >= AZ::Constants::Pi) + if (const float yawDelta = targetYaw - currentYaw; AZStd::abs(yawDelta) >= AZ::Constants::Pi) { targetYaw -= AZ::Constants::TwoPi * sign(yawDelta); } Camera camera; - // note: the math for the lerp smoothing implementation for camera rotation and translation was inspired by this excellent - // article by Scott Lembcke: https://www.gamasutra.com/blogs/ScottLembcke/20180404/316046/Improved_Lerp_Smoothing.php if (cameraProps.m_rotateSmoothingEnabledFn()) { - const float lookRate = AZStd::exp2(cameraProps.m_rotateSmoothnessFn()); - const float lookTime = AZStd::exp2(-lookRate * deltaTime); - camera.m_pitch = AZ::Lerp(targetCamera.m_pitch, currentCamera.m_pitch, lookTime); - camera.m_yaw = AZ::Lerp(targetYaw, currentYaw, lookTime); + const float lookTime = SmoothValueTime(cameraProps.m_rotateSmoothnessFn(), deltaTime); + camera.m_pitch = SmoothValue(targetCamera.m_pitch, currentCamera.m_pitch, lookTime); + camera.m_yaw = SmoothValue(targetYaw, currentYaw, lookTime); } else { @@ -766,8 +792,7 @@ namespace AzFramework if (cameraProps.m_translateSmoothingEnabledFn()) { - const float moveRate = AZStd::exp2(cameraProps.m_translateSmoothnessFn()); - const float moveTime = AZStd::exp2(-moveRate * deltaTime); + const float moveTime = SmoothValueTime(cameraProps.m_rotateSmoothnessFn(), deltaTime); camera.m_pivot = targetCamera.m_pivot.Lerp(currentCamera.m_pivot, moveTime); camera.m_offset = targetCamera.m_offset.Lerp(currentCamera.m_offset, moveTime); } diff --git a/Code/Framework/AzFramework/AzFramework/Viewport/CameraInput.h b/Code/Framework/AzFramework/AzFramework/Viewport/CameraInput.h index 2d02bb0b6d..4eea94cbe7 100644 --- a/Code/Framework/AzFramework/AzFramework/Viewport/CameraInput.h +++ b/Code/Framework/AzFramework/AzFramework/Viewport/CameraInput.h @@ -85,6 +85,19 @@ namespace AzFramework //! Extracts Euler angles (orientation) and translation from the transform and writes the values to the camera. void UpdateCameraFromTransform(Camera& camera, const AZ::Transform& transform); + //! Writes the translation value and Euler angles to the camera. + void UpdateCameraFromTranslationAndRotation(Camera& camera, const AZ::Vector3& translation, const AZ::Vector3& eulerAngles); + + //! Returns the time ('t') input value to use with SmoothValue. + //! Useful if it is to be reused for multiple calls to SmoothValue. + float SmoothValueTime(float smoothness, float deltaTime); + + // Smoothly interpolate a value from current to target according to a smoothing parameter. + float SmoothValue(float target, float current, float smoothness, float deltaTime); + + // Overload of SmoothValue that takes time ('t') value directly. + float SmoothValue(float target, float current, float time); + //! Generic motion type. template struct MotionEvent @@ -334,6 +347,7 @@ namespace AzFramework AZStd::function m_rotateSpeedFn; AZStd::function m_invertPitchFn; AZStd::function m_invertYawFn; + AZStd::function m_constrainPitch; private: InputChannelId m_rotateChannelId; //!< Input channel to begin the rotate camera input. diff --git a/Code/Framework/AzFramework/AzFramework/Viewport/CameraState.cpp b/Code/Framework/AzFramework/AzFramework/Viewport/CameraState.cpp index 00cbda7b34..40fb82ca97 100644 --- a/Code/Framework/AzFramework/AzFramework/Viewport/CameraState.cpp +++ b/Code/Framework/AzFramework/AzFramework/Viewport/CameraState.cpp @@ -8,18 +8,18 @@ #include "CameraState.h" -#include #include #include +#include namespace AzFramework { void SetCameraClippingVolume( - AzFramework::CameraState& cameraState, const float nearPlane, const float farPlane, const float fovRad) + AzFramework::CameraState& cameraState, const float nearPlane, const float farPlane, const float verticalFovRad) { cameraState.m_nearClip = nearPlane; cameraState.m_farClip = farPlane; - cameraState.m_fovOrZoom = fovRad; + cameraState.m_fovOrZoom = verticalFovRad; } void SetCameraTransform(CameraState& cameraState, const AZ::Transform& transform) @@ -35,20 +35,34 @@ namespace AzFramework SetCameraClippingVolume(cameraState, 0.1f, 1000.0f, AZ::DegToRad(60.0f)); } - AzFramework::CameraState CreateDefaultCamera( - const AZ::Transform& transform, const AZ::Vector2& viewportSize) + CameraState CreateCamera( + const AZ::Transform& transform, + const float nearPlane, + const float farPlane, + const float verticalFovRad, + const AZ::Vector2& viewportSize) { AzFramework::CameraState cameraState; - SetDefaultCameraClippingVolume(cameraState); SetCameraTransform(cameraState, transform); + SetCameraClippingVolume(cameraState, nearPlane, farPlane, verticalFovRad); cameraState.m_viewportSize = viewportSize; return cameraState; } - AzFramework::CameraState CreateIdentityDefaultCamera( - const AZ::Vector3& position, const AZ::Vector2& viewportSize) + AzFramework::CameraState CreateDefaultCamera(const AZ::Transform& transform, const AZ::Vector2& viewportSize) + { + AzFramework::CameraState cameraState; + + SetCameraTransform(cameraState, transform); + SetDefaultCameraClippingVolume(cameraState); + cameraState.m_viewportSize = viewportSize; + + return cameraState; + } + + AzFramework::CameraState CreateIdentityDefaultCamera(const AZ::Vector3& position, const AZ::Vector2& viewportSize) { return CreateDefaultCamera(AZ::Transform::CreateTranslation(position), viewportSize); } @@ -89,15 +103,15 @@ namespace AzFramework void CameraState::Reflect(AZ::SerializeContext& serializeContext) { - serializeContext.Class()-> - Field("Position", &CameraState::m_position)-> - Field("Forward", &CameraState::m_forward)-> - Field("Side", &CameraState::m_side)-> - Field("Up", &CameraState::m_up)-> - Field("ViewportSize", &CameraState::m_viewportSize)-> - Field("NearClip", &CameraState::m_nearClip)-> - Field("FarClip", &CameraState::m_farClip)-> - Field("FovZoom", &CameraState::m_fovOrZoom)-> - Field("Ortho", &CameraState::m_orthographic); + serializeContext.Class() + ->Field("Position", &CameraState::m_position) + ->Field("Forward", &CameraState::m_forward) + ->Field("Side", &CameraState::m_side) + ->Field("Up", &CameraState::m_up) + ->Field("ViewportSize", &CameraState::m_viewportSize) + ->Field("NearClip", &CameraState::m_nearClip) + ->Field("FarClip", &CameraState::m_farClip) + ->Field("FovZoom", &CameraState::m_fovOrZoom) + ->Field("Ortho", &CameraState::m_orthographic); } } // namespace AzFramework diff --git a/Code/Framework/AzFramework/AzFramework/Viewport/CameraState.h b/Code/Framework/AzFramework/AzFramework/Viewport/CameraState.h index e174771c3b..cefb144ec1 100644 --- a/Code/Framework/AzFramework/AzFramework/Viewport/CameraState.h +++ b/Code/Framework/AzFramework/AzFramework/Viewport/CameraState.h @@ -40,10 +40,14 @@ namespace AzFramework AZ::Vector2 m_viewportSize = AZ::Vector2::CreateZero(); //!< Dimensions of the viewport. float m_nearClip = 0.01f; //!< Near clip plane of the camera. float m_farClip = 100.0f; //!< Far clip plane of the camera. - float m_fovOrZoom = 0.0f; //!< Fov or zoom of camera depending on if it is using orthographic projection or not. + float m_fovOrZoom = 0.0f; //!< Vertical fov or zoom of camera depending on if it is using orthographic projection or not. bool m_orthographic = false; //!< Is the camera using orthographic projection or not. }; + //! Create a camera at the given transform, specifying the near and far clip planes as well as the fov with a specific viewport size. + CameraState CreateCamera( + const AZ::Transform& transform, float nearPlane, float farPlane, float verticalFovRad, const AZ::Vector2& viewportSize); + //! Create a camera at the given transform with a specific viewport size. //! @note The near/far clip planes and fov are sensible default values - please //! use SetCameraClippingVolume to override them. @@ -60,7 +64,7 @@ namespace AzFramework CameraState CreateCameraFromWorldFromViewMatrix(const AZ::Matrix4x4& worldFromView, const AZ::Vector2& viewportSize); //! Override the default near/far clipping planes and fov of the camera. - void SetCameraClippingVolume(CameraState& cameraState, float nearPlane, float farPlane, float fovRad); + void SetCameraClippingVolume(CameraState& cameraState, float nearPlane, float farPlane, float verticalFovRad); //! Override the default near/far clipping planes and fov of the camera by inferring them the specified right handed transform into clip space. void SetCameraClippingVolumeFromPerspectiveFovMatrixRH(CameraState& cameraState, const AZ::Matrix4x4& clipFromView); diff --git a/Code/Framework/AzFramework/AzFramework/Viewport/ClickDetector.cpp b/Code/Framework/AzFramework/AzFramework/Viewport/ClickDetector.cpp index 1b3645630e..294ff71974 100644 --- a/Code/Framework/AzFramework/AzFramework/Viewport/ClickDetector.cpp +++ b/Code/Framework/AzFramework/AzFramework/Viewport/ClickDetector.cpp @@ -24,11 +24,12 @@ namespace AzFramework ClickDetector::ClickOutcome ClickDetector::DetectClick(const ClickEvent clickEvent, const ScreenVector& cursorDelta) { + m_moveAccumulator += ScreenVectorLength(cursorDelta); + const auto previousDetectionState = m_detectionState; if (previousDetectionState == DetectionState::WaitingForMove) { // only allow the action to begin if the mouse has been moved a small amount - m_moveAccumulator += ScreenVectorLength(cursorDelta); if (m_moveAccumulator > m_deadZone) { m_detectionState = DetectionState::Moved; @@ -43,7 +44,7 @@ namespace AzFramework using FloatingPointSeconds = AZStd::chrono::duration; const auto diff = now - m_tryBeginTime.value(); - if (FloatingPointSeconds(diff).count() < m_doubleClickInterval) + if (FloatingPointSeconds(diff).count() < m_doubleClickInterval && m_moveAccumulator < m_deadZone) { return ClickOutcome::Nil; } diff --git a/Code/Framework/AzFramework/AzFramework/Viewport/ClickDetector.h b/Code/Framework/AzFramework/AzFramework/Viewport/ClickDetector.h index 70bdeb4619..544afe6d69 100644 --- a/Code/Framework/AzFramework/AzFramework/Viewport/ClickDetector.h +++ b/Code/Framework/AzFramework/AzFramework/Viewport/ClickDetector.h @@ -15,6 +15,10 @@ namespace AzFramework { + //! Default value to use for detecting if the mouse has moved far enough after a mouse down to no longer + //! register a click when a mouse up occurs. + inline constexpr float DefaultMouseMoveDeadZone = 2.0f; + struct ScreenVector; //! Utility class to help detect different types of mouse click (mouse down and up with @@ -66,7 +70,7 @@ namespace AzFramework }; float m_moveAccumulator = 0.0f; //!< How far the mouse has moved after mouse down. - float m_deadZone = 2.0f; //!< How far to move before a click is cancelled (when Move will fire). + float m_deadZone = DefaultMouseMoveDeadZone; //!< How far to move before a click is cancelled (when Move will fire). float m_doubleClickInterval = 0.4f; //!< Default double click interval, can be overridden. DetectionState m_detectionState; //!< Internal state of ClickDetector. //! Mouse down time (happens each mouse down, helps with double click handling). diff --git a/Code/Framework/AzFramework/AzFramework/Viewport/ScreenGeometry.cpp b/Code/Framework/AzFramework/AzFramework/Viewport/ScreenGeometry.cpp index e26d7cfa9b..f1c21230c7 100644 --- a/Code/Framework/AzFramework/AzFramework/Viewport/ScreenGeometry.cpp +++ b/Code/Framework/AzFramework/AzFramework/Viewport/ScreenGeometry.cpp @@ -24,6 +24,10 @@ namespace AzFramework serializeContext->Class()-> Field("X", &ScreenVector::m_x)-> Field("Y", &ScreenVector::m_y); + + serializeContext->Class()-> + Field("Width", &ScreenSize::m_width)-> + Field("Height", &ScreenSize::m_height); } } } // namespace AzFramework diff --git a/Code/Framework/AzFramework/AzFramework/Viewport/ScreenGeometry.h b/Code/Framework/AzFramework/AzFramework/Viewport/ScreenGeometry.h index 1529d760e5..7a5d7fdc62 100644 --- a/Code/Framework/AzFramework/AzFramework/Viewport/ScreenGeometry.h +++ b/Code/Framework/AzFramework/AzFramework/Viewport/ScreenGeometry.h @@ -26,7 +26,7 @@ namespace AzFramework AZ_TYPE_INFO(ScreenPoint, "{8472B6C2-527F-44FC-87F8-C226B1A57A97}"); ScreenPoint() = default; - ScreenPoint(int x, int y) + constexpr ScreenPoint(int x, int y) : m_x(x) , m_y(y) { @@ -45,7 +45,7 @@ namespace AzFramework AZ_TYPE_INFO(ScreenVector, "{1EAA2C62-8FDB-4A28-9FE3-1FA4F1418894}"); ScreenVector() = default; - ScreenVector(int x, int y) + constexpr ScreenVector(int x, int y) : m_x(x) , m_y(y) { @@ -55,6 +55,22 @@ namespace AzFramework int m_y; //!< Y screen delta. }; + //! A wrapper around a screen width and height. + struct ScreenSize + { + AZ_TYPE_INFO(ScreenSize, "{26D28916-6E8E-44B8-83F9-C44BCDA370E2}"); + ScreenSize() = default; + + constexpr ScreenSize(int width, int height) + : m_width(width) + , m_height(height) + { + } + + int m_width; //!< Screen size width. + int m_height; //!< Screen size height. + }; + void ScreenGeometryReflect(AZ::ReflectContext* context); inline const ScreenVector operator-(const ScreenPoint& lhs, const ScreenPoint& rhs) @@ -138,6 +154,16 @@ namespace AzFramework return !operator==(lhs, rhs); } + inline const bool operator==(const ScreenSize& lhs, const ScreenSize& rhs) + { + return lhs.m_width == rhs.m_width && lhs.m_height == rhs.m_height; + } + + inline const bool operator!=(const ScreenSize& lhs, const ScreenSize& rhs) + { + return !operator==(lhs, rhs); + } + inline ScreenVector& operator*=(ScreenVector& lhs, const float rhs) { lhs.m_x = aznumeric_cast(AZStd::lround(aznumeric_cast(lhs.m_x) * rhs)); @@ -152,6 +178,20 @@ namespace AzFramework return result; } + inline ScreenSize& operator*=(ScreenSize& lhs, const float rhs) + { + lhs.m_width = aznumeric_cast(AZStd::lround(aznumeric_cast(lhs.m_width) * rhs)); + lhs.m_height = aznumeric_cast(AZStd::lround(aznumeric_cast(lhs.m_height) * rhs)); + return lhs; + } + + inline const ScreenSize operator*(const ScreenSize& lhs, const float rhs) + { + ScreenSize result{ lhs }; + result *= rhs; + return result; + } + inline float ScreenVectorLength(const ScreenVector& screenVector) { return aznumeric_cast(AZStd::sqrt(screenVector.m_x * screenVector.m_x + screenVector.m_y * screenVector.m_y)); @@ -168,4 +208,28 @@ namespace AzFramework { return AZ::Vector2(aznumeric_cast(screenVector.m_x), aznumeric_cast(screenVector.m_y)); } + + //! Return an AZ::Vector2 from a ScreenSize. + inline AZ::Vector2 Vector2FromScreenSize(const ScreenSize& screenSize) + { + return AZ::Vector2(aznumeric_cast(screenSize.m_width), aznumeric_cast(screenSize.m_height)); + } + + //! Return a ScreenPoint from an AZ::Vector2. + inline ScreenPoint ScreenPointFromVector2(const AZ::Vector2& vector2) + { + return ScreenPoint(aznumeric_cast(AZStd::lround(vector2.GetX())), aznumeric_cast(AZStd::lround(vector2.GetY()))); + } + + //! Return a ScreenVector from an AZ::Vector2. + inline ScreenVector ScreenVectorFromVector2(const AZ::Vector2& vector2) + { + return ScreenVector(aznumeric_cast(AZStd::lround(vector2.GetX())), aznumeric_cast(AZStd::lround(vector2.GetY()))); + } + + //! Return a ScreenSize from an AZ::Vector2. + inline ScreenSize ScreenSizeFromVector2(const AZ::Vector2& vector2) + { + return ScreenSize(aznumeric_cast(AZStd::lround(vector2.GetX())), aznumeric_cast(AZStd::lround(vector2.GetY()))); + } } // namespace AzFramework diff --git a/Code/Framework/AzFramework/AzFramework/Viewport/ViewportScreen.cpp b/Code/Framework/AzFramework/AzFramework/Viewport/ViewportScreen.cpp index afd16a6c23..87eee53fbd 100644 --- a/Code/Framework/AzFramework/AzFramework/Viewport/ViewportScreen.cpp +++ b/Code/Framework/AzFramework/AzFramework/Viewport/ViewportScreen.cpp @@ -10,6 +10,7 @@ #include #include +#include #include #include #include @@ -112,9 +113,8 @@ namespace AzFramework const AZ::Matrix4x4& cameraProjection, const AZ::Vector2& viewportSize) { - const auto ndcNormalizedPosition = WorldToScreenNdc(worldPosition, cameraView, cameraProjection); // scale ndc position by screen dimensions to return screen position - return ScreenPointFromNdc(AZ::Vector3ToVector2(ndcNormalizedPosition), viewportSize); + return ScreenPointFromNdc(AZ::Vector3ToVector2(WorldToScreenNdc(worldPosition, cameraView, cameraProjection)), viewportSize); } ScreenPoint WorldToScreen(const AZ::Vector3& worldPosition, const CameraState& cameraState) @@ -144,9 +144,7 @@ namespace AzFramework const AZ::Matrix4x4& inverseCameraProjection, const AZ::Vector2& viewportSize) { - const auto normalizedScreenPosition = NdcFromScreenPoint(screenPosition, viewportSize); - - return ScreenNdcToWorld(normalizedScreenPosition, inverseCameraView, inverseCameraProjection); + return ScreenNdcToWorld(NdcFromScreenPoint(screenPosition, viewportSize), inverseCameraView, inverseCameraProjection); } AZ::Vector3 ScreenToWorld(const ScreenPoint& screenPosition, const CameraState& cameraState) diff --git a/Code/Framework/AzFramework/AzFramework/azframework_files.cmake b/Code/Framework/AzFramework/AzFramework/azframework_files.cmake index 7476772f84..aac7bd8f14 100644 --- a/Code/Framework/AzFramework/AzFramework/azframework_files.cmake +++ b/Code/Framework/AzFramework/AzFramework/azframework_files.cmake @@ -21,6 +21,7 @@ set(FILES Archive/ArchiveFindData.cpp Archive/ArchiveFindData.h Archive/ArchiveVars.h + Archive/ArchiveVars.cpp Archive/Codec.h Archive/IArchive.h Archive/INestedArchive.h @@ -78,6 +79,7 @@ set(FILES CommandLine/CommandLine.h CommandLine/CommandRegistrationBus.h Debug/DebugCameraBus.h + feature_options.cmake Viewport/ViewportBus.h Viewport/ViewportBus.cpp Viewport/ViewportColors.h @@ -229,6 +231,7 @@ set(FILES Physics/Configuration/SystemConfiguration.h Physics/Configuration/SystemConfiguration.cpp Physics/HeightfieldProviderBus.h + Physics/HeightfieldProviderBus.cpp Physics/SimulatedBodies/RigidBody.h Physics/SimulatedBodies/RigidBody.cpp Physics/SimulatedBodies/StaticRigidBody.h diff --git a/Code/Framework/AzFramework/AzFramework/feature_options.cmake b/Code/Framework/AzFramework/AzFramework/feature_options.cmake new file mode 100644 index 0000000000..e10ddf6ba6 --- /dev/null +++ b/Code/Framework/AzFramework/AzFramework/feature_options.cmake @@ -0,0 +1,13 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +set(LY_ARCHIVE_FILE_SEARCH_MODE "" CACHE STRING "Set the default file search mode to locate non-Pak files within the Archive System\n\ + Valid values are:\n\ + 0 = Search FileSystem first, before searching within mounted Paks (default in debug/profile)\n\ + 1 = Search mounted Paks first, before searching FileSystem\n\ + 2 = Search only mounted Paks (default in release)\n") diff --git a/Code/Framework/AzFramework/CMakeLists.txt b/Code/Framework/AzFramework/CMakeLists.txt index c8eeac5c2d..5e9e094a91 100644 --- a/Code/Framework/AzFramework/CMakeLists.txt +++ b/Code/Framework/AzFramework/CMakeLists.txt @@ -6,6 +6,7 @@ # # +include(AzFramework/feature_options.cmake) ly_get_list_relative_pal_filename(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME}) ly_get_list_relative_pal_filename(common_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/Common) @@ -33,6 +34,14 @@ ly_add_target( 3rdParty::lz4 ) +set(LY_SEARCH_MODE_DEFINE $<$:LY_ARCHIVE_FILE_SEARCH_MODE=${LY_ARCHIVE_FILE_SEARCH_MODE}>) + +ly_add_source_properties( + SOURCES + AzFramework/Archive/ArchiveVars.cpp + PROPERTY COMPILE_DEFINITIONS + VALUES ${LY_SEARCH_MODE_DEFINE}) + if(PAL_TRAIT_BUILD_TESTS_SUPPORTED) ly_get_list_relative_pal_filename(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Tests/Platform/${PAL_PLATFORM_NAME}) diff --git a/Code/Framework/AzFramework/Platform/Common/Xcb/AzFramework/XcbInputDeviceMouse.h b/Code/Framework/AzFramework/Platform/Common/Xcb/AzFramework/XcbInputDeviceMouse.h index a69a8a9ec5..f5b805a7a5 100644 --- a/Code/Framework/AzFramework/Platform/Common/Xcb/AzFramework/XcbInputDeviceMouse.h +++ b/Code/Framework/AzFramework/Platform/Common/Xcb/AzFramework/XcbInputDeviceMouse.h @@ -6,6 +6,8 @@ * */ +#pragma once + #include #include #include diff --git a/Code/Framework/AzFramework/Tests/ArchiveTests.cpp b/Code/Framework/AzFramework/Tests/ArchiveTests.cpp index ff0e3ab724..33924d7e0c 100644 --- a/Code/Framework/AzFramework/Tests/ArchiveTests.cpp +++ b/Code/Framework/AzFramework/Tests/ArchiveTests.cpp @@ -273,7 +273,7 @@ namespace UnitTest // Also enable extra verbosity in the AZ::IO::Archive code CVarIntValueScope previousLocationPriority{ *console, "sys_pakPriority" }; CVarIntValueScope oldArchiveVerbosity{ *console, "az_archive_verbosity" }; - console->PerformCommand("sys_PakPriority", { AZ::CVarFixedString::format("%d", aznumeric_cast(AZ::IO::ArchiveLocationPriority::ePakPriorityPakOnly)) }); + console->PerformCommand("sys_PakPriority", { AZ::CVarFixedString::format("%d", aznumeric_cast(AZ::IO::FileSearchPriority::PakOnly)) }); console->PerformCommand("az_archive_verbosity", { "1" }); // ---- Archive FGetCachedFileDataTests (these leverage Archive CachedFile mechanism for caching data --- @@ -459,7 +459,7 @@ namespace UnitTest // Once the archive has been deleted it should no longer be searched CVarIntValueScope previousLocationPriority{ *console, "sys_pakPriority" }; - console->PerformCommand("sys_PakPriority", { AZ::CVarFixedString::format("%d", aznumeric_cast(AZ::IO::ArchiveLocationPriority::ePakPriorityPakOnly)) }); + console->PerformCommand("sys_PakPriority", { AZ::CVarFixedString::format("%d", aznumeric_cast(AZ::IO::FileSearchPriority::PakOnly)) }); handle = archive->FindFirst("levels\\*"); EXPECT_FALSE(static_cast(handle)); @@ -785,7 +785,7 @@ namespace UnitTest EXPECT_TRUE(archive->OpenPack("@usercache@", realNameBuf)); EXPECT_TRUE(archive->IsFileExist("@usercache@/foundit.dat")); - EXPECT_FALSE(archive->IsFileExist("@usercache@/foundit.dat", AZ::IO::IArchive::eFileLocation_OnDisk)); + EXPECT_FALSE(archive->IsFileExist("@usercache@/foundit.dat", AZ::IO::FileSearchLocation::OnDisk)); EXPECT_FALSE(archive->IsFileExist("@usercache@/notfoundit.dat")); EXPECT_TRUE(archive->ClosePack(realNameBuf)); @@ -793,7 +793,7 @@ namespace UnitTest EXPECT_TRUE(archive->OpenPack("@products@", realNameBuf)); EXPECT_TRUE(archive->IsFileExist("@products@/foundit.dat")); EXPECT_FALSE(archive->IsFileExist("@usercache@/foundit.dat")); // do not find it in the previous location! - EXPECT_FALSE(archive->IsFileExist("@products@/foundit.dat", AZ::IO::IArchive::eFileLocation_OnDisk)); + EXPECT_FALSE(archive->IsFileExist("@products@/foundit.dat", AZ::IO::FileSearchLocation::OnDisk)); EXPECT_FALSE(archive->IsFileExist("@products@/notfoundit.dat")); EXPECT_TRUE(archive->ClosePack(realNameBuf)); @@ -802,8 +802,8 @@ namespace UnitTest EXPECT_TRUE(archive->IsFileExist("@products@/mystuff/foundit.dat")); EXPECT_FALSE(archive->IsFileExist("@products@/foundit.dat")); // do not find it in the previous locations! EXPECT_FALSE(archive->IsFileExist("@usercache@/foundit.dat")); // do not find it in the previous locations! - EXPECT_FALSE(archive->IsFileExist("@products@/foundit.dat", AZ::IO::IArchive::eFileLocation_OnDisk)); - EXPECT_FALSE(archive->IsFileExist("@products@/mystuff/foundit.dat", AZ::IO::IArchive::eFileLocation_OnDisk)); + EXPECT_FALSE(archive->IsFileExist("@products@/foundit.dat", AZ::IO::FileSearchLocation::OnDisk)); + EXPECT_FALSE(archive->IsFileExist("@products@/mystuff/foundit.dat", AZ::IO::FileSearchLocation::OnDisk)); EXPECT_FALSE(archive->IsFileExist("@products@/notfoundit.dat")); // non-existent file EXPECT_FALSE(archive->IsFileExist("@products@/mystuff/notfoundit.dat")); // non-existent file EXPECT_TRUE(archive->ClosePack(realNameBuf)); diff --git a/Code/Framework/AzFramework/Tests/CameraInputTests.cpp b/Code/Framework/AzFramework/Tests/CameraInputTests.cpp index a89fb0bd84..005623677c 100644 --- a/Code/Framework/AzFramework/Tests/CameraInputTests.cpp +++ b/Code/Framework/AzFramework/Tests/CameraInputTests.cpp @@ -104,9 +104,10 @@ namespace UnitTest AZStd::shared_ptr m_orbitCamera; AZ::Vector3 m_pivot = AZ::Vector3::CreateZero(); - //! This is approximately Pi/2 * 1000 - this can be used to rotate the camera 90 degrees (pitch or yaw based - //! on vertical or horizontal motion) as the rotate speed function is set to be 1/1000. - inline static const int PixelMotionDelta = 1570; + // this is approximately Pi/2 * 1000 - this can be used to rotate the camera 90 degrees (pitch or yaw based + // on vertical or horizontal motion) as the rotate speed function is set to be 1/1000. + inline static const int PixelMotionDelta90Degrees = 1570; + inline static const int PixelMotionDelta135Degrees = 2356; }; TEST_F(CameraInputFixture, BeginAndEndOrbitCameraInputConsumesCorrectEvents) @@ -292,7 +293,7 @@ namespace UnitTest HandleEventAndUpdate( AzFramework::DiscreteInputEvent{ AzFramework::InputDeviceMouse::Button::Right, AzFramework::InputChannel::State::Began }); - HandleEventAndUpdate(AzFramework::HorizontalMotionEvent{ PixelMotionDelta }); + HandleEventAndUpdate(AzFramework::HorizontalMotionEvent{ PixelMotionDelta90Degrees }); const float expectedYaw = AzFramework::WrapYawRotation(-AZ::Constants::HalfPi); @@ -310,7 +311,7 @@ namespace UnitTest HandleEventAndUpdate( AzFramework::DiscreteInputEvent{ AzFramework::InputDeviceMouse::Button::Right, AzFramework::InputChannel::State::Began }); - HandleEventAndUpdate(AzFramework::VerticalMotionEvent{ PixelMotionDelta }); + HandleEventAndUpdate(AzFramework::VerticalMotionEvent{ PixelMotionDelta90Degrees }); const float expectedPitch = AzFramework::ClampPitchRotation(-AZ::Constants::HalfPi); @@ -331,7 +332,7 @@ namespace UnitTest HandleEventAndUpdate(AzFramework::DiscreteInputEvent{ m_orbitChannelId, AzFramework::InputChannel::State::Began }); HandleEventAndUpdate( AzFramework::DiscreteInputEvent{ AzFramework::InputDeviceMouse::Button::Left, AzFramework::InputChannel::State::Began }); - HandleEventAndUpdate(AzFramework::VerticalMotionEvent{ PixelMotionDelta }); + HandleEventAndUpdate(AzFramework::VerticalMotionEvent{ PixelMotionDelta90Degrees }); const auto expectedCameraEndingPosition = AZ::Vector3(0.0f, -10.0f, 10.0f); const float expectedPitch = AzFramework::ClampPitchRotation(-AZ::Constants::HalfPi); @@ -354,7 +355,7 @@ namespace UnitTest HandleEventAndUpdate(AzFramework::DiscreteInputEvent{ m_orbitChannelId, AzFramework::InputChannel::State::Began }); HandleEventAndUpdate( AzFramework::DiscreteInputEvent{ AzFramework::InputDeviceMouse::Button::Left, AzFramework::InputChannel::State::Began }); - HandleEventAndUpdate(AzFramework::HorizontalMotionEvent{ -PixelMotionDelta }); + HandleEventAndUpdate(AzFramework::HorizontalMotionEvent{ -PixelMotionDelta90Degrees }); const auto expectedCameraEndingPosition = AZ::Vector3(20.0f, -5.0f, 0.0f); const float expectedYaw = AzFramework::WrapYawRotation(AZ::Constants::HalfPi); @@ -366,4 +367,42 @@ namespace UnitTest EXPECT_THAT(m_camera.m_offset, IsClose(AZ::Vector3(5.0f, -10.0f, 0.0f))); EXPECT_THAT(m_camera.Translation(), IsCloseTolerance(expectedCameraEndingPosition, 0.01f)); } + + TEST_F(CameraInputFixture, CameraPitchCanNotBeMovedPastNinetyDegreesWhenConstrained) + { + const auto cameraStartingPosition = AZ::Vector3(15.0f, -20.0f, 0.0f); + m_targetCamera.m_pivot = cameraStartingPosition; + + HandleEventAndUpdate( + AzFramework::DiscreteInputEvent{ AzFramework::InputDeviceMouse::Button::Right, AzFramework::InputChannel::State::Began }); + // pitch by 135.0 degrees + HandleEventAndUpdate(AzFramework::VerticalMotionEvent{ -PixelMotionDelta135Degrees }); + + // clamped to 90.0 degrees + const float expectedPitch = AZ::DegToRad(90.0f); + + using ::testing::FloatNear; + EXPECT_THAT(m_camera.m_pitch, FloatNear(expectedPitch, 0.001f)); + } + + TEST_F(CameraInputFixture, CameraPitchCanBeMovedPastNinetyDegreesWhenUnconstrained) + { + m_firstPersonRotateCamera->m_constrainPitch = [] + { + return false; + }; + + const auto cameraStartingPosition = AZ::Vector3(15.0f, -20.0f, 0.0f); + m_targetCamera.m_pivot = cameraStartingPosition; + + HandleEventAndUpdate( + AzFramework::DiscreteInputEvent{ AzFramework::InputDeviceMouse::Button::Right, AzFramework::InputChannel::State::Began }); + // pitch by 135.0 degrees + HandleEventAndUpdate(AzFramework::VerticalMotionEvent{ -PixelMotionDelta135Degrees }); + + const float expectedPitch = AZ::DegToRad(135.0f); + + using ::testing::FloatNear; + EXPECT_THAT(m_camera.m_pitch, FloatNear(expectedPitch, 0.001f)); + } } // namespace UnitTest diff --git a/Code/Framework/AzFramework/Tests/CameraState.cpp b/Code/Framework/AzFramework/Tests/CameraState.cpp index 70fa8be89a..1f35d5a06c 100644 --- a/Code/Framework/AzFramework/Tests/CameraState.cpp +++ b/Code/Framework/AzFramework/Tests/CameraState.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include namespace UnitTest @@ -51,22 +52,6 @@ namespace UnitTest { }; - // Taken from Atom::MatrixUtils for testing purposes, this can be removed if MakePerspectiveFovMatrixRH makes it into AZ - static AZ::Matrix4x4 MakePerspectiveMatrixRH(float fovY, float aspectRatio, float nearClip, float farClip) - { - float sinFov, cosFov; - AZ::SinCos(0.5f * fovY, sinFov, cosFov); - float yScale = cosFov / sinFov; //cot(fovY/2) - float xScale = yScale / aspectRatio; - - AZ::Matrix4x4 out; - out.SetRow(0, xScale, 0.f, 0.f, 0.f ); - out.SetRow(1, 0.f, yScale, 0.f, 0.f ); - out.SetRow(2, 0.f, 0.f, farClip / (nearClip - farClip), nearClip*farClip / (nearClip - farClip) ); - out.SetRow(3, 0.f, 0.f, -1.f, 0.f ); - return out; - } - TEST_P(Translation, Permutation) { // Given a position @@ -176,7 +161,8 @@ namespace UnitTest { auto [fovY, aspectRatio, nearClip, farClip] = GetParam(); - AZ::Matrix4x4 clipFromView = MakePerspectiveMatrixRH(fovY, aspectRatio, nearClip, farClip); + AZ::Matrix4x4 clipFromView; + MakePerspectiveFovMatrixRH(clipFromView, fovY, aspectRatio, nearClip, farClip); AzFramework::SetCameraClippingVolumeFromPerspectiveFovMatrixRH(m_cameraState, clipFromView); diff --git a/Code/Framework/AzFramework/Tests/ClickDetectorTests.cpp b/Code/Framework/AzFramework/Tests/ClickDetectorTests.cpp index 45bac2770e..62852c9b87 100644 --- a/Code/Framework/AzFramework/Tests/ClickDetectorTests.cpp +++ b/Code/Framework/AzFramework/Tests/ClickDetectorTests.cpp @@ -144,12 +144,45 @@ namespace UnitTest { using ::testing::Eq; - const ClickDetector::ClickOutcome downOutcome = - m_clickDetector.DetectClick(ClickDetector::ClickEvent::Down, ScreenVector(0, 0)); - const ClickDetector::ClickOutcome upOutcome = - m_clickDetector.DetectClick(ClickDetector::ClickEvent::Up, ScreenVector(50, 50)); + const ClickDetector::ClickOutcome downOutcome = m_clickDetector.DetectClick(ClickDetector::ClickEvent::Down, ScreenVector(0, 0)); + const ClickDetector::ClickOutcome upOutcome = m_clickDetector.DetectClick(ClickDetector::ClickEvent::Up, ScreenVector(50, 50)); EXPECT_THAT(downOutcome, Eq(ClickDetector::ClickOutcome::Nil)); EXPECT_THAT(upOutcome, Eq(ClickDetector::ClickOutcome::Release)); } + + //! note: ClickDetector does not explicitly return double clicks but if one occurs the ClickOutcome will be Nil + TEST_F(ClickDetectorFixture, DoubleClickIsRegisteredIfMouseDeltaHasMovedLessThanDeadzoneInClickInterval) + { + using ::testing::Eq; + + const ClickDetector::ClickOutcome firstDownOutcome = + m_clickDetector.DetectClick(ClickDetector::ClickEvent::Down, ScreenVector(0, 0)); + const ClickDetector::ClickOutcome firstUpOutcome = m_clickDetector.DetectClick(ClickDetector::ClickEvent::Up, ScreenVector(0, 0)); + const ClickDetector::ClickOutcome secondDownOutcome = + m_clickDetector.DetectClick(ClickDetector::ClickEvent::Down, ScreenVector(0, 0)); + const ClickDetector::ClickOutcome secondUpOutcome = m_clickDetector.DetectClick(ClickDetector::ClickEvent::Up, ScreenVector(0, 0)); + + EXPECT_THAT(firstDownOutcome, Eq(ClickDetector::ClickOutcome::Nil)); + EXPECT_THAT(firstUpOutcome, Eq(ClickDetector::ClickOutcome::Click)); + EXPECT_THAT(secondDownOutcome, Eq(ClickDetector::ClickOutcome::Nil)); + EXPECT_THAT(secondUpOutcome, Eq(ClickDetector::ClickOutcome::Nil)); + } + + TEST_F(ClickDetectorFixture, DoubleClickIsNotRegisteredIfMouseDeltaHasMovedMoreThanDeadzoneInClickInterval) + { + using ::testing::Eq; + + const ClickDetector::ClickOutcome firstDownOutcome = + m_clickDetector.DetectClick(ClickDetector::ClickEvent::Down, ScreenVector(0, 0)); + const ClickDetector::ClickOutcome firstUpOutcome = m_clickDetector.DetectClick(ClickDetector::ClickEvent::Up, ScreenVector(0, 0)); + const ClickDetector::ClickOutcome secondDownOutcome = + m_clickDetector.DetectClick(ClickDetector::ClickEvent::Down, ScreenVector(10, 10)); + const ClickDetector::ClickOutcome secondUpOutcome = m_clickDetector.DetectClick(ClickDetector::ClickEvent::Up, ScreenVector(0, 0)); + + EXPECT_THAT(firstDownOutcome, Eq(ClickDetector::ClickOutcome::Nil)); + EXPECT_THAT(firstUpOutcome, Eq(ClickDetector::ClickOutcome::Click)); + EXPECT_THAT(secondDownOutcome, Eq(ClickDetector::ClickOutcome::Nil)); + EXPECT_THAT(secondUpOutcome, Eq(ClickDetector::ClickOutcome::Click)); + } } // namespace UnitTest diff --git a/Code/Framework/AzFramework/Tests/CursorStateTests.cpp b/Code/Framework/AzFramework/Tests/CursorStateTests.cpp index 923cd02a10..fe15580dad 100644 --- a/Code/Framework/AzFramework/Tests/CursorStateTests.cpp +++ b/Code/Framework/AzFramework/Tests/CursorStateTests.cpp @@ -8,12 +8,13 @@ #include #include +#include namespace UnitTest { using AzFramework::CursorState; - using AzFramework::ScreenVector; using AzFramework::ScreenPoint; + using AzFramework::ScreenVector; class CursorStateFixture : public ::testing::Test { diff --git a/Code/Framework/AzFramework/Tests/Utils/Printers.cpp b/Code/Framework/AzFramework/Tests/Utils/Printers.cpp new file mode 100644 index 0000000000..91c9558be7 --- /dev/null +++ b/Code/Framework/AzFramework/Tests/Utils/Printers.cpp @@ -0,0 +1,32 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include "Printers.h" + +#include + +#include +#include + +namespace AzFramework +{ + void PrintTo(const ScreenPoint& screenPoint, std::ostream* os) + { + *os << "(x: " << screenPoint.m_x << ", y: " << screenPoint.m_y << ")"; + } + + void PrintTo(const ScreenVector& screenVector, std::ostream* os) + { + *os << "(x: " << screenVector.m_x << ", y: " << screenVector.m_y << ")"; + } + + void PrintTo(const ScreenSize& screenSize, std::ostream* os) + { + *os << "(width: " << screenSize.m_width << ", height: " << screenSize.m_height << ")"; + } +} // namespace AzFramework diff --git a/Code/Framework/AzFramework/Tests/Utils/Printers.h b/Code/Framework/AzFramework/Tests/Utils/Printers.h new file mode 100644 index 0000000000..fc967eabe9 --- /dev/null +++ b/Code/Framework/AzFramework/Tests/Utils/Printers.h @@ -0,0 +1,20 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include + +namespace AzFramework +{ + struct ScreenPoint; + struct ScreenVector; + struct ScreenSize; + + void PrintTo(const ScreenPoint& screenPoint, std::ostream* os); + void PrintTo(const ScreenVector& screenVector, std::ostream* os); + void PrintTo(const ScreenSize& screenSize, std::ostream* os); +} // namespace AzFramework diff --git a/Code/Framework/AzFramework/Tests/framework_shared_tests_files.cmake b/Code/Framework/AzFramework/Tests/framework_shared_tests_files.cmake index 85c00a2e8a..9427738e67 100644 --- a/Code/Framework/AzFramework/Tests/framework_shared_tests_files.cmake +++ b/Code/Framework/AzFramework/Tests/framework_shared_tests_files.cmake @@ -11,5 +11,7 @@ set(FILES Mocks/MockWindowRequests.h Utils/Utils.h Utils/Utils.cpp + Utils/Printers.h + Utils/Printers.cpp FrameworkApplicationFixture.h ) diff --git a/Code/Framework/AzManipulatorTestFramework/Include/AzManipulatorTestFramework/ViewportInteraction.h b/Code/Framework/AzManipulatorTestFramework/Include/AzManipulatorTestFramework/ViewportInteraction.h index a8ba63500c..3c41b28851 100644 --- a/Code/Framework/AzManipulatorTestFramework/Include/AzManipulatorTestFramework/ViewportInteraction.h +++ b/Code/Framework/AzManipulatorTestFramework/Include/AzManipulatorTestFramework/ViewportInteraction.h @@ -41,8 +41,8 @@ namespace AzManipulatorTestFramework // ViewportInteractionRequestBus overrides ... AzFramework::CameraState GetCameraState() override; AzFramework::ScreenPoint ViewportWorldToScreen(const AZ::Vector3& worldPosition) override; - AZStd::optional ViewportScreenToWorld(const AzFramework::ScreenPoint& screenPosition, float depth) override; - AZStd::optional ViewportScreenToWorldRay( + AZ::Vector3 ViewportScreenToWorld(const AzFramework::ScreenPoint& screenPosition) override; + AzToolsFramework::ViewportInteraction::ProjectedViewportRay ViewportScreenToWorldRay( const AzFramework::ScreenPoint& screenPosition) override; float DeviceScalingFactor() override; diff --git a/Code/Framework/AzManipulatorTestFramework/Source/AzManipulatorTestFrameworkUtils.cpp b/Code/Framework/AzManipulatorTestFramework/Source/AzManipulatorTestFrameworkUtils.cpp index 4f1e108a14..6fbf2cb219 100644 --- a/Code/Framework/AzManipulatorTestFramework/Source/AzManipulatorTestFrameworkUtils.cpp +++ b/Code/Framework/AzManipulatorTestFramework/Source/AzManipulatorTestFrameworkUtils.cpp @@ -95,7 +95,7 @@ namespace AzManipulatorTestFramework AzToolsFramework::ViewportInteraction::MousePick mousePick; mousePick.m_screenCoordinates = screenPoint; - mousePick.m_rayOrigin = cameraState.m_position; + mousePick.m_rayOrigin = nearPlaneWorldPosition; mousePick.m_rayDirection = (nearPlaneWorldPosition - cameraState.m_position).GetNormalized(); return mousePick; diff --git a/Code/Framework/AzManipulatorTestFramework/Source/ImmediateModeActionDispatcher.cpp b/Code/Framework/AzManipulatorTestFramework/Source/ImmediateModeActionDispatcher.cpp index c122a941c4..5bfe63bd99 100644 --- a/Code/Framework/AzManipulatorTestFramework/Source/ImmediateModeActionDispatcher.cpp +++ b/Code/Framework/AzManipulatorTestFramework/Source/ImmediateModeActionDispatcher.cpp @@ -69,8 +69,6 @@ namespace AzManipulatorTestFramework void ImmediateModeActionDispatcher::CameraStateImpl(const AzFramework::CameraState& cameraState) { m_viewportManipulatorInteraction.GetViewportInteraction().SetCameraState(cameraState); - GetMouseInteractionEvent()->m_mouseInteraction.m_mousePick.m_rayOrigin = cameraState.m_position; - GetMouseInteractionEvent()->m_mouseInteraction.m_mousePick.m_rayDirection = cameraState.m_forward; } void ImmediateModeActionDispatcher::MouseLButtonDownImpl() diff --git a/Code/Framework/AzManipulatorTestFramework/Source/IndirectManipulatorViewportInteraction.cpp b/Code/Framework/AzManipulatorTestFramework/Source/IndirectManipulatorViewportInteraction.cpp index 730c106301..9bcb8986d5 100644 --- a/Code/Framework/AzManipulatorTestFramework/Source/IndirectManipulatorViewportInteraction.cpp +++ b/Code/Framework/AzManipulatorTestFramework/Source/IndirectManipulatorViewportInteraction.cpp @@ -20,7 +20,8 @@ namespace AzManipulatorTestFramework { public: IndirectCallManipulatorManager(ViewportInteractionInterface& viewportInteraction); - // ManipulatorManagerInterface ... + + // ManipulatorManagerInterface overrides ... void ConsumeMouseInteractionEvent(const MouseInteractionEvent& event) override; AzToolsFramework::ManipulatorManagerId GetId() const override; bool ManipulatorBeingInteracted() const override; diff --git a/Code/Framework/AzManipulatorTestFramework/Source/ViewportInteraction.cpp b/Code/Framework/AzManipulatorTestFramework/Source/ViewportInteraction.cpp index 269baa703d..08cae0c738 100644 --- a/Code/Framework/AzManipulatorTestFramework/Source/ViewportInteraction.cpp +++ b/Code/Framework/AzManipulatorTestFramework/Source/ViewportInteraction.cpp @@ -140,13 +140,12 @@ namespace AzManipulatorTestFramework return m_viewportId; } - AZStd::optional ViewportInteraction::ViewportScreenToWorld( - [[maybe_unused]] const AzFramework::ScreenPoint& screenPosition, [[maybe_unused]] float depth) + AZ::Vector3 ViewportInteraction::ViewportScreenToWorld([[maybe_unused]] const AzFramework::ScreenPoint& screenPosition) { - return {}; + return AZ::Vector3::CreateZero(); } - AZStd::optional ViewportInteraction::ViewportScreenToWorldRay( + AzToolsFramework::ViewportInteraction::ProjectedViewportRay ViewportInteraction::ViewportScreenToWorldRay( [[maybe_unused]] const AzFramework::ScreenPoint& screenPosition) { return {}; diff --git a/Code/Framework/AzManipulatorTestFramework/Tests/WorldSpaceBuilderTest.cpp b/Code/Framework/AzManipulatorTestFramework/Tests/WorldSpaceBuilderTest.cpp index 211c8d64ef..376c18072e 100644 --- a/Code/Framework/AzManipulatorTestFramework/Tests/WorldSpaceBuilderTest.cpp +++ b/Code/Framework/AzManipulatorTestFramework/Tests/WorldSpaceBuilderTest.cpp @@ -140,8 +140,8 @@ namespace UnitTest // given a left mouse down ray in world space // consume the mouse move event state.m_actionDispatcher->CameraState(m_cameraState) - ->MouseLButtonDown() ->MousePosition(AzManipulatorTestFramework::GetCameraStateViewportCenter(m_cameraState)) + ->MouseLButtonDown() ->ExpectTrue(state.m_linearManipulator->PerformingAction()) ->ExpectManipulatorBeingInteracted() ->MouseLButtonUp() diff --git a/Code/Framework/AzNetworking/AzNetworking/ConnectionLayer/ConnectionMetrics.cpp b/Code/Framework/AzNetworking/AzNetworking/ConnectionLayer/ConnectionMetrics.cpp index 3a3ab06d02..6705ec8b36 100644 --- a/Code/Framework/AzNetworking/AzNetworking/ConnectionLayer/ConnectionMetrics.cpp +++ b/Code/Framework/AzNetworking/AzNetworking/ConnectionLayer/ConnectionMetrics.cpp @@ -42,7 +42,7 @@ namespace AzNetworking { const uint32_t sampleAtom = 1 - m_activeAtom; - if (m_atoms[sampleAtom].m_timeAccumulatorMs == AZ::TimeMs{0}) + if (m_atoms[sampleAtom].m_timeAccumulatorMs == AZ::Time::ZeroTimeMs) { return 0.0f; } diff --git a/Code/Framework/AzNetworking/AzNetworking/ConnectionLayer/ConnectionMetrics.h b/Code/Framework/AzNetworking/AzNetworking/ConnectionLayer/ConnectionMetrics.h index b576c64e86..19db52b979 100644 --- a/Code/Framework/AzNetworking/AzNetworking/ConnectionLayer/ConnectionMetrics.h +++ b/Code/Framework/AzNetworking/AzNetworking/ConnectionLayer/ConnectionMetrics.h @@ -19,7 +19,7 @@ namespace AzNetworking { DatarateAtom() = default; - AZ::TimeMs m_timeAccumulatorMs = AZ::TimeMs{ 0 }; + AZ::TimeMs m_timeAccumulatorMs = AZ::Time::ZeroTimeMs; uint32_t m_bytesTransmitted = 0; uint32_t m_packetsSent = 0; uint32_t m_packetsLost = 0; @@ -78,7 +78,7 @@ namespace AzNetworking ConnectionPacketEntry(PacketId packetId, AZ::TimeMs sendTimeMs); PacketId m_packetId = InvalidPacketId; - AZ::TimeMs m_sendTimeMs = AZ::TimeMs{0}; + AZ::TimeMs m_sendTimeMs = AZ::Time::ZeroTimeMs; }; //! @class ConnectionComputeRtt diff --git a/Code/Framework/AzNetworking/AzNetworking/ConnectionLayer/IConnection.h b/Code/Framework/AzNetworking/AzNetworking/ConnectionLayer/IConnection.h index 363fd1d37b..7afbbaee7c 100644 --- a/Code/Framework/AzNetworking/AzNetworking/ConnectionLayer/IConnection.h +++ b/Code/Framework/AzNetworking/AzNetworking/ConnectionLayer/IConnection.h @@ -28,8 +28,8 @@ namespace AzNetworking ConnectionQuality(int32_t lossPercentage, AZ::TimeMs latencyMs, AZ::TimeMs varianceMs); int32_t m_lossPercentage = 0; - AZ::TimeMs m_latencyMs = AZ::TimeMs{ 0 }; - AZ::TimeMs m_varianceMs = AZ::TimeMs{ 0 }; + AZ::TimeMs m_latencyMs = AZ::Time::ZeroTimeMs; + AZ::TimeMs m_varianceMs = AZ::Time::ZeroTimeMs; }; enum class TrustZone diff --git a/Code/Framework/AzNetworking/AzNetworking/DataStructures/TimeoutQueue.h b/Code/Framework/AzNetworking/AzNetworking/DataStructures/TimeoutQueue.h index 097e45c960..1a4423144f 100644 --- a/Code/Framework/AzNetworking/AzNetworking/DataStructures/TimeoutQueue.h +++ b/Code/Framework/AzNetworking/AzNetworking/DataStructures/TimeoutQueue.h @@ -37,8 +37,8 @@ namespace AzNetworking void UpdateTimeoutTime(AZ::TimeMs currentTimeMs); uint64_t m_userData = 0; - AZ::TimeMs m_timeoutMs = AZ::TimeMs{0}; - AZ::TimeMs m_nextTimeoutTimeMs = AZ::TimeMs{0}; + AZ::TimeMs m_timeoutMs = AZ::Time::ZeroTimeMs; + AZ::TimeMs m_nextTimeoutTimeMs = AZ::Time::ZeroTimeMs; }; TimeoutQueue() = default; diff --git a/Code/Framework/AzNetworking/AzNetworking/Framework/NetworkInterfaceMetrics.h b/Code/Framework/AzNetworking/AzNetworking/Framework/NetworkInterfaceMetrics.h index 8cad6e5537..d4bfabf54a 100644 --- a/Code/Framework/AzNetworking/AzNetworking/Framework/NetworkInterfaceMetrics.h +++ b/Code/Framework/AzNetworking/AzNetworking/Framework/NetworkInterfaceMetrics.h @@ -15,11 +15,11 @@ namespace AzNetworking struct NetworkInterfaceMetrics { //! Returns the total number of milliseconds spent updating this network interface. - AZ::TimeMs m_updateTimeMs = AZ::TimeMs{ 0 }; + AZ::TimeMs m_updateTimeMs = AZ::Time::ZeroTimeMs; //! Returns the total number of connections bound to this network interface. uint64_t m_connectionCount = 0; //! Returns the total number of milliseconds spent sending data on this network interface. - AZ::TimeMs m_sendTimeMs = AZ::TimeMs{ 0 }; + AZ::TimeMs m_sendTimeMs = AZ::Time::ZeroTimeMs; //! Returns the total number of packets sent on this socket. uint64_t m_sendPackets = 0; //! Returns the total number of encrypted packets sent on this socket. @@ -37,7 +37,7 @@ namespace AzNetworking //! Returns the total number of packets that had to be resent on this network interface due to packet loss. uint64_t m_resentPackets = 0; //! Returns the total number of milliseconds spent processing received data on this network interface. - AZ::TimeMs m_recvTimeMs = AZ::TimeMs{ 0 }; + AZ::TimeMs m_recvTimeMs = AZ::Time::ZeroTimeMs; //! Returns the total number of packets received on this socket. uint64_t m_recvPackets = 0; //! Returns the total number of bytes received on this socket after compression. diff --git a/Code/Framework/AzNetworking/AzNetworking/TcpTransport/TcpListenThread.h b/Code/Framework/AzNetworking/AzNetworking/TcpTransport/TcpListenThread.h index 0859e1d0f7..f2dc88cab4 100644 --- a/Code/Framework/AzNetworking/AzNetworking/TcpTransport/TcpListenThread.h +++ b/Code/Framework/AzNetworking/AzNetworking/TcpTransport/TcpListenThread.h @@ -67,6 +67,6 @@ namespace AzNetworking uint32_t m_listenPortCount = 0; TcpSocketManager m_tcpSocketManager; AZ::ThreadSafeDeque m_listenPorts; - AZ::TimeMs m_updateTimeMs = AZ::TimeMs{ 0 }; + AZ::TimeMs m_updateTimeMs = AZ::Time::ZeroTimeMs; }; } diff --git a/Code/Framework/AzNetworking/AzNetworking/TcpTransport/TcpNetworkInterface.cpp b/Code/Framework/AzNetworking/AzNetworking/TcpTransport/TcpNetworkInterface.cpp index 0278856ce9..18ce25c4dd 100644 --- a/Code/Framework/AzNetworking/AzNetworking/TcpTransport/TcpNetworkInterface.cpp +++ b/Code/Framework/AzNetworking/AzNetworking/TcpTransport/TcpNetworkInterface.cpp @@ -107,7 +107,7 @@ namespace AzNetworking auto readCallback = [this, startTimeMs](SocketFd socketFd) { HandleConnectionRecv(socketFd, startTimeMs); }; auto writeCallback = [this](SocketFd socketFd) { HandleConnectionSend(socketFd); }; - m_tcpSocketManager.ProcessEvents(AZ::TimeMs{ 0 }, readCallback, writeCallback); + m_tcpSocketManager.ProcessEvents(AZ::Time::ZeroTimeMs, readCallback, writeCallback); FlushQueuedRemoves(); diff --git a/Code/Framework/AzNetworking/AzNetworking/TcpTransport/TcpNetworkInterface.h b/Code/Framework/AzNetworking/AzNetworking/TcpTransport/TcpNetworkInterface.h index 8d45e847a8..d483a89cf3 100644 --- a/Code/Framework/AzNetworking/AzNetworking/TcpTransport/TcpNetworkInterface.h +++ b/Code/Framework/AzNetworking/AzNetworking/TcpTransport/TcpNetworkInterface.h @@ -146,7 +146,7 @@ namespace AzNetworking AZ::Name m_name; TrustZone m_trustZone; uint16_t m_port = 0; - AZ::TimeMs m_timeoutMs = AZ::TimeMs{ 0 }; + AZ::TimeMs m_timeoutMs = AZ::Time::ZeroTimeMs; IConnectionListener& m_connectionListener; TcpConnectionSet m_connectionSet; TcpSocketManager m_tcpSocketManager; diff --git a/Code/Framework/AzNetworking/AzNetworking/UdpTransport/UdpNetworkInterface.cpp b/Code/Framework/AzNetworking/AzNetworking/UdpTransport/UdpNetworkInterface.cpp index b810c7a347..1ca5922753 100644 --- a/Code/Framework/AzNetworking/AzNetworking/UdpTransport/UdpNetworkInterface.cpp +++ b/Code/Framework/AzNetworking/AzNetworking/UdpTransport/UdpNetworkInterface.cpp @@ -736,7 +736,7 @@ namespace AzNetworking udpConnection->SendUnreliablePacket(CorePackets::HeartbeatPacket(true)); ++udpConnection->m_timeoutCounter; } - else if (net_UdpTimeoutConnections && (GetTimeoutMs() > AZ::TimeMs{ 0 })) + else if (net_UdpTimeoutConnections && (GetTimeoutMs() > AZ::Time::ZeroTimeMs)) { udpConnection->Disconnect(DisconnectReason::Timeout, TerminationEndpoint::Local); return TimeoutResult::Delete; diff --git a/Code/Framework/AzNetworking/AzNetworking/UdpTransport/UdpNetworkInterface.h b/Code/Framework/AzNetworking/AzNetworking/UdpTransport/UdpNetworkInterface.h index e6abeded0d..a640a6e3b8 100644 --- a/Code/Framework/AzNetworking/AzNetworking/UdpTransport/UdpNetworkInterface.h +++ b/Code/Framework/AzNetworking/AzNetworking/UdpTransport/UdpNetworkInterface.h @@ -171,7 +171,7 @@ namespace AzNetworking TrustZone m_trustZone; uint16_t m_port = 0; bool m_allowIncomingConnections = false; - AZ::TimeMs m_timeoutMs = AZ::TimeMs{ 0 }; + AZ::TimeMs m_timeoutMs = AZ::Time::ZeroTimeMs; IConnectionListener& m_connectionListener; UdpConnectionSet m_connectionSet; TimeoutQueue m_connectionTimeoutQueue; diff --git a/Code/Framework/AzNetworking/AzNetworking/UdpTransport/UdpReaderThread.h b/Code/Framework/AzNetworking/AzNetworking/UdpTransport/UdpReaderThread.h index e0c97f157f..1d25a9e6e1 100644 --- a/Code/Framework/AzNetworking/AzNetworking/UdpTransport/UdpReaderThread.h +++ b/Code/Framework/AzNetworking/AzNetworking/UdpTransport/UdpReaderThread.h @@ -94,6 +94,6 @@ namespace AzNetworking int32_t m_backIndex = 0; AZStd::array m_readerBuffers; AZStd::vector m_pendingAdds; - AZ::TimeMs m_updateTimeMs = AZ::TimeMs{ 0 }; + AZ::TimeMs m_updateTimeMs = AZ::Time::ZeroTimeMs; }; } diff --git a/Code/Framework/AzNetworking/AzNetworking/UdpTransport/UdpSocket.cpp b/Code/Framework/AzNetworking/AzNetworking/UdpTransport/UdpSocket.cpp index 300b3527fa..85cc3a38f8 100644 --- a/Code/Framework/AzNetworking/AzNetworking/UdpTransport/UdpSocket.cpp +++ b/Code/Framework/AzNetworking/AzNetworking/UdpTransport/UdpSocket.cpp @@ -135,7 +135,7 @@ namespace AzNetworking int32_t sentBytes = size; #ifdef ENABLE_LATENCY_DEBUG - if (connectionQuality.m_latencyMs <= AZ::TimeMs{ 0 }) + if (connectionQuality.m_latencyMs <= AZ::Time::ZeroTimeMs) #endif { sentBytes = SendInternal(address, data, size, encrypt, dtlsEndpoint); @@ -153,9 +153,9 @@ namespace AzNetworking } } #ifdef ENABLE_LATENCY_DEBUG - else if ((connectionQuality.m_latencyMs > AZ::TimeMs{ 0 }) || (connectionQuality.m_varianceMs > AZ::TimeMs{ 0 })) + else if ((connectionQuality.m_latencyMs > AZ::Time::ZeroTimeMs) || (connectionQuality.m_varianceMs > AZ::Time::ZeroTimeMs)) { - const AZ::TimeMs jitterMs = aznumeric_cast(m_random.GetRandom()) % (connectionQuality.m_varianceMs > AZ::TimeMs{ 0 } + const AZ::TimeMs jitterMs = aznumeric_cast(m_random.GetRandom()) % (connectionQuality.m_varianceMs > AZ::Time::ZeroTimeMs ? connectionQuality.m_varianceMs : AZ::TimeMs{ 1 }); const AZ::TimeMs deferTimeMs = (connectionQuality.m_latencyMs) + jitterMs; diff --git a/Code/Framework/AzNetworking/AzNetworking/Utilities/EncryptionCommon.cpp b/Code/Framework/AzNetworking/AzNetworking/Utilities/EncryptionCommon.cpp index 9f496c3e0c..0903205eb8 100644 --- a/Code/Framework/AzNetworking/AzNetworking/Utilities/EncryptionCommon.cpp +++ b/Code/Framework/AzNetworking/AzNetworking/Utilities/EncryptionCommon.cpp @@ -94,7 +94,7 @@ namespace AzNetworking static const uint32_t MaxCookieHistory = 8; static bool g_encryptionInitialized = false; static int32_t g_azNetworkingTrustDataIndex = 0; - static AZ::TimeMs g_lastCookieTimestamp = AZ::TimeMs{0}; + static AZ::TimeMs g_lastCookieTimestamp = AZ::Time::ZeroTimeMs; static uint64_t g_validCookieArray[MaxCookieHistory]; static uint32_t g_cookieReplaceIndex = 0; diff --git a/Code/Framework/AzNetworking/Tests/Serialization/DeltaSerializerTests.cpp b/Code/Framework/AzNetworking/Tests/Serialization/DeltaSerializerTests.cpp index 32562d9940..4ad9412849 100644 --- a/Code/Framework/AzNetworking/Tests/Serialization/DeltaSerializerTests.cpp +++ b/Code/Framework/AzNetworking/Tests/Serialization/DeltaSerializerTests.cpp @@ -15,7 +15,7 @@ namespace UnitTest { AzNetworking::PacketId m_packetId = AzNetworking::InvalidPacketId; uint32_t m_id = 0; - AZ::TimeMs m_timeMs = AZ::TimeMs{ 0 }; + AZ::TimeMs m_timeMs = AZ::Time::ZeroTimeMs; float m_blendFactor = 0.f; AZStd::vector m_growVector, m_shrinkVector; diff --git a/Code/Framework/AzNetworking/Tests/TcpTransport/TcpTransportTests.cpp b/Code/Framework/AzNetworking/Tests/TcpTransport/TcpTransportTests.cpp index 77632da572..d3a956bef3 100644 --- a/Code/Framework/AzNetworking/Tests/TcpTransport/TcpTransportTests.cpp +++ b/Code/Framework/AzNetworking/Tests/TcpTransport/TcpTransportTests.cpp @@ -11,7 +11,7 @@ #include #include #include -#include +#include #include #include @@ -102,24 +102,24 @@ namespace UnitTest SetupAllocator(); AZ::NameDictionary::Create(); - m_loggerComponent = new AZ::LoggerSystemComponent; - m_timeComponent = new AZ::TimeSystemComponent; - m_networkingSystemComponent = new AzNetworking::NetworkingSystemComponent; + m_loggerComponent = AZStd::make_unique(); + m_timeSystem = AZStd::make_unique(); + m_networkingSystemComponent = AZStd::make_unique(); } void TearDown() override { - delete m_networkingSystemComponent; - delete m_timeComponent; - delete m_loggerComponent; + m_networkingSystemComponent.reset(); + m_timeSystem.reset(); + m_loggerComponent.reset(); AZ::NameDictionary::Destroy(); TeardownAllocator(); } - AZ::LoggerSystemComponent* m_loggerComponent; - AZ::TimeSystemComponent* m_timeComponent; - AzNetworking::NetworkingSystemComponent* m_networkingSystemComponent; + AZStd::unique_ptr m_loggerComponent; + AZStd::unique_ptr m_timeSystem; + AZStd::unique_ptr m_networkingSystemComponent; }; #if AZ_TRAIT_DISABLE_FAILED_NETWORKING_TESTS diff --git a/Code/Framework/AzNetworking/Tests/UdpTransport/UdpTransportTests.cpp b/Code/Framework/AzNetworking/Tests/UdpTransport/UdpTransportTests.cpp index 65c2cfa2b5..821c261fab 100644 --- a/Code/Framework/AzNetworking/Tests/UdpTransport/UdpTransportTests.cpp +++ b/Code/Framework/AzNetworking/Tests/UdpTransport/UdpTransportTests.cpp @@ -14,7 +14,7 @@ #include #include #include -#include +#include #include #include @@ -105,24 +105,24 @@ namespace UnitTest SetupAllocator(); AZ::NameDictionary::Create(); - m_loggerComponent = new AZ::LoggerSystemComponent; - m_timeComponent = new AZ::TimeSystemComponent; - m_networkingSystemComponent = new AzNetworking::NetworkingSystemComponent; + m_loggerComponent = AZStd::make_unique(); + m_timeSystem = AZStd::make_unique(); + m_networkingSystemComponent = AZStd::make_unique(); } void TearDown() override { - delete m_networkingSystemComponent; - delete m_timeComponent; - delete m_loggerComponent; + m_networkingSystemComponent.reset(); + m_timeSystem.reset(); + m_loggerComponent.reset(); AZ::NameDictionary::Destroy(); TeardownAllocator(); } - AZ::LoggerSystemComponent* m_loggerComponent; - AZ::TimeSystemComponent* m_timeComponent; - AzNetworking::NetworkingSystemComponent* m_networkingSystemComponent; + AZStd::unique_ptr m_loggerComponent; + AZStd::unique_ptr m_timeSystem; + AZStd::unique_ptr m_networkingSystemComponent; }; TEST_F(UdpTransportTests, PacketIdWrap) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/API/PythonLoader.h b/Code/Framework/AzToolsFramework/AzToolsFramework/API/PythonLoader.h new file mode 100644 index 0000000000..6acc160ddc --- /dev/null +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/API/PythonLoader.h @@ -0,0 +1,25 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#pragma once + +namespace AzToolsFramework::EmbeddedPython +{ + // When using embedded Python, some platforms need to explicitly load the python library. + // For any modules that depend on 3rdParty::Python package, the AZ::Module should inherit this class. + class PythonLoader + { + public: + PythonLoader(); + ~PythonLoader(); + + private: + [[maybe_unused]] void* m_embeddedLibPythonHandle{ nullptr }; + }; + +} // namespace AzToolsFramework::EmbeddedPython diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/API/ToolsApplicationAPI.h b/Code/Framework/AzToolsFramework/AzToolsFramework/API/ToolsApplicationAPI.h index fd4196a296..282898c37d 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/API/ToolsApplicationAPI.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/API/ToolsApplicationAPI.h @@ -927,6 +927,9 @@ namespace AzToolsFramework /// Notify that the MainWindow has been fully initialized virtual void NotifyMainWindowInitialized(QMainWindow* /*mainWindow*/) {} + /// Notify that the Editor has been fully initialized + virtual void NotifyEditorInitialized() {} + /// Signal that an asset should be highlighted / selected virtual void SelectAsset(const QString& /* assetPath */) {} }; diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Application/ToolsApplication.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Application/ToolsApplication.cpp index f203251407..0f0bbf2b41 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Application/ToolsApplication.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Application/ToolsApplication.cpp @@ -215,12 +215,17 @@ namespace AzToolsFramework , public AZ::BehaviorEBusHandler { AZ_EBUS_BEHAVIOR_BINDER(EditorEventsBusHandler, "{352F80BB-469A-40B6-B322-FE57AB51E4DA}", AZ::SystemAllocator, - NotifyRegisterViews); + NotifyRegisterViews, NotifyEditorInitialized); void NotifyRegisterViews() override { Call(FN_NotifyRegisterViews); } + + void NotifyEditorInitialized() override + { + Call(FN_NotifyEditorInitialized); + } }; } // Internal @@ -445,6 +450,7 @@ namespace AzToolsFramework ->Attribute(AZ::Script::Attributes::Module, "editor") ->Handler() ->Event("NotifyRegisterViews", &EditorEvents::NotifyRegisterViews) + ->Event("NotifyEditorInitialized", &EditorEvents::NotifyEditorInitialized) ; behaviorContext->EBus("ViewPaneCallbackBus") @@ -1192,14 +1198,25 @@ namespace AzToolsFramework AZ::EntityId ToolsApplication::GetCurrentLevelEntityId() { - AzFramework::EntityContextId editorEntityContextId = AzFramework::EntityContextId::CreateNull(); - AzToolsFramework::EditorEntityContextRequestBus::BroadcastResult(editorEntityContextId, &AzToolsFramework::EditorEntityContextRequestBus::Events::GetEditorEntityContextId); - AZ::SliceComponent* rootSliceComponent = nullptr; - AzFramework::SliceEntityOwnershipServiceRequestBus::EventResult(rootSliceComponent, editorEntityContextId, - &AzFramework::SliceEntityOwnershipServiceRequestBus::Events::GetRootSlice); - if (rootSliceComponent && rootSliceComponent->GetMetadataEntity()) + if (IsPrefabSystemEnabled()) { - return rootSliceComponent->GetMetadataEntity()->GetId(); + if (auto prefabPublicInterface = AZ::Interface::Get()) + { + return prefabPublicInterface->GetLevelInstanceContainerEntityId(); + } + } + else + { + AzFramework::EntityContextId editorEntityContextId = AzFramework::EntityContextId::CreateNull(); + AzToolsFramework::EditorEntityContextRequestBus::BroadcastResult( + editorEntityContextId, &AzToolsFramework::EditorEntityContextRequestBus::Events::GetEditorEntityContextId); + AZ::SliceComponent* rootSliceComponent = nullptr; + AzFramework::SliceEntityOwnershipServiceRequestBus::EventResult( + rootSliceComponent, editorEntityContextId, &AzFramework::SliceEntityOwnershipServiceRequestBus::Events::GetRootSlice); + if (rootSliceComponent && rootSliceComponent->GetMetadataEntity()) + { + return rootSliceComponent->GetMetadataEntity()->GetId(); + } } return AZ::EntityId(); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Asset/AssetUtils.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Asset/AssetUtils.cpp index 139bbb563c..6fd881dbb9 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Asset/AssetUtils.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Asset/AssetUtils.cpp @@ -14,7 +14,7 @@ #include #include #include -#include +#include #include #include #include @@ -205,7 +205,7 @@ namespace AzToolsFramework::AssetUtils return platformConfigFilePathsAdded; } - AZStd::vector GetConfigFiles(AZStd::string_view engineRoot, AZStd::string_view assetRoot, AZStd::string_view projectPath, + AZStd::vector GetConfigFiles(AZStd::string_view engineRoot, AZStd::string_view projectPath, bool addPlatformConfigs, bool addGemsConfigs, AZ::SettingsRegistryInterface* settingsRegistry) { constexpr const char* AssetProcessorGamePlatformConfigFileName = "AssetProcessorGamePlatformConfig.ini"; @@ -232,14 +232,13 @@ namespace AzToolsFramework::AssetUtils Internal::AddGemConfigFiles(gemInfoList, configFiles); } - AZ::IO::Path assetRootDir(assetRoot); - assetRootDir /= projectPath; + AZ::IO::Path projectRoot(projectPath); - AZ::IO::Path projectConfigFile = assetRootDir / AssetProcessorGamePlatformConfigFileName; + AZ::IO::Path projectConfigFile = projectRoot / AssetProcessorGamePlatformConfigFileName; configFiles.push_back(projectConfigFile); // Add a file entry for the Project AssetProcessor setreg file - projectConfigFile = assetRootDir / AssetProcessorGamePlatformConfigSetreg; + projectConfigFile = projectRoot / AssetProcessorGamePlatformConfigSetreg; configFiles.push_back(projectConfigFile); return configFiles; @@ -251,10 +250,10 @@ namespace AzToolsFramework::AssetUtils AZStd::vector tokens; AZ::StringFunc::Tokenize(relPathFromRoot.c_str(), tokens, AZ_CORRECT_FILESYSTEM_SEPARATOR_STRING); - AZStd::string validatedPath; + AZ::IO::FixedMaxPath validatedPath; if (rootPath.empty()) { - AzFramework::ApplicationRequests::Bus::BroadcastResult(validatedPath, &AzFramework::ApplicationRequests::GetEngineRoot); + validatedPath = AZ::Utils::GetEnginePath(); } else { @@ -299,10 +298,7 @@ namespace AzToolsFramework::AssetUtils break; } - AZStd::string absoluteFilePath; - AZ::StringFunc::Path::ConstructFull(validatedPath.c_str(), element.c_str(), absoluteFilePath); - - validatedPath = absoluteFilePath; // go one step deeper. + validatedPath /= element; // go one step deeper. } if (success) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Asset/AssetUtils.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Asset/AssetUtils.h index 39aab4d3fb..31ee9dcf60 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Asset/AssetUtils.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Asset/AssetUtils.h @@ -40,7 +40,7 @@ namespace AzToolsFramework::AssetUtils //! Also note that if the project has any "game project gems", then those will also be inserted last, //! and thus have a higher priority than the root or non - project gems. //! Also note that the game project could be in a different location to the engine therefore we need the assetRoot param. - AZStd::vector GetConfigFiles(AZStd::string_view engineRoot, AZStd::string_view assetRoot, AZStd::string_view projectPath, + AZStd::vector GetConfigFiles(AZStd::string_view engineRoot, AZStd::string_view projectPath, bool addPlatformConfigs = true, bool addGemsConfigs = true, AZ::SettingsRegistryInterface* settingsRegistry = nullptr); //! A utility function which checks the given path starting at the root and updates the relative path to be the actual case correct path. diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/AssetBrowserComponent.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/AssetBrowserComponent.cpp index 7da6f794d6..172bd3a29c 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/AssetBrowserComponent.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/AssetBrowserComponent.cpp @@ -234,11 +234,6 @@ namespace AzToolsFramework return SourceFileDetails("Icons/AssetBrowser/Lua_16.svg"); } - if (AzFramework::StringFunc::Equal(extension.c_str(), ".mtl")) - { - return SourceFileDetails("Icons/AssetBrowser/Material_16.svg"); - } - if (AzFramework::StringFunc::Equal(extension.c_str(), AzToolsFramework::SliceUtilities::GetSliceFileExtension().c_str())) { return SourceFileDetails("Icons/AssetBrowser/Slice_16.svg"); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/AssetBrowserFilterModel.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/AssetBrowserFilterModel.cpp index acf935e6dc..c6772ea2d7 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/AssetBrowserFilterModel.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/AssetBrowserFilterModel.cpp @@ -20,7 +20,7 @@ AZ_PUSH_DISABLE_WARNING(4251, "-Wunknown-warning-option") AZ_POP_DISABLE_WARNING AZ_CVAR( - bool, ed_useNewAssetBrowserTableView, false, nullptr, AZ::ConsoleFunctorFlags::Null, + bool, ed_useNewAssetBrowserTableView, true, nullptr, AZ::ConsoleFunctorFlags::Null, "Use the new AssetBrowser TableView for searching assets."); namespace AzToolsFramework { diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/AssetPicker/AssetPickerDialog.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/AssetPicker/AssetPickerDialog.cpp index 4ebeb03a71..eae8ec2a1e 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/AssetPicker/AssetPickerDialog.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/AssetPicker/AssetPickerDialog.cpp @@ -31,7 +31,10 @@ AZ_POP_DISABLE_WARNING AZ_CVAR( bool, ed_hideAssetPickerPathColumn, true, nullptr, AZ::ConsoleFunctorFlags::Null, "Hide AssetPicker path column for a clearer view."); -AZ_CVAR_EXTERNED(bool, ed_useNewAssetBrowserTableView); + +AZ_CVAR( + bool, ed_useNewAssetPickerView, false, nullptr, AZ::ConsoleFunctorFlags::Null, + "Uses the new Asset Picker View."); namespace AzToolsFramework { @@ -106,7 +109,7 @@ namespace AzToolsFramework m_persistentState = AZ::UserSettings::CreateFind(AZ::Crc32(("AssetBrowserTreeView_Dialog_" + name).toUtf8().data()), AZ::UserSettings::CT_GLOBAL); m_ui->m_assetBrowserTableViewWidget->setVisible(false); - if (ed_useNewAssetBrowserTableView) + if (ed_useNewAssetPickerView) { m_ui->m_assetBrowserTreeViewWidget->setVisible(false); m_ui->m_assetBrowserTableViewWidget->setVisible(true); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/Thumbnails/SourceThumbnail.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/Thumbnails/SourceThumbnail.cpp index a5206c9608..4869e0d09f 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/Thumbnails/SourceThumbnail.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/Thumbnails/SourceThumbnail.cpp @@ -9,11 +9,11 @@ #include #include #include +#include #include #include #include #include -#include #include namespace AzToolsFramework @@ -113,11 +113,9 @@ namespace AzToolsFramework if (iconPathToUse.isEmpty()) { - const char* engineRoot = nullptr; - AzFramework::ApplicationRequests::Bus::BroadcastResult(engineRoot, &AzFramework::ApplicationRequests::GetEngineRoot); - AZ_Assert(engineRoot, "Engine Root not initialized"); - AZStd::string iconPath = AZStd::string::format("%s%s", engineRoot, DefaultFileIconPath); - iconPathToUse = iconPath.c_str(); + AZ::IO::FixedMaxPath engineRoot = AZ::Utils::GetEnginePath(); + AZ_Assert(!engineRoot.empty(), "Engine Root not initialized"); + iconPathToUse = (engineRoot / DefaultFileIconPath).c_str(); } m_pixmap.load(iconPathToUse); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBundle/AssetBundleComponent.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBundle/AssetBundleComponent.cpp index 8924907e81..ac8e034faf 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBundle/AssetBundleComponent.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBundle/AssetBundleComponent.cpp @@ -202,9 +202,9 @@ namespace AzToolsFramework AZ_TracePrintf(logWindowName, "Creating new asset bundle manifest file \"%s\" for source pak \"%s\".\n", AzFramework::AssetBundleManifest::s_manifestFileName, sourcePak.c_str()); bool manifestSaved = false; AZStd::string manifestDirectory; - AZStd::vector levelDirs; AzFramework::StringFunc::Path::GetFullPath(sourcePak.c_str(), manifestDirectory); - AssetCatalogRequestBus::BroadcastResult(manifestSaved, &AssetCatalogRequestBus::Events::CreateBundleManifest, outCatalogPath, AZStd::vector(), manifestDirectory, AzFramework::AssetBundleManifest::CurrentBundleVersion, levelDirs); + AssetCatalogRequestBus::BroadcastResult(manifestSaved, &AssetCatalogRequestBus::Events::CreateBundleManifest, outCatalogPath, + AZStd::vector(), manifestDirectory, AzFramework::AssetBundleManifest::CurrentBundleVersion, AZStd::vector{}); AZStd::string manifestPath; AzFramework::StringFunc::Path::Join(manifestDirectory.c_str(), AzFramework::AssetBundleManifest::s_manifestFileName, manifestPath); @@ -263,7 +263,7 @@ namespace AzToolsFramework AZStd::string tempBundleFilePath = bundleFilePath.Native() + "_temp"; AZStd::vector dependentBundleNames; - AZStd::vector levelDirs; + AZStd::vector levelDirs; AZStd::vector> bundlePathDeltaCatalogPair; bundlePathDeltaCatalogPair.emplace_back(AZStd::make_pair(tempBundleFilePath, DeltaCatalogName)); @@ -515,7 +515,7 @@ namespace AzToolsFramework return true; } - bool AssetBundleComponent::AddManifestFileToBundles(const AZStd::vector>& bundlePathDeltaCatalogPair, const AZStd::vector& dependentBundleNames, const AZStd::string& bundleFolder, const AzToolsFramework::AssetBundleSettings& assetBundleSettings, const AZStd::vector& levelDirs) + bool AssetBundleComponent::AddManifestFileToBundles(const AZStd::vector>& bundlePathDeltaCatalogPair, const AZStd::vector& dependentBundleNames, const AZStd::string& bundleFolder, const AzToolsFramework::AssetBundleSettings& assetBundleSettings, const AZStd::vector& levelDirs) { if (!MakePath(bundleFolder)) { diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBundle/AssetBundleComponent.h b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBundle/AssetBundleComponent.h index 17a9dd40f5..a2f7729e4e 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBundle/AssetBundleComponent.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBundle/AssetBundleComponent.h @@ -86,7 +86,7 @@ namespace AzToolsFramework //! Adds the manifest file to all the bundles //! The parent bundle manifest file is special since it will contain information of all dependent bundles names. - bool AddManifestFileToBundles(const AZStd::vector>& bundlePathDeltaCatalogPair, const AZStd::vector& dependentBundleNames, const AZStd::string& bundleFolder, const AzToolsFramework::AssetBundleSettings& assetBundleSettings, const AZStd::vector& levelDirs); + bool AddManifestFileToBundles(const AZStd::vector>& bundlePathDeltaCatalogPair, const AZStd::vector& dependentBundleNames, const AZStd::string& bundleFolder, const AzToolsFramework::AssetBundleSettings& assetBundleSettings, const AZStd::vector& levelDirs); //! Adds the delta catalog and any remaining files to the bundle //! We only create the delta catalog once we are sure about what all the files that will go in it. diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetCatalog/PlatformAddressedAssetCatalog.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetCatalog/PlatformAddressedAssetCatalog.cpp index a0e21ad589..1025d39e18 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetCatalog/PlatformAddressedAssetCatalog.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetCatalog/PlatformAddressedAssetCatalog.cpp @@ -143,7 +143,7 @@ namespace AzToolsFramework return AssetCatalog::RemoveDeltaCatalog(deltaCatalog); } - bool PlatformAddressedAssetCatalog::CreateBundleManifest(const AZStd::string& deltaCatalogPath, const AZStd::vector& dependentBundleNames, const AZStd::string& fileDirectory, int bundleVersion, const AZStd::vector& levelDirs) + bool PlatformAddressedAssetCatalog::CreateBundleManifest(const AZStd::string& deltaCatalogPath, const AZStd::vector& dependentBundleNames, const AZStd::string& fileDirectory, int bundleVersion, const AZStd::vector& levelDirs) { return AssetCatalog::CreateBundleManifest(deltaCatalogPath, dependentBundleNames, fileDirectory, bundleVersion, levelDirs); } diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetCatalog/PlatformAddressedAssetCatalog.h b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetCatalog/PlatformAddressedAssetCatalog.h index a7a19d6d2f..2d65c7e7d3 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetCatalog/PlatformAddressedAssetCatalog.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetCatalog/PlatformAddressedAssetCatalog.h @@ -66,7 +66,7 @@ namespace AzToolsFramework bool InsertDeltaCatalogBefore(AZStd::shared_ptr deltaCatalog, AZStd::shared_ptr afterDeltaCatalog) override; bool RemoveDeltaCatalog(AZStd::shared_ptr deltaCatalog) override; - bool CreateBundleManifest(const AZStd::string& deltaCatalogPath, const AZStd::vector& dependentBundleNames, const AZStd::string& fileDirectory, int bundleVersion, const AZStd::vector& levelDirs) override; + bool CreateBundleManifest(const AZStd::string& deltaCatalogPath, const AZStd::vector& dependentBundleNames, const AZStd::string& fileDirectory, int bundleVersion, const AZStd::vector& levelDirs) override; bool CreateDeltaCatalog(const AZStd::vector& files, const AZStd::string& filePath) override; void AddExtension(const char* extension) override; diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Component/EditorComponentAPIComponent.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Component/EditorComponentAPIComponent.cpp index 2cca3804ea..20a15643c6 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Component/EditorComponentAPIComponent.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Component/EditorComponentAPIComponent.cpp @@ -597,11 +597,13 @@ namespace AzToolsFramework pte.SetVisibleEnforcement(true); } + ScopedUndoBatch undo("Modify Entity Property"); PropertyOutcome result = pte.SetProperty(propertyPath, value); if (result.IsSuccess()) { PropertyEditorEntityChangeNotificationBus::Event(componentInstance.GetEntityId(), &PropertyEditorEntityChangeNotifications::OnEntityComponentPropertyChanged, componentInstance.GetComponentId()); } + undo.MarkEntityDirty(componentInstance.GetEntityId()); return result; } diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ComponentMode/ComponentModeCollection.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ComponentMode/ComponentModeCollection.cpp index 07e025fc60..f07e87fad2 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ComponentMode/ComponentModeCollection.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ComponentMode/ComponentModeCollection.cpp @@ -448,7 +448,11 @@ namespace AzToolsFramework ViewportUi::ViewportUiRequestBus::Event( ViewportUi::DefaultViewportId, &ViewportUi::ViewportUiRequestBus::Events::CreateViewportBorder, - componentMode.m_componentMode->GetComponentModeName().c_str()); + componentMode.m_componentMode->GetComponentModeName().c_str(), + [] + { + ComponentModeSystemRequestBus::Broadcast(&ComponentModeSystemRequests::EndComponentMode); + }); } RefreshActions(); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ComponentMode/EditorBaseComponentMode.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ComponentMode/EditorBaseComponentMode.cpp index f449478306..e780c38822 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ComponentMode/EditorBaseComponentMode.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ComponentMode/EditorBaseComponentMode.cpp @@ -55,8 +55,11 @@ namespace AzToolsFramework GetEntityComponentIdPair(), elementIdsToDisplay); // create the component mode border with the specific name for this component mode ViewportUi::ViewportUiRequestBus::Event( - ViewportUi::DefaultViewportId, &ViewportUi::ViewportUiRequestBus::Events::CreateViewportBorder, - GetComponentModeName()); + ViewportUi::DefaultViewportId, &ViewportUi::ViewportUiRequestBus::Events::CreateViewportBorder, GetComponentModeName(), + [] + { + ComponentModeSystemRequestBus::Broadcast(&ComponentModeSystemRequests::EndComponentMode); + }); // set the EntityComponentId for this ComponentMode to active in the ComponentModeViewportUi system ComponentModeViewportUiRequestBus::Event( GetComponentType(), &ComponentModeViewportUiRequestBus::Events::SetViewportUiActiveEntityComponentId, diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/EditorEntityHelpers.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/EditorEntityHelpers.cpp index 28d6e2bc08..3e256430a2 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/EditorEntityHelpers.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/EditorEntityHelpers.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -468,6 +469,18 @@ namespace AzToolsFramework EntityIdList children; EditorEntityInfoRequestBus::EventResult(children, parentId, &EditorEntityInfoRequestBus::Events::GetChildren); + // If Prefabs are enabled, don't check the order for an invalid parent, just return its children (i.e. the root container entity) + // There will currently always be one root container entity, so there's no order to retrieve + if (!parentId.IsValid()) + { + bool isPrefabEnabled = false; + AzFramework::ApplicationRequests::Bus::BroadcastResult(isPrefabEnabled, &AzFramework::ApplicationRequests::IsPrefabSystemEnabled); + if (isPrefabEnabled) + { + return children; + } + } + EntityIdList entityChildOrder; AZ::EntityId sortEntityId = GetEntityIdForSortInfo(parentId); EditorEntitySortRequestBus::EventResult(entityChildOrder, sortEntityId, &EditorEntitySortRequestBus::Events::GetChildEntityOrderArray); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/EditorEntitySortComponent.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/EditorEntitySortComponent.cpp index b747469f4d..6936397187 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/EditorEntitySortComponent.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/EditorEntitySortComponent.cpp @@ -11,6 +11,8 @@ #include #include #include +#include +#include static_assert(sizeof(AZ::u64) == sizeof(AZ::EntityId), "We use AZ::EntityId for Persistent ID, which is a u64 under the hood. These must be the same size otherwise the persistent id will have to be rewritten"); @@ -144,6 +146,12 @@ namespace AzToolsFramework bool EditorEntitySortComponent::AddChildEntityInternal(const AZ::EntityId& entityId, bool addToBack, EntityOrderArray::iterator insertPosition) { AZ_PROFILE_FUNCTION(AzToolsFramework); + + if (m_ignoreIncomingOrderChanges) + { + return true; + } + auto entityItr = m_childEntityOrderCache.find(entityId); if (entityItr == m_childEntityOrderCache.end()) { @@ -198,6 +206,12 @@ namespace AzToolsFramework bool EditorEntitySortComponent::RemoveChildEntity(const AZ::EntityId& entityId) { AZ_PROFILE_FUNCTION(AzToolsFramework); + + if (m_ignoreIncomingOrderChanges) + { + return true; + } + auto entityItr = m_childEntityOrderCache.find(entityId); if (entityItr != m_childEntityOrderCache.end()) { @@ -250,11 +264,30 @@ namespace AzToolsFramework } } + void EditorEntitySortComponent::OnPrefabInstancePropagationBegin() + { + m_ignoreIncomingOrderChanges = true; + } + + void EditorEntitySortComponent::OnPrefabInstancePropagationEnd() + { + m_ignoreIncomingOrderChanges = false; + } + void EditorEntitySortComponent::MarkDirtyAndSendChangedEvent() { // mark the order as dirty before sending the ChildEntityOrderArrayUpdated event in order for PrepareSave to be properly handled in the case // one of the event listeners needs to build the InstanceDataHierarchy m_entityOrderIsDirty = true; + + // Force an immediate update for prefabs, which won't receive PrepareSave + bool isPrefabEnabled = false; + AzFramework::ApplicationRequests::Bus::BroadcastResult( + isPrefabEnabled, &AzFramework::ApplicationRequests::IsPrefabSystemEnabled); + if (isPrefabEnabled) + { + PrepareSave(); + } EditorEntitySortNotificationBus::Event(GetEntityId(), &EditorEntitySortNotificationBus::Events::ChildEntityOrderArrayUpdated); } @@ -264,10 +297,20 @@ namespace AzToolsFramework // This is a special case for certain EditorComponents only! EditorEntitySortRequestBus::Handler::BusConnect(GetEntityId()); EditorEntityContextNotificationBus::Handler::BusConnect(); + AzToolsFramework::Prefab::PrefabPublicNotificationBus::Handler::BusConnect(); } void EditorEntitySortComponent::Activate() { + // Run the post-serialize handler if prefabs are enabled because PostLoad won't be called automatically + bool isPrefabEnabled = false; + AzFramework::ApplicationRequests::Bus::BroadcastResult( + isPrefabEnabled, &AzFramework::ApplicationRequests::IsPrefabSystemEnabled); + if (isPrefabEnabled) + { + PostLoad(); + } + // Send out that the order for our entity is now updated EditorEntitySortNotificationBus::Event(GetEntityId(), &EditorEntitySortNotificationBus::Events::ChildEntityOrderArrayUpdated); } diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/EditorEntitySortComponent.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/EditorEntitySortComponent.h index d728191c64..806e903c96 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/EditorEntitySortComponent.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/EditorEntitySortComponent.h @@ -10,6 +10,7 @@ #include "EditorEntitySortBus.h" #include #include +#include #include namespace AzToolsFramework @@ -20,6 +21,7 @@ namespace AzToolsFramework : public AzToolsFramework::Components::EditorComponentBase , public EditorEntitySortRequestBus::Handler , public EditorEntityContextNotificationBus::Handler + , public AzToolsFramework::Prefab::PrefabPublicNotificationBus::Handler { public: AZ_COMPONENT(EditorEntitySortComponent, "{6EA1E03D-68B2-466D-97F7-83998C8C27F0}", EditorComponentBase); @@ -45,6 +47,9 @@ namespace AzToolsFramework // EditorEntityContextNotificationBus::Handler void OnEntityStreamLoadSuccess() override; ////////////////////////////////////////////////////////////////////////// + + void OnPrefabInstancePropagationBegin() override; + void OnPrefabInstancePropagationEnd() override; private: void MarkDirtyAndSendChangedEvent(); bool AddChildEntityInternal(const AZ::EntityId& entityId, bool addToBack, EntityOrderArray::iterator insertPosition); @@ -106,6 +111,7 @@ namespace AzToolsFramework EntityOrderCache m_childEntityOrderCache; ///< The map of entity id to index for quick look up bool m_entityOrderIsDirty = true; ///< This flag indicates our stored serialization order data is out of date and must be rebuilt before serialization occurs + bool m_ignoreIncomingOrderChanges = false; ///< This is set when prefab propagation occurs so that non-authored order changes can be ignored }; } } // namespace AzToolsFramework diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabFocusHandler.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabFocusHandler.cpp index 8098727177..744c53ef5a 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabFocusHandler.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabFocusHandler.cpp @@ -98,7 +98,7 @@ namespace AzToolsFramework::Prefab } // Retrieve parent of currently focused prefab. - InstanceOptionalReference parentInstance = m_instanceFocusHierarchy[hierarchySize - 2]; + InstanceOptionalReference parentInstance = GetReferenceFromContainerEntityId(m_instanceFocusHierarchy[hierarchySize - 2]); // Use container entity of parent Instance for focus operations. AZ::EntityId entityId = parentInstance->get().GetContainerEntityId(); @@ -132,7 +132,7 @@ namespace AzToolsFramework::Prefab return AZ::Failure(AZStd::string("Prefab Focus Handler: Invalid index on FocusOnPathIndex.")); } - InstanceOptionalReference focusedInstance = m_instanceFocusHierarchy[index]; + InstanceOptionalReference focusedInstance = GetReferenceFromContainerEntityId(m_instanceFocusHierarchy[index]); return FocusOnOwningPrefab(focusedInstance->get().GetContainerEntityId()); } @@ -172,23 +172,18 @@ namespace AzToolsFramework::Prefab // Close all container entities in the old path. CloseInstanceContainers(m_instanceFocusHierarchy); - m_focusedInstance = focusedInstance; + // Do not store the container for the root instance, use an invalid EntityId instead. + m_focusedInstanceContainerEntityId = focusedInstance->get().GetParentInstance().has_value() ? focusedInstance->get().GetContainerEntityId() : AZ::EntityId(); m_focusedTemplateId = focusedInstance->get().GetTemplateId(); - AZ::EntityId containerEntityId; - - if (focusedInstance->get().GetParentInstance() != AZStd::nullopt) - { - containerEntityId = focusedInstance->get().GetContainerEntityId(); - } - else - { - containerEntityId = AZ::EntityId(); - } - // Focus on the descendants of the container entity in the Editor, if the interface is initialized. if (m_focusModeInterface) { + const AZ::EntityId containerEntityId = + (focusedInstance->get().GetParentInstance() != AZStd::nullopt) + ? focusedInstance->get().GetContainerEntityId() + : AZ::EntityId(); + m_focusModeInterface->SetFocusRoot(containerEntityId); } @@ -212,56 +207,55 @@ namespace AzToolsFramework::Prefab InstanceOptionalReference PrefabFocusHandler::GetFocusedPrefabInstance( [[maybe_unused]] AzFramework::EntityContextId entityContextId) const { - return m_focusedInstance; + return GetReferenceFromContainerEntityId(m_focusedInstanceContainerEntityId); } AZ::EntityId PrefabFocusHandler::GetFocusedPrefabContainerEntityId([[maybe_unused]] AzFramework::EntityContextId entityContextId) const { - if (!m_focusedInstance.has_value()) - { - // PrefabFocusHandler has not been initialized yet. - return AZ::EntityId(); - } - - return m_focusedInstance->get().GetContainerEntityId(); + return m_focusedInstanceContainerEntityId; } bool PrefabFocusHandler::IsOwningPrefabBeingFocused(AZ::EntityId entityId) const { - if (!m_focusedInstance.has_value()) - { - // PrefabFocusHandler has not been initialized yet. - return false; - } - if (!entityId.IsValid()) { return false; } InstanceOptionalReference instance = m_instanceEntityMapperInterface->FindOwningInstance(entityId); + if (!instance.has_value()) + { + return false; + } - return instance.has_value() && (&instance->get() == &m_focusedInstance->get()); + // If this is owned by the root instance, that corresponds to an invalid m_focusedInstanceContainerEntityId. + if (!instance->get().GetParentInstance().has_value()) + { + return !m_focusedInstanceContainerEntityId.IsValid(); + } + + return (instance->get().GetContainerEntityId() == m_focusedInstanceContainerEntityId); } bool PrefabFocusHandler::IsOwningPrefabInFocusHierarchy(AZ::EntityId entityId) const { - if (!m_focusedInstance.has_value()) - { - // PrefabFocusHandler has not been initialized yet. - return false; - } - if (!entityId.IsValid()) { return false; } + // If the focus is on the root, m_focusedInstanceContainerEntityId will be the invalid id. + // In those case all entities are in the focus hierarchy and should return true. + if (!m_focusedInstanceContainerEntityId.IsValid()) + { + return true; + } + InstanceOptionalReference instance = m_instanceEntityMapperInterface->FindOwningInstance(entityId); while (instance.has_value()) { - if (&instance->get() == &m_focusedInstance->get()) + if (instance->get().GetContainerEntityId() == m_focusedInstanceContainerEntityId) { return true; } @@ -296,8 +290,9 @@ namespace AzToolsFramework::Prefab // Determine if the entityId is the container for any of the instances in the vector. auto result = AZStd::find_if( m_instanceFocusHierarchy.begin(), m_instanceFocusHierarchy.end(), - [entityId](const InstanceOptionalReference& instance) + [&, entityId](const AZ::EntityId& containerEntityId) { + InstanceOptionalReference instance = GetReferenceFromContainerEntityId(containerEntityId); return (instance->get().GetContainerEntityId() == entityId); } ); @@ -322,8 +317,9 @@ namespace AzToolsFramework::Prefab // Determine if the templateId matches any of the instances in the vector. auto result = AZStd::find_if( m_instanceFocusHierarchy.begin(), m_instanceFocusHierarchy.end(), - [templateId](const InstanceOptionalReference& instance) + [&, templateId](const AZ::EntityId& containerEntityId) { + InstanceOptionalReference instance = GetReferenceFromContainerEntityId(containerEntityId); return (instance->get().GetTemplateId() == templateId); } ); @@ -342,10 +338,17 @@ namespace AzToolsFramework::Prefab AZStd::list instanceFocusList; - InstanceOptionalReference currentInstance = m_focusedInstance; + InstanceOptionalReference currentInstance = GetReferenceFromContainerEntityId(m_focusedInstanceContainerEntityId); while (currentInstance.has_value()) { - m_instanceFocusHierarchy.emplace_back(currentInstance); + if (currentInstance->get().GetParentInstance().has_value()) + { + m_instanceFocusHierarchy.emplace_back(currentInstance->get().GetContainerEntityId()); + } + else + { + m_instanceFocusHierarchy.emplace_back(AZ::EntityId()); + } currentInstance = currentInstance->get().GetParentInstance(); } @@ -363,42 +366,48 @@ namespace AzToolsFramework::Prefab size_t index = 0; size_t maxIndex = m_instanceFocusHierarchy.size() - 1; - for (const InstanceOptionalReference& instance : m_instanceFocusHierarchy) + for (const AZ::EntityId containerEntityId : m_instanceFocusHierarchy) { - AZStd::string prefabName; - - if (index < maxIndex) + InstanceOptionalReference instance = GetReferenceFromContainerEntityId(containerEntityId); + if (instance.has_value()) { - // Get the filename without the extension (stem). - prefabName = instance->get().GetTemplateSourcePath().Stem().Native(); - } - else - { - // Get the full filename. - prefabName = instance->get().GetTemplateSourcePath().Filename().Native(); - } + AZStd::string prefabName; - if (prefabSystemComponentInterface->IsTemplateDirty(instance->get().GetTemplateId())) - { - prefabName += "*"; - } + if (index < maxIndex) + { + // Get the filename without the extension (stem). + prefabName = instance->get().GetTemplateSourcePath().Stem().Native(); + } + else + { + // Get the full filename. + prefabName = instance->get().GetTemplateSourcePath().Filename().Native(); + } - m_instanceFocusPath.Append(prefabName); + if (prefabSystemComponentInterface->IsTemplateDirty(instance->get().GetTemplateId())) + { + prefabName += "*"; + } + + m_instanceFocusPath.Append(prefabName); + } ++index; } } - void PrefabFocusHandler::OpenInstanceContainers(const AZStd::vector& instances) const + void PrefabFocusHandler::OpenInstanceContainers(const AZStd::vector& instances) const { // If this is called outside the Editor, this interface won't be initialized. if (!m_containerEntityInterface) { return; } - - for (const InstanceOptionalReference& instance : instances) + + for (const AZ::EntityId containerEntityId : instances) { + InstanceOptionalReference instance = GetReferenceFromContainerEntityId(containerEntityId); + if (instance.has_value()) { m_containerEntityInterface->SetContainerOpen(instance->get().GetContainerEntityId(), true); @@ -406,7 +415,7 @@ namespace AzToolsFramework::Prefab } } - void PrefabFocusHandler::CloseInstanceContainers(const AZStd::vector& instances) const + void PrefabFocusHandler::CloseInstanceContainers(const AZStd::vector& instances) const { // If this is called outside the Editor, this interface won't be initialized. if (!m_containerEntityInterface) @@ -414,8 +423,10 @@ namespace AzToolsFramework::Prefab return; } - for (const InstanceOptionalReference& instance : instances) + for (const AZ::EntityId containerEntityId : instances) { + InstanceOptionalReference instance = GetReferenceFromContainerEntityId(containerEntityId); + if (instance.has_value()) { m_containerEntityInterface->SetContainerOpen(instance->get().GetContainerEntityId(), false); @@ -423,4 +434,22 @@ namespace AzToolsFramework::Prefab } } + InstanceOptionalReference PrefabFocusHandler::GetReferenceFromContainerEntityId(AZ::EntityId containerEntityId) const + { + if (!containerEntityId.IsValid()) + { + PrefabEditorEntityOwnershipInterface* prefabEditorEntityOwnershipInterface = + AZ::Interface::Get(); + + if (!prefabEditorEntityOwnershipInterface) + { + return AZStd::nullopt; + } + + return prefabEditorEntityOwnershipInterface->GetRootPrefabInstance(); + } + + return m_instanceEntityMapperInterface->FindOwningInstance(containerEntityId); + } + } // namespace AzToolsFramework::Prefab diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabFocusHandler.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabFocusHandler.h index 75b9666389..2e23059a01 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabFocusHandler.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabFocusHandler.h @@ -73,16 +73,19 @@ namespace AzToolsFramework::Prefab void RefreshInstanceFocusList(); void RefreshInstanceFocusPath(); - void OpenInstanceContainers(const AZStd::vector& instances) const; - void CloseInstanceContainers(const AZStd::vector& instances) const; + void OpenInstanceContainers(const AZStd::vector& instances) const; + void CloseInstanceContainers(const AZStd::vector& instances) const; - //! The instance the editor is currently focusing on. - InstanceOptionalReference m_focusedInstance; + InstanceOptionalReference GetReferenceFromContainerEntityId(AZ::EntityId containerEntityId) const; + + //! The EntityId of the prefab container entity for the instance the editor is currently focusing on. + AZ::EntityId m_focusedInstanceContainerEntityId = AZ::EntityId(); //! The templateId of the focused instance. TemplateId m_focusedTemplateId; - //! The list of instances going from the root (index 0) to the focused instance. - AZStd::vector m_instanceFocusHierarchy; - //! A path containing the names of the containers in the instance focus hierarchy, separated with a /. + //! The list of instances going from the root (index 0) to the focused instance, + //! referenced by their prefab container's EntityId. + AZStd::vector m_instanceFocusHierarchy; + //! A path containing the filenames of the instances in the focus hierarchy, separated with a /. AZ::IO::Path m_instanceFocusPath; ContainerEntityInterface* m_containerEntityInterface = nullptr; diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp index 4d826d9700..850b793513 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp @@ -1144,6 +1144,10 @@ namespace AzToolsFramework AZ::EntityId firstEntityIdToDelete = entityIdsNoFocusContainer[0]; InstanceOptionalReference commonOwningInstance = GetOwnerInstanceByEntityId(firstEntityIdToDelete); + if (!commonOwningInstance.has_value()) + { + return AZ::Failure(AZStd::string("Cannot delete entities belonging to an invalid instance")); + } // If the first entity id is a container entity id, then we need to mark its parent as the common owning instance because you // cannot delete an instance from itself. diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Thumbnails/SourceControlThumbnail.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Thumbnails/SourceControlThumbnail.cpp index 655fd27a0f..c2636d6d52 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Thumbnails/SourceControlThumbnail.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Thumbnails/SourceControlThumbnail.cpp @@ -6,10 +6,10 @@ * */ -#include +#include +#include #include #include -#include namespace AzToolsFramework { @@ -68,12 +68,12 @@ namespace AzToolsFramework SourceControlThumbnail::SourceControlThumbnail(SharedThumbnailKey key) : Thumbnail(key) { - const char* engineRoot = nullptr; - AzFramework::ApplicationRequests::Bus::BroadcastResult(engineRoot, &AzFramework::ApplicationRequests::GetEngineRoot); - AZ_Assert(engineRoot, "Engine Root not initialized"); + AZ::IO::FixedMaxPath engineRoot = AZ::Utils::GetEnginePath(); + AZ_Assert(!engineRoot.empty(), "Engine Root not initialized"); + + m_writableIconPath = (engineRoot / WRITABLE_ICON_PATH).String(); + m_nonWritableIconPath = (engineRoot / NONWRITABLE_ICON_PATH).String(); - AzFramework::StringFunc::Path::Join(engineRoot, WRITABLE_ICON_PATH, m_writableIconPath); - AzFramework::StringFunc::Path::Join(engineRoot, NONWRITABLE_ICON_PATH, m_nonWritableIconPath); BusConnect(); } @@ -90,8 +90,8 @@ namespace AzToolsFramework AZ_Assert(sourceControlKey, "Incorrect key type, excpected SourceControlThumbnailKey"); AZStd::string myFileName(sourceControlKey->GetFileName()); - AzFramework::StringFunc::Path::Normalize(myFileName); - if (AzFramework::StringFunc::Equal(myFileName.c_str(), filename)) + AZ::StringFunc::Path::Normalize(myFileName); + if (AZ::StringFunc::Equal(myFileName.c_str(), filename)) { Update(); } diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/LegacyFramework/UIFramework.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/LegacyFramework/UIFramework.cpp index 98e06b77f3..26234f47e2 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/LegacyFramework/UIFramework.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/LegacyFramework/UIFramework.cpp @@ -362,23 +362,11 @@ namespace AzToolsFramework // Tick the component app. AZ::ComponentApplication* pApp = nullptr; EBUS_EVENT_RESULT(pApp, AZ::ComponentApplicationBus, GetApplication); - if (pApp) + if (pApp && m_ptrTicker) { - AZStd::chrono::system_clock::time_point now = AZStd::chrono::system_clock::now(); - static AZStd::chrono::system_clock::time_point lastUpdate = now; - - AZStd::chrono::duration delta = now - lastUpdate; - float deltaTime = delta.count(); - - lastUpdate = now; - - if (m_ptrTicker) - { - AZ::SystemTickBus::ExecuteQueuedEvents(); - AZ::SystemTickBus::Broadcast(&AZ::SystemTickEvents::OnSystemTick); - pApp->Tick(deltaTime); - } - + AZ::SystemTickBus::ExecuteQueuedEvents(); + AZ::SystemTickBus::Broadcast(&AZ::SystemTickEvents::OnSystemTick); + pApp->Tick(); } m_bTicking = false; diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/PrefabViewportFocusPathHandler.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/PrefabViewportFocusPathHandler.cpp index 920e99665d..c1fc9138d1 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/PrefabViewportFocusPathHandler.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/PrefabViewportFocusPathHandler.cpp @@ -64,6 +64,9 @@ namespace AzToolsFramework::Prefab ); m_backButton->setToolTip("Up one level (-)"); + + // Currently hide this button until we can correctly disable/enable it based on context. + m_backButton->hide(); } void PrefabViewportFocusPathHandler::OnPrefabFocusChanged() diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/EntityPropertyEditor.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/EntityPropertyEditor.cpp index 9ffe8021e3..9ecbdf5ffc 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/EntityPropertyEditor.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/EntityPropertyEditor.cpp @@ -45,6 +45,7 @@ AZ_POP_DISABLE_WARNING #include #include #include +#include #include #include #include @@ -606,6 +607,7 @@ namespace AzToolsFramework AzToolsFramework::ComponentModeFramework::EditorComponentModeNotificationBus::Handler::BusConnect( AzToolsFramework::GetEntityContextId()); + ViewportEditorModeNotificationsBus::Handler::BusConnect(GetEntityContextId()); } EntityPropertyEditor::~EntityPropertyEditor() @@ -618,7 +620,8 @@ namespace AzToolsFramework AZ::EntitySystemBus::Handler::BusDisconnect(); EditorEntityContextNotificationBus::Handler::BusDisconnect(); AzToolsFramework::ComponentModeFramework::EditorComponentModeNotificationBus::Handler::BusDisconnect(); - + ViewportEditorModeNotificationsBus::Handler::BusDisconnect(); + for (auto& entityId : m_overrideSelectedEntityIds) { DisconnectFromEntityBuses(entityId); @@ -892,25 +895,51 @@ namespace AzToolsFramework { if (!m_prefabsAreEnabled) { - return m_isLevelEntityEditor ? InspectorLayout::LEVEL : InspectorLayout::ENTITY; + return m_isLevelEntityEditor ? InspectorLayout::Level : InspectorLayout::Entity; } + // Prefabs layout logic + + // If this is the container entity for the root instance, treat it like a level entity. AZ::EntityId levelContainerEntityId = m_prefabPublicInterface->GetLevelInstanceContainerEntityId(); if (AZStd::find(m_selectedEntityIds.begin(), m_selectedEntityIds.end(), levelContainerEntityId) != m_selectedEntityIds.end()) { if (m_selectedEntityIds.size() > 1) { - return InspectorLayout::INVALID; + return InspectorLayout::Invalid; } else { - return InspectorLayout::LEVEL; + return InspectorLayout::Level; } } else { - return InspectorLayout::ENTITY; + // If this is the container entity for the currently focused prefab, utilize a separate layout. + if (auto prefabFocusPublicInterface = AZ::Interface::Get()) + { + AzFramework::EntityContextId editorEntityContextId = AzFramework::EntityContextId::CreateNull(); + EditorEntityContextRequestBus::BroadcastResult( + editorEntityContextId, &EditorEntityContextRequests::GetEditorEntityContextId); + + AZ::EntityId focusedPrefabContainerEntityId = + prefabFocusPublicInterface->GetFocusedPrefabContainerEntityId(editorEntityContextId); + if (AZStd::find(m_selectedEntityIds.begin(), m_selectedEntityIds.end(), focusedPrefabContainerEntityId) != + m_selectedEntityIds.end()) + { + if (m_selectedEntityIds.size() > 1) + { + return InspectorLayout::Invalid; + } + else + { + return InspectorLayout::ContainerEntityOfFocusedPrefab; + } + } + } } + + return InspectorLayout::Entity; } void EntityPropertyEditor::UpdateEntityDisplay() @@ -919,7 +948,7 @@ namespace AzToolsFramework InspectorLayout layout = GetCurrentInspectorLayout(); - if (layout == InspectorLayout::LEVEL) + if (!m_prefabsAreEnabled && layout == InspectorLayout::Level) { AZStd::string levelName; AzToolsFramework::EditorRequestBus::BroadcastResult(levelName, &AzToolsFramework::EditorRequests::GetLevelName); @@ -961,14 +990,19 @@ namespace AzToolsFramework InspectorLayout layout = GetCurrentInspectorLayout(); - if (layout == InspectorLayout::LEVEL) + if (layout == InspectorLayout::Level) { // The Level Inspector should only have a list of selectable components after the // level entity itself is valid (i.e. "selected"). return selection.empty() ? SelectionEntityTypeInfo::None : SelectionEntityTypeInfo::LevelEntity; } - if (layout == InspectorLayout::INVALID) + if (layout == InspectorLayout::ContainerEntityOfFocusedPrefab) + { + return selection.empty() ? SelectionEntityTypeInfo::None : SelectionEntityTypeInfo::ContainerEntityOfFocusedPrefab; + } + + if (layout == InspectorLayout::Invalid) { return SelectionEntityTypeInfo::Mixed; } @@ -1138,7 +1172,8 @@ namespace AzToolsFramework } } - bool isLevelLayout = GetCurrentInspectorLayout() == InspectorLayout::LEVEL; + bool isLevelLayout = GetCurrentInspectorLayout() == InspectorLayout::Level; + bool isContainerOfFocusedPrefabLayout = GetCurrentInspectorLayout() == InspectorLayout::ContainerEntityOfFocusedPrefab; m_gui->m_entityDetailsLabel->setText(entityDetailsLabelText); m_gui->m_entityDetailsLabel->setVisible(entityDetailsVisible); @@ -1146,10 +1181,14 @@ namespace AzToolsFramework m_gui->m_entityNameLabel->setVisible(hasEntitiesDisplayed); m_gui->m_entityIcon->setVisible(hasEntitiesDisplayed); m_gui->m_pinButton->setVisible(m_overrideSelectedEntityIds.empty() && hasEntitiesDisplayed && !m_isSystemEntityEditor); - m_gui->m_statusLabel->setVisible(hasEntitiesDisplayed && !m_isSystemEntityEditor && !isLevelLayout); - m_gui->m_statusComboBox->setVisible(hasEntitiesDisplayed && !m_isSystemEntityEditor && !isLevelLayout); - m_gui->m_entityIdLabel->setVisible(hasEntitiesDisplayed && !m_isSystemEntityEditor && !isLevelLayout); - m_gui->m_entityIdText->setVisible(hasEntitiesDisplayed && !m_isSystemEntityEditor && !isLevelLayout); + m_gui->m_statusLabel->setVisible( + hasEntitiesDisplayed && !m_isSystemEntityEditor && !isLevelLayout); + m_gui->m_statusComboBox->setVisible( + hasEntitiesDisplayed && !m_isSystemEntityEditor && !isLevelLayout); + m_gui->m_entityIdLabel->setVisible( + hasEntitiesDisplayed && !m_isSystemEntityEditor && !isLevelLayout); + m_gui->m_entityIdText->setVisible( + hasEntitiesDisplayed && !m_isSystemEntityEditor && !isLevelLayout); bool displayComponentSearchBox = hasEntitiesDisplayed; if (hasEntitiesDisplayed) @@ -1157,7 +1196,9 @@ namespace AzToolsFramework // Build up components to display SharedComponentArray sharedComponentArray; BuildSharedComponentArray(sharedComponentArray, - !(selectionEntityTypeInfo == SelectionEntityTypeInfo::OnlyStandardEntities || selectionEntityTypeInfo == SelectionEntityTypeInfo::OnlyPrefabEntities)); + !(selectionEntityTypeInfo == SelectionEntityTypeInfo::OnlyStandardEntities || + selectionEntityTypeInfo == SelectionEntityTypeInfo::OnlyPrefabEntities) || + selectionEntityTypeInfo == SelectionEntityTypeInfo::ContainerEntityOfFocusedPrefab); if (sharedComponentArray.size() == 0) { @@ -1173,7 +1214,8 @@ namespace AzToolsFramework UpdateEntityDisplay(); } - m_gui->m_darkBox->setVisible(displayComponentSearchBox && !m_isSystemEntityEditor && !isLevelLayout); + m_gui->m_darkBox->setVisible( + displayComponentSearchBox && !m_isSystemEntityEditor && !isLevelLayout && !isContainerOfFocusedPrefabLayout); m_gui->m_entitySearchBox->setVisible(displayComponentSearchBox); bool displayAddComponentMenu = CanAddComponentsToSelection(selectionEntityTypeInfo); @@ -4663,13 +4705,6 @@ namespace AzToolsFramework { if (mimeData->hasFormat(AssetBrowser::AssetBrowserEntry::GetMimeType())) { - // extra special case: MTLs from FBX drags are ignored. are we dragging a FBX file? - bool isDraggingFBXFile = false; - AssetBrowser::AssetBrowserEntry::ForEachEntryInMimeData(mimeData, [&](const AssetBrowser::SourceAssetBrowserEntry* source) - { - isDraggingFBXFile = isDraggingFBXFile || AzFramework::StringFunc::Equal(source->GetExtension().c_str(), ".fbx", false); - }); - // the usual case - we only allow asset browser drops of assets that have actually been associated with a kind of component. AssetBrowser::AssetBrowserEntry::ForEachEntryInMimeData(mimeData, [&](const AssetBrowser::ProductAssetBrowserEntry* product) { @@ -4681,17 +4716,7 @@ namespace AzToolsFramework if (canCreateComponent && !componentTypeId.IsNull()) { - // we have a component type that handles this asset. - // but we disallow it if its a MTL file from a FBX and the FBX itself is being dragged. Its still allowed - // to drag the actual MTL. - EBusFindAssetTypeByName materialAssetTypeResult("Material"); - AZ::AssetTypeInfoBus::BroadcastResult(materialAssetTypeResult, &AZ::AssetTypeInfo::GetAssetType); - AZ::Data::AssetType materialAssetType = materialAssetTypeResult.GetAssetType(); - - if ((!isDraggingFBXFile) || (product->GetAssetType() != materialAssetType)) - { - callbackFunction(product); - } + callbackFunction(product); } }); } diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/EntityPropertyEditor.hxx b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/EntityPropertyEditor.hxx index 5279cefa9f..8dd0ffc4ee 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/EntityPropertyEditor.hxx +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/EntityPropertyEditor.hxx @@ -354,7 +354,8 @@ namespace AzToolsFramework OnlyLayerEntities, OnlyPrefabEntities, Mixed, - LevelEntity + LevelEntity, + ContainerEntityOfFocusedPrefab }; /** * Returns what kinds of entities are in the current selection. This is used because mixed selection @@ -364,7 +365,7 @@ namespace AzToolsFramework SelectionEntityTypeInfo GetSelectionEntityTypeInfo(const EntityIdList& selection) const; /** - * Returns true if a selection matching the passed in selection informatation allows components to be added. + * Returns true if a selection matching the passed in selection information allows components to be added. */ bool CanAddComponentsToSelection(const SelectionEntityTypeInfo& selectionEntityTypeInfo) const; @@ -581,9 +582,10 @@ namespace AzToolsFramework enum class InspectorLayout { - ENTITY = 0, // All selected entities are regular entities - LEVEL, // The selected entity is the level prefab container entity - INVALID // Other entities are selected alongside the level prefab container entity + Entity = 0, // All selected entities are regular entities. + Level, // The selected entity is the prefab container entity for the level prefab, or the slice level entity. + ContainerEntityOfFocusedPrefab, // The selected entity is the prefab container entity for the focused prefab. + Invalid // Other entities are selected alongside the level prefab container entity. }; InspectorLayout GetCurrentInspectorLayout() const; diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.cpp index 24b2c7466e..70e5aafe8a 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.cpp @@ -527,8 +527,8 @@ namespace AzToolsFramework m_errorButton = nullptr; } } - - void PropertyAssetCtrl::UpdateErrorButton(const AZStd::string& errorLog) + + void PropertyAssetCtrl::UpdateErrorButton() { if (m_errorButton) { @@ -543,12 +543,17 @@ namespace AzToolsFramework m_errorButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); m_errorButton->setFixedSize(QSize(16, 16)); m_errorButton->setMouseTracking(true); - m_errorButton->setIcon(QIcon("Icons/PropertyEditor/error_icon.png")); + m_errorButton->setIcon(QIcon(":/PropertyEditor/Resources/error_icon.png")); m_errorButton->setToolTip("Show Errors"); // Insert the error button after the asset label qobject_cast(layout())->insertWidget(1, m_errorButton); } + } + + void PropertyAssetCtrl::UpdateErrorButtonWithLog(const AZStd::string& errorLog) + { + UpdateErrorButton(); // Connect pressed to opening the error dialog // Must capture this for call to QObject::connect @@ -587,6 +592,21 @@ namespace AzToolsFramework logDialog->show(); }); } + + void PropertyAssetCtrl::UpdateErrorButtonWithMessage(const AZStd::string& message) + { + UpdateErrorButton(); + + connect(m_errorButton, &QPushButton::clicked, this, [this, message]() { + QMessageBox::critical(nullptr, "Error", message.c_str()); + + // Without this, the error button would maintain focus after clicking, which left the red error icon in a blue-highlighted state + if (parentWidget()) + { + parentWidget()->setFocus(); + } + }); + } void PropertyAssetCtrl::ClearAssetInternal() { @@ -960,7 +980,6 @@ namespace AzToolsFramework else { const AZ::Data::AssetId assetID = GetCurrentAssetID(); - m_currentAssetHint = ""; AZ::Outcome jobOutcome = AZ::Failure(); AssetSystemJobRequestBus::BroadcastResult(jobOutcome, &AssetSystemJobRequestBus::Events::GetAssetJobsInfoByAssetID, assetID, false, false); @@ -1018,7 +1037,7 @@ namespace AzToolsFramework // In case of failure, render failure icon case AssetSystem::JobStatus::Failed: { - UpdateErrorButton(errorLog); + UpdateErrorButtonWithLog(errorLog); } break; @@ -1043,6 +1062,10 @@ namespace AzToolsFramework m_currentAssetHint = assetPath; } } + else + { + UpdateErrorButtonWithMessage(AZStd::string::format("Asset is missing.\n\nID: %s\nHint:%s", assetID.ToString().c_str(), GetCurrentAssetHint().c_str())); + } } // Get the asset file name @@ -1072,10 +1095,10 @@ namespace AzToolsFramework RefreshAutocompleter(); } - // When focus is lost, clear the field if necessary + // When focus is lost, revert to the selected asset if (!focus && m_incompleteFilename) { - HandleFieldClear(); + SetSelectedAssetID(GetCurrentAssetID()); } } diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.hxx b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.hxx index 0b98278bc5..58ddbb967e 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.hxx +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.hxx @@ -168,7 +168,9 @@ namespace AzToolsFramework bool IsCorrectMimeData(const QMimeData* pData, AZ::Data::AssetId* pAssetId = nullptr, AZ::Data::AssetType* pAssetType = nullptr) const; void ClearErrorButton(); - void UpdateErrorButton(const AZStd::string& errorLog); + void UpdateErrorButton(); + void UpdateErrorButtonWithLog(const AZStd::string& errorLog); + void UpdateErrorButtonWithMessage(const AZStd::string& message); virtual const AZStd::string GetFolderSelection() const { return AZStd::string(); } virtual void SetFolderSelection(const AZStd::string& /* folderPath */) {} virtual void ClearAssetInternal(); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UnitTest/AzToolsFrameworkTestHelpers.h b/Code/Framework/AzToolsFramework/AzToolsFramework/UnitTest/AzToolsFrameworkTestHelpers.h index 4a7039423c..1e29f1dbce 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UnitTest/AzToolsFrameworkTestHelpers.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UnitTest/AzToolsFrameworkTestHelpers.h @@ -158,7 +158,10 @@ namespace UnitTest { // Create & Start a new ToolsApplication if there's no existing one m_app = CreateTestApplication(); - m_app->Start(AzFramework::Application::Descriptor()); + AZ::ComponentApplication::StartupParameters startupParameters; + startupParameters.m_loadAssetCatalog = false; + + m_app->Start(AzFramework::Application::Descriptor(), startupParameters); } // without this, the user settings component would attempt to save on finalize/shutdown. Since the file is diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Viewport/ViewportMessages.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Viewport/ViewportMessages.cpp index e3b45aca2b..8f8bd3e3f9 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Viewport/ViewportMessages.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Viewport/ViewportMessages.cpp @@ -6,6 +6,7 @@ * */ +#include #include namespace AzToolsFramework @@ -62,4 +63,33 @@ namespace AzToolsFramework return circleBoundWidth; } + + AZ::Vector3 FindClosestPickIntersection( + AzFramework::ViewportId viewportId, const AzFramework::ScreenPoint& screenPoint, const float rayLength, const float defaultDistance) + { + using AzToolsFramework::ViewportInteraction::ViewportInteractionRequestBus; + AzToolsFramework::ViewportInteraction::ProjectedViewportRay viewportRay{}; + ViewportInteractionRequestBus::EventResult( + viewportRay, viewportId, &ViewportInteractionRequestBus::Events::ViewportScreenToWorldRay, screenPoint); + + AzFramework::RenderGeometry::RayRequest ray; + ray.m_startWorldPosition = viewportRay.origin; + ray.m_endWorldPosition = viewportRay.origin + viewportRay.direction * rayLength; + ray.m_onlyVisible = true; + + AzFramework::RenderGeometry::RayResult renderGeometryIntersectionResult; + AzFramework::RenderGeometry::IntersectorBus::EventResult( + renderGeometryIntersectionResult, AzToolsFramework::GetEntityContextId(), + &AzFramework::RenderGeometry::IntersectorBus::Events::RayIntersect, ray); + + // attempt a ray intersection with any visible mesh and return the intersection position if successful + if (renderGeometryIntersectionResult) + { + return renderGeometryIntersectionResult.m_worldPosition; + } + else + { + return viewportRay.origin + viewportRay.direction * defaultDistance; + } + } } // namespace AzToolsFramework diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Viewport/ViewportMessages.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Viewport/ViewportMessages.h index 8ec772f0da..aa97eb361e 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Viewport/ViewportMessages.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Viewport/ViewportMessages.h @@ -162,12 +162,11 @@ namespace AzToolsFramework //! Multiply by DeviceScalingFactor to get the position in viewport pixel space. virtual AzFramework::ScreenPoint ViewportWorldToScreen(const AZ::Vector3& worldPosition) = 0; //! Transforms a point from Qt widget screen space to world space based on the given clip space depth. - //! Depth specifies a relative camera depth to project in the range of [0.f, 1.f]. //! Returns the world space position if successful. - virtual AZStd::optional ViewportScreenToWorld(const AzFramework::ScreenPoint& screenPosition, float depth) = 0; + virtual AZ::Vector3 ViewportScreenToWorld(const AzFramework::ScreenPoint& screenPosition) = 0; //! Casts a point in screen space to a ray in world space originating from the viewport camera frustum's near plane. //! Returns a ray containing the ray's origin and a direction normal, if successful. - virtual AZStd::optional ViewportScreenToWorldRay(const AzFramework::ScreenPoint& screenPosition) = 0; + virtual ProjectedViewportRay ViewportScreenToWorldRay(const AzFramework::ScreenPoint& screenPosition) = 0; //! Gets the DPI scaling factor that translates Qt widget space into viewport pixel space. virtual float DeviceScalingFactor() = 0; @@ -229,9 +228,6 @@ namespace AzToolsFramework class MainEditorViewportInteractionRequests { public: - //! Given a point in screen space, return the picked entity (if any). - //! Picked EntityId will be returned, InvalidEntityId will be returned on failure. - virtual AZ::EntityId PickEntity(const AzFramework::ScreenPoint& point) = 0; //! Given a point in screen space, return the terrain position in world space. virtual AZ::Vector3 PickTerrain(const AzFramework::ScreenPoint& point) = 0; //! Return the terrain height given a world position in 2d (xy plane). @@ -266,7 +262,6 @@ namespace AzToolsFramework { public: static const AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::Single; - static const AZ::EBusHandlerPolicy HandlerPolicy = AZ::EBusHandlerPolicy::Single; //! Returns the current state of the keyboard modifier keys. virtual KeyboardModifiers QueryKeyboardModifiers() = 0; @@ -290,7 +285,6 @@ namespace AzToolsFramework { public: static const AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::Single; - static const AZ::EBusHandlerPolicy HandlerPolicy = AZ::EBusHandlerPolicy::Single; //! Returns the current time in seconds. //! This interface can be overridden for the purposes of testing to simplify viewport input requests. @@ -340,6 +334,12 @@ namespace AzToolsFramework return entityContextId; } + //! Performs an intersection test against meshes in the scene, if there is a hit (the ray intersects + //! a mesh), that position is returned, otherwise a point projected defaultDistance from the + //! origin of the ray will be returned. + AZ::Vector3 FindClosestPickIntersection( + AzFramework::ViewportId viewportId, const AzFramework::ScreenPoint& screenPoint, float rayLength, float defaultDistance); + //! Maps a mouse interaction event to a ClickDetector event. //! @note Function only cares about up or down events, all other events are mapped to Nil (ignored). AzFramework::ClickDetector::ClickEvent ClickDetectorEventFromViewportInteraction( diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorHelpers.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorHelpers.cpp index 0f94b95e5f..ee30b9e29d 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorHelpers.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorHelpers.cpp @@ -148,7 +148,6 @@ namespace AzToolsFramework return false; } - EditorHelpers::EditorHelpers(const EditorVisibleEntityDataCache* entityDataCache) : m_entityDataCache(entityDataCache) { @@ -190,7 +189,10 @@ namespace AzToolsFramework if (helpersVisible) { // some components choose to hide their icons (e.g. meshes) - if (!m_entityDataCache->IsVisibleEntityIconHidden(entityCacheIndex)) + // we also do not want to test against icons that may not be showing as they're inside a 'closed' entity container + // (these icons only become visible when it is opened for editing) + if (!m_entityDataCache->IsVisibleEntityIconHidden(entityCacheIndex) && + m_entityDataCache->IsVisibleEntityIndividuallySelectableInViewport(entityCacheIndex)) { const AZ::Vector3& entityPosition = m_entityDataCache->GetVisibleEntityPosition(entityCacheIndex); @@ -235,7 +237,7 @@ namespace AzToolsFramework viewportId, &ViewportInteraction::ViewportMouseCursorRequestBus::Events::SetOverrideCursor, ViewportInteraction::CursorStyleOverride::Forbidden); } - + if (mouseInteraction.m_mouseInteraction.m_mouseButtons.Left() && mouseInteraction.m_mouseEvent == ViewportInteraction::MouseEvent::Down || mouseInteraction.m_mouseEvent == ViewportInteraction::MouseEvent::DoubleClick) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorSelectionUtil.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorSelectionUtil.cpp index a5ef66e7a3..0a7bed6b18 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorSelectionUtil.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorSelectionUtil.cpp @@ -18,9 +18,6 @@ namespace AzToolsFramework { - // default ray length for picking in the viewport - static const float EditorPickRayLength = 1000.0f; - AZ::Vector3 CalculateCenterOffset(const AZ::EntityId entityId, const EditorTransformComponentSelectionRequests::Pivot pivot) { if (Centered(pivot)) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorSelectionUtil.h b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorSelectionUtil.h index d58549b329..5c9f47fdd3 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorSelectionUtil.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorSelectionUtil.h @@ -26,6 +26,9 @@ namespace AzFramework namespace AzToolsFramework { + //! Default ray length for picking in the viewport. + inline constexpr float EditorPickRayLength = 1000.0f; + //! Is the pivot at the center of the object (middle of extents) or at the //! exported authored object root position. inline bool Centered(const EditorTransformComponentSelectionRequests::Pivot pivot) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp index 39c882b766..9ac28cfd91 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp @@ -27,7 +27,9 @@ #include #include #include +#include #include +#include #include #include #include @@ -408,7 +410,7 @@ namespace AzToolsFramework const AzFramework::CameraState cameraState = GetCameraState(viewportId); for (size_t entityCacheIndex = 0; entityCacheIndex < entityDataCache.VisibleEntityDataCount(); ++entityCacheIndex) { - if (!entityDataCache.IsVisibleEntitySelectableInViewport(entityCacheIndex)) + if (!entityDataCache.IsVisibleEntityIndividuallySelectableInViewport(entityCacheIndex)) { continue; } @@ -982,7 +984,7 @@ namespace AzToolsFramework { if (auto entityIndex = entityDataCache.GetVisibleEntityIndexFromId(entityId)) { - if (entityDataCache.IsVisibleEntitySelectableInViewport(*entityIndex)) + if (entityDataCache.IsVisibleEntityIndividuallySelectableInViewport(*entityIndex)) { return *entityIndex; } @@ -1013,6 +1015,15 @@ namespace AzToolsFramework ToolsApplicationNotificationBus::Broadcast(&ToolsApplicationNotificationBus::Events::InvalidatePropertyDisplay, Refresh_Values); } + // leaves focus mode by focusing on the parent of the current perfab in the entity outliner + static void LeaveFocusMode() + { + if (auto prefabFocusPublicInterface = AZ::Interface::Get()) + { + prefabFocusPublicInterface->FocusOnParentOfFocusedPrefab(GetEntityContextId()); + } + } + EditorTransformComponentSelection::EditorTransformComponentSelection(const EditorVisibleEntityDataCache* entityDataCache) : m_entityDataCache(entityDataCache) { @@ -1177,8 +1188,10 @@ namespace AzToolsFramework continue; } - const AZ::Aabb bound = CalculateEditorEntitySelectionBounds(entityId, viewportInfo); - debugDisplay.DrawSolidBox(bound.GetMin(), bound.GetMax()); + if (const AZ::Aabb bound = CalculateEditorEntitySelectionBounds(entityId, viewportInfo); bound.IsValid()) + { + debugDisplay.DrawSolidBox(bound.GetMin(), bound.GetMax()); + } } debugDisplay.DepthTestOn(); @@ -1334,39 +1347,6 @@ namespace AzToolsFramework EndRecordManipulatorCommand(); }); - // surface - translationManipulators->InstallSurfaceManipulatorMouseDownCallback( - [this, manipulatorEntityIds]([[maybe_unused]] const SurfaceManipulator::Action& action) - { - BuildSortedEntityIdVectorFromEntityIdMap(m_entityIdManipulators.m_lookups, manipulatorEntityIds->m_entityIds); - - InitializeTranslationLookup(m_entityIdManipulators); - - m_axisPreview.m_translation = m_entityIdManipulators.m_manipulators->GetLocalTransform().GetTranslation(); - m_axisPreview.m_orientation = QuaternionFromTransformNoScaling(m_entityIdManipulators.m_manipulators->GetLocalTransform()); - - // [ref 1.] - BeginRecordManipulatorCommand(); - }); - - translationManipulators->InstallSurfaceManipulatorMouseMoveCallback( - [this, prevModifiers, manipulatorEntityIds](const SurfaceManipulator::Action& action) mutable - { - UpdateTranslationManipulator( - action, manipulatorEntityIds->m_entityIds, m_entityIdManipulators, m_pivotOverrideFrame, prevModifiers, - m_transformChangedInternally, m_spaceCluster.m_spaceLock); - }); - - translationManipulators->InstallSurfaceManipulatorMouseUpCallback( - [this, manipulatorEntityIds]([[maybe_unused]] const SurfaceManipulator::Action& action) - { - AzToolsFramework::EditorTransformChangeNotificationBus::Broadcast( - &AzToolsFramework::EditorTransformChangeNotificationBus::Events::OnEntityTransformChanged, - manipulatorEntityIds->m_entityIds); - - EndRecordManipulatorCommand(); - }); - // transfer ownership m_entityIdManipulators.m_manipulators = AZStd::move(translationManipulators); } @@ -3604,6 +3584,16 @@ namespace AzToolsFramework m_selectedEntityIds.clear(); m_selectedEntityIds.reserve(selectedEntityIds.size()); AZStd::copy(selectedEntityIds.begin(), selectedEntityIds.end(), AZStd::inserter(m_selectedEntityIds, m_selectedEntityIds.end())); + + // Do not create manipulators for the container entity of the focused prefab. + if (auto prefabFocusPublicInterface = AZ::Interface::Get()) + { + AzFramework::EntityContextId editorEntityContextId = GetEntityContextId(); + if (AZ::EntityId focusRoot = prefabFocusPublicInterface->GetFocusedPrefabContainerEntityId(editorEntityContextId); focusRoot.IsValid()) + { + m_selectedEntityIds.erase(focusRoot); + } + } } void EditorTransformComponentSelection::OnTransformChanged( @@ -3694,7 +3684,8 @@ namespace AzToolsFramework case ViewportEditorMode::Focus: { ViewportUi::ViewportUiRequestBus::Event( - ViewportUi::DefaultViewportId, &ViewportUi::ViewportUiRequestBus::Events::CreateViewportBorder, "Focus Mode"); + ViewportUi::DefaultViewportId, &ViewportUi::ViewportUiRequestBus::Events::CreateViewportBorder, "Focus Mode", + LeaveFocusMode); } break; case ViewportEditorMode::Default: @@ -3723,12 +3714,14 @@ namespace AzToolsFramework if (editorModeState.IsModeActive(ViewportEditorMode::Focus)) { ViewportUi::ViewportUiRequestBus::Event( - ViewportUi::DefaultViewportId, &ViewportUi::ViewportUiRequestBus::Events::CreateViewportBorder, "Focus Mode"); + ViewportUi::DefaultViewportId, &ViewportUi::ViewportUiRequestBus::Events::CreateViewportBorder, "Focus Mode", + LeaveFocusMode); } } break; case ViewportEditorMode::Focus: { + ViewportUi::ViewportUiRequestBus::Event( ViewportUi::DefaultViewportId, &ViewportUi::ViewportUiRequestBus::Events::RemoveViewportBorder); } diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorVisibleEntityDataCache.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorVisibleEntityDataCache.cpp index 328cfc3ae5..58c25b944c 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorVisibleEntityDataCache.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorVisibleEntityDataCache.cpp @@ -293,12 +293,10 @@ namespace AzToolsFramework return m_impl->m_visibleEntityDatas[index].m_iconHidden; } - bool EditorVisibleEntityDataCache::IsVisibleEntitySelectableInViewport(size_t index) const + bool EditorVisibleEntityDataCache::IsVisibleEntityIndividuallySelectableInViewport(const size_t index) const { - return m_impl->m_visibleEntityDatas[index].m_visible - && !m_impl->m_visibleEntityDatas[index].m_locked - && m_impl->m_visibleEntityDatas[index].m_inFocus - && !m_impl->m_visibleEntityDatas[index].m_descendantOfClosedContainer; + return m_impl->m_visibleEntityDatas[index].m_visible && !m_impl->m_visibleEntityDatas[index].m_locked && + m_impl->m_visibleEntityDatas[index].m_inFocus && !m_impl->m_visibleEntityDatas[index].m_descendantOfClosedContainer; } AZStd::optional EditorVisibleEntityDataCache::GetVisibleEntityIndexFromId(const AZ::EntityId entityId) const diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorVisibleEntityDataCache.h b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorVisibleEntityDataCache.h index 16fa1b6d14..4262d334df 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorVisibleEntityDataCache.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorVisibleEntityDataCache.h @@ -55,7 +55,10 @@ namespace AzToolsFramework bool IsVisibleEntityVisible(size_t index) const; bool IsVisibleEntitySelected(size_t index) const; bool IsVisibleEntityIconHidden(size_t index) const; - bool IsVisibleEntitySelectableInViewport(size_t index) const; + //! Returns true if the entity is individually selectable (none of its ancestors are a closed container entity). + //! @note It may still be desirable to be able to 'click' an entity that is a descendant of a closed container + //! to select the container itself, not the individual entity. + bool IsVisibleEntityIndividuallySelectableInViewport(size_t index) const; AZStd::optional GetVisibleEntityIndexFromId(AZ::EntityId entityId) const; diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiCluster.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiCluster.cpp index bc299f9985..365ba237db 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiCluster.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiCluster.cpp @@ -62,9 +62,6 @@ namespace AzToolsFramework::ViewportUi::Internal return; } - // set hover to true by default - action->setProperty("IconHasHoverEffect", true); - // add the action addAction(action); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiDisplay.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiDisplay.cpp index b948a18578..c1bddbe3c3 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiDisplay.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiDisplay.cpp @@ -20,7 +20,9 @@ namespace AzToolsFramework::ViewportUi::Internal { const static int HighlightBorderSize = 5; - const static char* HighlightBorderColor = "#4A90E2"; + const static char* const HighlightBorderColor = "#4A90E2"; + const static int HighlightBorderBackButtonIconSize = 20; + const static char* const HighlightBorderBackButtonIconFile = "X_axis.svg"; static void UnparentWidgets(ViewportUiElementIdInfoLookup& viewportUiElementIdInfoLookup) { @@ -62,6 +64,7 @@ namespace AzToolsFramework::ViewportUi::Internal , m_fullScreenLayout(&m_uiOverlay) , m_uiOverlayLayout() , m_viewportBorderText(&m_uiOverlay) + , m_viewportBorderBackButton(&m_uiOverlay) { } @@ -254,7 +257,7 @@ namespace AzToolsFramework::ViewportUi::Internal auto viewportUiMapElement = m_viewportUiElements.find(elementId); if (viewportUiMapElement != m_viewportUiElements.end()) { - viewportUiMapElement->second.m_widget->setVisible(false); + viewportUiMapElement->second.m_widget->hide(); viewportUiMapElement->second.m_widget->setParent(nullptr); m_viewportUiElements.erase(viewportUiMapElement); } @@ -269,7 +272,7 @@ namespace AzToolsFramework::ViewportUi::Internal { if (ViewportUiElementInfo element = GetViewportUiElementInfo(elementId); element.m_widget) { - element.m_widget->setVisible(true); + element.m_widget->show(); } } @@ -277,7 +280,7 @@ namespace AzToolsFramework::ViewportUi::Internal { if (ViewportUiElementInfo element = GetViewportUiElementInfo(elementId); element.m_widget) { - element.m_widget->setVisible(false); + element.m_widget->hide(); } } @@ -291,27 +294,34 @@ namespace AzToolsFramework::ViewportUi::Internal return false; } - void ViewportUiDisplay::CreateViewportBorder(const AZStd::string& borderTitle) + void ViewportUiDisplay::CreateViewportBorder( + const AZStd::string& borderTitle, AZStd::optional backButtonCallback) { - const AZStd::string styleSheet = AZStd::string::format( - "border: %dpx solid %s; border-top: %dpx solid %s;", HighlightBorderSize, HighlightBorderColor, ViewportUiTopBorderSize, - HighlightBorderColor); - m_uiOverlay.setStyleSheet(styleSheet.c_str()); + m_uiOverlay.setStyleSheet(QString("border: %1px solid %2; border-top: %3px solid %4;") + .arg( + QString::number(HighlightBorderSize), HighlightBorderColor, + QString::number(ViewportUiTopBorderSize), HighlightBorderColor)); m_uiOverlayLayout.setContentsMargins( HighlightBorderSize + ViewportUiOverlayMargin, ViewportUiTopBorderSize + ViewportUiOverlayMargin, HighlightBorderSize + ViewportUiOverlayMargin, HighlightBorderSize + ViewportUiOverlayMargin); - m_viewportBorderText.setVisible(true); + m_viewportBorderText.show(); m_viewportBorderText.setText(borderTitle.c_str()); UpdateUiOverlayGeometry(); + + // only display the back button if a callback was provided + m_viewportBorderBackButtonCallback = backButtonCallback; + m_viewportBorderBackButton.setVisible(m_viewportBorderBackButtonCallback.has_value()); } void ViewportUiDisplay::RemoveViewportBorder() { - m_viewportBorderText.setVisible(false); + m_viewportBorderText.hide(); m_uiOverlay.setStyleSheet("border: none;"); m_uiOverlayLayout.setContentsMargins( ViewportUiOverlayMargin, ViewportUiOverlayMargin + ViewportUiOverlayTopMarginPadding, ViewportUiOverlayMargin, ViewportUiOverlayMargin); + m_viewportBorderBackButtonCallback.reset(); + m_viewportBorderBackButton.hide(); } void ViewportUiDisplay::PositionViewportUiElementFromWorldSpace(ViewportUiElementId elementId, const AZ::Vector3& pos) @@ -350,23 +360,46 @@ namespace AzToolsFramework::ViewportUi::Internal { m_uiMainWindow.setObjectName(QString("ViewportUiWindow")); ConfigureWindowForViewportUi(&m_uiMainWindow); - m_uiMainWindow.setVisible(false); + m_uiMainWindow.hide(); m_uiOverlay.setObjectName(QString("ViewportUiOverlay")); m_uiMainWindow.setCentralWidget(&m_uiOverlay); - m_uiOverlay.setVisible(false); + m_uiOverlay.hide(); // remove any spacing and margins from the UI Overlay Layout m_fullScreenLayout.setSpacing(0); m_fullScreenLayout.setContentsMargins(0, 0, 0, 0); m_fullScreenLayout.addLayout(&m_uiOverlayLayout, 0, 0, 1, 1); - // format the label which will appear on top of the highlight border - AZStd::string styleSheet = AZStd::string::format("background-color: %s; border: none;", HighlightBorderColor); - m_viewportBorderText.setStyleSheet(styleSheet.c_str()); + // style the label which will appear on top of the highlight border + m_viewportBorderText.setStyleSheet(QString("background-color: %1; border: none").arg(HighlightBorderColor)); m_viewportBorderText.setFixedHeight(ViewportUiTopBorderSize); - m_viewportBorderText.setVisible(false); + m_viewportBorderText.hide(); m_fullScreenLayout.addWidget(&m_viewportBorderText, 0, 0, Qt::AlignTop | Qt::AlignHCenter); + + m_viewportBorderBackButton.setAutoRaise(true); // hover highlight + m_viewportBorderBackButton.hide(); + + QIcon backButtonIcon(QString(":/stylesheet/img/UI20/toolbar/%1").arg(HighlightBorderBackButtonIconFile)); + m_viewportBorderBackButton.setIcon(backButtonIcon); + m_viewportBorderBackButton.setIconSize(QSize(HighlightBorderBackButtonIconSize, HighlightBorderBackButtonIconSize)); + + // setup the handler for the back button to call the user provided callback (if any) + QObject::connect( + &m_viewportBorderBackButton, &QToolButton::clicked, + [this] + { + if (m_viewportBorderBackButtonCallback.has_value()) + { + // we need to swap out the existing back button callback because it will be reset in RemoveViewportBorder() + // so preserve the lifetime with this temporary callback until after the call to RemoveViewportBorder() + AZStd::optional backButtonCallback; + m_viewportBorderBackButtonCallback.swap(backButtonCallback); + RemoveViewportBorder(); + (*backButtonCallback)(); + } + }); + m_fullScreenLayout.addWidget(&m_viewportBorderBackButton, 0, 0, Qt::AlignTop | Qt::AlignRight); } void ViewportUiDisplay::PrepareWidgetForViewportUi(QPointer widget) @@ -414,16 +447,9 @@ namespace AzToolsFramework::ViewportUi::Internal region += m_uiOverlay.childrenRegion(); // set viewport ui visibility depending on if elements are present - if (region.isEmpty() || !UiDisplayEnabled()) - { - m_uiMainWindow.setVisible(false); - m_uiOverlay.setVisible(false); - } - else - { - m_uiMainWindow.setVisible(true); - m_uiOverlay.setVisible(true); - } + const bool visible = !region.isEmpty() && UiDisplayEnabled(); + m_uiMainWindow.setVisible(visible); + m_uiOverlay.setVisible(visible); m_uiMainWindow.setMask(region); } diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiDisplay.h b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiDisplay.h index 32b746a1ac..dba0f25830 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiDisplay.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiDisplay.h @@ -17,6 +17,7 @@ #include #include #include +#include AZ_PUSH_DISABLE_WARNING(4251, "-Wunknown-warning-option") #include @@ -89,7 +90,7 @@ namespace AzToolsFramework::ViewportUi::Internal AZStd::shared_ptr GetViewportUiElement(ViewportUiElementId elementId); bool IsViewportUiElementVisible(ViewportUiElementId elementId); - void CreateViewportBorder(const AZStd::string& borderTitle); + void CreateViewportBorder(const AZStd::string& borderTitle, AZStd::optional backButtonCallback); void RemoveViewportBorder(); private: @@ -113,7 +114,10 @@ namespace AzToolsFramework::ViewportUi::Internal QWidget m_uiOverlay; //!< The UI Overlay which displays Viewport UI Elements. QGridLayout m_fullScreenLayout; //!< The layout which extends across the full screen. ViewportUiDisplayLayout m_uiOverlayLayout; //!< The layout used for optionally anchoring Viewport UI Elements. - QLabel m_viewportBorderText; //!< The text used for the viewport border. + QLabel m_viewportBorderText; //!< The text used for the viewport highlight border. + QToolButton m_viewportBorderBackButton; //!< The button to return from the viewport highlight border (only displayed if callback provided). + //! The optional callback for when the viewport highlight border back button is pressed. + AZStd::optional m_viewportBorderBackButtonCallback; QWidget* m_renderOverlay; QPointer m_fullScreenWidget; //!< Reference to the widget attached to m_fullScreenLayout if any. diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiManager.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiManager.cpp index 1f14b12b7d..143da34074 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiManager.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiManager.cpp @@ -240,9 +240,10 @@ namespace AzToolsFramework::ViewportUi } } - void ViewportUiManager::CreateViewportBorder(const AZStd::string& borderTitle) + void ViewportUiManager::CreateViewportBorder( + const AZStd::string& borderTitle, AZStd::optional backButtonCallback) { - m_viewportUi->CreateViewportBorder(borderTitle); + m_viewportUi->CreateViewportBorder(borderTitle, backButtonCallback); } void ViewportUiManager::RemoveViewportBorder() diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiManager.h b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiManager.h index ce7e5aafe9..54f1eb5a57 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiManager.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiManager.h @@ -50,7 +50,8 @@ namespace AzToolsFramework::ViewportUi void RegisterTextFieldCallback(TextFieldId textFieldId, AZ::Event::Handler& handler) override; void RemoveTextField(TextFieldId textFieldId) override; void SetTextFieldVisible(TextFieldId textFieldId, bool visible) override; - void CreateViewportBorder(const AZStd::string& borderTitle) override; + void CreateViewportBorder( + const AZStd::string& borderTitle, AZStd::optional backButtonCallback) override; void RemoveViewportBorder() override; void PressButton(ClusterId clusterId, ButtonId buttonId) override; void PressButton(SwitcherId switcherId, ButtonId buttonId) override; diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiRequestBus.h b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiRequestBus.h index 3c6f7094cb..9ac6feb8c8 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiRequestBus.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiRequestBus.h @@ -22,6 +22,9 @@ namespace AzToolsFramework::ViewportUi using SwitcherId = IdType; using TextFieldId = IdType; + //! Callback function for viewport UI back button. + using ViewportUiBackButtonCallback = AZStd::function; + inline const ViewportUiElementId InvalidViewportUiElementId = ViewportUiElementId(0); inline const ButtonId InvalidButtonId = ButtonId(0); inline const ClusterId InvalidClusterId = ClusterId(0); @@ -95,9 +98,9 @@ namespace AzToolsFramework::ViewportUi virtual void RemoveTextField(TextFieldId textFieldId) = 0; //! Sets the visibility of the text field. virtual void SetTextFieldVisible(TextFieldId textFieldId, bool visible) = 0; - //! Create the highlight border for Component Mode. - virtual void CreateViewportBorder(const AZStd::string& borderTitle) = 0; - //! Remove the highlight border for Component Mode. + //! Create the highlight border with optional back button to exit the given editor mode. + virtual void CreateViewportBorder(const AZStd::string& borderTitle, AZStd::optional backButtonCallback) = 0; + //! Remove the highlight border. virtual void RemoveViewportBorder() = 0; //! Invoke a button press on a cluster. virtual void PressButton(ClusterId clusterId, ButtonId buttonId) = 0; diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiSwitcher.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiSwitcher.cpp index 6b8b1873f7..c4be11ac66 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiSwitcher.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportUi/ViewportUiSwitcher.cpp @@ -22,8 +22,6 @@ namespace AzToolsFramework::ViewportUi::Internal // Add am empty active button (is set in the call to SetActiveMode) m_activeButton = new QToolButton(); - // No hover effect for the main button as it's not clickable - m_activeButton->setProperty("IconHasHoverEffect", false); m_activeButton->setCheckable(false); m_activeButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); addWidget(m_activeButton); @@ -56,9 +54,6 @@ namespace AzToolsFramework::ViewportUi::Internal return; } - // set hover to true by default - action->setProperty("IconHasHoverEffect", true); - // add the action addAction(action); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/aztoolsframework_files.cmake b/Code/Framework/AzToolsFramework/AzToolsFramework/aztoolsframework_files.cmake index 286ef97418..65ef8e34af 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/aztoolsframework_files.cmake +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/aztoolsframework_files.cmake @@ -47,6 +47,7 @@ set(FILES API/EntityCompositionRequestBus.h API/EntityCompositionNotificationBus.h API/EditorViewportIconDisplayInterface.h + API/PythonLoader.h API/ViewPaneOptions.h API/ViewportEditorModeTrackerInterface.h Application/Ticker.h diff --git a/Code/Framework/AzToolsFramework/Platform/Common/Default/AzToolsFramework/API/PythonLoader_Default.cpp b/Code/Framework/AzToolsFramework/Platform/Common/Default/AzToolsFramework/API/PythonLoader_Default.cpp new file mode 100644 index 0000000000..42fef21db6 --- /dev/null +++ b/Code/Framework/AzToolsFramework/Platform/Common/Default/AzToolsFramework/API/PythonLoader_Default.cpp @@ -0,0 +1,20 @@ +/* +* Copyright (c) Contributors to the Open 3D Engine Project. +* For complete copyright and license terms please see the LICENSE at the root of this distribution. +* +* SPDX-License-Identifier: Apache-2.0 OR MIT +* +*/ + +#include + +namespace AzToolsFramework::EmbeddedPython +{ + PythonLoader::PythonLoader() + { + } + + PythonLoader::~PythonLoader() + { + } +} diff --git a/Code/Framework/AzToolsFramework/Platform/Linux/AzToolsFramework/API/PythonLoader_Linux.cpp b/Code/Framework/AzToolsFramework/Platform/Linux/AzToolsFramework/API/PythonLoader_Linux.cpp new file mode 100644 index 0000000000..76fa36a048 --- /dev/null +++ b/Code/Framework/AzToolsFramework/Platform/Linux/AzToolsFramework/API/PythonLoader_Linux.cpp @@ -0,0 +1,34 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include +#include +#include + +namespace AzToolsFramework::EmbeddedPython +{ + PythonLoader::PythonLoader() + { + constexpr char libPythonName[] = "libpython3.7m.so.1.0"; + if (m_embeddedLibPythonHandle = dlopen(libPythonName, RTLD_NOW | RTLD_GLOBAL); + m_embeddedLibPythonHandle == nullptr) + { + char* err = dlerror(); + AZ_Error("PythonLoader", false, "Failed to load %s with error: %s\n", libPythonName, err ? err : "Unknown Error"); + } + } + + PythonLoader::~PythonLoader() + { + if (m_embeddedLibPythonHandle) + { + dlclose(m_embeddedLibPythonHandle); + } + } + +} // namespace AzToolsFramework::EmbeddedPython diff --git a/Code/Framework/AzToolsFramework/Platform/Linux/platform_linux_files.cmake b/Code/Framework/AzToolsFramework/Platform/Linux/platform_linux_files.cmake index c2c5a11c4c..3b04a903a4 100644 --- a/Code/Framework/AzToolsFramework/Platform/Linux/platform_linux_files.cmake +++ b/Code/Framework/AzToolsFramework/Platform/Linux/platform_linux_files.cmake @@ -7,4 +7,5 @@ # set(FILES + AzToolsFramework/API/PythonLoader_Linux.cpp ) diff --git a/Code/Framework/AzToolsFramework/Platform/Mac/platform_mac_files.cmake b/Code/Framework/AzToolsFramework/Platform/Mac/platform_mac_files.cmake index c2c5a11c4c..6342747a38 100644 --- a/Code/Framework/AzToolsFramework/Platform/Mac/platform_mac_files.cmake +++ b/Code/Framework/AzToolsFramework/Platform/Mac/platform_mac_files.cmake @@ -7,4 +7,5 @@ # set(FILES + ../Common/Default/AzToolsFramework/API/PythonLoader_Default.cpp ) diff --git a/Code/Framework/AzToolsFramework/Platform/Windows/platform_windows_files.cmake b/Code/Framework/AzToolsFramework/Platform/Windows/platform_windows_files.cmake index c2c5a11c4c..6342747a38 100644 --- a/Code/Framework/AzToolsFramework/Platform/Windows/platform_windows_files.cmake +++ b/Code/Framework/AzToolsFramework/Platform/Windows/platform_windows_files.cmake @@ -7,4 +7,5 @@ # set(FILES + ../Common/Default/AzToolsFramework/API/PythonLoader_Default.cpp ) diff --git a/Code/Framework/AzToolsFramework/Tests/BoundsTestComponent.cpp b/Code/Framework/AzToolsFramework/Tests/BoundsTestComponent.cpp index 1aa7b39593..fa5a6b344a 100644 --- a/Code/Framework/AzToolsFramework/Tests/BoundsTestComponent.cpp +++ b/Code/Framework/AzToolsFramework/Tests/BoundsTestComponent.cpp @@ -40,6 +40,9 @@ namespace UnitTest { AzFramework::BoundsRequestBus::Handler::BusConnect(GetEntityId()); AzToolsFramework::EditorComponentSelectionRequestsBus::Handler::BusConnect(GetEntityId()); + + // default local bounds to unit cube + m_localBounds = AZ::Aabb::CreateFromMinMax(AZ::Vector3(-0.5f), AZ::Vector3(0.5f)); } void BoundsTestComponent::Deactivate() @@ -57,7 +60,6 @@ namespace UnitTest AZ::Aabb BoundsTestComponent::GetLocalBounds() { - return AZ::Aabb::CreateFromMinMax(AZ::Vector3(-0.5f), AZ::Vector3(0.5f)); + return m_localBounds; } - } // namespace UnitTest diff --git a/Code/Framework/AzToolsFramework/Tests/BoundsTestComponent.h b/Code/Framework/AzToolsFramework/Tests/BoundsTestComponent.h index 036f9c8798..358a9f810a 100644 --- a/Code/Framework/AzToolsFramework/Tests/BoundsTestComponent.h +++ b/Code/Framework/AzToolsFramework/Tests/BoundsTestComponent.h @@ -41,5 +41,7 @@ namespace UnitTest // BoundsRequestBus overrides ... AZ::Aabb GetWorldBounds() override; AZ::Aabb GetLocalBounds() override; + + AZ::Aabb m_localBounds; //!< Local bounds that can be modified for certain tests (defaults to unit cube). }; } // namespace UnitTest diff --git a/Code/Framework/AzToolsFramework/Tests/ComponentAddRemove.cpp b/Code/Framework/AzToolsFramework/Tests/ComponentAddRemove.cpp index 9d6c8a4bff..06353b17c5 100644 --- a/Code/Framework/AzToolsFramework/Tests/ComponentAddRemove.cpp +++ b/Code/Framework/AzToolsFramework/Tests/ComponentAddRemove.cpp @@ -1116,7 +1116,6 @@ namespace UnitTest SerializeContext* GetSerializeContext() override { return m_serializeContext.get(); } BehaviorContext* GetBehaviorContext() override { return nullptr; } JsonRegistrationContext* GetJsonRegistrationContext() override { return nullptr; } - const char* GetAppRoot() const override { return nullptr; } const char* GetEngineRoot() const override { return nullptr; } const char* GetExecutableFolder() const override { return nullptr; } void EnumerateEntities(const EntityCallback& /*callback*/) override {} diff --git a/Code/Framework/AzToolsFramework/Tests/EditorTransformComponentSelectionTests.cpp b/Code/Framework/AzToolsFramework/Tests/EditorTransformComponentSelectionTests.cpp index 81909ac511..4f4c3eb456 100644 --- a/Code/Framework/AzToolsFramework/Tests/EditorTransformComponentSelectionTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/EditorTransformComponentSelectionTests.cpp @@ -38,7 +38,7 @@ #include #include -#include +#include namespace AZ { @@ -493,12 +493,8 @@ namespace UnitTest /////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Then - AzToolsFramework::EntityIdList selectedEntities; - AzToolsFramework::ToolsApplicationRequestBus::BroadcastResult( - selectedEntities, &AzToolsFramework::ToolsApplicationRequestBus::Events::GetSelectedEntities); - - AzToolsFramework::EntityIdList expectedSelectedEntities = { entity4, entity5, entity6 }; - + const AzToolsFramework::EntityIdList selectedEntities = SelectedEntities(); + const AzToolsFramework::EntityIdList expectedSelectedEntities = { entity4, entity5, entity6 }; EXPECT_THAT(selectedEntities, UnorderedElementsAreArray(expectedSelectedEntities)); /////////////////////////////////////////////////////////////////////////////////////////////////////////////// } @@ -527,12 +523,8 @@ namespace UnitTest /////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Then - AzToolsFramework::EntityIdList selectedEntities; - AzToolsFramework::ToolsApplicationRequestBus::BroadcastResult( - selectedEntities, &AzToolsFramework::ToolsApplicationRequestBus::Events::GetSelectedEntities); - - AzToolsFramework::EntityIdList expectedSelectedEntities = { m_entityId1, entity2, entity3, entity4 }; - + const AzToolsFramework::EntityIdList selectedEntities = SelectedEntities(); + const AzToolsFramework::EntityIdList expectedSelectedEntities = { m_entityId1, entity2, entity3, entity4 }; EXPECT_THAT(selectedEntities, UnorderedElementsAreArray(expectedSelectedEntities)); /////////////////////////////////////////////////////////////////////////////////////////////////////////////// } @@ -946,6 +938,42 @@ namespace UnitTest EXPECT_THAT(selectedEntitiesAfter, UnorderedElementsAre(m_entityId1)); } + TEST_F( + EditorTransformComponentSelectionViewportPickingManipulatorTestFixture, BoundsBetweenCameraAndNearClipPlaneDoesNotIntersectMouseRay) + { + // move camera to 10 units along the y-axis + AzFramework::SetCameraTransform(m_cameraState, AZ::Transform::CreateTranslation(AZ::Vector3::CreateAxisY(10.0f))); + + // send a very narrow bounds for entity1 + AZ::Entity* entity1 = AzToolsFramework::GetEntityById(m_entityId1); + auto* boundTestComponent = entity1->FindComponent(); + boundTestComponent->m_localBounds = + AZ::Aabb::CreateFromMinMax(AZ::Vector3(-0.5f, -0.0025f, -0.5f), AZ::Vector3(0.5f, 0.0025f, 0.5f)); + + // move entity1 in front of the camera between it and the near clip plane + AZ::TransformBus::Event( + m_entityId1, &AZ::TransformBus::Events::SetWorldTM, AZ::Transform::CreateTranslation(AZ::Vector3::CreateAxisY(10.05f))); + // move entity2 behind entity1 + AZ::TransformBus::Event( + m_entityId2, &AZ::TransformBus::Events::SetWorldTM, AZ::Transform::CreateTranslation(AZ::Vector3::CreateAxisY(15.0f))); + + const auto entity2ScreenPosition = AzFramework::WorldToScreen(AzToolsFramework::GetWorldTranslation(m_entityId2), m_cameraState); + + // click the entity in the viewport + m_actionDispatcher->SetStickySelect(true) + ->CameraState(m_cameraState) + ->MousePosition(entity2ScreenPosition) + ->CameraState(m_cameraState) + ->MouseLButtonDown() + ->MouseLButtonUp(); + + // ensure entity1 is not selected as it is before the near clip plane + using ::testing::UnorderedElementsAreArray; + const AzToolsFramework::EntityIdList selectedEntities = SelectedEntities(); + const AzToolsFramework::EntityIdList expectedSelectedEntities = { m_entityId2 }; + EXPECT_THAT(selectedEntities, UnorderedElementsAreArray(expectedSelectedEntities)); + } + class EditorTransformComponentSelectionViewportPickingManipulatorTestFixtureParam : public EditorTransformComponentSelectionViewportPickingManipulatorTestFixture , public ::testing::WithParamInterface diff --git a/Code/Framework/AzToolsFramework/Tests/EditorVertexSelectionTests.cpp b/Code/Framework/AzToolsFramework/Tests/EditorVertexSelectionTests.cpp index d08c9646a2..93010aa63d 100644 --- a/Code/Framework/AzToolsFramework/Tests/EditorVertexSelectionTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/EditorVertexSelectionTests.cpp @@ -23,6 +23,7 @@ #include #include #include +#include using namespace AzToolsFramework; diff --git a/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabFocus/PrefabFocusTests.cpp b/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabFocus/PrefabFocusTests.cpp index 86c73e72e5..6bf964f038 100644 --- a/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabFocus/PrefabFocusTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabFocus/PrefabFocusTests.cpp @@ -106,7 +106,9 @@ namespace UnitTest inline static const char* Passenger2EntityName = "Passenger2"; }; - TEST_F(PrefabFocusTests, PrefabFocus_FocusOnOwningPrefab_RootContainer) + // Test was disabled because the implementation of GetFocusedPrefabInstance now relies on the Prefab EOS, + // which is not used by our test environment. This can be restored once Instance handles are implemented. + TEST_F(PrefabFocusTests, DISABLED_PrefabFocus_FocusOnOwningPrefab_RootContainer) { // Verify FocusOnOwningPrefab works when passing the container entity of the root prefab. { @@ -121,7 +123,9 @@ namespace UnitTest } } - TEST_F(PrefabFocusTests, PrefabFocus_FocusOnOwningPrefab_RootEntity) + // Test was disabled because the implementation of GetFocusedPrefabInstance now relies on the Prefab EOS, + // which is not used by our test environment. This can be restored once Instance handles are implemented. + TEST_F(PrefabFocusTests, DISABLED_PrefabFocus_FocusOnOwningPrefab_RootEntity) { // Verify FocusOnOwningPrefab works when passing a nested entity of the root prefab. { diff --git a/Code/Framework/AzToolsFramework/Tests/UI/EntityPropertyEditorTests.cpp b/Code/Framework/AzToolsFramework/Tests/UI/EntityPropertyEditorTests.cpp index c24bab9299..a3c6666a40 100644 --- a/Code/Framework/AzToolsFramework/Tests/UI/EntityPropertyEditorTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/UI/EntityPropertyEditorTests.cpp @@ -36,11 +36,6 @@ namespace UnitTest : public ComponentApplication { public: - void SetExecutableFolder(const char* path) - { - m_exeDirectory = path; - } - void SetSettingsRegistrySpecializations(SettingsRegistryInterface::Specializations& specializations) override { ComponentApplication::SetSettingsRegistrySpecializations(specializations); diff --git a/Code/Framework/AzToolsFramework/Tests/Viewport/ViewportScreenTests.cpp b/Code/Framework/AzToolsFramework/Tests/Viewport/ViewportScreenTests.cpp index e8fce6653f..58c28f8568 100644 --- a/Code/Framework/AzToolsFramework/Tests/Viewport/ViewportScreenTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/Viewport/ViewportScreenTests.cpp @@ -17,6 +17,7 @@ #include #include #include +#include namespace UnitTest { @@ -35,6 +36,7 @@ namespace UnitTest const auto worldResult = AzFramework::ScreenToWorld(screenPoint, cameraState); return AzFramework::WorldToScreen(worldResult, cameraState); } + //////////////////////////////////////////////////////////////////////////////////////////////////////// // ScreenPoint tests TEST(ViewportScreen, WorldToScreenAndScreenToWorldReturnsTheSameValueIdentityCameraOffsetFromOrigin) @@ -102,8 +104,8 @@ namespace UnitTest } //////////////////////////////////////////////////////////////////////////////////////////////////////// - // NDC tests - TEST(ViewportScreen, WorldToScreenNDCAndScreenNDCToWorldReturnsTheSameValueIdentityCameraOffsetFromOrigin) + // Ndc tests + TEST(ViewportScreen, WorldToScreenNdcAndScreenNdcToWorldReturnsTheSameValueIdentityCameraOffsetFromOrigin) { using NdcPoint = AZ::Vector2; @@ -136,7 +138,7 @@ namespace UnitTest } } - TEST(ViewportScreen, WorldToScreenNDCAndScreenNDCToWorldReturnsTheSameValueOrientatedCamera) + TEST(ViewportScreen, WorldToScreenNdcAndScreenNdcToWorldReturnsTheSameValueOrientatedCamera) { using NdcPoint = AZ::Vector2; @@ -153,7 +155,7 @@ namespace UnitTest // note: nearClip is 0.1 - the world space value returned will be aligned to the near clip // plane of the camera so use that to confirm the mapping to/from is correct - TEST(ViewportScreen, ScreenNDCToWorldReturnsPositionOnNearClipPlaneInWorldSpace) + TEST(ViewportScreen, ScreenNdcToWorldReturnsPositionOnNearClipPlaneInWorldSpace) { using NdcPoint = AZ::Vector2; diff --git a/Code/LauncherUnified/Launcher.cpp b/Code/LauncherUnified/Launcher.cpp index c37f70c3b7..ed01a67f39 100644 --- a/Code/LauncherUnified/Launcher.cpp +++ b/Code/LauncherUnified/Launcher.cpp @@ -26,7 +26,6 @@ #include #include -#include #include #include @@ -113,7 +112,7 @@ namespace } // Update the AzFramework application tick bus - gameApplication.Tick(gEnv->pTimer->GetFrameTime()); + gameApplication.Tick(); // Post-update CrySystem if (system) @@ -228,7 +227,6 @@ namespace O3DELauncher } } - void CompileCriticalAssets(); void CreateRemoteFileIO(); bool ConnectToAssetProcessor() @@ -256,29 +254,11 @@ namespace O3DELauncher { AZ_TracePrintf("Launcher", "Connected to Asset Processor\n"); CreateRemoteFileIO(); - CompileCriticalAssets(); } return connectedToAssetProcessor; } - //! Compiles the critical assets that are within the Engine directory of Open 3D Engine - //! This code should be in a centralized location, but doesn't belong in AzFramework - //! since it is specific to how Open 3D Engine projects has assets setup - void CompileCriticalAssets() - { - // VERY early on, as soon as we can, request that the asset system make sure the following assets take priority over others, - // so that by the time we ask for them there is a greater likelihood that they're already good to go. - // these can be loaded later but are still important: - AzFramework::AssetSystemRequestBus::Broadcast(&AzFramework::AssetSystem::AssetSystemRequests::EscalateAssetBySearchTerm, "/texturemsg/"); - AzFramework::AssetSystemRequestBus::Broadcast(&AzFramework::AssetSystem::AssetSystemRequests::EscalateAssetBySearchTerm, "engineassets/materials"); - AzFramework::AssetSystemRequestBus::Broadcast(&AzFramework::AssetSystem::AssetSystemRequests::EscalateAssetBySearchTerm, "engineassets/geomcaches"); - AzFramework::AssetSystemRequestBus::Broadcast(&AzFramework::AssetSystem::AssetSystemRequests::EscalateAssetBySearchTerm, "engineassets/objects"); - - // some are specifically extra important and will cause issues if missing completely: - AzFramework::AssetSystemRequestBus::Broadcast(&AzFramework::AssetSystem::AssetSystemRequests::CompileAssetSync, "engineassets/objects/default.cgf"); - } - //! Remote FileIO to use as a Virtual File System //! Communication of FileIOBase operations occur through an AssetProcessor connection void CreateRemoteFileIO() diff --git a/Code/Legacy/CryCommon/Cry_Camera.h b/Code/Legacy/CryCommon/Cry_Camera.h deleted file mode 100644 index 6ccae5bce1..0000000000 --- a/Code/Legacy/CryCommon/Cry_Camera.h +++ /dev/null @@ -1,448 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - - -// Description : Common Camera class implementation -#pragma once - - -//DOC-IGNORE-BEGIN -#include -#include -//DOC-IGNORE-END - -////////////////////////////////////////////////////////////////////// -#define CAMERA_MIN_NEAR 0.001f -#define DEFAULT_NEAR 0.2f -#define DEFAULT_FAR 1024.0f -#define DEFAULT_FOV (75.0f * gf_PI / 180.0f) -#define MIN_FOV 0.0000001f - -////////////////////////////////////////////////////////////////////// - -enum -{ - FR_PLANE_NEAR, - FR_PLANE_FAR, - FR_PLANE_RIGHT, - FR_PLANE_LEFT, - FR_PLANE_TOP, - FR_PLANE_BOTTOM, - FRUSTUM_PLANES -}; - -////////////////////////////////////////////////////////////////////// - -enum cull -{ - CULL_EXCLUSION, // The whole object is outside of frustum. - CULL_OVERLAP, // The object & frustum overlap. - CULL_INCLUSION // The whole object is inside frustum. -}; - -/////////////////////////////////////////////////////////////////////////////// -// Implements essential operations like calculation of a view-matrix and -// frustum-culling with simple geometric primitives (Point, Sphere, AABB, OBB). -// All calculation are based on the CryENGINE coordinate-system -// -// We are using a "right-handed" coordinate systems, where the positive X-Axis points -// to the right, the positive Y-Axis points away from the viewer and the positive -// Z-Axis points up. The following illustration shows our coordinate system. -// -//
-//  z-axis
-//    ^
-//    |
-//    |   y-axis
-//    |  /
-//    | /
-//    |/
-//    +---------------->   x-axis
-// 
-// -// This same system is also used in 3D-Studio-MAX. It is not unusual for 3D-APIs like D3D9 or -// OpenGL to use a different coordinate system. Currently in D3D9 we use a coordinate system -// in which the X-Axis points to the right, the Y-Axis points down and the Z-Axis points away -// from the viewer. To convert from the CryEngine system into D3D9 we are just doing a clockwise -// rotation of pi/2 about the X-Axis. This conversion happens in the renderer. -// -// The 6 DOFs (degrees-of-freedom) are stored in one single 3x4 matrix ("m_Matrix"). The 3 -// orientation-DOFs are stored in the 3x3 part and the 3 position-DOFs are stored in the translation- -// vector. You can use the member-functions "GetMatrix()" or "SetMatrix(Matrix34(orientation,positon))" -// to change or access the 6 DOFs. -// -// There are helper-function in Cry_Math.h to create the orientation: -// -// This function builds a 3x3 orientation matrix using a view-direction and a radiant to rotate about Y-axis. -// Matrix33 orientation=Matrix33::CreateOrientation( Vec3(0,1,0), 0 ); -// -// This function builds a 3x3 orientation matrix using Yaw-Pitch-Roll angles. -// Matrix33 orientation=CCamera::CreateOrientationYPR( Ang3(1.234f,0.342f,0) ); -// -/////////////////////////////////////////////////////////////////////////////// -class CCamera -{ -public: - ILINE static Matrix33 CreateOrientationYPR(const Ang3& ypr); - ILINE static Ang3 CreateAnglesYPR(const Matrix33& m); - ILINE static Ang3 CreateAnglesYPR(const Vec3& vdir, f32 r = 0); - - ILINE void SetMatrix(const Matrix34& mat) { assert(mat.IsOrthonormal()); m_Matrix = mat; UpdateFrustum(); }; - ILINE const Matrix34& GetMatrix() const { return m_Matrix; }; - ILINE Vec3 GetViewdir() const { return m_Matrix.GetColumn1(); }; - - ILINE Vec3 GetPosition() const { return m_Matrix.GetTranslation(); } - ILINE void SetPosition(const Vec3& p) { m_Matrix.SetTranslation(p); UpdateFrustum(); } - - //------------------------------------------------------------ - - void SetFrustum(int nWidth, int nHeight, f32 FOV = DEFAULT_FOV, f32 nearplane = DEFAULT_NEAR, f32 farplane = DEFAULT_FAR, f32 fPixelAspectRatio = 1.0f); - - ILINE int GetViewSurfaceZ() const { return m_Height; } - ILINE f32 GetFov() const { return m_fov; } - ILINE f32 GetPixelAspectRatio() const { return m_PixelAspectRatio; } - - ////////////////////////////////////////////////////////////////////////// - - //----------------------------------------------------------------------------------- - //-------- Frustum-Culling ---------------------------- - //----------------------------------------------------------------------------------- - - // AABB-frustum test - // Fast - bool IsAABBVisible_F(const ::AABB& aabb) const; - - //## constructor/destructor - CCamera() - { - m_Matrix.SetIdentity(); - m_asymRight = 0; - m_asymLeft = 0; - m_asymBottom = 0; - m_asymTop = 0; - SetFrustum(640, 480); - m_nPosX = m_nPosY = m_nSizeX = m_nSizeY = 0; - m_entityPos = Vec3(0, 0, 0); - } - ~CCamera() {} - - void SetJustActivated([[maybe_unused]] const bool justActivated) {} - - void UpdateFrustum(); - -private: - Matrix34 m_Matrix; // world space-matrix - - f32 m_fov; // vertical fov in radiants [0..1*PI[ - int m_Width; // surface width-resolution - int m_Height; // surface height-resolution - f32 m_PixelAspectRatio; // accounts for aspect ratio and non-square pixels - - Vec3 m_entityPos; //The position of this camera's entity (does not include HMD position or stereo offsets) - - Vec3 m_edge_nlt; // this is the left/upper vertex of the near-plane - Vec3 m_edge_plt; // this is the left/upper vertex of the projection-plane - Vec3 m_edge_flt; // this is the left/upper vertex of the far-clip-plane - - f32 m_asymLeft, m_asymRight, m_asymBottom, m_asymTop; // Shift to create asymmetric frustum (only used for GPU culling of tessellated objects) - f32 m_asymLeftProj, m_asymRightProj, m_asymBottomProj, m_asymTopProj; - f32 m_asymLeftFar, m_asymRightFar, m_asymBottomFar, m_asymTopFar; - - //usually we update these values every frame (they depend on m_Matrix) - Vec3 m_cltp, m_crtp, m_clbp, m_crbp; //this are the 4 vertices of the projection-plane in cam-space - Vec3 m_cltn, m_crtn, m_clbn, m_crbn; //this are the 4 vertices of the near-plane in cam-space - Vec3 m_cltf, m_crtf, m_clbf, m_crbf; //this are the 4 vertices of the farclip-plane in cam-space - - Plane_tpl m_fp [FRUSTUM_PLANES]; // - uint32 m_idx1[FRUSTUM_PLANES], m_idy1[FRUSTUM_PLANES], m_idz1[FRUSTUM_PLANES]; // - uint32 m_idx2[FRUSTUM_PLANES], m_idy2[FRUSTUM_PLANES], m_idz2[FRUSTUM_PLANES]; // - - int m_nPosX, m_nPosY, m_nSizeX, m_nSizeY; -}; - -// Description -// This function builds a 3x3 orientation matrix using YPR-angles -// Rotation order for the orientation-matrix is Z-X-Y. (Zaxis=YAW / Xaxis=PITCH / Yaxis=ROLL) -// -//
-//  COORDINATE-SYSTEM
-//
-//  z-axis
-//    ^
-//    |
-//    |  y-axis
-//    |  /
-//    | /
-//    |/
-//    +--------------->   x-axis
-// 
-// -// Example: -// Matrix33 orientation=CCamera::CreateOrientationYPR( Ang3(1,2,3) ); -inline Matrix33 CCamera::CreateOrientationYPR(const Ang3& ypr) -{ - f32 sz, cz; - sincos_tpl(ypr.x, &sz, &cz); //Zaxis = YAW - f32 sx, cx; - sincos_tpl(ypr.y, &sx, &cx); //Xaxis = PITCH - f32 sy, cy; - sincos_tpl(ypr.z, &sy, &cy); //Yaxis = ROLL - Matrix33 c; - c.m00 = cy * cz - sy * sz * sx; - c.m01 = -sz * cx; - c.m02 = sy * cz + cy * sz * sx; - c.m10 = cy * sz + sy * sx * cz; - c.m11 = cz * cx; - c.m12 = sy * sz - cy * sx * cz; - c.m20 = -sy * cx; - c.m21 = sx; - c.m22 = cy * cx; - return c; -} - -// Description -//
-//   x-YAW
-//   y-PITCH (negative=looking down / positive=looking up)
-//   z-ROLL
-//   
-// Note: If we are looking along the z-axis, its not possible to specify the x and z-angle -inline Ang3 CCamera::CreateAnglesYPR(const Matrix33& m) -{ - assert(m.IsOrthonormal()); - float l = Vec3(m.m01, m.m11, 0.0f).GetLength(); - if (l > 0.0001) - { - return Ang3(atan2f(-m.m01 / l, m.m11 / l), atan2f(m.m21, l), atan2f(-m.m20 / l, m.m22 / l)); - } - else - { - return Ang3(0, atan2f(m.m21, l), 0); - } -} - -// Description -//
-//x-YAW
-//y-PITCH (negative=looking down / positive=looking up)
-//z-ROLL (its not possile to extract a "roll" from a view-vector)
-// 
-// Note: if we are looking along the z-axis, its not possible to specify the rotation about the z-axis -ILINE Ang3 CCamera::CreateAnglesYPR(const Vec3& vdir, f32 r) -{ - assert((fabs_tpl(1 - (vdir | vdir))) < 0.001); //check if unit-vector - f32 l = Vec3(vdir.x, vdir.y, 0.0f).GetLength(); //check if not zero - if (l > 0.0001) - { - return Ang3(atan2f(-vdir.x / l, vdir.y / l), atan2f(vdir.z, l), r); - } - else - { - return Ang3(0, atan2f(vdir.z, l), r); - } -} - -//--------------------------------------------------------------------------- -//--------------------------------------------------------------------------- -//--------------------------------------------------------------------------- -//--------------------------------------------------------------------------- -inline void CCamera::SetFrustum(int nWidth, int nHeight, f32 FOV, f32 nearplane, f32 farplane, f32 fPixelAspectRatio) -{ - assert (nearplane >= CAMERA_MIN_NEAR); //check if near-plane is valid - assert (farplane >= 0.1f); //check if far-plane is valid - assert (farplane >= nearplane); //check if far-plane bigger then near-plane - assert (FOV >= MIN_FOV && FOV < gf_PI); //check if specified FOV is valid - - m_fov = FOV; - - m_Width = nWidth; //surface x-resolution - m_Height = nHeight; //surface z-resolution - - f32 fWidth = (((f32)nWidth) / fPixelAspectRatio); - f32 fHeight = (f32) nHeight; - - m_PixelAspectRatio = fPixelAspectRatio; - - //------------------------------------------------------------------------- - //--- calculate the Left/Top edge of the Projection-Plane in EYE-SPACE --- - //------------------------------------------------------------------------- - f32 projLeftTopX = -fWidth * 0.5f; - f32 projLeftTopY = static_cast((1.0f / tan_tpl(m_fov * 0.5f)) * (fHeight * 0.5f)); - f32 projLeftTopZ = fHeight * 0.5f; - - m_edge_plt.x = projLeftTopX; - m_edge_plt.y = projLeftTopY; - m_edge_plt.z = projLeftTopZ; - - float invProjLeftTopY = 1.0f / projLeftTopY; - - //Apply asym shift to the camera frustum - Necessary for properly culling tessellated objects in VR - //These are applied in UpdateFrustum to the camera space frustum planes - //Can't apply asym shift to frustum edges here. That would only apply to the top left corner - //rather than the whole frustum. It would also interfere with shadow map application - - //m_asym is at the near plane, we want it at the projection plane too - m_asymLeftProj = (m_asymLeft / nearplane) * projLeftTopY; - m_asymTopProj = (m_asymTop / nearplane) * projLeftTopY; - m_asymRightProj = (m_asymRight / nearplane) * projLeftTopY; - m_asymBottomProj = (m_asymBottom / nearplane) * projLeftTopY; - - //Also want m_asym at the far plane - m_asymLeftFar = m_asymLeftProj * (farplane * invProjLeftTopY); - m_asymTopFar = m_asymTopProj * (farplane * invProjLeftTopY); - m_asymRightFar = m_asymRightProj * (farplane * invProjLeftTopY); - m_asymBottomFar = m_asymBottomProj * (farplane * invProjLeftTopY); - - m_edge_nlt.x = nearplane * projLeftTopX * invProjLeftTopY; - m_edge_nlt.y = nearplane; - m_edge_nlt.z = nearplane * projLeftTopZ * invProjLeftTopY; - - //calculate the left/upper edge of the far-plane (=not rotated) - m_edge_flt.x = projLeftTopX * (farplane * invProjLeftTopY); - m_edge_flt.y = farplane; - m_edge_flt.z = projLeftTopZ * (farplane * invProjLeftTopY); - - UpdateFrustum(); -} - -/*! - * - * Updates all parameters required by the render-engine: - * - * 3d-view-frustum and all matrices - * - */ -inline void CCamera::UpdateFrustum() -{ - //------------------------------------------------------------------- - //--- calculate frustum-edges of projection-plane in CAMERA-SPACE --- - //------------------------------------------------------------------- - Matrix33 m33 = Matrix33(m_Matrix); - m_cltp = m33 * Vec3(+m_edge_plt.x + m_asymLeftProj, +m_edge_plt.y, +m_edge_plt.z + m_asymTopProj); - m_crtp = m33 * Vec3(-m_edge_plt.x + m_asymRightProj, +m_edge_plt.y, +m_edge_plt.z + m_asymTopProj); - m_clbp = m33 * Vec3(+m_edge_plt.x + m_asymLeftProj, +m_edge_plt.y, -m_edge_plt.z + m_asymBottomProj); - m_crbp = m33 * Vec3(-m_edge_plt.x + m_asymRightProj, +m_edge_plt.y, -m_edge_plt.z + m_asymBottomProj); - - m_cltn = m33 * Vec3(+m_edge_nlt.x + m_asymLeft, +m_edge_nlt.y, +m_edge_nlt.z + m_asymTop); - m_crtn = m33 * Vec3(-m_edge_nlt.x + m_asymRight, +m_edge_nlt.y, +m_edge_nlt.z + m_asymTop); - m_clbn = m33 * Vec3(+m_edge_nlt.x + m_asymLeft, +m_edge_nlt.y, -m_edge_nlt.z + m_asymBottom); - m_crbn = m33 * Vec3(-m_edge_nlt.x + m_asymRight, +m_edge_nlt.y, -m_edge_nlt.z + m_asymBottom); - - m_cltf = m33 * Vec3(+m_edge_flt.x + m_asymLeftFar, +m_edge_flt.y, +m_edge_flt.z + m_asymTopFar); - m_crtf = m33 * Vec3(-m_edge_flt.x + m_asymRightFar, +m_edge_flt.y, +m_edge_flt.z + m_asymTopFar); - m_clbf = m33 * Vec3(+m_edge_flt.x + m_asymLeftFar, +m_edge_flt.y, -m_edge_flt.z + m_asymBottomFar); - m_crbf = m33 * Vec3(-m_edge_flt.x + m_asymRightFar, +m_edge_flt.y, -m_edge_flt.z + m_asymBottomFar); - - //------------------------------------------------------------------------------- - //--- calculate the six frustum-planes using the frustum edges in world-space --- - //------------------------------------------------------------------------------- - m_fp[FR_PLANE_NEAR ] = Plane_tpl::CreatePlane(m_crtn + GetPosition(), m_cltn + GetPosition(), m_crbn + GetPosition()); - m_fp[FR_PLANE_RIGHT ] = Plane_tpl::CreatePlane(m_crbf + GetPosition(), m_crtf + GetPosition(), GetPosition()); - m_fp[FR_PLANE_LEFT ] = Plane_tpl::CreatePlane(m_cltf + GetPosition(), m_clbf + GetPosition(), GetPosition()); - m_fp[FR_PLANE_TOP ] = Plane_tpl::CreatePlane(m_crtf + GetPosition(), m_cltf + GetPosition(), GetPosition()); - m_fp[FR_PLANE_BOTTOM] = Plane_tpl::CreatePlane(m_clbf + GetPosition(), m_crbf + GetPosition(), GetPosition()); - m_fp[FR_PLANE_FAR ] = Plane_tpl::CreatePlane(m_crtf + GetPosition(), m_crbf + GetPosition(), m_cltf + GetPosition()); //clip-plane - - uint32 rh = m_Matrix.IsOrthonormalRH(); - if (rh == 0) - { - m_fp[FR_PLANE_NEAR ] = -m_fp[FR_PLANE_NEAR ]; - m_fp[FR_PLANE_RIGHT ] = -m_fp[FR_PLANE_RIGHT ]; - m_fp[FR_PLANE_LEFT ] = -m_fp[FR_PLANE_LEFT ]; - m_fp[FR_PLANE_TOP ] = -m_fp[FR_PLANE_TOP ]; - m_fp[FR_PLANE_BOTTOM] = -m_fp[FR_PLANE_BOTTOM]; - m_fp[FR_PLANE_FAR ] = -m_fp[FR_PLANE_FAR ]; //clip-plane - } - - union f32_u - { - float floatVal; - uint32 uintVal; - }; - - for (int i = 0; i < FRUSTUM_PLANES; i++) - { - f32_u ux; - ux.floatVal = m_fp[i].n.x; - f32_u uy; - uy.floatVal = m_fp[i].n.y; - f32_u uz; - uz.floatVal = m_fp[i].n.z; - uint32 bitX = ux.uintVal >> 31; - uint32 bitY = uy.uintVal >> 31; - uint32 bitZ = uz.uintVal >> 31; - m_idx1[i] = bitX * 3 + 0; - m_idx2[i] = (1 - bitX) * 3 + 0; - m_idy1[i] = bitY * 3 + 1; - m_idy2[i] = (1 - bitY) * 3 + 1; - m_idz1[i] = bitZ * 3 + 2; - m_idz2[i] = (1 - bitZ) * 3 + 2; - } -} - -// Description -// Simple approach to check if an AABB and the camera-frustum overlap. The AABB -// is assumed to be in world-space. This is a very fast method, just one single -// dot-product is necessary to check an AABB against a plane. Actually there -// is no significant speed-different between culling a sphere or an AABB. -// -// Example -// bool InOut=camera.IsAABBVisible_F(aabb); -// -// return values -// CULL_EXCLUSION = AABB outside of frustum (very fast rejection-test) -// CULL_OVERLAP = AABB either intersects the borders of the frustum or is totally inside - -inline bool CCamera::IsAABBVisible_F(const AABB& aabb) const -{ - const f32* p = &aabb.min.x; - uint32 x, y, z; - x = m_idx1[0]; - y = m_idy1[0]; - z = m_idz1[0]; - if ((m_fp[0] | Vec3(p[x], p[y], p[z])) > 0) - { - return CULL_EXCLUSION; - } - x = m_idx1[1]; - y = m_idy1[1]; - z = m_idz1[1]; - if ((m_fp[1] | Vec3(p[x], p[y], p[z])) > 0) - { - return CULL_EXCLUSION; - } - x = m_idx1[2]; - y = m_idy1[2]; - z = m_idz1[2]; - if ((m_fp[2] | Vec3(p[x], p[y], p[z])) > 0) - { - return CULL_EXCLUSION; - } - x = m_idx1[3]; - y = m_idy1[3]; - z = m_idz1[3]; - if ((m_fp[3] | Vec3(p[x], p[y], p[z])) > 0) - { - return CULL_EXCLUSION; - } - x = m_idx1[4]; - y = m_idy1[4]; - z = m_idz1[4]; - if ((m_fp[4] | Vec3(p[x], p[y], p[z])) > 0) - { - return CULL_EXCLUSION; - } - x = m_idx1[5]; - y = m_idy1[5]; - z = m_idz1[5]; - if ((m_fp[5] | Vec3(p[x], p[y], p[z])) > 0) - { - return CULL_EXCLUSION; - } - return CULL_OVERLAP; -} diff --git a/Code/Legacy/CryCommon/Cry_Vector2.h b/Code/Legacy/CryCommon/Cry_Vector2.h index 81a8c10e49..5bf47d0642 100644 --- a/Code/Legacy/CryCommon/Cry_Vector2.h +++ b/Code/Legacy/CryCommon/Cry_Vector2.h @@ -8,10 +8,6 @@ // Description : Common matrix class - - -#ifndef CRYINCLUDE_CRYCOMMON_CRY_VECTOR2_H -#define CRYINCLUDE_CRYCOMMON_CRY_VECTOR2_H #pragma once #include @@ -68,9 +64,7 @@ struct Vec2_tpl : x((F)v.x) , y((F)v.y) { assert(this->IsValid()); } - ILINE Vec2_tpl& operator=(const Vec2_tpl& src) { x = src.x; y = src.y; return *this; } - //template Vec2_tpl& operator=(const Vec2_tpl& src) { x=F(src.x); y=F(src.y); return *this; } - //template Vec2_tpl& operator=(const Vec3_tpl& src) { x=F(src.x); y=F(src.y); return *this; } + Vec2_tpl& operator=(const Vec2_tpl& src) = default; ILINE int operator!() const { return x == 0 && y == 0; } @@ -372,4 +366,3 @@ namespace AZ { AZ_TYPE_INFO_SPECIALIZE(Vec2, "{844131BA-9565-42F3-8482-6F65A6D5FC59}"); } -#endif // CRYINCLUDE_CRYCOMMON_CRY_VECTOR2_H diff --git a/Code/Legacy/CryCommon/HMDBus.h b/Code/Legacy/CryCommon/HMDBus.h deleted file mode 100644 index dab4c28668..0000000000 --- a/Code/Legacy/CryCommon/HMDBus.h +++ /dev/null @@ -1,276 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - - -#pragma once - -#include -#include -#include -#include -#include -#include -#include - -struct IRenderAuxGeom; - -namespace AZ -{ - namespace VR - { - /** - * Bus for reacting to events triggered by the VR systems - */ - class VREvents : public AZ::EBusTraits - { - public: - virtual ~VREvents() {} - - /** - * Event triggered when an HMD initializes successfully - */ - virtual void OnHMDInitialized() {} - - /** - * Event triggered when an HMD shuts down - */ - virtual void OnHMDShutdown() {} - }; - - using VREventBus = AZ::EBus; - - /// - /// Device initialization bus. Each HMD device SDK should connect to this bus during startup in order to be initialized by the LY engine. - /// Any devices that successfully initialize will be connected to the HMDDeviceBus for actual use in VR rendering. - /// - class HMDInitBus : public AZ::EBusTraits - { - public: - - virtual ~HMDInitBus() {} - - /// - /// Attempt to initialize this device. If initialization is initially successful (device exists and is able to startup) then this device should connect to the - /// HMDDeviceRequestBus in order to be used as an HMD from the main Open 3D Engine system. - /// - /// @return If true, initialization fully succeeded. - /// - virtual bool AttemptInit() = 0; - - /// - /// Shutdown this device and destroy any internal context/state information that it may contain. Once this function has returned, the device should be in a - /// totally clean state and able to re-initialized if necessary. - /// - virtual void Shutdown() = 0; - - /// - /// Priority values for the HMD to set. A higher priority value means that the HMD will be be initialized before - /// other HMDs with lower priority values. - /// - enum HMDInitPriority - { - kNullVR = -100, - kLowest = 0, - kMiddle = 50, - kHighest = 100 - }; - - /// - /// Specify the initialization priority for this HMD device. Typically SDKs that have only one device that they support (e.g. Oculus) should have the highest - /// priority so that other VR Gems don't take the device context. For example, OpenVR is capable of driving an Oculus Rift and if initialized first will control - /// the device as opposed to the Oculus runtime. - /// - virtual HMDInitPriority GetInitPriority() const = 0; - }; - - using HMDInitRequestBus = AZ::EBus; - - /// - /// HMD device bus used to communicate with the rest of the engine. Every device supported by the engine lives in its own GEM and supports this bus. A device - /// wraps the underlying SDK into a single object for easy use by the rest of the system. Every device created should register with the EBus in order to be picked up as - /// a usable device during initialization via the EBus function BusConnect(). - /// - class HMDDeviceBus - : public AZ::EBusTraits - { - public: - - ////////////////////////////////////////////////////////////////////////// - // EBus Traits - static const EBusHandlerPolicy HandlerPolicy = EBusHandlerPolicy::Multiple; - static const EBusAddressPolicy AddressPolicy = EBusAddressPolicy::Single; - using MutexType = AZStd::recursive_mutex; - ////////////////////////////////////////////////////////////////////////// - - virtual ~HMDDeviceBus() {} - - /// - /// Simple texture descriptor to pass to the device during render target creation. - /// - struct TextureDesc - { - uint32 width; - uint32 height; - }; - - /// - /// Update the HMD's internal state and handle events - /// This is NOT where tracking is updated. This is for game-time - /// events such as controllers connecting/disconnecting or - /// certain compositor events being triggered. - /// - virtual void UpdateInternalState() {} - - /// - /// Create the render targets for a rendering device. Note that this will create all necessary render targets but the render targets will be destroyed one at a time in DestroyRenderTargets. - /// - /// @param renderDevice The render device to use when creating the render target. - /// @param desc TextureDesc object denoting texture options to use during creation. - /// @param eyeCount The number of HMDRenderTargets to be created in this function. - /// @param renderTargets Array of pointers to HMDRenderTargets of size eyeCount created upon successful return of this function. See struct RenderTarget for more info. - /// - /// @returns If true, the render targets were successfully created. - /// - virtual bool CreateRenderTargets([[maybe_unused]] void* renderDevice, [[maybe_unused]] const TextureDesc& desc, [[maybe_unused]] size_t eyeCount, [[maybe_unused]] HMDRenderTarget* renderTargets[]) { return false; } - - /// - /// Destroy the passed-in render target. Any device-specific texture data will be cleaned up after this function has finished executing. - /// - virtual void DestroyRenderTarget([[maybe_unused]] HMDRenderTarget& renderTarget) {} - - /// - /// Take care of any frame preparations that may be necessary BEFORE rendering begins on either eye. This could be things like synchronization, - /// clearing old state, etc. - /// - virtual void PrepareFrame() {} - - /// - /// Retrieve the latest tracking state that was cached since the last call - /// to UpdateTrackingStates. - /// - /// TODO: Differentiate between tracking states viable for rendering and - /// tracking states viable for game simulation. - /// - virtual TrackingState* GetTrackingState() { return nullptr; } - - /// - /// Per-eye target to submit to the device for final composition and rendering. - /// - struct EyeTarget - { - void* renderTarget; ///< The device render target. - Vec2i viewportPosition; ///< Position of the viewport pertaining to this render target. - Vec2i viewportSize; ///< Size of the viewport pertaining to this render target. - }; - - /// - /// Submit a new frame to the HMD device. Each eye should be fully rendered by this point. The device will automatically correlate the proper - /// tracking information with this frame. - /// - /// @param left A reference to the left EyeTarget to present - /// @param right A reference to the right EyeTarget to present - /// - virtual void SubmitFrame([[maybe_unused]] const EyeTarget& left, [[maybe_unused]] const EyeTarget& right) {} - - /// - /// Recent the current pose for the HMD based on the current direction that the viewer is looking. - /// - virtual void RecenterPose() {} - - /// - /// Set the current tracking level of the HMD. Supported tracking levels are defined in struct TrackingLevel. - /// - /// @param level The tracking level we want to use with this HMD - /// - virtual void SetTrackingLevel([[maybe_unused]] const AZ::VR::HMDTrackingLevel level) {} - - /// - /// Write any HMD info to the console/log file(s). At a minimum this function should print the info contained in the HMDDeviceInfo object. - /// - virtual void OutputHMDInfo() {} - - /// - /// Enable/disable debugging for this device. The device can decide what the most appropriate debugging information is - /// displayed to the user (e.g. HMD position, performance info, latency timing, etc.). - /// - /// @param enable Set to true to enable debugging - /// - virtual void EnableDebugging([[maybe_unused]] bool enable) {} - - /// - /// Draw any custom debug info for this device. This function is invoked by the HMDDebugger. - /// - /// @param transform Local to world-space transform. - /// @param auxGeom A pointer to the auxiliary geometry renderer - /// - virtual void DrawDebugInfo([[maybe_unused]] const AZ::Transform& transform, [[maybe_unused]] IRenderAuxGeom* auxGeom) {} - - /// - /// Get the device info object for this particular HMD. See struct HMDDeviceInfo for more details. - /// - /// @return A pointer to this HMD's HMDDeviceInfo struct - /// - virtual HMDDeviceInfo* GetDeviceInfo() { return nullptr; } - - /// - /// Get whether or not the HMD has been initialized. The HMD has been initialized when it has fully established an interface - /// with its necessary SDK and is ready to be used. - /// - /// @return True if the device has been initialized and is usable - /// - virtual bool IsInitialized() { return false; } - - /// - /// Get the play space of the device, if exists - /// - /// @return True if the device has been initialized and is usable - /// - virtual const Playspace* GetPlayspace() { return nullptr; } - - /// - /// Ask the HMD to update its internal tracking state; must be called once per frame. - /// Must be called from the render thread (the same thread that the device submits on). - /// This will calculate the internal tracking states fit for rendering the upcoming frame. - /// - virtual void UpdateTrackingStates() {} - - protected: - }; - - using HMDDeviceRequestBus = AZ::EBus; - - /// - /// Bus to define HMD debugging. This includes visualization of any HMD-specific objects as well as any - /// VR performance metrics displayed in the HMD. - /// - class HMDDebuggerBus - : public AZ::EBusTraits - { - public: - - virtual ~HMDDebuggerBus() {} - - /// - /// Enable/disable the debugger. - /// - /// @param enable Pass in true to enable info debugging - /// - virtual void EnableInfo(bool enable) = 0; - - /// - /// Enable/disable the camera debugger. - /// - /// @param enable Pass in true to enable camera debugging - /// - virtual void EnableCamera(bool enable) = 0; - }; - - using HMDDebuggerRequestBus = AZ::EBus; - - } // namespace VR -} // namespace AZ diff --git a/Code/Legacy/CryCommon/IMovieSystem.h b/Code/Legacy/CryCommon/IMovieSystem.h index 4da08d3bbf..79c000bfca 100644 --- a/Code/Legacy/CryCommon/IMovieSystem.h +++ b/Code/Legacy/CryCommon/IMovieSystem.h @@ -18,7 +18,9 @@ #include #include #include -#include + +#define DEFAULT_NEAR 0.2f +#define DEFAULT_FOV (75.0f * gf_PI / 180.0f) // forward declaration. struct IAnimTrack; diff --git a/Code/Legacy/CryCommon/IRenderAuxGeom.h b/Code/Legacy/CryCommon/IRenderAuxGeom.h index 6627c41530..a07bba83e4 100644 --- a/Code/Legacy/CryCommon/IRenderAuxGeom.h +++ b/Code/Legacy/CryCommon/IRenderAuxGeom.h @@ -10,6 +10,8 @@ #include "Cry_Color.h" #include "IRenderer.h" +#include +#include struct SAuxGeomRenderFlags; diff --git a/Code/Legacy/CryCommon/IRenderer.h b/Code/Legacy/CryCommon/IRenderer.h index 495c885e44..d457b234e4 100644 --- a/Code/Legacy/CryCommon/IRenderer.h +++ b/Code/Legacy/CryCommon/IRenderer.h @@ -9,7 +9,6 @@ #pragma once -#include "Cry_Camera.h" #include "VertexFormats.h" #include diff --git a/Code/Legacy/CryCommon/IShader.h b/Code/Legacy/CryCommon/IShader.h index 208af79ece..c425bfecc0 100644 --- a/Code/Legacy/CryCommon/IShader.h +++ b/Code/Legacy/CryCommon/IShader.h @@ -52,7 +52,6 @@ enum EParamType }; struct IShader; -class CCamera; union UParamVal { @@ -64,7 +63,6 @@ union UParamVal char* m_String; float m_Color[4]; float m_Vector[3]; - CCamera* m_pCamera; }; struct SShaderParam diff --git a/Code/Legacy/CryCommon/ISystem.h b/Code/Legacy/CryCommon/ISystem.h index a243f00ea2..d97c800763 100644 --- a/Code/Legacy/CryCommon/ISystem.h +++ b/Code/Legacy/CryCommon/ISystem.h @@ -47,7 +47,6 @@ struct IConsole; struct IRemoteConsole; struct IRenderer; struct IProcess; -struct ITimer; struct ICryFont; struct IMovieSystem; namespace Audio @@ -57,7 +56,6 @@ namespace Audio struct SFileVersion; struct INameTable; struct ILevelSystem; -struct IViewSystem; class IXMLBinarySerializer; struct IAVI_Reader; class CPNoise3; @@ -75,7 +73,6 @@ namespace AZ typedef void* WIN_HWND; -class CCamera; struct CLoadingTimeProfiler; class ICmdLine; @@ -612,7 +609,6 @@ struct SSystemGlobalEnvironment { AZ::IO::IArchive* pCryPak; AZ::IO::FileIOBase* pFileIO; - ITimer* pTimer; ICryFont* pCryFont; ::IConsole* pConsole; ISystem* pSystem = nullptr; @@ -823,8 +819,6 @@ struct ISystem // return the related subsystem interface - // - virtual IViewSystem* GetIViewSystem() = 0; virtual ILevelSystem* GetILevelSystem() = 0; virtual ICmdLine* GetICmdLine() = 0; virtual ILog* GetILog() = 0; @@ -835,8 +829,6 @@ struct ISystem virtual IRemoteConsole* GetIRemoteConsole() = 0; virtual ISystemEventDispatcher* GetISystemEventDispatcher() = 0; - virtual ITimer* GetITimer() = 0; - // Arguments: // bValue - Set to true when running on a cheat protected server or a client that is connected to it (not used in singleplayer). virtual void SetForceNonDevMode(bool bValue) = 0; diff --git a/Code/Legacy/CryCommon/ITimer.h b/Code/Legacy/CryCommon/ITimer.h deleted file mode 100644 index 06bdab61e7..0000000000 --- a/Code/Legacy/CryCommon/ITimer.h +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - - -#ifndef CRYINCLUDE_CRYCOMMON_ITIMER_H -#define CRYINCLUDE_CRYCOMMON_ITIMER_H -#pragma once - - -#include "TimeValue.h" // CTimeValue -#include "SerializeFwd.h" - -struct tm; - -// Summary: -// Interface to the Timer System. -struct ITimer -{ - enum ETimer - { - ETIMER_GAME = 0, // Pausable, serialized, frametime is smoothed/scaled/clamped. - ETIMER_UI, // Non-pausable, non-serialized, frametime unprocessed. - ETIMER_LAST - }; - - enum ETimeScaleChannels - { - eTSC_Trackview = 0, - eTSC_GameStart - }; - - // - virtual ~ITimer() {}; - - // Summary: - // Resets the timer - // Notes: - // Only needed because float precision wasn't last that long - can be removed if 64bit is used everywhere. - virtual void ResetTimer() = 0; - - // Summary: - // Updates the timer every frame, needs to be called by the system. - virtual void UpdateOnFrameStart() = 0; - - // Summary: - // Returns the absolute time at the last UpdateOnFrameStart() call. - // Todo: - // Remove, use GetFrameStartTime() instead. - // See also: - // UpdateOnFrameStart(),GetFrameStartTime() - virtual float GetCurrTime(ETimer which = ETIMER_GAME) const = 0; - - // Summary: - // Returns the absolute time at the last UpdateOnFrameStart() call. - // See also: - // UpdateOnFrameStart() - //virtual const CTimeValue& GetFrameStartTime(ETimer which = ETIMER_GAME) const = 0; - virtual const CTimeValue& GetFrameStartTime(ETimer which = ETIMER_GAME) const = 0; - - // Summary: - // Returns the absolute current time. - // Notes: - // The value continuously changes, slower than GetFrameStartTime(). - // See also: - // GetFrameStartTime() - virtual CTimeValue GetAsyncTime() const = 0; - - // Summary: - // Returns the absolute current time at the moment of the call. - virtual float GetAsyncCurTime() = 0; - - // Summary: - // Returns the relative time passed from the last UpdateOnFrameStart() in seconds. - // See also: - // UpdateOnFrameStart() - virtual float GetFrameTime(ETimer which = ETIMER_GAME) const = 0; - - // Description: - // Returns the relative time passed from the last UpdateOnFrameStart() in seconds without any dilation, smoothing, clamping, etc... - // See also: - // UpdateOnFrameStart() - virtual float GetRealFrameTime() const = 0; - - // Summary: - // Returns the time scale applied to time values. - virtual float GetTimeScale() const = 0; - - // Summary: - // Returns the time scale factor for the given channel - virtual float GetTimeScale(uint32 channel) const = 0; - - // Summary: - // Clears all current time scale requests - virtual void ClearTimeScales() = 0; - - // Summary: - // Sets the time scale applied to time values. - virtual void SetTimeScale(float s, uint32 channel = 0) = 0; - - // Summary: - // Enables/disables timer. - virtual void EnableTimer(bool bEnable) = 0; - - // Return Value: - // True if timer is enabled - virtual bool IsTimerEnabled() const = 0; - - // Summary: - // Returns the current framerate in frames/second. - virtual float GetFrameRate() = 0; - - // Summary: - // Returns the fraction to blend current frame in profiling stats. - virtual float GetProfileFrameBlending(float* pfBlendTime = 0, int* piBlendMode = 0) = 0; - - // Summary: - // Serialization. - virtual void Serialize(TSerialize ser) = 0; - - // Summary: - // Tries to pause/unpause a timer. - // Return Value: - // True if successfully paused/unpaused, false otherwise. - virtual bool PauseTimer(ETimer which, bool bPause) = 0; - - // Summary: - // Determines if a timer is paused. - // Returns: - // True if paused, false otherwise. - virtual bool IsTimerPaused(ETimer which) = 0; - - // Summary: - // Tries to set a timer. - // Returns: - // True if successful, false otherwise. - virtual bool SetTimer(ETimer which, float timeInSeconds) = 0; - - // Summary: - // Makes a tm struct from a time_t in UTC - // Example: - // Like gmtime. - virtual void SecondsToDateUTC(time_t time, struct tm& outDateUTC) = 0; - - // Summary: - // Makes a UTC time from a tm. - // Example: - // Like timegm, but not available on all platforms. - virtual time_t DateToSecondsUTC(struct tm& timePtr) = 0; - - - // Summary - // Convert from ticks (CryGetTicks()) to seconds - // - virtual float TicksToSeconds(int64 ticks) = 0; - - // Summary - // Get number of ticks per second - // - virtual int64 GetTicksPerSecond() = 0; - - // Summary - // Create a new timer of the same type - // - virtual ITimer* CreateNewTimer() = 0; - - /*! - This is similar to the cvar t_FixedStep. However it is stronger, and will cause even GetRealFrameTime to follow the fixed time stamp. - GetRealFrameTime will always return the same value as GetFrameTime. This mode is mostly intended for Feature tests that have strict requirements - for determinism. It will cause even fps counters to return a fixed value that does not match the actual fps. I could see this also being useful - if rendering a video. - */ - virtual void EnableFixedTimeMode(bool enable, float timeStep) = 0; - // -}; - -// Description: -// This class is used for automatic profiling of a section of the code. -// Creates an instance of this class, and upon exiting from the code section. -template -class CITimerAutoProfiler -{ -public: - CITimerAutoProfiler (ITimer* pTimer, time& rTime) - : m_pTimer (pTimer) - , m_rTime (rTime) - { - rTime -= pTimer->GetAsyncCurTime(); - } - - ~CITimerAutoProfiler () - { - m_rTime += m_pTimer->GetAsyncCurTime(); - } - -protected: - ITimer* m_pTimer; - time& m_rTime; -}; - -// Description: -// Include this string AUTO_PROFILE_SECTION(pITimer, g_fTimer) for the section of code where the profiler timer must be turned on and off. -// The profiler timer is just some global or static float or double value that accumulates the time (in seconds) spent in the given block of code. -// pITimer is a pointer to the ITimer interface, g_fTimer is the global accumulator. -#define AUTO_PROFILE_SECTION(pITimer, g_fTimer) CITimerAutoProfiler __section_auto_profiler(pITimer, g_fTimer) - -#endif // CRYINCLUDE_CRYCOMMON_ITIMER_H diff --git a/Code/Legacy/CryCommon/IViewSystem.h b/Code/Legacy/CryCommon/IViewSystem.h deleted file mode 100644 index d8514aadf6..0000000000 --- a/Code/Legacy/CryCommon/IViewSystem.h +++ /dev/null @@ -1,295 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - - -// Description : View System interfaces. - -#pragma once - -#include -#include - -// -#define VIEWID_NORMAL 0 -#define VIEWID_FOLLOWHEAD 1 -#define VIEWID_VEHICLE 2 -#define VIEWID_RAGDOLL 3 - -//Forward declaration of AZ::Entity -namespace AZ { - class Entity; -} - -enum EMotionBlurType -{ - eMBT_None = 0, - eMBT_Accumulation = 1, - eMBT_Velocity = 2 -}; - -struct SViewParams -{ - SViewParams() - : position(ZERO) - , rotation(IDENTITY) - , localRotationLast(IDENTITY) - , nearplane(0.0f) - , farplane(0.0f) - , fov(0.0f) - , viewID(0) - , groundOnly(false) - , shakingRatio(0.0f) - , currentShakeQuat(IDENTITY) - , currentShakeShift(ZERO) - , targetPos(ZERO) - , frameTime(0.0f) - , angleVel(0.0f) - , vel(0.0f) - , dist(0.0f) - , blend(true) - , blendPosSpeed(5.0f) - , blendRotSpeed(10.0f) - , blendFOVSpeed(5.0f) - , blendPosOffset(ZERO) - , blendRotOffset(IDENTITY) - , blendFOVOffset(0) - , justActivated(false) - , viewIDLast(0) - , positionLast(ZERO) - , rotationLast(IDENTITY) - , FOVLast(0) - { - } - - void SetViewID(uint8 id, bool shouldBlend = true) - { - viewID = id; - if (!shouldBlend) - { - viewIDLast = id; - } - } - - void UpdateBlending(float curFrameTime) - { - //if necessary blend the view - if (blend) - { - if (viewIDLast != viewID) - { - blendPosOffset = positionLast - position; - blendRotOffset = (rotationLast / rotation).GetNormalized(); - blendFOVOffset = FOVLast - fov; - } - else - { - blendPosOffset -= blendPosOffset * min(1.0f, blendPosSpeed * curFrameTime); - blendRotOffset = Quat::CreateSlerp(blendRotOffset, IDENTITY, min(1.0f, curFrameTime * blendRotSpeed)); - blendFOVOffset -= blendFOVOffset * min(1.0f, blendFOVSpeed * curFrameTime); - } - - position += blendPosOffset; - rotation *= blendRotOffset; - fov += blendFOVOffset; - } - else - { - blendPosOffset.zero(); - blendRotOffset.SetIdentity(); - blendFOVOffset = 0.0f; - } - - viewIDLast = viewID; - } - - void BlendFrom(const SViewParams& params) - { - positionLast = params.position; - rotationLast = params.rotation; - FOVLast = params.fov; - localRotationLast = params.localRotationLast; - blend = true; - viewIDLast = 0xff; - } - - void SaveLast() - { - if (viewIDLast != 0xff) - { - positionLast = position; - rotationLast = rotation; - FOVLast = fov; - } - else - { - viewIDLast = 0xfe; - } - } - - void ResetBlending() - { - blendPosOffset.zero(); - blendRotOffset.SetIdentity(); - } - - const Vec3& GetPositionLast() { return positionLast; } - const Quat& GetRotationLast() { return rotationLast; } - - // - Vec3 position;//view position - Quat rotation;//view orientation - Quat localRotationLast; - - float nearplane;//custom near clipping plane, 0 means use engine defaults - float farplane;//custom far clipping plane, 0 means use engine defaults - float fov; - - uint8 viewID; - - //view shake status - bool groundOnly; - float shakingRatio;//whats the ammount of shake, from 0.0 to 1.0 - Quat currentShakeQuat;//what the current angular shake - Vec3 currentShakeShift;//what is the current translational shake - - // For damping camera movement. - Vec3 targetPos; // Where the target was. - float frameTime; // current dt. - float angleVel; // previous rate of change of angle. - float vel; // previous rate of change of dist between target and camera. - float dist; // previous dist of cam from target - - //blending - bool blend; - float blendPosSpeed; - float blendRotSpeed; - float blendFOVSpeed; - Vec3 blendPosOffset; - Quat blendRotOffset; - float blendFOVOffset; - bool justActivated; - -private: - uint8 viewIDLast; - Vec3 positionLast;//last view position - Quat rotationLast;//last view orientation - float FOVLast; -}; - -struct IAnimSequence; -struct SCameraParams; - -struct IView -{ - virtual ~IView() {} - struct SShakeParams - { - Ang3 shakeAngle; - Vec3 shakeShift; - float sustainDuration; - float fadeInDuration; - float fadeOutDuration; - float frequency; - float randomness; - int shakeID; - bool bFlipVec; - bool bUpdateOnly; - bool bGroundOnly; - bool bPermanent; // if true, sustainDuration is ignored - bool isSmooth; - - SShakeParams() - : shakeAngle(0, 0, 0) - , shakeShift(0, 0, 0) - , sustainDuration(0) - , fadeInDuration(0) - , fadeOutDuration(2.f) - , frequency(0) - , randomness(0) - , shakeID(0) - , bFlipVec(true) - , bUpdateOnly(false) - , bGroundOnly(false) - , bPermanent(false) - , isSmooth(false) - { - } - }; - - virtual void Release() = 0; - virtual void Update(float frameTime, bool isActive) = 0; - virtual void LinkTo(AZ::Entity* follow) = 0; - virtual void Unlink() = 0; - virtual AZ::EntityId GetLinkedId() = 0; - virtual CCamera& GetCamera() = 0; - virtual const CCamera& GetCamera() const = 0; - - virtual void PostSerialize() = 0; - virtual void SetCurrentParams(SViewParams& params) = 0; - virtual const SViewParams* GetCurrentParams() = 0; - virtual void SetViewShake(Ang3 shakeAngle, Vec3 shakeShift, float duration, float frequency, float randomness, int shakeID, bool bFlipVec = true, bool bUpdateOnly = false, bool bGroundOnly = false) = 0; - virtual void SetViewShakeEx(const SShakeParams& params) = 0; - virtual void StopShake(int shakeID) = 0; - virtual void ResetShaking() = 0; - virtual void ResetBlending() = 0; - virtual void SetFrameAdditiveCameraAngles(const Ang3& addFrameAngles) = 0; - virtual void SetScale(const float scale) = 0; - virtual void SetZoomedScale(const float scale) = 0; - virtual void SetActive(const bool bActive) = 0; -}; - -struct IViewSystemListener -{ - virtual ~IViewSystemListener() {} - virtual bool OnBeginCutScene(IAnimSequence* pSeq, bool bResetFX) = 0; - virtual bool OnEndCutScene(IAnimSequence* pSeq) = 0; - virtual bool OnCameraChange(const SCameraParams& cameraParams) = 0; -}; - -struct IViewSystem -{ - virtual ~IViewSystem() {} - virtual void Release() = 0; - virtual void Update(float frameTime) = 0; - virtual IView* CreateView() = 0; - virtual unsigned int AddView(IView* pView) = 0; - virtual void RemoveView(IView* pView) = 0; - virtual void RemoveView(unsigned int viewId) = 0; - - virtual void SetActiveView(IView* pView) = 0; - virtual void SetActiveView(unsigned int viewId) = 0; - - //utility functions - virtual IView* GetView(unsigned int viewId) = 0; - virtual IView* GetActiveView() = 0; - - virtual unsigned int GetViewId(IView* pView) = 0; - virtual unsigned int GetActiveViewId() = 0; - - virtual IView* GetViewByEntityId(const AZ::EntityId& id, bool forceCreate = false) = 0; - - virtual bool AddListener(IViewSystemListener* pListener) = 0; - virtual bool RemoveListener(IViewSystemListener* pListener) = 0; - - virtual void PostSerialize() = 0; - - // Get default distance to near clipping plane. - virtual float GetDefaultZNear() = 0; - - virtual void SetBlendParams(float fBlendPosSpeed, float fBlendRotSpeed, bool performBlendOut) = 0; - - // Used by time demo playback. - virtual void SetOverrideCameraRotation(bool bOverride, Quat rotation) = 0; - - virtual bool IsPlayingCutScene() const = 0; - - virtual void SetDeferredViewSystemUpdate(bool const bDeferred) = 0; - virtual bool UseDeferredViewSystemUpdate() const = 0; - virtual void SetControlAudioListeners(bool const bActive) = 0; - virtual void ForceUpdate(float elapsed) = 0; -}; diff --git a/Code/Legacy/CryCommon/LyShine/Animation/IUiAnimation.h b/Code/Legacy/CryCommon/LyShine/Animation/IUiAnimation.h index be449bb6ad..a678e238e2 100644 --- a/Code/Legacy/CryCommon/LyShine/Animation/IUiAnimation.h +++ b/Code/Legacy/CryCommon/LyShine/Animation/IUiAnimation.h @@ -9,7 +9,6 @@ #include #include -#include #include #include #include diff --git a/Code/Legacy/CryCommon/Mocks/ICryPakMock.h b/Code/Legacy/CryCommon/Mocks/ICryPakMock.h index 50cae45991..d32f31e5b8 100644 --- a/Code/Legacy/CryCommon/Mocks/ICryPakMock.h +++ b/Code/Legacy/CryCommon/Mocks/ICryPakMock.h @@ -11,9 +11,10 @@ #include #include #include +#include #include #include - +#include struct CryPakMock : AZ::IO::IArchive @@ -52,11 +53,11 @@ struct CryPakMock MOCK_METHOD1(PoolMalloc, void*(size_t size)); MOCK_METHOD1(PoolFree, void(void* p)); MOCK_METHOD3(PoolAllocMemoryBlock, AZStd::intrusive_ptr (size_t nSize, const char* sUsage, size_t nAlign)); - MOCK_METHOD2(FindFirst, AZ::IO::ArchiveFileIterator(AZStd::string_view pDir, AZ::IO::IArchive::EFileSearchType)); + MOCK_METHOD2(FindFirst, AZ::IO::ArchiveFileIterator(AZStd::string_view pDir, AZ::IO::FileSearchLocation)); MOCK_METHOD1(FindNext, AZ::IO::ArchiveFileIterator(AZ::IO::ArchiveFileIterator handle)); MOCK_METHOD1(FindClose, bool(AZ::IO::ArchiveFileIterator)); MOCK_METHOD1(GetModificationTime, AZ::IO::IArchive::FileTime(AZ::IO::HandleType f)); - MOCK_METHOD2(IsFileExist, bool(AZStd::string_view sFilename, EFileSearchLocation)); + MOCK_METHOD2(IsFileExist, bool(AZStd::string_view sFilename, AZ::IO::FileSearchLocation)); MOCK_METHOD1(IsFolder, bool(AZStd::string_view sPath)); MOCK_METHOD1(GetFileSizeOnDisk, AZ::IO::IArchive::SignedFileSize(AZStd::string_view filename)); MOCK_METHOD4(OpenArchive, AZStd::intrusive_ptr (AZStd::string_view szPath, AZStd::string_view bindRoot, uint32_t nFlags, AZStd::intrusive_ptr pData)); @@ -72,7 +73,7 @@ struct CryPakMock MOCK_METHOD1(UnregisterFileAccessSink, void(AZ::IO::IArchiveFileAccessSink * pSink)); MOCK_METHOD1(DisableRuntimeFileAccess, void(bool status)); MOCK_METHOD2(DisableRuntimeFileAccess, bool(bool status, AZStd::thread_id threadId)); - MOCK_CONST_METHOD0(GetPakPriority, AZ::IO::ArchiveLocationPriority()); + MOCK_CONST_METHOD0(GetPakPriority, AZ::IO::FileSearchPriority()); MOCK_CONST_METHOD1(GetFileOffsetOnMedia, uint64_t(AZStd::string_view szName)); MOCK_CONST_METHOD1(GetFileMediaType, EStreamSourceMediaType(AZStd::string_view szName)); MOCK_METHOD0(GetLevelPackOpenEvent, auto()->LevelPackOpenEvent*); diff --git a/Code/Legacy/CryCommon/Mocks/IRemoteConsoleMock.h b/Code/Legacy/CryCommon/Mocks/IRemoteConsoleMock.h deleted file mode 100644 index 21786a322c..0000000000 --- a/Code/Legacy/CryCommon/Mocks/IRemoteConsoleMock.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -#pragma once - -#include "IConsole.h" - -// Auto-generated by gmock_gen.py - -class IRemoteConsoleMock - : public IRemoteConsole -{ -public: - MOCK_METHOD0(RegisterConsoleVariables, void()); - MOCK_METHOD0(UnregisterConsoleVariables, void()); - MOCK_METHOD0(Start, void()); - MOCK_METHOD0(Stop, void()); - MOCK_CONST_METHOD0(IsStarted, bool()); - MOCK_METHOD1(AddLogMessage, void(const char* log)); - MOCK_METHOD1(AddLogWarning, void(const char* log)); - MOCK_METHOD1(AddLogError, void(const char* log)); - MOCK_METHOD0(Update, void()); - MOCK_METHOD2(RegisterListener, void(IRemoteConsoleListener* pListener, const char* name)); - MOCK_METHOD1(UnregisterListener, void(IRemoteConsoleListener* pListener)); -}; diff --git a/Code/Legacy/CryCommon/Mocks/ISystemMock.h b/Code/Legacy/CryCommon/Mocks/ISystemMock.h index a11b60fe68..4b6669614b 100644 --- a/Code/Legacy/CryCommon/Mocks/ISystemMock.h +++ b/Code/Legacy/CryCommon/Mocks/ISystemMock.h @@ -7,7 +7,6 @@ */ #pragma once #include -#include #ifdef GetUserName #undef GetUserName @@ -56,8 +55,6 @@ public: int(const char* text, const char* caption, unsigned int uType)); MOCK_METHOD1(CheckLogVerbosity, bool(int verbosity)); - MOCK_METHOD0(GetIViewSystem, - IViewSystem * ()); MOCK_METHOD0(GetILevelSystem, ILevelSystem * ()); MOCK_METHOD0(GetICmdLine, @@ -78,8 +75,6 @@ public: IRemoteConsole * ()); MOCK_METHOD0(GetISystemEventDispatcher, ISystemEventDispatcher * ()); - MOCK_METHOD0(GetITimer, - ITimer * ()); MOCK_METHOD1(SetForceNonDevMode, void(bool bValue)); MOCK_CONST_METHOD0(GetForceNonDevMode, diff --git a/Code/Legacy/CryCommon/Mocks/ITextureMock.h b/Code/Legacy/CryCommon/Mocks/ITextureMock.h deleted file mode 100644 index 8dc657195c..0000000000 --- a/Code/Legacy/CryCommon/Mocks/ITextureMock.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -#pragma once - -#include -#include - -class ITextureMock - : public ITexture -{ -public: - MOCK_METHOD0(AddRef, - int()); - MOCK_METHOD0(Release, - int()); - MOCK_METHOD0(ReleaseForce, - int()); - MOCK_CONST_METHOD0(GetName, - const char*()); -}; diff --git a/Code/Legacy/CryCommon/Mocks/ITimerMock.h b/Code/Legacy/CryCommon/Mocks/ITimerMock.h deleted file mode 100644 index 13cf5ef73a..0000000000 --- a/Code/Legacy/CryCommon/Mocks/ITimerMock.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -#ifndef CRYINCLUDE_CRYSYSTEM_ITIMERMOCK_H -#define CRYINCLUDE_CRYSYSTEM_ITIMERMOCK_H -#pragma once - -#include -#include -#include - -// Implements all common timing routines -class TimerMock - : public ITimer -{ -public: - MOCK_METHOD0(ResetTimer, void()); - MOCK_METHOD0(UpdateOnFrameStart, void()); - MOCK_CONST_METHOD1(GetCurrTime, float(ETimer which)); - MOCK_CONST_METHOD0(GetAsyncTime, CTimeValue()); - MOCK_METHOD0(GetAsyncCurTime, float()); - MOCK_CONST_METHOD1(GetFrameTime, float(ETimer which)); - MOCK_CONST_METHOD0(GetRealFrameTime, float()); - MOCK_CONST_METHOD0(GetTimeScale, float()); - MOCK_CONST_METHOD1(GetTimeScale, float(uint32 channel)); - MOCK_METHOD2(SetTimeScale, void(float scale, uint32 channel)); - MOCK_METHOD0(ClearTimeScales, void()); - MOCK_METHOD1(EnableTimer, void(bool bEnable)); - MOCK_METHOD0(GetFrameRate, float()); - MOCK_METHOD2(GetProfileFrameBlending, float(float* pfBlendTime, int* piBlendMode)); - MOCK_METHOD1(Serialize, void(TSerialize ser)); - MOCK_CONST_METHOD0(IsTimerEnabled, bool()); - MOCK_METHOD2(PauseTimer, bool(ETimer which, bool bPause)); - MOCK_METHOD1(IsTimerPaused, bool(ETimer which)); - MOCK_METHOD2(SetTimer, bool(ETimer which, float timeInSeconds)); - MOCK_METHOD2(SecondsToDateUTC, void(time_t time, struct tm& outDateUTC)); - MOCK_METHOD1(DateToSecondsUTC, time_t(struct tm& timePtr)); - MOCK_METHOD1(TicksToSeconds, float(int64 ticks)); - MOCK_METHOD0(GetTicksPerSecond, int64()); - - MOCK_CONST_METHOD1(GetFrameStartTime, const CTimeValue&(ETimer which)); - MOCK_METHOD0(CreateNewTimer, ITimer * ()); - - MOCK_METHOD2(EnableFixedTimeMode, void(bool enable, float timeStep)); -}; - -#endif // CRYINCLUDE_CRYSYSTEM_ITIMERMOCK_H diff --git a/Code/Legacy/CryCommon/Mocks/StubTimer.h b/Code/Legacy/CryCommon/Mocks/StubTimer.h deleted file mode 100644 index 95df46a49d..0000000000 --- a/Code/Legacy/CryCommon/Mocks/StubTimer.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -#pragma once - -#include -#include - -//! Simple stub timer that exposes a single simple interface for setting the current time. -class StubTimer - : public ITimer -{ -public: - // Stub methods - void SetTime(float seconds) - { - m_frameStartTime.SetSeconds(seconds); - } - //~Stub methods - - StubTimer(float frameTime) - : m_frameTime(frameTime) - , m_frameRate(1.0f / frameTime) - , m_frameStartTime(0.0f) - { - } - virtual ~StubTimer() {}; - - // ITimer - void ResetTimer() override {} - void UpdateOnFrameStart() override {} - float GetCurrTime([[maybe_unused]] ETimer which = ETIMER_GAME) const override - { - // return the same as the frame start time - return m_frameStartTime.GetSeconds(); - } - const CTimeValue& GetFrameStartTime([[maybe_unused]] ETimer which = ETIMER_GAME) const override - { - return m_frameStartTime; - } - CTimeValue GetAsyncTime() const override - { - return m_frameStartTime; - } - float GetAsyncCurTime() override - { - return m_frameStartTime.GetSeconds(); - } - float GetFrameTime([[maybe_unused]] ETimer which = ETIMER_GAME) const override - { - return m_frameTime; - } - float GetRealFrameTime() const override - { - return m_frameTime; - } - float GetTimeScale() const override - { - return 1.0f; - } - float GetTimeScale([[maybe_unused]] uint32 channel) const override - { - return 1.0f; - } - void ClearTimeScales() override {} - void SetTimeScale([[maybe_unused]] float s, [[maybe_unused]] uint32 channel = 0) override {} - void EnableTimer([[maybe_unused]] bool bEnable) override {} - bool IsTimerEnabled() const override - { - return true; - } - float GetFrameRate() override - { - return m_frameRate; - } - float GetProfileFrameBlending([[maybe_unused]] float* pfBlendTime = 0, [[maybe_unused]] int* piBlendMode = 0) override - { - return 0.0f; - } - void Serialize([[maybe_unused]] TSerialize ser) override {} - bool PauseTimer([[maybe_unused]] ETimer which, [[maybe_unused]] bool bPause) override { return false; } - bool IsTimerPaused([[maybe_unused]] ETimer which) override { return false; } - bool SetTimer([[maybe_unused]] ETimer which, [[maybe_unused]] float timeInSeconds) override { return false; } - void SecondsToDateUTC([[maybe_unused]] time_t time, [[maybe_unused]] struct tm& outDateUTC) override {} - time_t DateToSecondsUTC([[maybe_unused]] struct tm& timePtr) override - { - return 0; - } - float TicksToSeconds([[maybe_unused]] int64 ticks) override - { - return 0.0f; - } - int64 GetTicksPerSecond() override - { - return 0; - } - ITimer* CreateNewTimer() override - { - return nullptr; - } - void EnableFixedTimeMode([[maybe_unused]] bool enable, [[maybe_unused]] float timeStep) override {} - // ~ITimer - -private: - CTimeValue m_frameStartTime; - float m_frameTime; - float m_frameRate; -}; diff --git a/Code/Legacy/CryCommon/Timer.h b/Code/Legacy/CryCommon/Timer.h deleted file mode 100644 index c8c4857971..0000000000 --- a/Code/Legacy/CryCommon/Timer.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - - -#pragma once -#ifndef CRYINCLUDE_CRYCOMMON_TIMER_H -#define CRYINCLUDE_CRYCOMMON_TIMER_H - -struct Timer -{ - Timer() - : endTime(-1.0f) - { - } - - void Reset(float duration, float variation = 0.0f) - { - endTime = gEnv->pSystem->GetITimer()->GetFrameStartTime() + CTimeValue(duration) + CTimeValue(cry_random(0.0f, variation)); - } - - bool Elapsed() const - { - return endTime >= 0.0f && gEnv->pSystem->GetITimer()->GetFrameStartTime() >= endTime; - } - - float GetSecondsLeft() const - { - return (endTime - gEnv->pSystem->GetITimer()->GetFrameStartTime()).GetSeconds(); - } - - CTimeValue endTime; -}; -#endif // CRYINCLUDE_CRYCOMMON_TIMER_H diff --git a/Code/Legacy/CryCommon/VRCommon.h b/Code/Legacy/CryCommon/VRCommon.h deleted file mode 100644 index 408da8453c..0000000000 --- a/Code/Legacy/CryCommon/VRCommon.h +++ /dev/null @@ -1,255 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#pragma once - -#include -#include -#include -#include -#include - -#include - -#include - -namespace AZ -{ - namespace VR - { - /// - /// Enum to describe the stereo layout of content - /// - enum class StereoLayout : AZ::u32 - { - TOP_BOTTOM = 0, //Top is Left, Bottom is Right - BOTTOM_TOP, //Bottom is Left, Top is Right - //TODO: Figure out how to support LEFT_RIGHT and RIGHT_LEFT - //TOP_BOTTOM is preferred because of the way that scan lines are ordered - //LEFT_RIGHT, //Left is Left, Right is Right - //RIGHT_LEFT, //Right is Left, Left is Right - UNKNOWN //This content is either not stereo or its stereo format cannot be determined - }; - - - /// - /// Eye-specific camera info. - /// - struct PerEyeCameraInfo - { - float fov; ///< Field-of-view of this eye. Note that each eye may have different fields-of-view. - float aspectRatio; ///< Aspect-ratio of this eye. Note that each eye may have different aspect ratios. - AZ::Vector3 eyeOffset; ///< Camera-space offset for this eye relative to the non-stereo view. - - struct AsymmetricFrustumPlane - { - float horizontalDistance; ///< Horizontal frustum shift relative to the non-stereo frustum. - float verticalDistance; ///< Vertical frustum shift relative to the non-stereo frustum. - - AsymmetricFrustumPlane() - : horizontalDistance(1.6f) - , verticalDistance(0.9f) - { - } - }; - - AsymmetricFrustumPlane frustumPlane; - - PerEyeCameraInfo() - : aspectRatio(16.0f / 9.0f) - , fov(DEG2RAD(1.5f)) - , eyeOffset(0.65f, 0.0f, 0.0f) - { - } - }; - - /// - /// Types of social screens supported by the engine. - /// - enum class HMDSocialScreen - { - Off = -1, - UndistortedLeftEye, - UndistortedRightEye, - }; - - /// - /// Supported tracking levels. - /// - enum class HMDTrackingLevel - { - kHead, ///< The sensor reads as if the player is standing. - kFloor, ///< Sensor reads as if the player is seated/on the floor. - kFixed ///< Translation information is ignored, the view appears at the HMD origin - }; - - /// - /// Human-readable info about the connected device. This info is printed to the screen when a new device is detected. - /// - struct HMDDeviceInfo - { - AZ_TYPE_INFO(HMDDeviceInfo, "{DB83AF23-CF4E-491D-A346-F5DC834D1C74}") - - static void Reflect(AZ::ReflectContext* context); - - const char* productName; - const char* manufacturer; - - // Rendering resolution is defined as containing just a single eye. - unsigned int renderWidth; - unsigned int renderHeight; - - // Field of view is defined as the total field of view of the device which includes both eyes. - float fovH; - float fovV; - - HMDDeviceInfo() - : productName(nullptr) - , manufacturer(nullptr) - , renderWidth(0) - , renderHeight(0) - , fovH(0.0f) - , fovV(0.0f) - { - } - }; - - enum HMDStatus - { - HMDStatus_OrientationTracked = BIT(1), - HMDStatus_PositionTracked = BIT(2), - HMDStatus_CameraPoseTracked = BIT(3), - HMDStatus_PositionConnected = BIT(4), - HMDStatus_HmdConnected = BIT(5), - - HMDStatus_IsUsable = HMDStatus_HmdConnected | HMDStatus_OrientationTracked, - HMDStatus_ControllerValid = HMDStatus_OrientationTracked | HMDStatus_PositionConnected, - }; - - /// - /// Single device render target created and managed by the device. The renderer should make use of this render target in order to properly display - /// the rendered content to this HMD. - /// - struct HMDRenderTarget - { - void* deviceSwapTextureSet; ///< Device-represented texture. These textures are created and maintained by the HMD's specific SDK. - uint32 numTextures; ///< Number of textures inside of the swap set. - void** textures; ///< Access to the internal device textures. This array is exactly numTextures long. - - HMDRenderTarget() - : deviceSwapTextureSet(nullptr) - , numTextures(0) - , textures(nullptr) - { - } - }; - - enum class ControllerIndex - : uint32_t - { - LeftHand = 0, - RightHand, - MaxNumControllers - }; - - /// - /// A specific pose of the HMD. Every HMD device has their own way of representing their - /// current pose in 3D space. This structure acts as a common data set between any connected - /// device and the rest of the system. - /// - struct PoseState - { - AZ_TYPE_INFO(PoseState, "{040F18D7-1163-477B-8908-47CC35737DCE}") - - static void Reflect(AZ::ReflectContext* context); - - AZ::Quaternion orientation; ///< The current orientation of the HMD. - AZ::Vector3 position; ///< The current position of the HMD in local space as an offset from the centered pose. - - PoseState() - : orientation(AZ::Quaternion::CreateIdentity()) - , position(AZ::Vector3::CreateZero()) - { - } - }; - - /// - /// Dynamics (accelerations and velocities) of the current HMD. Many HMDs have the ability to track the current movements - /// of the VR device(s) for prediction. Note that not all devices may support velocities/accelerations. - /// - struct DynamicsState - { - AZ_TYPE_INFO(DynamicsState, "{5C5E2249-8844-4790-9F7A-88703A9C18DD}") - - static void Reflect(AZ::ReflectContext* context); - - /// Angular velocity/acceleration reported in local space. - AZ::Vector3 angularVelocity; - AZ::Vector3 angularAcceleration; - - /// Linear velocity/acceleration reported in local space. - AZ::Vector3 linearVelocity; - AZ::Vector3 linearAcceleration; - - DynamicsState() - : angularVelocity(0) - , angularAcceleration(0) - , linearVelocity(0) - , linearAcceleration(0) - { - } - }; - - /// - /// While tracking the HMD, certain parts of the devices may go off/online. For example, - /// a controller may be disconnected or the HMD may lose rotational tracking temporarily. This - /// struct stores a tracked state meaning a pose as well as flags that denote what part of the pose - /// is currently valid. - /// - struct TrackingState - { - AZ_TYPE_INFO(TrackingState, "{E9CB08E8-9996-478B-AABB-EC8CCCF3B403}") - - typedef uint32 StatusFlags; - - bool CheckStatusFlags(StatusFlags flags) const - { - // Multiple flags can be checked simultaneously. - return (statusFlags & flags) == flags; - } - - static void Reflect(AZ::ReflectContext* context); - - PoseState pose; ///< Current pose relating to this tracked state. - DynamicsState dynamics; ///< Current state of the physics dynamics for this device. - StatusFlags statusFlags; ///< Bitfield denoting current tracking status. Flags defined in the enum HMDStatus. - - TrackingState() - : statusFlags(0) - { - } - }; - - /// - /// Rectangle storing the playspace defined by the user when - /// setting up VR device. - /// - struct Playspace - { - AZ_TYPE_INFO(Playspace, "{05934537-80AA-4ABA-AB2C-71096FA7DC74}") - AZ_CLASS_ALLOCATOR_DECL - - static void Reflect(AZ::ReflectContext* context); - - bool isValid = false; ///< The playspace data is valid (calibrated). - AZStd::array corners; ///< Playspace corners defined in device-local space. The center of the playspace is 0. - }; - - }//namespace VR - AZ_TYPE_INFO_SPECIALIZE(VR::ControllerIndex, "{90D4C80E-A1CC-4DBF-A131-0082C75835E8}"); -}//namespace AZ diff --git a/Code/Legacy/CryCommon/crycommon_files.cmake b/Code/Legacy/CryCommon/crycommon_files.cmake index b3db694ca1..d3e13525d7 100644 --- a/Code/Legacy/CryCommon/crycommon_files.cmake +++ b/Code/Legacy/CryCommon/crycommon_files.cmake @@ -34,14 +34,10 @@ set(FILES StatObjBus.h ISystem.h ITexture.h - ITimer.h IValidator.h - IViewSystem.h IWindowMessageHandler.h IXml.h MicrophoneBus.h - HMDBus.h - VRCommon.h INavigationSystem.h IMNM.h SerializationTypes.h @@ -71,7 +67,6 @@ set(FILES SimpleSerialize.h smartptr.h StlUtils.h - Timer.h TimeValue.h VectorMap.h VertexFormats.h @@ -81,7 +76,6 @@ set(FILES Cry_Matrix34.h Cry_Matrix44.h Cry_Vector4.h - Cry_Camera.h Cry_Color.h Cry_Geo.h Cry_GeoDistance.h diff --git a/Code/Legacy/CryCommon/crycommon_testing_files.cmake b/Code/Legacy/CryCommon/crycommon_testing_files.cmake index 9c3427d529..42deecd576 100644 --- a/Code/Legacy/CryCommon/crycommon_testing_files.cmake +++ b/Code/Legacy/CryCommon/crycommon_testing_files.cmake @@ -12,8 +12,5 @@ set(FILES Mocks/ICryPakMock.h Mocks/ILogMock.h Mocks/ISystemMock.h - Mocks/ITimerMock.h Mocks/ICVarMock.h - Mocks/ITextureMock.h - Mocks/IRemoteConsoleMock.h ) diff --git a/Code/Legacy/CrySystem/CrySystem_precompiled.h b/Code/Legacy/CrySystem/CrySystem_precompiled.h index 3ececa6514..41090ff321 100644 --- a/Code/Legacy/CrySystem/CrySystem_precompiled.h +++ b/Code/Legacy/CrySystem/CrySystem_precompiled.h @@ -71,7 +71,6 @@ // CRY Stuff //////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// #include "Cry_Math.h" -#include #include #include #include @@ -90,7 +89,6 @@ inline int RoundToClosestMB(size_t memSize) #include #include #include -#include #include #include #include diff --git a/Code/Legacy/CrySystem/LevelSystem/LevelSystem.cpp b/Code/Legacy/CrySystem/LevelSystem/LevelSystem.cpp index 3a2bba64d3..8945761184 100644 --- a/Code/Legacy/CrySystem/LevelSystem/LevelSystem.cpp +++ b/Code/Legacy/CrySystem/LevelSystem/LevelSystem.cpp @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -202,24 +203,22 @@ CLevelSystem::CLevelSystem(ISystem* pSystem, const char* levelsFolder) { return; } - auto pPak = gEnv->pCryPak; + auto archive = AZ::Interface::Get(); - if (AZ::IO::IArchive::LevelPackOpenEvent* levelPakOpenEvent = pPak->GetLevelPackOpenEvent()) + if (AZ::IO::IArchive::LevelPackOpenEvent* levelPakOpenEvent = archive->GetLevelPackOpenEvent()) { - m_levelPackOpenHandler = AZ::IO::IArchive::LevelPackOpenEvent::Handler([this](const AZStd::vector& levelDirs) + m_levelPackOpenHandler = AZ::IO::IArchive::LevelPackOpenEvent::Handler([this](const AZStd::vector& levelDirs) { - for (AZStd::string dir : levelDirs) + for (AZ::IO::Path levelDir : levelDirs) { - AZ::StringFunc::Path::StripComponent(dir, true); - AZStd::string searchPattern = dir + AZ_FILESYSTEM_SEPARATOR_WILDCARD; bool modFolder = false; - PopulateLevels(searchPattern, dir, gEnv->pCryPak, modFolder, false); + PopulateLevels((levelDir / "*").Native(), levelDir.Native(), AZ::Interface::Get(), modFolder, false); } }); m_levelPackOpenHandler.Connect(*levelPakOpenEvent); } - if (AZ::IO::IArchive::LevelPackCloseEvent* levelPakCloseEvent = pPak->GetLevelPackCloseEvent()) + if (AZ::IO::IArchive::LevelPackCloseEvent* levelPakCloseEvent = archive->GetLevelPackCloseEvent()) { m_levelPackCloseHandler = AZ::IO::IArchive::LevelPackCloseEvent::Handler([this](AZStd::string_view) { @@ -287,7 +286,7 @@ void CLevelSystem::ScanFolder(const char* subfolder, bool modFolder) AZStd::unordered_set pakList; - AZ::IO::ArchiveFileIterator handle = pPak->FindFirst(search.c_str(), AZ::IO::IArchive::eFileSearchType_AllowOnDiskOnly); + AZ::IO::ArchiveFileIterator handle = pPak->FindFirst(search.c_str(), AZ::IO::FileSearchLocation::OnDisk); if (handle) { @@ -334,86 +333,85 @@ void CLevelSystem::ScanFolder(const char* subfolder, bool modFolder) } void CLevelSystem::PopulateLevels( - AZStd::string searchPattern, AZStd::string& folder, AZ::IO::IArchive* pPak, bool& modFolder, bool fromFileSystemOnly) + AZStd::string searchPattern, const AZStd::string& folder, AZ::IO::IArchive* pPak, bool& modFolder, bool fromFileSystemOnly) { + // allow this find first to actually touch the file system + // (causes small overhead but with minimal amount of levels this should only be around 150ms on actual DVD Emu) + AZ::IO::ArchiveFileIterator handle = pPak->FindFirst(searchPattern.c_str(), + fromFileSystemOnly ? AZ::IO::FileSearchLocation::OnDisk : AZ::IO::FileSearchLocation::InPak); + + if (handle) { - // allow this find first to actually touch the file system - // (causes small overhead but with minimal amount of levels this should only be around 150ms on actual DVD Emu) - AZ::IO::ArchiveFileIterator handle = pPak->FindFirst(searchPattern.c_str(), AZ::IO::IArchive::eFileSearchType_AllowOnDiskOnly); - - if (handle) + do { - do + if ((handle.m_fileDesc.nAttrib & AZ::IO::FileDesc::Attribute::Subdirectory) != AZ::IO::FileDesc::Attribute::Subdirectory || + handle.m_filename == "." || handle.m_filename == "..") { - if ((handle.m_fileDesc.nAttrib & AZ::IO::FileDesc::Attribute::Subdirectory) != AZ::IO::FileDesc::Attribute::Subdirectory || - handle.m_filename == "." || handle.m_filename == "..") - { - continue; - } + continue; + } - AZStd::string levelFolder; - if (fromFileSystemOnly) - { - levelFolder = - (folder.empty() ? "" : (folder + "/")) + AZStd::string(handle.m_filename.data(), handle.m_filename.size()); - } - else - { - AZStd::string levelName(AZ::IO::PathView(handle.m_filename).Filename().Native()); - levelFolder = (folder.empty() ? "" : (folder + "/")) + levelName; - } + AZStd::string levelFolder; + if (fromFileSystemOnly) + { + levelFolder = + (folder.empty() ? "" : (folder + "/")) + AZStd::string(handle.m_filename.data(), handle.m_filename.size()); + } + else + { + AZStd::string levelName(AZ::IO::PathView(handle.m_filename).Filename().Native()); + levelFolder = (folder.empty() ? "" : (folder + "/")) + levelName; + } - AZStd::string levelPath; - if (AZ::StringFunc::StartsWith(levelFolder.c_str(), m_levelsFolder.c_str())) + AZStd::string levelPath; + if (AZ::StringFunc::StartsWith(levelFolder.c_str(), m_levelsFolder.c_str())) + { + levelPath = levelFolder; + } + else + { + levelPath = m_levelsFolder + "/" + levelFolder; + } + + const AZStd::string levelPakName = levelPath + "/" + LevelPakName; + const AZStd::string levelInfoName = levelPath + "/levelinfo.xml"; + + if (!pPak->IsFileExist( + levelPakName.c_str(), + fromFileSystemOnly ? AZ::IO::FileSearchLocation::OnDisk : AZ::IO::FileSearchLocation::InPak) && + !pPak->IsFileExist( + levelInfoName.c_str(), + fromFileSystemOnly ? AZ::IO::FileSearchLocation::OnDisk : AZ::IO::FileSearchLocation::InPak)) + { + ScanFolder(levelFolder.c_str(), modFolder); + continue; + } + + // With the level.pak workflow, levelPath and levelName will point to a directory. + // levelPath: levels/mylevel + // levelName: mylevel + CLevelInfo levelInfo; + levelInfo.m_levelPath = levelPath; + levelInfo.m_levelName = levelFolder; + levelInfo.m_isPak = !fromFileSystemOnly; + + CLevelInfo* pExistingInfo = GetLevelInfoInternal(levelInfo.m_levelName); + + // Don't add the level if it is already in the list + if (pExistingInfo == NULL) + { + m_levelInfos.push_back(levelInfo); + } + else + { + // Levels in bundles take priority over levels outside bundles. + if (!pExistingInfo->m_isPak && levelInfo.m_isPak) { - levelPath = levelFolder; - } - else - { - levelPath = m_levelsFolder + "/" + levelFolder; + *pExistingInfo = levelInfo; } + } + } while (handle = pPak->FindNext(handle)); - const AZStd::string levelPakName = levelPath + "/" + LevelPakName; - const AZStd::string levelInfoName = levelPath + "/levelinfo.xml"; - - if (!pPak->IsFileExist( - levelPakName.c_str(), - fromFileSystemOnly ? AZ::IO::IArchive::eFileLocation_OnDisk : AZ::IO::IArchive::eFileLocation_InPak) && - !pPak->IsFileExist( - levelInfoName.c_str(), - fromFileSystemOnly ? AZ::IO::IArchive::eFileLocation_OnDisk : AZ::IO::IArchive::eFileLocation_InPak)) - { - ScanFolder(levelFolder.c_str(), modFolder); - continue; - } - - // With the level.pak workflow, levelPath and levelName will point to a directory. - // levelPath: levels/mylevel - // levelName: mylevel - CLevelInfo levelInfo; - levelInfo.m_levelPath = levelPath; - levelInfo.m_levelName = levelFolder; - levelInfo.m_isPak = !fromFileSystemOnly; - - CLevelInfo* pExistingInfo = GetLevelInfoInternal(levelInfo.m_levelName); - - // Don't add the level if it is already in the list - if (pExistingInfo == NULL) - { - m_levelInfos.push_back(levelInfo); - } - else - { - // Levels in bundles take priority over levels outside bundles. - if (!pExistingInfo->m_isPak && levelInfo.m_isPak) - { - *pExistingInfo = levelInfo; - } - } - } while (handle = pPak->FindNext(handle)); - - pPak->FindClose(handle); - } + pPak->FindClose(handle); } } @@ -553,8 +551,6 @@ ILevel* CLevelSystem::LoadLevelInternal(const char* _levelName) // Not remove a scope!!! { - //m_levelLoadStartTime = gEnv->pTimer->GetAsyncTime(); - CLevelInfo* pLevelInfo = GetLevelInfoInternal(levelName); if (!pLevelInfo) @@ -693,7 +689,9 @@ void CLevelSystem::PrepareNextLevel(const char* levelName) // This work not required in-editor. if (!gEnv || !gEnv->IsEditor()) { - m_levelLoadStartTime = gEnv->pTimer->GetAsyncTime(); + const AZ::TimeMs timeMs = AZ::GetRealElapsedTimeMs(); + const double timeSec = AZ::TimeMsToSecondsDouble(timeMs); + m_levelLoadStartTime = CTimeValue(timeSec); // Open pak file for a new level. pLevelInfo->OpenLevelPak(); @@ -726,7 +724,8 @@ void CLevelSystem::OnLoadingStart(const char* levelName) gEnv->pCryPak->RecordFileOpen(AZ::IO::IArchive::RFOM_Level); } - m_fLastTime = gEnv->pTimer->GetAsyncCurTime(); + const AZ::TimeMs timeMs = AZ::GetRealElapsedTimeMs(); + m_fLastTime = AZ::TimeMsToSeconds(timeMs); GetISystem()->GetISystemEventDispatcher()->OnSystemEvent(ESYSTEM_EVENT_LEVEL_LOAD_START, 0, 0); @@ -757,7 +756,9 @@ void CLevelSystem::OnLoadingError(const char* levelName, const char* error) //------------------------------------------------------------------------ void CLevelSystem::OnLoadingComplete(const char* levelName) { - CTimeValue t = gEnv->pTimer->GetAsyncTime(); + const AZ::TimeMs timeMs = AZ::GetRealElapsedTimeMs(); + const double timeSec = AZ::TimeMsToSecondsDouble(timeMs); + const CTimeValue t(timeSec); m_fLastLevelLoadTime = (t - m_levelLoadStartTime).GetSeconds(); LogLoadingTime(); @@ -851,7 +852,7 @@ void CLevelSystem::UnloadLevel() gEnv->pCryPak->DisableRuntimeFileAccess(false); } - CTimeValue tBegin = gEnv->pTimer->GetAsyncTime(); + const AZ::TimeMs beginTimeMs = AZ::GetRealElapsedTimeMs(); // Clear level entities and prefab instances. EBUS_EVENT(AzFramework::GameEntityContextRequestBus, ResetGameContext); @@ -889,8 +890,8 @@ void CLevelSystem::UnloadLevel() m_bLevelLoaded = false; - CTimeValue tUnloadTime = gEnv->pTimer->GetAsyncTime() - tBegin; - CryLog("UnloadLevel End: %.1f sec", tUnloadTime.GetSeconds()); + [[maybe_unused]] const AZ::TimeMs unloadTimeMs = AZ::GetRealElapsedTimeMs() - beginTimeMs; + CryLog("UnloadLevel End: %.1f sec", AZ::TimeMsToSeconds(unloadTimeMs)); // Must be sent last. // Cleanup all containers diff --git a/Code/Legacy/CrySystem/LevelSystem/LevelSystem.h b/Code/Legacy/CrySystem/LevelSystem/LevelSystem.h index d7230347e9..d0a39f30b0 100644 --- a/Code/Legacy/CrySystem/LevelSystem/LevelSystem.h +++ b/Code/Legacy/CrySystem/LevelSystem/LevelSystem.h @@ -11,6 +11,7 @@ #include "ILevelSystem.h" #include +#include // [LYN-2376] Remove the entire file once legacy slice support is removed @@ -115,7 +116,7 @@ private: void ScanFolder(const char* subfolder, bool modFolder); void PopulateLevels( - AZStd::string searchPattern, AZStd::string& folder, AZ::IO::IArchive* pPak, bool& modFolder, bool fromFileSystemOnly); + AZStd::string searchPattern, const AZStd::string& folder, AZ::IO::IArchive* pPak, bool& modFolder, bool fromFileSystemOnly); void PrepareNextLevel(const char* levelName); ILevel* LoadLevelInternal(const char* _levelName); diff --git a/Code/Legacy/CrySystem/LevelSystem/SpawnableLevelSystem.cpp b/Code/Legacy/CrySystem/LevelSystem/SpawnableLevelSystem.cpp index b2b67c3b75..b91c8f2ca9 100644 --- a/Code/Legacy/CrySystem/LevelSystem/SpawnableLevelSystem.cpp +++ b/Code/Legacy/CrySystem/LevelSystem/SpawnableLevelSystem.cpp @@ -24,8 +24,8 @@ #include #include #include - #include +#include namespace LegacyLevelSystem { @@ -368,7 +368,9 @@ namespace LegacyLevelSystem // This work not required in-editor. if (!gEnv || !gEnv->IsEditor()) { - m_levelLoadStartTime = gEnv->pTimer->GetAsyncTime(); + const AZ::TimeMs timeMs = AZ::GetRealElapsedTimeMs(); + const double timeSec = AZ::TimeMsToSecondsDouble(timeMs); + m_levelLoadStartTime = CTimeValue(timeSec); // switched to level heap, so now imm start the loading screen (renderer will be reinitialized in the levelheap) gEnv->pSystem->GetISystemEventDispatcher()->OnSystemEvent(ESYSTEM_EVENT_LEVEL_LOAD_START_LOADINGSCREEN, 0, 0); @@ -409,7 +411,8 @@ namespace LegacyLevelSystem gEnv->pCryPak->RecordFileOpen(AZ::IO::IArchive::RFOM_Level); } - m_fLastTime = gEnv->pTimer->GetAsyncCurTime(); + const AZ::TimeMs timeMs = AZ::GetRealElapsedTimeMs(); + m_fLastTime = AZ::TimeMsToSeconds(timeMs); GetISystem()->GetISystemEventDispatcher()->OnSystemEvent(ESYSTEM_EVENT_LEVEL_LOAD_START, 0, 0); @@ -433,7 +436,9 @@ namespace LegacyLevelSystem //------------------------------------------------------------------------ void SpawnableLevelSystem::OnLoadingComplete(const char* levelName) { - CTimeValue t = gEnv->pTimer->GetAsyncTime(); + const AZ::TimeMs timeMs = AZ::GetRealElapsedTimeMs(); + const double timeSec = AZ::TimeMsToSecondsDouble(timeMs); + const CTimeValue t(timeSec); m_fLastLevelLoadTime = (t - m_levelLoadStartTime).GetSeconds(); LogLoadingTime(); @@ -532,7 +537,7 @@ namespace LegacyLevelSystem gEnv->pCryPak->DisableRuntimeFileAccess(false); } - CTimeValue tBegin = gEnv->pTimer->GetAsyncTime(); + const AZ::TimeMs beginTimeMs = AZ::GetRealElapsedTimeMs(); // Clear level entities and prefab instances. EBUS_EVENT(AzFramework::GameEntityContextRequestBus, ResetGameContext); @@ -561,8 +566,8 @@ namespace LegacyLevelSystem m_bLevelLoaded = false; - CTimeValue tUnloadTime = gEnv->pTimer->GetAsyncTime() - tBegin; - AZ_TracePrintf("LevelSystem", "UnloadLevel End: %.1f sec\n", tUnloadTime.GetSeconds()); + [[maybe_unused]] const AZ::TimeMs unloadTimeMs = AZ::GetRealElapsedTimeMs() - beginTimeMs; + AZ_TracePrintf("LevelSystem", "UnloadLevel End: %.1f sec\n", AZ::TimeMsToSeconds(unloadTimeMs)); // Must be sent last. // Cleanup all containers diff --git a/Code/Legacy/CrySystem/LevelSystem/SpawnableLevelSystem.h b/Code/Legacy/CrySystem/LevelSystem/SpawnableLevelSystem.h index 0a7b821262..b2e74530ac 100644 --- a/Code/Legacy/CrySystem/LevelSystem/SpawnableLevelSystem.h +++ b/Code/Legacy/CrySystem/LevelSystem/SpawnableLevelSystem.h @@ -12,6 +12,7 @@ #include #include #include +#include namespace LegacyLevelSystem { diff --git a/Code/Legacy/CrySystem/LocalizedStringManager.cpp b/Code/Legacy/CrySystem/LocalizedStringManager.cpp index a87800899d..2d43f5b4ee 100644 --- a/Code/Legacy/CrySystem/LocalizedStringManager.cpp +++ b/Code/Legacy/CrySystem/LocalizedStringManager.cpp @@ -136,6 +136,44 @@ static const char* PLATFORM_INDEPENDENT_LANGUAGE_NAMES[ ILocalizationManager::eP "da-DK" // Danish (Denmark) }; +#if defined(WIN32) || defined(WIN64) +namespace +{ +#if defined(WIN32) + time_t gmt_to_local_win32(void) + { + TIME_ZONE_INFORMATION tzinfo; + DWORD dwStandardDaylight; + long bias; + + dwStandardDaylight = GetTimeZoneInformation(&tzinfo); + bias = tzinfo.Bias; + + if (dwStandardDaylight == TIME_ZONE_ID_STANDARD) + { + bias += tzinfo.StandardBias; + } + + if (dwStandardDaylight == TIME_ZONE_ID_DAYLIGHT) + { + bias += tzinfo.DaylightBias; + } + + return (-bias * 60); + } +#endif // #if defined(WIN32) + + time_t DateToSecondsUTC(struct tm& inDate) + { +#if defined(WIN32) + return mktime(&inDate) + gmt_to_local_win32(); +#else + return mktime(&inDate); +#endif // #if defined(WIN32) + } +} +#endif // #if defined(WIN32) || defined(WIN64) + ////////////////////////////////////////////////////////////////////////// #if !defined(_RELEASE) static void ReloadDialogData([[maybe_unused]] IConsoleCmdArgs* pArgs) @@ -2656,7 +2694,7 @@ void CLocalizedStringsManager::LocalizeTime(time_t t, bool bMakeLocalTime, bool { struct tm thetime; localtime_s(&thetime, &t); - t = gEnv->pTimer->DateToSecondsUTC(thetime); + t = DateToSecondsUTC(thetime); } outTimeString.clear(); LCID lcID = g_currentLanguageID.lcID ? g_currentLanguageID.lcID : LOCALE_USER_DEFAULT; @@ -2680,7 +2718,7 @@ void CLocalizedStringsManager::LocalizeDate(time_t t, bool bMakeLocalTime, bool { struct tm thetime; localtime_s(&thetime, &t); - t = gEnv->pTimer->DateToSecondsUTC(thetime); + t = DateToSecondsUTC(thetime); } outDateString.resize(0); LCID lcID = g_currentLanguageID.lcID ? g_currentLanguageID.lcID : LOCALE_USER_DEFAULT; diff --git a/Code/Legacy/CrySystem/Log.cpp b/Code/Legacy/CrySystem/Log.cpp index c08d5870e9..2b2fa65dda 100644 --- a/Code/Legacy/CrySystem/Log.cpp +++ b/Code/Legacy/CrySystem/Log.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #ifdef WIN32 #include @@ -503,7 +504,8 @@ void CLog::LogV(const ELogType type, [[maybe_unused]]int flags, const char* szFo { const int sz = sizeof(m_history) / sizeof(m_history[0]); int i, j; - float time = m_pSystem->GetITimer()->GetCurrTime(); + const AZ::TimeMs realTimeMs = AZ::GetRealElapsedTimeMs(); + const float time = AZ::TimeMsToSeconds(realTimeMs); for (i = m_iLastHistoryItem, j = 0; m_history[i].time > time - dt && j < sz; j++, i = i - 1 & sz - 1) { if (m_history[i].type != type) @@ -908,7 +910,7 @@ void CLog::LogStringToFile(const char* szString, ELogType logType, bool bAdd, [[ } #endif - if (m_pLogIncludeTime && gEnv && gEnv->pTimer) + if (m_pLogIncludeTime) { uint32 dwCVarState = m_pLogIncludeTime->GetIVal(); // char szTemp[MAX_TEMP_LENGTH_SIZE]; @@ -933,12 +935,12 @@ void CLog::LogStringToFile(const char* szString, ELogType logType, bool bAdd, [[ } else if (dwCVarState == 2) // Log_IncludeTime { - static CTimeValue lasttime; - CTimeValue currenttime = gEnv->pTimer->GetAsyncTime(); - if (lasttime != CTimeValue()) + static AZ::TimeMs lasttime = AZ::Time::ZeroTimeMs; + const AZ::TimeMs currenttime = AZ::GetRealElapsedTimeMs(); + if (lasttime != AZ::Time::ZeroTimeMs) { timeStr.clear(); - uint32 dwMs = (uint32)((currenttime - lasttime).GetMilliSeconds()); + uint32 dwMs = aznumeric_cast(currenttime - lasttime); timeStr = AZStd::string::format("<%3d.%.3d>: ", dwMs / 1000, dwMs % 1000); tempString = timeStr + tempString; } @@ -960,12 +962,12 @@ void CLog::LogStringToFile(const char* szString, ELogType logType, bool bAdd, [[ #endif tempString = LogStringType(sTime) + tempString; - static CTimeValue lasttime; - CTimeValue currenttime = gEnv->pTimer->GetAsyncTime(); - if (lasttime != CTimeValue()) + static AZ::TimeMs lasttime = AZ::Time::ZeroTimeMs; + const AZ::TimeMs currenttime = AZ::GetRealElapsedTimeMs(); + if (lasttime != AZ::Time::ZeroTimeMs) { timeStr.clear(); - uint32 dwMs = (uint32)((currenttime - lasttime).GetMilliSeconds()); + uint32 dwMs = (uint32)(currenttime - lasttime); timeStr = AZStd::string::format("<%3d.%.3d>: ", dwMs / 1000, dwMs % 1000); tempString = timeStr + tempString; } @@ -975,22 +977,19 @@ void CLog::LogStringToFile(const char* szString, ELogType logType, bool bAdd, [[ { static bool bFirst = true; - if (gEnv->pTimer) + static AZ::TimeMs lasttime = AZ::Time::ZeroTimeMs; + const AZ::TimeMs currenttime = AZ::GetRealElapsedTimeMs(); + if (lasttime != AZ::Time::ZeroTimeMs) { - static CTimeValue lasttime; - CTimeValue currenttime = gEnv->pTimer->GetAsyncTime(); - if (lasttime != CTimeValue()) - { - timeStr.clear(); - uint32 dwMs = (uint32)((currenttime - lasttime).GetMilliSeconds()); - timeStr = AZStd::string::format("<%3d.%.3d>: ", dwMs / 1000, dwMs % 1000); - tempString = timeStr + tempString; - } - if (bFirst) - { - lasttime = currenttime; - bFirst = false; - } + timeStr.clear(); + uint32 dwMs = (uint32)(currenttime - lasttime); + timeStr = AZStd::string::format("<%3d.%.3d>: ", dwMs / 1000, dwMs % 1000); + tempString = timeStr + tempString; + } + if (bFirst) + { + lasttime = currenttime; + bFirst = false; } } else if (dwCVarState == 5) // Log_IncludeTime @@ -1465,9 +1464,10 @@ void CLog::Update() if (LogCVars::s_log_tick != 0) { - static CTimeValue t0 = GetISystem()->GetITimer()->GetAsyncTime(); - CTimeValue t1 = GetISystem()->GetITimer()->GetAsyncTime(); - if (fabs((t1 - t0).GetSeconds()) > LogCVars::s_log_tick) + static AZ::TimeUs t0 = AZ::GetElapsedTimeUs(); + const AZ::TimeUs t1 = AZ::GetElapsedTimeUs(); + const float tSec = AZ::TimeUsToSeconds(t1 - t0); + if (tSec > LogCVars::s_log_tick) { t0 = t1; diff --git a/Code/Legacy/CrySystem/System.cpp b/Code/Legacy/CrySystem/System.cpp index a6ffdec4e8..bb48e69cec 100644 --- a/Code/Legacy/CrySystem/System.cpp +++ b/Code/Legacy/CrySystem/System.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -128,7 +129,6 @@ LRESULT WINAPI WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) #include "LocalizedStringManager.h" #include "XML/XmlUtils.h" #include "SystemEventDispatcher.h" -#include "HMDBus.h" #include "RemoteConsole/RemoteConsole.h" @@ -153,12 +153,20 @@ LRESULT WINAPI WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) // Define global cvars. SSystemCVars g_cvars; -#include - #include #include #include "AZCoreLogSink.h" +namespace +{ + float GetMovieFrameDeltaTime() + { + // Use GetRealTickDeltaTimeUs for CryMovie, because it should not be affected by pausing game time + const AZ::TimeUs delta = AZ::GetRealTickDeltaTimeUs(); + return AZ::TimeUsToSeconds(delta); + } +} + ///////////////////////////////////////////////////////////////////////////////// // System Implementation. ////////////////////////////////////////////////////////////////////////// @@ -195,7 +203,6 @@ CSystem::CSystem(SharedEnvironmentInstance* pSharedEnvironment) ////////////////////////////////////////////////////////////////////////// // Initialize global environment interface pointers. m_env.pSystem = this; - m_env.pTimer = &m_Time; m_env.bIgnoreAllAsserts = false; m_env.bNoAssertDialog = false; @@ -218,7 +225,6 @@ CSystem::CSystem(SharedEnvironmentInstance* pSharedEnvironment) m_pProcess = NULL; m_pCmdLine = NULL; m_pLevelSystem = NULL; - m_pViewSystem = NULL; m_pLocalizationManager = NULL; #if defined(AZ_RESTRICTED_PLATFORM) #define AZ_RESTRICTED_SECTION SYSTEM_CPP_SECTION_2 @@ -434,9 +440,6 @@ void CSystem::ShutDown() m_pSystemEventDispatcher->OnSystemEvent(ESYSTEM_EVENT_FULL_SHUTDOWN, 0, 0); } - // Shutdown any running VR devices. - EBUS_EVENT(AZ::VR::HMDInitRequestBus, Shutdown); - if (gEnv && gEnv->pLyShine) { gEnv->pLyShine->Release(); @@ -450,7 +453,6 @@ void CSystem::ShutDown() { ((CXConsole*)m_env.pConsole)->FreeRenderResources(); } - SAFE_RELEASE(m_pViewSystem); SAFE_RELEASE(m_pLevelSystem); if (m_env.pLog) @@ -571,14 +573,15 @@ ISystem* CSystem::GetCrySystem() ////////////////////////////////////////////////////////////////////////// void CSystem::SleepIfNeeded() { - ITimer* const pTimer = gEnv->pTimer; static bool firstCall = true; typedef MiniQueue PrevNow; static PrevNow prevNow; if (firstCall) { - m_lastTickTime = pTimer->GetAsyncTime(); + const AZ::TimeMs timeMs = AZ::GetRealElapsedTimeMs(); + const double timeSec = AZ::TimeMsToSecondsDouble(timeMs); + m_lastTickTime = CTimeValue(timeSec); prevNow.Push(m_lastTickTime); firstCall = false; return; @@ -586,8 +589,10 @@ void CSystem::SleepIfNeeded() const float maxRate = m_svDedicatedMaxRate->GetFVal(); const float minTime = 1.0f / maxRate; - CTimeValue now = pTimer->GetAsyncTime(); - float elapsed = (now - m_lastTickTime).GetSeconds(); + const AZ::TimeMs nowTimeMs = AZ::GetRealElapsedTimeMs(); + const double nowTimeSec = AZ::TimeMsToSecondsDouble(nowTimeMs); + const CTimeValue now = CTimeValue(nowTimeSec); + const float elapsed = (now - m_lastTickTime).GetSeconds(); if (prevNow.Full()) { @@ -599,7 +604,9 @@ void CSystem::SleepIfNeeded() if (elapsed > minTime && allowStallCatchup) { allowStallCatchup = false; - m_lastTickTime = pTimer->GetAsyncTime(); + const AZ::TimeMs lastTimeMs = AZ::GetRealElapsedTimeMs(); + const double lastTimeSec = AZ::TimeMsToSecondsDouble(lastTimeMs); + m_lastTickTime = CTimeValue(lastTimeSec); return; } allowStallCatchup = true; @@ -615,7 +622,9 @@ void CSystem::SleepIfNeeded() Sleep(sleepMS); } - m_lastTickTime = pTimer->GetAsyncTime(); + const AZ::TimeMs lastTimeMs = AZ::GetRealElapsedTimeMs(); + const double lastTimeSec = AZ::TimeMsToSecondsDouble(lastTimeMs); + m_lastTickTime = CTimeValue(lastTimeSec); } extern DWORD g_idDebugThreads[]; @@ -742,24 +751,21 @@ bool CSystem::UpdatePreTickBus(int updateFlags, int nPauseMode) if (maxFPS > 0 && vSync == 0) { - CTimeValue timeFrameMax; const float safeMarginFPS = 0.5f;//save margin to not drop below 30 fps - static CTimeValue sTimeLast = gEnv->pTimer->GetAsyncTime(); - timeFrameMax.SetMilliSeconds((int64)(1000.f / ((float)maxFPS + safeMarginFPS))); - const CTimeValue timeLast = timeFrameMax + sTimeLast; - while (timeLast.GetValue() > gEnv->pTimer->GetAsyncTime().GetValue()) + static AZ::TimeMs sTimeLast = AZ::GetRealElapsedTimeMs(); + const AZ::TimeMs timeFrameMax(static_cast( + (int64)(1000.f / ((float)maxFPS + safeMarginFPS)) + )); + const AZ::TimeMs timeLast = timeFrameMax + sTimeLast; + while (timeLast > AZ::GetRealElapsedTimeMs()) { CrySleep(0); } - sTimeLast = gEnv->pTimer->GetAsyncTime(); + sTimeLast = AZ::GetRealElapsedTimeMs(); } } } - ////////////////////////////////////////////////////////////////////// - //update time subsystem - m_Time.UpdateOnFrameStart(); - ////////////////////////////////////////////////////////////////////// //update console system if (m_env.pConsole) @@ -773,13 +779,10 @@ bool CSystem::UpdatePreTickBus(int updateFlags, int nPauseMode) return false; } - // Use UI timer for CryMovie, because it should not be affected by pausing game time - const float fMovieFrameTime = m_Time.GetFrameTime(ITimer::ETIMER_UI); - // Run movie system pre-update if (!bNoUpdate) { - UpdateMovieSystem(updateFlags, fMovieFrameTime, true); + UpdateMovieSystem(updateFlags, GetMovieFrameDeltaTime(), true); } return !IsQuitting(); @@ -788,13 +791,14 @@ bool CSystem::UpdatePreTickBus(int updateFlags, int nPauseMode) ////////////////////////////////////////////////////////////////////// bool CSystem::UpdatePostTickBus(int updateFlags, int /*nPauseMode*/) { - CTimeValue updateStart = gEnv->pTimer->GetAsyncTime(); + const AZ::TimeMs updateStartTimeMs = AZ::GetRealElapsedTimeMs(); + const double updateStartTimeSec = AZ::TimeMsToSecondsDouble(updateStartTimeMs); + const CTimeValue updateStart(updateStartTimeSec); // Run movie system post-update if (!m_bNoUpdate) { - const float fMovieFrameTime = m_Time.GetFrameTime(ITimer::ETIMER_UI); - UpdateMovieSystem(updateFlags, fMovieFrameTime, false); + UpdateMovieSystem(updateFlags, GetMovieFrameDeltaTime(), false); } ////////////////////////////////////////////////////////////////////// @@ -805,7 +809,9 @@ bool CSystem::UpdatePostTickBus(int updateFlags, int /*nPauseMode*/) } //Now update frame statistics - CTimeValue cur_time = gEnv->pTimer->GetAsyncTime(); + const AZ::TimeMs curTimeMs = AZ::GetRealElapsedTimeMs(); + const double curTimeSec = AZ::TimeMsToSecondsDouble(curTimeMs); + const CTimeValue cur_time(curTimeSec); CTimeValue a_second(g_cvars.sys_update_profile_time); std::vector< std::pair >::iterator it = m_updateTimes.begin(); @@ -1374,19 +1380,16 @@ const char* CSystem::GetSystemGlobalStateName(const ESystemGlobalState systemGlo void CSystem::SetSystemGlobalState(const ESystemGlobalState systemGlobalState) { - static CTimeValue s_startTime = CTimeValue(); + static AZ::TimeMs s_startTime = AZ::Time::ZeroTimeMs; if (systemGlobalState != m_systemGlobalState) { - if (gEnv && gEnv->pTimer) - { - const CTimeValue endTime = gEnv->pTimer->GetAsyncTime(); - [[maybe_unused]] const float numSeconds = endTime.GetDifferenceInSeconds(s_startTime); - CryLog("SetGlobalState %d->%d '%s'->'%s' %3.1f seconds", - m_systemGlobalState, systemGlobalState, - CSystem::GetSystemGlobalStateName(m_systemGlobalState), CSystem::GetSystemGlobalStateName(systemGlobalState), - numSeconds); - s_startTime = gEnv->pTimer->GetAsyncTime(); - } + const AZ::TimeMs endTime = AZ::GetRealElapsedTimeMs(); + [[maybe_unused]] const double numSeconds = AZ::TimeMsToSecondsDouble(endTime - s_startTime); + CryLog("SetGlobalState %d->%d '%s'->'%s' %3.1f seconds", + m_systemGlobalState, systemGlobalState, + CSystem::GetSystemGlobalStateName(m_systemGlobalState), CSystem::GetSystemGlobalStateName(systemGlobalState), + numSeconds); + s_startTime = AZ::GetRealElapsedTimeMs(); } m_systemGlobalState = systemGlobalState; @@ -1603,11 +1606,6 @@ std::shared_ptr CSystem::CreateLocalFileIO() return std::make_shared(); } -IViewSystem* CSystem::GetIViewSystem() -{ - return m_pViewSystem; -} - ILevelSystem* CSystem::GetILevelSystem() { return m_pLevelSystem; diff --git a/Code/Legacy/CrySystem/System.h b/Code/Legacy/CrySystem/System.h index fd5c917a94..d48b1797d3 100644 --- a/Code/Legacy/CrySystem/System.h +++ b/Code/Legacy/CrySystem/System.h @@ -13,7 +13,6 @@ #include #include -#include "Timer.h" #include #include "CmdLine.h" @@ -23,6 +22,8 @@ #include #include +#include + #include #include @@ -226,7 +227,6 @@ public: int GetApplicationInstance() override; int GetApplicationLogInstance(const char* logFilePath) override; - ITimer* GetITimer() override{ return m_env.pTimer; } AZ::IO::IArchive* GetIPak() override { return m_env.pCryPak; }; IConsole* GetIConsole() override { return m_env.pConsole; }; IRemoteConsole* GetIRemoteConsole() override; @@ -234,7 +234,6 @@ public: ICryFont* GetICryFont() override{ return m_env.pCryFont; } ILog* GetILog() override{ return m_env.pLog; } ICmdLine* GetICmdLine() override{ return m_pCmdLine; } - IViewSystem* GetIViewSystem() override; ILevelSystem* GetILevelSystem() override; ISystemEventDispatcher* GetISystemEventDispatcher() override { return m_pSystemEventDispatcher; } ////////////////////////////////////////////////////////////////////////// @@ -383,7 +382,6 @@ private: // ------------------------------------------------------ // System environment. SSystemGlobalEnvironment m_env; - CTimer m_Time; //!< bool m_bInitializedSuccessfully; //!< true if the system completed all initialization steps bool m_bRelaunch; //!< relaunching the app or not (true beforerelaunch) int m_iLoadingMode; //!< Game is loading w/o changing context (0 not, 1 quickloading, 2 full loading) @@ -405,10 +403,6 @@ private: // ------------------------------------------------------ //! current active process IProcess* m_pProcess; - CCamera m_PhysRendererCamera; - ICVar* m_p_draw_helpers_str; - int m_iJumpToPhysProfileEnt; - CTimeValue m_lastTickTime; //! system event dispatcher @@ -423,9 +417,6 @@ private: // ------------------------------------------------------ //! System to manage levels. ILevelSystem* m_pLevelSystem; - //! System to manage views. - IViewSystem* m_pViewSystem; - // XML Utils interface. class CXmlUtils* m_pXMLUtils; diff --git a/Code/Legacy/CrySystem/SystemInit.cpp b/Code/Legacy/CrySystem/SystemInit.cpp index 5bef42dc3e..c5039f57e9 100644 --- a/Code/Legacy/CrySystem/SystemInit.cpp +++ b/Code/Legacy/CrySystem/SystemInit.cpp @@ -78,7 +78,6 @@ #include #include #include -#include #include #include "XConsole.h" @@ -88,7 +87,6 @@ #include "SystemEventDispatcher.h" #include "LevelSystem/LevelSystem.h" #include "LevelSystem/SpawnableLevelSystem.h" -#include "ViewSystem/ViewSystem.h" #include #include #include @@ -172,14 +170,6 @@ void CryEngineSignalHandler(int signal) extern HMODULE gDLLHandle; #endif -namespace -{ -#if defined(AZ_PLATFORM_WINDOWS) - // on windows, we lock our cache using a lockfile. On other platforms this is not necessary since devices like ios, android, consoles cannot - // run more than one game process that uses the same folder anyway. - HANDLE g_cacheLock = INVALID_HANDLE_VALUE; -#endif -} //static int g_sysSpecChanged = false; @@ -341,9 +331,6 @@ bool CSystem::InitFileSystem() m_pUserCallback->OnInitProgress("Initializing File System..."); } - // get the DirectInstance FileIOBase which should be the AZ::LocalFileIO - m_env.pFileIO = AZ::IO::FileIOBase::GetDirectInstance(); - m_env.pCryPak = AZ::Interface::Get(); m_env.pFileIO = AZ::IO::FileIOBase::GetInstance(); AZ_Assert(m_env.pCryPak, "CryPak has not been initialized on AZ::Interface"); @@ -367,33 +354,6 @@ bool CSystem::InitFileSystem() void CSystem::ShutdownFileSystem() { -#if defined(AZ_PLATFORM_WINDOWS) - if (g_cacheLock != INVALID_HANDLE_VALUE) - { - CloseHandle(g_cacheLock); - g_cacheLock = INVALID_HANDLE_VALUE; - } -#endif - - using namespace AZ::IO; - - FileIOBase* directInstance = FileIOBase::GetDirectInstance(); - FileIOBase* pakInstance = FileIOBase::GetInstance(); - - if (directInstance == m_env.pFileIO) - { - // we only mess with file io if we own the instance that we installed. - // if we dont' own the instance, then we never configured fileIO and we should not alter it. - delete directInstance; - FileIOBase::SetDirectInstance(nullptr); - - if (pakInstance != directInstance) - { - delete pakInstance; - FileIOBase::SetInstance(nullptr); - } - } - m_env.pFileIO = nullptr; } @@ -1101,17 +1061,6 @@ AZ_POP_DISABLE_WARNING AzFramework::SystemCursorState::ConstrainedAndHidden); } - ////////////////////////////////////////////////////////////////////////// - // TIME - ////////////////////////////////////////////////////////////////////////// - AZ_Printf(AZ_TRACE_SYSTEM_WINDOW, "Time initialization"); - if (!m_Time.Init()) - { - AZ_Assert(false, "Failed to initialize CTimer instance."); - return false; - } - m_Time.ResetTimer(); - // CONSOLE ////////////////////////////////////////////////////////////////////////// if (!InitConsole()) @@ -1146,12 +1095,6 @@ AZ_POP_DISABLE_WARNING InlineInitializationProcessing("CSystem::Init Level System"); - ////////////////////////////////////////////////////////////////////////// - // VIEW SYSTEM (must be created after m_pLevelSystem) - m_pViewSystem = new LegacyViewSystem::CViewSystem(this); - - InlineInitializationProcessing("CSystem::Init View System"); - if (m_env.pLyShine) { m_env.pLyShine->PostInit(); @@ -1185,12 +1128,6 @@ AZ_POP_DISABLE_WARNING InlineInitializationProcessing("CSystem::Init End"); - if (gEnv->IsDedicated()) - { - SCVarsClientConfigSink CVarsClientConfigSink; - LoadConfiguration("client.cfg", &CVarsClientConfigSink); - } - // Send out EBus event EBUS_EVENT(CrySystemEventBus, OnCrySystemInitialized, *this, startupParams); @@ -1250,20 +1187,6 @@ static AZStd::string ConcatPath(const char* szPart1, const char* szPart2) return ret; } -// Helper to maintain backwards compatibility with our CVar but not force our new code to -// pull in CryCommon by routing through an environment variable -void CmdSetAwsLogLevel(IConsoleCmdArgs* pArgs) -{ - static const char* const logLevelEnvVar = "sys_SetLogLevel"; - static AZ::EnvironmentVariable logVar = AZ::Environment::CreateVariable(logLevelEnvVar); - if (pArgs->GetArgCount() > 1) - { - int logLevel = atoi(pArgs->GetArg(1)); - *logVar = logLevel; - AZ_TracePrintf("AWSLogging", "Log level set to %d", *logVar); - } -} - ////////////////////////////////////////////////////////////////////////// void CSystem::CreateSystemVars() { @@ -1626,8 +1549,6 @@ void CSystem::CreateSystemVars() // Since the UI Canvas Editor is incomplete, we have a variable to enable it. // By default it is now enabled. Modify system.cfg or game.cfg to disable it REGISTER_INT("sys_enableCanvasEditor", 1, VF_NULL, "Enables the UI Canvas Editor"); - - REGISTER_COMMAND("sys_SetLogLevel", CmdSetAwsLogLevel, 0, "Set AWS log level [0 - 6]."); } ////////////////////////////////////////////////////////////////////////// diff --git a/Code/Legacy/CrySystem/Timer.cpp b/Code/Legacy/CrySystem/Timer.cpp deleted file mode 100644 index 1e1b6859e1..0000000000 --- a/Code/Legacy/CrySystem/Timer.cpp +++ /dev/null @@ -1,725 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - - -#include "CrySystem_precompiled.h" -#include "Timer.h" -#include -#include -#include -#include -#include -///////////////////////////////////////////////////// - -#ifdef WIN32 -#define WIN32_LEAN_AND_MEAN -#include "windows.h" -#include "Mmsystem.h" -#endif - -//#define PROFILING 1 -#ifdef PROFILING -static int64 g_lCurrentTime = 0; -#endif - -//! Profile smoothing time in seconds (original default was .8 / log(10) ~= .35 s) -static const float fDEFAULT_PROFILE_SMOOTHING = 1.0f; - - - -#define DEFAULT_FRAME_SMOOTHING 1 - -///////////////////////////////////////////////////// -CTimer::CTimer() -{ - // Default CVar values - m_fixed_time_step = 0; - m_max_time_step = 0.25f; - m_cvar_time_scale = 1.0f; - m_TimeSmoothing = DEFAULT_FRAME_SMOOTHING; // note: frame numbers (old version - commented out) are not used but is based on time - m_TimeDebug = 0; - - m_profile_smooth_time = fDEFAULT_PROFILE_SMOOTHING; - m_profile_weighting = 1; - - // Persistant state - m_bEnabled = true; - //m_fixedTimeModeEnabled = false; - m_nFrameCounter = 0; - - m_lTicksPerSec = CryGetTicksPerSec(); - m_fSecsPerTick = 1.0 / m_lTicksPerSec; - - m_fAverageFrameTime = 1.0f / 30.0f; - for (int i = 0; i < MAX_FRAME_AVERAGE; i++) - { - m_arrFrameTimes[i] = m_fAverageFrameTime; - } - - m_fAvgFrameTime = 0.0f; - m_fProfileBlend = 1.0f; - m_fSmoothTime = 0; - - m_totalTimeScale = 1.0f; - ClearTimeScales(); - - ResetTimer(); -} - -///////////////////////////////////////////////////// -bool CTimer::Init() -{ - // if game code was accessing them by name there was something wrong anyway - - REGISTER_CVAR2("t_Smoothing", &m_TimeSmoothing, DEFAULT_FRAME_SMOOTHING, 0, - "time smoothing\n" - "0=off, 1=on"); - - REGISTER_CVAR2("t_FixedStep", &m_fixed_time_step, 0, VF_NET_SYNCED | VF_DEV_ONLY, - "Game updated with this fixed frame time\n" - "0=off, number specifies the frame time in seconds\n" - "e.g. 0.033333(30 fps), 0.1(10 fps), 0.01(100 fps)"); - - REGISTER_CVAR2("t_MaxStep", &m_max_time_step, 0.25f, 0, - "Game systems clamped to this frame time"); - - // todo: reconsider exposing that as cvar (negative time, same value is used by Trackview, better would be another value multipled with the internal one) - REGISTER_CVAR2("t_Scale", &m_cvar_time_scale, 1.0f, VF_NET_SYNCED | VF_DEV_ONLY, - "Game time scaled by this - for variable slow motion"); - - REGISTER_CVAR2("t_Debug", &m_TimeDebug, 0, 0, "Timer debug: 0 = off, 1 = events, 2 = verbose"); - - // ----------------- - - REGISTER_CVAR2("profile_smooth", &m_profile_smooth_time, fDEFAULT_PROFILE_SMOOTHING, 0, - "Profiler exponential smoothing interval (seconds)"); - - REGISTER_CVAR2("profile_weighting", &m_profile_weighting, 1, 0, - "Profiler smoothing mode: 0 = legacy, 1 = average, 2 = peak weighted, 3 = peak hold"); - - return true; -} - -///////////////////////////////////////////////////// -float CTimer::GetFrameTime(ETimer which) const -{ - float result = 0.0f; - if (m_bEnabled) - { - if (which != ETIMER_GAME || !m_bGameTimerPaused) - { - if (which == ETIMER_UI) - { - result = m_fRealFrameTime; - } - else - { - result = m_fFrameTime; - } - } - } - return result; -} - -///////////////////////////////////////////////////// -float CTimer::GetCurrTime(ETimer which) const -{ - assert(which >= 0 && which < ETIMER_LAST && "Bad timer index"); - return m_CurrTime[which].GetSeconds(); -} - -///////////////////////////////////////////////////// -float CTimer::GetRealFrameTime() const -{ - return m_bEnabled ? m_fRealFrameTime : 0.0f; -} - -///////////////////////////////////////////////////// -float CTimer::GetTimeScale() const -{ - return m_cvar_time_scale * m_totalTimeScale; -} - -///////////////////////////////////////////////////// -float CTimer::GetTimeScale(uint32 channel) const -{ - assert(channel < NUM_TIME_SCALE_CHANNELS); - if (channel >= NUM_TIME_SCALE_CHANNELS) - { - return GetTimeScale(); - } - return m_cvar_time_scale * m_timeScaleChannels[channel]; -} - -///////////////////////////////////////////////////// -void CTimer::SetTimeScale(float scale, uint32 channel /* = 0 */) -{ - assert(channel < NUM_TIME_SCALE_CHANNELS); - if (channel >= NUM_TIME_SCALE_CHANNELS) - { - return; - } - - const float currentScale = m_timeScaleChannels[channel]; - - if (scale != currentScale) - { - // Need to adjust previous frame times for time scale to have immediate effect - const float adjustFactor = scale / currentScale; - for (uint32 i = 0; i < MAX_FRAME_AVERAGE; ++i) - { - m_arrFrameTimes[i] *= adjustFactor; - } - - // Update total time scale immediately - m_totalTimeScale *= adjustFactor; - } - - m_timeScaleChannels[channel] = scale; -} - -///////////////////////////////////////////////////// -void CTimer::ClearTimeScales() -{ - if (m_totalTimeScale != 1.0f) - { - // Need to adjust previous frame times for time scale to have immediate effect - const float adjustFactor = 1.0f / m_totalTimeScale; - for (uint32 i = 0; i < MAX_FRAME_AVERAGE; ++i) - { - m_arrFrameTimes[i] *= adjustFactor; - } - } - - for (int i = 0; i < NUM_TIME_SCALE_CHANNELS; ++i) - { - m_timeScaleChannels[i] = 1.0f; - } - m_totalTimeScale = 1.0f; -} - -///////////////////////////////////////////////////// -float CTimer::GetAsyncCurTime() -{ - //int64 llNow = CryGetTicks() - m_lBaseTime_Async; - int64 llNow = CryGetTicks() - m_lBaseTime; - return TicksToSeconds(llNow); -} - -///////////////////////////////////////////////////// -float CTimer::GetFrameRate() -{ - // Use real frame time. - if (m_fRealFrameTime != 0.f) - { - return 1.f / m_fRealFrameTime; - } - return 0.f; -} - -void CTimer::UpdateBlending() -{ - // Accumulate smoothing time up to specified max. - float fFrameTime = m_fRealFrameTime; - m_fSmoothTime = min(m_fSmoothTime + fFrameTime, m_profile_smooth_time); - - if (m_fSmoothTime <= fFrameTime) - { - m_fAvgFrameTime = fFrameTime; - m_fProfileBlend = 1.f; - return; - } - - if (m_profile_weighting <= 2) - { - // Update average frame time. - if (m_fSmoothTime < m_fAvgFrameTime) - { - m_fAvgFrameTime = m_fSmoothTime; - } - m_fAvgFrameTime *= m_fSmoothTime / (m_fSmoothTime - fFrameTime + m_fAvgFrameTime); - - if (m_profile_weighting == 1) - { - // Weight all frames equally. - m_fProfileBlend = m_fAvgFrameTime / m_fSmoothTime; - } - else - { - // Weight frames by time. - m_fProfileBlend = fFrameTime / m_fSmoothTime; - } - } - else - { - // Decay avg frame time, set as new peak. - m_fAvgFrameTime *= 1.f - fFrameTime / m_fSmoothTime; - if (fFrameTime > m_fAvgFrameTime) - { - m_fAvgFrameTime = fFrameTime; - m_fProfileBlend = 1.f; - } - else - { - m_fProfileBlend = 0.f; - } - } -} - -float CTimer::GetProfileFrameBlending(float* pfBlendTime, int* piBlendMode) -{ - if (piBlendMode) - { - *piBlendMode = m_profile_weighting; - } - if (pfBlendTime) - { - *pfBlendTime = m_fSmoothTime; - } - return m_fProfileBlend; -} - -///////////////////////////////////////////////////// -void CTimer::RefreshGameTime(int64 curTime) -{ - assert(curTime + m_lOffsetTime >= 0); - m_CurrTime[ETIMER_GAME].SetSeconds(TicksToSeconds(curTime + m_lOffsetTime)); -} - -///////////////////////////////////////////////////// -void CTimer::RefreshUITime(int64 curTime) -{ - assert(curTime >= 0); - m_CurrTime[ETIMER_UI].SetSeconds(TicksToSeconds(curTime)); -} - - -///////////////////////////////////////////////////// -void CTimer::UpdateOnFrameStart() -{ - if (!m_bEnabled) - { - return; - } - - //int64 now; - - //if (m_fixedTimeModeEnabled) - //{ - // m_nFrameCounter++; - // m_fRealFrameTime = m_fFrameTime = m_fixedTimeModeStep; - // m_lCurrentTime += m_fixedTimeModeStep*m_lTicksPerSec; - // now = m_lCurrentTime; - //} - //else - //{ - // On Windows before Vista, frequency can change (even though it should be impossible), - // See also: https://msdn.microsoft.com/en-us/library/windows/desktop/dn553408(v=vs.85).aspx - // Win2000, WinXP: Uses RDTSC, which may not be monotonic across all cores (a bug), costs in the order of 10~100 cycles (cheap). - // WinVista: Uses HPET or ACPI timer (a kernel call, and much more expensive than RDTSC, but it's not bugged). - // Win7+: RDTSC if the CPU feature bit for monotonic is set, HPET or ACPI otherwise (not bugged). -#if defined(_WIN32_WINNT) && _WIN32_WINNT < 0x0600 - if ((m_nFrameCounter & 127) == 0) - { - // every bunch of frames, check frequency to adapt to - // CPU power management clock rate changes - LARGE_INTEGER TTicksPerSec; - if (QueryPerformanceFrequency(&TTicksPerSec)) - { - // if returns false, no performance counter is available - m_lTicksPerSec = TTicksPerSec.QuadPart; - m_fSecsPerTick = 1.0 / m_lTicksPerSec; - } - } - - m_nFrameCounter++; -#endif - //} - -#ifdef PROFILING - m_fRealFrameTime = m_fFrameTime = 0.020f; // 20ms = 50fps - g_lCurrentTime += (int)(m_fFrameTime * (float)(CTimeValue::TIMEVALUE_PRECISION)); - m_lLastTime = g_lCurrentTime; - RefreshGameTime(m_lLastTime); - RefreshUITime(m_lLastTime); - return; -#endif - - if (m_fixed_time_step < 0.0f) - { - // Enforce real framerate by sleeping. - const int64 elapsedTicks = CryGetTicks() - m_lBaseTime - m_lLastTime; - const int64 minTicks = SecondsToTicks(-m_fixed_time_step); - if (elapsedTicks < minTicks) - { - const int64 ms = (minTicks - elapsedTicks) * 1000 / m_lTicksPerSec; - CrySleep((unsigned int)ms); - } - } - - const int64 now = CryGetTicks(); - assert(now + 1 >= m_lBaseTime && "Invalid base time"); //+1 margin because QPC may be one off across cores - - m_fRealFrameTime = TicksToSeconds(now - m_lBaseTime - m_lLastTime); - - if (0.0f != m_fixed_time_step) - { - // Apply fixed_time_step - m_fFrameTime = abs(m_fixed_time_step); - } - else - { - // Clamp to max_time_step - m_fFrameTime = min(m_fRealFrameTime, m_max_time_step); - } - - // Dilate time. - m_fFrameTime *= GetTimeScale(); - - if (m_TimeSmoothing > 0) - { - m_fFrameTime = GetAverageFrameTime(); - } - - // Time can only go forward. - if (m_fFrameTime < 0.0f) - { - m_fFrameTime = 0.0f; - } - if (m_fRealFrameTime < 0.0f) - { - m_fRealFrameTime = 0.0; - } - - // Adjust the base time so that time actually seems to have moved forward m_fFrameTime - const int64 frameTicks = SecondsToTicks(m_fFrameTime); - const int64 realTicks = SecondsToTicks(m_fRealFrameTime); - m_lBaseTime += realTicks - frameTicks; - if (m_lBaseTime > now) - { - // Guard against rounding errors due to float <-> int64 precision - assert(m_lBaseTime - now <= 10 && "Bad base time or adjustment, too much difference for a rounding error"); - m_lBaseTime = now; - } - const int64 currentTime = now - m_lBaseTime; - - assert(fabsf(TicksToSeconds(currentTime - m_lLastTime) - m_fFrameTime) < 0.01f && "Bad calculation"); - assert(currentTime >= m_lLastTime && "Bad adjustment in previous frame"); - assert(currentTime + m_lOffsetTime >= 0 && "Sum of game time is negative"); - - // Update timers - RefreshUITime(currentTime); - if (!m_bGameTimerPaused) - { - RefreshGameTime(currentTime); - } - - m_lLastTime = currentTime; - - UpdateBlending(); - - if (m_TimeDebug > 1) - { - CryLogAlways("[CTimer]: Cur=%lld Now=%lld Off=%lld Async=%f CurrTime=%f UI=%f", (long long)currentTime, (long long)now, (long long)m_lOffsetTime, GetAsyncCurTime(), GetCurrTime(ETIMER_GAME), GetCurrTime(ETIMER_UI)); - } -} - -//------------------------------------------------------------------------ -//-- average frame-times to avoid stalls and peaks in framerate -//-- note that is is time-base averaging and not frame-based -//------------------------------------------------------------------------ -float CTimer::GetAverageFrameTime() -{ - f32 LastAverageFrameTime = m_fAverageFrameTime; - f32 FrameTime = m_fFrameTime; - - uint32 numFT = MAX_FRAME_AVERAGE; - for (int32 i = (numFT - 2); i > -1; i--) - { - m_arrFrameTimes[i + 1] = m_arrFrameTimes[i]; - } - - if (FrameTime > 0.4f) - { - FrameTime = 0.4f; - } - if (FrameTime < 0.0f) - { - FrameTime = 0.0f; - } - m_arrFrameTimes[0] = FrameTime; - - //get smoothed frame - uint32 avrg_ftime = 1; - if (LastAverageFrameTime) - { - avrg_ftime = uint32(0.25f / LastAverageFrameTime + 0.5f); //average the frame-times for a certain time-period (sec) - if (avrg_ftime > numFT) - { - avrg_ftime = numFT; - } - if (avrg_ftime < 1) - { - avrg_ftime = 1; - } - } - - f32 AverageFrameTime = 0; - for (uint32 i = 0; i < avrg_ftime; i++) - { - AverageFrameTime += m_arrFrameTimes[i]; - } - AverageFrameTime /= avrg_ftime; - - //don't smooth if we pause the game - if (FrameTime < 0.0001f) - { - AverageFrameTime = FrameTime; - } - - m_fAverageFrameTime = AverageFrameTime; - return AverageFrameTime; -} - - -///////////////////////////////////////////////////// -void CTimer::ResetTimer() -{ - m_lBaseTime = CryGetTicks(); - //m_lBaseTime_Async = CryGetTicks(); - m_lLastTime = 0; - m_lOffsetTime = 0; - - m_fFrameTime = 0.0f; - m_fRealFrameTime = 0.0f; - - RefreshGameTime(0); - RefreshUITime(0); - - m_bGameTimerPaused = false; - m_lGameTimerPausedTime = 0; -} - -///////////////////////////////////////////////////// -void CTimer::EnableTimer(bool bEnable) -{ - m_bEnabled = bEnable; -} - -bool CTimer::IsTimerEnabled() const -{ - return m_bEnabled; -} - -///////////////////////////////////////////////////// -CTimeValue CTimer::GetAsyncTime() const -{ - int64 llNow = CryGetTicks(); - double fConvert = CTimeValue::TIMEVALUE_PRECISION * m_fSecsPerTick; - return CTimeValue(int64(llNow * fConvert)); -} - -///////////////////////////////////////////////////// -void CTimer::Serialize(TSerialize ser) -{ - // cannot change m_lBaseTime, as this is used for async time (which shouldn't be affected by save games) - if (ser.IsWriting()) - { - int64 currentGameTime = m_lLastTime + m_lOffsetTime; - - ser.Value("curTime", currentGameTime); - ser.Value("ticksPerSecond", m_lTicksPerSec); - } - else - { - int64 ticksPerSecond = 1, curTime = 1; - ser.Value("curTime", curTime); - ser.Value("ticksPerSecond", ticksPerSecond); - - // Adjust curTime for ticksPerSecond on this machine. - // Some precision will be lost if the frequencies are not identical. - const double multiplier = (double)m_lTicksPerSec / (double)ticksPerSecond; - curTime = (int64)((double)curTime * multiplier); - - SetOffsetToMatchGameTime(curTime); - - if (m_TimeDebug) - { - [[maybe_unused]] const int64 now = CryGetTicks(); - CryLogAlways("[CTimer]: Serialize: Last=%lld Now=%lld Off=%lld Async=%f CurrTime=%f UI=%f", (long long)m_lLastTime, (long long)now, (long long)m_lOffsetTime, GetAsyncCurTime(), GetCurrTime(ETIMER_GAME), GetCurrTime(ETIMER_UI)); - } - } -} - -//! try to pause/unpause a timer -// returns true if successfully paused/unpaused, false otherwise -bool CTimer::PauseTimer(ETimer which, bool bPause) -{ - if (which != ETIMER_GAME) - { - return false; - } - - if (m_bGameTimerPaused == bPause) - { - return false; - } - - m_bGameTimerPaused = bPause; - - if (bPause) - { - m_lGameTimerPausedTime = m_lLastTime + m_lOffsetTime; - if (m_TimeDebug) - { - CryLogAlways("[CTimer]: Pausing ON: Last=%lld Off=%lld Async=%f CurrTime=%f UI=%f", (long long)m_lLastTime, (long long)m_lOffsetTime, GetAsyncCurTime(), GetCurrTime(ETIMER_GAME), GetCurrTime(ETIMER_UI)); - } - } - else - { - SetOffsetToMatchGameTime(m_lGameTimerPausedTime); - m_lGameTimerPausedTime = 0; - if (m_TimeDebug) - { - CryLogAlways("[CTimer]: Pausing OFF: Last=%lld Off=%lld Async=%f CurrTime=%f UI=%f", (long long)m_lLastTime, (long long)m_lOffsetTime, GetAsyncCurTime(), GetCurrTime(ETIMER_GAME), GetCurrTime(ETIMER_UI)); - } - } - - return true; -} - -//! determine if a timer is paused -// returns true if paused, false otherwise -bool CTimer::IsTimerPaused(ETimer which) -{ - if (which != ETIMER_GAME) - { - return false; - } - return m_bGameTimerPaused; -} - -//! try to set a timer -// return true if successful, false otherwise -bool CTimer::SetTimer(ETimer which, float timeInSeconds) -{ - if (which != ETIMER_GAME) - { - return false; - } - - SetOffsetToMatchGameTime(SecondsToTicks(timeInSeconds)); - return true; -} - -ITimer* CTimer::CreateNewTimer() -{ - return new CTimer(); -} - -void CTimer::SecondsToDateUTC(time_t inTime, struct tm& outDateUTC) -{ -#ifdef AZ_COMPILER_MSVC - gmtime_s(&outDateUTC, &inTime); -#else - outDateUTC = *gmtime(&inTime); -#endif -} - -#if defined (WIN32) || defined(WIN64) -time_t gmt_to_local_win32(void) -{ - TIME_ZONE_INFORMATION tzinfo; - DWORD dwStandardDaylight; - long bias; - - dwStandardDaylight = GetTimeZoneInformation(&tzinfo); - bias = tzinfo.Bias; - - if (dwStandardDaylight == TIME_ZONE_ID_STANDARD) - { - bias += tzinfo.StandardBias; - } - - if (dwStandardDaylight == TIME_ZONE_ID_DAYLIGHT) - { - bias += tzinfo.DaylightBias; - } - - return (-bias * 60); -} -#endif - -time_t CTimer::DateToSecondsUTC(struct tm& inDate) -{ -#if defined (WIN32) - return mktime(&inDate) + gmt_to_local_win32(); -#elif defined (LINUX) -#if defined (HAVE_TIMEGM) - // return timegm(&inDate); -#else - // craig: temp disabled the +tm.tm_gmtoff because i can't see the intention here - // and it doesn't compile anymore - // alexl: tm_gmtoff is the offset to greenwhich mean time, whereas mktime uses localtime - // but not all linux distributions have it... - return mktime(&inDate) /*+ tm.tm_gmtoff*/; -#endif -#else - return mktime(&inDate); -#endif -} - -void CTimer::EnableFixedTimeMode([[maybe_unused]] bool enable, [[maybe_unused]] float timeStep) -{ - //if (enable) - //{ - // m_fixedTimeModeEnabled = true; - // m_fixedTimeModeStep = timeStep; - - // m_lBaseTime =0; - // m_lBaseTime_Async = 0; - // m_lLastTime = m_lCurrentTime = 0; - // m_fRealFrameTime = m_fFrameTime = timeStep; - // RefreshGameTime(m_lCurrentTime); - // RefreshUITime(m_lCurrentTime); - // m_lForcedGameTime = -1; - // m_bGameTimerPaused = false; - // m_lGameTimerPausedTime = 0; - //} - //else - //{ - // m_fixedTimeModeEnabled = false; - // ResetTimer(); - //} -} - -void CTimer::SetOffsetToMatchGameTime(int64 ticks) -{ - [[maybe_unused]] const int64 previousOffset = m_lOffsetTime; - [[maybe_unused]] const float previousGameTime = GetCurrTime(ETIMER_GAME); - - m_lOffsetTime = ticks - m_lLastTime; - RefreshGameTime(m_lLastTime); - - if (m_bGameTimerPaused) - { - // On un-pause, we will restore the specified time. - // If we don't do this, the un-pause will over-write the offset again. - m_lGameTimerPausedTime = ticks; - } - - if (m_TimeDebug) - { - CryLogAlways("[CTimer] SetOffset: Offset %lld -> %lld, GameTime %f -> %f", (long long)previousOffset, (long long)m_lOffsetTime, GetCurrTime(ETIMER_GAME), previousGameTime); - } -} - -int64 CTimer::SecondsToTicks(double seconds) const -{ - return (int64)(seconds * (double)m_lTicksPerSec); -} diff --git a/Code/Legacy/CrySystem/Timer.h b/Code/Legacy/CrySystem/Timer.h deleted file mode 100644 index 69fd2357e0..0000000000 --- a/Code/Legacy/CrySystem/Timer.h +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - - -#ifndef CRYINCLUDE_CRYSYSTEM_TIMER_H -#define CRYINCLUDE_CRYSYSTEM_TIMER_H - -# pragma once -#include - -// Implements all common timing routines -class CTimer - : public ITimer -{ -public: - // constructor - CTimer(); - // destructor - ~CTimer() = default; - - bool Init(); - - // interface ITimer ---------------------------------------------------------- - - // TODO: Review m_time usage in System.cpp - // if it wants Game Time / UI Time or a new Render Time? - - void ResetTimer() override; - void UpdateOnFrameStart() override; - float GetCurrTime(ETimer which = ETIMER_GAME) const override; - CTimeValue GetAsyncTime() const override; - float GetAsyncCurTime() override; // retrieve the actual wall clock time passed since the game started, in seconds - float GetFrameTime(ETimer which = ETIMER_GAME) const override; - float GetRealFrameTime() const override; - float GetTimeScale() const override; - float GetTimeScale(uint32 channel) const override; - void SetTimeScale(float scale, uint32 channel = 0) override; - void ClearTimeScales() override; - void EnableTimer(bool bEnable) override; - float GetFrameRate() override; - float GetProfileFrameBlending(float* pfBlendTime = nullptr, int* piBlendMode = nullptr) override; - void Serialize(TSerialize ser) override; - bool IsTimerEnabled() const override; - - //! try to pause/unpause a timer - // returns true if successfully paused/unpaused, false otherwise - bool PauseTimer(ETimer which, bool bPause) override; - - //! determine if a timer is paused - // returns true if paused, false otherwise - bool IsTimerPaused(ETimer which) override; - - //! try to set a timer - // return true if successful, false otherwise - bool SetTimer(ETimer which, float timeInSeconds) override; - - //! make a tm struct from a time_t in UTC (like gmtime) - void SecondsToDateUTC(time_t time, struct tm& outDateUTC) override; - - //! make a UTC time from a tm (like timegm, but not available on all platforms) - time_t DateToSecondsUTC(struct tm& timePtr) override; - - //! Convert from Tics to Seconds - float TicksToSeconds(int64 ticks) override - { - return float((double)ticks * m_fSecsPerTick); - } - - //! Get number of ticks per second - int64 GetTicksPerSecond() override - { - return m_lTicksPerSec; - } - - const CTimeValue& GetFrameStartTime(ETimer which = ETIMER_GAME) const override { return m_CurrTime[(int)which]; } - ITimer* CreateNewTimer() override; - - void EnableFixedTimeMode(bool enable, float timeStep) override; - -private: // --------------------------------------------------------------------- - - // --------------------------------------------------------------------------- - - // updates m_CurrTime (either pass m_lCurrentTime or custom curTime) - void RefreshGameTime(int64 curTime); - void RefreshUITime(int64 curTime); - void UpdateBlending(); - float GetAverageFrameTime(); - - // Updates the game-time offset to match the the specified time. - // The argument is the new number of ticks since the last Reset(). - void SetOffsetToMatchGameTime(int64 ticks); - - // Convert seconds to ticks using the timer frequency. - // Note: Loss of precision may occur, especially if magnitude of argument or timer frequency is large. - int64 SecondsToTicks(double seconds) const; - - enum - { - MAX_FRAME_AVERAGE = 100, - NUM_TIME_SCALE_CHANNELS = 8, - }; - - ////////////////////////////////////////////////////////////////////////// - // Dynamic state, reset by ResetTimer() - ////////////////////////////////////////////////////////////////////////// - CTimeValue m_CurrTime[ETIMER_LAST]; // Time since last Reset(), cached during Update() - - int64 m_lBaseTime; // Ticks elapsed since system boot, all other tick-unit variables are relative to this. - int64 m_lLastTime; // Ticks since last Reset(). This is the base for UI time. UI time is monotonic, it always moves forward at a constant rate until the timer is Reset()). - int64 m_lOffsetTime; // Additional ticks for Game time (relative to UI time). Game time can be affected by loading, pausing, time smoothing and time clamping, as well as SetTimer(). - - //// the GetcurAsyncTime function appears to want to return the actual wall clock time delta - //// but its using the base time (above) which is adjusted when there is a frame skip. - //int64 m_lBaseTime_Async; - - float m_fFrameTime; // In seconds since the last Update(), clamped/smoothed etc. - float m_fRealFrameTime; // In real seconds since the last Update(), non-clamped/un-smoothed etc. - - bool m_bGameTimerPaused; // Set if the game is paused. GetFrameTime() will return 0, GetCurrTime(ETIMER_GAME) will not progress. - int64 m_lGameTimerPausedTime; // The UI time when the game timer was paused. On un-pause, offset will be adjusted to match. - - ////////////////////////////////////////////////////////////////////////// - // Persistant state, kept by ResetTimer() - ////////////////////////////////////////////////////////////////////////// - bool m_bEnabled; - unsigned int m_nFrameCounter; - - int64 m_lTicksPerSec; // Ticks per second - double m_fSecsPerTick; // Seconds per tick - - // smoothing - float m_arrFrameTimes[MAX_FRAME_AVERAGE]; - float m_fAverageFrameTime; // used for smoothing (AverageFrameTime()) - - float m_fAvgFrameTime; // used for blend weighting (UpdateBlending()) - float m_fProfileBlend; // current blending amount for profile. - float m_fSmoothTime; // smoothing interval (up to m_profile_smooth_time). - - // time scale - float m_timeScaleChannels[NUM_TIME_SCALE_CHANNELS]; - float m_totalTimeScale; - - ////////////////////////////////////////////////////////////////////////// - // Console vars, always have default value on secondary CTimer instances - ////////////////////////////////////////////////////////////////////////// - float m_fixed_time_step; // in seconds - float m_max_time_step; // in seconds - float m_cvar_time_scale; // slow down time cvar - int m_TimeSmoothing; // Console Variable, 0=off, otherwise on - int m_TimeDebug; // Console Variable, 0=off, otherwise on - - // Profile averaging help. - float m_profile_smooth_time; // seconds to exponentially smooth profile results. - int m_profile_weighting; // weighting mode (see RegisterVar desc). - - //bool m_fixedTimeModeEnabled; - //float m_fixedTimeModeStep; -}; - -#endif // CRYINCLUDE_CRYSYSTEM_TIMER_H diff --git a/Code/Legacy/CrySystem/ViewSystem/DebugCamera.cpp b/Code/Legacy/CrySystem/ViewSystem/DebugCamera.cpp deleted file mode 100644 index 6eab555ac4..0000000000 --- a/Code/Legacy/CrySystem/ViewSystem/DebugCamera.cpp +++ /dev/null @@ -1,333 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -#include "CrySystem_precompiled.h" -#include "DebugCamera.h" -#include "ISystem.h" -#include "Cry_Camera.h" -#include "IViewSystem.h" - -#include -#include -#include - -using namespace AzFramework; - -namespace LegacyViewSystem -{ -const float g_moveScaleIncrement = 0.1f; -const float g_moveScaleMin = 0.01f; -const float g_moveScaleMax = 10.0f; -const float g_mouseMoveScale = 0.1f; -const float g_gamepadRotationSpeed = 5.0f; -const float g_mouseMaxRotationSpeed = 270.0f; -const float g_moveSpeed = 10.0f; -const float g_maxPitch = 85.0f; -const float g_boostMultiplier = 10.0f; -const float g_minRotationSpeed = 15.0f; -const float g_maxRotationSpeed = 70.0f; - -/////////////////////////////////////////////////////////////////////////////// -DebugCamera::DebugCamera() - : m_mouseMoveMode(0) - , m_isYInverted(0) - , m_cameraMode(DebugCamera::ModeOff) - , m_cameraYawInput(0.0f) - , m_cameraPitchInput(0.0f) - , m_cameraYaw(0.0f) - , m_cameraPitch(0.0f) - , m_moveInput(ZERO) - , m_moveScale(1.0f) - , m_oldMoveScale(1.0f) - , m_position(ZERO) - , m_view(IDENTITY) -{ - InputChannelEventListener::Connect(); -} - -/////////////////////////////////////////////////////////////////////////////// -DebugCamera::~DebugCamera() -{ - InputChannelEventListener::Disconnect(); -} - -/////////////////////////////////////////////////////////////////////////////// -void DebugCamera::OnEnable() -{ - m_position = Vec3_Zero; - m_moveInput = Vec3_Zero; - - Ang3 cameraAngles = Ang3(ZERO); - m_cameraYaw = RAD2DEG(cameraAngles.z); - m_cameraPitch = RAD2DEG(cameraAngles.x); - m_view = Matrix33(Ang3(DEG2RAD(m_cameraPitch), 0.0f, DEG2RAD(m_cameraYaw))); - - m_cameraYawInput = 0.0f; - m_cameraPitchInput = 0.0f; - - m_mouseMoveMode = 0; - m_cameraMode = DebugCamera::ModeFree; -} - -/////////////////////////////////////////////////////////////////////////////// -void DebugCamera::OnDisable() -{ - m_mouseMoveMode = 0; - m_cameraMode = DebugCamera::ModeOff; -} - -/////////////////////////////////////////////////////////////////////////////// -void DebugCamera::OnInvertY() -{ - m_isYInverted = !m_isYInverted; -} - -/////////////////////////////////////////////////////////////////////////////// -void DebugCamera::OnNextMode() -{ - if (m_cameraMode == DebugCamera::ModeFree) - { - m_cameraMode = DebugCamera::ModeFixed; - } - // ... - else if (m_cameraMode == DebugCamera::ModeFixed) - { - // this is the last mode, go to disabled. - OnDisable(); - } -} - -/////////////////////////////////////////////////////////////////////////////// -void DebugCamera::Update() -{ - if (m_cameraMode == DebugCamera::ModeOff) - { - return; - } - - float rotationSpeed = clamp_tpl(m_moveScale, g_minRotationSpeed, g_maxRotationSpeed); - UpdateYaw(m_cameraYawInput * rotationSpeed * gEnv->pTimer->GetFrameTime()); - UpdatePitch(m_cameraPitchInput * rotationSpeed * gEnv->pTimer->GetFrameTime()); - - m_view = Matrix33(Ang3(DEG2RAD(m_cameraPitch), 0.0f, DEG2RAD(m_cameraYaw))); - UpdatePosition(m_moveInput); -} - -/////////////////////////////////////////////////////////////////////////////// -void DebugCamera::PostUpdate() -{ -} - -/////////////////////////////////////////////////////////////////////////////// -bool DebugCamera::OnInputChannelEventFiltered(const InputChannel& inputChannel) -{ - if (!IsEnabled() || m_cameraMode == DebugCamera::ModeFixed || gEnv->pConsole->IsOpened()) - { - return false; - } - - const InputDeviceId& deviceId = inputChannel.GetInputDevice().GetInputDeviceId(); - const InputChannelId& channelId = inputChannel.GetInputChannelId(); - const float eventValue = inputChannel.GetValue(); - if (InputDeviceKeyboard::IsKeyboardDevice(deviceId)) - { - if (channelId == InputDeviceKeyboard::Key::AlphanumericW) - { - m_moveInput.y = eventValue; - } - else if (channelId == InputDeviceKeyboard::Key::AlphanumericS) - { - m_moveInput.y = -eventValue; - } - else if (channelId == InputDeviceKeyboard::Key::AlphanumericA) - { - m_moveInput.x = -eventValue; - } - else if (channelId == InputDeviceKeyboard::Key::AlphanumericD) - { - m_moveInput.x = eventValue; - } - else if (channelId == InputDeviceKeyboard::Key::ModifierShiftL) - { - if (inputChannel.IsStateEnded()) - { - m_moveScale = m_oldMoveScale; - } - else if (inputChannel.IsStateBegan()) - { - m_oldMoveScale = m_moveScale; - m_moveScale = clamp_tpl(m_moveScale * g_boostMultiplier, g_moveScaleMin, g_moveScaleMax); - } - } - } - else if (InputDeviceMouse::IsMouseDevice(deviceId)) - { - if (channelId == InputDeviceMouse::Movement::Z) - { - if (inputChannel.GetValue() > 0) - { - m_moveScale = clamp_tpl(m_moveScale + g_moveScaleIncrement, g_moveScaleMin, g_moveScaleMax); - } - else - { - m_moveScale = clamp_tpl(m_moveScale - g_moveScaleIncrement, g_moveScaleMin, g_moveScaleMax); - } - } - else if (channelId == InputDeviceMouse::Movement::X) - { - //KC: If both left and right mouse buttons are pressed then use - //the mouse movement for horizontal movement. - if (2 != m_mouseMoveMode) - { - UpdateYaw(fsgnf(-eventValue) * clamp_tpl(fabs_tpl(eventValue) * m_moveScale, 0.0f, g_mouseMaxRotationSpeed) * gEnv->pTimer->GetFrameTime()); - } - else - { - UpdatePosition(Vec3(eventValue * g_mouseMoveScale, 0.0f, 0.0f)); - } - } - else if (channelId == InputDeviceMouse::Movement::Y) - { - //KC: If both left and right mouse buttons are pressed then use - //the mouse movement for vertical movement. - if (2 != m_mouseMoveMode) - { - UpdatePitch(fsgnf(-eventValue) * clamp_tpl(fabs_tpl(eventValue) * m_moveScale, 0.0f, g_mouseMaxRotationSpeed) * gEnv->pTimer->GetFrameTime()); - } - else - { - UpdatePosition(Vec3(0.0f, 0.0f, -eventValue * g_mouseMoveScale)); - } - } - else if (channelId == InputDeviceMouse::Button::Left) - { - if (inputChannel.IsStateEnded()) - { - m_mouseMoveMode = clamp_tpl(m_mouseMoveMode - 1, 0, 2); - } - else - { - m_mouseMoveMode = clamp_tpl(m_mouseMoveMode + 1, 0, 2); - } - } - else if (channelId == InputDeviceMouse::Button::Right) - { - if (inputChannel.IsStateEnded()) - { - m_mouseMoveMode = clamp_tpl(m_mouseMoveMode - 1, 0, 2); - } - else - { - m_mouseMoveMode = clamp_tpl(m_mouseMoveMode + 1, 0, 2); - } - } - } - else if (InputDeviceGamepad::IsGamepadDevice(deviceId)) - { - if (channelId == InputDeviceGamepad::Button::DU) - { - m_moveScale = clamp_tpl(m_moveScale + g_moveScaleIncrement, g_moveScaleMin, g_moveScaleMax); - } - else if (channelId == InputDeviceGamepad::Button::DD) - { - m_moveScale = clamp_tpl(m_moveScale - g_moveScaleIncrement, g_moveScaleMin, g_moveScaleMax); - } - else if (channelId == InputDeviceGamepad::Trigger::L2) - { - m_moveInput.z = -eventValue; - } - else if (channelId == InputDeviceGamepad::Trigger::R2) - { - m_moveInput.z = eventValue; - } - else if (channelId == InputDeviceGamepad::ThumbStickAxis1D::LX) - { - m_moveInput.x = eventValue; - } - else if (channelId == InputDeviceGamepad::ThumbStickAxis1D::LY) - { - m_moveInput.y = eventValue; - } - else if (channelId == InputDeviceGamepad::ThumbStickAxis1D::RX) - { - m_cameraYawInput = -eventValue * g_gamepadRotationSpeed; - } - else if (channelId == InputDeviceGamepad::ThumbStickAxis1D::RY) - { - m_cameraPitchInput = eventValue * g_gamepadRotationSpeed; - } - //KC: Use the shoulder buttons to temporarily boost or reduce the scale. - else if (channelId == InputDeviceGamepad::Button::L1) - { - if (inputChannel.IsStateEnded()) - { - m_moveScale = m_oldMoveScale; - } - else if (inputChannel.IsStateBegan()) - { - m_oldMoveScale = m_moveScale; - m_moveScale = clamp_tpl(m_moveScale / g_boostMultiplier, g_moveScaleMin, g_moveScaleMax); - } - } - else if (channelId == InputDeviceGamepad::Button::R1) - { - if (inputChannel.IsStateEnded()) - { - m_moveScale = m_oldMoveScale; - } - else if (inputChannel.IsStateBegan()) - { - m_oldMoveScale = m_moveScale; - m_moveScale = clamp_tpl(m_moveScale * g_boostMultiplier, g_moveScaleMin, g_moveScaleMax); - } - } - } - - return false; -} - -/////////////////////////////////////////////////////////////////////////////// -void DebugCamera::UpdatePitch(float amount) -{ - if (m_isYInverted) - { - amount = -amount; - } - - m_cameraPitch += amount; - m_cameraPitch = clamp_tpl(m_cameraPitch, -g_maxPitch, g_maxPitch); -} - -/////////////////////////////////////////////////////////////////////////////// -void DebugCamera::UpdateYaw(float amount) -{ - m_cameraYaw += amount; - if (m_cameraYaw < 0.0f) - { - m_cameraYaw += 360.0f; - } - else if (m_cameraYaw >= 360.0f) - { - m_cameraYaw -= 360.0f; - } -} - -/////////////////////////////////////////////////////////////////////////////// -void DebugCamera::UpdatePosition(const Vec3& amount) -{ - Vec3 diff = amount * g_moveSpeed * m_moveScale * gEnv->pTimer->GetFrameTime(); - MovePosition(diff); -} - -void DebugCamera::MovePosition(const Vec3& offset) -{ - m_position += m_view.GetColumn0() * offset.x; - m_position += m_view.GetColumn1() * offset.y; - m_position += m_view.GetColumn2() * offset.z; -} - -} // namespace LegacyViewSystem diff --git a/Code/Legacy/CrySystem/ViewSystem/DebugCamera.h b/Code/Legacy/CrySystem/ViewSystem/DebugCamera.h deleted file mode 100644 index c170b73c96..0000000000 --- a/Code/Legacy/CrySystem/ViewSystem/DebugCamera.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -#pragma once - -#include - -namespace LegacyViewSystem -{ -/////////////////////////////////////////////////////////////////////////////// -class DebugCamera - : public AzFramework::InputChannelEventListener -{ -public: - enum Mode - { - ModeOff, // no debug cam - ModeFree, // free-fly - ModeFixed, // fixed cam, control goes back to game - }; - - DebugCamera(); - ~DebugCamera() override; - - void Update(); - void PostUpdate(); - bool IsEnabled(); - bool IsFixed(); - bool IsFree(); - - // AzFramework::InputChannelEventListener - bool OnInputChannelEventFiltered(const AzFramework::InputChannel& inputChannel) override; - - void OnEnable(); - void OnDisable(); - void OnInvertY(); - void OnNextMode(); - void UpdatePitch(float amount); - void UpdateYaw(float amount); - void UpdatePosition(const Vec3& amount); - void MovePosition(const Vec3& offset); - -protected: - int m_mouseMoveMode; - int m_isYInverted; - int m_cameraMode; - float m_cameraYawInput; - float m_cameraPitchInput; - float m_cameraYaw; - float m_cameraPitch; - Vec3 m_moveInput; - - float m_moveScale; - float m_oldMoveScale; - Vec3 m_position; - Matrix33 m_view; -}; - - -inline bool DebugCamera::IsEnabled() -{ - return m_cameraMode != DebugCamera::ModeOff; -} - -inline bool DebugCamera::IsFixed() -{ - return m_cameraMode == DebugCamera::ModeFixed; -} - -inline bool DebugCamera::IsFree() -{ - return m_cameraMode == DebugCamera::ModeFree; -} - -} // namespace LegacyViewSystem diff --git a/Code/Legacy/CrySystem/ViewSystem/View.cpp b/Code/Legacy/CrySystem/ViewSystem/View.cpp deleted file mode 100644 index ca5ef3892b..0000000000 --- a/Code/Legacy/CrySystem/ViewSystem/View.cpp +++ /dev/null @@ -1,546 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - - -#include "CrySystem_precompiled.h" - -#include -#include -#include "View.h" -#include -#include -#include -#include -#include - -namespace LegacyViewSystem -{ - -static ICVar* pCamShakeMult = 0; -static ICVar* pHmdReferencePoint = 0; - -//------------------------------------------------------------------------ -CView::CView(ISystem* pSystem) - : m_pSystem(pSystem) - , m_linkedTo(0) - , m_frameAdditiveAngles(0.0f, 0.0f, 0.0f) - , m_scale(1.0f) - , m_zoomedScale(1.0f) -{ - if (!pCamShakeMult) - { - pCamShakeMult = gEnv->pConsole->GetCVar("c_shakeMult"); - } - if (!pHmdReferencePoint) - { - pHmdReferencePoint = gEnv->pConsole->GetCVar("hmd_reference_point"); - } -} - -//------------------------------------------------------------------------ -CView::~CView() -{ -} - -//----------------------------------------------------------------------- -void CView::Release() -{ - delete this; -} - -//------------------------------------------------------------------------ -void CView::Update([[maybe_unused]] float frameTime, [[maybe_unused]] bool isActive) -{ - AZ_ErrorOnce("CryLegacy", false, "CryLegacy view system no longer available (CView::Update)"); -} - -//----------------------------------------------------------------------- -void CView::ApplyFrameAdditiveAngles(Quat& cameraOrientation) -{ - if ((m_frameAdditiveAngles.x != 0.f) || (m_frameAdditiveAngles.y != 0.f) || (m_frameAdditiveAngles.z != 0.f)) - { - Ang3 cameraAngles(cameraOrientation); - cameraAngles += m_frameAdditiveAngles; - - cameraOrientation.SetRotationXYZ(cameraAngles); - - m_frameAdditiveAngles.Set(0.0f, 0.0f, 0.0f); - } -} - -//------------------------------------------------------------------------ -void CView::SetViewShake(Ang3 shakeAngle, Vec3 shakeShift, float duration, float frequency, float randomness, int shakeID, bool bFlipVec, bool bUpdateOnly, bool bGroundOnly) -{ - SShakeParams params; - params.shakeAngle = shakeAngle; - params.shakeShift = shakeShift; - params.frequency = frequency; - params.randomness = randomness; - params.shakeID = shakeID; - params.bFlipVec = bFlipVec; - params.bUpdateOnly = bUpdateOnly; - params.bGroundOnly = bGroundOnly; - params.fadeInDuration = 0; // - params.fadeOutDuration = duration; // originally it was faded out from start. that is why the values are set this way here, to preserve compatibility. - params.sustainDuration = 0; // - - SetViewShakeEx(params); -} - - -//------------------------------------------------------------------------ -void CView::SetViewShakeEx(const SShakeParams& params) -{ - float shakeMult = GetScale(); - if (shakeMult < 0.001f) - { - return; - } - - int shakes = static_cast(m_shakes.size()); - SShake* pSetShake(NULL); - - for (int i = 0; i < shakes; ++i) - { - SShake* pShake = &m_shakes[i]; - if (pShake->ID == params.shakeID) - { - pSetShake = pShake; - break; - } - } - - if (!pSetShake) - { - m_shakes.push_back(SShake(params.shakeID)); - pSetShake = &m_shakes.back(); - } - - if (pSetShake) - { - // this can be set dynamically - pSetShake->frequency = max(0.00001f, params.frequency); - - // the following are set on a 'new' shake as well - if (params.bUpdateOnly == false) - { - pSetShake->amount = params.shakeAngle * shakeMult; - pSetShake->amountVector = params.shakeShift * shakeMult; - pSetShake->randomness = params.randomness; - pSetShake->doFlip = params.bFlipVec; - pSetShake->groundOnly = params.bGroundOnly; - pSetShake->isSmooth = params.isSmooth; - pSetShake->permanent = params.bPermanent; - pSetShake->fadeInDuration = params.fadeInDuration; - pSetShake->sustainDuration = params.sustainDuration; - pSetShake->fadeOutDuration = params.fadeOutDuration; - pSetShake->timeDone = 0; - pSetShake->updating = true; - pSetShake->interrupted = false; - pSetShake->goalShake = Quat(ZERO); - pSetShake->goalShakeSpeed = Quat(ZERO); - pSetShake->goalShakeVector = Vec3(ZERO); - pSetShake->goalShakeVectorSpeed = Vec3(ZERO); - pSetShake->nextShake = 0.0f; - } - } -} - -//------------------------------------------------------------------------ -void CView::SetScale(const float scale) -{ - CRY_ASSERT_MESSAGE(scale == 1.0f || m_scale == 1.0f, "Attempting to CView::SetScale but has already been set!"); - m_scale = scale; -} - -void CView::SetZoomedScale(const float scale) -{ - CRY_ASSERT_MESSAGE(scale == 1.0f || m_zoomedScale == 1.0f, "Attempting to CView::SetZoomedScale but has already been set!"); - m_zoomedScale = scale; -} - -//------------------------------------------------------------------------ -const float CView::GetScale() -{ - float shakeMult(pCamShakeMult->GetFVal()); - return m_scale * shakeMult * m_zoomedScale; -} - -//------------------------------------------------------------------------ -void CView::ProcessShaking(float frameTime) -{ - m_viewParams.currentShakeQuat.SetIdentity(); - m_viewParams.currentShakeShift.zero(); - m_viewParams.shakingRatio = 0; - m_viewParams.groundOnly = false; - - int shakes = static_cast(m_shakes.size()); - for (int i = 0; i < shakes; ++i) - { - ProcessShake(&m_shakes[i], frameTime); - } -} - -//------------------------------------------------------------------------ -void CView::ProcessShake(SShake* pShake, float frameTime) -{ - if (!pShake->updating) - { - return; - } - - pShake->timeDone += frameTime; - - if (pShake->isSmooth) - { - ProcessShakeSmooth(pShake, frameTime); - } - else - { - ProcessShakeNormal(pShake, frameTime); - } -} - -//------------------------------------------------------------------------ -void CView::ProcessShakeNormal(SShake* pShake, float frameTime) -{ - float endSustain = pShake->fadeInDuration + pShake->sustainDuration; - float totalDuration = endSustain + pShake->fadeOutDuration; - - bool finalDamping = (!pShake->permanent && pShake->timeDone > totalDuration) || (pShake->interrupted && pShake->ratio < 0.05f); - - if (finalDamping) - { - ProcessShakeNormal_FinalDamping(pShake, frameTime); - } - else - { - ProcessShakeNormal_CalcRatio(pShake, frameTime, endSustain); - ProcessShakeNormal_DoShaking(pShake, frameTime); - - //for the global shaking ratio keep the biggest - if (pShake->groundOnly) - { - m_viewParams.groundOnly = true; - } - m_viewParams.shakingRatio = max(m_viewParams.shakingRatio, pShake->ratio); - m_viewParams.currentShakeQuat *= pShake->shakeQuat; - m_viewParams.currentShakeShift += pShake->shakeVector; - } -} - -////////////////////////////////////////////////////////////////////////// -void CView::ProcessShakeSmooth(SShake* pShake, float frameTime) -{ - assert(pShake->timeDone >= 0); - - float endTimeFadeIn = pShake->fadeInDuration; - float endTimeSustain = pShake->sustainDuration + endTimeFadeIn; - float totalTime = endTimeSustain + pShake->fadeOutDuration; - - if (pShake->interrupted && endTimeFadeIn <= pShake->timeDone && pShake->timeDone < endTimeSustain) - { - pShake->timeDone = endTimeSustain; - } - - float damping = 1.f; - if (pShake->timeDone < endTimeFadeIn) - { - damping = pShake->timeDone / endTimeFadeIn; - } - else if (endTimeSustain < pShake->timeDone && pShake->timeDone < totalTime) - { - damping = (totalTime - pShake->timeDone) / (totalTime - endTimeSustain); - } - else if (totalTime <= pShake->timeDone) - { - pShake->shakeQuat.SetIdentity(); - pShake->shakeVector.zero(); - pShake->ratio = 0.0f; - pShake->nextShake = 0.0f; - pShake->flip = false; - pShake->updating = false; - return; - } - - ProcessShakeSmooth_DoShaking(pShake, frameTime); - - if (pShake->groundOnly) - { - m_viewParams.groundOnly = true; - } - pShake->ratio = (3.f - 2.f * damping) * damping * damping; // smooth ration change - m_viewParams.shakingRatio = max(m_viewParams.shakingRatio, pShake->ratio); - m_viewParams.currentShakeQuat *= Quat::CreateSlerp(IDENTITY, pShake->shakeQuat, pShake->ratio); - m_viewParams.currentShakeShift += Vec3::CreateLerp(ZERO, pShake->shakeVector, pShake->ratio); -} - -////////////////////////////////////////////////////////////////////////// -void CView::GetRandomQuat(Quat& quat, SShake* pShake) -{ - quat.SetRotationXYZ(pShake->amount); - float randomAmt(pShake->randomness); - float len(fabs(pShake->amount.x) + fabs(pShake->amount.y) + fabs(pShake->amount.z)); - len /= 3.f; - float r = len * randomAmt; - quat *= Quat::CreateRotationXYZ(Ang3(cry_random(-r, r), cry_random(-r, r), cry_random(-r, r))); -} - -////////////////////////////////////////////////////////////////////////// -void CView::GetRandomVector(Vec3& vec, SShake* pShake) -{ - vec = pShake->amountVector; - float randomAmt(pShake->randomness); - float len = fabs(pShake->amountVector.x) + fabs(pShake->amountVector.y) + fabs(pShake->amountVector.z); - len /= 3.f; - float r = len * randomAmt; - vec += Vec3(cry_random(-r, r), cry_random(-r, r), cry_random(-r, r)); -} - -////////////////////////////////////////////////////////////////////////// -void CView::CubeInterpolateQuat(float t, SShake* pShake) -{ - Quat p0 = pShake->startShake; - Quat p1 = pShake->goalShake; - Quat v0 = pShake->startShakeSpeed * 0.5f; - Quat v1 = pShake->goalShakeSpeed * 0.5f; - - pShake->shakeQuat = (((p0 * 2.f + p1 * -2.f + v0 + v1) * t - + (p0 * -3.f + p1 * 3.f + v0 * -2.f - v1)) * t - + (v0)) * t - + p0; - - pShake->shakeQuat.Normalize(); -} - -////////////////////////////////////////////////////////////////////////// -void CView::CubeInterpolateVector(float t, SShake* pShake) -{ - Vec3 p0 = pShake->startShakeVector; - Vec3 p1 = pShake->goalShakeVector; - Vec3 v0 = pShake->startShakeVectorSpeed * 0.8f; - Vec3 v1 = pShake->goalShakeVectorSpeed * 0.8f; - - pShake->shakeVector = (((p0 * 2.f + p1 * -2.f + v0 + v1) * t - + (p0 * -3.f + p1 * 3.f + v0 * -2.f - v1)) * t - + (v0)) * t - + p0; -} - -////////////////////////////////////////////////////////////////////////// -void CView::ProcessShakeSmooth_DoShaking(SShake* pShake, float frameTime) -{ - if (pShake->nextShake <= 0.0f) - { - pShake->nextShake = pShake->frequency; - - pShake->startShake = pShake->goalShake; - pShake->startShakeSpeed = pShake->goalShakeSpeed; - pShake->startShakeVector = pShake->goalShakeVector; - pShake->startShakeVectorSpeed = pShake->goalShakeVectorSpeed; - - GetRandomQuat(pShake->goalShake, pShake); - GetRandomQuat(pShake->goalShakeSpeed, pShake); - GetRandomVector(pShake->goalShakeVector, pShake); - GetRandomVector(pShake->goalShakeVectorSpeed, pShake); - - if (pShake->flip) - { - pShake->goalShake.Invert(); - pShake->goalShakeSpeed.Invert(); - pShake->goalShakeVector = -pShake->goalShakeVector; - pShake->goalShakeVectorSpeed = -pShake->goalShakeVectorSpeed; - } - - if (pShake->doFlip) - { - pShake->flip = !pShake->flip; - } - } - - pShake->nextShake -= frameTime; - - float t = (pShake->frequency - pShake->nextShake) / pShake->frequency; - CubeInterpolateQuat(t, pShake); - CubeInterpolateVector(t, pShake); -} - -////////////////////////////////////////////////////////////////////////// -void CView::ProcessShakeNormal_FinalDamping(SShake* pShake, float frameTime) -{ - pShake->shakeQuat = Quat::CreateSlerp(pShake->shakeQuat, IDENTITY, frameTime * 5.0f); - m_viewParams.currentShakeQuat *= pShake->shakeQuat; - - pShake->shakeVector = Vec3::CreateLerp(pShake->shakeVector, ZERO, frameTime * 5.0f); - m_viewParams.currentShakeShift += pShake->shakeVector; - - float svlen2(pShake->shakeVector.len2()); - bool quatIsIdentity(Quat::IsEquivalent(IDENTITY, pShake->shakeQuat, 0.0001f)); - - if (quatIsIdentity && svlen2 < 0.01f) - { - pShake->shakeQuat.SetIdentity(); - pShake->shakeVector.zero(); - - pShake->ratio = 0.0f; - pShake->nextShake = 0.0f; - pShake->flip = false; - - pShake->updating = false; - } -} - - -// "ratio" is the amplitude of the shaking -void CView::ProcessShakeNormal_CalcRatio(SShake* pShake, float frameTime, float endSustain) -{ - const float FADEOUT_TIME_WHEN_INTERRUPTED = 0.5f; - - if (pShake->interrupted) - { - pShake->ratio = max(0.f, pShake->ratio - (frameTime / FADEOUT_TIME_WHEN_INTERRUPTED)); // fadeout after interrupted - } - else - if (pShake->timeDone >= endSustain && pShake->fadeOutDuration > 0) - { - float timeFading = pShake->timeDone - endSustain; - pShake->ratio = clamp_tpl(1.f - timeFading / pShake->fadeOutDuration, 0.f, 1.f); // fadeOut - } - else - if (pShake->timeDone >= pShake->fadeInDuration) - { - pShake->ratio = 1.f; // sustain - } - else - { - pShake->ratio = min(1.f, pShake->timeDone / pShake->fadeInDuration); // fadeIn - } - - if (pShake->permanent && pShake->timeDone >= pShake->fadeInDuration && !pShake->interrupted) - { - pShake->ratio = 1.f; // permanent standing - } -} - -////////////////////////////////////////////////////////////////////////// -void CView::ProcessShakeNormal_DoShaking(SShake* pShake, float frameTime) -{ - float t; - if (pShake->nextShake <= 0.0f) - { - //angular - pShake->goalShake.SetRotationXYZ(pShake->amount); - if (pShake->flip) - { - pShake->goalShake.Invert(); - } - - //translational - pShake->goalShakeVector = pShake->amountVector; - if (pShake->flip) - { - pShake->goalShakeVector = -pShake->goalShakeVector; - } - - if (pShake->doFlip) - { - pShake->flip = !pShake->flip; - } - - //randomize it a little - float randomAmt(pShake->randomness); - float len(fabs(pShake->amount.x) + fabs(pShake->amount.y) + fabs(pShake->amount.z)); - len /= 3.0f; - float r = len * randomAmt; - pShake->goalShake *= Quat::CreateRotationXYZ(Ang3(cry_random(-r, r), cry_random(-r, r), cry_random(-r, r))); - - //translational randomization - len = fabs(pShake->amountVector.x) + fabs(pShake->amountVector.y) + fabs(pShake->amountVector.z); - len /= 3.0f; - r = len * randomAmt; - pShake->goalShakeVector += Vec3(cry_random(-r, r), cry_random(-r, r), cry_random(-r, r)); - - //damp & bounce it in a non linear fashion - t = 1.0f - (pShake->ratio * pShake->ratio); - pShake->goalShake = Quat::CreateSlerp(pShake->goalShake, IDENTITY, t); - pShake->goalShakeVector = Vec3::CreateLerp(pShake->goalShakeVector, ZERO, t); - - pShake->nextShake = pShake->frequency; - } - - pShake->nextShake = max(0.0f, pShake->nextShake - frameTime); - - t = min(1.0f, frameTime * (1.0f / pShake->frequency)); - pShake->shakeQuat = Quat::CreateSlerp(pShake->shakeQuat, pShake->goalShake, t); - pShake->shakeQuat.Normalize(); - pShake->shakeVector = Vec3::CreateLerp(pShake->shakeVector, pShake->goalShakeVector, t); -} - - -//------------------------------------------------------------------------ -void CView::StopShake(int shakeID) -{ - uint32 num = static_cast(m_shakes.size()); - for (uint32 i = 0; i < num; ++i) - { - if (m_shakes[i].ID == shakeID && m_shakes[i].updating) - { - m_shakes[i].interrupted = true; - } - } -} - - -//------------------------------------------------------------------------ -void CView::ResetShaking() -{ - // disable shakes - std::vector::iterator iter = m_shakes.begin(); - std::vector::iterator iterEnd = m_shakes.end(); - while (iter != iterEnd) - { - SShake& shake = *iter; - shake.updating = false; - shake.timeDone = 0; - ++iter; - } -} - -//------------------------------------------------------------------------ -void CView::LinkTo(AZ::Entity* follow) -{ - CRY_ASSERT(follow); - m_azEntity = follow; - m_linkedTo = follow->GetId(); - m_viewParams.targetPos = Vec3();// This should be quickly overwritten by the camera's acutal position from its matrix -} - -//------------------------------------------------------------------------ -void CView::Unlink() -{ - m_azEntity = nullptr; - m_linkedTo.SetInvalid(); - m_viewParams.targetPos = Vec3(); -} - -//------------------------------------------------------------------------ -void CView::SetFrameAdditiveCameraAngles(const Ang3& addFrameAngles) -{ - m_frameAdditiveAngles = addFrameAngles; -} - -void CView::PostSerialize() -{ -} - -////////////////////////////////////////////////////////////////////////// -void CView::SetActive([[maybe_unused]] bool const bActive) -{ -} - -} // namespace LegacyViewSystem diff --git a/Code/Legacy/CrySystem/ViewSystem/View.h b/Code/Legacy/CrySystem/ViewSystem/View.h deleted file mode 100644 index 001bf694fd..0000000000 --- a/Code/Legacy/CrySystem/ViewSystem/View.h +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - - -// Description : View System interfaces. - -# pragma once - -#include "IViewSystem.h" -#include - -class CGameObject; -struct ISystem; - -namespace LegacyViewSystem -{ - -class CView - : public IView -{ -public: - - CView(ISystem* pSystem); - ~CView() override; - - //shaking - struct SShake - { - bool updating; - bool flip; - bool doFlip; - bool groundOnly; - bool permanent; - bool interrupted; // when forcefully stopped - bool isSmooth; - - int ID; - - float nextShake; - float timeDone; - float sustainDuration; - float fadeInDuration; - float fadeOutDuration; - - float frequency; - float ratio; - - float randomness; - - Quat startShake; - Quat startShakeSpeed; - Vec3 startShakeVector; - Vec3 startShakeVectorSpeed; - - Quat goalShake; - Quat goalShakeSpeed; - Vec3 goalShakeVector; - Vec3 goalShakeVectorSpeed; - - Ang3 amount; - Vec3 amountVector; - - Quat shakeQuat; - Vec3 shakeVector; - - SShake(int shakeID) - { - memset(this, 0, sizeof(SShake)); - - startShake.SetIdentity(); - startShakeSpeed.SetIdentity(); - goalShake.SetIdentity(); - shakeQuat.SetIdentity(); - - randomness = 0.5f; - - ID = shakeID; - } - }; - - - // IView - void Release() override; - void Update(float frameTime, bool isActive) override; - virtual void ProcessShaking(float frameTime); - virtual void ProcessShake(SShake* pShake, float frameTime); - void ResetShaking() override; - void ResetBlending() override { m_viewParams.ResetBlending(); } - void LinkTo(AZ::Entity* follow) override; - void Unlink() override; - AZ::EntityId GetLinkedId() override {return m_linkedTo; }; - void SetCurrentParams(SViewParams& params) override { m_viewParams = params; }; - const SViewParams* GetCurrentParams() override {return &m_viewParams; } - void SetViewShake(Ang3 shakeAngle, Vec3 shakeShift, float duration, float frequency, float randomness, int shakeID, bool bFlipVec = true, bool bUpdateOnly = false, bool bGroundOnly = false) override; - void SetViewShakeEx(const SShakeParams& params) override; - void StopShake(int shakeID) override; - void SetFrameAdditiveCameraAngles(const Ang3& addFrameAngles) override; - void SetScale(const float scale) override; - void SetZoomedScale(const float scale) override; - void SetActive(const bool bActive) override; - // ~IView - - void PostSerialize() override; - CCamera& GetCamera() override { return m_camera; } - const CCamera& GetCamera() const override { return m_camera; } - -protected: - - void ProcessShakeNormal(SShake* pShake, float frameTime); - void ProcessShakeNormal_FinalDamping(SShake* pShake, float frameTime); - void ProcessShakeNormal_CalcRatio(SShake* pShake, float frameTime, float endSustain); - void ProcessShakeNormal_DoShaking(SShake* pShake, float frameTime); - - void ProcessShakeSmooth(SShake* pShake, float frameTime); - void ProcessShakeSmooth_DoShaking(SShake* pShake, float frameTime); - - void ApplyFrameAdditiveAngles(Quat& cameraOrientation); - - const float GetScale(); - -private: - - void GetRandomQuat(Quat& quat, SShake* pShake); - void GetRandomVector(Vec3& vec3, SShake* pShake); - void CubeInterpolateQuat(float t, SShake* pShake); - void CubeInterpolateVector(float t, SShake* pShake); - -protected: - - bool m_active; - AZ::EntityId m_linkedTo; - AZ::Entity* m_azEntity = nullptr; - - SViewParams m_viewParams; - CCamera m_camera; - - ISystem* m_pSystem; - - std::vector m_shakes; - - Ang3 m_frameAdditiveAngles; // Used mainly for cinematics, where the game can slightly override camera orientation - - float m_scale; - float m_zoomedScale; -}; - -} // namespace LegacyViewSystem diff --git a/Code/Legacy/CrySystem/ViewSystem/ViewSystem.cpp b/Code/Legacy/CrySystem/ViewSystem/ViewSystem.cpp deleted file mode 100644 index d7e5c081c0..0000000000 --- a/Code/Legacy/CrySystem/ViewSystem/ViewSystem.cpp +++ /dev/null @@ -1,656 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - - -#include "CrySystem_precompiled.h" - -#include - -#include -#include -#include "ViewSystem.h" -#include "PNoise3.h" -#include "DebugCamera.h" -#include - -#include - -#define VS_CALL_LISTENERS(func) \ - { \ - size_t count = m_listeners.size(); \ - if (count > 0) \ - { \ - const size_t memSize = count * sizeof(IViewSystemListener*); \ - IViewSystemListener* *pArray = (IViewSystemListener**) alloca(memSize); \ - memcpy(pArray, &*m_listeners.begin(), memSize); \ - while (count--) \ - { \ - (*pArray)->func; ++pArray; \ - } \ - } \ - } - -namespace LegacyViewSystem -{ - -void ToggleDebugCamera([[maybe_unused]] IConsoleCmdArgs* pArgs) -{ -#if !defined(_RELEASE) - if (!gEnv->IsDedicated()) - { - DebugCamera* debugCamera = CViewSystem::s_debugCamera; - if (debugCamera) - { - if (!debugCamera->IsEnabled()) - { - debugCamera->OnEnable(); - } - else - { - debugCamera->OnNextMode(); - } - } - } -#endif -} - -void ToggleDebugCameraInvertY([[maybe_unused]] IConsoleCmdArgs* pArgs) -{ -#if !defined(_RELEASE) - if (!gEnv->IsDedicated()) - { - DebugCamera* debugCamera = CViewSystem::s_debugCamera; - if (debugCamera) - { - debugCamera->OnInvertY(); - } - } -#endif -} - -void DebugCameraMove([[maybe_unused]] IConsoleCmdArgs* pArgs) -{ -#if !defined(_RELEASE) - if (!gEnv->IsDedicated()) - { - if (pArgs->GetArgCount() != 4) - { - CryLogAlways("debugCameraMove requires 3 args, not %d.", pArgs->GetArgCount() - 1); - return; - } - - DebugCamera* debugCamera = CViewSystem::s_debugCamera; - if (debugCamera && debugCamera->IsFree()) - { - Vec3::value_type x = azlossy_cast(atof(pArgs->GetArg(1))); - Vec3::value_type y = azlossy_cast(atof(pArgs->GetArg(2))); - Vec3::value_type z = azlossy_cast(atof(pArgs->GetArg(3))); - Vec3 newPos(x, y, z); - debugCamera->MovePosition(newPos); - } - } -#endif -} - -DebugCamera* CViewSystem::s_debugCamera = nullptr; - -//------------------------------------------------------------------------ -CViewSystem::CViewSystem(ISystem* pSystem) - : m_pSystem(pSystem) - , m_activeViewId(0) - , m_nextViewIdToAssign(1000) - , m_preSequenceViewId(0) - , m_cutsceneViewId(0) - , m_cutsceneCount(0) - , m_bOverridenCameraRotation(false) - , m_bActiveViewFromSequence(false) - , m_fBlendInPosSpeed(0.0f) - , m_fBlendInRotSpeed(0.0f) - , m_bPerformBlendOut(false) - , m_useDeferredViewSystemUpdate(false) - , m_bControlsAudioListeners(true) -{ -#if !defined(_RELEASE) - if (!gEnv->IsDedicated()) - { - if (!s_debugCamera) - { - s_debugCamera = new DebugCamera; - } - - REGISTER_COMMAND("debugCameraToggle", ToggleDebugCamera, VF_DEV_ONLY, "Toggle the debug camera.\n"); - REGISTER_COMMAND("debugCameraInvertY", ToggleDebugCameraInvertY, VF_DEV_ONLY, "Toggle debug camera Y-axis inversion.\n"); - REGISTER_COMMAND("debugCameraMove", DebugCameraMove, VF_DEV_ONLY, "Move the debug camera the specified distance (x y z).\n"); - gEnv->pConsole->CreateKeyBind("ctrl_keyboard_key_punctuation_backslash", "debugCameraToggle"); - gEnv->pConsole->CreateKeyBind("alt_keyboard_key_punctuation_backslash", "debugCameraInvertY"); - } -#endif - - REGISTER_CVAR2("cl_camera_noise", &m_fCameraNoise, -1, 0, - "Adds hand-held like camera noise to the camera view. \n The higher the value, the higher the noise.\n A value <= 0 disables it."); - REGISTER_CVAR2("cl_camera_noise_freq", &m_fCameraNoiseFrequency, 2.5326173f, 0, - "Defines camera noise frequency for the camera view. \n The higher the value, the higher the noise."); - - REGISTER_CVAR2("cl_ViewSystemDebug", &m_nViewSystemDebug, 0, VF_CHEAT, - "Sets Debug information of the ViewSystem."); - - REGISTER_CVAR2("cl_DefaultNearPlane", &m_fDefaultCameraNearZ, DEFAULT_NEAR, VF_CHEAT, - "The default camera near plane. "); - - //Register as level system listener - if (m_pSystem->GetILevelSystem()) - { - m_pSystem->GetILevelSystem()->AddListener(this); - } - - Camera::CameraSystemRequestBus::Handler::BusConnect(); -} - -//------------------------------------------------------------------------ -CViewSystem::~CViewSystem() -{ - Camera::CameraSystemRequestBus::Handler::BusDisconnect(); - - ClearAllViews(); - - IConsole* pConsole = gEnv->pConsole; - CRY_ASSERT(pConsole); - pConsole->UnregisterVariable("cl_camera_noise", true); - pConsole->UnregisterVariable("cl_camera_noise_freq", true); - pConsole->UnregisterVariable("cl_ViewSystemDebug", true); - pConsole->UnregisterVariable("cl_DefaultNearPlane", true); - - //Remove as level system listener - if (m_pSystem->GetILevelSystem()) - { - m_pSystem->GetILevelSystem()->RemoveListener(this); - } - -#if !defined(_RELEASE) - if (!gEnv->IsDedicated()) - { - UNREGISTER_COMMAND("debugCameraToggle"); - UNREGISTER_COMMAND("debugCameraInvertY"); - UNREGISTER_COMMAND("debugCameraMove"); - - if (s_debugCamera) - { - delete s_debugCamera; - s_debugCamera = nullptr; - } - } -#endif -} - -//------------------------------------------------------------------------ -void CViewSystem::Update(float frameTime) -{ - if (gEnv->IsDedicated()) - { - return; - } - - if (s_debugCamera) - { - s_debugCamera->Update(); - } - - CView* const pActiveView = static_cast(GetActiveView()); - - TViewMap::const_iterator Iter(m_views.begin()); - TViewMap::const_iterator const IterEnd(m_views.end()); - - for (; Iter != IterEnd; ++Iter) - { - IView* const pView = Iter->second; - - bool const bIsActive = (pView == pActiveView); - - pView->Update(frameTime, bIsActive); - - if (bIsActive) - { - CCamera& rCamera = pView->GetCamera(); - if (const SViewParams* currentParams = pView->GetCurrentParams()) - { - SViewParams copyCurrentParams = *currentParams; - rCamera.SetJustActivated(copyCurrentParams.justActivated); - - copyCurrentParams.justActivated = false; - pView->SetCurrentParams(copyCurrentParams); - } - - if (m_bOverridenCameraRotation) - { - // When camera rotation is overridden. - Vec3 pos = rCamera.GetMatrix().GetTranslation(); - Matrix34 camTM(m_overridenCameraRotation); - camTM.SetTranslation(pos); - rCamera.SetMatrix(camTM); - } - else - { - // Normal setting of the camera - - if (m_fCameraNoise > 0) - { - Matrix33 m = Matrix33(rCamera.GetMatrix()); - m.OrthonormalizeFast(); - Ang3 aAng1 = Ang3::GetAnglesXYZ(m); - //Ang3 aAng2 = RAD2DEG(aAng1); - - Matrix34 camTM = rCamera.GetMatrix(); - Vec3 pos = camTM.GetTranslation(); - camTM.SetIdentity(); - - const float fScale = 0.1f; - CPNoise3* pNoise = m_pSystem->GetNoiseGen(); - float fRes = pNoise->Noise1D(gEnv->pTimer->GetCurrTime() * m_fCameraNoiseFrequency); - aAng1.x += fRes * m_fCameraNoise * fScale; - pos.z -= fRes * m_fCameraNoise * fScale; - fRes = pNoise->Noise1D(17 + gEnv->pTimer->GetCurrTime() * m_fCameraNoiseFrequency); - aAng1.y -= fRes * m_fCameraNoise * fScale; - - //aAng1.z+=fRes*0.025f; // left / right movement should be much less visible - - camTM.SetRotationXYZ(aAng1); - camTM.SetTranslation(pos); - rCamera.SetMatrix(camTM); - } - } - - AZ_ErrorOnce("CryLegacy", false, "CryLegacy view system no longer available (CViewSystem::Update)"); - } - } - - if (s_debugCamera) - { - s_debugCamera->PostUpdate(); - } - - // Display debug info on screen - if (m_nViewSystemDebug) - { - DebugDraw(); - } -} - -//------------------------------------------------------------------------ -IView* CViewSystem::CreateView() -{ - CView* newView = new CView(m_pSystem); - - if (newView) - { - AddView(newView); - } - - return newView; -} - -unsigned int CViewSystem::AddView(IView* pView) -{ - assert(pView); - - m_views.insert(TViewMap::value_type(m_nextViewIdToAssign, pView)); - return m_nextViewIdToAssign++; -} - -void CViewSystem::RemoveView(IView* pView) -{ - RemoveViewById(GetViewId(pView)); -} - -void CViewSystem::RemoveView(unsigned int viewId) -{ - RemoveViewById(viewId); -} - -void CViewSystem::RemoveViewById(unsigned int viewId) -{ - TViewMap::iterator iter = m_views.find(viewId); - - if (iter != m_views.end()) - { - if (viewId == m_activeViewId) - { - m_activeViewId = 0; - } - if (viewId == m_preSequenceViewId) - { - m_preSequenceViewId = 0; - } - SAFE_RELEASE(iter->second); - m_views.erase(iter); - } -} - -//------------------------------------------------------------------------ -void CViewSystem::SetActiveView(IView* pView) -{ - if (pView != NULL) - { - IView* const pPrevView = GetView(m_activeViewId); - - if (pPrevView != pView) - { - if (pPrevView != NULL) - { - pPrevView->SetActive(false); - } - - pView->SetActive(true); - m_activeViewId = GetViewId(pView); - } - } - else - { - m_activeViewId = ~0u; - } - - m_bActiveViewFromSequence = false; -} - -//------------------------------------------------------------------------ -void CViewSystem::SetActiveView(unsigned int viewId) -{ - IView* const pPrevView = GetView(m_activeViewId); - - if (pPrevView != NULL) - { - pPrevView->SetActive(false); - } - - IView* const pView = GetView(viewId); - - if (pView != NULL) - { - pView->SetActive(true); - m_activeViewId = viewId; - m_bActiveViewFromSequence = false; - } -} - -//------------------------------------------------------------------------ -IView* CViewSystem::GetView(unsigned int viewId) -{ - TViewMap::iterator it = m_views.find(viewId); - - if (it != m_views.end()) - { - return it->second; - } - - return NULL; -} - -//------------------------------------------------------------------------ -IView* CViewSystem::GetActiveView() -{ - return GetView(m_activeViewId); -} - -//------------------------------------------------------------------------ -unsigned int CViewSystem::GetViewId(IView* pView) -{ - for (TViewMap::iterator it = m_views.begin(); it != m_views.end(); ++it) - { - IView* tView = it->second; - - if (tView == pView) - { - return it->first; - } - } - - return 0; -} - -//------------------------------------------------------------------------ -unsigned int CViewSystem::GetActiveViewId() -{ - // cutscene can override the games id of the active view - if (m_cutsceneCount && m_cutsceneViewId) - { - return m_cutsceneViewId; - } - return m_activeViewId; -} - -//------------------------------------------------------------------------ -IView* CViewSystem::GetViewByEntityId(const AZ::EntityId& id, bool forceCreate) -{ - for (TViewMap::iterator it = m_views.begin(); it != m_views.end(); ++it) - { - IView* tView = it->second; - - if (tView && tView->GetLinkedId() == id) - { - return tView; - } - } - - if (forceCreate) - { - // Component Camera - AZ::Entity* entity = nullptr; - AZ::ComponentApplicationBus::BroadcastResult(entity, &AZ::ComponentApplicationBus::Events::FindEntity, id); - if (entity) - { - if (IView* pNew = CreateView()) - { - pNew->LinkTo(entity); - return pNew; - } - } - } - - return nullptr; -} - -//------------------------------------------------------------------------ -void CViewSystem::SetActiveCamera(const SCameraParams& params) -{ - IView* pView = NULL; - - if (params.cameraEntityId.IsValid()) - { - pView = GetViewByEntityId(params.cameraEntityId, true); - if (pView) - { - SViewParams viewParams = *pView->GetCurrentParams(); - viewParams.fov = params.fov; - viewParams.nearplane = params.nearZ; - - if (m_bActiveViewFromSequence == false && m_preSequenceViewId == 0) - { - m_preSequenceViewId = m_activeViewId; - IView* pPrevView = GetView(m_activeViewId); - if (pPrevView && m_fBlendInPosSpeed > 0.0f && m_fBlendInRotSpeed > 0.0f) - { - viewParams.blendPosSpeed = m_fBlendInPosSpeed; - viewParams.blendRotSpeed = m_fBlendInRotSpeed; - viewParams.BlendFrom(*pPrevView->GetCurrentParams()); - } - } - - if (m_activeViewId != GetViewId(pView) && params.justActivated) - { - viewParams.justActivated = true; - } - - pView->SetCurrentParams(viewParams); - // make this one the active view - SetActiveView(pView); - m_bActiveViewFromSequence = true; - } - } - else - { - if (m_preSequenceViewId != 0) - { - // Restore m_preSequenceViewId view - - IView* pActiveView = GetView(m_activeViewId); - IView* pNewView = GetView(m_preSequenceViewId); - if (pActiveView && pNewView && m_bPerformBlendOut) - { - SViewParams activeViewParams = *pActiveView->GetCurrentParams(); - SViewParams newViewParams = *pNewView->GetCurrentParams(); - newViewParams.BlendFrom(activeViewParams); - newViewParams.blendPosSpeed = activeViewParams.blendPosSpeed; - newViewParams.blendRotSpeed = activeViewParams.blendRotSpeed; - - if (m_activeViewId != m_preSequenceViewId && params.justActivated) - { - newViewParams.justActivated = true; - } - - pNewView->SetCurrentParams(newViewParams); - SetActiveView(m_preSequenceViewId); - } - else if (pActiveView && m_activeViewId != m_preSequenceViewId && params.justActivated) - { - SViewParams activeViewParams = *pActiveView->GetCurrentParams(); - activeViewParams.justActivated = true; - - if (pNewView) - { - pNewView->SetCurrentParams(activeViewParams); - SetActiveView(m_preSequenceViewId); - } - } - - m_preSequenceViewId = 0; - m_bActiveViewFromSequence = false; - } - } - m_cutsceneViewId = GetViewId(pView); - - VS_CALL_LISTENERS(OnCameraChange(params)); -} - -//------------------------------------------------------------------------ -void CViewSystem::BeginCutScene(IAnimSequence* pSeq, [[maybe_unused]] unsigned long dwFlags, bool bResetFX) -{ - m_cutsceneCount++; - - VS_CALL_LISTENERS(OnBeginCutScene(pSeq, bResetFX)); -} - -//------------------------------------------------------------------------ -void CViewSystem::EndCutScene(IAnimSequence* pSeq, [[maybe_unused]] unsigned long dwFlags) -{ - m_cutsceneCount -= (m_cutsceneCount > 0); - - ClearCutsceneViews(); - - VS_CALL_LISTENERS(OnEndCutScene(pSeq)); -} - -void CViewSystem::SendGlobalEvent([[maybe_unused]] const char* pszEvent) -{ - // TODO: broadcast to script system -} - -////////////////////////////////////////////////////////////////////////// -void CViewSystem::SetOverrideCameraRotation(bool bOverride, Quat rotation) -{ - m_bOverridenCameraRotation = bOverride; - m_overridenCameraRotation = rotation; -} - -////////////////////////////////////////////////////////////////// -void CViewSystem::OnLoadingStart([[maybe_unused]] const char* levelName) -{ - //If the level is being restarted (IsSerializingFile() == 1) - //views should not be cleared, because the main view (player one) won't be recreated in this case - //Views will only be cleared when loading a new map, or loading a saved game (IsSerizlizingFile() == 2) - bool shouldClearViews = gEnv->pSystem ? (gEnv->pSystem->IsSerializingFile() != 1) : false; - - if (shouldClearViews) - { - ClearAllViews(); - } -} - -///////////////////////////////////////////////////////////////////// -void CViewSystem::OnUnloadComplete([[maybe_unused]] const char* levelName) -{ - bool shouldClearViews = gEnv->pSystem ? (gEnv->pSystem->IsSerializingFile() != 1) : false; - - if (shouldClearViews) - { - ClearAllViews(); - } - - assert(m_listeners.empty()); - stl::free_container(m_listeners); -} - -///////////////////////////////////////////////////////////////////// -void CViewSystem::ClearCutsceneViews() -{ - //First switch to previous camera if available - //In practice, the camera should be already restored before reaching this point, but just in case. - if (m_preSequenceViewId != 0) - { - SCameraParams camParams; - camParams.cameraEntityId.SetInvalid(); //Setting to invalid will try to switch to previous camera - camParams.fov = 60.0f; - camParams.nearZ = DEFAULT_NEAR; - camParams.justActivated = true; - SetActiveCamera(camParams); - } -} - -/////////////////////////////////////////// -void CViewSystem::ClearAllViews() -{ - TViewMap::iterator end = m_views.end(); - for (TViewMap::iterator it = m_views.begin(); it != end; ++it) - { - SAFE_RELEASE(it->second); - } - stl::free_container(m_views); - m_preSequenceViewId = 0; - m_activeViewId = 0; -} - -//////////////////////////////////////////////////////////////////// -void CViewSystem::DebugDraw() -{ -} - -////////////////////////////////////////////////////////////////////////// -void CViewSystem::PostSerialize() -{ - TViewMap::iterator iter = m_views.begin(); - TViewMap::iterator iterEnd = m_views.end(); - while (iter != iterEnd) - { - iter->second->PostSerialize(); - ++iter; - } -} - -/////////////////////////////////////////////////////////////////////////// -void CViewSystem::SetControlAudioListeners(bool bActive) -{ - m_bControlsAudioListeners = bActive; - - TViewMap::const_iterator Iter(m_views.begin()); - TViewMap::const_iterator const IterEnd(m_views.end()); - - for (; Iter != IterEnd; ++Iter) - { - Iter->second->SetActive(bActive); - } -} - -} // namespace LegacyViewSystem diff --git a/Code/Legacy/CrySystem/ViewSystem/ViewSystem.h b/Code/Legacy/CrySystem/ViewSystem/ViewSystem.h deleted file mode 100644 index 80d1faed15..0000000000 --- a/Code/Legacy/CrySystem/ViewSystem/ViewSystem.h +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - - -// Description : View System interfaces. - -#pragma once - -#include "View.h" -#include "IMovieSystem.h" -#include -#include - -namespace LegacyViewSystem -{ - -class DebugCamera; - -class CViewSystem - : public IViewSystem - , public IMovieUser - , public ILevelSystemListener - , public Camera::CameraSystemRequestBus::Handler -{ -private: - - using TViewMap = std::map; - using TViewIdVector = std::vector; - -public: - - //IViewSystem - IView* CreateView() override; - unsigned int AddView(IView* pView) override; - void RemoveView(IView* pView) override; - void RemoveView(unsigned int viewId) override; - - void SetActiveView(IView* pView) override; - void SetActiveView(unsigned int viewId) override; - - //CameraSystemRequestBus - AZ::EntityId GetActiveCamera() override { return m_activeViewId ? GetActiveView()->GetLinkedId() : AZ::EntityId(); } - - //utility functions - IView* GetView(unsigned int viewId) override; - IView* GetActiveView() override; - - unsigned int GetViewId(IView* pView) override; - unsigned int GetActiveViewId() override; - - void PostSerialize() override; - - IView* GetViewByEntityId(const AZ::EntityId& id, bool forceCreate) override; - - float GetDefaultZNear() override { return m_fDefaultCameraNearZ; }; - void SetBlendParams(float fBlendPosSpeed, float fBlendRotSpeed, bool performBlendOut) override { m_fBlendInPosSpeed = fBlendPosSpeed; m_fBlendInRotSpeed = fBlendRotSpeed; m_bPerformBlendOut = performBlendOut; }; - void SetOverrideCameraRotation(bool bOverride, Quat rotation) override; - bool IsPlayingCutScene() const override - { - return m_cutsceneCount > 0; - } - void SetDeferredViewSystemUpdate(bool const bDeferred) override{ m_useDeferredViewSystemUpdate = bDeferred; } - bool UseDeferredViewSystemUpdate() const override { return m_useDeferredViewSystemUpdate; } - void SetControlAudioListeners(bool const bActive) override; - //~IViewSystem - - //IMovieUser - void SetActiveCamera(const SCameraParams& Params) override; - void BeginCutScene(IAnimSequence* pSeq, unsigned long dwFlags, bool bResetFX) override; - void EndCutScene(IAnimSequence* pSeq, unsigned long dwFlags) override; - void SendGlobalEvent(const char* pszEvent) override; - //~IMovieUser - - // ILevelSystemListener - void OnLevelNotFound([[maybe_unused]] const char* levelName) override {}; - void OnLoadingStart([[maybe_unused]] const char* levelName) override; - void OnLoadingComplete([[maybe_unused]] const char* levelName) override{}; - void OnLoadingError([[maybe_unused]] const char* levelName, [[maybe_unused]] const char* error) override{}; - void OnLoadingProgress([[maybe_unused]] const char* levelName, [[maybe_unused]] int progressAmount) override{}; - void OnUnloadComplete([[maybe_unused]] const char* levelName) override; - //~ILevelSystemListener - - CViewSystem(ISystem* pSystem); - ~CViewSystem(); - - void Release() override { delete this; }; - void Update(float frameTime) override; - - void ForceUpdate(float elapsed) override { Update(elapsed); } - - //void RegisterViewClass(const char *name, IView *(*func)()); - - bool AddListener(IViewSystemListener* pListener) override - { - return stl::push_back_unique(m_listeners, pListener); - } - - bool RemoveListener(IViewSystemListener* pListener) override - { - return stl::find_and_erase(m_listeners, pListener); - } - - void ClearAllViews(); - -private: - - void RemoveViewById(unsigned int viewId); - void ClearCutsceneViews(); - void DebugDraw(); - - ISystem* m_pSystem; - - //TViewClassMap m_viewClasses; - TViewMap m_views; - - // Listeners - std::vector m_listeners; - - unsigned int m_activeViewId; - unsigned int m_nextViewIdToAssign; // next id which will be assigned - unsigned int m_preSequenceViewId; // viewId before a movie cam dropped in - - unsigned int m_cutsceneViewId; - unsigned int m_cutsceneCount; - - bool m_bActiveViewFromSequence; - - bool m_bOverridenCameraRotation; - Quat m_overridenCameraRotation; - float m_fCameraNoise; - float m_fCameraNoiseFrequency; - - float m_fDefaultCameraNearZ; - float m_fBlendInPosSpeed; - float m_fBlendInRotSpeed; - bool m_bPerformBlendOut; - int m_nViewSystemDebug; - - bool m_useDeferredViewSystemUpdate; - bool m_bControlsAudioListeners; - -public: - static DebugCamera* s_debugCamera; -}; - -} // namespace LegacyViewSystem diff --git a/Code/Legacy/CrySystem/XConsole.cpp b/Code/Legacy/CrySystem/XConsole.cpp index 22c61d3f22..df82e34abe 100644 --- a/Code/Legacy/CrySystem/XConsole.cpp +++ b/Code/Legacy/CrySystem/XConsole.cpp @@ -16,7 +16,6 @@ #include "System.h" #include "ConsoleBatchFile.h" -#include #include #include #include @@ -28,6 +27,7 @@ #include #include #include +#include #include //#define DEFENCE_CVAR_HASH_LOGGING @@ -105,7 +105,8 @@ void Command_SetWaitSeconds(IConsoleCmdArgs* pCmd) if (pCmd->GetArgCount() > 1) { pConsole->m_waitSeconds.SetSeconds(atof(pCmd->GetArg(1))); - pConsole->m_waitSeconds += gEnv->pTimer->GetFrameStartTime(); + const AZ::TimeMs elaspedTimeMs = AZ::GetRealElapsedTimeMs(); + pConsole->m_waitSeconds += CTimeValue(AZ::TimeMsToSecondsDouble(elaspedTimeMs)); } } @@ -305,7 +306,6 @@ void CXConsole::Init(ISystem* pSystem) { m_pFont = pSystem->GetICryFont()->GetFont("default"); } - m_pTimer = pSystem->GetITimer(); AzFramework::InputChannelEventListener::Connect(); AzFramework::InputTextEventListener::Connect(); @@ -934,8 +934,8 @@ void CXConsole::Update() const float fRepeatDelay = 1.0f / 40.0f; // in sec (similar to Windows default but might differ from actual setting) const float fHitchDelay = 1.0f / 10.0f; // in sec. Very low, but still reasonable frame-rate (debug builds) - m_fRepeatTimer -= gEnv->pTimer->GetRealFrameTime(); // works even when time is manipulated - // m_fRepeatTimer -= gEnv->pTimer->GetFrameTime(ITimer::ETIMER_UI); // can be used once ETIMER_UI works even with t_FixedTime + const AZ::TimeUs delta = AZ::GetRealTickDeltaTimeUs(); // works even when time is manipulated + m_fRepeatTimer -= AZ::TimeUsToSeconds(delta); if (m_fRepeatTimer <= 0.0f) { @@ -1961,7 +1961,9 @@ void CXConsole::ExecuteDeferredCommands() if (m_waitSeconds.GetValue()) { - if (m_waitSeconds > gEnv->pTimer->GetFrameStartTime()) + const AZ::TimeMs elaspsedTimeMs = AZ::GetRealElapsedTimeMs(); + const double elaspedTimeSec = AZ::TimeMsToSecondsDouble(elaspsedTimeMs); + if (m_waitSeconds > CTimeValue(elaspedTimeSec)) { return; } diff --git a/Code/Legacy/CrySystem/XConsole.h b/Code/Legacy/CrySystem/XConsole.h index a10adda97b..535f5b8650 100644 --- a/Code/Legacy/CrySystem/XConsole.h +++ b/Code/Legacy/CrySystem/XConsole.h @@ -13,8 +13,8 @@ #pragma once #include -#include "Timer.h" #include +#include #include #include @@ -377,7 +377,6 @@ private: // ---------------------------------------------------------- CSystem* m_pSystem; IFFont* m_pFont; - ITimer* m_pTimer; ICVar* m_pSysDeactivateConsole; diff --git a/Code/Legacy/CrySystem/XML/SerializeXMLReader.cpp b/Code/Legacy/CrySystem/XML/SerializeXMLReader.cpp index 528e3dbcc5..f58d8c7fcf 100644 --- a/Code/Legacy/CrySystem/XML/SerializeXMLReader.cpp +++ b/Code/Legacy/CrySystem/XML/SerializeXMLReader.cpp @@ -10,6 +10,7 @@ #include "CrySystem_precompiled.h" #include "SerializeXMLReader.h" #include +#include #define TAG_SCRIPT_VALUE "v" #define TAG_SCRIPT_TYPE "t" @@ -21,7 +22,6 @@ CSerializeXMLReaderImpl::CSerializeXMLReaderImpl(const XmlNodeRef& nodeRef) : m_nErrors(0) { - //m_curTime = gEnv->pTimer->GetFrameStartTime(); assert(!!nodeRef); m_nodeStack.push_back(CParseState()); m_nodeStack.back().Init(nodeRef); @@ -87,18 +87,21 @@ bool CSerializeXMLReaderImpl::Value(const char* name, CTimeValue& value) } else { + const AZ::TimeMs elaspsedTimeMs = AZ::GetRealElapsedTimeMs(); + const double elaspedTimeSec = AZ::TimeMsToSecondsDouble(elaspsedTimeMs); + const CTimeValue elaspedTime(elaspedTimeSec); float delta; if (!GetAttr(nodeRef, name, delta)) { //CryWarning( VALIDATOR_MODULE_SYSTEM,VALIDATOR_WARNING,"Failed to read time value %s", name); //Failed(); - value = gEnv->pTimer->GetFrameStartTime(); // in case we don't find the node, it was assumed to be the default value (0.0) + value = elaspedTime; // in case we don't find the node, it was assumed to be the default value (0.0) // 0.0 means current time, whereas "zero" really means CTimeValue(0.0), see above return false; } else { - value = CTimeValue(gEnv->pTimer->GetFrameStartTime() + delta); + value = CTimeValue(elaspedTime + delta); } } return true; diff --git a/Code/Legacy/CrySystem/XML/SerializeXMLReader.h b/Code/Legacy/CrySystem/XML/SerializeXMLReader.h index 58c150db24..39f3230521 100644 --- a/Code/Legacy/CrySystem/XML/SerializeXMLReader.h +++ b/Code/Legacy/CrySystem/XML/SerializeXMLReader.h @@ -11,7 +11,6 @@ #include "SimpleSerialize.h" #include #include -#include #include "xml.h" class CSerializeXMLReaderImpl diff --git a/Code/Legacy/CrySystem/XML/SerializeXMLWriter.cpp b/Code/Legacy/CrySystem/XML/SerializeXMLWriter.cpp index 5a3e403218..ee5fe21797 100644 --- a/Code/Legacy/CrySystem/XML/SerializeXMLWriter.cpp +++ b/Code/Legacy/CrySystem/XML/SerializeXMLWriter.cpp @@ -10,6 +10,8 @@ #include "CrySystem_precompiled.h" #include "SerializeXMLWriter.h" +#include + static const size_t MAX_NODE_STACK_DEPTH = 40; #define TAG_SCRIPT_VALUE "v" @@ -18,7 +20,9 @@ static const size_t MAX_NODE_STACK_DEPTH = 40; CSerializeXMLWriterImpl::CSerializeXMLWriterImpl(const XmlNodeRef& nodeRef) { - m_curTime = gEnv->pTimer->GetFrameStartTime(); + const AZ::TimeMs elaspsedTimeMs = AZ::GetRealElapsedTimeMs(); + const double elaspedTimeSec = AZ::TimeMsToSecondsDouble(elaspsedTimeMs); + m_curTime = CTimeValue(elaspedTimeSec); assert(!!nodeRef); m_nodeStack.push_back(nodeRef); diff --git a/Code/Legacy/CrySystem/XML/SerializeXMLWriter.h b/Code/Legacy/CrySystem/XML/SerializeXMLWriter.h index 26fbe4b29c..822045a3f5 100644 --- a/Code/Legacy/CrySystem/XML/SerializeXMLWriter.h +++ b/Code/Legacy/CrySystem/XML/SerializeXMLWriter.h @@ -13,7 +13,6 @@ #include -#include #include #include "SimpleSerialize.h" diff --git a/Code/Legacy/CrySystem/crysystem_files.cmake b/Code/Legacy/CrySystem/crysystem_files.cmake index fc923705f2..6e8f9978fb 100644 --- a/Code/Legacy/CrySystem/crysystem_files.cmake +++ b/Code/Legacy/CrySystem/crysystem_files.cmake @@ -20,7 +20,6 @@ set(FILES SystemEventDispatcher.cpp SystemInit.cpp SystemWin32.cpp - Timer.cpp XConsole.cpp XConsoleVariable.cpp AZCrySystemInitLogSink.h @@ -36,7 +35,6 @@ set(FILES CrySystem_precompiled.h System.h SystemEventDispatcher.h - Timer.h XConsole.h XConsoleVariable.h XML/SerializeXMLReader.cpp @@ -59,11 +57,5 @@ set(FILES LevelSystem/LevelSystem.h LevelSystem/SpawnableLevelSystem.cpp LevelSystem/SpawnableLevelSystem.h - ViewSystem/DebugCamera.cpp - ViewSystem/DebugCamera.h - ViewSystem/View.cpp - ViewSystem/View.h - ViewSystem/ViewSystem.cpp - ViewSystem/ViewSystem.h WindowsErrorReporting.cpp ) diff --git a/Code/Tools/AWSNativeSDKInit/CMakeLists.txt b/Code/Tools/AWSNativeSDKInit/CMakeLists.txt index d571f0d9e3..57ee31d30d 100644 --- a/Code/Tools/AWSNativeSDKInit/CMakeLists.txt +++ b/Code/Tools/AWSNativeSDKInit/CMakeLists.txt @@ -24,3 +24,30 @@ ly_add_target( 3rdParty::AWSNativeSDK::Core AZ::AzCore ) + +################################################################################ +# Tests +################################################################################ +if(PAL_TRAIT_BUILD_TESTS_SUPPORTED) + ly_add_target( + NAME AWSNativeSDKInit.Tests ${PAL_TRAIT_TEST_TARGET_TYPE} + NAMESPACE AZ + FILES_CMAKE + aws_native_sdk_init_tests_files.cmake + INCLUDE_DIRECTORIES + PRIVATE + include + tests + source + BUILD_DEPENDENCIES + PRIVATE + AZ::AzCore + AZ::AzFramework + AZ::AzTest + AZ::AWSNativeSDKInit + 3rdParty::AWSNativeSDK::Core + ) + ly_add_googletest( + NAME AZ::AWSNativeSDKInit.Tests + ) +endif() diff --git a/Code/Tools/AWSNativeSDKInit/aws_native_sdk_init_tests_files.cmake b/Code/Tools/AWSNativeSDKInit/aws_native_sdk_init_tests_files.cmake new file mode 100644 index 0000000000..9029a1198a --- /dev/null +++ b/Code/Tools/AWSNativeSDKInit/aws_native_sdk_init_tests_files.cmake @@ -0,0 +1,12 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +set(FILES + tests/AWSLogSystemInterfaceTest.cpp + tests/AWSNativeSDKInitTest.cpp +) diff --git a/Code/Tools/AWSNativeSDKInit/source/AWSLogSystemInterface.cpp b/Code/Tools/AWSNativeSDKInit/source/AWSLogSystemInterface.cpp index 113e513743..0ccfc43ba4 100644 --- a/Code/Tools/AWSNativeSDKInit/source/AWSLogSystemInterface.cpp +++ b/Code/Tools/AWSNativeSDKInit/source/AWSLogSystemInterface.cpp @@ -10,6 +10,8 @@ #include #include +#include +#include #include #include @@ -24,6 +26,9 @@ AZ_POP_DISABLE_WARNING namespace AWSNativeSDKInit { + AZ_CVAR(int, bg_awsLogLevel, -1, nullptr, AZ::ConsoleFunctorFlags::Null, + "AWSLogLevel used to control verbosity of logging system. Off = 0, Fatal = 1, Error = 2, Warn = 3, Info = 4, Debug = 5, Trace = 6"); + const char* AWSLogSystemInterface::AWS_API_LOG_PREFIX = "AwsApi-"; const int AWSLogSystemInterface::MAX_MESSAGE_LENGTH = 4096; const char* AWSLogSystemInterface::MESSAGE_FORMAT = "[AWS] %s - %s"; @@ -40,15 +45,16 @@ namespace AWSNativeSDKInit Aws::Utils::Logging::LogLevel AWSLogSystemInterface::GetLogLevel() const { Aws::Utils::Logging::LogLevel newLevel = m_logLevel; - static const char* const logLevelEnvVar = "sys_SetLogLevel"; - auto logVar = AZ::Environment::FindVariable(logLevelEnvVar); - - if (logVar) + if (auto console = AZ::Interface::Get(); console != nullptr) { - newLevel = (Aws::Utils::Logging::LogLevel) *logVar; + int awsLogLevel = -1; + console->GetCvarValue("bg_awsLogLevel", awsLogLevel); + if (awsLogLevel >= 0) + { + newLevel = static_cast(awsLogLevel); + } } - - return newLevel != m_logLevel ? newLevel : m_logLevel; + return newLevel; } /** @@ -78,14 +84,12 @@ namespace AWSNativeSDKInit */ void AWSLogSystemInterface::LogStream(Aws::Utils::Logging::LogLevel logLevel, const char* tag, const Aws::OStringStream &messageStream) { - if(!ShouldLog(logLevel)) { return; } ForwardAwsApiLogMessage(logLevel, tag, messageStream.str().c_str()); - } bool AWSLogSystemInterface::ShouldLog(Aws::Utils::Logging::LogLevel logLevel) @@ -93,7 +97,7 @@ namespace AWSNativeSDKInit #if defined(PLATFORM_SUPPORTS_AWS_NATIVE_SDK) Aws::Utils::Logging::LogLevel newLevel = GetLogLevel(); - if (newLevel > Aws::Utils::Logging::LogLevel::Info && newLevel <= Aws::Utils::Logging::LogLevel::Trace && newLevel != m_logLevel) + if (newLevel != m_logLevel) { SetLogLevel(newLevel); } @@ -124,7 +128,7 @@ namespace AWSNativeSDKInit break; case Aws::Utils::Logging::LogLevel::Error: - AZ::Debug::Trace::Instance().Warning(__FILE__, __LINE__, AZ_FUNCTION_SIGNATURE, AWSLogSystemInterface::ERROR_WINDOW_NAME, MESSAGE_FORMAT, tag, message); + AZ::Debug::Trace::Instance().Error(__FILE__, __LINE__, AZ_FUNCTION_SIGNATURE, AWSLogSystemInterface::ERROR_WINDOW_NAME, MESSAGE_FORMAT, tag, message); break; case Aws::Utils::Logging::LogLevel::Warn: diff --git a/Code/Tools/AWSNativeSDKInit/source/AWSNativeSDKInit.cpp b/Code/Tools/AWSNativeSDKInit/source/AWSNativeSDKInit.cpp index 815fc1bbf0..ca63859945 100644 --- a/Code/Tools/AWSNativeSDKInit/source/AWSNativeSDKInit.cpp +++ b/Code/Tools/AWSNativeSDKInit/source/AWSNativeSDKInit.cpp @@ -64,10 +64,10 @@ namespace AWSNativeSDKInit { #if defined(PLATFORM_SUPPORTS_AWS_NATIVE_SDK) Aws::Utils::Logging::LogLevel logLevel; -#ifdef _DEBUG +#if defined(AZ_DEBUG_BUILD) || defined(AZ_PROFILE_BUILD) logLevel = Aws::Utils::Logging::LogLevel::Warn; #else - logLevel = Aws::Utils::Logging::LogLevel::Warn; + logLevel = Aws::Utils::Logging::LogLevel::Error; #endif m_awsSDKOptions.loggingOptions.logLevel = logLevel; m_awsSDKOptions.loggingOptions.logger_create_fn = [logLevel]() diff --git a/Code/Tools/AWSNativeSDKInit/tests/AWSLogSystemInterfaceTest.cpp b/Code/Tools/AWSNativeSDKInit/tests/AWSLogSystemInterfaceTest.cpp new file mode 100644 index 0000000000..02b6cbebc1 --- /dev/null +++ b/Code/Tools/AWSNativeSDKInit/tests/AWSLogSystemInterfaceTest.cpp @@ -0,0 +1,169 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include +#include +#include +#include +#include + +#include + +#include + +using namespace AWSNativeSDKInit; + +class AWSLogSystemInterfaceTest + : public UnitTest::ScopedAllocatorSetupFixture + , public AZ::Debug::TraceMessageBus::Handler +{ +public: + bool OnPreAssert(const char*, int, const char*, const char*) override + { + return true; + } + + bool OnPreError(const char*, const char*, int, const char*, const char*) override + { + m_error = true; + return true; + } + + bool OnPreWarning(const char*, const char*, int, const char*, const char*) override + { + m_warning = true; + return true; + } + + bool OnPrintf(const char*, const char*) override + { + m_printf = true; + return true; + } + + void SetUp() override + { + BusConnect(); + if (!AZ::Interface::Get()) + { + m_console = AZStd::make_unique(); + m_console->LinkDeferredFunctors(AZ::ConsoleFunctorBase::GetDeferredHead()); + AZ::Interface::Register(m_console.get()); + } + } + + void TearDown() override + { + if (m_console) + { + AZ::Interface::Unregister(m_console.get()); + m_console.reset(); + } + BusDisconnect(); + } + + bool m_error = false; + bool m_warning = false; + bool m_printf = false; + +private: + AZStd::unique_ptr m_console; +}; + +TEST_F(AWSLogSystemInterfaceTest, LogStream_LogFatalMessage_GetExpectedNotification) +{ + AWSLogSystemInterface logSystem(Aws::Utils::Logging::LogLevel::Trace); + Aws::OStringStream testString; + logSystem.LogStream(Aws::Utils::Logging::LogLevel::Fatal, "test", testString); + ASSERT_TRUE(m_error); + ASSERT_FALSE(m_warning); + ASSERT_FALSE(m_printf); +} + +TEST_F(AWSLogSystemInterfaceTest, LogStream_LogErrorMessage_GetExpectedNotification) +{ + AWSLogSystemInterface logSystem(Aws::Utils::Logging::LogLevel::Trace); + Aws::OStringStream testString; + logSystem.LogStream(Aws::Utils::Logging::LogLevel::Error, "test", testString); + ASSERT_TRUE(m_error); + ASSERT_FALSE(m_warning); + ASSERT_FALSE(m_printf); +} + +TEST_F(AWSLogSystemInterfaceTest, LogStream_LogWarningMessage_GetExpectedNotification) +{ + AWSLogSystemInterface logSystem(Aws::Utils::Logging::LogLevel::Trace); + Aws::OStringStream testString; + logSystem.LogStream(Aws::Utils::Logging::LogLevel::Warn, "test", testString); + ASSERT_FALSE(m_error); + ASSERT_TRUE(m_warning); + ASSERT_FALSE(m_printf); +} + +TEST_F(AWSLogSystemInterfaceTest, LogStream_LogInfoMessage_GetExpectedNotification) +{ + AWSLogSystemInterface logSystem(Aws::Utils::Logging::LogLevel::Trace); + Aws::OStringStream testString; + logSystem.LogStream(Aws::Utils::Logging::LogLevel::Info, "test", testString); + ASSERT_FALSE(m_error); + ASSERT_FALSE(m_warning); + ASSERT_TRUE(m_printf); +} + +TEST_F(AWSLogSystemInterfaceTest, LogStream_LogDebugMessage_GetExpectedNotification) +{ + AWSLogSystemInterface logSystem(Aws::Utils::Logging::LogLevel::Trace); + Aws::OStringStream testString; + logSystem.LogStream(Aws::Utils::Logging::LogLevel::Debug, "test", testString); + ASSERT_FALSE(m_error); + ASSERT_FALSE(m_warning); + ASSERT_TRUE(m_printf); +} + +TEST_F(AWSLogSystemInterfaceTest, LogStream_LogTraceMessage_GetExpectedNotification) +{ + AWSLogSystemInterface logSystem(Aws::Utils::Logging::LogLevel::Trace); + Aws::OStringStream testString; + logSystem.LogStream(Aws::Utils::Logging::LogLevel::Trace, "test", testString); + ASSERT_FALSE(m_error); + ASSERT_FALSE(m_warning); + ASSERT_TRUE(m_printf); +} + +TEST_F(AWSLogSystemInterfaceTest, LogStream_OverrideWarnAndLogInfoMessage_GetExpectedNotification) +{ + AWSLogSystemInterface logSystem(Aws::Utils::Logging::LogLevel::Trace); + Aws::OStringStream testString; + AZ::Interface::Get()->PerformCommand("bg_awsLogLevel 3"); + logSystem.LogStream(Aws::Utils::Logging::LogLevel::Info, "test", testString); + ASSERT_FALSE(m_error); + ASSERT_FALSE(m_warning); + ASSERT_FALSE(m_printf); +} + +TEST_F(AWSLogSystemInterfaceTest, LogStream_OverrideWarnAndLogeErrorMessage_GetExpectedNotification) +{ + AWSLogSystemInterface logSystem(Aws::Utils::Logging::LogLevel::Trace); + Aws::OStringStream testString; + AZ::Interface::Get()->PerformCommand("bg_awsLogLevel 3"); + logSystem.LogStream(Aws::Utils::Logging::LogLevel::Error, "test", testString); + ASSERT_TRUE(m_error); + ASSERT_FALSE(m_warning); + ASSERT_FALSE(m_printf); +} + +TEST_F(AWSLogSystemInterfaceTest, LogStream_OverrideOffAndLogInfoMessage_GetExpectedNotification) +{ + AWSLogSystemInterface logSystem(Aws::Utils::Logging::LogLevel::Trace); + Aws::OStringStream testString; + AZ::Interface::Get()->PerformCommand("bg_awsLogLevel 0"); + logSystem.LogStream(Aws::Utils::Logging::LogLevel::Info, "test", testString); + ASSERT_FALSE(m_error); + ASSERT_FALSE(m_warning); + ASSERT_FALSE(m_printf); +} diff --git a/Code/Tools/AWSNativeSDKInit/tests/AWSNativeSDKInitTest.cpp b/Code/Tools/AWSNativeSDKInit/tests/AWSNativeSDKInitTest.cpp new file mode 100644 index 0000000000..40217ff9bc --- /dev/null +++ b/Code/Tools/AWSNativeSDKInit/tests/AWSNativeSDKInitTest.cpp @@ -0,0 +1,11 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include + +AZ_UNIT_TEST_HOOK(DEFAULT_UNIT_TEST_ENV); diff --git a/Code/Tools/AssetBundler/CMakeLists.txt b/Code/Tools/AssetBundler/CMakeLists.txt index dcc62595c9..28245b67ba 100644 --- a/Code/Tools/AssetBundler/CMakeLists.txt +++ b/Code/Tools/AssetBundler/CMakeLists.txt @@ -77,6 +77,10 @@ ly_add_target( ${additional_dependencies} ) +if(LY_DEFAULT_PROJECT_PATH) + set_property(TARGET AssetBundler AssetBundlerBatch APPEND PROPERTY VS_DEBUGGER_COMMAND_ARGUMENTS "--project-path=\"${LY_DEFAULT_PROJECT_PATH}\"") +endif() + # Adds a specialized .setreg to identify gems enabled in the active project. # This associates the AssetBundler target with the .Builders gem variants. ly_set_gem_variant_to_load(TARGETS AssetBundler VARIANTS Builders) diff --git a/Code/Tools/AssetBundler/source/utils/GUIApplicationManager.cpp b/Code/Tools/AssetBundler/source/utils/GUIApplicationManager.cpp index b17832526f..17e621f7d6 100644 --- a/Code/Tools/AssetBundler/source/utils/GUIApplicationManager.cpp +++ b/Code/Tools/AssetBundler/source/utils/GUIApplicationManager.cpp @@ -346,9 +346,7 @@ namespace AssetBundler } // Determine the enabled platforms - const char* appRoot = nullptr; - AzFramework::ApplicationRequests::Bus::BroadcastResult(appRoot, &AzFramework::ApplicationRequests::GetAppRoot); - m_enabledPlatforms = GetEnabledPlatformFlags(GetEngineRoot(), appRoot, AZ::Utils::GetProjectPath().c_str()); + m_enabledPlatforms = GetEnabledPlatformFlags(GetEngineRoot(), AZStd::string_view(AZ::Utils::GetProjectPath())); // Determine which Gems are enabled for the current project if (!AzFramework::GetGemsInfo(m_gemInfoList, *m_settingsRegistry)) diff --git a/Code/Tools/AssetBundler/source/utils/applicationManager.cpp b/Code/Tools/AssetBundler/source/utils/applicationManager.cpp index 0388570fdd..2df9e64ac5 100644 --- a/Code/Tools/AssetBundler/source/utils/applicationManager.cpp +++ b/Code/Tools/AssetBundler/source/utils/applicationManager.cpp @@ -1401,7 +1401,6 @@ namespace AssetBundler // If no platform was specified, defaulting to platforms specified in the asset processor config files AzFramework::PlatformFlags platformFlags = GetEnabledPlatformFlags( - AZStd::string_view{ AZ::Utils::GetEnginePath() }, AZStd::string_view{ AZ::Utils::GetEnginePath() }, AZStd::string_view{ AZ::Utils::GetProjectPath() }); [[maybe_unused]] auto platformsString = AzFramework::PlatformHelper::GetCommaSeparatedPlatformList(platformFlags); diff --git a/Code/Tools/AssetBundler/source/utils/utils.cpp b/Code/Tools/AssetBundler/source/utils/utils.cpp index 6daf3c571b..7e56f5450e 100644 --- a/Code/Tools/AssetBundler/source/utils/utils.cpp +++ b/Code/Tools/AssetBundler/source/utils/utils.cpp @@ -377,7 +377,6 @@ namespace AssetBundler AzFramework::PlatformFlags GetEnabledPlatformFlags( AZStd::string_view engineRoot, - AZStd::string_view assetRoot, AZStd::string_view projectPath) { auto settingsRegistry = AZ::SettingsRegistry::Get(); @@ -387,7 +386,7 @@ namespace AssetBundler return AzFramework::PlatformFlags::Platform_NONE; } - auto configFiles = AzToolsFramework::AssetUtils::GetConfigFiles(engineRoot, assetRoot, projectPath, true, true, settingsRegistry); + auto configFiles = AzToolsFramework::AssetUtils::GetConfigFiles(engineRoot, projectPath, true, true, settingsRegistry); auto enabledPlatformList = AzToolsFramework::AssetUtils::GetEnabledPlatforms(*settingsRegistry, configFiles); AzFramework::PlatformFlags platformFlags = AzFramework::PlatformFlags::Platform_NONE; for (const auto& enabledPlatform : enabledPlatformList) diff --git a/Code/Tools/AssetBundler/source/utils/utils.h b/Code/Tools/AssetBundler/source/utils/utils.h index bfdf252014..0986d70ca8 100644 --- a/Code/Tools/AssetBundler/source/utils/utils.h +++ b/Code/Tools/AssetBundler/source/utils/utils.h @@ -221,7 +221,6 @@ namespace AssetBundler //! Please note that the game project could be in a different location to the engine therefore we need the assetRoot param. AzFramework::PlatformFlags GetEnabledPlatformFlags( AZStd::string_view enginePath, - AZStd::string_view assetRoot, AZStd::string_view projectPath); QJsonObject ReadJson(const AZStd::string& filePath); diff --git a/Code/Tools/AssetBundler/tests/UtilsTests.cpp b/Code/Tools/AssetBundler/tests/UtilsTests.cpp index 560d399613..60fc79579b 100644 --- a/Code/Tools/AssetBundler/tests/UtilsTests.cpp +++ b/Code/Tools/AssetBundler/tests/UtilsTests.cpp @@ -67,7 +67,7 @@ namespace AssetBundler void NormalizePathKeepCase(AZStd::string& /*path*/) override {} void CalculateBranchTokenForEngineRoot(AZStd::string& /*token*/) const override {} - const char* GetEngineRoot() const override + const char* GetTempDir() const { return m_tempDir->GetDirectory(); } @@ -83,7 +83,7 @@ namespace AssetBundler TEST_F(MockUtilsTest, DISABLED_TestFilePath_StartsWithAFileSeparator_Valid) { AZ::IO::Path relFilePath = "Foo/foo.xml"; - AZ::IO::Path absoluteFilePath = AZ::IO::PathView(GetEngineRoot()).RootPath(); + AZ::IO::Path absoluteFilePath = AZ::IO::PathView(GetTempDir()).RootPath(); absoluteFilePath /= relFilePath; absoluteFilePath = absoluteFilePath.LexicallyNormal(); @@ -95,7 +95,7 @@ namespace AssetBundler TEST_F(MockUtilsTest, TestFilePath_RelativePath_Valid) { AZ::IO::Path relFilePath = "Foo\\foo.xml"; - AZ::IO::Path absoluteFilePath = (AZ::IO::Path(GetEngineRoot()) / relFilePath).LexicallyNormal(); + AZ::IO::Path absoluteFilePath = (AZ::IO::Path(GetTempDir()) / relFilePath).LexicallyNormal(); FilePath filePath(relFilePath.Native()); EXPECT_EQ(AZ::IO::PathView{ filePath.AbsolutePath() }, absoluteFilePath); } @@ -107,8 +107,8 @@ namespace AssetBundler AZ::IO::Path relFilePath = "Foo\\Foo.xml"; AZ::IO::Path wrongCaseRelFilePath = "Foo\\foo.xml"; - AZ::IO::Path correctAbsoluteFilePath = (AZ::IO::Path(GetEngineRoot()) / relFilePath).LexicallyNormal(); - AZ::IO::Path wrongCaseAbsoluteFilePath = (AZ::IO::Path(GetEngineRoot()) / wrongCaseRelFilePath).LexicallyNormal(); + AZ::IO::Path correctAbsoluteFilePath = (AZ::IO::Path(GetTempDir()) / relFilePath).LexicallyNormal(); + AZ::IO::Path wrongCaseAbsoluteFilePath = (AZ::IO::Path(GetTempDir()) / wrongCaseRelFilePath).LexicallyNormal(); AZ::IO::HandleType fileHandle = AZ::IO::InvalidHandle; AZ::IO::FileIOBase::GetInstance()->Open(correctAbsoluteFilePath.c_str(), AZ::IO::OpenMode::ModeWrite | AZ::IO::OpenMode::ModeCreatePath, fileHandle); @@ -121,7 +121,7 @@ namespace AssetBundler TEST_F(MockUtilsTest, TestFilePath_NoFileExists_NoError_valid) { AZ::IO::Path relFilePath = "Foo\\Foo.xml"; - AZ::IO::Path absoluteFilePath = (AZ::IO::Path(GetEngineRoot()) / relFilePath).LexicallyNormal(); + AZ::IO::Path absoluteFilePath = (AZ::IO::Path(GetTempDir()) / relFilePath).LexicallyNormal(); FilePath filePath(absoluteFilePath.Native(), true, false); EXPECT_TRUE(filePath.IsValid()); @@ -132,8 +132,8 @@ namespace AssetBundler { AZStd::string relFilePath = "Foo\\Foo.xml"; AZStd::string wrongCaseRelFilePath = "Foo\\foo.xml"; - AZ::IO::Path correctAbsoluteFilePath = (AZ::IO::Path(GetEngineRoot()) / relFilePath).LexicallyNormal(); - AZ::IO::Path wrongCaseAbsoluteFilePath = (AZ::IO::Path(GetEngineRoot()) / wrongCaseRelFilePath).LexicallyNormal(); + AZ::IO::Path correctAbsoluteFilePath = (AZ::IO::Path(GetTempDir()) / relFilePath).LexicallyNormal(); + AZ::IO::Path wrongCaseAbsoluteFilePath = (AZ::IO::Path(GetTempDir()) / wrongCaseRelFilePath).LexicallyNormal(); AZ::IO::HandleType fileHandle = AZ::IO::InvalidHandle; AZ::IO::FileIOBase::GetInstance()->Open(correctAbsoluteFilePath.c_str(), AZ::IO::OpenMode::ModeWrite | AZ::IO::OpenMode::ModeCreatePath, fileHandle); diff --git a/Code/Tools/AssetBundler/tests/applicationManagerTests.cpp b/Code/Tools/AssetBundler/tests/applicationManagerTests.cpp index 07eae67a81..fd587195af 100644 --- a/Code/Tools/AssetBundler/tests/applicationManagerTests.cpp +++ b/Code/Tools/AssetBundler/tests/applicationManagerTests.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -84,10 +85,9 @@ namespace AssetBundler // in the unit tests. AZ::UserSettingsComponentRequestBus::Broadcast(&AZ::UserSettingsComponentRequests::DisableSaveOnFinalize); - const char* engineRoot = nullptr; - AzFramework::ApplicationRequests::Bus::BroadcastResult(engineRoot, &AzFramework::ApplicationRequests::GetEngineRoot); - ASSERT_TRUE(engineRoot) << "Unable to locate engine root.\n"; - AzFramework::StringFunc::Path::Join(engineRoot, RelativeTestFolder, m_data->m_testEngineRoot); + AZ::IO::FixedMaxPath engineRoot = AZ::Utils::GetEnginePath(); + ASSERT_TRUE(!engineRoot.empty()) << "Unable to locate engine root.\n"; + m_data->m_testEngineRoot = (engineRoot / RelativeTestFolder).String(); m_data->m_localFileIO = aznew AZ::IO::LocalFileIO(); m_data->m_priorFileIO = AZ::IO::FileIOBase::GetInstance(); @@ -150,7 +150,8 @@ namespace AssetBundler EXPECT_EQ(0, gemsNameMap.size()); - AzFramework::PlatformFlags platformFlags = GetEnabledPlatformFlags(m_data->m_testEngineRoot.c_str(), m_data->m_testEngineRoot.c_str(), DummyProjectName); + const auto testProjectPath = AZ::IO::Path(m_data->m_testEngineRoot) / DummyProjectName; + AzFramework::PlatformFlags platformFlags = GetEnabledPlatformFlags(m_data->m_testEngineRoot, testProjectPath.Native()); AzFramework::PlatformFlags hostPlatformFlag = AzFramework::PlatformHelper::GetPlatformFlag(AzToolsFramework::AssetSystem::GetHostAssetPlatform()); AzFramework::PlatformFlags expectedFlags = AzFramework::PlatformFlags::Platform_ANDROID | AzFramework::PlatformFlags::Platform_IOS | AzFramework::PlatformFlags::Platform_PROVO | hostPlatformFlag; ASSERT_EQ(platformFlags, expectedFlags); diff --git a/Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.cpp b/Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.cpp index 62b063c83b..b5323dd419 100644 --- a/Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.cpp +++ b/Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.cpp @@ -23,6 +23,8 @@ #include ////////////////////////////////////////////////////////////////////////// +#include + namespace AssetBuilderSDK { const char* const ErrorWindow = "Error"; //Use this window name to log error messages. @@ -690,7 +692,6 @@ namespace AssetBuilderSDK static const char* textureExtensions = ".dds"; static const char* staticMeshExtensions = ".cgf"; static const char* skinnedMeshExtensions = ".skin"; - static const char* materialExtensions = ".mtl"; // MIPS static const int c_MaxMipsCount = 11; // 11 is for 8k textures non-compressed. When not compressed it is using one file per mip. @@ -699,7 +700,6 @@ namespace AssetBuilderSDK // XML files may contain generic data (avoid this in new builders - use a custom extension!) static const char* xmlExtensions = ".xml"; - static const char* geomCacheExtensions = ".cax"; static const char* skeletonExtensions = ".chr"; static AZ::Data::AssetType unknownAssetType = AZ::Data::AssetType::CreateNull(); @@ -710,7 +710,6 @@ namespace AssetBuilderSDK static AZ::Data::AssetType textureMipsAssetType("{3918728C-D3CA-4D9E-813E-A5ED20C6821E}"); static AZ::Data::AssetType skinnedMeshLodsAssetType("{58E5824F-C27B-46FD-AD48-865BA41B7A51}"); static AZ::Data::AssetType staticMeshLodsAssetType("{9AAE4926-CB6A-4C60-9948-A1A22F51DB23}"); - static AZ::Data::AssetType geomCacheAssetType("{EBC96071-E960-41B6-B3E3-328F515AE5DA}"); static AZ::Data::AssetType skeletonAssetType("{60161B46-21F0-4396-A4F0-F2CCF0664CDE}"); static AZ::Data::AssetType entityIconAssetType("{3436C30E-E2C5-4C3B-A7B9-66C94A28701B}"); @@ -807,11 +806,6 @@ namespace AssetBuilderSDK return textureAssetType; } - if (AzFramework::StringFunc::Find(materialExtensions, extension.c_str()) != AZStd::string::npos) - { - return materialAssetType; - } - if (AzFramework::StringFunc::Find(staticMeshExtensions, extension.c_str()) != AZStd::string::npos) { return meshAssetType; @@ -822,11 +816,6 @@ namespace AssetBuilderSDK return skinnedMeshAssetType; } - if (AzFramework::StringFunc::Find(geomCacheExtensions, extension.c_str()) != AZStd::string::npos) - { - return geomCacheAssetType; - } - if (AzFramework::StringFunc::Find(skeletonExtensions, extension.c_str()) != AZStd::string::npos) { return skeletonAssetType; @@ -1612,4 +1601,70 @@ namespace AssetBuilderSDK { return m_errorsOccurred; } + + AZ::u64 GetHashFromIOStream(AZ::IO::GenericStream& readStream, AZ::IO::SizeType* bytesReadOut, int hashMsDelay) + { + constexpr AZ::u64 HashBufferSize = 1024 * 64; + char buffer[HashBufferSize]; + + if(readStream.IsOpen() && readStream.CanRead()) + { + AZ::IO::SizeType bytesRead; + + auto* state = XXH64_createState(); + + if(state == nullptr) + { + AZ_Assert(false, "Failed to create hash state"); + return 0; + } + + if (XXH64_reset(state, 0) == XXH_ERROR) + { + AZ_Assert(false, "Failed to reset hash state"); + return 0; + } + + do + { + // In edge cases where another process is writing to this file while this hashing is occuring and that file wasn't locked, + // the following read check can fail because it performs an end of file check, and asserts and shuts down if the read size + // was smaller than the buffer and the read is not at the end of the file. The logic used to check end of file internal to read + // will be out of date in the edge cases where another process is actively writing to this file while this hash is running. + // The stream's length ends up more accurate in this case, preventing this assert and shut down. + // One area this occurs is the navigation mesh file (mnmnavmission0.bai) that's temporarily created when exporting a level, + // the navigation system can still be writing to this file when hashing begins, causing the EoF marker to change. + AZ::IO::SizeType remainingToRead = AZStd::min(readStream.GetLength() - readStream.GetCurPos(), aznumeric_cast(AZ_ARRAY_SIZE(buffer))); + bytesRead = readStream.Read(remainingToRead, buffer); + + if(bytesReadOut) + { + *bytesReadOut += bytesRead; + } + + XXH64_update(state, buffer, bytesRead); + + // Used by unit tests to force the race condition mentioned above, to verify the crash fix. + if(hashMsDelay > 0) + { + AZStd::this_thread::sleep_for(AZStd::chrono::milliseconds(hashMsDelay)); + } + + } while (bytesRead > 0); + + auto hash = XXH64_digest(state); + + XXH64_freeState(state); + + return hash; + } + return 0; + } + + AZ::u64 GetFileHash(const char* filePath, AZ::IO::SizeType* bytesReadOut, int hashMsDelay) + { + constexpr bool ErrorOnReadFailure = true; + AZ::IO::FileIOStream readStream(filePath, AZ::IO::OpenMode::ModeRead | AZ::IO::OpenMode::ModeBinary, ErrorOnReadFailure); + return GetHashFromIOStream(readStream, bytesReadOut, hashMsDelay); + } } diff --git a/Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.h b/Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.h index 5a57fa1e72..f977e15be9 100644 --- a/Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.h +++ b/Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.h @@ -911,6 +911,19 @@ namespace AssetBuilderSDK //! There can be multiple builders running at once, so we need to filter out ones coming from other builders AZStd::thread_id m_jobThreadId; }; + + //! Get hash for a whole file + //! @filePath the path for the file + //! @bytesReadOut output the read file size in bytes + //! @hashMsDelay [Do not use except for unit test] add a delay in ms for between each block reading. + AZ::u64 GetFileHash(const char* filePath, AZ::IO::SizeType* bytesReadOut = nullptr, int hashMsDelay = 0); + + //! Get hash for a generic IO stream + //! @readStream the input readable stream + //! @bytesReadOut output the read size in bytes + //! @hashMsDelay [Do not use except for unit test] add a delay in ms for between each block reading. + AZ::u64 GetHashFromIOStream(AZ::IO::GenericStream& readStream, AZ::IO::SizeType* bytesReadOut = nullptr, int hashMsDelay = 0); + } // namespace AssetBuilderSDK namespace AZ diff --git a/Code/Tools/AssetProcessor/AssetBuilderSDK/CMakeLists.txt b/Code/Tools/AssetProcessor/AssetBuilderSDK/CMakeLists.txt index 635cd55f6c..bfbcc35663 100644 --- a/Code/Tools/AssetProcessor/AssetBuilderSDK/CMakeLists.txt +++ b/Code/Tools/AssetProcessor/AssetBuilderSDK/CMakeLists.txt @@ -32,6 +32,7 @@ ly_add_target( PUBLIC AZ::AzFramework AZ::AzToolsFramework + 3rdParty::xxhash ) ly_add_source_properties( SOURCES AssetBuilderSDK/AssetBuilderSDK.cpp diff --git a/Code/Tools/AssetProcessor/Platform/Linux/native/FileWatcher/FileWatcher_linux.cpp b/Code/Tools/AssetProcessor/Platform/Linux/native/FileWatcher/FileWatcher_linux.cpp index 2d3e671999..b7f7affd6d 100644 --- a/Code/Tools/AssetProcessor/Platform/Linux/native/FileWatcher/FileWatcher_linux.cpp +++ b/Code/Tools/AssetProcessor/Platform/Linux/native/FileWatcher/FileWatcher_linux.cpp @@ -32,7 +32,8 @@ struct FolderRootWatch::PlatformImplementation { if (m_iNotifyHandle < 0) { - m_iNotifyHandle = inotify_init(); + // The CLOEXEC flag prevents the inotify watchers from copying on fork/exec + m_iNotifyHandle = inotify_init1(IN_CLOEXEC); } return (m_iNotifyHandle >= 0); } diff --git a/Code/Tools/AssetProcessor/assetprocessor_static_files.cmake b/Code/Tools/AssetProcessor/assetprocessor_static_files.cmake index 056b88beb2..591de156f3 100644 --- a/Code/Tools/AssetProcessor/assetprocessor_static_files.cmake +++ b/Code/Tools/AssetProcessor/assetprocessor_static_files.cmake @@ -29,6 +29,9 @@ set(FILES native/AssetManager/SourceFileRelocator.h native/AssetManager/ControlRequestHandler.cpp native/AssetManager/ControlRequestHandler.h + native/AssetManager/ExcludedFolderCache.cpp + native/AssetManager/ExcludedFolderCache.h + native/AssetManager/ExcludedFolderCacheInterface.h native/assetprocessor.h native/connection/connection.cpp native/connection/connection.h diff --git a/Code/Tools/AssetProcessor/native/AssetManager/ExcludedFolderCache.cpp b/Code/Tools/AssetProcessor/native/AssetManager/ExcludedFolderCache.cpp new file mode 100644 index 0000000000..2c8dc844dd --- /dev/null +++ b/Code/Tools/AssetProcessor/native/AssetManager/ExcludedFolderCache.cpp @@ -0,0 +1,154 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include +#include +#include +#include +#include +#include + +namespace AssetProcessor +{ + ExcludedFolderCache::ExcludedFolderCache(const PlatformConfiguration* platformConfig) : m_platformConfig(platformConfig) + { + AZ::Interface::Register(this); + } + + ExcludedFolderCache::~ExcludedFolderCache() + { + AZ::Interface::Unregister(this); + } + + const AZStd::unordered_set& ExcludedFolderCache::GetExcludedFolders() + { + if (!m_builtCache) + { + for (int i = 0; i < m_platformConfig->GetScanFolderCount(); ++i) + { + const auto& scanFolderInfo = m_platformConfig->GetScanFolderAt(i); + QDir rooted(scanFolderInfo.ScanPath()); + QString absolutePath = rooted.absolutePath(); + AZStd::stack dirs; + dirs.push(absolutePath); + + while (!dirs.empty()) + { + absolutePath = dirs.top(); + dirs.pop(); + + // Scan only folders, do not recurse so we have the chance to ignore a subfolder before going deeper + QDirIterator dirIterator(absolutePath, QDir::Dirs | QDir::NoSymLinks | QDir::NoDotAndDotDot); + + // Loop all the folders in this directory + while (dirIterator.hasNext()) + { + dirIterator.next(); + QString pathMatch = rooted.absoluteFilePath(dirIterator.filePath()); + + if (m_platformConfig->IsFileExcluded(pathMatch)) + { + // Add the folder to the list and do not proceed any deeper + m_excludedFolders.emplace(pathMatch.toUtf8().constData()); + } + else if (scanFolderInfo.RecurseSubFolders()) + { + // Folder is not excluded and recurse is enabled, add to the list of folders to check + dirs.push(pathMatch); + } + } + } + } + + // Add the cache to the list as well + AZStd::string projectCacheRootValue; + AZ::SettingsRegistry::Get()->Get(projectCacheRootValue, AZ::SettingsRegistryMergeUtils::FilePathKey_CacheProjectRootFolder); + projectCacheRootValue = AssetUtilities::NormalizeFilePath(projectCacheRootValue.c_str()).toUtf8().constData(); + m_excludedFolders.emplace(projectCacheRootValue); + + // Register to be notified about deletes so we can remove old ignored folders + auto fileStateCache = AZ::Interface::Get(); + + if (fileStateCache) + { + m_handler = AZ::Event::Handler([this](FileStateInfo fileInfo) + { + if (fileInfo.m_isDirectory) + { + AZStd::scoped_lock lock(m_pendingNewFolderMutex); + + m_pendingDeletes.emplace(fileInfo.m_absolutePath.toUtf8().constData()); + } + }); + + fileStateCache->RegisterForDeleteEvent(m_handler); + } + else + { + AZ_Error("ExcludedFolderCache", false, "Failed to find IFileStateRequests interface"); + } + + m_builtCache = true; + } + + // Incorporate any pending folders + AZStd::unordered_set pendingAdds; + AZStd::unordered_set pendingDeletes; + + { + AZStd::scoped_lock lock(m_pendingNewFolderMutex); + pendingAdds.swap(m_pendingNewFolders); + pendingDeletes.swap(m_pendingDeletes); + } + + if (!pendingAdds.empty()) + { + m_excludedFolders.insert(pendingAdds.begin(), pendingAdds.end()); + } + + if (!pendingDeletes.empty()) + { + for (const auto& pendingDelete : pendingDeletes) + { + m_excludedFolders.erase(pendingDelete); + } + } + + return m_excludedFolders; + } + + void ExcludedFolderCache::FileAdded(QString path) + { + QString relativePath, scanFolderPath; + + if (!m_platformConfig->ConvertToRelativePath(path, relativePath, scanFolderPath)) + { + AZ_Error("ExcludedFolderCache", false, "Failed to get relative path for newly added file %s", path.toUtf8().constData()); + return; + } + + AZ::IO::Path azPath(relativePath.toUtf8().constData()); + AZ::IO::Path absolutePath(scanFolderPath.toUtf8().constData()); + + for (const auto& pathPart : azPath) + { + absolutePath /= pathPart; + + QString normalized = AssetUtilities::NormalizeFilePath(absolutePath.c_str()); + + if (m_platformConfig->IsFileExcluded(normalized)) + { + // Add the folder to a pending list, since this callback runs on another thread + AZStd::scoped_lock lock(m_pendingNewFolderMutex); + + m_pendingNewFolders.emplace(normalized.toUtf8().constData()); + break; + } + } + } +} diff --git a/Code/Tools/AssetProcessor/native/AssetManager/ExcludedFolderCache.h b/Code/Tools/AssetProcessor/native/AssetManager/ExcludedFolderCache.h new file mode 100644 index 0000000000..b0c70946b6 --- /dev/null +++ b/Code/Tools/AssetProcessor/native/AssetManager/ExcludedFolderCache.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#pragma once + +#include +#include + +namespace AssetProcessor +{ + class PlatformConfiguration; + + struct ExcludedFolderCache : ExcludedFolderCacheInterface + { + explicit ExcludedFolderCache(const PlatformConfiguration* platformConfig); + ~ExcludedFolderCache() override; + + // Gets a set of absolute paths to folder which have been excluded according to the platform configuration rules + // Note - not thread safe + const AZStd::unordered_set& GetExcludedFolders() override; + + void FileAdded(QString path) override; + + private: + bool m_builtCache = false; + const PlatformConfiguration* m_platformConfig{}; + AZStd::unordered_set m_excludedFolders; + + AZStd::recursive_mutex m_pendingNewFolderMutex; + AZStd::unordered_set m_pendingNewFolders; // Newly ignored folders waiting to be added to m_excludedFolders + AZStd::unordered_set m_pendingDeletes; + AZ::Event::Handler m_handler; + }; +} diff --git a/Code/Tools/AssetProcessor/native/AssetManager/ExcludedFolderCacheInterface.h b/Code/Tools/AssetProcessor/native/AssetManager/ExcludedFolderCacheInterface.h new file mode 100644 index 0000000000..1bdc4cc855 --- /dev/null +++ b/Code/Tools/AssetProcessor/native/AssetManager/ExcludedFolderCacheInterface.h @@ -0,0 +1,29 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#pragma once + +#include +#include + +namespace AssetProcessor +{ + class PlatformConfiguration; + + struct ExcludedFolderCacheInterface + { + AZ_RTTI(ExcludedFolderCacheInterface, "{3AC471B6-C9F8-49CF-9E9D-237BDF63328C}"); + AZ_DISABLE_COPY_MOVE(ExcludedFolderCacheInterface); + + ExcludedFolderCacheInterface() = default; + virtual ~ExcludedFolderCacheInterface() = default; + + virtual const AZStd::unordered_set& GetExcludedFolders() = 0; + virtual void FileAdded(QString path) = 0; + }; +} diff --git a/Code/Tools/AssetProcessor/native/AssetManager/FileStateCache.cpp b/Code/Tools/AssetProcessor/native/AssetManager/FileStateCache.cpp index d21aca35f5..e49d1bbb47 100644 --- a/Code/Tools/AssetProcessor/native/AssetManager/FileStateCache.cpp +++ b/Code/Tools/AssetProcessor/native/AssetManager/FileStateCache.cpp @@ -63,6 +63,11 @@ namespace AssetProcessor return true; } + void FileStateCache::RegisterForDeleteEvent(AZ::Event::Handler& handler) + { + handler.Connect(m_deleteEvent); + } + void FileStateCache::AddInfoSet(QSet infoSet) { LockGuardType scopeLock(m_mapMutex); @@ -103,6 +108,8 @@ namespace AssetProcessor if (itr != m_fileInfoMap.end()) { + m_deleteEvent.Signal(itr.value()); + bool isDirectory = itr.value().m_isDirectory; QString parentPath = itr.value().m_absolutePath; m_fileInfoMap.erase(itr); @@ -205,6 +212,21 @@ namespace AssetProcessor return true; } + void FileStatePassthrough::RegisterForDeleteEvent(AZ::Event::Handler& handler) + { + handler.Connect(m_deleteEvent); + } + + void FileStatePassthrough::SignalDeleteEvent(const QString& absolutePath) const + { + FileStateInfo info; + + if (GetFileInfo(absolutePath, &info)) + { + m_deleteEvent.Signal(info); + } + } + bool FileStateInfo::operator==(const FileStateInfo& rhs) const { return m_absolutePath == rhs.m_absolutePath diff --git a/Code/Tools/AssetProcessor/native/AssetManager/FileStateCache.h b/Code/Tools/AssetProcessor/native/AssetManager/FileStateCache.h index ba663aef0e..56ec03aa7d 100644 --- a/Code/Tools/AssetProcessor/native/AssetManager/FileStateCache.h +++ b/Code/Tools/AssetProcessor/native/AssetManager/FileStateCache.h @@ -14,6 +14,7 @@ #include #include #include +#include namespace AssetProcessor { @@ -51,10 +52,11 @@ namespace AssetProcessor /// Convenience function to check if a file or directory exists. virtual bool Exists(const QString& absolutePath) const = 0; virtual bool GetHash(const QString& absolutePath, FileHash* foundHash) = 0; + virtual void RegisterForDeleteEvent(AZ::Event::Handler& handler) = 0; AZ_DISABLE_COPY_MOVE(IFileStateRequests); }; - + class FileStateBase : public IFileStateRequests { @@ -89,11 +91,11 @@ namespace AssetProcessor { public: - // FileStateRequestBus implementation bool GetFileInfo(const QString& absolutePath, FileStateInfo* foundFileInfo) const override; bool Exists(const QString& absolutePath) const override; bool GetHash(const QString& absolutePath, FileHash* foundHash) override; + void RegisterForDeleteEvent(AZ::Event::Handler& handler) override; void AddInfoSet(QSet infoSet) override; void AddFile(const QString& absolutePath) override; @@ -116,9 +118,11 @@ namespace AssetProcessor mutable AZStd::recursive_mutex m_mapMutex; QHash m_fileInfoMap; - + QHash m_fileHashMap; + AZ::Event m_deleteEvent; + using LockGuardType = AZStd::lock_guard; }; @@ -131,5 +135,10 @@ namespace AssetProcessor bool GetFileInfo(const QString& absolutePath, FileStateInfo* foundFileInfo) const override; bool Exists(const QString& absolutePath) const override; bool GetHash(const QString& absolutePath, FileHash* foundHash) override; + void RegisterForDeleteEvent(AZ::Event::Handler& handler) override; + + void SignalDeleteEvent(const QString& absolutePath) const; + protected: + AZ::Event m_deleteEvent; }; } // namespace AssetProcessor diff --git a/Code/Tools/AssetProcessor/native/AssetManager/assetProcessorManager.cpp b/Code/Tools/AssetProcessor/native/AssetManager/assetProcessorManager.cpp index 367a296bd4..05fe760bcb 100644 --- a/Code/Tools/AssetProcessor/native/AssetManager/assetProcessorManager.cpp +++ b/Code/Tools/AssetProcessor/native/AssetManager/assetProcessorManager.cpp @@ -18,8 +18,8 @@ #include - #include "native/AssetManager/assetProcessorManager.h" + #include #include @@ -66,8 +66,10 @@ namespace AssetProcessor m_sourceFileRelocator = AZStd::make_unique(m_stateData, m_platformConfig); - PopulateJobStateCache(); + m_excludedFolderCache = AZStd::make_unique(m_platformConfig); + PopulateJobStateCache(); + AssetProcessor::ProcessingJobInfoBus::Handler::BusConnect(); } @@ -3573,6 +3575,8 @@ namespace AssetProcessor QString knownPathBeforeWildcard = encodedFileData.left(slashBeforeWildcardIndex + 1); // include the slash QString relativeSearch = encodedFileData.mid(slashBeforeWildcardIndex + 1); // skip the slash + const auto& excludedFolders = m_excludedFolderCache->GetExcludedFolders(); + // Absolute path, just check the 1 scan folder if (AZ::IO::PathView(encodedFileData.toUtf8().constData()).IsAbsolute()) { @@ -3592,7 +3596,8 @@ namespace AssetProcessor QString scanFolderAndKnownSubPath = rooted.absoluteFilePath(knownPathBeforeWildcard); resolvedDependencyList.append(m_platformConfig->FindWildcardMatches( - scanFolderAndKnownSubPath, relativeSearch, false, scanFolderInfo->RecurseSubFolders())); + scanFolderAndKnownSubPath, relativeSearch, + excludedFolders, false, scanFolderInfo->RecurseSubFolders())); } } else // Relative path, check every scan folder @@ -3610,7 +3615,21 @@ namespace AssetProcessor QString absolutePath = rooted.absoluteFilePath(knownPathBeforeWildcard); resolvedDependencyList.append(m_platformConfig->FindWildcardMatches( - absolutePath, relativeSearch, false, scanFolderInfo->RecurseSubFolders())); + absolutePath, relativeSearch, + excludedFolders, false, scanFolderInfo->RecurseSubFolders())); + } + } + + // Filter out any excluded files + for (auto itr = resolvedDependencyList.begin(); itr != resolvedDependencyList.end();) + { + if (m_platformConfig->IsFileExcluded(*itr)) + { + itr = resolvedDependencyList.erase(itr); + } + else + { + ++itr; } } diff --git a/Code/Tools/AssetProcessor/native/AssetManager/assetProcessorManager.h b/Code/Tools/AssetProcessor/native/AssetManager/assetProcessorManager.h index 891e091f91..fe77396760 100644 --- a/Code/Tools/AssetProcessor/native/AssetManager/assetProcessorManager.h +++ b/Code/Tools/AssetProcessor/native/AssetManager/assetProcessorManager.h @@ -40,6 +40,8 @@ #include "AssetRequestHandler.h" #include "native/utilities/JobDiagnosticTracker.h" #include "SourceFileRelocator.h" + +#include #endif class FileWatcher; @@ -341,7 +343,8 @@ namespace AssetProcessor void CleanEmptyFolder(QString folder, QString root); void ProcessBuilders(QString normalizedPath, QString relativePathToFile, const ScanFolderInfo* scanFolder, const AssetProcessor::BuilderInfoList& builderInfoList); - + AZStd::vector GetExcludedFolders(); + struct SourceInfo { QString m_watchFolder; @@ -552,6 +555,8 @@ namespace AssetProcessor // when true, a flag will be sent to builders process job indicating debug output/mode should be used bool m_builderDebugFlag = false; + AZStd::unique_ptr m_excludedFolderCache{}; + protected Q_SLOTS: void FinishAnalysis(AZStd::string fileToCheck); ////////////////////////////////////////////////////////// diff --git a/Code/Tools/AssetProcessor/native/tests/AssetProcessorTest.h b/Code/Tools/AssetProcessor/native/tests/AssetProcessorTest.h index 8f26155fd3..fcfd831d0b 100644 --- a/Code/Tools/AssetProcessor/native/tests/AssetProcessorTest.h +++ b/Code/Tools/AssetProcessor/native/tests/AssetProcessorTest.h @@ -26,7 +26,7 @@ namespace AssetProcessor { protected: AZStd::unique_ptr m_errorAbsorber{}; - FileStatePassthrough m_fileStateCache; + AZStd::unique_ptr m_fileStateCache{}; void SetUp() override { @@ -40,9 +40,10 @@ namespace AssetProcessor m_ownsSysAllocator = true; AZ::AllocatorInstance::Create(); } - m_errorAbsorber = AZStd::make_unique(); + m_errorAbsorber = AZStd::make_unique(); m_application = AZStd::make_unique(); + m_fileStateCache = AZStd::make_unique(); // Inject the AutomatedTesting project as a project path into test fixture using FixedValueString = AZ::SettingsRegistryInterface::FixedValueString; @@ -60,7 +61,8 @@ namespace AssetProcessor void TearDown() override { AssetUtilities::ResetAssetRoot(); - + + m_fileStateCache.reset(); m_application.reset(); m_errorAbsorber.reset(); diff --git a/Code/Tools/AssetProcessor/native/tests/assetmanager/AssetProcessorManagerTest.cpp b/Code/Tools/AssetProcessor/native/tests/assetmanager/AssetProcessorManagerTest.cpp index 93344caf6e..58f76f8da6 100644 --- a/Code/Tools/AssetProcessor/native/tests/assetmanager/AssetProcessorManagerTest.cpp +++ b/Code/Tools/AssetProcessor/native/tests/assetmanager/AssetProcessorManagerTest.cpp @@ -5364,13 +5364,29 @@ AZStd::vector WildcardSourceDependencyTest::FileAddedTest(const Q void WildcardSourceDependencyTest::SetUp() { AssetProcessorManagerTest::SetUp(); - + QDir tempPath(m_tempDir.path()); // Add a non-recursive scan folder. Only files directly inside of this folder should be picked up, subfolders are ignored m_config->AddScanFolder(ScanFolderInfo(tempPath.filePath("no_recurse"), "no_recurse", "no_recurse", false, false, m_config->GetEnabledPlatforms(), 1)); + { + ExcludeAssetRecognizer excludeFolder; + excludeFolder.m_name = "Exclude ignored Folder"; + excludeFolder.m_patternMatcher = + AssetBuilderSDK::FilePatternMatcher(R"REGEX(^(.*\/)?ignored(\/.*)?$)REGEX", AssetBuilderSDK::AssetBuilderPattern::Regex); + m_config->AddExcludeRecognizer(excludeFolder); + } + + { + ExcludeAssetRecognizer excludeFile; + excludeFile.m_name = "Exclude z.foo Files"; + excludeFile.m_patternMatcher = + AssetBuilderSDK::FilePatternMatcher(R"REGEX(^(.*\/)?z\.foo$)REGEX", AssetBuilderSDK::AssetBuilderPattern::Regex); + m_config->AddExcludeRecognizer(excludeFile); + } + UnitTestUtils::CreateDummyFile(tempPath.absoluteFilePath("subfolder1/1a.foo")); UnitTestUtils::CreateDummyFile(tempPath.absoluteFilePath("subfolder1/1b.foo")); UnitTestUtils::CreateDummyFile(tempPath.absoluteFilePath("subfolder2/redirected/a.foo")); @@ -5384,6 +5400,19 @@ void WildcardSourceDependencyTest::SetUp() // Add a file in the non-recursive scanfolder. Since its not directly in the scan folder, it should always be ignored UnitTestUtils::CreateDummyFile(tempPath.absoluteFilePath("no_recurse/one/two/three/f.foo")); + // Add a file to an ignored folder + UnitTestUtils::CreateDummyFile(tempPath.absoluteFilePath("subfolder2/redirected/folder/ignored/g.foo")); + + // Add an ignored file + UnitTestUtils::CreateDummyFile(tempPath.absoluteFilePath("subfolder2/redirected/folder/one/z.foo")); + + // Add a file in the cache + AZStd::string projectCacheRootValue; + AZ::SettingsRegistry::Get()->Get(projectCacheRootValue, AZ::SettingsRegistryMergeUtils::FilePathKey_CacheProjectRootFolder); + projectCacheRootValue = AssetUtilities::NormalizeFilePath(projectCacheRootValue.c_str()).toUtf8().constData(); + auto path = AZ::IO::Path(projectCacheRootValue) / "cache.foo"; + UnitTestUtils::CreateDummyFile(path.c_str()); + AzToolsFramework::AssetDatabase::SourceFileDependencyEntryContainer dependencies; // Relative path wildcard dependency @@ -5518,6 +5547,102 @@ TEST_F(WildcardSourceDependencyTest, Absolute_NoWildcard) ASSERT_THAT(resolvedPaths, ::testing::UnorderedElementsAre()); } +TEST_F(WildcardSourceDependencyTest, Relative_IgnoredFolder) +{ + AZStd::vector resolvedPaths; + + ASSERT_TRUE(Test("*g.foo", resolvedPaths)); + ASSERT_THAT(resolvedPaths, ::testing::UnorderedElementsAre()); +} + +TEST_F(WildcardSourceDependencyTest, Absolute_IgnoredFolder) +{ + AZStd::vector resolvedPaths; + QDir tempPath(m_tempDir.path()); + + ASSERT_TRUE(Test(tempPath.absoluteFilePath("*g.foo").toUtf8().constData(), resolvedPaths)); + ASSERT_THAT(resolvedPaths, ::testing::UnorderedElementsAre()); +} + +TEST_F(WildcardSourceDependencyTest, Relative_IgnoredFile) +{ + AZStd::vector resolvedPaths; + + ASSERT_TRUE(Test("*z.foo", resolvedPaths)); + ASSERT_THAT(resolvedPaths, ::testing::UnorderedElementsAre()); +} + +TEST_F(WildcardSourceDependencyTest, Absolute_IgnoredFile) +{ + AZStd::vector resolvedPaths; + QDir tempPath(m_tempDir.path()); + + ASSERT_TRUE(Test(tempPath.absoluteFilePath("*z.foo").toUtf8().constData(), resolvedPaths)); + ASSERT_THAT(resolvedPaths, ::testing::UnorderedElementsAre()); +} + +TEST_F(WildcardSourceDependencyTest, Relative_CacheFolder) +{ + AZStd::vector resolvedPaths; + QDir tempPath(m_tempDir.path()); + + ASSERT_TRUE(Test("*cache.foo", resolvedPaths)); + ASSERT_THAT(resolvedPaths, ::testing::UnorderedElementsAre()); +} + +TEST_F(WildcardSourceDependencyTest, FilesAddedAfterInitialCache) +{ + AZStd::vector resolvedPaths; + QDir tempPath(m_tempDir.path()); + + auto excludedFolderCacheInterface = AZ::Interface::Get(); + + ASSERT_TRUE(excludedFolderCacheInterface); + + { + const auto& excludedFolders = excludedFolderCacheInterface->GetExcludedFolders(); + + ASSERT_EQ(excludedFolders.size(), 2); + } + + // Add a file to a new ignored folder + QString newFilePath = tempPath.absoluteFilePath("subfolder2/redirected/folder/two/ignored/three/new.foo"); + UnitTestUtils::CreateDummyFile(newFilePath); + + excludedFolderCacheInterface->FileAdded(newFilePath); + + const auto& excludedFolders = excludedFolderCacheInterface->GetExcludedFolders(); + + ASSERT_EQ(excludedFolders.size(), 3); + ASSERT_THAT(excludedFolders, ::testing::Contains(AZStd::string(tempPath.absoluteFilePath("subfolder2/redirected/folder/two/ignored").toUtf8().constData()))); +} + +TEST_F(WildcardSourceDependencyTest, FilesRemovedAfterInitialCache) +{ + AZStd::vector resolvedPaths; + QDir tempPath(m_tempDir.path()); + + // Add a file to a new ignored folder + QString newFilePath = tempPath.absoluteFilePath("subfolder2/redirected/folder/two/ignored/three/new.foo"); + UnitTestUtils::CreateDummyFile(newFilePath); + + auto excludedFolderCacheInterface = AZ::Interface::Get(); + + ASSERT_TRUE(excludedFolderCacheInterface); + + { + const auto& excludedFolders = excludedFolderCacheInterface->GetExcludedFolders(); + + ASSERT_EQ(excludedFolders.size(), 3); + } + + m_fileStateCache->SignalDeleteEvent(tempPath.absoluteFilePath("subfolder2/redirected/folder/two/ignored")); + + const auto& excludedFolders = excludedFolderCacheInterface->GetExcludedFolders(); + + ASSERT_EQ(excludedFolders.size(), 2); +} + TEST_F(WildcardSourceDependencyTest, NewFile_MatchesSavedRelativeDependency) { QDir tempPath(m_tempDir.path()); diff --git a/Code/Tools/AssetProcessor/native/tests/platformconfiguration/platformconfigurationtests.cpp b/Code/Tools/AssetProcessor/native/tests/platformconfiguration/platformconfigurationtests.cpp index 6fd05fa948..624fa3d06b 100644 --- a/Code/Tools/AssetProcessor/native/tests/platformconfiguration/platformconfigurationtests.cpp +++ b/Code/Tools/AssetProcessor/native/tests/platformconfiguration/platformconfigurationtests.cpp @@ -52,11 +52,12 @@ TEST_F(PlatformConfigurationUnitTests, TestFailReadConfigFile_BadPlatform) using namespace AssetProcessor; const auto testExeFolder = AZ::IO::FileIOBase::GetInstance()->ResolvePath(TestAppRoot); + const AZ::IO::FixedMaxPath projectPath = (*testExeFolder) / EmptyDummyProjectName; auto configRoot = AZ::IO::FileIOBase::GetInstance()->ResolvePath("@exefolder@/testdata/config_broken_badplatform"); ASSERT_TRUE(configRoot); UnitTestPlatformConfiguration config; m_absorber.Clear(); - ASSERT_FALSE(config.InitializeFromConfigFiles(configRoot->c_str(), testExeFolder->c_str(), EmptyDummyProjectName, false, false)); + ASSERT_FALSE(config.InitializeFromConfigFiles(configRoot->c_str(), testExeFolder->c_str(), projectPath.c_str(), false, false)); ASSERT_GT(m_absorber.m_numErrorsAbsorbed, 0); } @@ -67,11 +68,12 @@ TEST_F(PlatformConfigurationUnitTests, TestFailReadConfigFile_NoPlatform) using namespace AssetProcessor; const auto testExeFolder = AZ::IO::FileIOBase::GetInstance()->ResolvePath(TestAppRoot); + const AZ::IO::FixedMaxPath projectPath = (*testExeFolder) / EmptyDummyProjectName; auto configRoot = AZ::IO::FileIOBase::GetInstance()->ResolvePath("@exefolder@/testdata/config_broken_noplatform"); ASSERT_TRUE(configRoot); UnitTestPlatformConfiguration config; m_absorber.Clear(); - ASSERT_FALSE(config.InitializeFromConfigFiles(configRoot->c_str(), testExeFolder->c_str(), EmptyDummyProjectName, false, false)); + ASSERT_FALSE(config.InitializeFromConfigFiles(configRoot->c_str(), testExeFolder->c_str(), projectPath.c_str(), false, false)); ASSERT_GT(m_absorber.m_numErrorsAbsorbed, 0); } @@ -81,11 +83,12 @@ TEST_F(PlatformConfigurationUnitTests, TestFailReadConfigFile_NoScanFolders) using namespace AssetProcessor; const auto testExeFolder = AZ::IO::FileIOBase::GetInstance()->ResolvePath(TestAppRoot); + const AZ::IO::FixedMaxPath projectPath = (*testExeFolder) / EmptyDummyProjectName; auto configRoot = AZ::IO::FileIOBase::GetInstance()->ResolvePath("@exefolder@/testdata/config_broken_noscans"); ASSERT_TRUE(configRoot); UnitTestPlatformConfiguration config; m_absorber.Clear(); - ASSERT_FALSE(config.InitializeFromConfigFiles(configRoot->c_str(), testExeFolder->c_str(), EmptyDummyProjectName, false, false)); + ASSERT_FALSE(config.InitializeFromConfigFiles(configRoot->c_str(), testExeFolder->c_str(), projectPath.c_str(), false, false)); ASSERT_GT(m_absorber.m_numErrorsAbsorbed, 0); } @@ -95,11 +98,12 @@ TEST_F(PlatformConfigurationUnitTests, TestFailReadConfigFile_BrokenRecognizers) using namespace AssetProcessor; const auto testExeFolder = AZ::IO::FileIOBase::GetInstance()->ResolvePath(TestAppRoot); + const AZ::IO::FixedMaxPath projectPath = (*testExeFolder) / EmptyDummyProjectName; auto configRoot = AZ::IO::FileIOBase::GetInstance()->ResolvePath("@exefolder@/testdata/config_broken_recognizers"); ASSERT_TRUE(configRoot); UnitTestPlatformConfiguration config; m_absorber.Clear(); - ASSERT_FALSE(config.InitializeFromConfigFiles(configRoot->c_str(), testExeFolder->c_str(), EmptyDummyProjectName, false, false)); + ASSERT_FALSE(config.InitializeFromConfigFiles(configRoot->c_str(), testExeFolder->c_str(), projectPath.c_str(), false, false)); ASSERT_GT(m_absorber.m_numErrorsAbsorbed, 0); } @@ -109,11 +113,12 @@ TEST_F(PlatformConfigurationUnitTests, TestFailReadConfigFile_Regular_Platforms) using namespace AssetProcessor; const auto testExeFolder = AZ::IO::FileIOBase::GetInstance()->ResolvePath(TestAppRoot); + const AZ::IO::FixedMaxPath projectPath = (*testExeFolder) / EmptyDummyProjectName; auto configRoot = AZ::IO::FileIOBase::GetInstance()->ResolvePath("@exefolder@/testdata/config_regular"); ASSERT_TRUE(configRoot); UnitTestPlatformConfiguration config; m_absorber.Clear(); - ASSERT_TRUE(config.InitializeFromConfigFiles(configRoot->c_str(), testExeFolder->c_str(), EmptyDummyProjectName, false, false)); + ASSERT_TRUE(config.InitializeFromConfigFiles(configRoot->c_str(), testExeFolder->c_str(), projectPath.c_str(), false, false)); ASSERT_EQ(m_absorber.m_numErrorsAbsorbed, 0); // verify the data. @@ -322,12 +327,13 @@ TEST_F(PlatformConfigurationUnitTests, TestFailReadConfigFile_RegularScanfolder) using namespace AssetProcessor; const auto testExeFolder = AZ::IO::FileIOBase::GetInstance()->ResolvePath(TestAppRoot); + const AZ::IO::FixedMaxPath projectPath = (*testExeFolder) / EmptyDummyProjectName; auto configRoot = AZ::IO::FileIOBase::GetInstance()->ResolvePath("@exefolder@/testdata/config_regular"); ASSERT_TRUE(configRoot); UnitTestPlatformConfiguration config; m_absorber.Clear(); AssetUtilities::ComputeProjectName(EmptyDummyProjectName, true); - ASSERT_TRUE(config.InitializeFromConfigFiles(configRoot->c_str(), testExeFolder->c_str(), EmptyDummyProjectName, false, false)); + ASSERT_TRUE(config.InitializeFromConfigFiles(configRoot->c_str(), testExeFolder->c_str(), projectPath.c_str(), false, false)); ASSERT_EQ(m_absorber.m_numErrorsAbsorbed, 0); ASSERT_EQ(config.GetScanFolderCount(), 3); // the two, and then the one that has the same data as prior but different identifier. @@ -356,11 +362,12 @@ TEST_F(PlatformConfigurationUnitTests, TestFailReadConfigFile_RegularScanfolderP using namespace AssetProcessor; const auto testExeFolder = AZ::IO::FileIOBase::GetInstance()->ResolvePath(TestAppRoot); + const AZ::IO::FixedMaxPath projectPath = (*testExeFolder) / EmptyDummyProjectName; auto configRoot = AZ::IO::FileIOBase::GetInstance()->ResolvePath("@exefolder@/testdata/config_regular_platform_scanfolder"); ASSERT_TRUE(configRoot); UnitTestPlatformConfiguration config; m_absorber.Clear(); - ASSERT_TRUE(config.InitializeFromConfigFiles(configRoot->c_str(), testExeFolder->c_str(), EmptyDummyProjectName, false, false)); + ASSERT_TRUE(config.InitializeFromConfigFiles(configRoot->c_str(), testExeFolder->c_str(), projectPath.c_str(), false, false)); ASSERT_EQ(m_absorber.m_numErrorsAbsorbed, 0); ASSERT_EQ(config.GetScanFolderCount(), 5); @@ -402,13 +409,14 @@ TEST_F(PlatformConfigurationUnitTests, TestFailReadConfigFile_RegularExcludes) using namespace AssetProcessor; const auto testExeFolder = AZ::IO::FileIOBase::GetInstance()->ResolvePath(TestAppRoot); + const AZ::IO::FixedMaxPath projectPath = (*testExeFolder) / EmptyDummyProjectName; auto configRoot = AZ::IO::FileIOBase::GetInstance()->ResolvePath("@exefolder@/testdata/config_regular"); ASSERT_TRUE(configRoot); UnitTestPlatformConfiguration config; config.AddScanFolder(ScanFolderInfo("blahblah", "Blah ScanFolder", "sf2", true, true), true); m_absorber.Clear(); - ASSERT_TRUE(config.InitializeFromConfigFiles(configRoot->c_str(), testExeFolder->c_str(), EmptyDummyProjectName, false, false)); + ASSERT_TRUE(config.InitializeFromConfigFiles(configRoot->c_str(), testExeFolder->c_str(), projectPath.c_str(), false, false)); ASSERT_EQ(m_absorber.m_numErrorsAbsorbed, 0); ASSERT_TRUE(config.IsFileExcluded("blahblah/$tmp_01.test")); @@ -429,11 +437,12 @@ TEST_F(PlatformConfigurationUnitTests, TestFailReadConfigFile_Recognizers) #endif const auto testExeFolder = AZ::IO::FileIOBase::GetInstance()->ResolvePath(TestAppRoot); + const AZ::IO::FixedMaxPath projectPath = (*testExeFolder) / EmptyDummyProjectName; auto configRoot = AZ::IO::FileIOBase::GetInstance()->ResolvePath("@exefolder@/testdata/config_regular"); ASSERT_TRUE(configRoot); UnitTestPlatformConfiguration config; m_absorber.Clear(); - ASSERT_TRUE(config.InitializeFromConfigFiles(configRoot->c_str(), testExeFolder->c_str(), EmptyDummyProjectName, false, false)); + ASSERT_TRUE(config.InitializeFromConfigFiles(configRoot->c_str(), testExeFolder->c_str(), projectPath.c_str(), false, false)); ASSERT_EQ(m_absorber.m_numErrorsAbsorbed, 0); const AssetProcessor::RecognizerContainer& recogs = config.GetAssetRecognizerContainer(); @@ -520,12 +529,13 @@ TEST_F(PlatformConfigurationUnitTests, TestFailReadConfigFile_Overrides) using namespace AzToolsFramework::AssetSystem; using namespace AssetProcessor; const auto testExeFolder = AZ::IO::FileIOBase::GetInstance()->ResolvePath(TestAppRoot); + const AZ::IO::FixedMaxPath projectPath = (*testExeFolder) / DummyProjectName; auto configRoot = AZ::IO::FileIOBase::GetInstance()->ResolvePath("@exefolder@/testdata/config_regular"); ASSERT_TRUE(configRoot); UnitTestPlatformConfiguration config; m_absorber.Clear(); - ASSERT_TRUE(config.InitializeFromConfigFiles(configRoot->c_str(), testExeFolder->c_str(), DummyProjectName, false, false)); + ASSERT_TRUE(config.InitializeFromConfigFiles(configRoot->c_str(), testExeFolder->c_str(), projectPath.c_str(), false, false)); ASSERT_EQ(m_absorber.m_numErrorsAbsorbed, 0); const AssetProcessor::RecognizerContainer& recogs = config.GetAssetRecognizerContainer(); @@ -627,11 +637,12 @@ TEST_F(PlatformConfigurationUnitTests, ReadCheckServer_FromConfig_Valid) using namespace AssetProcessor; const auto testExeFolder = AZ::IO::FileIOBase::GetInstance()->ResolvePath(TestAppRoot); + const AZ::IO::FixedMaxPath projectPath = (*testExeFolder) / EmptyDummyProjectName; auto configRoot = AZ::IO::FileIOBase::GetInstance()->ResolvePath("@exefolder@/testdata/config_regular"); ASSERT_TRUE(configRoot); UnitTestPlatformConfiguration config; m_absorber.Clear(); - ASSERT_TRUE(config.InitializeFromConfigFiles(configRoot->c_str(), testExeFolder->c_str(), EmptyDummyProjectName, false, false)); + ASSERT_TRUE(config.InitializeFromConfigFiles(configRoot->c_str(), testExeFolder->c_str(), projectPath.c_str(), false, false)); ASSERT_EQ(m_absorber.m_numErrorsAbsorbed, 0); const AssetProcessor::RecognizerContainer& recogs = config.GetAssetRecognizerContainer(); @@ -676,11 +687,12 @@ TEST_F(PlatformConfigurationUnitTests, Test_MetaFileTypes_AssetImporterExtension using namespace AssetProcessor; const auto testExeFolder = AZ::IO::FileIOBase::GetInstance()->ResolvePath(TestAppRoot); + const AZ::IO::FixedMaxPath projectPath = (*testExeFolder) / EmptyDummyProjectName; auto configRoot = AZ::IO::FileIOBase::GetInstance()->ResolvePath("@exefolder@/testdata/config_metadata"); ASSERT_TRUE(configRoot); UnitTestPlatformConfiguration config; m_absorber.Clear(); - ASSERT_FALSE(config.InitializeFromConfigFiles(configRoot->c_str(), testExeFolder->c_str(), EmptyDummyProjectName, false, false)); + ASSERT_FALSE(config.InitializeFromConfigFiles(configRoot->c_str(), testExeFolder->c_str(), projectPath.c_str(), false, false)); ASSERT_GT(m_absorber.m_numErrorsAbsorbed, 0); ASSERT_TRUE(config.MetaDataFileTypesCount() == 2); diff --git a/Code/Tools/AssetProcessor/native/utilities/ApplicationManagerBase.cpp b/Code/Tools/AssetProcessor/native/utilities/ApplicationManagerBase.cpp index 2c322da2f7..a9b3e1cbfb 100644 --- a/Code/Tools/AssetProcessor/native/utilities/ApplicationManagerBase.cpp +++ b/Code/Tools/AssetProcessor/native/utilities/ApplicationManagerBase.cpp @@ -454,6 +454,8 @@ void ApplicationManagerBase::InitFileMonitor() QObject::connect(newFolderWatch, &FolderWatchCallbackEx::fileModified, [this](QString path) { m_fileStateCache->UpdateFile(path); }); QObject::connect(newFolderWatch, &FolderWatchCallbackEx::fileRemoved, [this](QString path) { m_fileStateCache->RemoveFile(path); }); + QObject::connect(newFolderWatch, &FolderWatchCallbackEx::fileAdded, [](QString path) { AZ::Interface::Get()->FileAdded(path); }); + QObject::connect(newFolderWatch, &FolderWatchCallbackEx::fileAdded, m_fileProcessor.get(), &AssetProcessor::FileProcessor::AssessAddedFile); QObject::connect(newFolderWatch, &FolderWatchCallbackEx::fileRemoved, diff --git a/Code/Tools/AssetProcessor/native/utilities/PlatformConfiguration.cpp b/Code/Tools/AssetProcessor/native/utilities/PlatformConfiguration.cpp index bcadd0f103..7543e9ec8b 100644 --- a/Code/Tools/AssetProcessor/native/utilities/PlatformConfiguration.cpp +++ b/Code/Tools/AssetProcessor/native/utilities/PlatformConfiguration.cpp @@ -749,7 +749,7 @@ namespace AssetProcessor } AZStd::vector configFiles = AzToolsFramework::AssetUtils::GetConfigFiles(absoluteSystemRoot.toUtf8().constData(), - absoluteAssetRoot.toUtf8().constData(), projectPath.toUtf8().constData(), + projectPath.toUtf8().constData(), addPlatformConfigs, addGemsConfigs && !noGemScanFolders, settingsRegistry); // First Merge all Engine, Gem and Project specific AssetProcessor*Config.setreg/.inifiles @@ -1285,6 +1285,13 @@ namespace AssetProcessor return m_scanFolders[index]; } + const AssetProcessor::ScanFolderInfo& PlatformConfiguration::GetScanFolderAt(int index) const + { + Q_ASSERT(index >= 0); + Q_ASSERT(index < m_scanFolders.size()); + return m_scanFolders[index]; + } + void PlatformConfiguration::AddScanFolder(const AssetProcessor::ScanFolderInfo& source, bool isUnitTesting) { if (isUnitTesting) @@ -1436,7 +1443,10 @@ namespace AssetProcessor } QStringList PlatformConfiguration::FindWildcardMatches( - const QString& sourceFolder, QString relativeName, bool includeFolders, bool recursiveSearch) const + const QString& sourceFolder, + QString relativeName, + bool includeFolders, + bool recursiveSearch) const { if (relativeName.isEmpty()) { @@ -1469,6 +1479,67 @@ namespace AssetProcessor return returnList; } + QStringList PlatformConfiguration::FindWildcardMatches( + const QString& sourceFolder, + QString relativeName, + const AZStd::unordered_set& excludedFolders, + bool includeFolders, + bool recursiveSearch) const + { + if (relativeName.isEmpty()) + { + return QStringList(); + } + + QDir sourceFolderDir(sourceFolder); + + QString posixRelativeName = QDir::fromNativeSeparators(relativeName); + + QStringList returnList; + QRegExp nameMatch{ posixRelativeName, Qt::CaseInsensitive, QRegExp::Wildcard }; + AZStd::stack dirs; + dirs.push(sourceFolderDir.absolutePath()); + + while (!dirs.empty()) + { + QString absolutePath = dirs.top(); + dirs.pop(); + + if (excludedFolders.contains(absolutePath.toUtf8().constData())) + { + continue; + } + + QDirIterator dirIterator(absolutePath, QDir::AllEntries | QDir::NoSymLinks | QDir::NoDotAndDotDot); + + while (dirIterator.hasNext()) + { + dirIterator.next(); + + if (!dirIterator.fileInfo().isFile()) + { + if (recursiveSearch) + { + dirs.push(dirIterator.filePath()); + } + + if (!includeFolders) + { + continue; + } + } + + QString pathMatch{ sourceFolderDir.relativeFilePath(dirIterator.filePath()) }; + if (nameMatch.exactMatch(pathMatch)) + { + returnList.append(QDir::fromNativeSeparators(dirIterator.filePath())); + } + } + } + + return returnList; + } + const AssetProcessor::ScanFolderInfo* PlatformConfiguration::GetScanFolderForFile(const QString& fullFileName) const { QString normalized = AssetUtilities::NormalizeFilePath(fullFileName); diff --git a/Code/Tools/AssetProcessor/native/utilities/PlatformConfiguration.h b/Code/Tools/AssetProcessor/native/utilities/PlatformConfiguration.h index 2c04ca1fad..a57416da10 100644 --- a/Code/Tools/AssetProcessor/native/utilities/PlatformConfiguration.h +++ b/Code/Tools/AssetProcessor/native/utilities/PlatformConfiguration.h @@ -256,6 +256,9 @@ namespace AssetProcessor //! Retrieve the scan folder at a given index. AssetProcessor::ScanFolderInfo& GetScanFolderAt(int index); + //! Retrieve the scan folder at a given index. + const AssetProcessor::ScanFolderInfo& GetScanFolderAt(int index) const; + //! Manually add a scan folder. Also used for testing. void AddScanFolder(const AssetProcessor::ScanFolderInfo& source, bool isUnitTesting = false); @@ -298,7 +301,16 @@ namespace AssetProcessor QString FindFirstMatchingFile(QString relativeName) const; //! given a relative name with wildcard characters (* allowed) find a set of matching files or optionally folders - QStringList FindWildcardMatches(const QString& sourceFolder, QString relativeName, bool includeFolders = false, bool recursiveSearch = true) const; + QStringList FindWildcardMatches(const QString& sourceFolder, QString relativeName, bool includeFolders = false, + bool recursiveSearch = true) const; + + //! given a relative name with wildcard characters (* allowed) find a set of matching files or optionally folders + QStringList FindWildcardMatches( + const QString& sourceFolder, + QString relativeName, + const AZStd::unordered_set& excludedFolders, + bool includeFolders = false, + bool recursiveSearch = true) const; //! given a fileName (as a full path), return the database source name which includes the output prefix. //! diff --git a/Code/Tools/AssetProcessor/native/utilities/assetUtils.cpp b/Code/Tools/AssetProcessor/native/utilities/assetUtils.cpp index cacd6c4cc9..340f5343bd 100644 --- a/Code/Tools/AssetProcessor/native/utilities/assetUtils.cpp +++ b/Code/Tools/AssetProcessor/native/utilities/assetUtils.cpp @@ -1161,7 +1161,7 @@ namespace AssetUtilities { #ifndef AZ_TESTS_ENABLED // Only used for unit tests, speed is critical for GetFileHash. - AZ_UNUSED(hashMsDelay); + hashMsDelay = 0; #endif bool useFileHashing = ShouldUseFileHashing(); @@ -1170,10 +1170,10 @@ namespace AssetUtilities return 0; } + AZ::u64 hash = 0; if(!force) { auto* fileStateInterface = AZ::Interface::Get(); - AZ::u64 hash = 0; if (fileStateInterface && fileStateInterface->GetHash(filePath, &hash)) { @@ -1181,64 +1181,8 @@ namespace AssetUtilities } } - char buffer[FileHashBufferSize]; - - constexpr bool ErrorOnReadFailure = true; - AZ::IO::FileIOStream readStream(filePath, AZ::IO::OpenMode::ModeRead | AZ::IO::OpenMode::ModeBinary, ErrorOnReadFailure); - - if(readStream.IsOpen() && readStream.CanRead()) - { - AZ::IO::SizeType bytesRead; - - auto* state = XXH64_createState(); - - if(state == nullptr) - { - AZ_Assert(false, "Failed to create hash state"); - return 0; - } - - if (XXH64_reset(state, 0) == XXH_ERROR) - { - AZ_Assert(false, "Failed to reset hash state"); - return 0; - } - - do - { - // In edge cases where another process is writing to this file while this hashing is occuring and that file wasn't locked, - // the following read check can fail because it performs an end of file check, and asserts and shuts down if the read size - // was smaller than the buffer and the read is not at the end of the file. The logic used to check end of file internal to read - // will be out of date in the edge cases where another process is actively writing to this file while this hash is running. - // The stream's length ends up more accurate in this case, preventing this assert and shut down. - // One area this occurs is the navigation mesh file (mnmnavmission0.bai) that's temporarily created when exporting a level, - // the navigation system can still be writing to this file when hashing begins, causing the EoF marker to change. - AZ::IO::SizeType remainingToRead = AZStd::min(readStream.GetLength() - readStream.GetCurPos(), aznumeric_cast(AZ_ARRAY_SIZE(buffer))); - bytesRead = readStream.Read(remainingToRead, buffer); - - if(bytesReadOut) - { - *bytesReadOut += bytesRead; - } - - XXH64_update(state, buffer, bytesRead); -#ifdef AZ_TESTS_ENABLED - // Used by unit tests to force the race condition mentioned above, to verify the crash fix. - if(hashMsDelay > 0) - { - AZStd::this_thread::sleep_for(AZStd::chrono::milliseconds(hashMsDelay)); - } -#endif - - } while (bytesRead > 0); - - auto hash = XXH64_digest(state); - - XXH64_freeState(state); - - return hash; - } - return 0; + hash = AssetBuilderSDK::GetFileHash(filePath, bytesReadOut, hashMsDelay); + return hash; } AZ::u64 AdjustTimestamp(QDateTime timestamp) diff --git a/Code/Tools/AssetProcessor/native/utilities/assetUtils.h b/Code/Tools/AssetProcessor/native/utilities/assetUtils.h index 2145c3e0e6..46ec5d6145 100644 --- a/Code/Tools/AssetProcessor/native/utilities/assetUtils.h +++ b/Code/Tools/AssetProcessor/native/utilities/assetUtils.h @@ -238,7 +238,6 @@ namespace AssetUtilities // hashMsDelay is only for automated tests to test that writing to a file while it's hashing does not cause a crash. // hashMsDelay is not used in non-unit test builds. AZ::u64 GetFileHash(const char* filePath, bool force = false, AZ::IO::SizeType* bytesReadOut = nullptr, int hashMsDelay = 0); - inline constexpr AZ::u64 FileHashBufferSize = 1024 * 64; //! Adjusts a timestamp to fix timezone settings and account for any precision adjustment needed AZ::u64 AdjustTimestamp(QDateTime timestamp); diff --git a/Code/Tools/ProjectManager/Platform/Linux/ProjectBuilderWorker_linux.cpp b/Code/Tools/ProjectManager/Platform/Linux/ProjectBuilderWorker_linux.cpp index 2987fc4dc2..fdeaef93bb 100644 --- a/Code/Tools/ProjectManager/Platform/Linux/ProjectBuilderWorker_linux.cpp +++ b/Code/Tools/ProjectManager/Platform/Linux/ProjectBuilderWorker_linux.cpp @@ -23,25 +23,11 @@ namespace O3DE::ProjectManager QString cmakeGenerator = (whichNinjaResult.IsSuccess()) ? "Ninja Multi-Config" : "Unix Makefiles"; bool compileProfileOnBuild = (whichNinjaResult.IsSuccess()); - // On Linux the default compiler is gcc. For O3DE, it is clang, so we need to specify the version of clang that is detected - // in order to get the compiler option. - auto compilerOptionResult = ProjectUtils::FindSupportedCompilerForPlatform(); - if (!compilerOptionResult.IsSuccess()) - { - return AZ::Failure(compilerOptionResult.GetError()); - } - auto clangCompilers = compilerOptionResult.GetValue().split('|'); - AZ_Assert(clangCompilers.length()==2, "Invalid clang compiler pair specification"); - - QString clangCompilerOption = clangCompilers[0]; - QString clangPPCompilerOption = clangCompilers[1]; QString targetBuildPath = QDir(m_projectInfo.m_path).filePath(ProjectBuildPathPostfix); QStringList generateProjectArgs = QStringList{ProjectCMakeCommand, "-B", ProjectBuildPathPostfix, "-S", ".", QString("-G%1").arg(cmakeGenerator), - QString("-DCMAKE_C_COMPILER=").append(clangCompilerOption), - QString("-DCMAKE_CXX_COMPILER=").append(clangPPCompilerOption), QString("-DLY_3RDPARTY_PATH=").append(thirdPartyPath)}; if (!compileProfileOnBuild) { diff --git a/Code/Tools/ProjectManager/Platform/Linux/ProjectManager_Traits_Linux.h b/Code/Tools/ProjectManager/Platform/Linux/ProjectManager_Traits_Linux.h index 7c0543361f..d7edcfcf12 100644 --- a/Code/Tools/ProjectManager/Platform/Linux/ProjectManager_Traits_Linux.h +++ b/Code/Tools/ProjectManager/Platform/Linux/ProjectManager_Traits_Linux.h @@ -9,3 +9,4 @@ #pragma once #define AZ_TRAIT_PROJECT_MANAGER_CUSTOM_TITLEBAR false +#define AZ_TRAIT_PROJECT_MANAGER_CREATE_DESKTOP_SHORTCUT false diff --git a/Code/Tools/ProjectManager/Platform/Linux/ProjectUtils_linux.cpp b/Code/Tools/ProjectManager/Platform/Linux/ProjectUtils_linux.cpp index e901d807b4..a7bd2dae08 100644 --- a/Code/Tools/ProjectManager/Platform/Linux/ProjectUtils_linux.cpp +++ b/Code/Tools/ProjectManager/Platform/Linux/ProjectUtils_linux.cpp @@ -17,13 +17,11 @@ namespace O3DE::ProjectManager namespace ProjectUtils { // The list of clang C/C++ compiler command lines to validate on the host Linux system - const QStringList SupportedClangCommands = {"clang-12|clang++-12"}; + const QStringList SupportedClangVersions = {"13", "12", "11", "10", "9", "8", "7", "6.0"}; AZ::Outcome GetCommandLineProcessEnvironment() { QProcessEnvironment currentEnvironment(QProcessEnvironment::systemEnvironment()); - currentEnvironment.insert("CC", "clang-12"); - currentEnvironment.insert("CXX", "clang++-12"); return AZ::Success(currentEnvironment); } @@ -39,16 +37,13 @@ namespace O3DE::ProjectManager } // Look for the first compatible version of clang. The list below will contain the known clang compilers that have been tested for O3DE. - for (const QString& supportClangCommand : SupportedClangCommands) + for (const QString& supportClangVersion : SupportedClangVersions) { - auto clangCompilers = supportClangCommand.split('|'); - AZ_Assert(clangCompilers.length()==2, "Invalid clang compiler pair specification"); - - auto whichClangResult = ProjectUtils::ExecuteCommandResult("which", QStringList{clangCompilers[0]}, QProcessEnvironment::systemEnvironment()); - auto whichClangPPResult = ProjectUtils::ExecuteCommandResult("which", QStringList{clangCompilers[1]}, QProcessEnvironment::systemEnvironment()); + auto whichClangResult = ProjectUtils::ExecuteCommandResult("which", QStringList{QString("clang-%1").arg(supportClangVersion)}, QProcessEnvironment::systemEnvironment()); + auto whichClangPPResult = ProjectUtils::ExecuteCommandResult("which", QStringList{QString("clang++-%1").arg(supportClangVersion)}, QProcessEnvironment::systemEnvironment()); if (whichClangResult.IsSuccess() && whichClangPPResult.IsSuccess()) { - return AZ::Success(supportClangCommand); + return AZ::Success(QString("clang-%1").arg(supportClangVersion)); } } return AZ::Failure(QObject::tr("Clang not found.

" @@ -101,5 +96,10 @@ namespace O3DE::ProjectManager { return AZ::Utils::GetExecutableDirectory(); } + + AZ::Outcome CreateDesktopShortcut([[maybe_unused]] const QString& filename, [[maybe_unused]] const QString& targetPath, [[maybe_unused]] const QStringList& arguments) + { + return AZ::Failure(QObject::tr("Creating desktop shortcuts functionality not implemented for this platform yet.")); + } } // namespace ProjectUtils } // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Platform/Mac/ProjectManager_Traits_Mac.h b/Code/Tools/ProjectManager/Platform/Mac/ProjectManager_Traits_Mac.h index 7c0543361f..d7edcfcf12 100644 --- a/Code/Tools/ProjectManager/Platform/Mac/ProjectManager_Traits_Mac.h +++ b/Code/Tools/ProjectManager/Platform/Mac/ProjectManager_Traits_Mac.h @@ -9,3 +9,4 @@ #pragma once #define AZ_TRAIT_PROJECT_MANAGER_CUSTOM_TITLEBAR false +#define AZ_TRAIT_PROJECT_MANAGER_CREATE_DESKTOP_SHORTCUT false diff --git a/Code/Tools/ProjectManager/Platform/Mac/ProjectUtils_mac.cpp b/Code/Tools/ProjectManager/Platform/Mac/ProjectUtils_mac.cpp index b768200398..62011bf04b 100644 --- a/Code/Tools/ProjectManager/Platform/Mac/ProjectUtils_mac.cpp +++ b/Code/Tools/ProjectManager/Platform/Mac/ProjectUtils_mac.cpp @@ -137,5 +137,10 @@ namespace O3DE::ProjectManager return editorPath; } + + AZ::Outcome CreateDesktopShortcut([[maybe_unused]] const QString& filename, [[maybe_unused]] const QString& targetPath, [[maybe_unused]] const QStringList& arguments) + { + return AZ::Failure(QObject::tr("Creating desktop shortcuts functionality not implemented for this platform yet.")); + } } // namespace ProjectUtils } // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Platform/Windows/ProjectManager_Traits_Windows.h b/Code/Tools/ProjectManager/Platform/Windows/ProjectManager_Traits_Windows.h index e6422b5a77..9e4d29b58f 100644 --- a/Code/Tools/ProjectManager/Platform/Windows/ProjectManager_Traits_Windows.h +++ b/Code/Tools/ProjectManager/Platform/Windows/ProjectManager_Traits_Windows.h @@ -9,3 +9,4 @@ #pragma once #define AZ_TRAIT_PROJECT_MANAGER_CUSTOM_TITLEBAR true +#define AZ_TRAIT_PROJECT_MANAGER_CREATE_DESKTOP_SHORTCUT true diff --git a/Code/Tools/ProjectManager/Platform/Windows/ProjectUtils_windows.cpp b/Code/Tools/ProjectManager/Platform/Windows/ProjectUtils_windows.cpp index 871f8e9567..d08da1d5e1 100644 --- a/Code/Tools/ProjectManager/Platform/Windows/ProjectUtils_windows.cpp +++ b/Code/Tools/ProjectManager/Platform/Windows/ProjectUtils_windows.cpp @@ -13,6 +13,7 @@ #include #include #include +#include #include @@ -146,5 +147,26 @@ namespace O3DE::ProjectManager { return AZ::Utils::GetExecutableDirectory(); } + + AZ::Outcome CreateDesktopShortcut(const QString& filename, const QString& targetPath, const QStringList& arguments) + { + const QString cmd{"powershell.exe"}; + const QString desktopPath = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation); + const QString shortcutPath = QString("%1/%2.lnk").arg(desktopPath).arg(filename); + const QString arg = QString("$s=(New-Object -COM WScript.Shell).CreateShortcut('%1');$s.TargetPath='%2';$s.Arguments='%3';$s.Save();") + .arg(shortcutPath) + .arg(targetPath) + .arg(arguments.join(' ')); + auto createShortcutResult = ExecuteCommandResult(cmd, QStringList{"-Command", arg}, QProcessEnvironment::systemEnvironment()); + if (!createShortcutResult.IsSuccess()) + { + return AZ::Failure(QObject::tr("Failed to create desktop shortcut %1

" + "Please verify you have permission to create files at the specified location.

%2") + .arg(shortcutPath) + .arg(createShortcutResult.GetError())); + } + + return AZ::Success(QObject::tr("Desktop shortcut created at
%2").arg(desktopPath).arg(shortcutPath)); + } } // namespace ProjectUtils } // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Resources/Backgrounds/DefaultBackground.jpg b/Code/Tools/ProjectManager/Resources/Backgrounds/DefaultBackground.jpg index 3af15393c4..0d2ec8a301 100644 --- a/Code/Tools/ProjectManager/Resources/Backgrounds/DefaultBackground.jpg +++ b/Code/Tools/ProjectManager/Resources/Backgrounds/DefaultBackground.jpg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:342c3eaccf68a178dfd8c2b1792a93a8c9197c8184dca11bf90706d7481df087 -size 1611268 +oid sha256:e9ad0383f3b917fa7f4efa307a8e109a70bb5f66deb197189d013f60eb8dc32c +size 1010250 diff --git a/Code/Tools/ProjectManager/Resources/Backgrounds/FtueBackground.jpg b/Code/Tools/ProjectManager/Resources/Backgrounds/FtueBackground.jpg index 44291a8b1d..258dc62429 100644 --- a/Code/Tools/ProjectManager/Resources/Backgrounds/FtueBackground.jpg +++ b/Code/Tools/ProjectManager/Resources/Backgrounds/FtueBackground.jpg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:797794816e4b1702f1ae1f32b408c95c79eb1f8a95aba43cfad9cccc181b0bda -size 1135182 +oid sha256:84aab95ec8a5e3ba6ecb3aff1a814afc3171a937aa658decd18c2740623bd172 +size 984146 diff --git a/Code/Tools/ProjectManager/Resources/ProjectManager.qrc b/Code/Tools/ProjectManager/Resources/ProjectManager.qrc index 8dd7e4c9b5..2260ae62b9 100644 --- a/Code/Tools/ProjectManager/Resources/ProjectManager.qrc +++ b/Code/Tools/ProjectManager/Resources/ProjectManager.qrc @@ -41,5 +41,6 @@ Download.svg in_progress.gif gem.svg + checkmark.svg diff --git a/Code/Tools/ProjectManager/Resources/ProjectManager.qss b/Code/Tools/ProjectManager/Resources/ProjectManager.qss index d3ec066be7..426f409581 100644 --- a/Code/Tools/ProjectManager/Resources/ProjectManager.qss +++ b/Code/Tools/ProjectManager/Resources/ProjectManager.qss @@ -563,6 +563,52 @@ QProgressBar::chunk { margin-top:5px; } +#gemCatalogUpdateGemButton, +#gemCatalogUninstallGemButton +{ + qproperty-flat: true; + min-height:24px; + max-height:24px; + border-radius: 3px; + text-align:center; + font-size:12px; + font-weight:600; +} + +#gemCatalogUpdateGemButton { + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #888888, stop: 1.0 #555555); +} +#gemCatalogUpdateGemButton:hover { + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #999999, stop: 1.0 #666666); +} +#gemCatalogUpdateGemButton:pressed { + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #555555, stop: 1.0 #777777); +} + +#footer > #gemCatalogUninstallGemButton, +#gemCatalogUninstallGemButton { + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #E32C27, stop: 1.0 #951D21); +} +#footer > #gemCatalogUninstallGemButton:hover, +#gemCatalogUninstallGemButton:hover { + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #FD3129, stop: 1.0 #AF2221); +} +#footer > #gemCatalogUninstallGemButton:pressed, +#gemCatalogUninstallGemButton:pressed { + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #951D1F, stop: 1.0 #C92724); +} + +#gemCatalogDialogSubTitle { + font-size:14px; + font-weight:600; +} + /************** Filter Tag widget **************/ #FilterTagWidgetTextLabel { diff --git a/Code/Tools/ProjectManager/Resources/checkmark.svg b/Code/Tools/ProjectManager/Resources/checkmark.svg new file mode 100644 index 0000000000..d612b35370 --- /dev/null +++ b/Code/Tools/ProjectManager/Resources/checkmark.svg @@ -0,0 +1,12 @@ + + + Icons / Hub / Download Copy 5 + + + + + + + + + diff --git a/Code/Tools/ProjectManager/Source/CreateProjectCtrl.cpp b/Code/Tools/ProjectManager/Source/CreateProjectCtrl.cpp index 6b19e839d7..205395c935 100644 --- a/Code/Tools/ProjectManager/Source/CreateProjectCtrl.cpp +++ b/Code/Tools/ProjectManager/Source/CreateProjectCtrl.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include diff --git a/Code/Tools/ProjectManager/Source/DownloadController.cpp b/Code/Tools/ProjectManager/Source/DownloadController.cpp index d30e1bbc7c..9b64c5e276 100644 --- a/Code/Tools/ProjectManager/Source/DownloadController.cpp +++ b/Code/Tools/ProjectManager/Source/DownloadController.cpp @@ -18,7 +18,6 @@ namespace O3DE::ProjectManager { DownloadController::DownloadController(QWidget* parent) : QObject() - , m_lastProgress(0) , m_parent(parent) { m_worker = new DownloadWorker(); @@ -41,9 +40,11 @@ namespace O3DE::ProjectManager void DownloadController::AddGemDownload(const QString& gemName) { m_gemNames.push_back(gemName); + emit GemDownloadAdded(gemName); + if (m_gemNames.size() == 1) { - m_worker->SetGemToDownload(m_gemNames[0], false); + m_worker->SetGemToDownload(m_gemNames.front(), false); m_workerThread.start(); } } @@ -62,29 +63,42 @@ namespace O3DE::ProjectManager else { m_gemNames.erase(findResult); + emit GemDownloadRemoved(gemName); } } } - void DownloadController::UpdateUIProgress(int progress) + void DownloadController::UpdateUIProgress(int bytesDownloaded, int totalBytes) { - m_lastProgress = progress; - emit GemDownloadProgress(progress); + emit GemDownloadProgress(m_gemNames.front(), bytesDownloaded, totalBytes); } - void DownloadController::HandleResults(const QString& result) + void DownloadController::HandleResults(const QString& result, const QString& detailedError) { bool succeeded = true; if (!result.isEmpty()) { - QMessageBox::critical(nullptr, tr("Gem download"), result); + if (!detailedError.isEmpty()) + { + QMessageBox gemDownloadError; + gemDownloadError.setIcon(QMessageBox::Critical); + gemDownloadError.setWindowTitle(tr("Gem download")); + gemDownloadError.setText(result); + gemDownloadError.setDetailedText(detailedError); + gemDownloadError.exec(); + } + else + { + QMessageBox::critical(nullptr, tr("Gem download"), result); + } succeeded = false; } QString gemName = m_gemNames.front(); m_gemNames.erase(m_gemNames.begin()); emit Done(gemName, succeeded); + emit GemDownloadRemoved(gemName); if (!m_gemNames.empty()) { diff --git a/Code/Tools/ProjectManager/Source/DownloadController.h b/Code/Tools/ProjectManager/Source/DownloadController.h index 5b2d230379..5e637971e9 100644 --- a/Code/Tools/ProjectManager/Source/DownloadController.h +++ b/Code/Tools/ProjectManager/Source/DownloadController.h @@ -53,20 +53,20 @@ namespace O3DE::ProjectManager } } public slots: - void UpdateUIProgress(int progress); - void HandleResults(const QString& result); + void UpdateUIProgress(int bytesDownloaded, int totalBytes); + void HandleResults(const QString& result, const QString& detailedError); signals: void StartGemDownload(const QString& gemName); void Done(const QString& gemName, bool success = true); - void GemDownloadProgress(int percentage); + void GemDownloadAdded(const QString& gemName); + void GemDownloadRemoved(const QString& gemName); + void GemDownloadProgress(const QString& gemName, int bytesDownloaded, int totalBytes); private: DownloadWorker* m_worker; QThread m_workerThread; QWidget* m_parent; AZStd::vector m_gemNames; - - int m_lastProgress; }; } // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Source/DownloadWorker.cpp b/Code/Tools/ProjectManager/Source/DownloadWorker.cpp index 9bda1b34cc..e58c41c89e 100644 --- a/Code/Tools/ProjectManager/Source/DownloadWorker.cpp +++ b/Code/Tools/ProjectManager/Source/DownloadWorker.cpp @@ -20,19 +20,20 @@ namespace O3DE::ProjectManager void DownloadWorker::StartDownload() { - auto gemDownloadProgress = [=](int downloadProgress) + auto gemDownloadProgress = [=](int bytesDownloaded, int totalBytes) { - m_downloadProgress = downloadProgress; - emit UpdateProgress(downloadProgress); + emit UpdateProgress(bytesDownloaded, totalBytes); }; - AZ::Outcome gemInfoResult = PythonBindingsInterface::Get()->DownloadGem(m_gemName, gemDownloadProgress); + AZ::Outcome> gemInfoResult = + PythonBindingsInterface::Get()->DownloadGem(m_gemName, gemDownloadProgress, /*force*/true); + if (gemInfoResult.IsSuccess()) { - emit Done(""); + emit Done("", ""); } else { - emit Done(tr("Gem download failed")); + emit Done(gemInfoResult.GetError().first.c_str(), gemInfoResult.GetError().second.c_str()); } } diff --git a/Code/Tools/ProjectManager/Source/DownloadWorker.h b/Code/Tools/ProjectManager/Source/DownloadWorker.h index 316a730a78..d33de7bacc 100644 --- a/Code/Tools/ProjectManager/Source/DownloadWorker.h +++ b/Code/Tools/ProjectManager/Source/DownloadWorker.h @@ -31,12 +31,11 @@ namespace O3DE::ProjectManager void SetGemToDownload(const QString& gemName, bool downloadNow = true); signals: - void UpdateProgress(int progress); - void Done(QString result = ""); + void UpdateProgress(int bytesDownloaded, int totalBytes); + void Done(QString result = "", QString detailedResult = ""); private: QString m_gemName; - int m_downloadProgress; }; } // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Source/EngineScreenCtrl.cpp b/Code/Tools/ProjectManager/Source/EngineScreenCtrl.cpp index 9d9110922f..1f41acd3d1 100644 --- a/Code/Tools/ProjectManager/Source/EngineScreenCtrl.cpp +++ b/Code/Tools/ProjectManager/Source/EngineScreenCtrl.cpp @@ -72,12 +72,7 @@ namespace O3DE::ProjectManager bool EngineScreenCtrl::ContainsScreen(ProjectManagerScreen screen) { - if (screen == m_engineSettingsScreen->GetScreenEnum() || screen == m_gemRepoScreen->GetScreenEnum()) - { - return true; - } - - return false; + return screen == m_engineSettingsScreen->GetScreenEnum() || screen == m_gemRepoScreen->GetScreenEnum(); } void EngineScreenCtrl::NotifyCurrentScreen() diff --git a/Code/Tools/ProjectManager/Source/GemCatalog/GemCatalogHeaderWidget.cpp b/Code/Tools/ProjectManager/Source/GemCatalog/GemCatalogHeaderWidget.cpp index 8c875e4846..d6f4da0051 100644 --- a/Code/Tools/ProjectManager/Source/GemCatalog/GemCatalogHeaderWidget.cpp +++ b/Code/Tools/ProjectManager/Source/GemCatalog/GemCatalogHeaderWidget.cpp @@ -7,29 +7,39 @@ */ #include +#include + #include + #include #include #include #include #include -#include #include +#include +#include +#include +#include namespace O3DE::ProjectManager { - CartOverlayWidget::CartOverlayWidget(GemModel* gemModel, DownloadController* downloadController, QWidget* parent) - : QWidget(parent) + GemCartWidget::GemCartWidget(GemModel* gemModel, DownloadController* downloadController, QWidget* parent) + : QScrollArea(parent) , m_gemModel(gemModel) , m_downloadController(downloadController) { setObjectName("GemCatalogCart"); + setWidgetResizable(true); + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); m_layout = new QVBoxLayout(); m_layout->setSpacing(0); m_layout->setMargin(5); m_layout->setAlignment(Qt::AlignTop); setLayout(m_layout); + setMinimumHeight(400); QHBoxLayout* hLayout = new QHBoxLayout(); @@ -115,11 +125,15 @@ namespace O3DE::ProjectManager } return dependencies; }); - - setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog); } - void CartOverlayWidget::CreateGemSection(const QString& singularTitle, const QString& pluralTitle, GetTagIndicesCallback getTagIndices) + GemCartWidget::~GemCartWidget() + { + // disconnect from all download controller signals + disconnect(m_downloadController, nullptr, this, nullptr); + } + + void GemCartWidget::CreateGemSection(const QString& singularTitle, const QString& pluralTitle, GetTagIndicesCallback getTagIndices) { QWidget* widget = new QWidget(); widget->setFixedWidth(s_width); @@ -155,20 +169,20 @@ namespace O3DE::ProjectManager update(); } - void CartOverlayWidget::OnCancelDownloadActivated(const QString& gemName) + void GemCartWidget::OnCancelDownloadActivated(const QString& gemName) { m_downloadController->CancelGemDownload(gemName); } - void CartOverlayWidget::CreateDownloadSection() + void GemCartWidget::CreateDownloadSection() { - QWidget* widget = new QWidget(); - widget->setFixedWidth(s_width); - m_layout->addWidget(widget); + m_downloadSectionWidget = new QWidget(); + m_downloadSectionWidget->setFixedWidth(s_width); + m_layout->addWidget(m_downloadSectionWidget); QVBoxLayout* layout = new QVBoxLayout(); layout->setAlignment(Qt::AlignTop); - widget->setLayout(layout); + m_downloadSectionWidget->setLayout(layout); QLabel* titleLabel = new QLabel(); titleLabel->setObjectName("GemCatalogCartOverlaySectionLabel"); @@ -187,91 +201,135 @@ namespace O3DE::ProjectManager QLabel* processingQueueLabel = new QLabel("Processing Queue"); gemDownloadLayout->addWidget(processingQueueLabel); - QWidget* downloadingItemWidget = new QWidget(); - downloadingItemWidget->setObjectName("GemCatalogCartOverlayGemDownloadBG"); - gemDownloadLayout->addWidget(downloadingItemWidget); + m_downloadingListWidget = new QWidget(); + m_downloadingListWidget->setObjectName("GemCatalogCartOverlayGemDownloadBG"); + gemDownloadLayout->addWidget(m_downloadingListWidget); QVBoxLayout* downloadingItemLayout = new QVBoxLayout(); downloadingItemLayout->setAlignment(Qt::AlignTop); - downloadingItemWidget->setLayout(downloadingItemLayout); + m_downloadingListWidget->setLayout(downloadingItemLayout); - auto update = [=](int downloadProgress) + QLabel* downloadsInProgessLabel = new QLabel(""); + downloadsInProgessLabel->setObjectName("NumDownloadsInProgressLabel"); + downloadingItemLayout->addWidget(downloadsInProgessLabel); + + if (m_downloadController->IsDownloadQueueEmpty()) { - if (m_downloadController->IsDownloadQueueEmpty()) + m_downloadSectionWidget->hide(); + } + else + { + // Setup gem download rows for gems that are already in the queue + const AZStd::vector& downloadQueue = m_downloadController->GetDownloadQueue(); + + for (const QString& gemName : downloadQueue) { - widget->hide(); + GemDownloadAdded(gemName); + } + } + + // connect to download controller data changed + connect(m_downloadController, &DownloadController::GemDownloadAdded, this, &GemCartWidget::GemDownloadAdded); + connect(m_downloadController, &DownloadController::GemDownloadRemoved, this, &GemCartWidget::GemDownloadRemoved); + connect(m_downloadController, &DownloadController::GemDownloadProgress, this, &GemCartWidget::GemDownloadProgress); + } + + void GemCartWidget::GemDownloadAdded(const QString& gemName) + { + // Containing widget for the current download item + QWidget* newGemDownloadWidget = new QWidget(); + newGemDownloadWidget->setObjectName(gemName); + QVBoxLayout* downloadingGemLayout = new QVBoxLayout(newGemDownloadWidget); + newGemDownloadWidget->setLayout(downloadingGemLayout); + + // Gem name, progress string, cancel + QHBoxLayout* nameProgressLayout = new QHBoxLayout(newGemDownloadWidget); + TagWidget* newTag = new TagWidget({gemName, gemName}, newGemDownloadWidget); + nameProgressLayout->addWidget(newTag); + QLabel* progress = new QLabel(tr("Queued"), newGemDownloadWidget); + progress->setObjectName("DownloadProgressLabel"); + nameProgressLayout->addWidget(progress); + nameProgressLayout->addStretch(); + QLabel* cancelText = new QLabel(tr("Cancel").arg(gemName), newGemDownloadWidget); + cancelText->setTextInteractionFlags(Qt::LinksAccessibleByMouse); + connect(cancelText, &QLabel::linkActivated, this, &GemCartWidget::OnCancelDownloadActivated); + nameProgressLayout->addWidget(cancelText); + downloadingGemLayout->addLayout(nameProgressLayout); + + // Progress bar + QProgressBar* downloadProgessBar = new QProgressBar(newGemDownloadWidget); + downloadProgessBar->setObjectName("DownloadProgressBar"); + downloadingGemLayout->addWidget(downloadProgessBar); + downloadProgessBar->setValue(0); + + m_downloadingListWidget->layout()->addWidget(newGemDownloadWidget); + + const AZStd::vector& downloadQueue = m_downloadController->GetDownloadQueue(); + QLabel* numDownloads = m_downloadingListWidget->findChild("NumDownloadsInProgressLabel"); + numDownloads->setText(QString("%1 %2") + .arg(downloadQueue.size()) + .arg(downloadQueue.size() == 1 ? tr("download in progress...") : tr("downloads in progress..."))); + + m_downloadingListWidget->show(); + } + + void GemCartWidget::GemDownloadRemoved(const QString& gemName) + { + QWidget* gemToRemove = m_downloadingListWidget->findChild(gemName); + if (gemToRemove) + { + gemToRemove->deleteLater(); + } + + if (m_downloadController->IsDownloadQueueEmpty()) + { + m_downloadSectionWidget->hide(); + } + else + { + size_t downloadQueueSize = m_downloadController->GetDownloadQueue().size(); + QLabel* numDownloads = m_downloadingListWidget->findChild("NumDownloadsInProgressLabel"); + numDownloads->setText(QString("%1 %2") + .arg(downloadQueueSize) + .arg(downloadQueueSize == 1 ? tr("download in progress...") : tr("downloads in progress..."))); + } + } + + void GemCartWidget::GemDownloadProgress(const QString& gemName, int bytesDownloaded, int totalBytes) + { + QWidget* gemToUpdate = m_downloadingListWidget->findChild(gemName); + if (gemToUpdate) + { + QLabel* progressLabel = gemToUpdate->findChild("DownloadProgressLabel"); + QProgressBar* progressBar = gemToUpdate->findChild("DownloadProgressBar"); + + // totalBytes can be 0 if the server does not return a content-length for the object + if (totalBytes != 0) + { + int downloadPercentage = static_cast((bytesDownloaded / static_cast(totalBytes)) * 100); + if (progressLabel) + { + progressLabel->setText(QString("%1%").arg(downloadPercentage)); + } + if (progressBar) + { + progressBar->setValue(downloadPercentage); + } } else { - widget->setUpdatesEnabled(false); - // remove items - QLayoutItem* layoutItem = nullptr; - while ((layoutItem = downloadingItemLayout->takeAt(0)) != nullptr) + if (progressLabel) { - if (layoutItem->layout()) - { - // Gem info row - QLayoutItem* rowLayoutItem = nullptr; - while ((rowLayoutItem = layoutItem->layout()->takeAt(0)) != nullptr) - { - rowLayoutItem->widget()->deleteLater(); - } - layoutItem->layout()->deleteLater(); - } - if (layoutItem->widget()) - { - layoutItem->widget()->deleteLater(); - } + progressLabel->setText(QLocale::system().formattedDataSize(bytesDownloaded)); } - - // Setup gem download rows - const AZStd::vector& downloadQueue = m_downloadController->GetDownloadQueue(); - - QLabel* downloadsInProgessLabel = new QLabel(""); - downloadsInProgessLabel->setText( - QString("%1 %2").arg(downloadQueue.size()).arg(downloadQueue.size() == 1 ? tr("download in progress...") : tr("downloads in progress..."))); - downloadingItemLayout->addWidget(downloadsInProgessLabel); - - for (int downloadingGemNumber = 0; downloadingGemNumber < downloadQueue.size(); ++downloadingGemNumber) + if (progressBar) { - QHBoxLayout* nameProgressLayout = new QHBoxLayout(); - - const QString& gemName = downloadQueue[downloadingGemNumber]; - TagWidget* newTag = new TagWidget({gemName, gemName}); - nameProgressLayout->addWidget(newTag); - - QLabel* progress = new QLabel(downloadingGemNumber == 0? QString("%1%").arg(downloadProgress) : tr("Queued")); - nameProgressLayout->addWidget(progress); - - QSpacerItem* spacer = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum); - nameProgressLayout->addSpacerItem(spacer); - - QLabel* cancelText = new QLabel(QString("Cancel").arg(gemName)); - cancelText->setTextInteractionFlags(Qt::LinksAccessibleByMouse); - connect(cancelText, &QLabel::linkActivated, this, &CartOverlayWidget::OnCancelDownloadActivated); - nameProgressLayout->addWidget(cancelText); - downloadingItemLayout->addLayout(nameProgressLayout); - - QProgressBar* downloadProgessBar = new QProgressBar(); - downloadingItemLayout->addWidget(downloadProgessBar); - downloadProgessBar->setValue(downloadingGemNumber == 0 ? downloadProgress : 0); + progressBar->setRange(0, 0); } - - widget->setUpdatesEnabled(true); - widget->show(); } - }; - - auto downloadEnded = [=](const QString& /*gemName*/, bool /*success*/) - { - update(0); // update the list to remove the gem that has finished - }; - // connect to download controller data changed - connect(m_downloadController, &DownloadController::GemDownloadProgress, this, update); - connect(m_downloadController, &DownloadController::Done, this, downloadEnded); - update(0); + } } - QVector CartOverlayWidget::GetTagsFromModelIndices(const QVector& gems) const + QVector GemCartWidget::GetTagsFromModelIndices(const QVector& gems) const { QVector tags; tags.reserve(gems.size()); @@ -296,7 +354,7 @@ namespace O3DE::ProjectManager iconButton->setFocusPolicy(Qt::NoFocus); iconButton->setIcon(QIcon(":/Summary.svg")); iconButton->setFixedSize(s_iconSize, s_iconSize); - connect(iconButton, &QPushButton::clicked, this, &CartButton::ShowOverlay); + connect(iconButton, &QPushButton::clicked, this, &CartButton::ShowGemCart); m_layout->addWidget(iconButton); m_countLabel = new QLabel(); @@ -309,7 +367,7 @@ namespace O3DE::ProjectManager m_dropDownButton->setFocusPolicy(Qt::NoFocus); m_dropDownButton->setIcon(QIcon(":/CarrotArrowDown.svg")); m_dropDownButton->setFixedSize(s_arrowDownIconSize, s_arrowDownIconSize); - connect(m_dropDownButton, &QPushButton::clicked, this, &CartButton::ShowOverlay); + connect(m_dropDownButton, &QPushButton::clicked, this, &CartButton::ShowGemCart); m_layout->addWidget(m_dropDownButton); // Adjust the label text whenever the model gets updated. @@ -324,72 +382,69 @@ namespace O3DE::ProjectManager m_dropDownButton->setVisible(!toBeAdded.isEmpty() || !toBeRemoved.isEmpty()); // Automatically close the overlay window in case there are no gems to be activated or deactivated anymore. - if (m_cartOverlay && toBeAdded.isEmpty() && toBeRemoved.isEmpty()) + if (m_gemCart && toBeAdded.isEmpty() && toBeRemoved.isEmpty()) { - m_cartOverlay->deleteLater(); - m_cartOverlay = nullptr; + m_gemCart->deleteLater(); + m_gemCart = nullptr; } }); } void CartButton::mousePressEvent([[maybe_unused]] QMouseEvent* event) { - ShowOverlay(); + ShowGemCart(); } void CartButton::hideEvent(QHideEvent*) { - if (m_cartOverlay) + if (m_gemCart) { - m_cartOverlay->hide(); + m_gemCart->hide(); } } - void CartButton::ShowOverlay() + void CartButton::ShowGemCart() { const QVector toBeAdded = m_gemModel->GatherGemsToBeAdded(/*includeDependencies=*/true); const QVector toBeRemoved = m_gemModel->GatherGemsToBeRemoved(/*includeDependencies=*/true); - if (toBeAdded.isEmpty() && toBeRemoved.isEmpty()) + if (toBeAdded.isEmpty() && toBeRemoved.isEmpty() && m_downloadController->IsDownloadQueueEmpty()) { return; } - if (m_cartOverlay) + if (m_gemCart) { // Directly delete the former overlay before creating the new one. // Don't use deleteLater() here. This might overwrite the new overlay pointer // depending on the event queue. - delete m_cartOverlay; + delete m_gemCart; } - m_cartOverlay = new CartOverlayWidget(m_gemModel, m_downloadController, this); - connect(m_cartOverlay, &QWidget::destroyed, this, [=] + m_gemCart = new GemCartWidget(m_gemModel, m_downloadController, this); + connect(m_gemCart, &QWidget::destroyed, this, [=] { // Reset the overlay pointer on destruction to prevent dangling pointers. - m_cartOverlay = nullptr; + m_gemCart = nullptr; + // Tell header gem cart is no longer open + UpdateGemCart(nullptr); }); - m_cartOverlay->show(); + m_gemCart->show(); - const QPoint parentPos = m_dropDownButton->mapToParent(m_dropDownButton->pos()); - const QPoint globalPos = m_dropDownButton->mapToGlobal(m_dropDownButton->pos()); - const QPoint offset(-4, 10); - m_cartOverlay->setGeometry(globalPos.x() - parentPos.x() - m_cartOverlay->width() + width() + offset.x(), - globalPos.y() + offset.y(), - m_cartOverlay->width(), - m_cartOverlay->height()); + emit UpdateGemCart(m_gemCart); } CartButton::~CartButton() { // Make sure the overlay window is automatically closed in case the gem catalog is destroyed. - if (m_cartOverlay) + if (m_gemCart) { - m_cartOverlay->deleteLater(); + m_gemCart->deleteLater(); } } GemCatalogHeaderWidget::GemCatalogHeaderWidget(GemModel* gemModel, GemSortFilterProxyModel* filterProxyModel, DownloadController* downloadController, QWidget* parent) : QFrame(parent) + , m_downloadController(downloadController) { QHBoxLayout* hLayout = new QHBoxLayout(); hLayout->setAlignment(Qt::AlignLeft); @@ -416,8 +471,25 @@ namespace O3DE::ProjectManager hLayout->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Expanding)); hLayout->addSpacerItem(new QSpacerItem(75, 0, QSizePolicy::Fixed)); - CartButton* cartButton = new CartButton(gemModel, downloadController); - hLayout->addWidget(cartButton); + // spinner + m_downloadSpinnerMovie = new QMovie(":/in_progress.gif"); + m_downloadSpinner = new QLabel(this); + m_downloadSpinner->setScaledContents(true); + m_downloadSpinner->setMaximumSize(16, 16); + m_downloadSpinner->setMovie(m_downloadSpinnerMovie); + hLayout->addWidget(m_downloadSpinner); + hLayout->addSpacing(8); + + // downloading label + m_downloadLabel = new QLabel(tr("Downloading")); + hLayout->addWidget(m_downloadLabel); + m_downloadSpinner->hide(); + m_downloadLabel->hide(); + + hLayout->addSpacing(16); + + m_cartButton = new CartButton(gemModel, downloadController); + hLayout->addWidget(m_cartButton); hLayout->addSpacing(16); // Separating line @@ -429,6 +501,7 @@ namespace O3DE::ProjectManager hLayout->addSpacing(16); QMenu* gemMenu = new QMenu(this); + gemMenu->addAction( tr("Refresh"), [this]() { emit RefreshGems(); }); gemMenu->addAction( tr("Show Gem Repos"), [this]() { emit OpenGemsRepo(); }); gemMenu->addSeparator(); gemMenu->addAction( tr("Add Existing Gem"), [this]() { emit AddGem(); }); @@ -439,10 +512,78 @@ namespace O3DE::ProjectManager gemMenuButton->setIcon(QIcon(":/menu.svg")); gemMenuButton->setIconSize(QSize(36, 24)); hLayout->addWidget(gemMenuButton); + + connect(m_downloadController, &DownloadController::GemDownloadAdded, this, &GemCatalogHeaderWidget::GemDownloadAdded); + connect(m_downloadController, &DownloadController::GemDownloadRemoved, this, &GemCatalogHeaderWidget::GemDownloadRemoved); + + connect( + m_cartButton, &CartButton::UpdateGemCart, this, + [this](QWidget* gemCart) + { + GemCartShown(gemCart); + if (gemCart) + { + emit UpdateGemCart(gemCart); + } + }); + } + + void GemCatalogHeaderWidget::GemDownloadAdded(const QString& /*gemName*/) + { + m_downloadSpinner->show(); + m_downloadLabel->show(); + m_downloadSpinnerMovie->start(); + m_cartButton->ShowGemCart(); + } + + void GemCatalogHeaderWidget::GemDownloadRemoved(const QString& /*gemName*/) + { + if (m_downloadController->IsDownloadQueueEmpty()) + { + m_downloadSpinner->hide(); + m_downloadLabel->hide(); + m_downloadSpinnerMovie->stop(); + } + } + + void GemCatalogHeaderWidget::GemCartShown(bool state) + { + m_showGemCart = state; + repaint(); } void GemCatalogHeaderWidget::ReinitForProject() { m_filterLineEdit->setText({}); } + + void GemCatalogHeaderWidget::paintEvent([[maybe_unused]] QPaintEvent* event) + { + // Only show triangle when cart is shown + if (!m_showGemCart) + { + return; + } + + const QPoint buttonPos = m_cartButton->pos(); + const QSize buttonSize = m_cartButton->size(); + + // Draw isosceles triangle with top point touching bottom of cartButton + // Bottom aligned with header bottom and top of right panel + const QPoint topPoint(buttonPos.x() + buttonSize.width() / 2, buttonPos.y() + buttonSize.height()); + const QPoint bottomLeftPoint(topPoint.x() - 20, height()); + const QPoint bottomRightPoint(topPoint.x() + 20, height()); + + QPainterPath trianglePath; + trianglePath.moveTo(topPoint); + trianglePath.lineTo(bottomLeftPoint); + trianglePath.lineTo(bottomRightPoint); + trianglePath.lineTo(topPoint); + + QPainter painter(this); + painter.setRenderHint(QPainter::Antialiasing, true); + painter.setPen(Qt::NoPen); + painter.fillPath(trianglePath, QBrush(QColor("#555555"))); + } + } // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Source/GemCatalog/GemCatalogHeaderWidget.h b/Code/Tools/ProjectManager/Source/GemCatalog/GemCatalogHeaderWidget.h index 6da78cce7a..b749e9831d 100644 --- a/Code/Tools/ProjectManager/Source/GemCatalog/GemCatalogHeaderWidget.h +++ b/Code/Tools/ProjectManager/Source/GemCatalog/GemCatalogHeaderWidget.h @@ -14,8 +14,10 @@ #include #include #include -#include #include + +#include +#include #endif QT_FORWARD_DECLARE_CLASS(QPushButton) @@ -24,16 +26,23 @@ QT_FORWARD_DECLARE_CLASS(QVBoxLayout) QT_FORWARD_DECLARE_CLASS(QHBoxLayout) QT_FORWARD_DECLARE_CLASS(QHideEvent) QT_FORWARD_DECLARE_CLASS(QMoveEvent) +QT_FORWARD_DECLARE_CLASS(QMovie) namespace O3DE::ProjectManager { - class CartOverlayWidget - : public QWidget + class GemCartWidget + : public QScrollArea { Q_OBJECT // AUTOMOC public: - CartOverlayWidget(GemModel* gemModel, DownloadController* downloadController, QWidget* parent = nullptr); + GemCartWidget(GemModel* gemModel, DownloadController* downloadController, QWidget* parent = nullptr); + ~GemCartWidget(); + + public slots: + void GemDownloadAdded(const QString& gemName); + void GemDownloadRemoved(const QString& gemName); + void GemDownloadProgress(const QString& gemName, int bytesDownloaded, int totalBytes); private: QVector GetTagsFromModelIndices(const QVector& gems) const; @@ -47,6 +56,9 @@ namespace O3DE::ProjectManager GemModel* m_gemModel = nullptr; DownloadController* m_downloadController = nullptr; + QWidget* m_downloadSectionWidget = nullptr; + QWidget* m_downloadingListWidget = nullptr; + inline constexpr static int s_width = 240; }; @@ -58,7 +70,10 @@ namespace O3DE::ProjectManager public: CartButton(GemModel* gemModel, DownloadController* downloadController, QWidget* parent = nullptr); ~CartButton(); - void ShowOverlay(); + void ShowGemCart(); + + signals: + void UpdateGemCart(QWidget* gemCart); private: void mousePressEvent(QMouseEvent* event) override; @@ -68,7 +83,7 @@ namespace O3DE::ProjectManager QHBoxLayout* m_layout = nullptr; QLabel* m_countLabel = nullptr; QPushButton* m_dropDownButton = nullptr; - CartOverlayWidget* m_cartOverlay = nullptr; + GemCartWidget* m_gemCart = nullptr; DownloadController* m_downloadController = nullptr; inline constexpr static int s_iconSize = 24; @@ -86,12 +101,28 @@ namespace O3DE::ProjectManager void ReinitForProject(); + public slots: + void GemDownloadAdded(const QString& gemName); + void GemDownloadRemoved(const QString& gemName); + void GemCartShown(bool state = false); + signals: void AddGem(); void OpenGemsRepo(); + void RefreshGems(); + void UpdateGemCart(QWidget* gemCart); + + protected slots: + void paintEvent(QPaintEvent* event) override; private: AzQtComponents::SearchLineEdit* m_filterLineEdit = nullptr; inline constexpr static int s_height = 60; + DownloadController* m_downloadController = nullptr; + QLabel* m_downloadSpinner = nullptr; + QLabel* m_downloadLabel = nullptr; + QMovie* m_downloadSpinnerMovie = nullptr; + CartButton* m_cartButton = nullptr; + bool m_showGemCart = false; }; } // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Source/GemCatalog/GemCatalogScreen.cpp b/Code/Tools/ProjectManager/Source/GemCatalog/GemCatalogScreen.cpp index 79935ed235..1d4f354fb5 100644 --- a/Code/Tools/ProjectManager/Source/GemCatalog/GemCatalogScreen.cpp +++ b/Code/Tools/ProjectManager/Source/GemCatalog/GemCatalogScreen.cpp @@ -8,11 +8,20 @@ #include #include +#include +#include +#include +#include +#include #include #include #include #include +#include +#include #include +#include + #include #include #include @@ -24,6 +33,7 @@ #include #include #include +#include namespace O3DE::ProjectManager { @@ -47,8 +57,12 @@ namespace O3DE::ProjectManager vLayout->addWidget(m_headerWidget); connect(m_gemModel, &GemModel::gemStatusChanged, this, &GemCatalogScreen::OnGemStatusChanged); + connect(m_gemModel, &GemModel::dependencyGemStatusChanged, this, &GemCatalogScreen::OnDependencyGemStatusChanged); + connect(m_gemModel->GetSelectionModel(), &QItemSelectionModel::selectionChanged, this, [this]{ ShowInspector(); }); + connect(m_headerWidget, &GemCatalogHeaderWidget::RefreshGems, this, &GemCatalogScreen::Refresh); connect(m_headerWidget, &GemCatalogHeaderWidget::OpenGemsRepo, this, &GemCatalogScreen::HandleOpenGemRepo); connect(m_headerWidget, &GemCatalogHeaderWidget::AddGem, this, &GemCatalogScreen::OnAddGemClicked); + connect(m_headerWidget, &GemCatalogHeaderWidget::UpdateGemCart, this, &GemCatalogScreen::UpdateAndShowGemCart); connect(m_downloadController, &DownloadController::Done, this, &GemCatalogScreen::OnGemDownloadResult); QHBoxLayout* hLayout = new QHBoxLayout(); @@ -56,10 +70,15 @@ namespace O3DE::ProjectManager vLayout->addLayout(hLayout); m_gemListView = new GemListView(m_proxyModel, m_proxyModel->GetSelectionModel(), this); + + m_rightPanelStack = new QStackedWidget(this); + m_rightPanelStack->setFixedWidth(240); + m_gemInspector = new GemInspector(m_gemModel, this); - m_gemInspector->setFixedWidth(240); connect(m_gemInspector, &GemInspector::TagClicked, [=](const Tag& tag) { SelectGem(tag.id); }); + connect(m_gemInspector, &GemInspector::UpdateGem, this, &GemCatalogScreen::UpdateGem); + connect(m_gemInspector, &GemInspector::UninstallGem, this, &GemCatalogScreen::UninstallGem); QWidget* filterWidget = new QWidget(this); filterWidget->setFixedWidth(240); @@ -78,7 +97,9 @@ namespace O3DE::ProjectManager hLayout->addWidget(filterWidget); hLayout->addLayout(middleVLayout); - hLayout->addWidget(m_gemInspector); + + hLayout->addWidget(m_rightPanelStack); + m_rightPanelStack->addWidget(m_gemInspector); m_notificationsView = AZStd::make_unique(this, AZ_CRC("GemCatalogNotificationsView")); m_notificationsView->SetOffset(QPoint(10, 70)); @@ -90,9 +111,16 @@ namespace O3DE::ProjectManager m_projectPath = projectPath; m_gemModel->Clear(); m_gemsToRegisterWithProject.clear(); + + if (m_filterWidget) + { + // disconnect so we don't update the status filter for every gem we add + disconnect(m_gemModel, &GemModel::dataChanged, m_filterWidget, &GemFilterWidget::ResetGemStatusFilter); + } + FillModel(projectPath); - m_proxyModel->ResetFilters(); + m_proxyModel->ResetFilters(false); m_proxyModel->sort(/*column=*/0); if (m_filterWidget) @@ -111,9 +139,10 @@ namespace O3DE::ProjectManager // Select the first entry after everything got correctly sized QTimer::singleShot(200, [=]{ - QModelIndex firstModelIndex = m_gemListView->model()->index(0,0); - m_gemListView->selectionModel()->select(firstModelIndex, QItemSelectionModel::ClearAndSelect); - }); + QModelIndex firstModelIndex = m_gemModel->index(0, 0); + QModelIndex proxyIndex = m_proxyModel->mapFromSource(firstModelIndex); + m_proxyModel->GetSelectionModel()->setCurrentIndex(proxyIndex, QItemSelectionModel::ClearAndSelect); + }); } void GemCatalogScreen::OnAddGemClicked() @@ -173,7 +202,7 @@ namespace O3DE::ProjectManager } // add all the gem repos into the hash - const AZ::Outcome, AZStd::string>& allRepoGemInfosResult = PythonBindingsInterface::Get()->GetAllGemRepoGemsInfos(); + const AZ::Outcome, AZStd::string>& allRepoGemInfosResult = PythonBindingsInterface::Get()->GetGemInfosForAllRepos(); if (allRepoGemInfosResult.IsSuccess()) { const QVector& allRepoGemInfos = allRepoGemInfosResult.GetValue(); @@ -195,7 +224,7 @@ namespace O3DE::ProjectManager const bool gemFound = gemInfoHash.contains(gemName); if (!gemFound && !m_gemModel->IsAdded(index) && !m_gemModel->IsAddedDependency(index)) { - m_gemModel->removeRow(i); + m_gemModel->RemoveGem(index); } else { @@ -221,8 +250,11 @@ namespace O3DE::ProjectManager m_proxyModel->sort(/*column=*/0); // temporary, until we can refresh filter counts - m_proxyModel->ResetFilters(); + m_proxyModel->ResetFilters(false); m_filterWidget->ResetAllFilters(); + + // Reselect the same selection to proc UI updates + m_proxyModel->GetSelectionModel()->setCurrentIndex(m_proxyModel->GetSelectionModel()->currentIndex(), QItemSelectionModel::Select); } void GemCatalogScreen::OnGemStatusChanged(const QString& gemName, uint32_t numChangedDependencies) @@ -246,23 +278,25 @@ namespace O3DE::ProjectManager notification = GemModel::GetDisplayName(modelIndex); if (numChangedDependencies > 0) { - notification += " " + tr("and") + " "; + notification += tr(" and "); } - if (added && GemModel::GetDownloadStatus(modelIndex) == GemInfo::DownloadStatus::NotDownloaded) + if (added && (GemModel::GetDownloadStatus(modelIndex) == GemInfo::DownloadStatus::NotDownloaded) || + (GemModel::GetDownloadStatus(modelIndex) == GemInfo::DownloadStatus::DownloadFailed)) { m_downloadController->AddGemDownload(GemModel::GetName(modelIndex)); + GemModel::SetDownloadStatus(*m_gemModel, modelIndex, GemInfo::DownloadStatus::Downloading); } } - if (numChangedDependencies == 1 ) + if (numChangedDependencies == 1) { - notification += "1 Gem " + tr("dependency"); + notification += tr("1 Gem dependency"); } else if (numChangedDependencies > 1) { - notification += QString("%1 Gem ").arg(numChangedDependencies) + tr("dependencies"); + notification += tr("%1 Gem %2").arg(QString(numChangedDependencies), tr("dependencies")); } - notification += " " + (added ? tr("activated") : tr("deactivated")); + notification += (added ? tr(" activated") : tr(" deactivated")); AzQtComponents::ToastConfiguration toastConfiguration(AzQtComponents::ToastType::Custom, notification, ""); toastConfiguration.m_customIconImage = ":/gem.svg"; @@ -272,6 +306,18 @@ namespace O3DE::ProjectManager } } + void GemCatalogScreen::OnDependencyGemStatusChanged(const QString& gemName) + { + QModelIndex modelIndex = m_gemModel->FindIndexByNameString(gemName); + bool added = GemModel::IsAddedDependency(modelIndex); + if (added && (GemModel::GetDownloadStatus(modelIndex) == GemInfo::DownloadStatus::NotDownloaded) || + (GemModel::GetDownloadStatus(modelIndex) == GemInfo::DownloadStatus::DownloadFailed)) + { + m_downloadController->AddGemDownload(GemModel::GetName(modelIndex)); + GemModel::SetDownloadStatus(*m_gemModel, modelIndex, GemInfo::DownloadStatus::Downloading); + } + } + void GemCatalogScreen::SelectGem(const QString& gemName) { QModelIndex modelIndex = m_gemModel->FindIndexByNameString(gemName); @@ -282,8 +328,108 @@ namespace O3DE::ProjectManager } QModelIndex proxyIndex = m_proxyModel->mapFromSource(modelIndex); - m_proxyModel->GetSelectionModel()->select(proxyIndex, QItemSelectionModel::ClearAndSelect); + m_proxyModel->GetSelectionModel()->setCurrentIndex(proxyIndex, QItemSelectionModel::ClearAndSelect); m_gemListView->scrollTo(proxyIndex); + + ShowInspector(); + } + + void GemCatalogScreen::UpdateGem(const QModelIndex& modelIndex) + { + const QString selectedGemName = m_gemModel->GetName(modelIndex); + const QString selectedGemLastUpdate = m_gemModel->GetLastUpdated(modelIndex); + const QString selectedDisplayGemName = m_gemModel->GetDisplayName(modelIndex); + const QString selectedGemRepoUri = m_gemModel->GetRepoUri(modelIndex); + + // Refresh gem repo + if (!selectedGemRepoUri.isEmpty()) + { + AZ::Outcome refreshResult = PythonBindingsInterface::Get()->RefreshGemRepo(selectedGemRepoUri); + if (refreshResult.IsSuccess()) + { + Refresh(); + } + else + { + QMessageBox::critical( + this, tr("Operation failed"), + tr("Failed to refresh gem repository %1
Error:
%2").arg(selectedGemRepoUri, refreshResult.GetError().c_str())); + } + } + // If repo uri isn't specified warn user that repo might not be refreshed + else + { + int result = QMessageBox::warning( + this, tr("Gem Repository Unspecified"), + tr("The repo for %1 is unspecfied. Repository cannot be automatically refreshed. " + "Please ensure this gem's repo is refreshed before attempting to update.") + .arg(selectedDisplayGemName), + QMessageBox::Cancel, QMessageBox::Ok); + + // Allow user to cancel update to manually refresh repo + if (result != QMessageBox::Ok) + { + return; + } + } + + // Check if there is an update avaliable now that repo is refreshed + bool updateAvaliable = PythonBindingsInterface::Get()->IsGemUpdateAvaliable(selectedGemName, selectedGemLastUpdate); + + GemUpdateDialog* confirmUpdateDialog = new GemUpdateDialog(selectedGemName, updateAvaliable, this); + if (confirmUpdateDialog->exec() == QDialog::Accepted) + { + m_downloadController->AddGemDownload(selectedGemName); + } + } + + void GemCatalogScreen::UninstallGem(const QModelIndex& modelIndex) + { + const QString selectedDisplayGemName = m_gemModel->GetDisplayName(modelIndex); + + GemUninstallDialog* confirmUninstallDialog = new GemUninstallDialog(selectedDisplayGemName, this); + if (confirmUninstallDialog->exec() == QDialog::Accepted) + { + const QString selectedGemPath = m_gemModel->GetPath(modelIndex); + + const bool wasAdded = GemModel::WasPreviouslyAdded(modelIndex); + const bool wasAddedDependency = GemModel::WasPreviouslyAddedDependency(modelIndex); + + // Remove gem from gems to be added to update any dependencies + GemModel::SetIsAdded(*m_gemModel, modelIndex, false); + GemModel::DeactivateDependentGems(*m_gemModel, modelIndex); + + // Unregister the gem + auto unregisterResult = PythonBindingsInterface::Get()->UnregisterGem(selectedGemPath); + if (!unregisterResult) + { + QMessageBox::critical(this, tr("Failed to unregister gem"), unregisterResult.GetError().c_str()); + } + else + { + const QString selectedGemName = m_gemModel->GetName(modelIndex); + + // Remove gem from model + m_gemModel->RemoveGem(modelIndex); + + // Delete uninstalled gem directory + if (!ProjectUtils::DeleteProjectFiles(selectedGemPath, /*force*/true)) + { + QMessageBox::critical( + this, tr("Failed to remove gem directory"), tr("Could not delete gem directory at:
%1").arg(selectedGemPath)); + } + + // Show undownloaded remote gem again + Refresh(); + + // Select remote gem + QModelIndex remoteGemIndex = m_gemModel->FindIndexByNameString(selectedGemName); + GemModel::SetWasPreviouslyAdded(*m_gemModel, remoteGemIndex, wasAdded); + GemModel::SetWasPreviouslyAddedDependency(*m_gemModel, remoteGemIndex, wasAddedDependency); + QModelIndex proxyIndex = m_proxyModel->mapFromSource(remoteGemIndex); + m_proxyModel->GetSelectionModel()->setCurrentIndex(proxyIndex, QItemSelectionModel::ClearAndSelect); + } + } } void GemCatalogScreen::hideEvent(QHideEvent* event) @@ -324,7 +470,7 @@ namespace O3DE::ProjectManager m_gemModel->AddGem(gemInfo); } - const AZ::Outcome, AZStd::string>& allRepoGemInfosResult = PythonBindingsInterface::Get()->GetAllGemRepoGemsInfos(); + const AZ::Outcome, AZStd::string>& allRepoGemInfosResult = PythonBindingsInterface::Get()->GetGemInfosForAllRepos(); if (allRepoGemInfosResult.IsSuccess()) { const QVector& allRepoGemInfos = allRepoGemInfosResult.GetValue(); @@ -380,6 +526,12 @@ namespace O3DE::ProjectManager } } + void GemCatalogScreen::ShowInspector() + { + m_rightPanelStack->setCurrentIndex(RightPanelWidgetOrder::Inspector); + m_headerWidget->GemCartShown(); + } + GemCatalogScreen::EnableDisableGemsResult GemCatalogScreen::EnableDisableGemsForProject(const QString& projectPath) { IPythonBindings* pythonBindings = PythonBindingsInterface::Get(); @@ -412,7 +564,9 @@ namespace O3DE::ProjectManager const QString& gemPath = GemModel::GetPath(modelIndex); // make sure any remote gems we added were downloaded successfully - if (GemModel::GetGemOrigin(modelIndex) == GemInfo::Remote && GemModel::GetDownloadStatus(modelIndex) != GemInfo::Downloaded) + const GemInfo::DownloadStatus status = GemModel::GetDownloadStatus(modelIndex); + if (GemModel::GetGemOrigin(modelIndex) == GemInfo::Remote && + !(status == GemInfo::Downloaded || status == GemInfo::DownloadSuccessful)) { QMessageBox::critical( nullptr, "Cannot add gem that isn't downloaded", @@ -459,12 +613,25 @@ namespace O3DE::ProjectManager emit ChangeScreenRequest(ProjectManagerScreen::GemRepos); } + void GemCatalogScreen::UpdateAndShowGemCart(QWidget* cartWidget) + { + QWidget* previousCart = m_rightPanelStack->widget(RightPanelWidgetOrder::Cart); + if (previousCart) + { + m_rightPanelStack->removeWidget(previousCart); + } + + m_rightPanelStack->insertWidget(RightPanelWidgetOrder::Cart, cartWidget); + m_rightPanelStack->setCurrentIndex(RightPanelWidgetOrder::Cart); + } + void GemCatalogScreen::OnGemDownloadResult(const QString& gemName, bool succeeded) { if (succeeded) { // refresh the information for downloaded gems - const AZ::Outcome, AZStd::string>& allGemInfosResult = PythonBindingsInterface::Get()->GetAllGemInfos(m_projectPath); + const AZ::Outcome, AZStd::string>& allGemInfosResult = + PythonBindingsInterface::Get()->GetAllGemInfos(m_projectPath); if (allGemInfosResult.IsSuccess()) { // we should find the gem name now in all gem infos @@ -472,19 +639,47 @@ namespace O3DE::ProjectManager { if (gemInfo.m_name == gemName) { - QModelIndex index = m_gemModel->FindIndexByNameString(gemName); - if (index.isValid()) + QModelIndex oldIndex = m_gemModel->FindIndexByNameString(gemName); + if (oldIndex.isValid()) { - m_gemModel->setData(index, GemInfo::Downloaded, GemModel::RoleDownloadStatus); - m_gemModel->setData(index, gemInfo.m_path, GemModel::RolePath); - m_gemModel->setData(index, gemInfo.m_path, GemModel::RoleDirectoryLink); + // Check if old gem is selected + bool oldGemSelected = false; + if (m_gemModel->GetSelectionModel()->currentIndex() == oldIndex) + { + oldGemSelected = true; + } + + // Remove old remote gem + m_gemModel->RemoveGem(oldIndex); + + // Add new downloaded version of gem + QModelIndex newIndex = m_gemModel->AddGem(gemInfo); + GemModel::SetDownloadStatus(*m_gemModel, newIndex, GemInfo::DownloadSuccessful); + GemModel::SetIsAdded(*m_gemModel, newIndex, true); + + // Select new version of gem if it was previously selected + if (oldGemSelected) + { + QModelIndex proxyIndex = m_proxyModel->mapFromSource(newIndex); + m_proxyModel->GetSelectionModel()->setCurrentIndex(proxyIndex, QItemSelectionModel::ClearAndSelect); + } } - return; + break; } } } } + else + { + QModelIndex index = m_gemModel->FindIndexByNameString(gemName); + if (index.isValid()) + { + GemModel::SetIsAdded(*m_gemModel, index, false); + GemModel::DeactivateDependentGems(*m_gemModel, index); + GemModel::SetDownloadStatus(*m_gemModel, index, GemInfo::DownloadFailed); + } + } } ProjectManagerScreen GemCatalogScreen::GetScreenEnum() diff --git a/Code/Tools/ProjectManager/Source/GemCatalog/GemCatalogScreen.h b/Code/Tools/ProjectManager/Source/GemCatalog/GemCatalogScreen.h index da6d2efa7b..20b0c27ff8 100644 --- a/Code/Tools/ProjectManager/Source/GemCatalog/GemCatalogScreen.h +++ b/Code/Tools/ProjectManager/Source/GemCatalog/GemCatalogScreen.h @@ -12,18 +12,24 @@ #include #include #include -#include -#include -#include -#include -#include -#include + #include #include #endif +QT_FORWARD_DECLARE_CLASS(QVBoxLayout) +QT_FORWARD_DECLARE_CLASS(QStackedWidget) + namespace O3DE::ProjectManager { + QT_FORWARD_DECLARE_CLASS(GemCatalogHeaderWidget) + QT_FORWARD_DECLARE_CLASS(GemFilterWidget) + QT_FORWARD_DECLARE_CLASS(GemListView) + QT_FORWARD_DECLARE_CLASS(GemInspector) + QT_FORWARD_DECLARE_CLASS(GemModel) + QT_FORWARD_DECLARE_CLASS(GemSortFilterProxyModel) + QT_FORWARD_DECLARE_CLASS(DownloadController) + class GemCatalogScreen : public ScreenWidget { @@ -47,10 +53,13 @@ namespace O3DE::ProjectManager public slots: void OnGemStatusChanged(const QString& gemName, uint32_t numChangedDependencies); + void OnDependencyGemStatusChanged(const QString& gemName); void OnAddGemClicked(); void SelectGem(const QString& gemName); void OnGemDownloadResult(const QString& gemName, bool succeeded = true); void Refresh(); + void UpdateGem(const QModelIndex& modelIndex); + void UninstallGem(const QModelIndex& modelIndex); protected: void hideEvent(QHideEvent* event) override; @@ -60,14 +69,22 @@ namespace O3DE::ProjectManager private slots: void HandleOpenGemRepo(); - + void UpdateAndShowGemCart(QWidget* cartWidget); + void ShowInspector(); private: + enum RightPanelWidgetOrder + { + Inspector = 0, + Cart + }; + void FillModel(const QString& projectPath); AZStd::unique_ptr m_notificationsView; GemListView* m_gemListView = nullptr; + QStackedWidget* m_rightPanelStack = nullptr; GemInspector* m_gemInspector = nullptr; GemModel* m_gemModel = nullptr; GemCatalogHeaderWidget* m_headerWidget = nullptr; @@ -77,6 +94,6 @@ namespace O3DE::ProjectManager DownloadController* m_downloadController = nullptr; bool m_notificationsEnabled = true; QSet m_gemsToRegisterWithProject; - QString m_projectPath = nullptr; + QString m_projectPath; }; } // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Source/GemCatalog/GemFilterWidget.cpp b/Code/Tools/ProjectManager/Source/GemCatalog/GemFilterWidget.cpp index b608445d0f..acea6ce378 100644 --- a/Code/Tools/ProjectManager/Source/GemCatalog/GemFilterWidget.cpp +++ b/Code/Tools/ProjectManager/Source/GemCatalog/GemFilterWidget.cpp @@ -221,7 +221,6 @@ namespace O3DE::ProjectManager ResetGemStatusFilter(); ResetGemOriginFilter(); ResetTypeFilter(); - ResetPlatformFilter(); ResetFeatureFilter(); } diff --git a/Code/Tools/ProjectManager/Source/GemCatalog/GemInfo.h b/Code/Tools/ProjectManager/Source/GemCatalog/GemInfo.h index 12cce5a4ea..5c1bc90c6e 100644 --- a/Code/Tools/ProjectManager/Source/GemCatalog/GemInfo.h +++ b/Code/Tools/ProjectManager/Source/GemCatalog/GemInfo.h @@ -57,7 +57,9 @@ namespace O3DE::ProjectManager UnknownDownloadStatus = -1, NotDownloaded, Downloading, - Downloaded, + DownloadSuccessful, + DownloadFailed, + Downloaded }; static QString GetDownloadStatusString(DownloadStatus status); @@ -85,6 +87,7 @@ namespace O3DE::ProjectManager QString m_licenseLink; QString m_directoryLink; QString m_documentationLink; + QString m_repoUri; QString m_version = "Unknown Version"; QString m_lastUpdatedDate = "Unknown Date"; int m_binarySizeInKB = 0; diff --git a/Code/Tools/ProjectManager/Source/GemCatalog/GemInspector.cpp b/Code/Tools/ProjectManager/Source/GemCatalog/GemInspector.cpp index 1bcfc6ce9d..8bdd1f0f0f 100644 --- a/Code/Tools/ProjectManager/Source/GemCatalog/GemInspector.cpp +++ b/Code/Tools/ProjectManager/Source/GemCatalog/GemInspector.cpp @@ -14,6 +14,7 @@ #include #include #include +#include namespace O3DE::ProjectManager { @@ -52,10 +53,13 @@ namespace O3DE::ProjectManager Update(selectedIndices[0]); } - void SetLabelElidedText(QLabel* label, QString text) + void SetLabelElidedText(QLabel* label, QString text, int labelWidth = 0) { QFontMetrics nameFontMetrics(label->font()); - int labelWidth = label->width(); + if (!labelWidth) + { + labelWidth = label->width(); + } // Don't elide if the widgets are sized too small (sometimes occurs when loading gem catalog) if (labelWidth > 100) @@ -70,6 +74,8 @@ namespace O3DE::ProjectManager void GemInspector::Update(const QModelIndex& modelIndex) { + m_curModelIndex = modelIndex; + if (!modelIndex.isValid()) { m_mainWidget->hide(); @@ -81,7 +87,8 @@ namespace O3DE::ProjectManager m_summaryLabel->setText(m_model->GetSummary(modelIndex)); m_summaryLabel->adjustSize(); - m_licenseLinkLabel->setText(m_model->GetLicenseText(modelIndex)); + // Manually define remaining space to elide text because spacer would like to take all of the space + SetLabelElidedText(m_licenseLinkLabel, m_model->GetLicenseText(modelIndex), width() - m_licenseLabel->width() - 35); m_licenseLinkLabel->SetUrl(m_model->GetLicenseLink(modelIndex)); m_directoryLinkLabel->SetUrl(m_model->GetDirectoryLink(modelIndex)); @@ -123,6 +130,20 @@ namespace O3DE::ProjectManager const int binarySize = m_model->GetBinarySizeInKB(modelIndex); m_binarySizeLabel->setText(tr("Binary Size: %1").arg(binarySize ? tr("%1 KB").arg(binarySize) : tr("Unknown"))); + // Update and Uninstall buttons + if (m_model->GetGemOrigin(modelIndex) == GemInfo::Remote && + (m_model->GetDownloadStatus(modelIndex) == GemInfo::Downloaded || + m_model->GetDownloadStatus(modelIndex) == GemInfo::DownloadSuccessful)) + { + m_updateGemButton->show(); + m_uninstallGemButton->show(); + } + else + { + m_updateGemButton->hide(); + m_uninstallGemButton->hide(); + } + m_mainWidget->adjustSize(); m_mainWidget->show(); } @@ -158,8 +179,8 @@ namespace O3DE::ProjectManager licenseHLayout->setAlignment(Qt::AlignLeft); m_mainLayout->addLayout(licenseHLayout); - QLabel* licenseLabel = CreateStyledLabel(licenseHLayout, s_baseFontSize, s_headerColor); - licenseLabel->setText(tr("License: ")); + m_licenseLabel = CreateStyledLabel(licenseHLayout, s_baseFontSize, s_headerColor); + m_licenseLabel->setText(tr("License: ")); m_licenseLinkLabel = new LinkLabel("", QUrl(), s_baseFontSize); licenseHLayout->addWidget(m_licenseLinkLabel); @@ -223,7 +244,7 @@ namespace O3DE::ProjectManager // Depending gems m_dependingGems = new GemsSubWidget(); - connect(m_dependingGems, &GemsSubWidget::TagClicked, this, [=](const Tag& tag){ emit TagClicked(tag); }); + connect(m_dependingGems, &GemsSubWidget::TagClicked, this, [this](const Tag& tag){ emit TagClicked(tag); }); m_mainLayout->addWidget(m_dependingGems); m_mainLayout->addSpacing(20); @@ -234,5 +255,20 @@ namespace O3DE::ProjectManager m_versionLabel = CreateStyledLabel(m_mainLayout, s_baseFontSize, s_textColor); m_lastUpdatedLabel = CreateStyledLabel(m_mainLayout, s_baseFontSize, s_textColor); m_binarySizeLabel = CreateStyledLabel(m_mainLayout, s_baseFontSize, s_textColor); + + m_mainLayout->addSpacing(20); + + // Update and Uninstall buttons + m_updateGemButton = new QPushButton(tr("Update Gem")); + m_updateGemButton->setObjectName("gemCatalogUpdateGemButton"); + m_mainLayout->addWidget(m_updateGemButton); + connect(m_updateGemButton, &QPushButton::clicked, this , [this]{ emit UpdateGem(m_curModelIndex); }); + + m_mainLayout->addSpacing(10); + + m_uninstallGemButton = new QPushButton(tr("Uninstall Gem")); + m_uninstallGemButton->setObjectName("gemCatalogUninstallGemButton"); + m_mainLayout->addWidget(m_uninstallGemButton); + connect(m_uninstallGemButton, &QPushButton::clicked, this , [this]{ emit UninstallGem(m_curModelIndex); }); } } // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Source/GemCatalog/GemInspector.h b/Code/Tools/ProjectManager/Source/GemCatalog/GemInspector.h index 9a6ad84dea..1713191623 100644 --- a/Code/Tools/ProjectManager/Source/GemCatalog/GemInspector.h +++ b/Code/Tools/ProjectManager/Source/GemCatalog/GemInspector.h @@ -16,11 +16,12 @@ #include #include -#include #endif QT_FORWARD_DECLARE_CLASS(QVBoxLayout) QT_FORWARD_DECLARE_CLASS(QLabel) +QT_FORWARD_DECLARE_CLASS(QSpacerItem) +QT_FORWARD_DECLARE_CLASS(QPushButton) namespace O3DE::ProjectManager { @@ -45,6 +46,8 @@ namespace O3DE::ProjectManager signals: void TagClicked(const Tag& tag); + void UpdateGem(const QModelIndex& modelIndex); + void UninstallGem(const QModelIndex& modelIndex); private slots: void OnSelectionChanged(const QItemSelection& selected, const QItemSelection& deselected); @@ -55,11 +58,13 @@ namespace O3DE::ProjectManager GemModel* m_model = nullptr; QWidget* m_mainWidget = nullptr; QVBoxLayout* m_mainLayout = nullptr; + QModelIndex m_curModelIndex; // General info (top) section QLabel* m_nameLabel = nullptr; QLabel* m_creatorLabel = nullptr; QLabel* m_summaryLabel = nullptr; + QLabel* m_licenseLabel = nullptr; LinkLabel* m_licenseLinkLabel = nullptr; LinkLabel* m_directoryLinkLabel = nullptr; LinkLabel* m_documentationLinkLabel = nullptr; @@ -77,5 +82,8 @@ namespace O3DE::ProjectManager QLabel* m_versionLabel = nullptr; QLabel* m_lastUpdatedLabel = nullptr; QLabel* m_binarySizeLabel = nullptr; + + QPushButton* m_updateGemButton = nullptr; + QPushButton* m_uninstallGemButton = nullptr; }; } // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Source/GemCatalog/GemItemDelegate.cpp b/Code/Tools/ProjectManager/Source/GemCatalog/GemItemDelegate.cpp index e15c4b3b39..dd94e42fc4 100644 --- a/Code/Tools/ProjectManager/Source/GemCatalog/GemItemDelegate.cpp +++ b/Code/Tools/ProjectManager/Source/GemCatalog/GemItemDelegate.cpp @@ -37,6 +37,8 @@ namespace O3DE::ProjectManager SetStatusIcon(m_notDownloadedPixmap, ":/Download.svg"); SetStatusIcon(m_unknownStatusPixmap, ":/X.svg"); + SetStatusIcon(m_downloadSuccessfulPixmap, ":/checkmark.svg"); + SetStatusIcon(m_downloadFailedPixmap, ":/Warning.svg"); m_downloadingMovie = new QMovie(":/in_progress.gif"); } @@ -480,6 +482,14 @@ namespace O3DE::ProjectManager currentFrame = currentFrame.scaled(s_statusIconSize, s_statusIconSize); statusPixmap = ¤tFrame; } + else if (downloadStatus == GemInfo::DownloadStatus::DownloadSuccessful) + { + statusPixmap = &m_downloadSuccessfulPixmap; + } + else if (downloadStatus == GemInfo::DownloadStatus::DownloadFailed) + { + statusPixmap = &m_downloadFailedPixmap; + } else if (downloadStatus == GemInfo::DownloadStatus::NotDownloaded) { statusPixmap = &m_notDownloadedPixmap; diff --git a/Code/Tools/ProjectManager/Source/GemCatalog/GemItemDelegate.h b/Code/Tools/ProjectManager/Source/GemCatalog/GemItemDelegate.h index c013be0d9e..107de6de15 100644 --- a/Code/Tools/ProjectManager/Source/GemCatalog/GemItemDelegate.h +++ b/Code/Tools/ProjectManager/Source/GemCatalog/GemItemDelegate.h @@ -97,6 +97,8 @@ namespace O3DE::ProjectManager QPixmap m_unknownStatusPixmap; QPixmap m_notDownloadedPixmap; + QPixmap m_downloadSuccessfulPixmap; + QPixmap m_downloadFailedPixmap; QMovie* m_downloadingMovie = nullptr; }; } // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Source/GemCatalog/GemModel.cpp b/Code/Tools/ProjectManager/Source/GemCatalog/GemModel.cpp index 88c54de0b3..d163ab9076 100644 --- a/Code/Tools/ProjectManager/Source/GemCatalog/GemModel.cpp +++ b/Code/Tools/ProjectManager/Source/GemCatalog/GemModel.cpp @@ -26,14 +26,14 @@ namespace O3DE::ProjectManager return m_selectionModel; } - void GemModel::AddGem(const GemInfo& gemInfo) + QModelIndex GemModel::AddGem(const GemInfo& gemInfo) { if (FindIndexByNameString(gemInfo.m_name).isValid()) { // do not add gems with duplicate names // this can happen by mistake or when a gem repo has a gem with the same name as a local gem AZ_TracePrintf("GemModel", "Ignoring duplicate gem: %s", gemInfo.m_name.toUtf8().constData()); - return; + return QModelIndex(); } QStandardItem* item = new QStandardItem(); @@ -61,11 +61,28 @@ namespace O3DE::ProjectManager item->setData(gemInfo.m_downloadStatus, RoleDownloadStatus); item->setData(gemInfo.m_licenseText, RoleLicenseText); item->setData(gemInfo.m_licenseLink, RoleLicenseLink); + item->setData(gemInfo.m_repoUri, RoleRepoUri); appendRow(item); const QModelIndex modelIndex = index(rowCount()-1, 0); m_nameToIndexMap[gemInfo.m_name] = modelIndex; + + return modelIndex; + } + + void GemModel::RemoveGem(const QModelIndex& modelIndex) + { + removeRow(modelIndex.row()); + } + + void GemModel::RemoveGem(const QString& gemName) + { + auto nameFind = m_nameToIndexMap.find(gemName); + if (nameFind != m_nameToIndexMap.end()) + { + removeRow(nameFind->row()); + } } void GemModel::Clear() @@ -255,6 +272,11 @@ namespace O3DE::ProjectManager return modelIndex.data(RoleLicenseLink).toString(); } + QString GemModel::GetRepoUri(const QModelIndex& modelIndex) + { + return modelIndex.data(RoleRepoUri).toString(); + } + GemModel* GemModel::GetSourceModel(QAbstractItemModel* model) { GemSortFilterProxyModel* proxyModel = qobject_cast(model); @@ -335,6 +357,8 @@ namespace O3DE::ProjectManager if (!IsAdded(dependency)) { numChangedDependencies++; + const QString dependencyName = gemModel->GetName(dependency); + gemModel->emit dependencyGemStatusChanged(dependencyName); } } } @@ -359,6 +383,8 @@ namespace O3DE::ProjectManager if (!IsAdded(dependency)) { numChangedDependencies++; + const QString dependencyName = gemModel->GetName(dependency); + gemModel->emit dependencyGemStatusChanged(dependencyName); } } } @@ -369,11 +395,30 @@ namespace O3DE::ProjectManager void GemModel::OnRowsAboutToBeRemoved(const QModelIndex& parent, int first, int last) { + bool selectedRowRemoved = false; for (int i = first; i <= last; ++i) { QModelIndex modelIndex = index(i, 0, parent); const QString& gemName = GetName(modelIndex); m_nameToIndexMap.remove(gemName); + + if (GetSelectionModel()->isRowSelected(i)) + { + selectedRowRemoved = true; + } + } + + // Select a valid row if currently selected row was removed + if (selectedRowRemoved) + { + for (const QModelIndex& index : m_nameToIndexMap) + { + if (index.isValid()) + { + GetSelectionModel()->setCurrentIndex(index, QItemSelectionModel::ClearAndSelect); + break; + } + } } } @@ -438,6 +483,23 @@ namespace O3DE::ProjectManager return previouslyAdded && !added; } + void GemModel::DeactivateDependentGems(QAbstractItemModel& model, const QModelIndex& modelIndex) + { + GemModel* gemModel = GetSourceModel(&model); + AZ_Assert(gemModel, "Failed to obtain GemModel"); + + QVector dependentGems = gemModel->GatherDependentGems(modelIndex); + if (!dependentGems.isEmpty()) + { + // we need to deactivate all gems that depend on this one + for (auto dependentModelIndex : dependentGems) + { + SetIsAdded(model, dependentModelIndex, false); + } + + } + } + void GemModel::SetDownloadStatus(QAbstractItemModel& model, const QModelIndex& modelIndex, GemInfo::DownloadStatus status) { model.setData(modelIndex, status, RoleDownloadStatus); diff --git a/Code/Tools/ProjectManager/Source/GemCatalog/GemModel.h b/Code/Tools/ProjectManager/Source/GemCatalog/GemModel.h index e25a1c7703..cb99581468 100644 --- a/Code/Tools/ProjectManager/Source/GemCatalog/GemModel.h +++ b/Code/Tools/ProjectManager/Source/GemCatalog/GemModel.h @@ -51,10 +51,13 @@ namespace O3DE::ProjectManager RoleRequirement, RoleDownloadStatus, RoleLicenseText, - RoleLicenseLink + RoleLicenseLink, + RoleRepoUri }; - void AddGem(const GemInfo& gemInfo); + QModelIndex AddGem(const GemInfo& gemInfo); + void RemoveGem(const QModelIndex& modelIndex); + void RemoveGem(const QString& gemName); void Clear(); void UpdateGemDependencies(); @@ -80,6 +83,7 @@ namespace O3DE::ProjectManager static QString GetRequirement(const QModelIndex& modelIndex); static QString GetLicenseText(const QModelIndex& modelIndex); static QString GetLicenseLink(const QModelIndex& modelIndex); + static QString GetRepoUri(const QModelIndex& modelIndex); static GemModel* GetSourceModel(QAbstractItemModel* model); static const GemModel* GetSourceModel(const QAbstractItemModel* model); @@ -95,6 +99,7 @@ namespace O3DE::ProjectManager static bool NeedsToBeRemoved(const QModelIndex& modelIndex, bool includeDependencies = false); static bool HasRequirement(const QModelIndex& modelIndex); static void UpdateDependencies(QAbstractItemModel& model, const QString& gemName, bool isAdded); + static void DeactivateDependentGems(QAbstractItemModel& model, const QModelIndex& modelIndex); static void SetDownloadStatus(QAbstractItemModel& model, const QModelIndex& modelIndex, GemInfo::DownloadStatus status); bool DoGemsToBeAddedHaveRequirements() const; @@ -109,6 +114,7 @@ namespace O3DE::ProjectManager signals: void gemStatusChanged(const QString& gemName, uint32_t numChangedDependencies); + void dependencyGemStatusChanged(const QString& gemName); protected slots: void OnRowsAboutToBeRemoved(const QModelIndex& parent, int first, int last); diff --git a/Code/Tools/ProjectManager/Source/GemCatalog/GemSortFilterProxyModel.cpp b/Code/Tools/ProjectManager/Source/GemCatalog/GemSortFilterProxyModel.cpp index 32d0e2fee9..a32492cf1e 100644 --- a/Code/Tools/ProjectManager/Source/GemCatalog/GemSortFilterProxyModel.cpp +++ b/Code/Tools/ProjectManager/Source/GemCatalog/GemSortFilterProxyModel.cpp @@ -204,9 +204,12 @@ namespace O3DE::ProjectManager emit OnInvalidated(); } - void GemSortFilterProxyModel::ResetFilters() + void GemSortFilterProxyModel::ResetFilters(bool clearSearchString) { - m_searchString.clear(); + if (clearSearchString) + { + m_searchString.clear(); + } m_gemSelectedFilter = GemSelected::NoFilter; m_gemActiveFilter = GemActive::NoFilter; m_gemOriginFilter = {}; diff --git a/Code/Tools/ProjectManager/Source/GemCatalog/GemSortFilterProxyModel.h b/Code/Tools/ProjectManager/Source/GemCatalog/GemSortFilterProxyModel.h index ab739e62f9..0c58d66ccf 100644 --- a/Code/Tools/ProjectManager/Source/GemCatalog/GemSortFilterProxyModel.h +++ b/Code/Tools/ProjectManager/Source/GemCatalog/GemSortFilterProxyModel.h @@ -70,7 +70,7 @@ namespace O3DE::ProjectManager void SetFeatures(const QSet& features) { m_featureFilter = features; InvalidateFilter(); } void InvalidateFilter(); - void ResetFilters(); + void ResetFilters(bool clearSearchString = true); signals: void OnInvalidated(); diff --git a/Code/Tools/ProjectManager/Source/GemCatalog/GemUninstallDialog.cpp b/Code/Tools/ProjectManager/Source/GemCatalog/GemUninstallDialog.cpp new file mode 100644 index 0000000000..1408e29b6d --- /dev/null +++ b/Code/Tools/ProjectManager/Source/GemCatalog/GemUninstallDialog.cpp @@ -0,0 +1,60 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include + +#include +#include +#include +#include +#include + +namespace O3DE::ProjectManager +{ + GemUninstallDialog::GemUninstallDialog(const QString& gemName, QWidget* parent) + : QDialog(parent) + { + setWindowTitle(tr("Uninstall Remote Gem")); + setObjectName("GemUninstallDialog"); + setAttribute(Qt::WA_DeleteOnClose); + setModal(true); + + QVBoxLayout* layout = new QVBoxLayout(); + layout->setMargin(30); + layout->setAlignment(Qt::AlignTop); + setLayout(layout); + + // Body + QLabel* subTitleLabel = new QLabel(tr("Are you sure you want to uninstall %1?").arg(gemName)); + subTitleLabel->setObjectName("gemCatalogDialogSubTitle"); + layout->addWidget(subTitleLabel); + + layout->addSpacing(10); + + QLabel* bodyLabel = new QLabel(tr("The Gem and its related files will be uninstalled. This does not affect the Gem's repository. " + "You can reinstall this Gem from the Catalog, but its contents may be subject to change.")); + bodyLabel->setWordWrap(true); + bodyLabel->setFixedSize(QSize(440, 80)); + layout->addWidget(bodyLabel); + + layout->addSpacing(40); + + // Buttons + QDialogButtonBox* dialogButtons = new QDialogButtonBox(); + dialogButtons->setObjectName("footer"); + layout->addWidget(dialogButtons); + + QPushButton* cancelButton = dialogButtons->addButton(tr("Cancel"), QDialogButtonBox::RejectRole); + cancelButton->setProperty("secondary", true); + QPushButton* uninstallButton = dialogButtons->addButton(tr("Uninstall Gem"), QDialogButtonBox::ApplyRole); + uninstallButton->setObjectName("gemCatalogUninstallGemButton"); + + connect(cancelButton, &QPushButton::clicked, this, &QDialog::reject); + connect(uninstallButton, &QPushButton::clicked, this, &QDialog::accept); + } +} // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Source/GemCatalog/GemUninstallDialog.h b/Code/Tools/ProjectManager/Source/GemCatalog/GemUninstallDialog.h new file mode 100644 index 0000000000..9e3f4c3f3b --- /dev/null +++ b/Code/Tools/ProjectManager/Source/GemCatalog/GemUninstallDialog.h @@ -0,0 +1,25 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#pragma once + +#if !defined(Q_MOC_RUN) +#include +#endif + +namespace O3DE::ProjectManager +{ + class GemUninstallDialog + : public QDialog + { + Q_OBJECT // AUTOMOC + public: + explicit GemUninstallDialog(const QString& gemName, QWidget *parent = nullptr); + ~GemUninstallDialog() = default; + }; +} // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Source/GemCatalog/GemUpdateDialog.cpp b/Code/Tools/ProjectManager/Source/GemCatalog/GemUpdateDialog.cpp new file mode 100644 index 0000000000..82d205aab5 --- /dev/null +++ b/Code/Tools/ProjectManager/Source/GemCatalog/GemUpdateDialog.cpp @@ -0,0 +1,64 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include + +#include +#include +#include +#include +#include + +namespace O3DE::ProjectManager +{ + GemUpdateDialog::GemUpdateDialog(const QString& gemName, bool updateAvaliable, QWidget* parent) + : QDialog(parent) + { + setWindowTitle(tr("Update Remote Gem")); + setObjectName("GemUpdateDialog"); + setAttribute(Qt::WA_DeleteOnClose); + setModal(true); + + QVBoxLayout* layout = new QVBoxLayout(); + layout->setMargin(30); + layout->setAlignment(Qt::AlignTop); + setLayout(layout); + + // Body + QLabel* subTitleLabel = new QLabel(tr("%1 to the latest version of %2?").arg( + updateAvaliable ? tr("Update") : tr("Force update"), gemName)); + subTitleLabel->setObjectName("gemCatalogDialogSubTitle"); + layout->addWidget(subTitleLabel); + + layout->addSpacing(10); + + QLabel* bodyLabel = new QLabel(tr("%1The latest version of this Gem may not be compatible with your engine. " + "Updating this Gem will remove any local changes made to this Gem, " + "and may remove old features that are in use.").arg( + updateAvaliable ? "" : tr("No update detected for Gem. " + "This will force a re-download of the gem. "))); + bodyLabel->setWordWrap(true); + bodyLabel->setFixedSize(QSize(440, 80)); + layout->addWidget(bodyLabel); + + layout->addSpacing(40); + + // Buttons + QDialogButtonBox* dialogButtons = new QDialogButtonBox(); + dialogButtons->setObjectName("footer"); + layout->addWidget(dialogButtons); + + QPushButton* cancelButton = dialogButtons->addButton(tr("Cancel"), QDialogButtonBox::RejectRole); + cancelButton->setProperty("secondary", true); + QPushButton* updateButton = + dialogButtons->addButton(tr("%1Update Gem").arg(updateAvaliable ? "" : tr("Force ")), QDialogButtonBox::ApplyRole); + + connect(cancelButton, &QPushButton::clicked, this, &QDialog::reject); + connect(updateButton, &QPushButton::clicked, this, &QDialog::accept); + } +} // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Source/GemCatalog/GemUpdateDialog.h b/Code/Tools/ProjectManager/Source/GemCatalog/GemUpdateDialog.h new file mode 100644 index 0000000000..cf34abfb3d --- /dev/null +++ b/Code/Tools/ProjectManager/Source/GemCatalog/GemUpdateDialog.h @@ -0,0 +1,25 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#pragma once + +#if !defined(Q_MOC_RUN) +#include +#endif + +namespace O3DE::ProjectManager +{ + class GemUpdateDialog + : public QDialog + { + Q_OBJECT // AUTOMOC + public : + explicit GemUpdateDialog(const QString& gemName, bool updateAvaliable = true, QWidget* parent = nullptr); + ~GemUpdateDialog() = default; + }; +} // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Source/GemRepo/GemRepoInfo.h b/Code/Tools/ProjectManager/Source/GemRepo/GemRepoInfo.h index f1d1c2a8a2..c22511faad 100644 --- a/Code/Tools/ProjectManager/Source/GemRepo/GemRepoInfo.h +++ b/Code/Tools/ProjectManager/Source/GemRepo/GemRepoInfo.h @@ -37,7 +37,7 @@ namespace O3DE::ProjectManager QString m_additionalInfo = ""; QString m_directoryLink = ""; QString m_repoUri = ""; - QStringList m_includedGemPaths = {}; + QStringList m_includedGemUris = {}; QDateTime m_lastUpdated; }; } // namespace O3DE::ProjectManager diff --git a/Code/Tools/ProjectManager/Source/GemRepo/GemRepoInspector.cpp b/Code/Tools/ProjectManager/Source/GemRepo/GemRepoInspector.cpp index f816e86733..24a3e58ea2 100644 --- a/Code/Tools/ProjectManager/Source/GemRepo/GemRepoInspector.cpp +++ b/Code/Tools/ProjectManager/Source/GemRepo/GemRepoInspector.cpp @@ -8,6 +8,7 @@ #include #include +#include #include #include @@ -60,8 +61,10 @@ namespace O3DE::ProjectManager // Repo name and url link m_nameLabel->setText(m_model->GetName(modelIndex)); - m_repoLinkLabel->setText(m_model->GetRepoUri(modelIndex)); - m_repoLinkLabel->SetUrl(m_model->GetRepoUri(modelIndex)); + + const QString repoUri = m_model->GetRepoUri(modelIndex); + m_repoLinkLabel->setText(repoUri); + m_repoLinkLabel->SetUrl(repoUri); // Repo summary m_summaryLabel->setText(m_model->GetSummary(modelIndex)); diff --git a/Code/Tools/ProjectManager/Source/GemRepo/GemRepoModel.cpp b/Code/Tools/ProjectManager/Source/GemRepo/GemRepoModel.cpp index 6189b6d8bf..436f84019a 100644 --- a/Code/Tools/ProjectManager/Source/GemRepo/GemRepoModel.cpp +++ b/Code/Tools/ProjectManager/Source/GemRepo/GemRepoModel.cpp @@ -41,7 +41,7 @@ namespace O3DE::ProjectManager item->setData(gemRepoInfo.m_lastUpdated, RoleLastUpdated); item->setData(gemRepoInfo.m_path, RolePath); item->setData(gemRepoInfo.m_additionalInfo, RoleAdditionalInfo); - item->setData(gemRepoInfo.m_includedGemPaths, RoleIncludedGems); + item->setData(gemRepoInfo.m_includedGemUris, RoleIncludedGems); appendRow(item); @@ -98,7 +98,7 @@ namespace O3DE::ProjectManager return modelIndex.data(RolePath).toString(); } - QStringList GemRepoModel::GetIncludedGemPaths(const QModelIndex& modelIndex) + QStringList GemRepoModel::GetIncludedGemUris(const QModelIndex& modelIndex) { return modelIndex.data(RoleIncludedGems).toStringList(); } @@ -118,23 +118,19 @@ namespace O3DE::ProjectManager QVector GemRepoModel::GetIncludedGemInfos(const QModelIndex& modelIndex) { - QVector allGemInfos; - QStringList repoGemPaths = GetIncludedGemPaths(modelIndex); + QString repoUri = GetRepoUri(modelIndex); - for (const QString& gemPath : repoGemPaths) + const AZ::Outcome, AZStd::string>& gemInfosResult = PythonBindingsInterface::Get()->GetGemInfosForRepo(repoUri); + if (gemInfosResult.IsSuccess()) { - AZ::Outcome gemInfoResult = PythonBindingsInterface::Get()->GetGemInfo(gemPath); - if (gemInfoResult.IsSuccess()) - { - allGemInfos.append(gemInfoResult.GetValue()); - } - else - { - QMessageBox::critical(nullptr, tr("Gem Not Found"), tr("Cannot find info for gem %1.").arg(gemPath)); - } + return gemInfosResult.GetValue(); + } + else + { + QMessageBox::critical(nullptr, tr("Gems not found"), tr("Cannot find info for gems from repo %1").arg(GetName(modelIndex))); } - return allGemInfos; + return QVector(); } bool GemRepoModel::IsEnabled(const QModelIndex& modelIndex) diff --git a/Code/Tools/ProjectManager/Source/GemRepo/GemRepoModel.h b/Code/Tools/ProjectManager/Source/GemRepo/GemRepoModel.h index 66fe972a95..68991a0509 100644 --- a/Code/Tools/ProjectManager/Source/GemRepo/GemRepoModel.h +++ b/Code/Tools/ProjectManager/Source/GemRepo/GemRepoModel.h @@ -39,7 +39,7 @@ namespace O3DE::ProjectManager static QDateTime GetLastUpdated(const QModelIndex& modelIndex); static QString GetPath(const QModelIndex& modelIndex); - static QStringList GetIncludedGemPaths(const QModelIndex& modelIndex); + static QStringList GetIncludedGemUris(const QModelIndex& modelIndex); static QVector GetIncludedGemTags(const QModelIndex& modelIndex); static QVector GetIncludedGemInfos(const QModelIndex& modelIndex); diff --git a/Code/Tools/ProjectManager/Source/GemRepo/GemRepoScreen.cpp b/Code/Tools/ProjectManager/Source/GemRepo/GemRepoScreen.cpp index 794635a3e3..f62c30c280 100644 --- a/Code/Tools/ProjectManager/Source/GemRepo/GemRepoScreen.cpp +++ b/Code/Tools/ProjectManager/Source/GemRepo/GemRepoScreen.cpp @@ -75,7 +75,7 @@ namespace O3DE::ProjectManager // Select the first entry after everything got correctly sized QTimer::singleShot(200, [=]{ QModelIndex firstModelIndex = m_gemRepoListView->model()->index(0,0); - m_gemRepoListView->selectionModel()->select(firstModelIndex, QItemSelectionModel::ClearAndSelect); + m_gemRepoListView->selectionModel()->setCurrentIndex(firstModelIndex, QItemSelectionModel::ClearAndSelect); }); } @@ -92,8 +92,9 @@ namespace O3DE::ProjectManager return; } - bool addGemRepoResult = PythonBindingsInterface::Get()->AddGemRepo(repoUri); - if (addGemRepoResult) + AZ::Outcome < void, + AZStd::pair> addGemRepoResult = PythonBindingsInterface::Get()->AddGemRepo(repoUri); + if (addGemRepoResult.IsSuccess()) { Reinit(); emit OnRefresh(); @@ -101,8 +102,21 @@ namespace O3DE::ProjectManager else { QString failureMessage = tr("Failed to add gem repo: %1.").arg(repoUri); - QMessageBox::critical(this, tr("Operation failed"), failureMessage); - AZ_Error("Project Manger", false, failureMessage.toUtf8()); + if (!addGemRepoResult.GetError().second.empty()) + { + QMessageBox addRepoError; + addRepoError.setIcon(QMessageBox::Critical); + addRepoError.setWindowTitle(failureMessage); + addRepoError.setText(addGemRepoResult.GetError().first.c_str()); + addRepoError.setDetailedText(addGemRepoResult.GetError().second.c_str()); + addRepoError.exec(); + } + else + { + QMessageBox::critical(this, failureMessage, addGemRepoResult.GetError().first.c_str()); + } + + AZ_Error("Project Manager", false, failureMessage.toUtf8()); } } } diff --git a/Code/Tools/ProjectManager/Source/ProjectBuilderController.cpp b/Code/Tools/ProjectManager/Source/ProjectBuilderController.cpp index 7981e9d758..ecb125ae4e 100644 --- a/Code/Tools/ProjectManager/Source/ProjectBuilderController.cpp +++ b/Code/Tools/ProjectManager/Source/ProjectBuilderController.cpp @@ -9,12 +9,14 @@ #include #include #include +#include + +#include #include #include #include - namespace O3DE::ProjectManager { ProjectBuilderController::ProjectBuilderController(const ProjectInfo& projectInfo, ProjectButton* projectButton, QWidget* parent) @@ -27,6 +29,15 @@ namespace O3DE::ProjectManager m_worker = new ProjectBuilderWorker(m_projectInfo); m_worker->moveToThread(&m_workerThread); + auto settingsRegistry = AZ::SettingsRegistry::Get(); + if (settingsRegistry) + { + // Remove key here in case Project Manager crashing while building that causes HandleResults to not be called + QString settingsKey = GetProjectBuiltSuccessfullyKey(m_projectInfo.m_projectName); + settingsRegistry->Remove(settingsKey.toStdString().c_str()); + SaveProjectManagerSettings(); + } + connect(&m_workerThread, &QThread::finished, m_worker, &ProjectBuilderWorker::deleteLater); connect(&m_workerThread, &QThread::started, m_worker, &ProjectBuilderWorker::BuildProject); connect(m_worker, &ProjectBuilderWorker::Done, this, &ProjectBuilderController::HandleResults); @@ -80,6 +91,8 @@ namespace O3DE::ProjectManager void ProjectBuilderController::HandleResults(const QString& result) { + QString settingsKey = GetProjectBuiltSuccessfullyKey(m_projectInfo.m_projectName); + if (!result.isEmpty()) { if (result.contains(tr("log"))) @@ -109,12 +122,26 @@ namespace O3DE::ProjectManager emit NotifyBuildProject(m_projectInfo); } + auto settingsRegistry = AZ::SettingsRegistry::Get(); + if (settingsRegistry) + { + settingsRegistry->Remove(settingsKey.toStdString().c_str()); + SaveProjectManagerSettings(); + } + emit Done(false); return; } else { m_projectInfo.m_buildFailed = false; + + auto settingsRegistry = AZ::SettingsRegistry::Get(); + if (settingsRegistry) + { + settingsRegistry->Set(settingsKey.toStdString().c_str(), true); + SaveProjectManagerSettings(); + } } emit Done(true); diff --git a/Code/Tools/ProjectManager/Source/ProjectButtonWidget.cpp b/Code/Tools/ProjectManager/Source/ProjectButtonWidget.cpp index c425c344e1..2f4fe901bb 100644 --- a/Code/Tools/ProjectManager/Source/ProjectButtonWidget.cpp +++ b/Code/Tools/ProjectManager/Source/ProjectButtonWidget.cpp @@ -8,7 +8,11 @@ #include #include +#include +#include #include +#include +#include #include #include @@ -23,6 +27,7 @@ #include #include #include +#include namespace O3DE::ProjectManager { @@ -198,6 +203,7 @@ namespace O3DE::ProjectManager QMenu* menu = new QMenu(this); menu->addAction(tr("Edit Project Settings..."), this, [this]() { emit EditProject(m_projectInfo.m_path); }); + menu->addAction(tr("Configure Gems..."), this, [this]() { emit EditProjectGems(m_projectInfo.m_path); }); menu->addAction(tr("Build"), this, [this]() { emit BuildProject(m_projectInfo); }); menu->addAction(tr("Open CMake GUI..."), this, [this]() { emit OpenCMakeGUI(m_projectInfo); }); menu->addSeparator(); @@ -205,6 +211,29 @@ namespace O3DE::ProjectManager { AzQtComponents::ShowFileOnDesktop(m_projectInfo.m_path); }); + +#if AZ_TRAIT_PROJECT_MANAGER_CREATE_DESKTOP_SHORTCUT + menu->addAction(tr("Create Editor desktop shortcut..."), this, [this]() + { + AZ::IO::FixedMaxPath executableDirectory = ProjectUtils::GetEditorDirectory(); + AZStd::string executableFilename = "Editor"; + AZ::IO::FixedMaxPath editorExecutablePath = executableDirectory / (executableFilename + AZ_TRAIT_OS_EXECUTABLE_EXTENSION); + + const QString shortcutName = QString("%1 Editor").arg(m_projectInfo.m_displayName); + const QString arg = QString("--regset=\"/Amazon/AzCore/Bootstrap/project_path=%1\"").arg(m_projectInfo.m_path); + + auto result = ProjectUtils::CreateDesktopShortcut(shortcutName, editorExecutablePath.c_str(), { arg }); + if(result.IsSuccess()) + { + QMessageBox::information(this, tr("Desktop Shortcut Created"), result.GetValue()); + } + else + { + QMessageBox::critical(this, tr("Failed to create shortcut"), result.GetError()); + } + }); +#endif // AZ_TRAIT_PROJECT_MANAGER_CREATE_DESKTOP_SHORTCUT + menu->addSeparator(); menu->addAction(tr("Duplicate"), this, [this]() { emit CopyProject(m_projectInfo); }); menu->addSeparator(); diff --git a/Code/Tools/ProjectManager/Source/ProjectButtonWidget.h b/Code/Tools/ProjectManager/Source/ProjectButtonWidget.h index 5e81dfc2d9..ccb644c458 100644 --- a/Code/Tools/ProjectManager/Source/ProjectButtonWidget.h +++ b/Code/Tools/ProjectManager/Source/ProjectButtonWidget.h @@ -95,6 +95,7 @@ namespace O3DE::ProjectManager signals: void OpenProject(const QString& projectName); void EditProject(const QString& projectName); + void EditProjectGems(const QString& projectName); void CopyProject(const ProjectInfo& projectInfo); void RemoveProject(const QString& projectName); void DeleteProject(const QString& projectName); diff --git a/Code/Tools/ProjectManager/Source/ProjectManagerSettings.cpp b/Code/Tools/ProjectManager/Source/ProjectManagerSettings.cpp new file mode 100644 index 0000000000..3049a6d70c --- /dev/null +++ b/Code/Tools/ProjectManager/Source/ProjectManagerSettings.cpp @@ -0,0 +1,54 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include "ProjectManagerSettings.h" + +#include +#include +#include + +namespace O3DE::ProjectManager +{ + void SaveProjectManagerSettings() + { + auto settingsRegistry = AZ::SettingsRegistry::Get(); + AZ::SettingsRegistryMergeUtils::DumperSettings dumperSettings; + dumperSettings.m_prettifyOutput = true; + dumperSettings.m_jsonPointerPrefix = ProjectManagerKeyPrefix; + + AZStd::string stringBuffer; + AZ::IO::ByteContainerStream stringStream(&stringBuffer); + if (!AZ::SettingsRegistryMergeUtils::DumpSettingsRegistryToStream( + *settingsRegistry, ProjectManagerKeyPrefix, stringStream, dumperSettings)) + { + AZ_Warning("ProjectManager", false, "Could not save Project Manager settings to stream"); + return; + } + + AZ::IO::FixedMaxPath o3deUserPath = AZ::Utils::GetO3deManifestDirectory(); + o3deUserPath /= AZ::SettingsRegistryInterface::RegistryFolder; + o3deUserPath /= "ProjectManager.setreg"; + + bool saved = false; + constexpr auto configurationMode = + AZ::IO::SystemFile::SF_OPEN_CREATE | AZ::IO::SystemFile::SF_OPEN_CREATE_PATH | AZ::IO::SystemFile::SF_OPEN_WRITE_ONLY; + + AZ::IO::SystemFile outputFile; + if (outputFile.Open(o3deUserPath.c_str(), configurationMode)) + { + saved = outputFile.Write(stringBuffer.data(), stringBuffer.size()) == stringBuffer.size(); + } + + AZ_Warning("ProjectManager", saved, "Unable to save Project Manager registry file to path: %s", o3deUserPath.c_str()); + } + + QString GetProjectBuiltSuccessfullyKey(const QString& projectName) + { + return QString("%1/Projects/%2/BuiltSuccessfully").arg(ProjectManagerKeyPrefix).arg(projectName); + } +} diff --git a/Code/Tools/ProjectManager/Source/ProjectManagerSettings.h b/Code/Tools/ProjectManager/Source/ProjectManagerSettings.h new file mode 100644 index 0000000000..3454909062 --- /dev/null +++ b/Code/Tools/ProjectManager/Source/ProjectManagerSettings.h @@ -0,0 +1,21 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#pragma once + +#if !defined(Q_MOC_RUN) +#include +#endif + +namespace O3DE::ProjectManager +{ + static constexpr char ProjectManagerKeyPrefix[] = "/O3DE/ProjectManager"; + + void SaveProjectManagerSettings(); + QString GetProjectBuiltSuccessfullyKey(const QString& projectName); +} diff --git a/Code/Tools/ProjectManager/Source/ProjectSettingsScreen.cpp b/Code/Tools/ProjectManager/Source/ProjectSettingsScreen.cpp index 88ae3d6319..d4ac43d655 100644 --- a/Code/Tools/ProjectManager/Source/ProjectSettingsScreen.cpp +++ b/Code/Tools/ProjectManager/Source/ProjectSettingsScreen.cpp @@ -19,6 +19,7 @@ #include #include #include +#include namespace O3DE::ProjectManager { @@ -33,11 +34,23 @@ namespace O3DE::ProjectManager // if we don't set this in a frame (just use a sub-layout) all the content will align incorrectly horizontally QFrame* projectSettingsFrame = new QFrame(this); projectSettingsFrame->setObjectName("projectSettings"); - m_verticalLayout = new QVBoxLayout(); - // you cannot remove content margins in qss - m_verticalLayout->setContentsMargins(0, 0, 0, 0); + QVBoxLayout* vLayout = new QVBoxLayout(); + vLayout->setMargin(0); + vLayout->setAlignment(Qt::AlignTop); + projectSettingsFrame->setLayout(vLayout); + + QScrollArea* scrollArea = new QScrollArea(this); + scrollArea->setWidgetResizable(true); + vLayout->addWidget(scrollArea); + + QWidget* scrollWidget = new QWidget(this); + scrollArea->setWidget(scrollWidget); + + m_verticalLayout = new QVBoxLayout(); + m_verticalLayout->setMargin(0); m_verticalLayout->setAlignment(Qt::AlignTop); + scrollWidget->setLayout(m_verticalLayout); m_projectName = new FormLineEditWidget(tr("Project name"), "", this); connect(m_projectName->lineEdit(), &QLineEdit::textChanged, this, &ProjectSettingsScreen::OnProjectNameUpdated); diff --git a/Code/Tools/ProjectManager/Source/ProjectUtils.cpp b/Code/Tools/ProjectManager/Source/ProjectUtils.cpp index bb2bcd070e..4a0e1c153c 100644 --- a/Code/Tools/ProjectManager/Source/ProjectUtils.cpp +++ b/Code/Tools/ProjectManager/Source/ProjectUtils.cpp @@ -628,11 +628,11 @@ namespace O3DE::ProjectManager return AZ::Failure(QObject::tr("Process for command '%1' timed out at %2 seconds").arg(cmd).arg(commandTimeoutSeconds)); } int resultCode = execProcess.exitCode(); + QString resultOutput = execProcess.readAllStandardOutput(); if (resultCode != 0) { - return AZ::Failure(QObject::tr("Process for command '%1' failed (result code %2").arg(cmd).arg(resultCode)); + return AZ::Failure(QObject::tr("Process for command '%1' failed (result code %2) %3").arg(cmd).arg(resultCode).arg(resultOutput)); } - QString resultOutput = execProcess.readAllStandardOutput(); return AZ::Success(resultOutput); } diff --git a/Code/Tools/ProjectManager/Source/ProjectUtils.h b/Code/Tools/ProjectManager/Source/ProjectUtils.h index 890d50d2de..ee605b5117 100644 --- a/Code/Tools/ProjectManager/Source/ProjectUtils.h +++ b/Code/Tools/ProjectManager/Source/ProjectUtils.h @@ -68,6 +68,15 @@ namespace O3DE::ProjectManager AZ::Outcome GetProjectBuildPath(const QString& projectPath); AZ::Outcome OpenCMakeGUI(const QString& projectPath); AZ::Outcome RunGetPythonScript(const QString& enginePath); + + /** + * Create a desktop shortcut. + * @param filename the name of the desktop shorcut file + * @param target the path to the target to run + * @param arguments the argument list to provide to the target + * @return AZ::Outcome with the command result on success + */ + AZ::Outcome CreateDesktopShortcut(const QString& filename, const QString& targetPath, const QStringList& arguments); AZ::IO::FixedMaxPath GetEditorDirectory(); diff --git a/Code/Tools/ProjectManager/Source/ProjectsScreen.cpp b/Code/Tools/ProjectManager/Source/ProjectsScreen.cpp index f86a689e59..4a82783949 100644 --- a/Code/Tools/ProjectManager/Source/ProjectsScreen.cpp +++ b/Code/Tools/ProjectManager/Source/ProjectsScreen.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #include @@ -22,6 +23,7 @@ #include #include #include +#include #include #include @@ -181,6 +183,7 @@ namespace O3DE::ProjectManager connect(projectButton, &ProjectButton::OpenProject, this, &ProjectsScreen::HandleOpenProject); connect(projectButton, &ProjectButton::EditProject, this, &ProjectsScreen::HandleEditProject); + connect(projectButton, &ProjectButton::EditProjectGems, this, &ProjectsScreen::HandleEditProjectGems); connect(projectButton, &ProjectButton::CopyProject, this, &ProjectsScreen::HandleCopyProject); connect(projectButton, &ProjectButton::RemoveProject, this, &ProjectsScreen::HandleRemoveProject); connect(projectButton, &ProjectButton::DeleteProject, this, &ProjectsScreen::HandleDeleteProject); @@ -269,17 +272,36 @@ namespace O3DE::ProjectManager // Add any missing project buttons and restore buttons to default state for (const ProjectInfo& project : projectsVector) { + ProjectButton* currentButton = nullptr; if (!m_projectButtons.contains(QDir::toNativeSeparators(project.m_path))) { - m_projectButtons.insert(QDir::toNativeSeparators(project.m_path), CreateProjectButton(project)); + currentButton = CreateProjectButton(project); + m_projectButtons.insert(QDir::toNativeSeparators(project.m_path), currentButton); } else { auto projectButtonIter = m_projectButtons.find(QDir::toNativeSeparators(project.m_path)); if (projectButtonIter != m_projectButtons.end()) { - projectButtonIter.value()->RestoreDefaultState(); - m_projectsFlowLayout->addWidget(projectButtonIter.value()); + currentButton = projectButtonIter.value(); + currentButton->RestoreDefaultState(); + m_projectsFlowLayout->addWidget(currentButton); + } + } + + // Check whether project manager has successfully built the project + if (currentButton) + { + auto settingsRegistry = AZ::SettingsRegistry::Get(); + bool projectBuiltSuccessfully = false; + if (settingsRegistry) + { + QString settingsKey = GetProjectBuiltSuccessfullyKey(project.m_projectName); + settingsRegistry->Get(projectBuiltSuccessfully, settingsKey.toStdString().c_str()); + } + if (!projectBuiltSuccessfully) + { + currentButton->ShowBuildRequired(); } } } @@ -448,6 +470,14 @@ namespace O3DE::ProjectManager emit ChangeScreenRequest(ProjectManagerScreen::UpdateProject); } } + void ProjectsScreen::HandleEditProjectGems(const QString& projectPath) + { + if (!WarnIfInBuildQueue(projectPath)) + { + emit NotifyCurrentProject(projectPath); + emit ChangeScreenRequest(ProjectManagerScreen::GemCatalog); + } + } void ProjectsScreen::HandleCopyProject(const ProjectInfo& projectInfo) { if (!WarnIfInBuildQueue(projectInfo.m_path)) diff --git a/Code/Tools/ProjectManager/Source/ProjectsScreen.h b/Code/Tools/ProjectManager/Source/ProjectsScreen.h index 859f8d0eae..c690621fb6 100644 --- a/Code/Tools/ProjectManager/Source/ProjectsScreen.h +++ b/Code/Tools/ProjectManager/Source/ProjectsScreen.h @@ -46,6 +46,7 @@ namespace O3DE::ProjectManager void HandleAddProjectButton(); void HandleOpenProject(const QString& projectPath); void HandleEditProject(const QString& projectPath); + void HandleEditProjectGems(const QString& projectPath); void HandleCopyProject(const ProjectInfo& projectInfo); void HandleRemoveProject(const QString& projectPath); void HandleDeleteProject(const QString& projectPath); diff --git a/Code/Tools/ProjectManager/Source/PythonBindings.cpp b/Code/Tools/ProjectManager/Source/PythonBindings.cpp index 4a73b39ea0..12f97e6d2e 100644 --- a/Code/Tools/ProjectManager/Source/PythonBindings.cpp +++ b/Code/Tools/ProjectManager/Source/PythonBindings.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -210,6 +211,16 @@ namespace RedirectOutput }); SetRedirection("stderr", g_redirect_stderr_saved, g_redirect_stderr, []([[maybe_unused]] const char* msg) { + AZStd::string lastPythonError = msg; + constexpr const char* pythonErrorPrefix = "ERROR:root:"; + constexpr size_t lengthOfErrorPrefix = AZStd::char_traits::length(pythonErrorPrefix); + auto errorPrefix = lastPythonError.find(pythonErrorPrefix); + if (errorPrefix != AZStd::string::npos) + { + lastPythonError.erase(errorPrefix, lengthOfErrorPrefix); + } + O3DE::ProjectManager::PythonBindingsInterface::Get()->AddErrorString(lastPythonError); + AZ_TracePrintf("Python", msg); }); @@ -376,6 +387,8 @@ namespace O3DE::ProjectManager pybind11::gil_scoped_release release; pybind11::gil_scoped_acquire acquire; + ClearErrorStrings(); + try { executionCallback(); @@ -515,7 +528,11 @@ namespace O3DE::ProjectManager auto pyProjectPath = QString_To_Py_Path(projectPath); for (auto path : m_manifest.attr("get_all_gems")(pyProjectPath)) { - gems.push_back(GemInfoFromPath(path, pyProjectPath)); + GemInfo gemInfo = GemInfoFromPath(path, pyProjectPath); + // Mark as downloaded because this gem was registered with an existing directory + gemInfo.m_downloadStatus = GemInfo::DownloadStatus::Downloaded; + + gems.push_back(AZStd::move(gemInfo)); } }); if (!result.IsSuccess()) @@ -560,7 +577,7 @@ namespace O3DE::ProjectManager return AZ::Success(AZStd::move(gemNames)); } - AZ::Outcome PythonBindings::RegisterGem(const QString& gemPath, const QString& projectPath) + AZ::Outcome PythonBindings::GemRegistration(const QString& gemPath, const QString& projectPath, bool remove) { bool registrationResult = false; auto result = ExecuteWithLockErrorHandling( @@ -582,7 +599,8 @@ namespace O3DE::ProjectManager pybind11::none(), // default_restricted_folder pybind11::none(), // default_third_party_folder pybind11::none(), // external_subdir_engine_path - externalProjectPath // external_subdir_project_path + externalProjectPath, // external_subdir_project_path + remove // remove ); // Returns an exit code so boolify it then invert result @@ -595,12 +613,23 @@ namespace O3DE::ProjectManager } else if (!registrationResult) { - return AZ::Failure(AZStd::string::format("Failed to register gem path %s", gemPath.toUtf8().constData())); + return AZ::Failure(AZStd::string::format( + "Failed to %s gem path %s", remove ? "unregister" : "register", gemPath.toUtf8().constData())); } return AZ::Success(); } + AZ::Outcome PythonBindings::RegisterGem(const QString& gemPath, const QString& projectPath) + { + return GemRegistration(gemPath, projectPath); + } + + AZ::Outcome PythonBindings::UnregisterGem(const QString& gemPath, const QString& projectPath) + { + return GemRegistration(gemPath, projectPath, /*remove*/true); + } + bool PythonBindings::AddProject(const QString& path) { bool registrationResult = false; @@ -715,6 +744,7 @@ namespace O3DE::ProjectManager gemInfo.m_documentationLink = Py_To_String_Optional(data, "documentation_url", ""); gemInfo.m_licenseText = Py_To_String_Optional(data, "license", "Unspecified License"); gemInfo.m_licenseLink = Py_To_String_Optional(data, "license_url", ""); + gemInfo.m_repoUri = Py_To_String_Optional(data, "repo_uri", ""); if (gemInfo.m_creator.contains("Open 3D Engine")) { @@ -728,6 +758,11 @@ namespace O3DE::ProjectManager { gemInfo.m_gemOrigin = GemInfo::GemOrigin::Remote; } + // If no origin was provided this cannot be remote and would be specified if O3DE so it should be local + else + { + gemInfo.m_gemOrigin = GemInfo::GemOrigin::Local; + } // As long Base Open3DEngine gems are installed before first startup non-remote gems will be downloaded if (gemInfo.m_gemOrigin != GemInfo::GemOrigin::Remote) @@ -1029,7 +1064,7 @@ namespace O3DE::ProjectManager return result && refreshResult; } - bool PythonBindings::AddGemRepo(const QString& repoUri) + AZ::Outcome> PythonBindings::AddGemRepo(const QString& repoUri) { bool registrationResult = false; bool result = ExecuteWithLock( @@ -1043,7 +1078,12 @@ namespace O3DE::ProjectManager registrationResult = !pythonRegistrationResult.cast(); }); - return result && registrationResult; + if (!result || !registrationResult) + { + return AZ::Failure>(GetSimpleDetailedErrorPair()); + } + + return AZ::Success(); } bool PythonBindings::RemoveGemRepo(const QString& repoUri) @@ -1113,11 +1153,11 @@ namespace O3DE::ProjectManager gemRepoInfo.m_isEnabled = false; } - if (data.contains("gem_paths")) + if (data.contains("gems")) { - for (auto gemPath : data["gem_paths"]) + for (auto gemPath : data["gems"]) { - gemRepoInfo.m_includedGemPaths.push_back(Py_To_String(gemPath)); + gemRepoInfo.m_includedGemUris.push_back(Py_To_String(gemPath)); } } } @@ -1166,49 +1206,35 @@ namespace O3DE::ProjectManager return AZ::Success(AZStd::move(gemRepos)); } - AZ::Outcome PythonBindings::DownloadGem(const QString& gemName, std::function gemProgressCallback) + AZ::Outcome, AZStd::string> PythonBindings::GetGemInfosForRepo(const QString& repoUri) { - // This process is currently limited to download a single gem at a time. - bool downloadSucceeded = false; - - m_requestCancelDownload = false; - auto result = ExecuteWithLockErrorHandling( + QVector gemInfos; + AZ::Outcome result = ExecuteWithLockErrorHandling( [&] { - auto downloadResult = m_download.attr("download_gem")( - QString_To_Py_String(gemName), // gem name - pybind11::none(), // destination path - false, // skip auto register - pybind11::cpp_function( - [this, gemProgressCallback](int progress) - { - gemProgressCallback(progress); + auto pyUri = QString_To_Py_String(repoUri); + auto gemPaths = m_repo.attr("get_gem_json_paths_from_cached_repo")(pyUri); - return m_requestCancelDownload; - }) // Callback for download progress and cancelling - ); - downloadSucceeded = (downloadResult.cast() == 0); + if (pybind11::isinstance(gemPaths)) + { + for (auto path : gemPaths) + { + GemInfo gemInfo = GemInfoFromPath(path, pybind11::none()); + gemInfo.m_downloadStatus = GemInfo::DownloadStatus::NotDownloaded; + gemInfos.push_back(gemInfo); + } + } }); - if (!result.IsSuccess()) { - return result; - } - else if (!downloadSucceeded) - { - return AZ::Failure("Failed to download gem."); + return AZ::Failure(result.GetError()); } - return AZ::Success(); + return AZ::Success(AZStd::move(gemInfos)); } - void PythonBindings::CancelDownload() - { - m_requestCancelDownload = true; - } - - AZ::Outcome, AZStd::string> PythonBindings::GetAllGemRepoGemsInfos() + AZ::Outcome, AZStd::string> PythonBindings::GetGemInfosForAllRepos() { QVector gemInfos; AZ::Outcome result = ExecuteWithLockErrorHandling( @@ -1234,4 +1260,84 @@ namespace O3DE::ProjectManager return AZ::Success(AZStd::move(gemInfos)); } + + AZ::Outcome> PythonBindings::DownloadGem( + const QString& gemName, std::function gemProgressCallback, bool force) + { + // This process is currently limited to download a single gem at a time. + bool downloadSucceeded = false; + + m_requestCancelDownload = false; + auto result = ExecuteWithLockErrorHandling( + [&] + { + auto downloadResult = m_download.attr("download_gem")( + QString_To_Py_String(gemName), // gem name + pybind11::none(), // destination path + false, // skip auto register + force, // force overwrite + pybind11::cpp_function( + [this, gemProgressCallback](int bytesDownloaded, int totalBytes) + { + gemProgressCallback(bytesDownloaded, totalBytes); + + return m_requestCancelDownload; + }) // Callback for download progress and cancelling + ); + downloadSucceeded = (downloadResult.cast() == 0); + }); + + + if (!result.IsSuccess()) + { + AZStd::pair pythonRunError(result.GetError(), result.GetError()); + return AZ::Failure>(AZStd::move(pythonRunError)); + } + else if (!downloadSucceeded) + { + return AZ::Failure>(GetSimpleDetailedErrorPair()); + } + + return AZ::Success(); + } + + void PythonBindings::CancelDownload() + { + m_requestCancelDownload = true; + } + + bool PythonBindings::IsGemUpdateAvaliable(const QString& gemName, const QString& lastUpdated) + { + bool updateAvaliableResult = false; + bool result = ExecuteWithLock( + [&] + { + auto pyGemName = QString_To_Py_String(gemName); + auto pyLastUpdated = QString_To_Py_String(lastUpdated); + auto pythonUpdateAvaliableResult = m_download.attr("is_o3de_gem_update_available")(pyGemName, pyLastUpdated); + + updateAvaliableResult = pythonUpdateAvaliableResult.cast(); + }); + + return result && updateAvaliableResult; + } + + AZStd::pair PythonBindings::GetSimpleDetailedErrorPair() + { + AZStd::string detailedString = m_pythonErrorStrings.size() == 1 + ? "" + : AZStd::accumulate(m_pythonErrorStrings.begin(), m_pythonErrorStrings.end(), AZStd::string("")); + + return AZStd::pair(m_pythonErrorStrings.front(), detailedString); + } + + void PythonBindings::AddErrorString(AZStd::string errorString) + { + m_pythonErrorStrings.push_back(errorString); + } + + void PythonBindings::ClearErrorStrings() + { + m_pythonErrorStrings.clear(); + } } diff --git a/Code/Tools/ProjectManager/Source/PythonBindings.h b/Code/Tools/ProjectManager/Source/PythonBindings.h index 4375d56d02..48841b6565 100644 --- a/Code/Tools/ProjectManager/Source/PythonBindings.h +++ b/Code/Tools/ProjectManager/Source/PythonBindings.h @@ -43,6 +43,7 @@ namespace O3DE::ProjectManager AZ::Outcome, AZStd::string> GetAllGemInfos(const QString& projectPath) override; AZ::Outcome, AZStd::string> GetEnabledGemNames(const QString& projectPath) override; AZ::Outcome RegisterGem(const QString& gemPath, const QString& projectPath = {}) override; + AZ::Outcome UnregisterGem(const QString& gemPath, const QString& projectPath = {}) override; // Project AZ::Outcome CreateProject(const QString& projectTemplatePath, const ProjectInfo& projectInfo) override; @@ -61,12 +62,18 @@ namespace O3DE::ProjectManager // Gem Repos AZ::Outcome RefreshGemRepo(const QString& repoUri) override; bool RefreshAllGemRepos() override; - bool AddGemRepo(const QString& repoUri) override; + AZ::Outcome> AddGemRepo(const QString& repoUri) override; bool RemoveGemRepo(const QString& repoUri) override; AZ::Outcome, AZStd::string> GetAllGemRepoInfos() override; - AZ::Outcome DownloadGem(const QString& gemName, std::function gemProgressCallback) override; + AZ::Outcome, AZStd::string> GetGemInfosForRepo(const QString& repoUri) override; + AZ::Outcome, AZStd::string> GetGemInfosForAllRepos() override; + AZ::Outcome> DownloadGem( + const QString& gemName, std::function gemProgressCallback, bool force = false) override; void CancelDownload() override; - AZ::Outcome, AZStd::string> GetAllGemRepoGemsInfos() override; + bool IsGemUpdateAvaliable(const QString& gemName, const QString& lastUpdated) override; + + void AddErrorString(AZStd::string errorString) override; + void ClearErrorStrings() override; private: AZ_DISABLE_COPY_MOVE(PythonBindings); @@ -77,8 +84,10 @@ namespace O3DE::ProjectManager GemRepoInfo GetGemRepoInfo(pybind11::handle repoUri); ProjectInfo ProjectInfoFromPath(pybind11::handle path); ProjectTemplateInfo ProjectTemplateInfoFromPath(pybind11::handle path, pybind11::handle pyProjectPath); + AZ::Outcome GemRegistration(const QString& gemPath, const QString& projectPath, bool remove = false); bool RegisterThisEngine(); bool StopPython(); + AZStd::pair GetSimpleDetailedErrorPair(); bool m_pythonStarted = false; @@ -98,5 +107,6 @@ namespace O3DE::ProjectManager pybind11::handle m_pathlib; bool m_requestCancelDownload = false; + AZStd::vector m_pythonErrorStrings; }; } diff --git a/Code/Tools/ProjectManager/Source/PythonBindingsInterface.h b/Code/Tools/ProjectManager/Source/PythonBindingsInterface.h index 1134804f1f..c7c8af2ce1 100644 --- a/Code/Tools/ProjectManager/Source/PythonBindingsInterface.h +++ b/Code/Tools/ProjectManager/Source/PythonBindingsInterface.h @@ -94,11 +94,19 @@ namespace O3DE::ProjectManager /** * Registers the gem to the specified project, or to the o3de_manifest.json if no project path is given * @param gemPath the path to the gem - * @param projectPath the path to the project. If empty, will register the external path in o3de_manifest.json + * @param projectPath the path to the project. If empty, will register the external path in o3de_manifest.json * @return An outcome with the success flag as well as an error message in case of a failure. */ virtual AZ::Outcome RegisterGem(const QString& gemPath, const QString& projectPath = {}) = 0; + /** + * Unregisters the gem from the specified project, or from the o3de_manifest.json if no project path is given + * @param gemPath the path to the gem + * @param projectPath the path to the project. If empty, will unregister the external path in o3de_manifest.json + * @return An outcome with the success flag as well as an error message in case of a failure. + */ + virtual AZ::Outcome UnregisterGem(const QString& gemPath, const QString& projectPath = {}) = 0; + // Projects @@ -192,9 +200,9 @@ namespace O3DE::ProjectManager /** * Registers this gem repo with the current engine. * @param repoUri the absolute filesystem path or url to the gem repo. - * @return true on success, false on failure. + * @return an outcome with a pair of string error and detailed messages on failure. */ - virtual bool AddGemRepo(const QString& repoUri) = 0; + virtual AZ::Outcome> AddGemRepo(const QString& repoUri) = 0; /** * Unregisters this gem repo with the current engine. @@ -210,23 +218,51 @@ namespace O3DE::ProjectManager virtual AZ::Outcome, AZStd::string> GetAllGemRepoInfos() = 0; /** - * Downloads and registers a Gem. - * @param gemName the name of the Gem to download - * @param gemProgressCallback a callback function that is called with an int percentage download value - * @return an outcome with a string error message on failure. + * Gathers all gem infos from the provided repo + * @param repoUri the absolute filesystem path or url to the gem repo. + * @return A list of gem infos. */ - virtual AZ::Outcome DownloadGem(const QString& gemName, std::function gemProgressCallback) = 0; - - /** - * Cancels the current download. - */ - virtual void CancelDownload() = 0; + virtual AZ::Outcome, AZStd::string> GetGemInfosForRepo(const QString& repoUri) = 0; /** * Gathers all gem infos for all gems registered from repos. * @return A list of gem infos. */ - virtual AZ::Outcome, AZStd::string> GetAllGemRepoGemsInfos() = 0; + virtual AZ::Outcome, AZStd::string> GetGemInfosForAllRepos() = 0; + + /** + * Downloads and registers a Gem. + * @param gemName the name of the Gem to download. + * @param gemProgressCallback a callback function that is called with an int percentage download value. + * @param force should we forcibly overwrite the old version of the gem. + * @return an outcome with a pair of string error and detailed messages on failure. + */ + virtual AZ::Outcome> DownloadGem( + const QString& gemName, std::function gemProgressCallback, bool force = false) = 0; + + /** + * Cancels the current download. + */ + virtual void CancelDownload() = 0; + + /** + * Checks if there is an update avaliable for a gem on a repo. + * @param gemName the name of the gem to check. + * @param lastUpdated last time the gem was update. + * @return true if update is avaliable, false if not. + */ + virtual bool IsGemUpdateAvaliable(const QString& gemName, const QString& lastUpdated) = 0; + + /** + * Add an error string to be returned when the current python call is complete. + * @param The error string to be displayed. + */ + virtual void AddErrorString(AZStd::string errorString) = 0; + + /** + * Clears the current list of error strings. + */ + virtual void ClearErrorStrings() = 0; }; using PythonBindingsInterface = AZ::Interface; diff --git a/Code/Tools/ProjectManager/Source/ScreenWidget.h b/Code/Tools/ProjectManager/Source/ScreenWidget.h index 148dcdb8c8..a84fb0be80 100644 --- a/Code/Tools/ProjectManager/Source/ScreenWidget.h +++ b/Code/Tools/ProjectManager/Source/ScreenWidget.h @@ -47,9 +47,9 @@ namespace O3DE::ProjectManager return tr("Missing"); } - virtual bool ContainsScreen([[maybe_unused]] ProjectManagerScreen screen) + virtual bool ContainsScreen(ProjectManagerScreen screen) { - return false; + return GetScreenEnum() == screen; } virtual void GoToScreen([[maybe_unused]] ProjectManagerScreen screen) { @@ -58,7 +58,6 @@ namespace O3DE::ProjectManager //! Notify this screen it is the current screen virtual void NotifyCurrentScreen() { - } signals: diff --git a/Code/Tools/ProjectManager/Source/UpdateProjectCtrl.cpp b/Code/Tools/ProjectManager/Source/UpdateProjectCtrl.cpp index fb16484961..36d78ed2ac 100644 --- a/Code/Tools/ProjectManager/Source/UpdateProjectCtrl.cpp +++ b/Code/Tools/ProjectManager/Source/UpdateProjectCtrl.cpp @@ -15,6 +15,9 @@ #include #include #include +#include +#include +#include #include #include @@ -94,6 +97,17 @@ namespace O3DE::ProjectManager return ProjectManagerScreen::UpdateProject; } + bool UpdateProjectCtrl::ContainsScreen(ProjectManagerScreen screen) + { + // Do not include GemRepos because we don't want to advertise jumping to it from all other screens here + return screen == GetScreenEnum() || screen == ProjectManagerScreen::GemCatalog; + } + + void UpdateProjectCtrl::GoToScreen(ProjectManagerScreen screen) + { + OnChangeScreenRequest(screen); + } + // Called when pressing "Edit Project Settings..." void UpdateProjectCtrl::NotifyCurrentScreen() { @@ -114,6 +128,16 @@ namespace O3DE::ProjectManager m_stack->setCurrentWidget(m_gemRepoScreen); Update(); } + else if (screen == ProjectManagerScreen::GemCatalog) + { + m_stack->setCurrentWidget(m_gemCatalogScreen); + Update(); + } + else if (screen == ProjectManagerScreen::UpdateProjectSettings) + { + m_stack->setCurrentWidget(m_updateSettingsScreen); + Update(); + } else { emit ChangeScreenRequest(screen); @@ -280,6 +304,21 @@ namespace O3DE::ProjectManager } } + if (newProjectSettings.m_projectName != m_projectInfo.m_projectName) + { + // update reg key + QString oldSettingsKey = GetProjectBuiltSuccessfullyKey(m_projectInfo.m_projectName); + QString newSettingsKey = GetProjectBuiltSuccessfullyKey(newProjectSettings.m_projectName); + + auto settingsRegistry = AZ::SettingsRegistry::Get(); + bool projectBuiltSuccessfully = false; + if (settingsRegistry && settingsRegistry->Get(projectBuiltSuccessfully, oldSettingsKey.toStdString().c_str())) + { + settingsRegistry->Set(newSettingsKey.toStdString().c_str(), projectBuiltSuccessfully); + SaveProjectManagerSettings(); + } + } + if (!newProjectSettings.m_newPreviewImagePath.isEmpty()) { if (!ProjectUtils::ReplaceProjectFile( diff --git a/Code/Tools/ProjectManager/Source/UpdateProjectCtrl.h b/Code/Tools/ProjectManager/Source/UpdateProjectCtrl.h index ee6fc792f2..070e2c58bf 100644 --- a/Code/Tools/ProjectManager/Source/UpdateProjectCtrl.h +++ b/Code/Tools/ProjectManager/Source/UpdateProjectCtrl.h @@ -24,7 +24,8 @@ namespace O3DE::ProjectManager QT_FORWARD_DECLARE_CLASS(GemCatalogScreen) QT_FORWARD_DECLARE_CLASS(GemRepoScreen) - class UpdateProjectCtrl : public ScreenWidget + class UpdateProjectCtrl + : public ScreenWidget { Q_OBJECT public: @@ -32,7 +33,8 @@ namespace O3DE::ProjectManager ~UpdateProjectCtrl() = default; ProjectManagerScreen GetScreenEnum() override; - protected: + bool ContainsScreen(ProjectManagerScreen screen) override; + void GoToScreen(ProjectManagerScreen screen) override; void NotifyCurrentScreen() override; protected slots: diff --git a/Code/Tools/ProjectManager/Source/UpdateProjectSettingsScreen.cpp b/Code/Tools/ProjectManager/Source/UpdateProjectSettingsScreen.cpp index 3bfc07c5b0..a430102c27 100644 --- a/Code/Tools/ProjectManager/Source/UpdateProjectSettingsScreen.cpp +++ b/Code/Tools/ProjectManager/Source/UpdateProjectSettingsScreen.cpp @@ -35,7 +35,7 @@ namespace O3DE::ProjectManager previewExtrasLayout->setContentsMargins(50, 0, 0, 0); QLabel* projectPreviewLabel = new QLabel(tr("Select an image (PNG). Minimum %1 x %2 pixels.") - .arg(QString::number(ProjectPreviewImageWidth), QString::number(ProjectPreviewImageHeight))); + .arg(QString::number(ProjectPreviewImageWidth), QString::number(ProjectPreviewImageHeight))); projectPreviewLabel->setObjectName("projectPreviewLabel"); previewExtrasLayout->addWidget(projectPreviewLabel); diff --git a/Code/Tools/ProjectManager/project_manager_files.cmake b/Code/Tools/ProjectManager/project_manager_files.cmake index e2e35717f6..43c11edacc 100644 --- a/Code/Tools/ProjectManager/project_manager_files.cmake +++ b/Code/Tools/ProjectManager/project_manager_files.cmake @@ -58,6 +58,8 @@ set(FILES Source/CreateProjectCtrl.cpp Source/UpdateProjectCtrl.h Source/UpdateProjectCtrl.cpp + Source/ProjectManagerSettings.h + Source/ProjectManagerSettings.cpp Source/ProjectsScreen.h Source/ProjectsScreen.cpp Source/ProjectSettingsScreen.h @@ -96,6 +98,10 @@ set(FILES Source/GemCatalog/GemListHeaderWidget.cpp Source/GemCatalog/GemModel.h Source/GemCatalog/GemModel.cpp + Source/GemCatalog/GemUninstallDialog.h + Source/GemCatalog/GemUninstallDialog.cpp + Source/GemCatalog/GemUpdateDialog.h + Source/GemCatalog/GemUpdateDialog.cpp Source/GemCatalog/GemDependenciesDialog.h Source/GemCatalog/GemDependenciesDialog.cpp Source/GemCatalog/GemRequirementDialog.h diff --git a/Code/Tools/PythonBindingsExample/source/Application.cpp b/Code/Tools/PythonBindingsExample/source/Application.cpp index ab1d1b5acf..cfb28d8e09 100644 --- a/Code/Tools/PythonBindingsExample/source/Application.cpp +++ b/Code/Tools/PythonBindingsExample/source/Application.cpp @@ -39,7 +39,6 @@ namespace PythonBindingsExample AzToolsFramework::EditorPythonConsoleNotificationBus::Handler::BusConnect(); // prepare the Python binding gem(s) - CalculateExecutablePath(); Start(Descriptor()); AZ::SerializeContext* context; diff --git a/Code/Tools/SceneAPI/SceneCore/Tests/Containers/SceneBehaviorTests.cpp b/Code/Tools/SceneAPI/SceneCore/Tests/Containers/SceneBehaviorTests.cpp index 3bf75e2d9b..0478e6cdb2 100644 --- a/Code/Tools/SceneAPI/SceneCore/Tests/Containers/SceneBehaviorTests.cpp +++ b/Code/Tools/SceneAPI/SceneCore/Tests/Containers/SceneBehaviorTests.cpp @@ -368,7 +368,6 @@ namespace AZ::SceneAPI::Containers MOCK_METHOD0(GetSerializeContext, AZ::SerializeContext* ()); MOCK_METHOD0(GetJsonRegistrationContext, AZ::JsonRegistrationContext* ()); MOCK_METHOD0(GetBehaviorContext, AZ::BehaviorContext* ()); - MOCK_CONST_METHOD0(GetAppRoot, const char*()); MOCK_CONST_METHOD0(GetEngineRoot, const char*()); MOCK_CONST_METHOD0(GetExecutableFolder, const char* ()); MOCK_CONST_METHOD1(QueryApplicationType, void(AZ::ApplicationTypeQuery&)); diff --git a/Code/Tools/SerializeContextTools/Converter.cpp b/Code/Tools/SerializeContextTools/Converter.cpp index 6a8bebdbfc..294bf941ac 100644 --- a/Code/Tools/SerializeContextTools/Converter.cpp +++ b/Code/Tools/SerializeContextTools/Converter.cpp @@ -202,8 +202,6 @@ namespace AZ bool skipSystem = commandLine->HasSwitch("skipsystem"); bool isDryRun = commandLine->HasSwitch("dryrun"); - const char* appRoot = const_cast(application).GetAppRoot(); - PathDocumentContainer documents; bool result = true; const AZStd::string& filePath = application.GetConfigFilePath(); @@ -230,7 +228,7 @@ namespace AZ } auto callback = - [&result, skipGems, skipSystem, &configurationName, sourceGameFolder, &appRoot, &documents, &convertSettings, &verifySettings] + [&result, skipGems, skipSystem, &configurationName, sourceGameFolder, &documents, &convertSettings, &verifySettings] (void* classPtr, const Uuid& classId, SerializeContext* context) { if (classId == azrtti_typeid()) @@ -238,7 +236,7 @@ namespace AZ if (!skipSystem) { result = ConvertSystemSettings(documents, *reinterpret_cast(classPtr), - configurationName, sourceGameFolder, appRoot) && result; + configurationName, sourceGameFolder) && result; } // Cleanup the Serialized Element to allow any classes within the element's hierarchy to delete @@ -443,7 +441,7 @@ namespace AZ } bool Converter::ConvertSystemSettings(PathDocumentContainer& documents, const ComponentApplication::Descriptor& descriptor, - const AZStd::string& configurationName, const AZ::IO::PathView& projectFolder, [[maybe_unused]] const AZStd::string& applicationRoot) + const AZStd::string& configurationName, const AZ::IO::PathView& projectFolder) { AZ::IO::FixedMaxPath memoryFilePath{ projectFolder }; memoryFilePath /= "Registry"; diff --git a/Code/Tools/SerializeContextTools/Converter.h b/Code/Tools/SerializeContextTools/Converter.h index 6c8f6c70fb..7d30ca2a3a 100644 --- a/Code/Tools/SerializeContextTools/Converter.h +++ b/Code/Tools/SerializeContextTools/Converter.h @@ -43,7 +43,7 @@ namespace AZ using PathDocumentContainer = AZStd::vector; static bool ConvertSystemSettings(PathDocumentContainer& documents, const ComponentApplication::Descriptor& descriptor, - const AZStd::string& configurationName, const AZ::IO::PathView& projectFolder, const AZStd::string& applicationRoot); + const AZStd::string& configurationName, const AZ::IO::PathView& projectFolder); static bool ConvertSystemComponents(PathDocumentContainer& documents, const Entity& entity, const AZStd::string& configurationName, const AZ::IO::PathView& projectFolder, const JsonSerializerSettings& convertSettings, const JsonDeserializerSettings& verifySettings); diff --git a/Gems/AWSClientAuth/Code/Include/Private/Authorization/AWSClientAuthCognitoCachingAuthenticatedCredentialsProvider.h b/Gems/AWSClientAuth/Code/Include/Private/Authorization/AWSClientAuthCognitoCachingAuthenticatedCredentialsProvider.h new file mode 100644 index 0000000000..ad7faf4671 --- /dev/null +++ b/Gems/AWSClientAuth/Code/Include/Private/Authorization/AWSClientAuthCognitoCachingAuthenticatedCredentialsProvider.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#pragma once + +#include +#include +#include + +namespace AWSClientAuth +{ + //! Cognito Caching Credentials Provider implementation that is derived from AWS Native SDK. + //! For use with authenticated credentials. + class AWSClientAuthCognitoCachingAuthenticatedCredentialsProvider + : public Aws::Auth::CognitoCachingCredentialsProvider + { + public: + AWSClientAuthCognitoCachingAuthenticatedCredentialsProvider( + const std::shared_ptr& identityRepository, + const std::shared_ptr& cognitoIdentityClient = nullptr); + + protected: + Aws::CognitoIdentity::Model::GetCredentialsForIdentityOutcome GetCredentialsFromCognito() const override; + }; + + //! Cognito Caching Credentials Provider implementation that is eventually derived from AWS Native SDK. + //! For use with anonymous credentials. + class AWSClientAuthCachingAnonymousCredsProvider : public AWSClientAuthCognitoCachingAuthenticatedCredentialsProvider + { + public: + AWSClientAuthCachingAnonymousCredsProvider( + const std::shared_ptr& identityRepository, + const std::shared_ptr& cognitoIdentityClient = nullptr); + + protected: + Aws::CognitoIdentity::Model::GetCredentialsForIdentityOutcome GetCredentialsFromCognito() const override; + }; + +} // namespace AWSClientAuth diff --git a/Gems/AWSClientAuth/Code/Include/Private/Authorization/AWSCognitoAuthorizationController.h b/Gems/AWSClientAuth/Code/Include/Private/Authorization/AWSCognitoAuthorizationController.h index 042be8fe89..1378feff19 100644 --- a/Gems/AWSClientAuth/Code/Include/Private/Authorization/AWSCognitoAuthorizationController.h +++ b/Gems/AWSClientAuth/Code/Include/Private/Authorization/AWSCognitoAuthorizationController.h @@ -9,6 +9,7 @@ #pragma once #include +#include #include #include #include @@ -51,8 +52,8 @@ namespace AWSClientAuth std::shared_ptr m_persistentCognitoIdentityProvider; std::shared_ptr m_persistentAnonymousCognitoIdentityProvider; - std::shared_ptr m_cognitoCachingCredentialsProvider; - std::shared_ptr m_cognitoCachingAnonymousCredentialsProvider; + std::shared_ptr m_cognitoCachingCredentialsProvider; + std::shared_ptr m_cognitoCachingAnonymousCredentialsProvider; AZStd::string m_cognitoIdentityPoolId; AZStd::string m_formattedCognitoUserPoolId; diff --git a/Gems/AWSClientAuth/Code/Source/Authorization/AWSClientAuthCognitoCachingAuthenticatedCredentialsProvider.cpp b/Gems/AWSClientAuth/Code/Source/Authorization/AWSClientAuthCognitoCachingAuthenticatedCredentialsProvider.cpp new file mode 100644 index 0000000000..2492afa441 --- /dev/null +++ b/Gems/AWSClientAuth/Code/Source/Authorization/AWSClientAuthCognitoCachingAuthenticatedCredentialsProvider.cpp @@ -0,0 +1,122 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include + +#include + +#include +#include +#include +#include +#include +#include +#include + + +namespace AWSClientAuth +{ + static const char* AUTH_LOG_TAG = "AWSClientAuthCognitoCachingAuthenticatedCredentialsProvider"; + static const char* ANON_LOG_TAG = "AWSClientAuthCachingAnonymousCredsProvider"; + + // Modification of https://github.com/aws/aws-sdk-cpp/blob/main/aws-cpp-sdk-identity-management/source/auth/CognitoCachingCredentialsProvider.cpp#L92 + // to work around account ID requirement. Account id is not required for call to succeed and is not set unless provided. + // see: https://github.com/aws/aws-sdk-cpp/issues/1448 + Aws::CognitoIdentity::Model::GetCredentialsForIdentityOutcome FetchCredsFromCognito( + const Aws::CognitoIdentity::CognitoIdentityClient& cognitoIdentityClient, + Aws::Auth::PersistentCognitoIdentityProvider& identityRepository, + const char* logTag, + bool includeLogins) + { + auto logins = identityRepository.GetLogins(); + Aws::Map cognitoLogins; + for (auto& login : logins) + { + cognitoLogins[login.first] = login.second.accessToken; + } + + if (!identityRepository.HasIdentityId()) + { + auto accountId = identityRepository.GetAccountId(); + auto identityPoolId = identityRepository.GetIdentityPoolId(); + + Aws::CognitoIdentity::Model::GetIdRequest getIdRequest; + getIdRequest.SetIdentityPoolId(identityPoolId); + + if (!accountId.empty()) // new check + { + getIdRequest.SetAccountId(accountId); + AWS_LOGSTREAM_INFO(logTag, "Identity not found, requesting an id for accountId " + << accountId << " identity pool id " + << identityPoolId << " with logins."); + } + else + { + AWS_LOGSTREAM_INFO( + logTag, "Identity not found, requesting an id for identity pool id %s" << identityPoolId << " with logins."); + } + if (includeLogins) + { + getIdRequest.SetLogins(cognitoLogins); + } + + auto getIdOutcome = cognitoIdentityClient.GetId(getIdRequest); + if (getIdOutcome.IsSuccess()) + { + auto identityId = getIdOutcome.GetResult().GetIdentityId(); + AWS_LOGSTREAM_INFO(logTag, "Successfully retrieved identity: " << identityId); + identityRepository.PersistIdentityId(identityId); + } + else + { + AWS_LOGSTREAM_ERROR( + logTag, + "Failed to retrieve identity. Error: " << getIdOutcome.GetError().GetExceptionName() << " " + << getIdOutcome.GetError().GetMessage()); + return Aws::CognitoIdentity::Model::GetCredentialsForIdentityOutcome(getIdOutcome.GetError()); + } + } + + Aws::CognitoIdentity::Model::GetCredentialsForIdentityRequest getCredentialsForIdentityRequest; + getCredentialsForIdentityRequest.SetIdentityId(identityRepository.GetIdentityId()); + if (includeLogins) + { + getCredentialsForIdentityRequest.SetLogins(cognitoLogins); + } + + return cognitoIdentityClient.GetCredentialsForIdentity(getCredentialsForIdentityRequest); + } + + AWSClientAuthCognitoCachingAuthenticatedCredentialsProvider::AWSClientAuthCognitoCachingAuthenticatedCredentialsProvider( + const std::shared_ptr& identityRepository, + const std::shared_ptr& cognitoIdentityClient) + : CognitoCachingCredentialsProvider(identityRepository, cognitoIdentityClient) + { + } + + Aws::CognitoIdentity::Model::GetCredentialsForIdentityOutcome + AWSClientAuthCognitoCachingAuthenticatedCredentialsProvider::GetCredentialsFromCognito() const + { + return FetchCredsFromCognito(*m_cognitoIdentityClient, *m_identityRepository, AUTH_LOG_TAG, true); + } + + AWSClientAuthCachingAnonymousCredsProvider::AWSClientAuthCachingAnonymousCredsProvider( + const std::shared_ptr& identityRepository, + const std::shared_ptr& cognitoIdentityClient) + : AWSClientAuthCognitoCachingAuthenticatedCredentialsProvider(identityRepository, cognitoIdentityClient) + { + } + + Aws::CognitoIdentity::Model::GetCredentialsForIdentityOutcome AWSClientAuthCachingAnonymousCredsProvider:: + GetCredentialsFromCognito() const + { + return FetchCredsFromCognito(*m_cognitoIdentityClient, *m_identityRepository, ANON_LOG_TAG, false); + } + + +} // namespace AWSClientAuth diff --git a/Gems/AWSClientAuth/Code/Source/Authorization/AWSCognitoAuthorizationController.cpp b/Gems/AWSClientAuth/Code/Source/Authorization/AWSCognitoAuthorizationController.cpp index 3af28582d6..f53149c90f 100644 --- a/Gems/AWSClientAuth/Code/Source/Authorization/AWSCognitoAuthorizationController.cpp +++ b/Gems/AWSClientAuth/Code/Source/Authorization/AWSCognitoAuthorizationController.cpp @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -38,10 +39,12 @@ namespace AWSClientAuth auto identityClient = AZ::Interface::Get()->GetCognitoIdentityClient(); m_cognitoCachingCredentialsProvider = - std::make_shared(m_persistentCognitoIdentityProvider, identityClient); + std::make_shared( + m_persistentCognitoIdentityProvider, identityClient); m_cognitoCachingAnonymousCredentialsProvider = - std::make_shared(m_persistentAnonymousCognitoIdentityProvider, identityClient); + std::make_shared( + m_persistentAnonymousCognitoIdentityProvider, identityClient); } AWSCognitoAuthorizationController::~AWSCognitoAuthorizationController() @@ -65,9 +68,13 @@ namespace AWSClientAuth AWSCore::AWSResourceMappingRequestBus::BroadcastResult( m_cognitoIdentityPoolId, &AWSCore::AWSResourceMappingRequests::GetResourceNameId, CognitoIdentityPoolIdResourceMappingKey); - if (m_awsAccountId.empty() || m_cognitoIdentityPoolId.empty()) + if (m_awsAccountId.empty()) + { + AZ_TracePrintf("AWSCognitoAuthorizationController", "AWS account id not not configured. Proceeding without it."); + } + + if (m_cognitoIdentityPoolId.empty()) { - AZ_Warning("AWSCognitoAuthorizationController", !m_awsAccountId.empty(), "Missing AWS account id not configured."); AZ_Warning("AWSCognitoAuthorizationController", !m_cognitoIdentityPoolId.empty(), "Missing Cognito Identity pool id in resource mappings."); return false; } diff --git a/Gems/AWSClientAuth/Code/Tests/AWSClientAuthGemMock.h b/Gems/AWSClientAuth/Code/Tests/AWSClientAuthGemMock.h index 1d2e8bad42..19314035c4 100644 --- a/Gems/AWSClientAuth/Code/Tests/AWSClientAuthGemMock.h +++ b/Gems/AWSClientAuth/Code/Tests/AWSClientAuthGemMock.h @@ -608,7 +608,6 @@ namespace AWSClientAuthUnitTest AZ::Entity* FindEntity(const AZ::EntityId&) override { return nullptr; } AZ::BehaviorContext* GetBehaviorContext() override { return nullptr; } const char* GetExecutableFolder() const override { return nullptr; } - const char* GetAppRoot() const override { return nullptr; } const char* GetEngineRoot() const override { return nullptr; } void EnumerateEntities(const EntityCallback& /*callback*/) override {} void QueryApplicationType(AZ::ApplicationTypeQuery& /*appType*/) const override {} diff --git a/Gems/AWSClientAuth/Code/Tests/Authorization/AWSCognitoAuthorizationControllerTest.cpp b/Gems/AWSClientAuth/Code/Tests/Authorization/AWSCognitoAuthorizationControllerTest.cpp index 9f31891512..19064eb1ed 100644 --- a/Gems/AWSClientAuth/Code/Tests/Authorization/AWSCognitoAuthorizationControllerTest.cpp +++ b/Gems/AWSClientAuth/Code/Tests/Authorization/AWSCognitoAuthorizationControllerTest.cpp @@ -62,6 +62,14 @@ TEST_F(AWSCognitoAuthorizationControllerTest, Initialize_Success) ASSERT_TRUE(m_mockController->m_cognitoIdentityPoolId == AWSClientAuthUnitTest::TEST_RESOURCE_NAME_ID); } +TEST_F(AWSCognitoAuthorizationControllerTest, Initialize_Success_GetAWSAccountEmpty) +{ + EXPECT_CALL(m_awsResourceMappingRequestBusMock, GetResourceNameId(testing::_)).Times(2); + EXPECT_CALL(m_awsResourceMappingRequestBusMock, GetDefaultAccountId()).Times(1).WillOnce(testing::Return("")); + EXPECT_CALL(m_awsResourceMappingRequestBusMock, GetDefaultRegion()).Times(1); + ASSERT_TRUE(m_mockController->Initialize()); +} + TEST_F(AWSCognitoAuthorizationControllerTest, RequestAWSCredentials_WithLogins_Success) { AWSClientAuth::AuthenticationTokens tokens( @@ -121,7 +129,7 @@ TEST_F(AWSCognitoAuthorizationControllerTest, MultipleCalls_UsesCacheCredentials m_mockController->RequestAWSCredentialsAsync(); } -TEST_F(AWSCognitoAuthorizationControllerTest, RequestAWSCredentials_Fail_GetIdError) +TEST_F(AWSCognitoAuthorizationControllerTest, RequestAWSCredentials_Fail_GetIdError) // fail { AWSClientAuth::AuthenticationTokens cognitoTokens( AWSClientAuthUnitTest::TEST_TOKEN, AWSClientAuthUnitTest::TEST_TOKEN, AWSClientAuthUnitTest::TEST_TOKEN, @@ -140,7 +148,9 @@ TEST_F(AWSCognitoAuthorizationControllerTest, RequestAWSCredentials_Fail_GetIdEr EXPECT_CALL(*m_cognitoIdentityClientMock, GetCredentialsForIdentity(testing::_)).Times(0); EXPECT_CALL(m_awsCognitoAuthorizationNotificationsBusMock, OnRequestAWSCredentialsSuccess(testing::_)).Times(0); EXPECT_CALL(m_awsCognitoAuthorizationNotificationsBusMock, OnRequestAWSCredentialsFail(testing::_)).Times(1); + AZ_TEST_START_TRACE_SUPPRESSION; m_mockController->RequestAWSCredentialsAsync(); + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; } TEST_F(AWSCognitoAuthorizationControllerTest, RequestAWSCredentials_Fail_GetCredentialsForIdentityError) @@ -174,7 +184,9 @@ TEST_F(AWSCognitoAuthorizationControllerTest, RequestAWSCredentials_Fail_GetCred EXPECT_CALL(*m_cognitoIdentityClientMock, GetCredentialsForIdentity(testing::_)).Times(1).WillOnce(testing::Return(outcome)); EXPECT_CALL(m_awsCognitoAuthorizationNotificationsBusMock, OnRequestAWSCredentialsSuccess(testing::_)).Times(0); EXPECT_CALL(m_awsCognitoAuthorizationNotificationsBusMock, OnRequestAWSCredentialsFail(testing::_)).Times(1); + AZ_TEST_START_TRACE_SUPPRESSION; m_mockController->RequestAWSCredentialsAsync(); + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; } TEST_F(AWSCognitoAuthorizationControllerTest, AddRemoveLogins_Succuess) @@ -321,7 +333,7 @@ TEST_F(AWSCognitoAuthorizationControllerTest, GetCredentialsProvider_NoPersisted EXPECT_TRUE(actualCredentialsProvider == m_mockController->m_cognitoCachingAnonymousCredentialsProvider); } -TEST_F(AWSCognitoAuthorizationControllerTest, GetCredentialsProvider_NoPersistedLogins_NoAnonymousCredentials_ResultNullPtr) +TEST_F(AWSCognitoAuthorizationControllerTest, GetCredentialsProvider_NoPersistedLogins_NoAnonymousCredentials_ResultNullPtr) // fails { Aws::Client::AWSError error; error.SetExceptionName(AWSClientAuthUnitTest::TEST_EXCEPTION); @@ -331,8 +343,10 @@ TEST_F(AWSCognitoAuthorizationControllerTest, GetCredentialsProvider_NoPersisted EXPECT_CALL(*m_cognitoIdentityClientMock, GetCredentialsForIdentity(testing::_)).Times(0); std::shared_ptr actualCredentialsProvider; + AZ_TEST_START_TRACE_SUPPRESSION; AWSCore::AWSCredentialRequestBus::BroadcastResult( actualCredentialsProvider, &AWSCore::AWSCredentialRequests::GetCredentialsProvider); + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; EXPECT_TRUE(actualCredentialsProvider == nullptr); } @@ -431,11 +445,3 @@ TEST_F(AWSCognitoAuthorizationControllerTest, Initialize_Fail_GetResourceNameEmp EXPECT_CALL(m_awsResourceMappingRequestBusMock, GetDefaultAccountId()).Times(1); ASSERT_FALSE(m_mockController->Initialize()); } - -TEST_F(AWSCognitoAuthorizationControllerTest, Initialize_Fail_GetAWSAccountEmpty) -{ - EXPECT_CALL(m_awsResourceMappingRequestBusMock, GetResourceNameId(testing::_)).Times(1); - EXPECT_CALL(m_awsResourceMappingRequestBusMock, GetDefaultAccountId()).Times(1).WillOnce(testing::Return("")); - EXPECT_CALL(m_awsResourceMappingRequestBusMock, GetDefaultRegion()).Times(0); - ASSERT_FALSE(m_mockController->Initialize()); -} diff --git a/Gems/AWSClientAuth/Code/awsclientauth_files.cmake b/Gems/AWSClientAuth/Code/awsclientauth_files.cmake index bd4c971377..3b07b710e7 100644 --- a/Gems/AWSClientAuth/Code/awsclientauth_files.cmake +++ b/Gems/AWSClientAuth/Code/awsclientauth_files.cmake @@ -24,6 +24,7 @@ set(FILES Include/Private/Authorization/AWSCognitoAuthorizationController.h Include/Private/Authorization/AWSClientAuthPersistentCognitoIdentityProvider.h Include/Private/Authorization/AWSCognitoAuthorizationNotificationBusBehaviorHandler.h + Include/Private/Authorization/AWSClientAuthCognitoCachingAuthenticatedCredentialsProvider.h Include/Private/UserManagement/AWSCognitoUserManagementController.h Include/Private/UserManagement/UserManagementNotificationBusBehaviorHandler.h @@ -45,6 +46,7 @@ set(FILES Source/Authorization/ClientAuthAWSCredentials.cpp Source/Authorization/AWSCognitoAuthorizationController.cpp Source/Authorization/AWSClientAuthPersistentCognitoIdentityProvider.cpp + Source/Authorization/AWSClientAuthCognitoCachingAuthenticatedCredentialsProvider.cpp Source/UserManagement/AWSCognitoUserManagementController.cpp ) diff --git a/Gems/AWSCore/Code/Include/Private/ResourceMapping/AWSResourceMappingConstants.h b/Gems/AWSCore/Code/Include/Private/ResourceMapping/AWSResourceMappingConstants.h index 97eb5b6492..a3d18c1ea1 100644 --- a/Gems/AWSCore/Code/Include/Private/ResourceMapping/AWSResourceMappingConstants.h +++ b/Gems/AWSCore/Code/Include/Private/ResourceMapping/AWSResourceMappingConstants.h @@ -68,7 +68,7 @@ namespace AWSCore }, "AccountIdString": { "type": "string", - "pattern": "^[0-9]{12}$|EMPTY" + "pattern": "^[0-9]{12}$|EMPTY|^$" }, "NonEmptyString": { "type": "string", diff --git a/Gems/AWSCore/Code/Source/AWSCoreSystemComponent.cpp b/Gems/AWSCore/Code/Source/AWSCoreSystemComponent.cpp index 294462e654..490fdc9ef2 100644 --- a/Gems/AWSCore/Code/Source/AWSCoreSystemComponent.cpp +++ b/Gems/AWSCore/Code/Source/AWSCoreSystemComponent.cpp @@ -160,6 +160,7 @@ namespace AWSCore // If m_firstThreadCPU isn't -1, then each thread will be // assigned to a specific CPU starting with the specified CPU. AZ::JobManagerDesc jobManagerDesc{}; + jobManagerDesc.m_jobManagerName = "AWSCore JobManager"; AZ::JobManagerThreadDesc threadDesc(m_firstThreadCPU, m_threadPriority, m_threadStackSize); for (int i = 0; i < m_threadCount; ++i) { diff --git a/Gems/AWSCore/Code/Tests/ResourceMapping/AWSResourceMappingManagerTest.cpp b/Gems/AWSCore/Code/Tests/ResourceMapping/AWSResourceMappingManagerTest.cpp index fb03dea4c0..81ea166848 100644 --- a/Gems/AWSCore/Code/Tests/ResourceMapping/AWSResourceMappingManagerTest.cpp +++ b/Gems/AWSCore/Code/Tests/ResourceMapping/AWSResourceMappingManagerTest.cpp @@ -59,6 +59,34 @@ R"({ "Version": "1.0.0" })"; +static constexpr const char TEST_VALID_EMPTY_ACCOUNTID_RESOURCE_MAPPING_CONFIG_FILE[] = + R"({ + "AWSResourceMappings": { + "TestLambda": { + "Type": "AWS::Lambda::Function", + "Name/ID": "MyTestLambda", + "Region": "us-east-1", + "AccountId": "012345678912" + }, + "TestS3Bucket": { + "Type": "AWS::S3::Bucket", + "Name/ID": "MyTestS3Bucket" + }, + "TestService.RESTApiId": { + "Type": "AWS::ApiGateway::RestApi", + "Name/ID": "1234567890" + }, + "TestService.RESTApiStage": { + "Type": "AWS::ApiGateway::Stage", + "Name/ID": "prod", + "Region": "us-east-1" + } + }, + "AccountId": "", + "Region": "us-west-2", + "Version": "1.1.0" +})"; + static constexpr const char TEST_INVALID_RESOURCE_MAPPING_CONFIG_FILE[] = R"({ "AWSResourceMappings": {}, @@ -237,6 +265,21 @@ TEST_F(AWSResourceMappingManagerTest, ActivateManager_ParseValidConfigFile_Confi EXPECT_TRUE(actualEbusCalls == testThreadNumber); } +TEST_F(AWSResourceMappingManagerTest, ActivateManager_ParseValidConfigFile_GlobalAccountIdEmpty) +{ + CreateTestConfigFile(TEST_VALID_EMPTY_ACCOUNTID_RESOURCE_MAPPING_CONFIG_FILE); + m_resourceMappingManager->ActivateManager(); + + AZStd::string actualAccountId; + AZStd::string actualRegion; + AWSResourceMappingRequestBus::BroadcastResult(actualAccountId, &AWSResourceMappingRequests::GetDefaultAccountId); + AWSResourceMappingRequestBus::BroadcastResult(actualRegion, &AWSResourceMappingRequests::GetDefaultRegion); + EXPECT_EQ(m_reloadConfigurationCounter, 0); + EXPECT_TRUE(actualAccountId.empty()); + EXPECT_FALSE(actualRegion.empty()); + EXPECT_TRUE(m_resourceMappingManager->GetStatus() == AWSResourceMappingManager::Status::Ready); +} + TEST_F(AWSResourceMappingManagerTest, DeactivateManager_AfterActivatingWithValidConfigFile_ConfigDataGetCleanedUp) { CreateTestConfigFile(TEST_VALID_RESOURCE_MAPPING_CONFIG_FILE); diff --git a/Gems/AWSCore/Code/Tools/ResourceMappingTool/controller/view_edit_controller.py b/Gems/AWSCore/Code/Tools/ResourceMappingTool/controller/view_edit_controller.py index bdfe7fa11e..39f7b5ccf1 100755 --- a/Gems/AWSCore/Code/Tools/ResourceMappingTool/controller/view_edit_controller.py +++ b/Gems/AWSCore/Code/Tools/ResourceMappingTool/controller/view_edit_controller.py @@ -69,17 +69,13 @@ class ViewEditController(QObject): json_dict: Dict[str, any] = \ json_utils.convert_resources_to_json_dict(self._proxy_model.get_resources(), self._config_file_json_source) - configuration: Configuration = self._configuration_manager.configuration - if json_dict.get(json_utils.RESOURCE_MAPPING_ACCOUNTID_JSON_KEY_NAME) == \ - json_utils.RESOURCE_MAPPING_ACCOUNTID_TEMPLATE_VALUE: - json_dict[json_utils.RESOURCE_MAPPING_ACCOUNTID_JSON_KEY_NAME] = configuration.account_id - if json_dict == self._config_file_json_source: # skip because no difference found against existing json file return True # try to write in memory json content into json file try: + configuration: Configuration = self._configuration_manager.configuration config_file_full_path: str = file_utils.join_path(configuration.config_directory, config_file_name) json_utils.write_into_json_file(config_file_full_path, json_dict) self._config_file_json_source = json_dict diff --git a/Gems/AWSCore/Code/Tools/ResourceMappingTool/tests/unit/controller/test_view_edit_controller.py b/Gems/AWSCore/Code/Tools/ResourceMappingTool/tests/unit/controller/test_view_edit_controller.py index c73bddcd9c..41d4490c44 100755 --- a/Gems/AWSCore/Code/Tools/ResourceMappingTool/tests/unit/controller/test_view_edit_controller.py +++ b/Gems/AWSCore/Code/Tools/ResourceMappingTool/tests/unit/controller/test_view_edit_controller.py @@ -420,8 +420,30 @@ class TestViewEditController(TestCase): self._mocked_view_edit_page.config_file_combobox.currentText.return_value = \ TestViewEditController._expected_config_file_name expected_json_dict: Dict[str, any] = { - "dummyKey": "dummyValue", - self._expected_account_id_attribute_name: self._expected_account_id_template_vale} + "dummyKey": "dummyValue" + } + mock_json_utils.validate_resources_according_to_json_schema.return_value = [] + mock_json_utils.convert_resources_to_json_dict.return_value = expected_json_dict + mock_file_utils.join_path.return_value = TestViewEditController._expected_config_file_full_path + mocked_call_args: call = self._mocked_view_edit_page.save_changes_button.clicked.connect.call_args[0] + + mocked_call_args[0]() # triggering save_changes_button connected function + mock_json_utils.convert_resources_to_json_dict.assert_called_once() + mock_json_utils.write_into_json_file.assert_called_once_with( + TestViewEditController._expected_config_file_full_path, expected_json_dict) + self._mocked_proxy_model.override_all_resources_status.assert_called_once_with( + ResourceMappingAttributesStatus(ResourceMappingAttributesStatus.SUCCESS_STATUS_VALUE, + [ResourceMappingAttributesStatus.SUCCESS_STATUS_VALUE])) + + @patch("controller.view_edit_controller.file_utils") + @patch("controller.view_edit_controller.json_utils") + def test_page_save_changes_button_json_file_saved_and_template_account_id_unchanged( + self, mock_json_utils: MagicMock, mock_file_utils: MagicMock) -> None: + self._mocked_view_edit_page.config_file_combobox.currentText.return_value = \ + TestViewEditController._expected_config_file_name + expected_json_dict: Dict[str, any] = { + self._expected_account_id_attribute_name: self._expected_account_id_template_vale + } mock_json_utils.RESOURCE_MAPPING_ACCOUNTID_JSON_KEY_NAME = self._expected_account_id_attribute_name mock_json_utils.RESOURCE_MAPPING_ACCOUNTID_TEMPLATE_VALUE = self._expected_account_id_template_vale mock_json_utils.validate_resources_according_to_json_schema.return_value = [] @@ -430,7 +452,31 @@ class TestViewEditController(TestCase): mocked_call_args: call = self._mocked_view_edit_page.save_changes_button.clicked.connect.call_args[0] mocked_call_args[0]() # triggering save_changes_button connected function - assert expected_json_dict["AccountId"] == self._mocked_configuration_manager.configuration.account_id + assert expected_json_dict[mock_json_utils.RESOURCE_MAPPING_ACCOUNTID_JSON_KEY_NAME] == self._expected_account_id_template_vale + mock_json_utils.convert_resources_to_json_dict.assert_called_once() + mock_json_utils.write_into_json_file.assert_called_once_with( + TestViewEditController._expected_config_file_full_path, expected_json_dict) + self._mocked_proxy_model.override_all_resources_status.assert_called_once_with( + ResourceMappingAttributesStatus(ResourceMappingAttributesStatus.SUCCESS_STATUS_VALUE, + [ResourceMappingAttributesStatus.SUCCESS_STATUS_VALUE])) + + @patch("controller.view_edit_controller.file_utils") + @patch("controller.view_edit_controller.json_utils") + def test_page_save_changes_button_json_file_saved_and_empty_account_id_unchanged( + self, mock_json_utils: MagicMock, mock_file_utils: MagicMock) -> None: + self._mocked_view_edit_page.config_file_combobox.currentText.return_value = \ + TestViewEditController._expected_config_file_name + expected_json_dict: Dict[str, any] = { + self._expected_account_id_attribute_name: '' + } + mock_json_utils.RESOURCE_MAPPING_ACCOUNTID_JSON_KEY_NAME = self._expected_account_id_attribute_name + mock_json_utils.validate_resources_according_to_json_schema.return_value = [] + mock_json_utils.convert_resources_to_json_dict.return_value = expected_json_dict + mock_file_utils.join_path.return_value = TestViewEditController._expected_config_file_full_path + mocked_call_args: call = self._mocked_view_edit_page.save_changes_button.clicked.connect.call_args[0] + + mocked_call_args[0]() # triggering save_changes_button connected function + assert expected_json_dict[mock_json_utils.RESOURCE_MAPPING_ACCOUNTID_JSON_KEY_NAME] == '' mock_json_utils.convert_resources_to_json_dict.assert_called_once() mock_json_utils.write_into_json_file.assert_called_once_with( TestViewEditController._expected_config_file_full_path, expected_json_dict) diff --git a/Gems/AWSCore/Code/Tools/ResourceMappingTool/tests/unit/utils/test_json_utils.py b/Gems/AWSCore/Code/Tools/ResourceMappingTool/tests/unit/utils/test_json_utils.py index 7eb92ff222..9fe99461ba 100755 --- a/Gems/AWSCore/Code/Tools/ResourceMappingTool/tests/unit/utils/test_json_utils.py +++ b/Gems/AWSCore/Code/Tools/ResourceMappingTool/tests/unit/utils/test_json_utils.py @@ -103,6 +103,11 @@ class TestJsonUtils(TestCase): invalid_json_dict.pop(json_utils.RESOURCE_MAPPING_ACCOUNTID_JSON_KEY_NAME) self.assertRaises(KeyError, json_utils.validate_json_dict_according_to_json_schema, invalid_json_dict) + def test_validate_json_dict_according_to_json_schema_raise_error_when_json_dict_has_empty_accountid(self) -> None: + valid_json_dict: Dict[str, any] = copy.deepcopy(TestJsonUtils._expected_json_dict) + valid_json_dict[json_utils.RESOURCE_MAPPING_ACCOUNTID_JSON_KEY_NAME] = '' + json_utils.validate_json_dict_according_to_json_schema(valid_json_dict) + def test_validate_json_dict_according_to_json_schema_pass_when_json_dict_has_template_accountid(self) -> None: valid_json_dict: Dict[str, any] = copy.deepcopy(TestJsonUtils._expected_json_dict) valid_json_dict[json_utils.RESOURCE_MAPPING_ACCOUNTID_JSON_KEY_NAME] = \ diff --git a/Gems/AWSCore/Code/Tools/ResourceMappingTool/utils/json_utils.py b/Gems/AWSCore/Code/Tools/ResourceMappingTool/utils/json_utils.py index 5b9377ada3..8c094a895c 100755 --- a/Gems/AWSCore/Code/Tools/ResourceMappingTool/utils/json_utils.py +++ b/Gems/AWSCore/Code/Tools/ResourceMappingTool/utils/json_utils.py @@ -24,11 +24,11 @@ _RESOURCE_MAPPING_TYPE_JSON_KEY_NAME: str = "Type" _RESOURCE_MAPPING_NAMEID_JSON_KEY_NAME: str = "Name/ID" _RESOURCE_MAPPING_REGION_JSON_KEY_NAME: str = "Region" _RESOURCE_MAPPING_VERSION_JSON_KEY_NAME: str = "Version" -_RESOURCE_MAPPING_JSON_FORMAT_VERSION: str = "1.0.0" +_RESOURCE_MAPPING_JSON_FORMAT_VERSION: str = "1.1.0" RESOURCE_MAPPING_ACCOUNTID_JSON_KEY_NAME: str = "AccountId" RESOURCE_MAPPING_ACCOUNTID_TEMPLATE_VALUE: str = "EMPTY" -_RESOURCE_MAPPING_ACCOUNTID_PATTERN: str = f"^[0-9]{{12}}|{RESOURCE_MAPPING_ACCOUNTID_TEMPLATE_VALUE}$" +_RESOURCE_MAPPING_ACCOUNTID_PATTERN: str = f"^[0-9]{{12}}$|{RESOURCE_MAPPING_ACCOUNTID_TEMPLATE_VALUE}|^$" _RESOURCE_MAPPING_REGION_PATTERN: str = "^[a-z]{2}-[a-z]{4,9}-[0-9]{1}$" _RESOURCE_MAPPING_VERSION_PATTERN: str = "^[0-9]{1}.[0-9]{1}.[0-9]{1}$" diff --git a/Gems/AWSCore/cdk/README.md b/Gems/AWSCore/cdk/README.md index d50ca40279..644c22d36b 100644 --- a/Gems/AWSCore/cdk/README.md +++ b/Gems/AWSCore/cdk/README.md @@ -65,6 +65,22 @@ them to your `setup.py` file and rerun the `pip install -r requirements.txt` command. ## Optional Features + +Optional features are activated by passing [runtime context variables](https://docs.aws.amazon.com/cdk/latest/guide/context.html). To use multiple optional features together provide one key-value pair at a time: +``` +cdk synth --context key1=value1 --context key2=value2 MyStack +``` + +### Automatic S3 and DynamoDB Cleanup +The S3 bucket and Dynamodb created by the sample will be left behind as the CDK defaults to retaining such storage (both have default policies to retain resources on destroy). To delete +the storage resources created when using CDK destroy, use the following commands to synthesize and destroy the CDK application. +``` +cdk synth -c remove_all_storage_on_destroy=true --all +cdk deploy -c remove_all_storage_on_destroy=true --all +cdk destroy --all +``` + +### Server Access Logging Server access logging is enabled by default. To disable the feature, use the following commands to synthesize and deploy this CDK application. ``` diff --git a/Gems/AWSCore/cdk/core/core_stack.py b/Gems/AWSCore/cdk/core/core_stack.py index c124cb72ab..4124b7b566 100755 --- a/Gems/AWSCore/cdk/core/core_stack.py +++ b/Gems/AWSCore/cdk/core/core_stack.py @@ -86,13 +86,21 @@ class CoreStack(core.Stack): # Create an S3 bucket for Amazon S3 server access logging # See https://docs.aws.amazon.com/AmazonS3/latest/dev/security-best-practices.html if self.node.try_get_context('disable_access_log') != 'true': + + # Auto cleanup bucket and data if requested + _remove_storage = self.node.try_get_context('remove_all_storage_on_destroy') == 'true' + _removal_policy = core.RemovalPolicy.DESTROY if _remove_storage else core.RemovalPolicy.RETAIN + self._server_access_logs_bucket = s3.Bucket( self, f'{self._project_name}-{self._feature_name}-Access-Log-Bucket', + access_control=s3.BucketAccessControl.LOG_DELIVERY_WRITE, + auto_delete_objects = _remove_storage, block_public_access=s3.BlockPublicAccess.BLOCK_ALL, encryption=s3.BucketEncryption.S3_MANAGED, - access_control=s3.BucketAccessControl.LOG_DELIVERY_WRITE + removal_policy=_removal_policy ) + self._server_access_logs_bucket.grant_read(self._admin_group) # Export access log bucket name diff --git a/Gems/AWSCore/cdk/example/example_resources_stack.py b/Gems/AWSCore/cdk/example/example_resources_stack.py index ac229cb313..6a67ed9406 100755 --- a/Gems/AWSCore/cdk/example/example_resources_stack.py +++ b/Gems/AWSCore/cdk/example/example_resources_stack.py @@ -126,11 +126,17 @@ class ExampleResources(core.Stack): core.Fn.import_value(f"{self._project_name}:ServerAccessLogsBucket") ) + # Auto cleanup bucket and data if requested + _remove_storage = self.node.try_get_context('remove_all_storage_on_destroy') == 'true' + _removal_policy = core.RemovalPolicy.DESTROY if _remove_storage else core.RemovalPolicy.RETAIN + example_bucket = s3.Bucket( self, f'{self._project_name}-{self._feature_name}-Example-S3bucket', + auto_delete_objects=_remove_storage, block_public_access=s3.BlockPublicAccess.BLOCK_ALL, encryption=s3.BucketEncryption.S3_MANAGED, + removal_policy=_removal_policy, server_access_logs_bucket= server_access_logs_bucket if server_access_logs_bucket else None, server_access_logs_prefix= @@ -170,6 +176,11 @@ class ExampleResources(core.Stack): type=dynamo.AttributeType.STRING ) ) + + # Auto-delete the table when requested + if self.node.try_get_context('remove_all_storage_on_destroy') == 'true': + demo_table.apply_removal_policy(core.RemovalPolicy.DESTROY) + return demo_table def __create_outputs(self) -> None: diff --git a/Gems/AWSGameLift/Code/AWSGameLiftClient/CMakeLists.txt b/Gems/AWSGameLift/Code/AWSGameLiftClient/CMakeLists.txt index 1fab09e9f4..ab85e89f75 100644 --- a/Gems/AWSGameLift/Code/AWSGameLiftClient/CMakeLists.txt +++ b/Gems/AWSGameLift/Code/AWSGameLiftClient/CMakeLists.txt @@ -6,8 +6,6 @@ # # -set(awsgameliftclient_compile_definition $,AWSGAMELIFT_RELEASE,AWSGAMELIFT_DEV>) - ly_add_target( NAME AWSGameLift.Client.Static STATIC NAMESPACE Gem diff --git a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/AWSGameLiftClientManager.cpp b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/AWSGameLiftClientManager.cpp index 4ee2d31ebf..f900310078 100644 --- a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/AWSGameLiftClientManager.cpp +++ b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/AWSGameLiftClientManager.cpp @@ -33,7 +33,7 @@ namespace AWSGameLift { -#if defined(AWSGAMELIFT_DEV) +#if defined(AZ_DEBUG_BUILD) || defined(AZ_PROFILE_BUILD) AZ_CVAR(AZ::CVarFixedString, cl_gameliftLocalEndpoint, "", nullptr, AZ::ConsoleFunctorFlags::Null, "The local endpoint to test with GameLiftLocal SDK."); #endif @@ -87,7 +87,7 @@ namespace AWSGameLift // Set up client endpoint or region AZStd::string localEndpoint = ""; -#if defined(AWSGAMELIFT_DEV) +#if defined(AZ_DEBUG_BUILD) || defined(AZ_PROFILE_BUILD) localEndpoint = static_cast(cl_gameliftLocalEndpoint); #endif if (!localEndpoint.empty()) @@ -139,7 +139,7 @@ namespace AWSGameLift { const AWSGameLiftAcceptMatchRequest& gameliftStartMatchmakingRequest = static_cast(acceptMatchRequest); - AcceptMatchHelper(gameliftStartMatchmakingRequest); + AcceptMatchActivity::AcceptMatch(gameliftStartMatchmakingRequest); } } @@ -157,9 +157,9 @@ namespace AWSGameLift AZ::JobContext* jobContext = nullptr; AWSCore::AWSCoreRequestBus::BroadcastResult(jobContext, &AWSCore::AWSCoreRequests::GetDefaultJobContext); AZ::Job* acceptMatchJob = AZ::CreateJobFunction( - [this, gameliftStartMatchmakingRequest]() + [gameliftStartMatchmakingRequest]() { - AcceptMatchHelper(gameliftStartMatchmakingRequest); + AcceptMatchActivity::AcceptMatch(gameliftStartMatchmakingRequest); AzFramework::MatchmakingAsyncRequestNotificationBus::Broadcast( &AzFramework::MatchmakingAsyncRequestNotifications::OnAcceptMatchAsyncComplete); @@ -169,21 +169,6 @@ namespace AWSGameLift acceptMatchJob->Start(); } - void AWSGameLiftClientManager::AcceptMatchHelper(const AWSGameLiftAcceptMatchRequest& acceptMatchRequest) - { - auto gameliftClient = AZ::Interface::Get()->GetGameLiftClient(); - - AZStd::string response; - if (!gameliftClient) - { - AZ_Error(AWSGameLiftClientManagerName, false, AWSGameLiftClientMissingErrorMessage); - } - else - { - AcceptMatchActivity::AcceptMatch(*gameliftClient, acceptMatchRequest); - } - } - AZStd::string AWSGameLiftClientManager::CreateSession(const AzFramework::CreateSessionRequest& createSessionRequest) { AZStd::string result = ""; @@ -191,13 +176,13 @@ namespace AWSGameLift { const AWSGameLiftCreateSessionRequest& gameliftCreateSessionRequest = static_cast(createSessionRequest); - result = CreateSessionHelper(gameliftCreateSessionRequest); + result = CreateSessionActivity::CreateSession(gameliftCreateSessionRequest); } else if (CreateSessionOnQueueActivity::ValidateCreateSessionOnQueueRequest(createSessionRequest)) { const AWSGameLiftCreateSessionOnQueueRequest& gameliftCreateSessionOnQueueRequest = static_cast(createSessionRequest); - result = CreateSessionOnQueueHelper(gameliftCreateSessionOnQueueRequest); + result = CreateSessionOnQueueActivity::CreateSessionOnQueue(gameliftCreateSessionOnQueueRequest); } else { @@ -217,9 +202,9 @@ namespace AWSGameLift AZ::JobContext* jobContext = nullptr; AWSCore::AWSCoreRequestBus::BroadcastResult(jobContext, &AWSCore::AWSCoreRequests::GetDefaultJobContext); AZ::Job* createSessionJob = AZ::CreateJobFunction( - [this, gameliftCreateSessionRequest]() + [gameliftCreateSessionRequest]() { - AZStd::string result = CreateSessionHelper(gameliftCreateSessionRequest); + AZStd::string result = CreateSessionActivity::CreateSession(gameliftCreateSessionRequest); AzFramework::SessionAsyncRequestNotificationBus::Broadcast( &AzFramework::SessionAsyncRequestNotifications::OnCreateSessionAsyncComplete, result); @@ -235,9 +220,9 @@ namespace AWSGameLift AZ::JobContext* jobContext = nullptr; AWSCore::AWSCoreRequestBus::BroadcastResult(jobContext, &AWSCore::AWSCoreRequests::GetDefaultJobContext); AZ::Job* createSessionOnQueueJob = AZ::CreateJobFunction( - [this, gameliftCreateSessionOnQueueRequest]() + [gameliftCreateSessionOnQueueRequest]() { - AZStd::string result = CreateSessionOnQueueHelper(gameliftCreateSessionOnQueueRequest); + AZStd::string result = CreateSessionOnQueueActivity::CreateSessionOnQueue(gameliftCreateSessionOnQueueRequest); AzFramework::SessionAsyncRequestNotificationBus::Broadcast( &AzFramework::SessionAsyncRequestNotifications::OnCreateSessionAsyncComplete, result); @@ -253,38 +238,6 @@ namespace AWSGameLift } } - AZStd::string AWSGameLiftClientManager::CreateSessionHelper( - const AWSGameLiftCreateSessionRequest& createSessionRequest) - { - auto gameliftClient = AZ::Interface::Get()->GetGameLiftClient(); - AZStd::string result = ""; - if (!gameliftClient) - { - AZ_Error(AWSGameLiftClientManagerName, false, AWSGameLiftClientMissingErrorMessage); - } - else - { - result = CreateSessionActivity::CreateSession(*gameliftClient, createSessionRequest); - } - return result; - } - - AZStd::string AWSGameLiftClientManager::CreateSessionOnQueueHelper( - const AWSGameLiftCreateSessionOnQueueRequest& createSessionOnQueueRequest) - { - auto gameliftClient = AZ::Interface::Get()->GetGameLiftClient(); - AZStd::string result; - if (!gameliftClient) - { - AZ_Error(AWSGameLiftClientManagerName, false, AWSGameLiftClientMissingErrorMessage); - } - else - { - result = CreateSessionOnQueueActivity::CreateSessionOnQueue(*gameliftClient, createSessionOnQueueRequest); - } - return result; - } - bool AWSGameLiftClientManager::JoinSession(const AzFramework::JoinSessionRequest& joinSessionRequest) { bool result = false; @@ -292,7 +245,8 @@ namespace AWSGameLift { const AWSGameLiftJoinSessionRequest& gameliftJoinSessionRequest = static_cast(joinSessionRequest); - result = JoinSessionHelper(gameliftJoinSessionRequest); + auto createPlayerSessionOutcome = JoinSessionActivity::CreatePlayerSession(gameliftJoinSessionRequest); + result = JoinSessionActivity::RequestPlayerJoinSession(createPlayerSessionOutcome); } return result; @@ -313,9 +267,10 @@ namespace AWSGameLift AZ::JobContext* jobContext = nullptr; AWSCore::AWSCoreRequestBus::BroadcastResult(jobContext, &AWSCore::AWSCoreRequests::GetDefaultJobContext); AZ::Job* joinSessionJob = AZ::CreateJobFunction( - [this, gameliftJoinSessionRequest]() + [gameliftJoinSessionRequest]() { - bool result = JoinSessionHelper(gameliftJoinSessionRequest); + auto createPlayerSessionOutcome = JoinSessionActivity::CreatePlayerSession(gameliftJoinSessionRequest); + bool result = JoinSessionActivity::RequestPlayerJoinSession(createPlayerSessionOutcome); AzFramework::SessionAsyncRequestNotificationBus::Broadcast( &AzFramework::SessionAsyncRequestNotifications::OnJoinSessionAsyncComplete, result); @@ -325,23 +280,6 @@ namespace AWSGameLift joinSessionJob->Start(); } - bool AWSGameLiftClientManager::JoinSessionHelper(const AWSGameLiftJoinSessionRequest& joinSessionRequest) - { - auto gameliftClient = AZ::Interface::Get()->GetGameLiftClient(); - bool result = false; - if (!gameliftClient) - { - AZ_Error(AWSGameLiftClientManagerName, false, AWSGameLiftClientMissingErrorMessage); - } - else - { - auto createPlayerSessionOutcome = JoinSessionActivity::CreatePlayerSession(*gameliftClient, joinSessionRequest); - - result = JoinSessionActivity::RequestPlayerJoinSession(createPlayerSessionOutcome); - } - return result; - } - void AWSGameLiftClientManager::LeaveSession() { AWSGameLift::LeaveSessionActivity::LeaveSession(); @@ -371,7 +309,7 @@ namespace AWSGameLift { const AWSGameLiftSearchSessionsRequest& gameliftSearchSessionsRequest = static_cast(searchSessionsRequest); - response = SearchSessionsHelper(gameliftSearchSessionsRequest); + response = SearchSessionsActivity::SearchSessions(gameliftSearchSessionsRequest); } return response; @@ -392,9 +330,9 @@ namespace AWSGameLift AZ::JobContext* jobContext = nullptr; AWSCore::AWSCoreRequestBus::BroadcastResult(jobContext, &AWSCore::AWSCoreRequests::GetDefaultJobContext); AZ::Job* searchSessionsJob = AZ::CreateJobFunction( - [this, gameliftSearchSessionsRequest]() + [gameliftSearchSessionsRequest]() { - AzFramework::SearchSessionsResponse response = SearchSessionsHelper(gameliftSearchSessionsRequest); + AzFramework::SearchSessionsResponse response = SearchSessionsActivity::SearchSessions(gameliftSearchSessionsRequest); AzFramework::SessionAsyncRequestNotificationBus::Broadcast( &AzFramework::SessionAsyncRequestNotifications::OnSearchSessionsAsyncComplete, response); @@ -404,22 +342,6 @@ namespace AWSGameLift searchSessionsJob->Start(); } - AzFramework::SearchSessionsResponse AWSGameLiftClientManager::SearchSessionsHelper( - const AWSGameLiftSearchSessionsRequest& searchSessionsRequest) const - { - auto gameliftClient = AZ::Interface::Get()->GetGameLiftClient(); - AzFramework::SearchSessionsResponse response; - if (!gameliftClient) - { - AZ_Error(AWSGameLiftClientManagerName, false, AWSGameLiftClientMissingErrorMessage); - } - else - { - response = SearchSessionsActivity::SearchSessions(*gameliftClient, searchSessionsRequest); - } - return response; - } - AZStd::string AWSGameLiftClientManager::StartMatchmaking(const AzFramework::StartMatchmakingRequest& startMatchmakingRequest) { AZStd::string response; @@ -427,7 +349,7 @@ namespace AWSGameLift { const AWSGameLiftStartMatchmakingRequest& gameliftStartMatchmakingRequest = static_cast(startMatchmakingRequest); - response = StartMatchmakingHelper(gameliftStartMatchmakingRequest); + response = StartMatchmakingActivity::StartMatchmaking(gameliftStartMatchmakingRequest); } return response; @@ -448,9 +370,9 @@ namespace AWSGameLift AZ::JobContext* jobContext = nullptr; AWSCore::AWSCoreRequestBus::BroadcastResult(jobContext, &AWSCore::AWSCoreRequests::GetDefaultJobContext); AZ::Job* startMatchmakingJob = AZ::CreateJobFunction( - [this, gameliftStartMatchmakingRequest]() + [gameliftStartMatchmakingRequest]() { - AZStd::string response = StartMatchmakingHelper(gameliftStartMatchmakingRequest); + AZStd::string response = StartMatchmakingActivity::StartMatchmaking(gameliftStartMatchmakingRequest); AzFramework::MatchmakingAsyncRequestNotificationBus::Broadcast( &AzFramework::MatchmakingAsyncRequestNotifications::OnStartMatchmakingAsyncComplete, response); @@ -460,29 +382,14 @@ namespace AWSGameLift startMatchmakingJob->Start(); } - AZStd::string AWSGameLiftClientManager::StartMatchmakingHelper(const AWSGameLiftStartMatchmakingRequest& startMatchmakingRequest) - { - auto gameliftClient = AZ::Interface::Get()->GetGameLiftClient(); - - AZStd::string response; - if (!gameliftClient) - { - AZ_Error(AWSGameLiftClientManagerName, false, AWSGameLiftClientMissingErrorMessage); - } - else - { - response = StartMatchmakingActivity::StartMatchmaking(*gameliftClient, startMatchmakingRequest); - } - return response; - } - void AWSGameLiftClientManager::StopMatchmaking(const AzFramework::StopMatchmakingRequest& stopMatchmakingRequest) { if (StopMatchmakingActivity::ValidateStopMatchmakingRequest(stopMatchmakingRequest)) { const AWSGameLiftStopMatchmakingRequest& gameliftStopMatchmakingRequest = static_cast(stopMatchmakingRequest); - StopMatchmakingHelper(gameliftStopMatchmakingRequest); + + StopMatchmakingActivity::StopMatchmaking(gameliftStopMatchmakingRequest); } } @@ -501,9 +408,9 @@ namespace AWSGameLift AZ::JobContext* jobContext = nullptr; AWSCore::AWSCoreRequestBus::BroadcastResult(jobContext, &AWSCore::AWSCoreRequests::GetDefaultJobContext); AZ::Job* stopMatchmakingJob = AZ::CreateJobFunction( - [this, gameliftStopMatchmakingRequest]() + [gameliftStopMatchmakingRequest]() { - StopMatchmakingHelper(gameliftStopMatchmakingRequest); + StopMatchmakingActivity::StopMatchmaking(gameliftStopMatchmakingRequest); AzFramework::MatchmakingAsyncRequestNotificationBus::Broadcast( &AzFramework::MatchmakingAsyncRequestNotifications::OnStopMatchmakingAsyncComplete); @@ -512,18 +419,4 @@ namespace AWSGameLift stopMatchmakingJob->Start(); } - - void AWSGameLiftClientManager::StopMatchmakingHelper(const AWSGameLiftStopMatchmakingRequest& stopMatchmakingRequest) - { - auto gameliftClient = AZ::Interface::Get()->GetGameLiftClient(); - - if (!gameliftClient) - { - AZ_Error(AWSGameLiftClientManagerName, false, AWSGameLiftClientMissingErrorMessage); - } - else - { - StopMatchmakingActivity::StopMatchmaking(*gameliftClient, stopMatchmakingRequest); - } - } } // namespace AWSGameLift diff --git a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/AWSGameLiftClientManager.h b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/AWSGameLiftClientManager.h index 8a0c91c36d..f37152bc60 100644 --- a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/AWSGameLiftClientManager.h +++ b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/AWSGameLiftClientManager.h @@ -175,14 +175,5 @@ namespace AWSGameLift bool JoinSession(const AzFramework::JoinSessionRequest& joinSessionRequest) override; AzFramework::SearchSessionsResponse SearchSessions(const AzFramework::SearchSessionsRequest& searchSessionsRequest) const override; void LeaveSession() override; - - private: - void AcceptMatchHelper(const AWSGameLiftAcceptMatchRequest& createSessionRequest); - AZStd::string CreateSessionHelper(const AWSGameLiftCreateSessionRequest& createSessionRequest); - AZStd::string CreateSessionOnQueueHelper(const AWSGameLiftCreateSessionOnQueueRequest& createSessionOnQueueRequest); - bool JoinSessionHelper(const AWSGameLiftJoinSessionRequest& joinSessionRequest); - AzFramework::SearchSessionsResponse SearchSessionsHelper(const AWSGameLiftSearchSessionsRequest& searchSessionsRequest) const; - AZStd::string StartMatchmakingHelper(const AWSGameLiftStartMatchmakingRequest& startMatchmakingRequest); - void StopMatchmakingHelper(const AWSGameLiftStopMatchmakingRequest& stopMatchmakingRequest); }; } // namespace AWSGameLift diff --git a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftAcceptMatchActivity.cpp b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftAcceptMatchActivity.cpp index 25ba328fd0..dbeced1728 100644 --- a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftAcceptMatchActivity.cpp +++ b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftAcceptMatchActivity.cpp @@ -7,9 +7,11 @@ */ #include +#include #include #include +#include #include #include @@ -42,13 +44,19 @@ namespace AWSGameLift return request; } - void AcceptMatch(const Aws::GameLift::GameLiftClient& gameliftClient, - const AWSGameLiftAcceptMatchRequest& AcceptMatchRequest) + void AcceptMatch(const AWSGameLiftAcceptMatchRequest& AcceptMatchRequest) { + auto gameliftClient = AZ::Interface::Get()->GetGameLiftClient(); + if (!gameliftClient) + { + AZ_Error(AWSGameLiftAcceptMatchActivityName, false, AWSGameLiftClientMissingErrorMessage); + return; + } + AZ_TracePrintf(AWSGameLiftAcceptMatchActivityName, "Requesting AcceptMatch against Amazon GameLift service ..."); Aws::GameLift::Model::AcceptMatchRequest request = BuildAWSGameLiftAcceptMatchRequest(AcceptMatchRequest); - auto AcceptMatchOutcome = gameliftClient.AcceptMatch(request); + auto AcceptMatchOutcome = gameliftClient->AcceptMatch(request); if (AcceptMatchOutcome.IsSuccess()) { diff --git a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftAcceptMatchActivity.h b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftAcceptMatchActivity.h index d5f28f92e2..ac4012c347 100644 --- a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftAcceptMatchActivity.h +++ b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftAcceptMatchActivity.h @@ -23,7 +23,7 @@ namespace AWSGameLift Aws::GameLift::Model::AcceptMatchRequest BuildAWSGameLiftAcceptMatchRequest(const AWSGameLiftAcceptMatchRequest& AcceptMatchRequest); // Create AcceptMatchRequest and make a AcceptMatch call through GameLift client - void AcceptMatch(const Aws::GameLift::GameLiftClient& gameliftClient, const AWSGameLiftAcceptMatchRequest& AcceptMatchRequest); + void AcceptMatch(const AWSGameLiftAcceptMatchRequest& AcceptMatchRequest); // Validate AcceptMatchRequest and check required request parameters bool ValidateAcceptMatchRequest(const AzFramework::AcceptMatchRequest& AcceptMatchRequest); diff --git a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftCreateSessionActivity.cpp b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftCreateSessionActivity.cpp index 0332ea7a76..ee93f022a1 100644 --- a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftCreateSessionActivity.cpp +++ b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftCreateSessionActivity.cpp @@ -6,9 +6,16 @@ * */ +#include +#include + #include #include #include +#include + +#include +#include namespace AWSGameLift { @@ -63,15 +70,21 @@ namespace AWSGameLift return request; } - AZStd::string CreateSession( - const Aws::GameLift::GameLiftClient& gameliftClient, - const AWSGameLiftCreateSessionRequest& createSessionRequest) + AZStd::string CreateSession(const AWSGameLiftCreateSessionRequest& createSessionRequest) { + AZStd::string result = ""; + + auto gameliftClient = AZ::Interface::Get()->GetGameLiftClient(); + if (!gameliftClient) + { + AZ_Error(AWSGameLiftCreateSessionActivityName, false, AWSGameLiftClientMissingErrorMessage); + return result; + } + AZ_TracePrintf(AWSGameLiftCreateSessionActivityName, "Requesting CreateGameSession against Amazon GameLift service ..."); - AZStd::string result = ""; Aws::GameLift::Model::CreateGameSessionRequest request = BuildAWSGameLiftCreateGameSessionRequest(createSessionRequest); - auto createSessionOutcome = gameliftClient.CreateGameSession(request); + auto createSessionOutcome = gameliftClient->CreateGameSession(request); AZ_TracePrintf(AWSGameLiftCreateSessionActivityName, "CreateGameSession request against Amazon GameLift service is complete"); if (createSessionOutcome.IsSuccess()) diff --git a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftCreateSessionActivity.h b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftCreateSessionActivity.h index 714675c652..af236dbfa4 100644 --- a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftCreateSessionActivity.h +++ b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftCreateSessionActivity.h @@ -10,9 +10,7 @@ #include -#include #include -#include namespace AWSGameLift { @@ -24,9 +22,7 @@ namespace AWSGameLift Aws::GameLift::Model::CreateGameSessionRequest BuildAWSGameLiftCreateGameSessionRequest(const AWSGameLiftCreateSessionRequest& createSessionRequest); // Create CreateGameSessionRequest and make a CreateGameSession call through GameLift client - AZStd::string CreateSession( - const Aws::GameLift::GameLiftClient& gameliftClient, - const AWSGameLiftCreateSessionRequest& createSessionRequest); + AZStd::string CreateSession(const AWSGameLiftCreateSessionRequest& createSessionRequest); // Validate CreateSessionRequest and check required request parameters bool ValidateCreateSessionRequest(const AzFramework::CreateSessionRequest& createSessionRequest); diff --git a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftCreateSessionOnQueueActivity.cpp b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftCreateSessionOnQueueActivity.cpp index 52be365ea5..8e8d7e23c5 100644 --- a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftCreateSessionOnQueueActivity.cpp +++ b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftCreateSessionOnQueueActivity.cpp @@ -6,9 +6,16 @@ * */ +#include +#include + #include #include #include +#include + +#include +#include namespace AWSGameLift { @@ -47,17 +54,23 @@ namespace AWSGameLift return request; } - AZStd::string CreateSessionOnQueue( - const Aws::GameLift::GameLiftClient& gameliftClient, - const AWSGameLiftCreateSessionOnQueueRequest& createSessionOnQueueRequest) + AZStd::string CreateSessionOnQueue(const AWSGameLiftCreateSessionOnQueueRequest& createSessionOnQueueRequest) { + AZStd::string result = ""; + + auto gameliftClient = AZ::Interface::Get()->GetGameLiftClient(); + if (!gameliftClient) + { + AZ_Error(AWSGameLiftCreateSessionOnQueueActivityName, false, AWSGameLiftClientMissingErrorMessage); + return result; + } + AZ_TracePrintf(AWSGameLiftCreateSessionOnQueueActivityName, "Requesting StartGameSessionPlacement against Amazon GameLift service ..."); - AZStd::string result = ""; Aws::GameLift::Model::StartGameSessionPlacementRequest request = BuildAWSGameLiftStartGameSessionPlacementRequest(createSessionOnQueueRequest); - auto createSessionOnQueueOutcome = gameliftClient.StartGameSessionPlacement(request); + auto createSessionOnQueueOutcome = gameliftClient->StartGameSessionPlacement(request); AZ_TracePrintf(AWSGameLiftCreateSessionOnQueueActivityName, "StartGameSessionPlacement request against Amazon GameLift service is complete."); diff --git a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftCreateSessionOnQueueActivity.h b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftCreateSessionOnQueueActivity.h index 714bcd1060..5f16bf0b31 100644 --- a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftCreateSessionOnQueueActivity.h +++ b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftCreateSessionOnQueueActivity.h @@ -10,9 +10,7 @@ #include -#include #include -#include namespace AWSGameLift { @@ -25,9 +23,7 @@ namespace AWSGameLift const AWSGameLiftCreateSessionOnQueueRequest& createSessionOnQueueRequest); // Create StartGameSessionPlacementRequest and make a CreateGameSession call through GameLift client - AZStd::string CreateSessionOnQueue( - const Aws::GameLift::GameLiftClient& gameliftClient, - const AWSGameLiftCreateSessionOnQueueRequest& createSessionOnQueueRequest); + AZStd::string CreateSessionOnQueue(const AWSGameLiftCreateSessionOnQueueRequest& createSessionOnQueueRequest); // Validate CreateSessionOnQueueRequest and check required request parameters bool ValidateCreateSessionOnQueueRequest(const AzFramework::CreateSessionRequest& createSessionRequest); diff --git a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftJoinSessionActivity.cpp b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftJoinSessionActivity.cpp index a47e59255f..71ef9e9737 100644 --- a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftJoinSessionActivity.cpp +++ b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftJoinSessionActivity.cpp @@ -7,10 +7,11 @@ */ #include -#include +#include #include #include +#include namespace AWSGameLift { @@ -59,16 +60,24 @@ namespace AWSGameLift } Aws::GameLift::Model::CreatePlayerSessionOutcome CreatePlayerSession( - const Aws::GameLift::GameLiftClient& gameliftClient, const AWSGameLiftJoinSessionRequest& joinSessionRequest) { + Aws::GameLift::Model::CreatePlayerSessionOutcome createPlayerSessionOutcome; + + auto gameliftClient = AZ::Interface::Get()->GetGameLiftClient(); + if (!gameliftClient) + { + AZ_Error(AWSGameLiftJoinSessionActivityName, false, AWSGameLiftClientMissingErrorMessage); + return createPlayerSessionOutcome; + } + AZ_TracePrintf(AWSGameLiftJoinSessionActivityName, "Requesting CreatePlayerSession for player %s against Amazon GameLift service ...", joinSessionRequest.m_playerId.c_str()); Aws::GameLift::Model::CreatePlayerSessionRequest request = BuildAWSGameLiftCreatePlayerSessionRequest(joinSessionRequest); - auto createPlayerSessionOutcome = gameliftClient.CreatePlayerSession(request); + createPlayerSessionOutcome = gameliftClient->CreatePlayerSession(request); AZ_TracePrintf(AWSGameLiftJoinSessionActivityName, "CreatePlayerSession request for player %s against Amazon GameLift service is complete", joinSessionRequest.m_playerId.c_str()); diff --git a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftJoinSessionActivity.h b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftJoinSessionActivity.h index fe34e5fe57..b011f4877b 100644 --- a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftJoinSessionActivity.h +++ b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftJoinSessionActivity.h @@ -36,7 +36,6 @@ namespace AWSGameLift // Create CreatePlayerSessionRequest and make a CreatePlayerSession call through GameLift client Aws::GameLift::Model::CreatePlayerSessionOutcome CreatePlayerSession( - const Aws::GameLift::GameLiftClient& gameliftClient, const AWSGameLiftJoinSessionRequest& joinSessionRequest); // Request to setup networking connection for player diff --git a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftLeaveSessionActivity.cpp b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftLeaveSessionActivity.cpp index a99fed4edc..fd3b3d6ebc 100644 --- a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftLeaveSessionActivity.cpp +++ b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftLeaveSessionActivity.cpp @@ -6,11 +6,12 @@ * */ -#include - #include +#include #include +#include + namespace AWSGameLift { namespace LeaveSessionActivity diff --git a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftSearchSessionsActivity.cpp b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftSearchSessionsActivity.cpp index 5f0b6fd012..b7917e6d59 100644 --- a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftSearchSessionsActivity.cpp +++ b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftSearchSessionsActivity.cpp @@ -6,10 +6,16 @@ * */ +#include +#include #include #include #include +#include + +#include +#include namespace AWSGameLift { @@ -62,14 +68,21 @@ namespace AWSGameLift } AzFramework::SearchSessionsResponse SearchSessions( - const Aws::GameLift::GameLiftClient& gameliftClient, const AWSGameLiftSearchSessionsRequest& searchSessionsRequest) { + AzFramework::SearchSessionsResponse response; + + auto gameliftClient = AZ::Interface::Get()->GetGameLiftClient(); + if (!gameliftClient) + { + AZ_Error(AWSGameLiftSearchSessionsActivityName, false, AWSGameLiftClientMissingErrorMessage); + return response; + } + AZ_TracePrintf(AWSGameLiftSearchSessionsActivityName, "Requesting SearchGameSessions against Amazon GameLift service ..."); - AzFramework::SearchSessionsResponse response; Aws::GameLift::Model::SearchGameSessionsRequest request = BuildAWSGameLiftSearchGameSessionsRequest(searchSessionsRequest); - Aws::GameLift::Model::SearchGameSessionsOutcome outcome = gameliftClient.SearchGameSessions(request); + Aws::GameLift::Model::SearchGameSessionsOutcome outcome = gameliftClient->SearchGameSessions(request); AZ_TracePrintf(AWSGameLiftSearchSessionsActivityName, "SearchGameSessions request against Amazon GameLift service is complete"); if (outcome.IsSuccess()) diff --git a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftSearchSessionsActivity.h b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftSearchSessionsActivity.h index 205e83dd96..d5bcda992c 100644 --- a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftSearchSessionsActivity.h +++ b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftSearchSessionsActivity.h @@ -10,9 +10,7 @@ #include -#include #include -#include namespace AWSGameLift { @@ -28,7 +26,6 @@ namespace AWSGameLift // Create SearchGameSessionsRequest and make a SeachGameSessions call through GameLift client AzFramework::SearchSessionsResponse SearchSessions( - const Aws::GameLift::GameLiftClient& gameliftClient, const AWSGameLiftSearchSessionsRequest& searchSessionsRequest); // Convert from Aws::GameLift::Model::SearchGameSessionsResult to AzFramework::SearchSessionsResponse. diff --git a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftStartMatchmakingActivity.cpp b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftStartMatchmakingActivity.cpp index 00a7773491..6f6c7fccc0 100644 --- a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftStartMatchmakingActivity.cpp +++ b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftStartMatchmakingActivity.cpp @@ -7,11 +7,13 @@ */ #include +#include #include #include #include #include +#include #include #include @@ -78,14 +80,21 @@ namespace AWSGameLift } AZStd::string StartMatchmaking( - const Aws::GameLift::GameLiftClient& gameliftClient, const AWSGameLiftStartMatchmakingRequest& startMatchmakingRequest) { + AZStd::string result = ""; + + auto gameliftClient = AZ::Interface::Get()->GetGameLiftClient(); + if (!gameliftClient) + { + AZ_Error(AWSGameLiftStartMatchmakingActivityName, false, AWSGameLiftClientMissingErrorMessage); + return result; + } + AZ_TracePrintf(AWSGameLiftStartMatchmakingActivityName, "Requesting StartMatchmaking against Amazon GameLift service ..."); - AZStd::string result = ""; Aws::GameLift::Model::StartMatchmakingRequest request = BuildAWSGameLiftStartMatchmakingRequest(startMatchmakingRequest); - auto startMatchmakingOutcome = gameliftClient.StartMatchmaking(request); + auto startMatchmakingOutcome = gameliftClient->StartMatchmaking(request); if (startMatchmakingOutcome.IsSuccess()) { result = AZStd::string(startMatchmakingOutcome.GetResult().GetMatchmakingTicket().GetTicketId().c_str()); diff --git a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftStartMatchmakingActivity.h b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftStartMatchmakingActivity.h index db814c14b2..f736e318fb 100644 --- a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftStartMatchmakingActivity.h +++ b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftStartMatchmakingActivity.h @@ -23,7 +23,7 @@ namespace AWSGameLift Aws::GameLift::Model::StartMatchmakingRequest BuildAWSGameLiftStartMatchmakingRequest(const AWSGameLiftStartMatchmakingRequest& startMatchmakingRequest); // Create StartMatchmakingRequest and make a StartMatchmaking call through GameLift client - AZStd::string StartMatchmaking(const Aws::GameLift::GameLiftClient& gameliftClient, const AWSGameLiftStartMatchmakingRequest& startMatchmakingRequest); + AZStd::string StartMatchmaking(const AWSGameLiftStartMatchmakingRequest& startMatchmakingRequest); // Validate StartMatchmakingRequest and check required request parameters bool ValidateStartMatchmakingRequest(const AzFramework::StartMatchmakingRequest& startMatchmakingRequest); diff --git a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftStopMatchmakingActivity.cpp b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftStopMatchmakingActivity.cpp index b427d0323a..022861570a 100644 --- a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftStopMatchmakingActivity.cpp +++ b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftStopMatchmakingActivity.cpp @@ -7,9 +7,11 @@ */ #include +#include #include #include +#include #include #include @@ -32,13 +34,19 @@ namespace AWSGameLift return request; } - void StopMatchmaking(const Aws::GameLift::GameLiftClient& gameliftClient, - const AWSGameLiftStopMatchmakingRequest& stopMatchmakingRequest) + void StopMatchmaking(const AWSGameLiftStopMatchmakingRequest& stopMatchmakingRequest) { + auto gameliftClient = AZ::Interface::Get()->GetGameLiftClient(); + if (!gameliftClient) + { + AZ_Error(AWSGameLiftStopMatchmakingActivityName, false, AWSGameLiftClientMissingErrorMessage); + return; + } + AZ_TracePrintf(AWSGameLiftStopMatchmakingActivityName, "Requesting StopMatchmaking against Amazon GameLift service ..."); Aws::GameLift::Model::StopMatchmakingRequest request = BuildAWSGameLiftStopMatchmakingRequest(stopMatchmakingRequest); - auto stopMatchmakingOutcome = gameliftClient.StopMatchmaking(request); + auto stopMatchmakingOutcome = gameliftClient->StopMatchmaking(request); if (stopMatchmakingOutcome.IsSuccess()) { diff --git a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftStopMatchmakingActivity.h b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftStopMatchmakingActivity.h index 0820f2c05e..b5f19d35df 100644 --- a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftStopMatchmakingActivity.h +++ b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/Activity/AWSGameLiftStopMatchmakingActivity.h @@ -23,7 +23,7 @@ namespace AWSGameLift Aws::GameLift::Model::StopMatchmakingRequest BuildAWSGameLiftStopMatchmakingRequest(const AWSGameLiftStopMatchmakingRequest& stopMatchmakingRequest); // Create StopMatchmakingRequest and make a StopMatchmaking call through GameLift client - void StopMatchmaking(const Aws::GameLift::GameLiftClient& gameliftClient, const AWSGameLiftStopMatchmakingRequest& stopMatchmakingRequest); + void StopMatchmaking(const AWSGameLiftStopMatchmakingRequest& stopMatchmakingRequest); // Validate StopMatchmakingRequest and check required request parameters bool ValidateStopMatchmakingRequest(const AzFramework::StopMatchmakingRequest& stopMatchmakingRequest); diff --git a/Gems/AWSGameLift/Code/AWSGameLiftClient/Tests/Activity/AWSGameLiftCreateSessionActivityTest.cpp b/Gems/AWSGameLift/Code/AWSGameLiftClient/Tests/Activity/AWSGameLiftCreateSessionActivityTest.cpp index 70dcdba1af..fcf867138b 100644 --- a/Gems/AWSGameLift/Code/AWSGameLiftClient/Tests/Activity/AWSGameLiftCreateSessionActivityTest.cpp +++ b/Gems/AWSGameLift/Code/AWSGameLiftClient/Tests/Activity/AWSGameLiftCreateSessionActivityTest.cpp @@ -9,6 +9,8 @@ #include #include +#include + using namespace AWSGameLift; using AWSGameLiftCreateSessionActivityTest = AWSGameLiftClientFixture; diff --git a/Gems/AWSGameLift/Code/AWSGameLiftClient/Tests/Activity/AWSGameLiftCreateSessionOnQueueActivityTest.cpp b/Gems/AWSGameLift/Code/AWSGameLiftClient/Tests/Activity/AWSGameLiftCreateSessionOnQueueActivityTest.cpp index 8a785d8007..4845586e47 100644 --- a/Gems/AWSGameLift/Code/AWSGameLiftClient/Tests/Activity/AWSGameLiftCreateSessionOnQueueActivityTest.cpp +++ b/Gems/AWSGameLift/Code/AWSGameLiftClient/Tests/Activity/AWSGameLiftCreateSessionOnQueueActivityTest.cpp @@ -9,6 +9,8 @@ #include #include +#include + using namespace AWSGameLift; using AWSGameLiftCreateSessionOnQueueActivityTest = AWSGameLiftClientFixture; diff --git a/Gems/AWSGameLift/Code/AWSGameLiftClient/Tests/Activity/AWSGameLiftJoinSessionActivityTest.cpp b/Gems/AWSGameLift/Code/AWSGameLiftClient/Tests/Activity/AWSGameLiftJoinSessionActivityTest.cpp index 6a1156646a..33b03649c7 100644 --- a/Gems/AWSGameLift/Code/AWSGameLiftClient/Tests/Activity/AWSGameLiftJoinSessionActivityTest.cpp +++ b/Gems/AWSGameLift/Code/AWSGameLiftClient/Tests/Activity/AWSGameLiftJoinSessionActivityTest.cpp @@ -6,6 +6,8 @@ * */ +#include + #include #include diff --git a/Gems/AWSGameLift/Code/AWSGameLiftClient/Tests/Activity/AWSGameLiftSearchSessionsActivityTest.cpp b/Gems/AWSGameLift/Code/AWSGameLiftClient/Tests/Activity/AWSGameLiftSearchSessionsActivityTest.cpp index 3337c2f6d2..0d3c8c137b 100644 --- a/Gems/AWSGameLift/Code/AWSGameLiftClient/Tests/Activity/AWSGameLiftSearchSessionsActivityTest.cpp +++ b/Gems/AWSGameLift/Code/AWSGameLiftClient/Tests/Activity/AWSGameLiftSearchSessionsActivityTest.cpp @@ -12,6 +12,9 @@ #include #include +#include +#include + using namespace AWSGameLift; using AWSGameLiftSearchSessionsActivityTest = AWSGameLiftClientFixture; diff --git a/Gems/AWSMetrics/Code/Include/Private/MetricsAttribute.h b/Gems/AWSMetrics/Code/Include/Public/MetricsAttribute.h similarity index 100% rename from Gems/AWSMetrics/Code/Include/Private/MetricsAttribute.h rename to Gems/AWSMetrics/Code/Include/Public/MetricsAttribute.h diff --git a/Gems/AWSMetrics/Code/awsmetrics_files.cmake b/Gems/AWSMetrics/Code/awsmetrics_files.cmake index b51235c957..b1a3a647df 100644 --- a/Gems/AWSMetrics/Code/awsmetrics_files.cmake +++ b/Gems/AWSMetrics/Code/awsmetrics_files.cmake @@ -8,6 +8,7 @@ set(FILES Include/Public/AWSMetricsBus.h + Include/Public/MetricsAttribute.h Include/Private/AWSMetricsConstant.h Include/Private/AWSMetricsServiceApi.h Include/Private/AWSMetricsSystemComponent.h @@ -15,7 +16,6 @@ set(FILES Include/Private/DefaultClientIdProvider.h Include/Private/GlobalStatistics.h Include/Private/IdentityProvider.h - Include/Private/MetricsAttribute.h Include/Private/MetricsEvent.h Include/Private/MetricsEventBuilder.h Include/Private/MetricsManager.h diff --git a/Gems/AssetValidation/Code/Source/AssetValidationSystemComponent.cpp b/Gems/AssetValidation/Code/Source/AssetValidationSystemComponent.cpp index 56f28856af..8f8fb48212 100644 --- a/Gems/AssetValidation/Code/Source/AssetValidationSystemComponent.cpp +++ b/Gems/AssetValidation/Code/Source/AssetValidationSystemComponent.cpp @@ -439,13 +439,6 @@ namespace AssetValidation bool GetDefaultSeedListFiles(AZStd::vector& defaultSeedListFiles) { - const char* engineRoot = nullptr; - AzFramework::ApplicationRequests::Bus::BroadcastResult(engineRoot, &AzFramework::ApplicationRequests::GetEngineRoot); - - const char* appRoot = nullptr; - AzFramework::ApplicationRequests::Bus::BroadcastResult(appRoot, &AzFramework::ApplicationRequests::GetAppRoot); - - auto settingsRegistry = AZ::SettingsRegistry::Get(); AZ::SettingsRegistryInterface::FixedValueString gameFolder; auto projectKey = AZ::SettingsRegistryInterface::FixedValueString::format("%s/project_path", AZ::SettingsRegistryMergeUtils::BootstrapSettingsRootKey); @@ -509,30 +502,28 @@ namespace AssetValidation AZ::Outcome AssetValidationSystemComponent::LoadSeedList(const char* seedPath, AZStd::string& seedListPath) { - AZStd::string absoluteSeedPath = seedPath; + AZ::IO::Path absoluteSeedPath = seedPath; if (AZ::StringFunc::Path::IsRelative(seedPath)) { - const char* appRoot = nullptr; - AzFramework::ApplicationRequests::Bus::BroadcastResult(appRoot, &AzFramework::ApplicationRequests::GetEngineRoot); + AZ::IO::FixedMaxPath engineRoot = AZ::Utils::GetEnginePath(); - if (!appRoot) + if (engineRoot.empty()) { return AZ::Failure(AZStd::string("Couldn't get engine root")); } - absoluteSeedPath = AZStd::string::format("%s/%s", appRoot, seedPath); + absoluteSeedPath = (engineRoot / seedPath).String(); } - AzFramework::StringFunc::Path::Normalize(absoluteSeedPath); AzFramework::AssetSeedList seedList; - if (!AZ::Utils::LoadObjectFromFileInPlace(absoluteSeedPath, seedList)) + if (!AZ::Utils::LoadObjectFromFileInPlace(absoluteSeedPath.Native(), seedList)) { return AZ::Failure(AZStd::string::format("Failed to load seed list %s", absoluteSeedPath.c_str())); } - seedListPath = absoluteSeedPath; + seedListPath = AZStd::move(absoluteSeedPath.Native()); return AZ::Success(seedList); } diff --git a/Gems/AssetValidation/Code/Tests/AssetValidationTestShared.h b/Gems/AssetValidation/Code/Tests/AssetValidationTestShared.h index c4872ab425..8da3ae1b34 100644 --- a/Gems/AssetValidation/Code/Tests/AssetValidationTestShared.h +++ b/Gems/AssetValidation/Code/Tests/AssetValidationTestShared.h @@ -150,13 +150,13 @@ struct AssetValidationTest auto projectPathKey = AZ::SettingsRegistryInterface::FixedValueString(AZ::SettingsRegistryMergeUtils::BootstrapSettingsRootKey) + "/project_path"; - m_registry.Set(projectPathKey, (AZ::IO::FixedMaxPath(GetEngineRoot()) / "AutomatedTesting").Native()); + m_registry.Set(projectPathKey, (AZ::IO::FixedMaxPath(m_tempDir.GetDirectory()) / "AutomatedTesting").Native()); AZ::SettingsRegistryMergeUtils::MergeSettingsToRegistry_AddRuntimeFilePaths(m_registry); // Set the engine root to the temporary directory and re-update the runtime file paths auto enginePathKey = AZ::SettingsRegistryInterface::FixedValueString(AZ::SettingsRegistryMergeUtils::BootstrapSettingsRootKey) + "/engine_path"; - m_registry.Set(enginePathKey, GetEngineRoot()); + m_registry.Set(enginePathKey, m_tempDir.GetDirectory()); AZ::SettingsRegistryMergeUtils::MergeSettingsToRegistry_AddRuntimeFilePaths(m_registry); } } @@ -176,11 +176,6 @@ struct AssetValidationTest AZ_Assert(false, "Not implemented"); } - const char* GetEngineRoot() const override - { - return m_tempDir.GetDirectory(); - } - void SetUp() override { using namespace ::testing; diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/Albedo.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Albedo.preset similarity index 60% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/Albedo.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Albedo.preset index fe2e7e0cb4..dc1f38d2da 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/Albedo.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Albedo.preset @@ -7,16 +7,6 @@ "UUID": "{08A95286-ADB2-41E4-96EB-DB48F4726D6A}", "Name": "Albedo", "RGB_Weight": "CIEXYZ", - "FileMasks": [ - "_basecolor", - "_diff", - "_color", - "_col", - "_albedo", - "_alb", - "_bc", - "_diffuse" - ], "PixelFormat": "BC1", "DiscardAlpha": true, "IsPowerOf2": true, @@ -29,16 +19,6 @@ "UUID": "{08A95286-ADB2-41E4-96EB-DB48F4726D6A}", "Name": "Albedo", "RGB_Weight": "CIEXYZ", - "FileMasks": [ - "_diff", - "_color", - "_col", - "_albedo", - "_alb", - "_basecolor", - "_bc", - "_diffuse" - ], "PixelFormat": "ASTC_6x6", "MaxTextureSize": 2048, "DiscardAlpha": true, @@ -51,16 +31,6 @@ "UUID": "{08A95286-ADB2-41E4-96EB-DB48F4726D6A}", "Name": "Albedo", "RGB_Weight": "CIEXYZ", - "FileMasks": [ - "_diff", - "_color", - "_col", - "_albedo", - "_alb", - "_basecolor", - "_bc", - "_diffuse" - ], "PixelFormat": "ASTC_6x6", "MaxTextureSize": 2048, "DiscardAlpha": true, @@ -73,16 +43,6 @@ "UUID": "{08A95286-ADB2-41E4-96EB-DB48F4726D6A}", "Name": "Albedo", "RGB_Weight": "CIEXYZ", - "FileMasks": [ - "_diff", - "_color", - "_col", - "_albedo", - "_alb", - "_basecolor", - "_bc", - "_diffuse" - ], "PixelFormat": "BC1", "DiscardAlpha": true, "IsPowerOf2": true, @@ -94,16 +54,6 @@ "UUID": "{08A95286-ADB2-41E4-96EB-DB48F4726D6A}", "Name": "Albedo", "RGB_Weight": "CIEXYZ", - "FileMasks": [ - "_diff", - "_color", - "_col", - "_albedo", - "_alb", - "_basecolor", - "_bc", - "_diffuse" - ], "PixelFormat": "BC1", "DiscardAlpha": true, "IsPowerOf2": true, diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/AlbedoWithCoverage.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/AlbedoWithCoverage.preset similarity index 60% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/AlbedoWithCoverage.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/AlbedoWithCoverage.preset index fda5a9cc52..439a057410 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/AlbedoWithCoverage.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/AlbedoWithCoverage.preset @@ -7,15 +7,6 @@ "UUID": "{57ED16B1-407B-4E29-BCFC-D3BAE60F2C85}", "Name": "AlbedoWithCoverage", "RGB_Weight": "CIEXYZ", - "FileMasks": [ - "_diff", - "_color", - "_albedo", - "_alb", - "_basecolor", - "_bc", - "_diffuse" - ], "PixelFormat": "BC1a", "IsPowerOf2": true, "MipMapSetting": { @@ -27,15 +18,6 @@ "UUID": "{57ED16B1-407B-4E29-BCFC-D3BAE60F2C85}", "Name": "AlbedoWithCoverage", "RGB_Weight": "CIEXYZ", - "FileMasks": [ - "_diff", - "_color", - "_albedo", - "_alb", - "_basecolor", - "_bc", - "_diffuse" - ], "PixelFormat": "ASTC_6x6", "IsPowerOf2": true, "MipMapSetting": { @@ -46,15 +28,6 @@ "UUID": "{57ED16B1-407B-4E29-BCFC-D3BAE60F2C85}", "Name": "AlbedoWithCoverage", "RGB_Weight": "CIEXYZ", - "FileMasks": [ - "_diff", - "_color", - "_albedo", - "_alb", - "_basecolor", - "_bc", - "_diffuse" - ], "PixelFormat": "ASTC_6x6", "IsPowerOf2": true, "MipMapSetting": { @@ -65,15 +38,6 @@ "UUID": "{57ED16B1-407B-4E29-BCFC-D3BAE60F2C85}", "Name": "AlbedoWithCoverage", "RGB_Weight": "CIEXYZ", - "FileMasks": [ - "_diff", - "_color", - "_albedo", - "_alb", - "_basecolor", - "_bc", - "_diffuse" - ], "PixelFormat": "BC1a", "IsPowerOf2": true, "MipMapSetting": { @@ -84,15 +48,6 @@ "UUID": "{57ED16B1-407B-4E29-BCFC-D3BAE60F2C85}", "Name": "AlbedoWithCoverage", "RGB_Weight": "CIEXYZ", - "FileMasks": [ - "_diff", - "_color", - "_albedo", - "_alb", - "_basecolor", - "_bc", - "_diffuse" - ], "PixelFormat": "BC1a", "IsPowerOf2": true, "MipMapSetting": { diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/AlbedoWithGenericAlpha.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/AlbedoWithGenericAlpha.preset similarity index 55% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/AlbedoWithGenericAlpha.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/AlbedoWithGenericAlpha.preset index 19d2b2bbe6..c315ede21c 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/AlbedoWithGenericAlpha.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/AlbedoWithGenericAlpha.preset @@ -7,17 +7,7 @@ "UUID": "{5D9ECB52-4CD9-4CB8-80E3-10CAE5EFB8A2}", "Name": "AlbedoWithGenericAlpha", "RGB_Weight": "CIEXYZ", - "FileMasks": [ - "_diff", - "_color", - "_albedo", - "_alb", - "_basecolor", - "_bc", - "_diffuse" - ], - "PixelFormat": "BC3", - "IsPowerOf2": true, + "PixelFormat": "ASTC_4x4", "MipMapSetting": { "MipGenType": "Box" } @@ -27,18 +17,8 @@ "UUID": "{5D9ECB52-4CD9-4CB8-80E3-10CAE5EFB8A2}", "Name": "AlbedoWithGenericAlpha", "RGB_Weight": "CIEXYZ", - "FileMasks": [ - "_diff", - "_color", - "_albedo", - "_alb", - "_basecolor", - "_bc", - "_diffuse" - ], "PixelFormat": "ASTC_6x6", "MaxTextureSize": 2048, - "IsPowerOf2": true, "MipMapSetting": { "MipGenType": "Box" } @@ -47,18 +27,8 @@ "UUID": "{5D9ECB52-4CD9-4CB8-80E3-10CAE5EFB8A2}", "Name": "AlbedoWithGenericAlpha", "RGB_Weight": "CIEXYZ", - "FileMasks": [ - "_diff", - "_color", - "_albedo", - "_alb", - "_basecolor", - "_bc", - "_diffuse" - ], "PixelFormat": "ASTC_6x6", "MaxTextureSize": 2048, - "IsPowerOf2": true, "MipMapSetting": { "MipGenType": "Box" } @@ -67,17 +37,7 @@ "UUID": "{5D9ECB52-4CD9-4CB8-80E3-10CAE5EFB8A2}", "Name": "AlbedoWithGenericAlpha", "RGB_Weight": "CIEXYZ", - "FileMasks": [ - "_diff", - "_color", - "_albedo", - "_alb", - "_basecolor", - "_bc", - "_diffuse" - ], "PixelFormat": "BC3", - "IsPowerOf2": true, "MipMapSetting": { "MipGenType": "Box" } @@ -86,17 +46,7 @@ "UUID": "{5D9ECB52-4CD9-4CB8-80E3-10CAE5EFB8A2}", "Name": "AlbedoWithGenericAlpha", "RGB_Weight": "CIEXYZ", - "FileMasks": [ - "_diff", - "_color", - "_albedo", - "_alb", - "_basecolor", - "_bc", - "_diffuse" - ], "PixelFormat": "BC3", - "IsPowerOf2": true, "MipMapSetting": { "MipGenType": "Box" } diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/AmbientOcclusion.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/AmbientOcclusion.preset similarity index 64% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/AmbientOcclusion.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/AmbientOcclusion.preset index d5acef34d6..573de18b88 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/AmbientOcclusion.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/AmbientOcclusion.preset @@ -8,12 +8,6 @@ "Name": "AmbientOcclusion", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_ao", - "_ambocc", - "_amb", - "_ambientocclusion" - ], "PixelFormat": "BC4" }, "PlatformsPresets": { @@ -22,12 +16,6 @@ "Name": "AmbientOcclusion", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_ao", - "_ambocc", - "_amb", - "_ambientocclusion" - ], "MaxTextureSize": 2048, "PixelFormat": "ASTC_4x4" }, @@ -36,12 +24,6 @@ "Name": "AmbientOcclusion", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_ao", - "_ambocc", - "_amb", - "_ambientocclusion" - ], "MaxTextureSize": 2048, "PixelFormat": "ASTC_4x4" }, @@ -50,12 +32,6 @@ "Name": "AmbientOcclusion", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_ao", - "_ambocc", - "_amb", - "_ambientocclusion" - ], "PixelFormat": "BC4" }, "provo": { @@ -63,12 +39,6 @@ "Name": "AmbientOcclusion", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_ao", - "_ambocc", - "_amb", - "_ambientocclusion" - ], "PixelFormat": "BC4" } } diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/ConvolvedCubemap.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/ConvolvedCubemap.preset similarity index 88% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/ConvolvedCubemap.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/ConvolvedCubemap.preset index abdf6501be..1ef15ada45 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/ConvolvedCubemap.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/ConvolvedCubemap.preset @@ -8,10 +8,6 @@ "Name": "ConvolvedCubemap", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_ccm", - "_convolvedcubemap" - ], "SuppressEngineReduce": true, "PixelFormat": "R9G9B9E5", "DiscardAlpha": true, @@ -35,10 +31,6 @@ "Name": "ConvolvedCubemap", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_ccm", - "_convolvedcubemap" - ], "SuppressEngineReduce": true, "PixelFormat": "R9G9B9E5", "DiscardAlpha": true, @@ -61,10 +53,6 @@ "Name": "ConvolvedCubemap", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_ccm", - "_convolvedcubemap" - ], "SuppressEngineReduce": true, "PixelFormat": "R9G9B9E5", "DiscardAlpha": true, @@ -87,10 +75,6 @@ "Name": "ConvolvedCubemap", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_ccm", - "_convolvedcubemap" - ], "SuppressEngineReduce": true, "PixelFormat": "R9G9B9E5", "DiscardAlpha": true, @@ -113,10 +97,6 @@ "Name": "ConvolvedCubemap", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_ccm", - "_convolvedcubemap" - ], "SuppressEngineReduce": true, "PixelFormat": "R9G9B9E5", "DiscardAlpha": true, diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/Decal_AlbedoWithOpacity.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Decal_AlbedoWithOpacity.preset similarity index 86% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/Decal_AlbedoWithOpacity.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Decal_AlbedoWithOpacity.preset index e2e009afc5..873d434380 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/Decal_AlbedoWithOpacity.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Decal_AlbedoWithOpacity.preset @@ -6,9 +6,6 @@ "DefaultPreset": { "UUID": "{E06B5087-2640-49B6-B9BA-D40048162B90}", "Name": "Decal_AlbedoWithOpacity", - "FileMasks": [ - "_decal" - ], "PixelFormat": "BC7t", "IsPowerOf2": true, "MipMapSetting": { @@ -21,9 +18,6 @@ "android": { "UUID": "{E06B5087-2640-49B6-B9BA-D40048162B90}", "Name": "Decal_AlbedoWithOpacity", - "FileMasks": [ - "_decal" - ], "PixelFormat": "ASTC_4x4", "MaxTextureSize": 2048, "IsPowerOf2": true, @@ -36,9 +30,6 @@ "ios": { "UUID": "{E06B5087-2640-49B6-B9BA-D40048162B90}", "Name": "Decal_AlbedoWithOpacity", - "FileMasks": [ - "_decal" - ], "PixelFormat": "ASTC_4x4", "MaxTextureSize": 2048, "IsPowerOf2": true, @@ -51,9 +42,6 @@ "mac": { "UUID": "{E06B5087-2640-49B6-B9BA-D40048162B90}", "Name": "Decal_AlbedoWithOpacity", - "FileMasks": [ - "_decal" - ], "PixelFormat": "BC3", "IsPowerOf2": true, "MipMapSetting": { @@ -65,9 +53,6 @@ "provo": { "UUID": "{E06B5087-2640-49B6-B9BA-D40048162B90}", "Name": "Decal_AlbedoWithOpacity", - "FileMasks": [ - "_decal" - ], "PixelFormat": "BC7t", "IsPowerOf2": true, "MipMapSetting": { diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/Displacement.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Displacement.preset similarity index 59% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/Displacement.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Displacement.preset index 28ac84d646..04f35dbd6f 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/Displacement.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Displacement.preset @@ -8,18 +8,6 @@ "Name": "Displacement", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_displ", - "_disp", - "_dsp", - "_d", - "_dm", - "_displacement", - "_height", - "_hm", - "_ht", - "_h" - ], "PixelFormat": "BC4", "DiscardAlpha": true, "IsPowerOf2": true, @@ -33,18 +21,6 @@ "Name": "Displacement", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_displ", - "_disp", - "_dsp", - "_d", - "_dm", - "_displacement", - "_height", - "_hm", - "_ht", - "_h" - ], "PixelFormat": "ASTC_4x4", "MaxTextureSize": 2048, "DiscardAlpha": true, @@ -59,18 +35,6 @@ "Name": "Displacement", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_displ", - "_disp", - "_dsp", - "_d", - "_dm", - "_displacement", - "_height", - "_hm", - "_ht", - "_h" - ], "PixelFormat": "ASTC_4x4", "MaxTextureSize": 2048, "DiscardAlpha": true, @@ -84,18 +48,6 @@ "Name": "Displacement", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_displ", - "_disp", - "_dsp", - "_d", - "_dm", - "_displacement", - "_height", - "_hm", - "_ht", - "_h" - ], "PixelFormat": "BC4", "DiscardAlpha": true, "IsPowerOf2": true, @@ -108,18 +60,6 @@ "Name": "Displacement", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_displ", - "_disp", - "_dsp", - "_d", - "_dm", - "_displacement", - "_height", - "_hm", - "_ht", - "_h" - ], "PixelFormat": "BC4", "DiscardAlpha": true, "IsPowerOf2": true, diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/Emissive.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Emissive.preset similarity index 61% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/Emissive.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Emissive.preset index f5e3a79357..798b8d1657 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/Emissive.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Emissive.preset @@ -7,13 +7,6 @@ "UUID": "{07041D83-E0C3-4726-8735-CA0FE550C9A0}", "Name": "Emissive", "RGB_Weight": "CIEXYZ", - "FileMasks": [ - "_emissive", - "_e", - "_glow", - "_em", - "_emit" - ], "PixelFormat": "BC7", "DiscardAlpha": true }, @@ -22,13 +15,6 @@ "UUID": "{07041D83-E0C3-4726-8735-CA0FE550C9A0}", "Name": "Emissive", "RGB_Weight": "CIEXYZ", - "FileMasks": [ - "_emissive", - "_e", - "_glow", - "_em", - "_emit" - ], "PixelFormat": "ASTC_6x6", "MaxTextureSize": 2048, "DiscardAlpha": true @@ -37,13 +23,6 @@ "UUID": "{07041D83-E0C3-4726-8735-CA0FE550C9A0}", "Name": "Emissive", "RGB_Weight": "CIEXYZ", - "FileMasks": [ - "_emissive", - "_e", - "_glow", - "_em", - "_emit" - ], "PixelFormat": "ASTC_6x6", "MaxTextureSize": 2048, "DiscardAlpha": true @@ -52,13 +31,6 @@ "UUID": "{07041D83-E0C3-4726-8735-CA0FE550C9A0}", "Name": "Emissive", "RGB_Weight": "CIEXYZ", - "FileMasks": [ - "_emissive", - "_e", - "_glow", - "_em", - "_emit" - ], "PixelFormat": "BC7", "DiscardAlpha": true }, @@ -66,13 +38,6 @@ "UUID": "{07041D83-E0C3-4726-8735-CA0FE550C9A0}", "Name": "Emissive", "RGB_Weight": "CIEXYZ", - "FileMasks": [ - "_emissive", - "_e", - "_glow", - "_em", - "_emit" - ], "PixelFormat": "BC7", "DiscardAlpha": true } diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/Gradient.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Gradient.preset similarity index 100% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/Gradient.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Gradient.preset diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/Greyscale.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Greyscale.preset similarity index 77% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/Greyscale.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Greyscale.preset index c71ada1269..19439bad2d 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/Greyscale.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Greyscale.preset @@ -8,11 +8,8 @@ "Name": "Greyscale", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_mask" - ], "PixelFormat": "BC4", - "IsPowerOf2": true, + "Swizzle": "rrr1", "MipMapSetting": { "MipGenType": "Box" } @@ -23,11 +20,8 @@ "Name": "Greyscale", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_mask" - ], "PixelFormat": "ASTC_4x4", - "IsPowerOf2": true, + "Swizzle": "rrr1", "MipMapSetting": { "MipGenType": "Box" } @@ -37,11 +31,8 @@ "Name": "Greyscale", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_mask" - ], "PixelFormat": "ASTC_4x4", - "IsPowerOf2": true, + "Swizzle": "rrr1", "MipMapSetting": { "MipGenType": "Box" } @@ -51,11 +42,8 @@ "Name": "Greyscale", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_mask" - ], "PixelFormat": "BC4", - "IsPowerOf2": true, + "Swizzle": "rrr1", "MipMapSetting": { "MipGenType": "Box" } @@ -65,11 +53,8 @@ "Name": "Greyscale", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_mask" - ], "PixelFormat": "BC4", - "IsPowerOf2": true, + "Swizzle": "rrr1", "MipMapSetting": { "MipGenType": "Box" } diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/IBLDiffuse.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/IBLDiffuse.preset similarity index 90% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/IBLDiffuse.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/IBLDiffuse.preset index 8bd6b348d1..845f8e13e4 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/IBLDiffuse.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/IBLDiffuse.preset @@ -7,9 +7,6 @@ "UUID": "{E3706342-BF21-4D9C-AE28-9670EB3EF3C5}", "Name": "IBLDiffuse", "Description": "The input cubemap generates an IBL diffuse output cubemap.", - "FileMasks": [ - "_ibldiffusecm" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -31,9 +28,6 @@ "android": { "UUID": "{E3706342-BF21-4D9C-AE28-9670EB3EF3C5}", "Name": "IBLDiffuse", - "FileMasks": [ - "_ibldiffusecm" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -54,9 +48,6 @@ "ios": { "UUID": "{E3706342-BF21-4D9C-AE28-9670EB3EF3C5}", "Name": "IBLDiffuse", - "FileMasks": [ - "_ibldiffusecm" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -77,9 +68,6 @@ "mac": { "UUID": "{E3706342-BF21-4D9C-AE28-9670EB3EF3C5}", "Name": "IBLDiffuse", - "FileMasks": [ - "_ibldiffusecm" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -100,9 +88,6 @@ "provo": { "UUID": "{E3706342-BF21-4D9C-AE28-9670EB3EF3C5}", "Name": "IBLDiffuse", - "FileMasks": [ - "_ibldiffusecm" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/IBLGlobal.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/IBLGlobal.preset similarity index 83% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/IBLGlobal.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/IBLGlobal.preset index 717157f2aa..51daf44d6e 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/IBLGlobal.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/IBLGlobal.preset @@ -8,11 +8,6 @@ "Name": "IBLGlobal", "Description": "The input cubemap generates IBL specular and diffuse cubemaps.", "GenerateIBLOnly": true, - "FileMasks": [ - "_iblglobalcm", - "_cubemap", - "_cm" - ], "CubemapSettings": { "GenerateIBLSpecular": true, "IBLSpecularPreset": "IBLSpecular", diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/IBLSkybox.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/IBLSkybox.preset similarity index 90% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/IBLSkybox.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/IBLSkybox.preset index eee9af4cea..1a596468bd 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/IBLSkybox.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/IBLSkybox.preset @@ -7,9 +7,6 @@ "UUID": "{E6441EAC-9843-484B-8EFC-C03B2935B48D}", "Name": "IBLSkybox", "Description": "The input cubemap generates a skybox, IBL specular, and IBL diffuse output cubemaps.", - "FileMasks": [ - "_iblskyboxcm" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -29,9 +26,6 @@ "android": { "UUID": "{E6441EAC-9843-484B-8EFC-C03B2935B48D}", "Name": "IBLSkybox", - "FileMasks": [ - "_iblskyboxcm" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -50,9 +44,6 @@ "ios": { "UUID": "{E6441EAC-9843-484B-8EFC-C03B2935B48D}", "Name": "IBLSkybox", - "FileMasks": [ - "_iblskyboxcm" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -71,9 +62,6 @@ "mac": { "UUID": "{E6441EAC-9843-484B-8EFC-C03B2935B48D}", "Name": "IBLSkybox", - "FileMasks": [ - "_iblskyboxcm" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -92,9 +80,6 @@ "provo": { "UUID": "{E6441EAC-9843-484B-8EFC-C03B2935B48D}", "Name": "IBLSkybox", - "FileMasks": [ - "_iblskyboxcm" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/IBLSpecular.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/IBLSpecular.preset similarity index 87% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/IBLSpecular.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/IBLSpecular.preset index 4f935c73ff..691f554540 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/IBLSpecular.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/IBLSpecular.preset @@ -7,10 +7,6 @@ "UUID": "{908DA68C-97FB-4C4A-97BC-5A55F30F14FA}", "Name": "IBLSpecular", "Description": "The input cubemap generates an IBL specular output cubemap.", - "FileMasks": [ - "_iblspecularcm", - "_iblspecularcm256" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -34,10 +30,6 @@ "android": { "UUID": "{908DA68C-97FB-4C4A-97BC-5A55F30F14FA}", "Name": "IBLSpecular", - "FileMasks": [ - "_iblspecularcm", - "_iblspecularcm256" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -60,10 +52,6 @@ "ios": { "UUID": "{908DA68C-97FB-4C4A-97BC-5A55F30F14FA}", "Name": "IBLSpecular", - "FileMasks": [ - "_iblspecularcm", - "_iblspecularcm256" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -86,10 +74,6 @@ "mac": { "UUID": "{908DA68C-97FB-4C4A-97BC-5A55F30F14FA}", "Name": "IBLSpecular", - "FileMasks": [ - "_iblspecularcm", - "_iblspecularcm256" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -112,10 +96,6 @@ "provo": { "UUID": "{908DA68C-97FB-4C4A-97BC-5A55F30F14FA}", "Name": "IBLSpecular", - "FileMasks": [ - "_iblspecularcm", - "_iblspecularcm256" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/IBLSpecularHigh.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/IBLSpecularHigh.preset similarity index 90% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/IBLSpecularHigh.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/IBLSpecularHigh.preset index ff4e143326..b436386864 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/IBLSpecularHigh.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/IBLSpecularHigh.preset @@ -7,9 +7,6 @@ "UUID": "{B66395E1-8D0E-4159-989B-FC2B9F091B75}", "Name": "IBLSpecularHigh", "Description": "The input cubemap generates an IBL specular output cubemap.", - "FileMasks": [ - "_iblspecularcm512" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -33,9 +30,6 @@ "android": { "UUID": "{B66395E1-8D0E-4159-989B-FC2B9F091B75}", "Name": "IBLSpecularHigh", - "FileMasks": [ - "_iblspecularcm512" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -58,9 +52,6 @@ "ios": { "UUID": "{B66395E1-8D0E-4159-989B-FC2B9F091B75}", "Name": "IBLSpecularHigh", - "FileMasks": [ - "_iblspecularcm512" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -83,9 +74,6 @@ "mac": { "UUID": "{B66395E1-8D0E-4159-989B-FC2B9F091B75}", "Name": "IBLSpecularHigh", - "FileMasks": [ - "_iblspecularcm512" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -108,9 +96,6 @@ "provo": { "UUID": "{B66395E1-8D0E-4159-989B-FC2B9F091B75}", "Name": "IBLSpecularHigh", - "FileMasks": [ - "_iblspecularcm512" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/IBLSpecularLow.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/IBLSpecularLow.preset similarity index 90% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/IBLSpecularLow.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/IBLSpecularLow.preset index ee9ddd6ac7..7810028efa 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/IBLSpecularLow.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/IBLSpecularLow.preset @@ -7,9 +7,6 @@ "UUID": "{7273ACAE-6E34-487C-AF71-99423A6E1CB0}", "Name": "IBLSpecularLow", "Description": "The input cubemap generates an IBL specular output cubemap.", - "FileMasks": [ - "_iblspecularcm128" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -33,9 +30,6 @@ "android": { "UUID": "{7273ACAE-6E34-487C-AF71-99423A6E1CB0}", "Name": "IBLSpecularLow", - "FileMasks": [ - "_iblspecularcm128" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -58,9 +52,6 @@ "ios": { "UUID": "{7273ACAE-6E34-487C-AF71-99423A6E1CB0}", "Name": "IBLSpecularLow", - "FileMasks": [ - "_iblspecularcm128" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -83,9 +74,6 @@ "mac": { "UUID": "{7273ACAE-6E34-487C-AF71-99423A6E1CB0}", "Name": "IBLSpecularLow", - "FileMasks": [ - "_iblspecularcm128" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -108,9 +96,6 @@ "provo": { "UUID": "{7273ACAE-6E34-487C-AF71-99423A6E1CB0}", "Name": "IBLSpecularLow", - "FileMasks": [ - "_iblspecularcm128" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/IBLSpecularVeryHigh.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/IBLSpecularVeryHigh.preset similarity index 90% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/IBLSpecularVeryHigh.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/IBLSpecularVeryHigh.preset index 08d9416935..a18885dad9 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/IBLSpecularVeryHigh.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/IBLSpecularVeryHigh.preset @@ -7,9 +7,6 @@ "UUID": "{5CD1AFA6-915B-4716-893C-A5B1F4074C22}", "Name": "IBLSpecularVeryHigh", "Description": "The input cubemap generates an IBL specular output cubemap.", - "FileMasks": [ - "_iblspecularcm1024" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -33,9 +30,6 @@ "android": { "UUID": "{5CD1AFA6-915B-4716-893C-A5B1F4074C22}", "Name": "IBLSpecularVeryHigh", - "FileMasks": [ - "_iblspecularcm1024" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -58,9 +52,6 @@ "ios": { "UUID": "{5CD1AFA6-915B-4716-893C-A5B1F4074C22}", "Name": "IBLSpecularVeryHigh", - "FileMasks": [ - "_iblspecularcm1024" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -83,9 +74,6 @@ "mac": { "UUID": "{5CD1AFA6-915B-4716-893C-A5B1F4074C22}", "Name": "IBLSpecularVeryHigh", - "FileMasks": [ - "_iblspecularcm1024" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -108,9 +96,6 @@ "provo": { "UUID": "{5CD1AFA6-915B-4716-893C-A5B1F4074C22}", "Name": "IBLSpecularVeryHigh", - "FileMasks": [ - "_iblspecularcm1024" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/IBLSpecularVeryLow.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/IBLSpecularVeryLow.preset similarity index 90% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/IBLSpecularVeryLow.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/IBLSpecularVeryLow.preset index c5c0788848..fb910b563a 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/IBLSpecularVeryLow.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/IBLSpecularVeryLow.preset @@ -7,9 +7,6 @@ "UUID": "{8293C236-D3E8-4352-8B18-C2E82EEE6547}", "Name": "IBLSpecularVeryLow", "Description": "The input cubemap generates an IBL specular output cubemap.", - "FileMasks": [ - "_iblspecularcm64" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -33,9 +30,6 @@ "android": { "UUID": "{8293C236-D3E8-4352-8B18-C2E82EEE6547}", "Name": "IBLSpecularVeryLow", - "FileMasks": [ - "_iblspecularcm64" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -58,9 +52,6 @@ "ios": { "UUID": "{8293C236-D3E8-4352-8B18-C2E82EEE6547}", "Name": "IBLSpecularVeryLow", - "FileMasks": [ - "_iblspecularcm64" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -83,9 +74,6 @@ "mac": { "UUID": "{8293C236-D3E8-4352-8B18-C2E82EEE6547}", "Name": "IBLSpecularVeryLow", - "FileMasks": [ - "_iblspecularcm64" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -108,9 +96,6 @@ "provo": { "UUID": "{8293C236-D3E8-4352-8B18-C2E82EEE6547}", "Name": "IBLSpecularVeryLow", - "FileMasks": [ - "_iblspecularcm64" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/ImageBuilder.settings b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/ImageBuilder.settings new file mode 100644 index 0000000000..bba2855650 --- /dev/null +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/ImageBuilder.settings @@ -0,0 +1,154 @@ +{ + "Type": "JsonSerialization", + "Version": 1, + "ClassName": "BuilderSettingManager", + "ClassData": { + "BuildSettings": { + "android": { + "GlossScale": 16.0, + "GlossBias": 0.0, + "Streaming": false, + "Enable": true + }, + "ios": { + "GlossScale": 16.0, + "GlossBias": 0.0, + "Streaming": false, + "Enable": true + }, + "mac": { + "GlossScale": 16.0, + "GlossBias": 0.0, + "Streaming": false, + "Enable": true + }, + "pc": { + "GlossScale": 16.0, + "GlossBias": 0.0, + "Streaming": false, + "Enable": true + }, + "linux": { + "GlossScale": 16.0, + "GlossBias": 0.0, + "Streaming": false, + "Enable": true + }, + "provo": { + "GlossScale": 16.0, + "GlossBias": 0.0, + "Streaming": false, + "Enable": false + } + }, + "PresetsByFileMask": { + // albedo + "_basecolor": [ "Albedo", "AlbedoWithGenericAlpha", "AlbedoWithCoverage" ], + "_diff": [ "Albedo", "AlbedoWithGenericAlpha", "AlbedoWithCoverage" ], + "_diffuse": [ "Albedo", "AlbedoWithGenericAlpha", "AlbedoWithCoverage" ], + "_color": [ "Albedo", "AlbedoWithGenericAlpha", "AlbedoWithCoverage" ], + "_col": [ "Albedo", "AlbedoWithGenericAlpha", "AlbedoWithCoverage" ], + "_albedo": [ "Albedo", "AlbedoWithGenericAlpha", "AlbedoWithCoverage" ], + "_alb": [ "Albedo", "AlbedoWithGenericAlpha", "AlbedoWithCoverage" ], + "_bc": [ "Albedo", "AlbedoWithGenericAlpha", "AlbedoWithCoverage" ], + // normals + "_ddn": [ "Normals" ], + "_normal": [ "Normals" ], + "_normalmap": [ "Normals" ], + "_normals": [ "Normals" ], + "_norm": [ "Normals" ], + "_nor": [ "Normals" ], + "_nrm": [ "Normals" ], + "_nm": [ "Normals" ], + "_n": [ "Normals" ], + "_ddna": [ "NormalsWithSmoothness" ], + "_normala": [ "NormalsWithSmoothness" ], + "_nrma": [ "NormalsWithSmoothness" ], + "_nma": [ "NormalsWithSmoothness" ], + "_na": [ "NormalsWithSmoothness" ], + // refelctance + "_spec": [ "Reflectance" ], + "_specular": [ "Reflectance" ], + "_metallic": [ "Reflectance" ], + "_refl": [ "Reflectance" ], + "_ref": [ "Reflectance" ], + "_rf": [ "Reflectance" ], + "_gloss": [ "Reflectance" ], + "_g": [ "Reflectance" ], + "_f0": [ "Reflectance" ], + "_specf0": [ "Reflectance" ], + "_metal": [ "Reflectance" ], + "_mtl": [ "Reflectance" ], + "_m": [ "Reflectance" ], + "_mt": [ "Reflectance" ], + "_metalness": [ "Reflectance" ], + "_rough": [ "Reflectance" ], + "_roughness": [ "Reflectance" ], + // opacity + "_sss": [ "Opacity" ], + "_trans": [ "Opacity" ], + "_opac": [ "Opacity" ], + "_opacity": [ "Opacity" ], + "_o": [ "Opacity" ], + "_op": [ "Opacity" ], + "_mask": [ "Opacity", "Greyscale" ], + "_msk": [ "Opacity" ], + "_blend": [ "Opacity" ], + // AO + "_ao": [ "AmbientOcclusion" ], + "_ambocc": [ "AmbientOcclusion" ], + "_amb": [ "AmbientOcclusion" ], + "_ambientocclusion": [ "AmbientOcclusion" ], + // emissive + "_emissive": [ "Emissive" ], + "_e": [ "Emissive" ], + "_glow": [ "Emissive" ], + "_em": [ "Emissive" ], + "_emit": [ "Emissive" ], + // displacement + "_displ": [ "Displacement" ], + "_disp": [ "Displacement" ], + "_dsp": [ "Displacement" ], + "_d": [ "Displacement" ], + "_dm": [ "Displacement" ], + "_displacement": [ "Displacement" ], + "_height": [ "Displacement" ], + "_hm": [ "Displacement" ], + "_ht": [ "Displacement" ], + "_h": [ "Displacement" ], + // cubemap + "_ibldiffusecm": [ "IBLDiffuse" ], + "_iblskyboxcm": [ "IBLSkybox" ], + "_iblspecularcm": [ "IBLSpecular" ], + "_iblspecularcm64": [ "IBLSpecularVeryLow" ], + "_iblspecularcm128": [ "IBLSpecularLow" ], + "_iblspecularcm256": [ "IBLSpecular" ], + "_iblspecularcm512": [ "IBLSpecularHigh" ], + "_iblspecularcm1024": [ "IBLSpecularVeryHigh" ], + "_skyboxcm": [ "Skybox" ], + "_ccm": [ "ConvolvedCubemap" ], + "_convolvedcubemap": [ "ConvolvedCubemap" ], + "_iblglobalcm": [ "IBLGlobal" ], + "_cubemap": [ "IBLGlobal" ], + "_cm": [ "IBLGlobal" ], + // lut + "_lut": [ "LUT_RG8" ], + "_lutr32f": [ "LUT_R32F" ], + "_lutrgba8": [ "LUT_RGBA8" ], + "_lutrgba16": [ "LUT_RGBA16" ], + "_lutrgba16f": [ "LUT_RGBA16F" ], + "_lutrg16": [ "LUT_RG16" ], + "_lutrg32f": [ "LUT_RG32F" ], + "_lutrgba32f": [ "LUT_RGBA32F" ], + // layer mask + "_layers": [ "LayerMask" ], + "_rgbmask": [ "LayerMask" ], + // decal + "_decal": [ "Decal_AlbedoWithOpacity" ], + // ui + "_ui": [ "UserInterface_Compressed","UserInterface_Lossless" ] + }, + "DefaultPreset": "Albedo", + "DefaultPresetAlpha": "AlbedoWithGenericAlpha" + } +} diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/LUT_R32F.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/LUT_R32F.preset similarity index 97% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/LUT_R32F.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/LUT_R32F.preset index 1bb23c6e96..693f268304 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/LUT_R32F.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/LUT_R32F.preset @@ -6,7 +6,6 @@ "DefaultPreset": { "UUID": "{10D4D7D8-23E2-4FC5-BE6A-DA9949D2C603}", "Name": "LUT_R32F", - "FileMasks": ["_lutr32f"], "SourceColor": "Linear", "DestColor": "Linear", "PixelFormat": "R32F" diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/LUT_RG16.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/LUT_RG16.preset similarity index 100% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/LUT_RG16.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/LUT_RG16.preset diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/LUT_RG32F.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/LUT_RG32F.preset similarity index 97% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/LUT_RG32F.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/LUT_RG32F.preset index 2cf0c6ca0a..7277a4b111 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/LUT_RG32F.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/LUT_RG32F.preset @@ -6,7 +6,6 @@ "DefaultPreset": { "UUID": "{52470B8B-0798-4E03-B0D3-039D5141CFEC}", "Name": "LUT_RG32F", - "FileMasks": ["_lutrg32f"], "SourceColor": "Linear", "DestColor": "Linear", "PixelFormat": "R32G32F" diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/LUT_RG8.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/LUT_RG8.preset similarity index 79% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/LUT_RG8.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/LUT_RG8.preset index 9838d532b2..051cc2bedc 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/LUT_RG8.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/LUT_RG8.preset @@ -8,9 +8,6 @@ "Name": "LUT_RG8", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_lut" - ], "PixelFormat": "R8G8" }, "PlatformsPresets": { @@ -19,9 +16,6 @@ "Name": "LUT_RG8", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_lut" - ], "PixelFormat": "R8G8" }, "ios": { @@ -29,9 +23,6 @@ "Name": "LUT_RG8", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_lut" - ], "PixelFormat": "R8G8" }, "mac": { @@ -39,9 +30,6 @@ "Name": "LUT_RG8", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_lut" - ], "PixelFormat": "R8G8" }, "provo": { @@ -49,9 +37,6 @@ "Name": "LUT_RG8", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_lut" - ], "PixelFormat": "R8G8" } } diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/LUT_RGBA16.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/LUT_RGBA16.preset similarity index 78% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/LUT_RGBA16.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/LUT_RGBA16.preset index f36d566d7e..ed940e5f25 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/LUT_RGBA16.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/LUT_RGBA16.preset @@ -8,9 +8,6 @@ "Name": "LUT_RGBA16", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_lutrgba16" - ], "PixelFormat": "R16G16B16A16" }, "PlatformsPresets": { @@ -19,9 +16,6 @@ "Name": "LUT_RGBA16", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_lutrgba16" - ], "PixelFormat": "R16G16B16A16" }, "ios": { @@ -29,9 +23,6 @@ "Name": "LUT_RGBA16", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_lutrgba16" - ], "PixelFormat": "R16G16B16A16" }, "osx_gl": { @@ -39,9 +30,6 @@ "Name": "LUT_RGBA16", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_lutrgba16" - ], "PixelFormat": "R16G16B16A16" }, "provo": { @@ -49,9 +37,6 @@ "Name": "LUT_RGBA16", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_lutrgba16" - ], "PixelFormat": "R16G16B16A16" } } diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/LUT_RGBA16F.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/LUT_RGBA16F.preset similarity index 78% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/LUT_RGBA16F.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/LUT_RGBA16F.preset index 367c5101b3..f5d109b4a1 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/LUT_RGBA16F.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/LUT_RGBA16F.preset @@ -8,9 +8,6 @@ "Name": "LUT_RGBA16F", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_lutrgba16f" - ], "PixelFormat": "R16G16B16A16F" }, "PlatformsPresets": { @@ -19,9 +16,6 @@ "Name": "LUT_RGBA16F", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_lutrgba16f" - ], "PixelFormat": "R16G16B16A16F" }, "ios": { @@ -29,9 +23,6 @@ "Name": "LUT_RGBA16F", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_lutrgba16f" - ], "PixelFormat": "R16G16B16A16F" }, "osx_gl": { @@ -39,9 +30,6 @@ "Name": "LUT_RGBA16F", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_lutrgba16f" - ], "PixelFormat": "R16G16B16A16F" }, "provo": { @@ -49,9 +37,6 @@ "Name": "LUT_RGBA16F", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_lutrgba16f" - ], "PixelFormat": "R16G16B16A16F" } } diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/LUT_RGBA32F.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/LUT_RGBA32F.preset similarity index 97% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/LUT_RGBA32F.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/LUT_RGBA32F.preset index 3a456825bf..b85cb66c9d 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/LUT_RGBA32F.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/LUT_RGBA32F.preset @@ -6,7 +6,6 @@ "DefaultPreset": { "UUID": "{AC4C49D4-2C70-425A-8DBF-E7FB2C61CF8D}", "Name": "LUT_RGBA32F", - "FileMasks": ["_lutrgba32f"], "SourceColor": "Linear", "DestColor": "Linear", "PixelFormat": "R32G32B32A32F" diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/LUT_RGBA8.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/LUT_RGBA8.preset similarity index 100% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/LUT_RGBA8.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/LUT_RGBA8.preset diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/LayerMask.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/LayerMask.preset similarity index 72% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/LayerMask.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/LayerMask.preset index 5ce06aaea2..d33db40547 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/LayerMask.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/LayerMask.preset @@ -8,10 +8,6 @@ "Name": "LayerMask", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_layers", - "_rgbmask" - ], "PixelFormat": "R8G8B8X8" }, "PlatformsPresets": { @@ -20,10 +16,6 @@ "Name": "LayerMask", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_layers", - "_rgbmask" - ], "PixelFormat": "R8G8B8X8" }, "ios": { @@ -31,10 +23,6 @@ "Name": "LayerMask", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_layers", - "_rgbmask" - ], "PixelFormat": "R8G8B8X8" }, "mac": { @@ -42,10 +30,6 @@ "Name": "LayerMask", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_layers", - "_rgbmask" - ], "PixelFormat": "R8G8B8X8" }, "provo": { @@ -53,10 +37,6 @@ "Name": "LayerMask", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_layers", - "_rgbmask" - ], "PixelFormat": "R8G8B8X8" } } diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/Normals.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Normals.preset similarity index 62% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/Normals.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Normals.preset index eee0b88686..3f7a9ff111 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/Normals.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Normals.preset @@ -8,17 +8,6 @@ "Name": "Normals", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_ddn", - "_normal", - "_normalmap", - "_normals", - "_norm", - "_nor", - "_nrm", - "_nm", - "_n" - ], "PixelFormat": "BC5s", "DiscardAlpha": true, "IsPowerOf2": true, @@ -33,17 +22,6 @@ "Name": "Normals", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_ddn", - "_normal", - "_normalmap", - "_normals", - "_norm", - "_nor", - "_nrm", - "_nm", - "_n" - ], "PixelFormat": "ASTC_4x4", "DiscardAlpha": true, "MaxTextureSize": 1024, @@ -58,17 +36,6 @@ "Name": "Normals", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_ddn", - "_normal", - "_normalmap", - "_normals", - "_norm", - "_nor", - "_nrm", - "_nm", - "_n" - ], "PixelFormat": "ASTC_4x4", "DiscardAlpha": true, "MaxTextureSize": 1024, @@ -83,17 +50,6 @@ "Name": "Normals", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_ddn", - "_normal", - "_normalmap", - "_normals", - "_norm", - "_nor", - "_nrm", - "_nm", - "_n" - ], "PixelFormat": "BC5s", "DiscardAlpha": true, "IsPowerOf2": true, @@ -107,17 +63,6 @@ "Name": "Normals", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_ddn", - "_normal", - "_normalmap", - "_normals", - "_norm", - "_nor", - "_nrm", - "_nm", - "_n" - ], "PixelFormat": "BC5s", "DiscardAlpha": true, "IsPowerOf2": true, diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/NormalsWithSmoothness.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/NormalsWithSmoothness.preset similarity index 74% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/NormalsWithSmoothness.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/NormalsWithSmoothness.preset index 2c66cf9190..fd0abf3467 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/NormalsWithSmoothness.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/NormalsWithSmoothness.preset @@ -8,13 +8,6 @@ "Name": "NormalsWithSmoothness", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_ddna", - "_normala", - "_nrma", - "_nma", - "_na" - ], "PixelFormat": "BC5s", "PixelFormatAlpha": "BC4", "IsPowerOf2": true, @@ -30,13 +23,6 @@ "Name": "NormalsWithSmoothness", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_ddna", - "_normala", - "_nrma", - "_nma", - "_na" - ], "PixelFormat": "ASTC_4x4", "PixelFormatAlpha": "ASTC_4x4", "MaxTextureSize": 2048, @@ -52,13 +38,6 @@ "Name": "NormalsWithSmoothness", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_ddna", - "_normala", - "_nrma", - "_nma", - "_na" - ], "PixelFormat": "ASTC_4x4", "PixelFormatAlpha": "ASTC_4x4", "MaxTextureSize": 2048, @@ -74,13 +53,6 @@ "Name": "NormalsWithSmoothness", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_ddna", - "_normala", - "_nrma", - "_nma", - "_na" - ], "PixelFormat": "BC5s", "PixelFormatAlpha": "BC4", "IsPowerOf2": true, @@ -95,13 +67,6 @@ "Name": "NormalsWithSmoothness", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_ddna", - "_normala", - "_nrma", - "_nma", - "_na" - ], "PixelFormat": "BC5s", "PixelFormatAlpha": "BC4", "IsPowerOf2": true, diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/Opacity.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Opacity.preset similarity index 56% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/Opacity.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Opacity.preset index 53998583cc..e896b74522 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/Opacity.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Opacity.preset @@ -8,19 +8,8 @@ "Name": "Opacity", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_sss", - "_trans", - "_opac", - "_opacity", - "_o", - "_opac", - "_op", - "_mask", - "_msk", - "_blend" - ], "PixelFormat": "BC4", + "Swizzle": "rrr1", "IsPowerOf2": true, "MipMapSetting": { "MipGenType": "Box" @@ -32,19 +21,8 @@ "Name": "Opacity", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_sss", - "_trans", - "_opac", - "_opacity", - "_o", - "_opac", - "_op", - "_mask", - "_msk", - "_blend" - ], "PixelFormat": "ASTC_4x4", + "Swizzle": "rrr1", "MaxTextureSize": 2048, "IsPowerOf2": true, "MipMapSetting": { @@ -56,19 +34,8 @@ "Name": "Opacity", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_sss", - "_trans", - "_opac", - "_opacity", - "_o", - "_opac", - "_op", - "_mask", - "_msk", - "_blend" - ], "PixelFormat": "ASTC_4x4", + "Swizzle": "rrr1", "MaxTextureSize": 2048, "IsPowerOf2": true, "MipMapSetting": { @@ -80,19 +47,8 @@ "Name": "Opacity", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_sss", - "_trans", - "_opac", - "_opacity", - "_o", - "_opac", - "_op", - "_mask", - "_msk", - "_blend" - ], "PixelFormat": "BC4", + "Swizzle": "rrr1", "IsPowerOf2": true, "MipMapSetting": { "MipGenType": "Box" @@ -103,19 +59,8 @@ "Name": "Opacity", "SourceColor": "Linear", "DestColor": "Linear", - "FileMasks": [ - "_sss", - "_trans", - "_opac", - "_opacity", - "_o", - "_opac", - "_op", - "_mask", - "_msk", - "_blend" - ], "PixelFormat": "BC4", + "Swizzle": "rrr1", "IsPowerOf2": true, "MipMapSetting": { "MipGenType": "Box" diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/ReferenceImage.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/ReferenceImage.preset similarity index 100% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/ReferenceImage.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/ReferenceImage.preset diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/ReferenceImage_HDRLinear.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/ReferenceImage_HDRLinear.preset similarity index 100% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/ReferenceImage_HDRLinear.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/ReferenceImage_HDRLinear.preset diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/ReferenceImage_HDRLinearUncompressed.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/ReferenceImage_HDRLinearUncompressed.preset similarity index 100% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/ReferenceImage_HDRLinearUncompressed.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/ReferenceImage_HDRLinearUncompressed.preset diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/ReferenceImage_Linear.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/ReferenceImage_Linear.preset similarity index 100% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/ReferenceImage_Linear.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/ReferenceImage_Linear.preset diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Reflectance.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Reflectance.preset new file mode 100644 index 0000000000..9e3c718978 --- /dev/null +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Reflectance.preset @@ -0,0 +1,68 @@ +{ + "Type": "JsonSerialization", + "Version": 1, + "ClassName": "MultiplatformPresetSettings", + "ClassData": { + "DefaultPreset": { + "UUID": "{7A3CC95E-0A0C-4CA1-8357-5712B028B77D}", + "Name": "Reflectance", + "SourceColor": "Linear", + "DestColor": "Linear", + "PixelFormat": "BC4", + "IsPowerOf2": true, + "MipMapSetting": { + "MipGenType": "Box" + } + }, + "PlatformsPresets": { + "android": { + "UUID": "{7A3CC95E-0A0C-4CA1-8357-5712B028B77D}", + "Name": "Reflectance", + "SourceColor": "Linear", + "DestColor": "Linear", + "PixelFormat": "ASTC_6x6", + "Swizzle": "rrr1", + "MaxTextureSize": 2048, + "IsPowerOf2": true, + "MipMapSetting": { + "MipGenType": "Box" + } + }, + "ios": { + "UUID": "{7A3CC95E-0A0C-4CA1-8357-5712B028B77D}", + "Name": "Reflectance", + "SourceColor": "Linear", + "DestColor": "Linear", + "PixelFormat": "ASTC_6x6", + "Swizzle": "rrr1", + "MaxTextureSize": 2048, + "IsPowerOf2": true, + "MipMapSetting": { + "MipGenType": "Box" + } + }, + "mac": { + "UUID": "{7A3CC95E-0A0C-4CA1-8357-5712B028B77D}", + "Name": "Reflectance", + "SourceColor": "Linear", + "DestColor": "Linear", + "PixelFormat": "BC4", + "IsPowerOf2": true, + "MipMapSetting": { + "MipGenType": "Box" + } + }, + "provo": { + "UUID": "{7A3CC95E-0A0C-4CA1-8357-5712B028B77D}", + "Name": "Reflectance", + "SourceColor": "Linear", + "DestColor": "Linear", + "PixelFormat": "BC4", + "IsPowerOf2": true, + "MipMapSetting": { + "MipGenType": "Box" + } + } + } + } +} diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/Skybox.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Skybox.preset similarity index 86% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/Skybox.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Skybox.preset index 4f71855ecf..b502872f92 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/Skybox.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/Skybox.preset @@ -6,9 +6,6 @@ "DefaultPreset": { "UUID": "{F359CD3B-37E6-4627-B4F6-2DFC2C0E3C1C}", "Name": "Skybox", - "FileMasks": [ - "_skyboxcm" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -24,9 +21,6 @@ "android": { "UUID": "{F359CD3B-37E6-4627-B4F6-2DFC2C0E3C1C}", "Name": "Skybox", - "FileMasks": [ - "_skyboxcm" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -41,9 +35,6 @@ "ios": { "UUID": "{F359CD3B-37E6-4627-B4F6-2DFC2C0E3C1C}", "Name": "Skybox", - "FileMasks": [ - "_skyboxcm" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -58,9 +49,6 @@ "mac": { "UUID": "{F359CD3B-37E6-4627-B4F6-2DFC2C0E3C1C}", "Name": "Skybox", - "FileMasks": [ - "_skyboxcm" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, @@ -75,9 +63,6 @@ "provo": { "UUID": "{F359CD3B-37E6-4627-B4F6-2DFC2C0E3C1C}", "Name": "Skybox", - "FileMasks": [ - "_skyboxcm" - ], "SourceColor": "Linear", "DestColor": "Linear", "SuppressEngineReduce": true, diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/UserInterface_Compressed.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/UserInterface_Compressed.preset similarity index 95% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/UserInterface_Compressed.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/UserInterface_Compressed.preset index 13334de700..7e2c42fa6b 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/UserInterface_Compressed.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/UserInterface_Compressed.preset @@ -9,8 +9,7 @@ "SuppressEngineReduce": true, "PixelFormat": "R8G8B8A8", "SourceColor": "Linear", - "DestColor": "Linear", - "FileMasks": [ "_ui" ] + "DestColor": "Linear" }, "PlatformsPresets": { "android": { diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/UserInterface_Lossless.preset b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/UserInterface_Lossless.preset similarity index 95% rename from Gems/Atom/Asset/ImageProcessingAtom/Config/UserInterface_Lossless.preset rename to Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/UserInterface_Lossless.preset index 39066b242b..bec6a604ef 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/UserInterface_Lossless.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/UserInterface_Lossless.preset @@ -9,8 +9,7 @@ "SuppressEngineReduce": true, "PixelFormat": "R8G8B8A8", "SourceColor": "Linear", - "DestColor": "Linear", - "FileMasks": [ "_ui" ] + "DestColor": "Linear" }, "PlatformsPresets": { "android": { diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/BuilderSettings/BuilderSettingManager.cpp b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/BuilderSettings/BuilderSettingManager.cpp index a4ba846f1b..487c659ade 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/BuilderSettings/BuilderSettingManager.cpp +++ b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/BuilderSettings/BuilderSettingManager.cpp @@ -8,6 +8,7 @@ #include "BuilderSettingManager.h" +#include #include #include #include @@ -17,8 +18,9 @@ #include #include #include -#include #include +#include +#include #include #include @@ -41,13 +43,18 @@ namespace ImageProcessingAtom { - const char* BuilderSettingManager::s_defaultConfigRelativeFolder = "Gems/Atom/Asset/ImageProcessingAtom/Config/"; + const char* BuilderSettingManager::s_defaultConfigRelativeFolder = "Gems/Atom/Asset/ImageProcessingAtom/Assets/Config/"; const char* BuilderSettingManager::s_projectConfigRelativeFolder = "Config/AtomImageBuilder/"; const char* BuilderSettingManager::s_builderSettingFileName = "ImageBuilder.settings"; - const char* BuilderSettingManager::s_presetFileExtension = ".preset"; + const char* BuilderSettingManager::s_presetFileExtension = "preset"; const char FileMaskDelimiter = '_'; + namespace + { + static constexpr const char* const LogWindow = "Image Processing"; + } + #if defined(AZ_TOOLS_EXPAND_FOR_RESTRICTED_PLATFORMS) #define AZ_RESTRICTED_PLATFORM_EXPANSION(CodeName, CODENAME, codename, PrivateName, PRIVATENAME, privatename, PublicName, PUBLICNAME, publicname, PublicAuxName1, PublicAuxName2, PublicAuxName3) \ namespace ImageProcess##PrivateName \ @@ -69,13 +76,15 @@ namespace ImageProcessingAtom if (serialize) { serialize->Class() - ->Version(1) - ->Field("AnalysisFingerprint", &BuilderSettingManager::m_analysisFingerprint) + ->Version(2) ->Field("BuildSettings", &BuilderSettingManager::m_builderSettings) - ->Field("DefaultPresetsByFileMask", &BuilderSettingManager::m_defaultPresetByFileMask) + ->Field("PresetsByFileMask", &BuilderSettingManager::m_presetFilterMap) ->Field("DefaultPreset", &BuilderSettingManager::m_defaultPreset) ->Field("DefaultPresetAlpha", &BuilderSettingManager::m_defaultPresetAlpha) - ->Field("DefaultPresetNonePOT", &BuilderSettingManager::m_defaultPresetNonePOT); + ->Field("DefaultPresetNonePOT", &BuilderSettingManager::m_defaultPresetNonePOT) + // deprecated properties + ->Field("DefaultPresetsByFileMask", &BuilderSettingManager::m_defaultPresetByFileMask) + ->Field("AnalysisFingerprint", &BuilderSettingManager::m_analysisFingerprint); } } @@ -122,7 +131,7 @@ namespace ImageProcessingAtom s_globalInstance.Reset(); } - const PresetSettings* BuilderSettingManager::GetPreset(const PresetName& presetName, const PlatformName& platform, AZStd::string_view* settingsFilePathOut) + const PresetSettings* BuilderSettingManager::GetPreset(const PresetName& presetName, const PlatformName& platform, AZStd::string_view* settingsFilePathOut) const { AZStd::lock_guard lock(m_presetMapLock); auto itr = m_presets.find(presetName); @@ -137,16 +146,36 @@ namespace ImageProcessingAtom return nullptr; } - const BuilderSettings* BuilderSettingManager::GetBuilderSetting(const PlatformName& platform) + AZStd::vector BuilderSettingManager::GetFileMasksForPreset(const PresetName& presetName) const { - if (m_builderSettings.find(platform) != m_builderSettings.end()) + AZStd::vector fileMasks; + + AZStd::lock_guard lock(m_presetMapLock); + for (const auto& mapping:m_presetFilterMap) { - return &m_builderSettings[platform]; + for (const auto& preset : mapping.second) + { + if (preset == presetName) + { + fileMasks.push_back(mapping.first); + break; + } + } + } + return fileMasks; + } + + const BuilderSettings* BuilderSettingManager::GetBuilderSetting(const PlatformName& platform) const + { + auto itr = m_builderSettings.find(platform); + if (itr != m_builderSettings.end()) + { + return &itr->second; } return nullptr; } - const PlatformNameList BuilderSettingManager::GetPlatformList() + const PlatformNameList BuilderSettingManager::GetPlatformList() const { PlatformNameList platforms; @@ -161,12 +190,19 @@ namespace ImageProcessingAtom return platforms; } - const AZStd::map >& BuilderSettingManager::GetPresetFilterMap() + const AZStd::map >& BuilderSettingManager::GetPresetFilterMap() const { AZStd::lock_guard lock(m_presetMapLock); return m_presetFilterMap; } + const AZStd::unordered_set& BuilderSettingManager::GetFullPresetList() const + { + AZStd::lock_guard lock(m_presetMapLock); + AZStd::string noFilter = AZStd::string(); + return m_presetFilterMap.find(noFilter)->second; + } + const PresetName BuilderSettingManager::GetPresetNameFromId(const AZ::Uuid& presetId) { AZStd::lock_guard lock(m_presetMapLock); @@ -188,7 +224,6 @@ namespace ImageProcessingAtom m_presetFilterMap.clear(); m_builderSettings.clear(); m_presets.clear(); - m_defaultPresetByFileMask.clear(); } StringOutcome BuilderSettingManager::LoadConfig() @@ -198,44 +233,53 @@ namespace ImageProcessingAtom auto fileIoBase = AZ::IO::FileIOBase::GetInstance(); if (fileIoBase == nullptr) { - return AZ::Failure(AZStd::string("File IO instance needs to be initialized to resolve ImageProcessing builder file aliases")); + return AZ::Failure( + AZStd::string("File IO instance needs to be initialized to resolve ImageProcessing builder file aliases")); } - // Construct the default setting path - - AZ::IO::FixedMaxPath defaultConfigFolder; if (auto engineRoot = fileIoBase->ResolvePath("@engroot@"); engineRoot.has_value()) { - defaultConfigFolder = *engineRoot; - defaultConfigFolder /= s_defaultConfigRelativeFolder; + m_defaultConfigFolder = *engineRoot; + m_defaultConfigFolder /= s_defaultConfigRelativeFolder; } - AZ::IO::FixedMaxPath projectConfigFolder; if (auto sourceGameRoot = fileIoBase->ResolvePath("@projectroot@"); sourceGameRoot.has_value()) { - projectConfigFolder = *sourceGameRoot; - projectConfigFolder /= s_projectConfigRelativeFolder; + m_projectConfigFolder = *sourceGameRoot; + m_projectConfigFolder /= s_projectConfigRelativeFolder; } AZStd::lock_guard lock(m_presetMapLock); ClearSettings(); - outcome = LoadSettings((projectConfigFolder / s_builderSettingFileName).Native()); - - if (!outcome.IsSuccess()) - { - outcome = LoadSettings((defaultConfigFolder / s_builderSettingFileName).Native()); - } + outcome = LoadSettings(); if (outcome.IsSuccess()) { // Load presets in default folder first, then load from project folder. // The same presets which loaded last will overwrite previous loaded one. - LoadPresets(defaultConfigFolder.Native()); - LoadPresets(projectConfigFolder.Native()); + LoadPresets(m_defaultConfigFolder.Native()); + LoadPresets(m_projectConfigFolder.Native()); + } - // Regenerate file mask mapping after all presets loaded - RegenerateMappings(); + // Collect extra file masks from preset files + CollectFileMasksFromPresets(); + + + if (QCoreApplication::instance()) + { + m_fileWatcher.reset(new QFileSystemWatcher); + // track preset files + // Note, the QT signal would only works for AP but not AssetBuilder + // We use file time stamp to track preset file change in builder's CreateJob + for (auto& preset : m_presets) + { + m_fileWatcher.data()->addPath(QString(preset.second.m_presetFilePath.c_str())); + } + m_fileWatcher.data()->addPath(QString(m_defaultConfigFolder.c_str())); + m_fileWatcher.data()->addPath(QString(m_projectConfigFolder.c_str())); + QObject::connect(m_fileWatcher.data(), &QFileSystemWatcher::fileChanged, this, &BuilderSettingManager::OnFileChanged); + QObject::connect(m_fileWatcher.data(), &QFileSystemWatcher::directoryChanged, this, &BuilderSettingManager::OnFolderChanged); } return outcome; @@ -243,36 +287,84 @@ namespace ImageProcessingAtom void BuilderSettingManager::LoadPresets(AZStd::string_view presetFolder) { - AZStd::lock_guard lock(m_presetMapLock); - QDirIterator it(presetFolder.data(), QStringList() << "*.preset", QDir::Files, QDirIterator::NoIteratorFlags); while (it.hasNext()) { QString filePath = it.next(); - QFileInfo fileInfo = it.fileInfo(); + LoadPreset(filePath.toUtf8().data()); + } + } - MultiplatformPresetSettings preset; - auto result = AZ::JsonSerializationUtils::LoadObjectFromFile(preset, filePath.toUtf8().data()); - if (!result.IsSuccess()) + bool BuilderSettingManager::LoadPreset(const AZStd::string& filePath) + { + QFileInfo fileInfo (filePath.c_str()); + + if (!fileInfo.exists()) + { + return false; + } + + MultiplatformPresetSettings preset; + auto result = AZ::JsonSerializationUtils::LoadObjectFromFile(preset, filePath); + if (!result.IsSuccess()) + { + AZ_Warning(LogWindow, false, "Failed to load preset file %s. Error: %s", + filePath.c_str(), result.GetError().c_str()); + return false; + } + + PresetName presetName(fileInfo.baseName().toUtf8().data()); + + AZ_Warning(LogWindow, presetName == preset.GetPresetName(), "Preset file name '%s' is not" + " same as preset name '%s'. Using preset file name as preset name", + filePath.c_str(), preset.GetPresetName().GetCStr()); + + preset.SetPresetName(presetName); + + m_presets[presetName] = PresetEntry{preset, filePath.c_str(), fileInfo.lastModified()}; + return true; + } + + void BuilderSettingManager::ReloadPreset(const PresetName& presetName) + { + // Find the preset file from project or default config folder + AZStd::string presetFileName = AZStd::string::format("%s.%s", presetName.GetCStr(), s_presetFileExtension); + AZ::IO::FixedMaxPath filePath = m_projectConfigFolder/presetFileName; + QFileInfo fileInfo (filePath.c_str()); + if (!fileInfo.exists()) + { + filePath = (m_defaultConfigFolder/presetFileName).c_str(); + fileInfo = QFileInfo(filePath.c_str()); + } + + AZStd::lock_guard lock(m_presetMapLock); + + //Skip the loading if the file wasn't chagned + if (fileInfo.exists()) + { + if (m_presets.find(presetName) != m_presets.end()) { - AZ_Warning("Image Processing", false, "Failed to load preset file %s. Error: %s", - filePath.toUtf8().data(), result.GetError().c_str()); + if (m_presets[presetName].m_lastModifiedTime == fileInfo.lastModified() + && m_presets[presetName].m_presetFilePath == filePath.c_str()) + { + return; + } } + } - PresetName presetName(fileInfo.baseName().toUtf8().data()); + // remove preset + m_presets.erase(presetName); - AZ_Warning("Image Processing", presetName == preset.GetPresetName(), "Preset file name '%s' is not" - " same as preset name '%s'. Using preset file name as preset name", - filePath.toUtf8().data(), preset.GetPresetName().GetCStr()); - - preset.SetPresetName(presetName); - - m_presets[presetName] = PresetEntry{preset, filePath.toUtf8().data()}; + if (fileInfo.exists()) + { + LoadPreset(filePath.c_str()); } } StringOutcome BuilderSettingManager::LoadConfigFromFolder(AZStd::string_view configFolder) { + AZStd::lock_guard lock(m_presetMapLock); + // Load builder settings AZStd::string settingFilePath = AZStd::string::format("%.*s%s", aznumeric_cast(configFolder.size()), configFolder.data(), s_builderSettingFileName); @@ -282,12 +374,108 @@ namespace ImageProcessingAtom if (result.IsSuccess()) { LoadPresets(configFolder); - RegenerateMappings(); } return result; } + void BuilderSettingManager::ReportDeprecatedSettings() + { + // reported deprecated attributes in image builder settings + if (!m_analysisFingerprint.empty()) + { + AZ_Warning(LogWindow, false, "'AnalysisFingerprint' is deprecated and it should be removed from file [%s]", s_builderSettingFileName); + } + if (!m_defaultPresetByFileMask.empty()) + { + AZ_Warning(LogWindow, false, "'DefaultPresetsByFileMask' is deprecated and it should be removed from file [%s]. Use PresetsByFileMask instead", s_builderSettingFileName); + } + } + + StringOutcome BuilderSettingManager::LoadSettings() + { + // If the project image build setting file exist, it will merge image builder settings from project folder to the settings from default config folder. + bool needMerge = false; + AZStd::string projectSettingFile{ (m_projectConfigFolder / s_builderSettingFileName).Native() }; + + if (AZ::IO::SystemFile::Exists(projectSettingFile.c_str())) + { + needMerge = true; + } + + AZ::Outcome outcome; + AZStd::string defaultSettingFile{ (m_defaultConfigFolder / s_builderSettingFileName).Native() }; + if (needMerge) + { + auto outcome1 = AZ::JsonSerializationUtils::ReadJsonFile(defaultSettingFile); + auto outcome2 = AZ::JsonSerializationUtils::ReadJsonFile(projectSettingFile); + + // return error if it failed to load default settings + if (!outcome1.IsSuccess()) + { + return STRING_OUTCOME_ERROR(outcome1.GetError()); + } + + // if project config was loaded successfully, apply merge patch + rapidjson::Document& originDoc = outcome1.GetValue(); + if (outcome2.IsSuccess()) + { + const rapidjson::Document& patchDoc = outcome2.GetValue(); + AZ::JsonSerializationResult::ResultCode result = + AZ::JsonSerialization::ApplyPatch(originDoc, originDoc.GetAllocator(), patchDoc, AZ::JsonMergeApproach::JsonMergePatch); + + if (result.GetProcessing() == AZ::JsonSerializationResult::Processing::Completed) + { + AZStd::vector outBuffer; + AZ::IO::ByteContainerStream> outStream{ &outBuffer }; + AZ::JsonSerializationUtils::WriteJsonStream(originDoc, outStream); + + outStream.Seek(0, AZ::IO::GenericStream::ST_SEEK_BEGIN); + + outcome = AZ::JsonSerializationUtils::LoadObjectFromStream(*this, outStream); + if (!outcome.IsSuccess()) + { + return STRING_OUTCOME_ERROR(outcome.GetError()); + } + + ReportDeprecatedSettings(); + + + // Generate config file fingerprint + outStream.Seek(0, AZ::IO::GenericStream::ST_SEEK_BEGIN); + AZ::u64 hash = AssetBuilderSDK::GetHashFromIOStream(outStream); + m_analysisFingerprint = AZStd::string::format("%llX", hash); + } + else + { + needMerge = false; + AZ_Warning(LogWindow, false, "Failed to fully merge data into image builder settings. Skipping project build setting file [%s]", projectSettingFile.c_str()); + } + } + else + { + AZ_Warning(LogWindow, false, "Failed to load project setting file [%s]. Skipping", projectSettingFile.c_str()); + } + } + + if (!needMerge) + { + outcome = AZ::JsonSerializationUtils::LoadObjectFromFile(*this, defaultSettingFile); + if (!outcome.IsSuccess()) + { + return STRING_OUTCOME_ERROR(outcome.GetError()); + } + + ReportDeprecatedSettings(); + + // Generate config file fingerprint + AZ::u64 hash = AssetBuilderSDK::GetFileHash(defaultSettingFile.c_str()); + m_analysisFingerprint = AZStd::string::format("%llX", hash); + } + + return STRING_OUTCOME_SUCCESS; + } + StringOutcome BuilderSettingManager::LoadSettings(AZStd::string_view filepath) { AZStd::lock_guard lock(m_presetMapLock); @@ -336,13 +524,13 @@ namespace ImageProcessingAtom return m_analysisFingerprint; } - void BuilderSettingManager::RegenerateMappings() + void BuilderSettingManager::CollectFileMasksFromPresets() { AZStd::lock_guard lock(m_presetMapLock); AZStd::string noFilter = AZStd::string(); - - m_presetFilterMap.clear(); + + AZStd::string extraString; for (const auto& presetIter : m_presets) { @@ -357,22 +545,31 @@ namespace ImageProcessingAtom { if (filemask.empty() || filemask[0] != FileMaskDelimiter) { - AZ_Warning("Image Processing", false, "File mask '%s' is invalid. It must start with '%c'.", filemask.c_str(), FileMaskDelimiter); + AZ_Warning(LogWindow, false, "File mask '%s' is invalid. It must start with '%c'.", filemask.c_str(), FileMaskDelimiter); continue; } else if (filemask.size() < 2) { - AZ_Warning("Image Processing", false, "File mask '%s' is invalid. The '%c' must be followed by at least one other character.", filemask.c_str()); + AZ_Warning(LogWindow, false, "File mask '%s' is invalid. The '%c' must be followed by at least one other character.", filemask.c_str()); continue; } else if (filemask.find(FileMaskDelimiter, 1) != AZStd::string::npos) { - AZ_Warning("Image Processing", false, "File mask '%s' is invalid. It must contain only a single '%c' character.", filemask.c_str(), FileMaskDelimiter); + AZ_Warning(LogWindow, false, "File mask '%s' is invalid. It must contain only a single '%c' character.", filemask.c_str(), FileMaskDelimiter); continue; } + + extraString += (filemask + preset.m_name.GetCStr()); + m_presetFilterMap[filemask].insert(preset.m_name); } } + + if (!extraString.empty()) + { + AZ::u64 hash = AZStd::hash{}(extraString); + m_analysisFingerprint += AZStd::string::format("%llX", hash); + } } void BuilderSettingManager::MetafilePathFromImagePath(AZStd::string_view imagePath, AZStd::string& metafilePath) @@ -419,38 +616,15 @@ namespace ImageProcessingAtom return m_presets.find(presetName) != m_presets.end(); } - PresetName BuilderSettingManager::GetSuggestedPreset(AZStd::string_view imageFilePath, IImageObjectPtr imageFromFile) + PresetName BuilderSettingManager::GetSuggestedPreset(AZStd::string_view imageFilePath) const { PresetName emptyPreset; - //load the image to get its size for later use - IImageObjectPtr image = imageFromFile; - //if the input image is empty we will try to load it from the path - if (imageFromFile == nullptr) - { - image = IImageObjectPtr(LoadImageFromFile(imageFilePath)); - } - - if (image == nullptr) - { - return emptyPreset; - } - //get file mask of this image file AZStd::string fileMask = GetFileMask(imageFilePath); PresetName outPreset = emptyPreset; - //check default presets for some file masks - if (m_defaultPresetByFileMask.find(fileMask) != m_defaultPresetByFileMask.end()) - { - outPreset = m_defaultPresetByFileMask[fileMask]; - if (!IsValidPreset(outPreset)) - { - outPreset = emptyPreset; - } - } - //use the preset filter map to find if (outPreset.IsEmpty() && !fileMask.empty()) { @@ -461,54 +635,21 @@ namespace ImageProcessingAtom } } - const PresetSettings* presetInfo = nullptr; - - if (!outPreset.IsEmpty()) - { - presetInfo = GetPreset(outPreset); - - //special case for cubemap - if (presetInfo && presetInfo->m_cubemapSetting) - { - // If it's not a latitude-longitude map or it doesn't match any cubemap layouts then reset its preset - if (!IsValidLatLongMap(image) && CubemapLayout::GetCubemapLayoutInfo(image) == nullptr) - { - outPreset = emptyPreset; - } - } - } - if (outPreset == emptyPreset) { - if (image->GetAlphaContent() == EAlphaContent::eAlphaContent_Absent) - { - outPreset = m_defaultPreset; - } - else - { - outPreset = m_defaultPresetAlpha; - } + outPreset = m_defaultPreset; } - //get the pixel format for selected preset - presetInfo = GetPreset(outPreset); + return outPreset; + } - if (presetInfo) - { - //valid whether image size work with pixel format - if (CPixelFormats::GetInstance().IsImageSizeValid(presetInfo->m_pixelFormat, - image->GetWidth(0), image->GetHeight(0), false)) - { - return outPreset; - } - else - { - AZ_Warning("Image Processing", false, "Image dimensions are not compatible with preset '%s'. The default preset will be used.", presetInfo->m_name.GetCStr()); - } - } - - //uncompressed one which could be used for almost everything - return m_defaultPresetNonePOT; + AZStd::vector BuilderSettingManager::GetPossiblePresetPaths(const PresetName& presetName) const + { + AZStd::vector paths; + AZStd::string presetFile = AZStd::string::format("%s.preset", presetName.GetCStr()); + paths.push_back((m_defaultConfigFolder / presetFile).c_str()); + paths.push_back((m_projectConfigFolder / presetFile).c_str()); + return paths; } bool BuilderSettingManager::DoesSupportPlatform(AZStd::string_view platformId) @@ -526,18 +667,50 @@ namespace ImageProcessingAtom AZStd::string filePath; if (!AzFramework::StringFunc::Path::Join(outputFolder.data(), fileName.c_str(), filePath)) { - AZ_Warning("Image Processing", false, "Failed to construct path with folder '%.*s' and file: '%s' to save preset", + AZ_Warning(LogWindow, false, "Failed to construct path with folder '%.*s' and file: '%s' to save preset", aznumeric_cast(outputFolder.size()), outputFolder.data(), filePath.c_str()); continue; } auto result = AZ::JsonSerializationUtils::SaveObjectToFile(&presetEntry.m_multiPreset, filePath); if (!result.IsSuccess()) { - AZ_Warning("Image Processing", false, "Failed to save preset '%s' to file '%s'. Error: %s", + AZ_Warning(LogWindow, false, "Failed to save preset '%s' to file '%s'. Error: %s", presetEntry.m_multiPreset.GetDefaultPreset().m_name.GetCStr(), filePath.c_str(), result.GetError().c_str()); } } } + void BuilderSettingManager::OnFileChanged(const QString &path) + { + // handles preset file change + // Note: this signal only works with AP but not AssetBuilder + AZ_TracePrintf(LogWindow, "File changed %s\n", path.toUtf8().data()); + QFileInfo info(path); + // skip if the file is not a preset file + // Note: for .settings file change it's handled when restart AP. + if (info.suffix() != s_presetFileExtension) + { + return; + } + + ReloadPreset(PresetName(info.baseName().toUtf8().data())); + } + + void BuilderSettingManager::OnFolderChanged([[maybe_unused]] const QString &path) + { + // handles new file added or removed + // Note: this signal only works with AP but not AssetBuilder + AZ_TracePrintf(LogWindow, "folder changed %s\n", path.toUtf8().data()); + + AZStd::lock_guard lock(m_presetMapLock); + m_presets.clear(); + LoadPresets(m_defaultConfigFolder.Native()); + LoadPresets(m_projectConfigFolder.Native()); + + for (auto& preset : m_presets) + { + m_fileWatcher.data()->addPath(QString(preset.second.m_presetFilePath.c_str())); + } + } } // namespace ImageProcessingAtom diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/BuilderSettings/BuilderSettingManager.h b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/BuilderSettings/BuilderSettingManager.h index 3bbb71ea43..443b91bc07 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/BuilderSettings/BuilderSettingManager.h +++ b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/BuilderSettings/BuilderSettingManager.h @@ -10,10 +10,15 @@ #include #include -#include #include +#include +#include #include +#include +#include +#include + class QSettings; class QString; @@ -36,6 +41,7 @@ namespace ImageProcessingAtom * Each preset setting may have different values on different platform, but they are using same uuid. */ class BuilderSettingManager + : public QObject // required for using QFileSystemWatcher { friend class ImageProcessingTest; @@ -49,17 +55,21 @@ namespace ImageProcessingAtom static void DestroyInstance(); static void Reflect(AZ::ReflectContext* context); - const PresetSettings* GetPreset(const PresetName& presetName, const PlatformName& platform = "", AZStd::string_view* settingsFilePathOut = nullptr); + const PresetSettings* GetPreset(const PresetName& presetName, const PlatformName& platform = "", AZStd::string_view* settingsFilePathOut = nullptr) const; - const BuilderSettings* GetBuilderSetting(const PlatformName& platform); + AZStd::vector GetFileMasksForPreset(const PresetName& presetName) const; + + const BuilderSettings* GetBuilderSetting(const PlatformName& platform) const; //! Return A list of platform supported - const PlatformNameList GetPlatformList(); + const PlatformNameList GetPlatformList() const; //! Return A map of preset settings based on their filemasks. //! @key filemask string, empty string means no filemask //! @value set of preset setting names supporting the specified filemask - const AZStd::map>& GetPresetFilterMap(); + const AZStd::map>& GetPresetFilterMap() const; + + const AZStd::unordered_set& GetFullPresetList() const; //! Find preset name based on the preset id. const PresetName GetPresetNameFromId(const AZ::Uuid& presetId); @@ -68,7 +78,11 @@ namespace ImageProcessingAtom StringOutcome LoadConfig(); //! Load configurations files from a folder which includes builder settings and presets - StringOutcome LoadConfigFromFolder(AZStd::string_view configFolder); + //! Note: this is only used for unit test. Use LoadConfig() for editor or game launcher + StringOutcome LoadConfigFromFolder(AZStd::string_view configFolder); + + //! Reload preset from config folders + void ReloadPreset(const PresetName& presetName); const AZStd::string& GetAnalysisFingerprint() const; @@ -81,7 +95,12 @@ namespace ImageProcessingAtom //! @param imageFilePath: Filepath string of the image file. The function may load the image from the path for better detection //! @param image: an optional image object which can be used for preset selection if there is no match based file mask. //! @return suggested preset name. - PresetName GetSuggestedPreset(AZStd::string_view imageFilePath, IImageObjectPtr image = nullptr); + PresetName GetSuggestedPreset(AZStd::string_view imageFilePath) const; + + //! Get the possible preset config's full file paths + //! This function is only used for setting up image's source dependency if a preset file is missing + //! Otherwise, the preset's file path can be retrieved in GetPreset() function + AZStd::vector GetPossiblePresetPaths(const PresetName& presetName) const; bool IsValidPreset(PresetName presetName) const; @@ -105,25 +124,41 @@ namespace ImageProcessingAtom private: // functions AZ_DISABLE_COPY_MOVE(BuilderSettingManager); + // Write image builder setting to the file specified by filepath StringOutcome WriteSettings(AZStd::string_view filepath); + // Load image builder settings from the file specified by filepath StringOutcome LoadSettings(AZStd::string_view filepath); + // Load merge image builder settings (project and default) + StringOutcome LoadSettings(); + + // report warnings for the deprecated properties in image builder setting data + void ReportDeprecatedSettings(); + // Clear Builder Settings and any cached maps/lists void ClearSettings(); - // Regenerate Builder Settings and any cached maps/lists - void RegenerateMappings(); + // collect file masks + void CollectFileMasksFromPresets(); // Functions to save/load preset from a folder void SavePresets(AZStd::string_view outputFolder); void LoadPresets(AZStd::string_view presetFolder); + // Load a preset to m_presets and return true if success + bool LoadPreset(const AZStd::string& filePath); + + // handle preset files changes + void OnFileChanged(const QString &path); + void OnFolderChanged(const QString &path); + private: // variables struct PresetEntry { MultiplatformPresetSettings m_multiPreset; AZStd::string m_presetFilePath; // Can be used for debug output + QDateTime m_lastModifiedTime; }; // Builder settings for each platform @@ -131,13 +166,13 @@ namespace ImageProcessingAtom AZStd::unordered_map m_presets; - // Cached list of presets mapped by their file masks. + // a list of presets mapped by their file masks. // @Key file mask, use empty string to indicate all presets without filtering // @Value set of preset names that matches the file mask AZStd::map > m_presetFilterMap; - // A mutex to protect when modifying any map in this manager - AZStd::recursive_mutex m_presetMapLock; + // A mutex to protect when modifying any map in this manager + mutable AZStd::recursive_mutex m_presetMapLock; // Default presets for certain file masks AZStd::map m_defaultPresetByFileMask; @@ -153,5 +188,14 @@ namespace ImageProcessingAtom // Image builder's version AZStd::string m_analysisFingerprint; + + // default config folder + AZ::IO::FixedMaxPath m_defaultConfigFolder; + + // project config folder + AZ::IO::FixedMaxPath m_projectConfigFolder; + + // File system watcher to detect preset file changes + QScopedPointer m_fileWatcher; }; } // namespace ImageProcessingAtom diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/BuilderSettings/CubemapSettings.h b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/BuilderSettings/CubemapSettings.h index 9135a0f4d1..77f804b646 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/BuilderSettings/CubemapSettings.h +++ b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/BuilderSettings/CubemapSettings.h @@ -26,19 +26,19 @@ namespace ImageProcessingAtom static void Reflect(AZ::ReflectContext* context); // "cm_ftype", cubemap angular filter type: gaussian, cone, disc, cosine, cosine_power, ggx - CubemapFilterType m_filter; + CubemapFilterType m_filter = CubemapFilterType::ggx; // "cm_fangle", base filter angle for cubemap filtering(degrees), 0 - disabled - float m_angle; + float m_angle = 0; // "cm_fmipangle", initial mip filter angle for cubemap filtering(degrees), 0 - disabled - float m_mipAngle; + float m_mipAngle = 0; // "cm_fmipslope", mip filter angle multiplier for cubemap filtering, 1 - default" - float m_mipSlope; + float m_mipSlope = 1; // "cm_edgefixup", cubemap edge fix-up width, 0 - disabled - float m_edgeFixup; + float m_edgeFixup = 0; // generate an IBL specular cubemap bool m_generateIBLSpecular = false; diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/BuilderSettings/ImageProcessingDefines.h b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/BuilderSettings/ImageProcessingDefines.h index e421715995..7c35a0634e 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/BuilderSettings/ImageProcessingDefines.h +++ b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/BuilderSettings/ImageProcessingDefines.h @@ -39,7 +39,8 @@ namespace ImageProcessingAtom #define STRING_OUTCOME_ERROR(error) AZ::Failure(AZStd::string(error)) // Common typedefs (with dependent forward-declarations) - typedef AZStd::string PlatformName, FileMask; + typedef AZStd::string PlatformName; + typedef AZStd::string FileMask; typedef AZ::Name PresetName; typedef AZStd::vector PlatformNameVector; typedef AZStd::list PlatformNameList; diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Editor/EditorCommon.cpp b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Editor/EditorCommon.cpp index 067faf3dab..3e255dcccc 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Editor/EditorCommon.cpp +++ b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Editor/EditorCommon.cpp @@ -171,7 +171,7 @@ namespace ImageProcessingAtomEditor if (!preset) { AZ_Warning("Texture Editor", false, "Cannot find preset %s! Will assign a suggested one for the texture.", presetName.GetCStr()); - presetName = BuilderSettingManager::Instance()->GetSuggestedPreset(m_fullPath, m_img); + presetName = BuilderSettingManager::Instance()->GetSuggestedPreset(m_fullPath); for (auto& settingIter : m_settingsMap) { @@ -257,15 +257,22 @@ namespace ImageProcessingAtomEditor // Update input width and height if it's a cubemap if (presetSetting->m_cubemapSetting != nullptr) { - CubemapLayout *srcCubemap = CubemapLayout::CreateCubemapLayout(m_img); - if (srcCubemap == nullptr) + if (IsValidLatLongMap(m_img)) { - return false; + inputWidth = inputWidth/4; + } + else + { + CubemapLayout *srcCubemap = CubemapLayout::CreateCubemapLayout(m_img); + if (srcCubemap == nullptr) + { + return false; + } + inputWidth = srcCubemap->GetFaceSize(); + delete srcCubemap; } - inputWidth = srcCubemap->GetFaceSize(); inputHeight = inputWidth; outResolutionInfo.arrayCount = 6; - delete srcCubemap; } GetOutputExtent(inputWidth, inputHeight, outResolutionInfo.width, outResolutionInfo.height, outResolutionInfo.reduce, &textureSetting, presetSetting); diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Editor/TexturePresetSelectionWidget.cpp b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Editor/TexturePresetSelectionWidget.cpp index e50d95b907..cc341c5e31 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Editor/TexturePresetSelectionWidget.cpp +++ b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Editor/TexturePresetSelectionWidget.cpp @@ -18,6 +18,27 @@ namespace ImageProcessingAtomEditor { using namespace ImageProcessingAtom; + + AZStd::string GetImageFileMask(const AZStd::string& imageFilePath) + { + const char FileMaskDelimiter = '_'; + + //get file name + AZStd::string fileName; + QString lowerFileName = imageFilePath.data(); + lowerFileName = lowerFileName.toLower(); + AzFramework::StringFunc::Path::GetFileName(lowerFileName.toUtf8().constData(), fileName); + + //get the substring from last '_' + size_t lastUnderScore = fileName.find_last_of(FileMaskDelimiter); + if (lastUnderScore != AZStd::string::npos) + { + return fileName.substr(lastUnderScore); + } + + return AZStd::string(); + } + TexturePresetSelectionWidget::TexturePresetSelectionWidget(EditorTextureSetting& textureSetting, QWidget* parent /*= nullptr*/) : QWidget(parent) , m_ui(new Ui::TexturePresetSelectionWidget) @@ -29,33 +50,31 @@ namespace ImageProcessingAtomEditor m_presetList.clear(); auto& presetFilterMap = BuilderSettingManager::Instance()->GetPresetFilterMap(); - AZStd::unordered_set noFilterPresetList; - - // Check if there is any filtered preset list first - for(auto& presetFilter : presetFilterMap) + if (m_listAllPresets) { - if (presetFilter.first.empty()) + m_presetList = BuilderSettingManager::Instance()->GetFullPresetList(); + } + else + { + auto fileMask = GetImageFileMask(m_textureSetting->m_textureName); + auto itr = presetFilterMap.find(fileMask); + if (itr != presetFilterMap.end()) { - noFilterPresetList = presetFilter.second; + m_presetList = itr->second; } - else if (IsMatchingWithFileMask(m_textureSetting->m_textureName, presetFilter.first)) + else { - for(const auto& presetName : presetFilter.second) - { - m_presetList.insert(presetName); - } + m_presetList = BuilderSettingManager::Instance()->GetFullPresetList(); } } - // If no filtered preset list available or should list all presets, use non-filter list - if (m_presetList.size() == 0 || m_listAllPresets) - { - m_presetList = noFilterPresetList; - } + QStringList stringList; foreach (const auto& presetName, m_presetList) { - m_ui->presetComboBox->addItem(QString(presetName.GetCStr())); + stringList.append(QString(presetName.GetCStr())); } + stringList.sort(); + m_ui->presetComboBox->addItems(stringList); // Set current preset const auto& currPreset = m_textureSetting->GetMultiplatformTextureSetting().m_preset; @@ -173,8 +192,9 @@ namespace ImageProcessingAtomEditor AZStd::string conventionText = ""; if (presetSettings) { + auto fileMasks = BuilderSettingManager::Instance()->GetFileMasksForPreset(presetSettings->m_name); int i = 0; - for (const PlatformName& filemask : presetSettings->m_fileMasks) + for (const auto& filemask : fileMasks) { conventionText += i > 0 ? " " + filemask : filemask; i++; diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/ImageBuilderComponent.cpp b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/ImageBuilderComponent.cpp index 90d45ae65a..57596f4a71 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/ImageBuilderComponent.cpp +++ b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/ImageBuilderComponent.cpp @@ -221,6 +221,58 @@ namespace ImageProcessingAtom m_isShuttingDown = true; } + PresetName GetImagePreset(const AZStd::string& filepath) + { + // first let preset from asset info + TextureSettings textureSettings; + StringOutcome output = TextureSettings::LoadTextureSetting(filepath, textureSettings); + + if (!textureSettings.m_preset.IsEmpty()) + { + return textureSettings.m_preset; + } + + return BuilderSettingManager::Instance()->GetSuggestedPreset(filepath); + } + + void HandlePresetDependency(PresetName presetName, AZStd::vector& sourceDependencyList) + { + // Reload preset if it was changed + ImageProcessingAtom::BuilderSettingManager::Instance()->ReloadPreset(presetName); + + AZStd::string_view filePath; + auto presetSettings = BuilderSettingManager::Instance()->GetPreset(presetName, /*default platform*/"", &filePath); + + AssetBuilderSDK::SourceFileDependency sourceFileDependency; + sourceFileDependency.m_sourceDependencyType = AssetBuilderSDK::SourceFileDependency::SourceFileDependencyType::Absolute; + + // Need to watch any possibe preset paths + AZStd::vector possiblePresetPaths = BuilderSettingManager::Instance()->GetPossiblePresetPaths(presetName); + for (const auto& path:possiblePresetPaths) + { + sourceFileDependency.m_sourceFileDependencyPath = path; + sourceDependencyList.push_back(sourceFileDependency); + } + + if (presetSettings) + { + // handle special case here + // Cubemap setting may reference some other presets + if (presetSettings->m_cubemapSetting) + { + if (presetSettings->m_cubemapSetting->m_generateIBLDiffuse && !presetSettings->m_cubemapSetting->m_iblDiffusePreset.IsEmpty()) + { + HandlePresetDependency(presetSettings->m_cubemapSetting->m_iblDiffusePreset, sourceDependencyList); + } + + if (presetSettings->m_cubemapSetting->m_generateIBLSpecular && !presetSettings->m_cubemapSetting->m_iblSpecularPreset.IsEmpty()) + { + HandlePresetDependency(presetSettings->m_cubemapSetting->m_iblSpecularPreset, sourceDependencyList); + } + } + } + } + // this happens early on in the file scanning pass // this function should consistently always create the same jobs, and should do no checking whether the job is up to date or not - just be consistent. void ImageBuilderWorker::CreateJobs(const AssetBuilderSDK::CreateJobsRequest& request, AssetBuilderSDK::CreateJobsResponse& response) @@ -242,13 +294,26 @@ namespace ImageProcessingAtom if (ImageProcessingAtom::BuilderSettingManager::Instance()->DoesSupportPlatform(platformInfo.m_identifier)) { AssetBuilderSDK::JobDescriptor descriptor; - descriptor.m_jobKey = ext + " Atom Compile"; + descriptor.m_jobKey = "Image Compile: " + ext; descriptor.SetPlatformIdentifier(platformInfo.m_identifier.c_str()); descriptor.m_critical = false; + descriptor.m_additionalFingerprintInfo = ""; response.m_createJobOutputs.push_back(descriptor); } } + // add source dependency for .assetinfo file + AssetBuilderSDK::SourceFileDependency sourceFileDependency; + sourceFileDependency.m_sourceDependencyType = AssetBuilderSDK::SourceFileDependency::SourceFileDependencyType::Absolute; + sourceFileDependency.m_sourceFileDependencyPath = request.m_sourceFile; + AZ::StringFunc::Path::ReplaceExtension(sourceFileDependency.m_sourceFileDependencyPath, TextureSettings::ExtensionName); + response.m_sourceFileDependencyList.push_back(sourceFileDependency); + + // add source dependencies for .preset files + // Get the preset for this file + auto presetName = GetImagePreset(request.m_sourceFile); + HandlePresetDependency(presetName, response.m_sourceFileDependencyList); + response.m_result = AssetBuilderSDK::CreateJobsResultCode::Success; return; } diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImageConvert.cpp b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImageConvert.cpp index 5b23009cff..defca690a3 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImageConvert.cpp +++ b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImageConvert.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -229,12 +230,24 @@ namespace ImageProcessingAtom AZStd::unique_ptr& cubemapSettings = m_input->m_presetSetting.m_cubemapSetting; if (cubemapSettings->m_generateIBLSpecular && !cubemapSettings->m_iblSpecularPreset.IsEmpty()) { - CreateIBLCubemap(cubemapSettings->m_iblSpecularPreset, SpecularCubemapSuffix, m_iblSpecularCubemapImage); + bool success = CreateIBLCubemap(cubemapSettings->m_iblSpecularPreset, SpecularCubemapSuffix, m_iblSpecularCubemapImage); + if (!success) + { + m_isSucceed = false; + m_isFinished = true; + break; + } } if (cubemapSettings->m_generateIBLDiffuse && !cubemapSettings->m_iblDiffusePreset.IsEmpty()) { - CreateIBLCubemap(cubemapSettings->m_iblDiffusePreset, DiffuseCubemapSuffix, m_iblDiffuseCubemapImage); + bool success = CreateIBLCubemap(cubemapSettings->m_iblDiffusePreset, DiffuseCubemapSuffix, m_iblDiffuseCubemapImage); + if (!success) + { + m_isSucceed = false; + m_isFinished = true; + break; + } } } @@ -251,7 +264,12 @@ namespace ImageProcessingAtom { if (m_input->m_presetSetting.m_cubemapSetting->m_requiresConvolve) { - FillCubemapMipmaps(); + bool success = FillCubemapMipmaps(); + if (!success) + { + m_isSucceed = false; + m_isFinished = true; + } } } else @@ -268,9 +286,7 @@ namespace ImageProcessingAtom // get gloss from normal for all mipmaps and save to alpha channel if (m_input->m_presetSetting.m_glossFromNormals) { - bool hasAlpha = (m_alphaContent == EAlphaContent::eAlphaContent_OnlyBlack - || m_alphaContent == EAlphaContent::eAlphaContent_OnlyBlackAndWhite - || m_alphaContent == EAlphaContent::eAlphaContent_Greyscale); + bool hasAlpha = Utils::NeedAlphaChannel(m_alphaContent); m_image->Get()->GlossFromNormals(hasAlpha); // set alpha content so it won't be ignored later. @@ -347,7 +363,11 @@ namespace ImageProcessingAtom } else { - AZ_TracePrintf("Image Processing", "Image converted with preset [%s] [%s] and saved to [%s] (%d bytes) taking %f seconds\n", + + [[maybe_unused]] const PixelFormatInfo* formatInfo = CPixelFormats::GetInstance().GetPixelFormatInfo(m_image->Get()->GetPixelFormat()); + AZ_TracePrintf("Image Processing", "Image [%dx%d] [%s] converted with preset [%s] [%s] and saved to [%s] (%d bytes) taking %f seconds\n", + m_image->Get()->GetWidth(0), m_image->Get()->GetHeight(0), + formatInfo->szName, m_input->m_presetSetting.m_name.GetCStr(), m_input->m_filePath.c_str(), m_input->m_outputFolder.c_str(), sizeTotal, m_processTime); @@ -421,6 +441,17 @@ namespace ImageProcessingAtom outHeight >>= 1; outReduce++; } + + // resize to min texture size if it's smaller + if (outWidth < presetSettings->m_minTextureSize) + { + outWidth = presetSettings->m_minTextureSize; + } + + if (outHeight < presetSettings->m_minTextureSize) + { + outHeight = presetSettings->m_minTextureSize; + } } bool ImageConvertProcess::ConvertToLinear() @@ -647,7 +678,7 @@ namespace ImageProcessingAtom } else if (!CPixelFormats::GetInstance().IsImageSizeValid(dstFmt, dwWidth, dwHeight, false)) { - AZ_Warning("Image Processing", false, "Image size will be scaled for pixel format %s", CPixelFormats::GetInstance().GetPixelFormatInfo(dstFmt)->szName); + AZ_TracePrintf("Image processing", "Image size will be scaled for pixel format %s\n", CPixelFormats::GetInstance().GetPixelFormatInfo(dstFmt)->szName); } #if defined(AZ_TOOLS_EXPAND_FOR_RESTRICTED_PLATFORMS) @@ -758,7 +789,7 @@ namespace ImageProcessingAtom // in very rare user case, an old texture setting file may not have a preset. We fix it over here too. if (textureSettings.m_preset.IsEmpty()) { - textureSettings.m_preset = BuilderSettingManager::Instance()->GetSuggestedPreset(imageFilePath, srcImage); + textureSettings.m_preset = BuilderSettingManager::Instance()->GetSuggestedPreset(imageFilePath); } // Get preset @@ -795,7 +826,7 @@ namespace ImageProcessingAtom return process; } - void ImageConvertProcess::CreateIBLCubemap(PresetName preset, const char* fileNameSuffix, IImageObjectPtr& cubemapImage) + bool ImageConvertProcess::CreateIBLCubemap(PresetName preset, const char* fileNameSuffix, IImageObjectPtr& cubemapImage) { const AZStd::string& platformId = m_input->m_platform; AZStd::string_view filePath; @@ -803,7 +834,7 @@ namespace ImageProcessingAtom if (presetSettings == nullptr) { AZ_Error("Image Processing", false, "Couldn't find preset for IBL cubemap generation"); - return; + return false; } // generate export file name @@ -838,14 +869,14 @@ namespace ImageProcessingAtom if (!imageConvertProcess) { AZ_Error("Image Processing", false, "Failed to create image convert process for the IBL cubemap"); - return; + return false; } imageConvertProcess->ProcessAll(); if (!imageConvertProcess->IsSucceed()) { AZ_Error("Image Processing", false, "Image convert process for the IBL cubemap failed"); - return; + return false; } // append the output products to the job's product list @@ -853,6 +884,7 @@ namespace ImageProcessingAtom // store the output cubemap so it can be accessed by unit tests cubemapImage = imageConvertProcess->m_image->Get(); + return true; } bool ConvertImageFile(const AZStd::string& imageFilePath, const AZStd::string& exportDir, @@ -873,68 +905,6 @@ namespace ImageProcessingAtom return result; } - IImageObjectPtr MergeOutputImageForPreview(IImageObjectPtr image, IImageObjectPtr alphaImage) - { - if (!image) - { - return IImageObjectPtr(); - } - - ImageToProcess imageToProcess(image); - imageToProcess.ConvertFormat(ePixelFormat_R8G8B8A8); - IImageObjectPtr previewImage = imageToProcess.Get(); - - // If there is separate Alpha image, combine it with output - if (alphaImage) - { - // Create pixel operation function for rgb and alpha images - IPixelOperationPtr imageOp = CreatePixelOperation(ePixelFormat_R8G8B8A8); - IPixelOperationPtr alphaOp = CreatePixelOperation(ePixelFormat_A8); - - // Convert the alpha image to A8 first - ImageToProcess imageToProcess2(alphaImage); - imageToProcess2.ConvertFormat(ePixelFormat_A8); - IImageObjectPtr previewImageAlpha = imageToProcess2.Get(); - - const uint32 imageMips = previewImage->GetMipCount(); - [[maybe_unused]] const uint32 alphaMips = previewImageAlpha->GetMipCount(); - - // Get count of bytes per pixel for both rgb and alpha images - uint32 imagePixelBytes = CPixelFormats::GetInstance().GetPixelFormatInfo(ePixelFormat_R8G8B8A8)->bitsPerBlock / 8; - uint32 alphaPixelBytes = CPixelFormats::GetInstance().GetPixelFormatInfo(ePixelFormat_A8)->bitsPerBlock / 8; - - AZ_Assert(imageMips <= alphaMips, "Mip level of alpha image is less than origin image!"); - - // For each mip level, set the alpha value to the image - for (uint32 mipLevel = 0; mipLevel < imageMips; ++mipLevel) - { - const uint32 pixelCount = previewImage->GetPixelCount(mipLevel); - [[maybe_unused]] const uint32 alphaPixelCount = previewImageAlpha->GetPixelCount(mipLevel); - - AZ_Assert(pixelCount == alphaPixelCount, "Pixel count for image and alpha image at mip level %d is not equal!", mipLevel); - - uint8* imageBuf; - uint32 pitch; - previewImage->GetImagePointer(mipLevel, imageBuf, pitch); - - uint8* alphaBuf; - uint32 alphaPitch; - previewImageAlpha->GetImagePointer(mipLevel, alphaBuf, alphaPitch); - - float rAlpha, gAlpha, bAlpha, aAlpha, rImage, gImage, bImage, aImage; - - for (uint32 i = 0; i < pixelCount; ++i, imageBuf += imagePixelBytes, alphaBuf += alphaPixelBytes) - { - alphaOp->GetRGBA(alphaBuf, rAlpha, gAlpha, bAlpha, aAlpha); - imageOp->GetRGBA(imageBuf, rImage, gImage, bImage, aImage); - imageOp->SetRGBA(imageBuf, rImage, gImage, bImage, aAlpha); - } - } - } - - return previewImage; - } - IImageObjectPtr ConvertImageForPreview(IImageObjectPtr image) { if (!image) diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImageConvert.h b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImageConvert.h index fe57b1a89f..ba3d21191f 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImageConvert.h +++ b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImageConvert.h @@ -51,9 +51,6 @@ namespace ImageProcessingAtom //Converts the image to a RGBA8 format that can be displayed in a preview UI. IImageObjectPtr ConvertImageForPreview(IImageObjectPtr image); - //Combine image with alpha image if any and output as RGBA8 - IImageObjectPtr MergeOutputImageForPreview(IImageObjectPtr image, IImageObjectPtr alphaImage); - //get output image size and mip count based on the texture setting and preset setting //other helper functions @@ -160,7 +157,7 @@ namespace ImageProcessingAtom bool FillCubemapMipmaps(); //IBL cubemap generation, this creates a separate ImageConvertProcess - void CreateIBLCubemap(PresetName preset, const char* fileNameSuffix, IImageObjectPtr& cubemapImage); + bool CreateIBLCubemap(PresetName preset, const char* fileNameSuffix, IImageObjectPtr& cubemapImage); //convert color space to linear with pixel format rgba32f bool ConvertToLinear(); diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImageConvertJob.cpp b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImageConvertJob.cpp index 0e4521ab24..d81685f0c6 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImageConvertJob.cpp +++ b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImageConvertJob.cpp @@ -16,28 +16,14 @@ namespace ImageProcessingAtom { - IImageObjectPtr ImageConvertOutput::GetOutputImage(OutputImageType type) const + IImageObjectPtr ImageConvertOutput::GetOutputImage() const { - if (type < OutputImageType::Count) - { - return m_outputImage[static_cast(type)]; - } - else - { - return IImageObjectPtr(); - } + return m_outputImage; } - void ImageConvertOutput::SetOutputImage(IImageObjectPtr image, OutputImageType type) + void ImageConvertOutput::SetOutputImage(IImageObjectPtr image) { - if (type < OutputImageType::Count) - { - m_outputImage[static_cast(type)] = image; - } - else - { - AZ_Error("ImageProcess", false, "Cannot set output image to %d", type); - } + m_outputImage = image; } void ImageConvertOutput::SetReady(bool ready) @@ -62,10 +48,7 @@ namespace ImageProcessingAtom void ImageConvertOutput::Reset() { - for (int i = 0; i < static_cast(OutputImageType::Count); i++) - { - m_outputImage[i] = nullptr; - } + m_outputImage = nullptr; m_outputReady = false; m_progress = 0.0f; } @@ -109,13 +92,12 @@ namespace ImageProcessingAtom IImageObjectPtr outputImage = m_process->GetOutputImage(); - m_output->SetOutputImage(outputImage, ImageConvertOutput::Base); - if (!IsJobCancelled()) { - // For preview, combine image output with alpha if any + // convert the output image to RGBA format for preview m_output->SetProgress(1.0f / static_cast(m_previewProcessStep)); - m_output->SetOutputImage(outputImage, ImageConvertOutput::Preview); + IImageObjectPtr uncompressedImage = ConvertImageForPreview(outputImage); + m_output->SetOutputImage(uncompressedImage); } m_output->SetReady(true); diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImageConvertJob.h b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImageConvertJob.h index 9baa5dd1b4..ac15d47806 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImageConvertJob.h +++ b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImageConvertJob.h @@ -21,16 +21,8 @@ namespace ImageProcessingAtom class ImageConvertOutput { public: - enum OutputImageType - { - Base = 0, // Might contains alpha or not - Alpha, // Separate alpha image - Preview, // Combine base image with alpha if any, format RGBA8 - Count - }; - - IImageObjectPtr GetOutputImage(OutputImageType type) const; - void SetOutputImage(IImageObjectPtr image, OutputImageType type); + IImageObjectPtr GetOutputImage() const; + void SetOutputImage(IImageObjectPtr image); void SetReady(bool ready); bool IsReady() const; float GetProgress() const; @@ -38,7 +30,7 @@ namespace ImageProcessingAtom void Reset(); private: - IImageObjectPtr m_outputImage[OutputImageType::Count]; + IImageObjectPtr m_outputImage; bool m_outputReady = false; float m_progress = 0.0f; }; diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImageObjectImpl.cpp b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImageObjectImpl.cpp index 465d992ef6..758df462ec 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImageObjectImpl.cpp +++ b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImageObjectImpl.cpp @@ -183,10 +183,9 @@ namespace ImageProcessingAtom return EAlphaContent::eAlphaContent_Absent; } - //if it's compressed format, return indeterminate. if user really want to know the content, they may convert the format to ARGB8 first if (!CPixelFormats::GetInstance().IsPixelFormatUncompressed(m_pixelFormat)) { - AZ_Assert(false, "the function only works right with uncompressed formats. convert to uncompressed format if you get accurate result"); + AZ_TracePrintf("Image processing", "GetAlphaContent() was called for compressed format\n"); return EAlphaContent::eAlphaContent_Indeterminate; } diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImagePreview.cpp b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImagePreview.cpp index f51741eba9..ff7fa911d7 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImagePreview.cpp +++ b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImagePreview.cpp @@ -86,7 +86,7 @@ namespace ImageProcessingAtom IImageObjectPtr ImagePreview::GetOutputImage() { - return m_output.GetOutputImage(ImageConvertOutput::Preview); + return m_output.GetOutputImage(); } ImagePreview::~ImagePreview() @@ -101,6 +101,8 @@ namespace ImageProcessingAtom void ImagePreview::InitializeJobSettings() { AZ::JobManagerDesc desc; + desc.m_jobManagerName = "ImagePreview"; + AZ::JobManagerThreadDesc threadDesc; desc.m_workerThreads.push_back(threadDesc); // Check to ensure these have not already been initialized. diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/Utils.cpp b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/Utils.cpp index 29ba8c3351..20e1b18e77 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/Utils.cpp +++ b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/Utils.cpp @@ -385,6 +385,13 @@ namespace ImageProcessingAtom } return true; } + + bool NeedAlphaChannel(EAlphaContent alphaContent) + { + return (alphaContent == EAlphaContent::eAlphaContent_OnlyBlack + || alphaContent == EAlphaContent::eAlphaContent_OnlyBlackAndWhite + || alphaContent == EAlphaContent::eAlphaContent_Greyscale); + } } } // namespace ImageProcessingAtom diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/Utils.h b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/Utils.h index d5905eddbc..59503a2366 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/Utils.h +++ b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/Utils.h @@ -26,5 +26,7 @@ namespace ImageProcessingAtom IImageObjectPtr LoadImageFromImageAsset(const AZ::Data::Asset& asset); bool SaveImageToDdsFile(IImageObjectPtr image, AZStd::string_view filePath); + + bool NeedAlphaChannel(EAlphaContent alphaContent); } } diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Code/Tests/ImageProcessing_Test.cpp b/Gems/Atom/Asset/ImageProcessingAtom/Code/Tests/ImageProcessing_Test.cpp index d5b795a1fa..91b0952a06 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Code/Tests/ImageProcessing_Test.cpp +++ b/Gems/Atom/Asset/ImageProcessingAtom/Code/Tests/ImageProcessing_Test.cpp @@ -111,7 +111,6 @@ namespace UnitTest AZ::SerializeContext* GetSerializeContext() override { return m_context.get(); } AZ::BehaviorContext* GetBehaviorContext() override { return nullptr; } AZ::JsonRegistrationContext* GetJsonRegistrationContext() override { return m_jsonRegistrationContext.get(); } - const char* GetAppRoot() const override { return nullptr; } const char* GetEngineRoot() const override { return nullptr; } const char* GetExecutableFolder() const override { return nullptr; } void EnumerateEntities(const AZ::ComponentApplicationRequests::EntityCallback& /*callback*/) override {} @@ -204,7 +203,7 @@ namespace UnitTest m_gemFolder = AZ::Test::GetEngineRootPath() + "/Gems/Atom/Asset/ImageProcessingAtom/"; m_outputFolder = m_gemFolder + AZStd::string("Code/Tests/TestAssets/temp/"); - m_defaultSettingFolder = m_gemFolder + AZStd::string("Config/"); + m_defaultSettingFolder = m_gemFolder + AZStd::string("Assets/Config/"); m_testFileFolder = m_gemFolder + AZStd::string("Code/Tests/TestAssets/"); InitialImageFilenames(); diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/ImageBuilder.settings b/Gems/Atom/Asset/ImageProcessingAtom/Config/ImageBuilder.settings deleted file mode 100644 index 466ac4b71d..0000000000 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/ImageBuilder.settings +++ /dev/null @@ -1,67 +0,0 @@ -{ - "Type": "JsonSerialization", - "Version": 1, - "ClassName": "BuilderSettingManager", - "ClassData": { - "AnalysisFingerprint": "2", - "BuildSettings": { - "android": { - "GlossScale": 16.0, - "GlossBias": 0.0, - "Streaming": false, - "Enable": true - }, - "ios": { - "GlossScale": 16.0, - "GlossBias": 0.0, - "Streaming": false, - "Enable": true - }, - "mac": { - "GlossScale": 16.0, - "GlossBias": 0.0, - "Streaming": false, - "Enable": true - }, - "pc": { - "GlossScale": 16.0, - "GlossBias": 0.0, - "Streaming": false, - "Enable": true - }, - "linux": { - "GlossScale": 16.0, - "GlossBias": 0.0, - "Streaming": false, - "Enable": true - }, - "provo": { - "GlossScale": 16.0, - "GlossBias": 0.0, - "Streaming": false, - "Enable": false - } - }, - "DefaultPresetsByFileMask": { - "_basecolor": "Albedo", - "_diff": "Albedo", - "_diffuse": "Albedo", - "_ddn": "Normals", - "_normal": "Normals", - "_ddna": "NormalsWithSmoothness", - "_glossness": "Reflectance", - "_spec": "Reflectance", - "_specular": "Reflectance", - "_metallic": "Reflectance", - "_refl": "Reflectance", - "_roughness": "Reflectance", - "_ibldiffusecm": "IBLDiffuse", - "_iblskyboxcm": "IBLSkybox", - "_iblspecularcm": "IBLSpecular", - "_skyboxcm": "Skybox" - }, - "DefaultPreset": "Albedo", - "DefaultPresetAlpha": "AlbedoWithGenericAlpha", - "DefaultPresetNonePOT": "ReferenceImage" - } -} diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/Reflectance.preset b/Gems/Atom/Asset/ImageProcessingAtom/Config/Reflectance.preset deleted file mode 100644 index 2ac88dca85..0000000000 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/Reflectance.preset +++ /dev/null @@ -1,157 +0,0 @@ -{ - "Type": "JsonSerialization", - "Version": 1, - "ClassName": "MultiplatformPresetSettings", - "ClassData": { - "DefaultPreset": { - "UUID": "{7A3CC95E-0A0C-4CA1-8357-5712B028B77D}", - "Name": "Reflectance", - "SourceColor": "Linear", - "DestColor": "Linear", - "FileMasks": [ - "_spec", - "_refl", - "_ref", - "_rf", - "_gloss", - "_g", - "_f0", - "_specf0", - "_specular", - "_metal", - "_mtl", - "_m", - "_mt", - "_metalness", - "_metallic", - "_roughness", - "_rough" - ], - "PixelFormat": "BC1", - "IsPowerOf2": true, - "MipMapSetting": { - "MipGenType": "Box" - } - }, - "PlatformsPresets": { - "android": { - "UUID": "{7A3CC95E-0A0C-4CA1-8357-5712B028B77D}", - "Name": "Reflectance", - "SourceColor": "Linear", - "DestColor": "Linear", - "FileMasks": [ - "_spec", - "_refl", - "_ref", - "_rf", - "_gloss", - "_g", - "_f0", - "_specf0", - "_metal", - "_mtl", - "_m", - "_mt", - "_metalness", - "_metallic", - "_roughness", - "_rough" - ], - "PixelFormat": "ASTC_6x6", - "MaxTextureSize": 2048, - "IsPowerOf2": true, - "MipMapSetting": { - "MipGenType": "Box" - } - }, - "ios": { - "UUID": "{7A3CC95E-0A0C-4CA1-8357-5712B028B77D}", - "Name": "Reflectance", - "SourceColor": "Linear", - "DestColor": "Linear", - "FileMasks": [ - "_spec", - "_refl", - "_ref", - "_rf", - "_gloss", - "_g", - "_f0", - "_specf0", - "_metal", - "_mtl", - "_m", - "_mt", - "_metalness", - "_metallic", - "_roughness", - "_rough" - ], - "PixelFormat": "ASTC_6x6", - "MaxTextureSize": 2048, - "IsPowerOf2": true, - "MipMapSetting": { - "MipGenType": "Box" - } - }, - "mac": { - "UUID": "{7A3CC95E-0A0C-4CA1-8357-5712B028B77D}", - "Name": "Reflectance", - "SourceColor": "Linear", - "DestColor": "Linear", - "FileMasks": [ - "_spec", - "_refl", - "_ref", - "_rf", - "_gloss", - "_g", - "_f0", - "_specf0", - "_metal", - "_mtl", - "_m", - "_mt", - "_metalness", - "_metallic", - "_roughness", - "_rough" - ], - "PixelFormat": "BC1", - "IsPowerOf2": true, - "MipMapSetting": { - "MipGenType": "Box" - } - }, - "provo": { - "UUID": "{7A3CC95E-0A0C-4CA1-8357-5712B028B77D}", - "Name": "Reflectance", - "SourceColor": "Linear", - "DestColor": "Linear", - "FileMasks": [ - "_spec", - "_refl", - "_ref", - "_rf", - "_gloss", - "_g", - "_f0", - "_specf0", - "_metal", - "_mtl", - "_m", - "_mt", - "_metalness", - "_metallic", - "_roughness", - "_rough" - ], - "PixelFormat": "BC1", - "IsPowerOf2": true, - "MipMapSetting": { - "MipGenType": "Box" - } - } - } - } -} diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.cpp b/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.cpp index e41c04a0be..99b7c814d1 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.cpp +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.cpp @@ -82,7 +82,7 @@ namespace AZ // Register Shader Asset Builder AssetBuilderSDK::AssetBuilderDesc shaderAssetBuilderDescriptor; shaderAssetBuilderDescriptor.m_name = "Shader Asset Builder"; - shaderAssetBuilderDescriptor.m_version = 107; // Required .azsl extension in .shader file references + shaderAssetBuilderDescriptor.m_version = 108; // The Build Time Stamp of ShaderAsset And ShaderVariantAsset Should Be Based On GetTimeUTCMilliSecond() // .shader file changes trigger rebuilds shaderAssetBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern( AZStd::string::format("*.%s", RPI::ShaderSourceData::Extension), AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard)); shaderAssetBuilderDescriptor.m_busId = azrtti_typeid(); @@ -108,7 +108,7 @@ namespace AZ shaderVariantAssetBuilderDescriptor.m_name = "Shader Variant Asset Builder"; // Both "Shader Variant Asset Builder" and "Shader Asset Builder" produce ShaderVariantAsset products. If you update // ShaderVariantAsset you will need to update BOTH version numbers, not just "Shader Variant Asset Builder". - shaderVariantAssetBuilderDescriptor.m_version = 26; // [AZSL] Changing inlineConstant to rootConstant keyword work. + shaderVariantAssetBuilderDescriptor.m_version = 27; // The Build Time Stamp of ShaderAsset And ShaderVariantAsset Should Be Based On GetTimeUTCMilliSecond(). shaderVariantAssetBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern(AZStd::string::format("*.%s", RPI::ShaderVariantListSourceData::Extension), AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard)); shaderVariantAssetBuilderDescriptor.m_busId = azrtti_typeid(); shaderVariantAssetBuilderDescriptor.m_createJobFunction = AZStd::bind(&ShaderVariantAssetBuilder::CreateJobs, &m_shaderVariantAssetBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2); diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder.cpp b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder.cpp index 89e202a4bc..e431b74282 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder.cpp +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder.cpp @@ -162,7 +162,7 @@ namespace AZ // has the same value, because later the ShaderVariantTreeAsset job will fetch this value from the local ShaderAsset // which could cross platforms (i.e. building an android ShaderVariantTreeAsset on PC would fetch the tiemstamp from // the PC's ShaderAsset). - AZStd::sys_time_t shaderAssetBuildTimestamp = AZStd::GetTimeNowMicroSecond(); + AZ::u64 shaderAssetBuildTimestamp = AZStd::GetTimeUTCMilliSecond(); // Need to get the name of the azsl file from the .shader source asset, to be able to declare a dependency to SRG Layout Job. // and the macro options to preprocess. @@ -229,8 +229,8 @@ namespace AZ } // for all request.m_enabledPlatforms AZ_TracePrintf( - ShaderAssetBuilderName, "CreateJobs for %s took %llu microseconds", shaderAssetSourceFileFullPath.c_str(), - AZStd::GetTimeNowMicroSecond() - shaderAssetBuildTimestamp); + ShaderAssetBuilderName, "CreateJobs for %s took %llu milliseconds", shaderAssetSourceFileFullPath.c_str(), + AZStd::GetTimeUTCMilliSecond() - shaderAssetBuildTimestamp); response.m_result = AssetBuilderSDK::CreateJobsResultCode::Success; } @@ -355,8 +355,8 @@ namespace AZ return; } - // Get the time stamp string as sys_time_t, and also convert back to string to make sure it was converted correctly. - AZStd::sys_time_t shaderAssetBuildTimestamp = 0; + // Get the time stamp string as u64, and also convert back to string to make sure it was converted correctly. + AZ::u64 shaderAssetBuildTimestamp = 0; auto shaderAssetBuildTimestampIterator = request.m_jobDescription.m_jobParameters.find(ShaderAssetBuildTimestampParam); if (shaderAssetBuildTimestampIterator != request.m_jobDescription.m_jobParameters.end()) { diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.cpp b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.cpp index bb40baca7d..5eaa0d9ddb 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.cpp +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.cpp @@ -765,7 +765,7 @@ namespace AZ return; } - const AZStd::sys_time_t shaderVariantAssetBuildTimestamp = AZStd::GetTimeNowMicroSecond(); + const AZ::u64 shaderVariantAssetBuildTimestamp = AZStd::GetTimeUTCMilliSecond(); auto supervariantList = ShaderBuilderUtility::GetSupervariantListFromShaderSourceData(shaderSourceDescriptor); diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.h b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.h index 2eaf1d9d8b..b0457656af 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.h +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.h @@ -38,7 +38,7 @@ namespace AZ const AZStd::string& m_tempDirPath; //! Used to synchronize versions of the ShaderAsset and ShaderVariantAsset, //! especially during hot-reload. A (ShaderVariantAsset.timestamp) >= (ShaderAsset.timestamp). - const AZStd::sys_time_t m_assetBuildTimestamp; + const AZ::u64 m_assetBuildTimestamp; const RPI::ShaderSourceData& m_shaderSourceDataDescriptor; const RPI::ShaderOptionGroupLayout& m_shaderOptionGroupLayout; const MapOfStringToStageType& m_shaderEntryPoints; diff --git a/Gems/Atom/Feature/Common/Assets/Passes/ReflectionScreenSpace.pass b/Gems/Atom/Feature/Common/Assets/Passes/ReflectionScreenSpace.pass index 4972f0f494..d1825be820 100644 --- a/Gems/Atom/Feature/Common/Assets/Passes/ReflectionScreenSpace.pass +++ b/Gems/Atom/Feature/Common/Assets/Passes/ReflectionScreenSpace.pass @@ -34,10 +34,6 @@ } ], "PassRequests": [ - { - "Name": "ReflectionScreenSpaceBlurPass", - "TemplateName": "ReflectionScreenSpaceBlurPassTemplate" - }, { "Name": "ReflectionScreenSpaceTracePass", "TemplateName": "ReflectionScreenSpaceTracePassTemplate", @@ -56,42 +52,65 @@ "Attachment": "NormalInput" } }, - { - "LocalSlot": "DepthStencilInput", - "AttachmentRef": { - "Pass": "Parent", - "Attachment": "DepthStencilInput" - - } - }, { "LocalSlot": "SpecularF0Input", "AttachmentRef": { "Pass": "Parent", "Attachment": "SpecularF0Input" } + }, + { + "LocalSlot": "ReflectionInputOutput", + "AttachmentRef": { + "Pass": "Parent", + "Attachment": "ReflectionInputOutput" + } + } + ] + }, + { + "Name": "ReflectionScreenSpaceBlurPass", + "TemplateName": "ReflectionScreenSpaceBlurPassTemplate", + "Connections": [ + { + "LocalSlot": "DepthInput", + "AttachmentRef": { + "Pass": "Parent", + "Attachment": "DepthStencilInput" + } + }, + { + "LocalSlot": "ScreenSpaceReflectionInputOutput", + "AttachmentRef": { + "Pass": "ReflectionScreenSpaceTracePass", + "Attachment": "ScreenSpaceReflectionOutput" + } + }, + { + "LocalSlot": "DownsampledDepthInputOutput", + "AttachmentRef": { + "Pass": "ReflectionScreenSpaceTracePass", + "Attachment": "DownsampledDepthOutput" + } } ] }, { "Name": "ReflectionScreenSpaceCompositePass", "TemplateName": "ReflectionScreenSpaceCompositePassTemplate", - "ExecuteAfter": [ - "ReflectionScreenSpaceBlurPass" - ], "Connections": [ { - "LocalSlot": "TraceInput", + "LocalSlot": "ReflectionInput", "AttachmentRef": { - "Pass": "ReflectionScreenSpaceTracePass", - "Attachment": "Output" + "Pass": "ReflectionScreenSpaceBlurPass", + "Attachment": "ScreenSpaceReflectionInputOutput" } }, { - "LocalSlot": "PreviousFrameBufferInput", + "LocalSlot": "DownsampledDepthInput", "AttachmentRef": { "Pass": "ReflectionScreenSpaceBlurPass", - "Attachment": "PreviousFrameInputOutput" + "Attachment": "DownsampledDepthInputOutput" } }, { @@ -115,6 +134,13 @@ "Attachment": "DepthStencilInput" } }, + { + "LocalSlot": "PreviousFrameInputOutput", + "AttachmentRef": { + "Pass": "ReflectionScreenSpaceTracePass", + "Attachment": "PreviousFrameInputOutput" + } + }, { "LocalSlot": "DepthStencilInput", "AttachmentRef": { diff --git a/Gems/Atom/Feature/Common/Assets/Passes/ReflectionScreenSpaceBlur.pass b/Gems/Atom/Feature/Common/Assets/Passes/ReflectionScreenSpaceBlur.pass index e2fde2d4ef..a5fd2fdfb1 100644 --- a/Gems/Atom/Feature/Common/Assets/Passes/ReflectionScreenSpaceBlur.pass +++ b/Gems/Atom/Feature/Common/Assets/Passes/ReflectionScreenSpaceBlur.pass @@ -8,34 +8,19 @@ "PassClass": "ReflectionScreenSpaceBlurPass", "Slots": [ { - "Name": "PreviousFrameInputOutput", + "Name": "DepthInput", + "SlotType": "Input", + "ScopeAttachmentUsage": "Shader" + }, + { + "Name": "ScreenSpaceReflectionInputOutput", "SlotType": "InputOutput", "ScopeAttachmentUsage": "Shader" - } - ], - "ImageAttachments": [ + }, { - "Name": "PreviousFrameImage", - "SizeSource": { - "Source": { - "Pass": "Parent", - "Attachment": "SpecularInput" - } - }, - "ImageDescriptor": { - "Format": "R16G16B16A16_FLOAT", - "SharedQueueMask": "Graphics" - }, - "GenerateFullMipChain": true - } - ], - "Connections": [ - { - "LocalSlot": "PreviousFrameInputOutput", - "AttachmentRef": { - "Pass": "This", - "Attachment": "PreviousFrameImage" - } + "Name": "DownsampledDepthInputOutput", + "SlotType": "InputOutput", + "ScopeAttachmentUsage": "DepthStencil" } ] } diff --git a/Gems/Atom/Feature/Common/Assets/Passes/ReflectionScreenSpaceBlurVertical.pass b/Gems/Atom/Feature/Common/Assets/Passes/ReflectionScreenSpaceBlurVertical.pass index a616ed4c8e..af3878cf6b 100644 --- a/Gems/Atom/Feature/Common/Assets/Passes/ReflectionScreenSpaceBlurVertical.pass +++ b/Gems/Atom/Feature/Common/Assets/Passes/ReflectionScreenSpaceBlurVertical.pass @@ -7,6 +7,11 @@ "Name": "ReflectionScreenSpaceBlurVerticalPassTemplate", "PassClass": "ReflectionScreenSpaceBlurChildPass", "Slots": [ + { + "Name": "DepthInput", + "SlotType": "Input", + "ScopeAttachmentUsage": "Shader" + }, { "Name": "Input", "SlotType": "InputOutput", @@ -16,6 +21,20 @@ "Name": "Output", "SlotType": "InputOutput", "ScopeAttachmentUsage": "RenderTarget" + }, + { + "Name": "DownsampledDepthOutput", + "SlotType": "InputOutput", + "ScopeAttachmentUsage": "DepthStencil" + } + ], + "Connections": [ + { + "LocalSlot": "DepthInput", + "AttachmentRef": { + "Pass": "Parent", + "Attachment": "DepthInput" + } } ], "PassData": { diff --git a/Gems/Atom/Feature/Common/Assets/Passes/ReflectionScreenSpaceComposite.pass b/Gems/Atom/Feature/Common/Assets/Passes/ReflectionScreenSpaceComposite.pass index 5443c32406..17b58dbc9e 100644 --- a/Gems/Atom/Feature/Common/Assets/Passes/ReflectionScreenSpaceComposite.pass +++ b/Gems/Atom/Feature/Common/Assets/Passes/ReflectionScreenSpaceComposite.pass @@ -8,12 +8,12 @@ "PassClass": "ReflectionScreenSpaceCompositePass", "Slots": [ { - "Name": "TraceInput", + "Name": "ReflectionInput", "SlotType": "Input", "ScopeAttachmentUsage": "Shader" }, { - "Name": "PreviousFrameBufferInput", + "Name": "DownsampledDepthInput", "SlotType": "Input", "ScopeAttachmentUsage": "Shader" }, @@ -37,6 +37,11 @@ ] } }, + { + "Name": "PreviousFrameInputOutput", + "SlotType": "InputOutput", + "ScopeAttachmentUsage": "Shader" + }, { "Name": "DepthStencilInput", "SlotType": "Input", diff --git a/Gems/Atom/Feature/Common/Assets/Passes/ReflectionScreenSpaceTrace.pass b/Gems/Atom/Feature/Common/Assets/Passes/ReflectionScreenSpaceTrace.pass index 370db1f45a..824d23a046 100644 --- a/Gems/Atom/Feature/Common/Assets/Passes/ReflectionScreenSpaceTrace.pass +++ b/Gems/Atom/Feature/Common/Assets/Passes/ReflectionScreenSpaceTrace.pass @@ -5,7 +5,7 @@ "ClassData": { "PassTemplate": { "Name": "ReflectionScreenSpaceTracePassTemplate", - "PassClass": "FullScreenTriangle", + "PassClass": "ReflectionScreenSpaceTracePass", "Slots": [ { "Name": "DepthStencilTextureInput", @@ -28,24 +28,52 @@ "ScopeAttachmentUsage": "Shader" }, { - "Name": "DepthStencilInput", + "Name": "ReflectionInputOutput", "SlotType": "Input", - "ScopeAttachmentUsage": "DepthStencil", - "ImageViewDesc": { - "AspectFlags": [ - "Stencil" - ] + "ScopeAttachmentUsage": "Shader" + }, + { + "Name": "PreviousFrameInputOutput", + "SlotType": "Input", + "ScopeAttachmentUsage": "Shader" + }, + { + "Name": "ScreenSpaceReflectionOutput", + "SlotType": "Output", + "ScopeAttachmentUsage": "RenderTarget", + "LoadStoreAction": { + "ClearValue": { + "Value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ] + }, + "LoadAction": "Clear" } }, { - "Name": "Output", + "Name": "DownsampledDepthOutput", "SlotType": "Output", - "ScopeAttachmentUsage": "RenderTarget" + "ScopeAttachmentUsage": "DepthStencil", + "LoadStoreAction": { + "ClearValue": { + "Type": "DepthStencil", + "Value": [ + 1.0, + {}, + {}, + {} + ] + }, + "LoadAction": "Clear" + } } ], "ImageAttachments": [ { - "Name": "TraceImage", + "Name": "ScreenSpaceReflectionImage", "SizeSource": { "Source": { "Pass": "This", @@ -56,9 +84,40 @@ "HeightMultiplier": 0.5 } }, - "MultisampleSource": { - "Pass": "This", - "Attachment": "SpecularF0Input" + "ImageDescriptor": { + "Format": "R16G16B16A16_FLOAT", + "MipLevels": "5", + "SharedQueueMask": "Graphics" + } + }, + { + "Name": "DownsampledDepthImage", + "SizeSource": { + "Source": { + "Pass": "Parent", + "Attachment": "DepthStencilInput" + }, + "Multipliers": { + "WidthMultiplier": 0.5, + "HeightMultiplier": 0.5 + } + }, + "FormatSource": { + "Pass": "Parent", + "Attachment": "DepthStencilInput" + }, + "ImageDescriptor": { + "MipLevels": "5", + "SharedQueueMask": "Graphics" + } + }, + { + "Name": "PreviousFrameImage", + "SizeSource": { + "Source": { + "Pass": "Parent", + "Attachment": "SpecularInput" + } }, "ImageDescriptor": { "Format": "R16G16B16A16_FLOAT", @@ -68,15 +127,28 @@ ], "Connections": [ { - "LocalSlot": "Output", + "LocalSlot": "ScreenSpaceReflectionOutput", "AttachmentRef": { "Pass": "This", - "Attachment": "TraceImage" + "Attachment": "ScreenSpaceReflectionImage" + } + }, + { + "LocalSlot": "DownsampledDepthOutput", + "AttachmentRef": { + "Pass": "This", + "Attachment": "DownsampledDepthImage" + } + }, + { + "LocalSlot": "PreviousFrameInputOutput", + "AttachmentRef": { + "Pass": "This", + "Attachment": "PreviousFrameImage" } } ], - "PassData": - { + "PassData": { "$type": "FullscreenTrianglePassData", "ShaderAsset": { "FilePath": "Shaders/Reflections/ReflectionScreenSpaceTrace.shader" diff --git a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/DefaultObjectSrg.azsli b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/DefaultObjectSrg.azsli index 10526597cb..9f40e7ab8f 100644 --- a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/DefaultObjectSrg.azsli +++ b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/DefaultObjectSrg.azsli @@ -37,6 +37,7 @@ ShaderResourceGroup ObjectSrg : SRG_PerObject float m_padding; bool m_useReflectionProbe; bool m_useParallaxCorrection; + float m_exposure; }; ReflectionProbeData m_reflectionProbeData; diff --git a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/Lights/Ibl.azsli b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/Lights/Ibl.azsli index d33a307dfe..3254b8e4ed 100644 --- a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/Lights/Ibl.azsli +++ b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/Lights/Ibl.azsli @@ -85,12 +85,12 @@ void ApplyIBL(Surface surface, inout LightingData lightingData) if(useIbl) { - float iblExposureFactor = pow(2.0, SceneSrg::m_iblExposure); + float globalIblExposure = pow(2.0, SceneSrg::m_iblExposure); if(useDiffuseIbl) { float3 iblDiffuse = GetIblDiffuse(surface.normal, surface.albedo, lightingData.diffuseResponse); - lightingData.diffuseLighting += (iblDiffuse * iblExposureFactor * lightingData.diffuseAmbientOcclusion); + lightingData.diffuseLighting += (iblDiffuse * globalIblExposure * lightingData.diffuseAmbientOcclusion); } if(useSpecularIbl) @@ -116,7 +116,8 @@ void ApplyIBL(Surface surface, inout LightingData lightingData) iblSpecular = iblSpecular * (1.0 - clearCoatResponse) * (1.0 - clearCoatResponse) + clearCoatIblSpecular; } - lightingData.specularLighting += (iblSpecular * iblExposureFactor); + float exposure = ObjectSrg::m_reflectionProbeData.m_useReflectionProbe ? pow(2.0, ObjectSrg::m_reflectionProbeData.m_exposure) : globalIblExposure; + lightingData.specularLighting += (iblSpecular * exposure); } } } diff --git a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/Shadow/DirectionalLightShadow.azsli b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/Shadow/DirectionalLightShadow.azsli index a7122aaf3a..59817af701 100644 --- a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/Shadow/DirectionalLightShadow.azsli +++ b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/Shadow/DirectionalLightShadow.azsli @@ -166,7 +166,7 @@ float DirectionalLightShadow::GetThickness(uint lightIndex, float3 shadowCoords[ bool2 DirectionalLightShadow::IsShadowed(float3 shadowCoord, uint indexOfCascade) { static const float PixelMargin = 1.5; // avoiding artifact between cascade levels. - static const float DepthMargin = 0.01; // avoiding artifact when near depth bounds. + static const float DepthMargin = 1e-8; // avoiding artifact when near depth bounds. // size is the shadowap's width and height. const uint size = ViewSrg::m_directionalLightShadows[m_lightIndex].m_shadowmapSize; @@ -210,8 +210,8 @@ float DirectionalLightShadow::GetVisibilityFromLightNoFilter() float DirectionalLightShadow::GetVisibilityFromLightPcf() { - static const float DepthMargin = 0.01; // avoiding artifact when near depth bounds. static const float PixelMargin = 1.5; // avoiding artifact between cascade levels. + static const float DepthMargin = 1e-8; // avoiding artifact when near depth bounds. const uint size = ViewSrg::m_directionalLightShadows[m_lightIndex].m_shadowmapSize; const uint cascadeCount = ViewSrg::m_directionalLightShadows[m_lightIndex].m_cascadeCount; diff --git a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/Shadow/ProjectedShadow.azsli b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/Shadow/ProjectedShadow.azsli index daed3a2921..3b8379e7fa 100644 --- a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/Shadow/ProjectedShadow.azsli +++ b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/Shadow/ProjectedShadow.azsli @@ -14,6 +14,7 @@ #include #include "BicubicPcfFilters.azsli" #include "Shadow.azsli" +#include "NormalOffsetShadows.azsli" // ProjectedShadow calculates shadowed area projected from a light. class ProjectedShadow @@ -123,6 +124,7 @@ float ProjectedShadow::GetThickness(uint shadowIndex, float3 worldPosition) ProjectedShadow shadow; shadow.m_worldPosition = worldPosition; + shadow.m_normalVector = 0; // The normal vector is used to reduce acne, this is not an issue when using the shadowmap to determine thickness. shadow.m_shadowIndex = shadowIndex; shadow.SetShadowPosition(); return shadow.GetThickness(); @@ -317,8 +319,13 @@ bool ProjectedShadow::IsShadowed(float3 shadowPosition) void ProjectedShadow::SetShadowPosition() { + const float normalBias = ViewSrg::m_projectedShadows[m_shadowIndex].m_normalShadowBias; + const float shadowmapSize = ViewSrg::m_projectedFilterParams[m_shadowIndex].m_shadowmapSize; + const float3 shadowOffset = ComputeNormalShadowOffset(normalBias, m_normalVector, shadowmapSize); const float4x4 depthBiasMatrix = ViewSrg::m_projectedShadows[m_shadowIndex].m_depthBiasMatrix; - float4 shadowPositionHomogeneous = mul(depthBiasMatrix, float4(m_worldPosition, 1)); + + float4 shadowPositionHomogeneous = mul(depthBiasMatrix, float4(m_worldPosition + shadowOffset, 1)); + m_shadowPosition = shadowPositionHomogeneous.xyz / shadowPositionHomogeneous.w; m_bias = ViewSrg::m_projectedShadows[m_shadowIndex].m_bias / shadowPositionHomogeneous.w; diff --git a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/Skin/SkinObjectSrg.azsli b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/Skin/SkinObjectSrg.azsli index d0766c295d..99a32629ef 100644 --- a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/Skin/SkinObjectSrg.azsli +++ b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/Skin/SkinObjectSrg.azsli @@ -46,6 +46,7 @@ ShaderResourceGroup ObjectSrg : SRG_PerObject float m_padding; bool m_useReflectionProbe; bool m_useParallaxCorrection; + float m_exposure; }; ReflectionProbeData m_reflectionProbeData; diff --git a/Gems/Atom/Feature/Common/Assets/ShaderResourceGroups/ViewSrgAll.azsli b/Gems/Atom/Feature/Common/Assets/ShaderResourceGroups/ViewSrgAll.azsli index 3e90e1a441..9253885cfc 100644 --- a/Gems/Atom/Feature/Common/Assets/ShaderResourceGroups/ViewSrgAll.azsli +++ b/Gems/Atom/Feature/Common/Assets/ShaderResourceGroups/ViewSrgAll.azsli @@ -12,4 +12,5 @@ #ifdef AZ_COLLECTING_PARTIAL_SRGS #include +#include // Temporary until gem partial view srgs can be included automatically. #endif diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance.azshader index 31fae5d98b..a9b5567f6b 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance.azshader and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance.azshader differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_dx12_0.azshadervariant index 19e9fdfc8d..6d4b6d0fca 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_dx12_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_dx12_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_null_0.azshadervariant index 43c4a615cf..5d8800a6fe 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_null_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_null_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_vulkan_0.azshadervariant index 75f070a03e..930f7898c4 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_vulkan_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_vulkan_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance.azshader index 0025388bc1..268020b431 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance.azshader and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance.azshader differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_dx12_0.azshadervariant index 34a9b3659f..d95ec6c1b9 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_dx12_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_dx12_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_null_0.azshadervariant index 4a2b0e9944..3253ddba37 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_null_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_null_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_vulkan_0.azshadervariant index c053a7db19..c38b94c4f1 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_vulkan_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_vulkan_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn.azshader index c507b12563..5c46d368ce 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn.azshader and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn.azshader differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_dx12_0.azshadervariant index f60c713597..eb6938f8c9 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_dx12_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_dx12_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_null_0.azshadervariant index 3e810bcfb5..8c83c1e3ff 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_null_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_null_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_vulkan_0.azshadervariant index 5918f277b5..2fbb9ffffe 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_vulkan_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_vulkan_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow.azshader index 120eb70e54..96053f4091 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow.azshader and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow.azshader differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_dx12_0.azshadervariant index d38d779696..4bdbdddf33 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_dx12_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_dx12_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_null_0.azshadervariant index 6d7a604701..77668a2450 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_null_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_null_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_vulkan_0.azshadervariant index dee941cfae..fb3dd771ca 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_vulkan_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_vulkan_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification.azshader index e2e0fa90f5..eda8d53376 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification.azshader and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification.azshader differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_dx12_0.azshadervariant index 7a92fc2de5..2df610df77 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_dx12_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_dx12_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_null_0.azshadervariant index 43408b26f3..f2458e692b 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_null_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_null_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_vulkan_0.azshadervariant index 877085446d..0e08e84f74 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_vulkan_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_vulkan_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing.azshader index 2c403c77f8..1cea4860a1 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing.azshader and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing.azshader differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_dx12_0.azshadervariant index 4bcc47ee43..5605a47e9c 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_dx12_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_dx12_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_null_0.azshadervariant index f173416210..15f3477cb5 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_null_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_null_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_vulkan_0.azshadervariant index 0eb04a25b8..c2bcd4ab07 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_vulkan_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_vulkan_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit.azshader index 2847d0035a..9958708a64 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit.azshader and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit.azshader differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_dx12_0.azshadervariant index 93cfb47819..fbd1d90251 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_dx12_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_dx12_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_null_0.azshadervariant index 4a16e24211..483be0eceb 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_null_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_null_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_vulkan_0.azshadervariant index df52c9c8d2..530eef2f10 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_vulkan_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_vulkan_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss.azshader index d95fd5b3b2..eddac4e2bd 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss.azshader and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss.azshader differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_dx12_0.azshadervariant index c853de4d14..ad06bbd104 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_dx12_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_dx12_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_null_0.azshadervariant index 40e18c215c..527b42569a 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_null_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_null_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_vulkan_0.azshadervariant index 34761ccf98..426d955938 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_vulkan_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_vulkan_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation.azshader index c19020dc84..08ed61ab03 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation.azshader and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation.azshader differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_dx12_0.azshadervariant index a7d44b5541..d1012a896f 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_dx12_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_dx12_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_null_0.azshadervariant index 82e0065216..cb730be1df 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_null_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_null_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_vulkan_0.azshadervariant index 20b81aee6c..b58af4c473 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_vulkan_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_vulkan_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender.azshader index aec2786540..56009d56ab 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender.azshader and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender.azshader differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_dx12_0.azshadervariant index de851f187e..e9893c96da 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_dx12_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_dx12_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_null_0.azshadervariant index 5d8207dfdb..d195b08c34 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_null_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_null_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_vulkan_0.azshadervariant index c819e57c4c..47789d9b9b 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_vulkan_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_vulkan_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/NewDepthOfFieldTileReduce.azsl b/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/NewDepthOfFieldTileReduce.azsl index 6d55648f22..db91c369ef 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/NewDepthOfFieldTileReduce.azsl +++ b/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/NewDepthOfFieldTileReduce.azsl @@ -48,6 +48,9 @@ void MainCS(uint3 group_thread_id : SV_GroupThreadID, uint3 group_id : SV_GroupI LDS_MAX_COC[group_thread_id.x] = 0; } + // Sync LDS + GroupMemoryBarrierWithGroupSync(); + // We use gather to get 2x2 values at once, so thread samples are spaced 2 pixels apart (+1 so the sample position is in between the four pixels) float2 samplePos = float2(dispatch_id.xy) * 2 + float2(1, 1); float2 sampleUV = samplePos * PassSrg::m_inputDimensions.zw; @@ -74,6 +77,9 @@ void MainCS(uint3 group_thread_id : SV_GroupThreadID, uint3 group_id : SV_GroupI InterlockedMin( LDS_MIN_COC[0], LDS_MIN_COC[group_thread_id.x] ); InterlockedMax( LDS_MAX_COC[0], LDS_MAX_COC[group_thread_id.x] ); + // Sync LDS + GroupMemoryBarrierWithGroupSync(); + // Each group write to just one pixel. If we're the last thread in the group, write out if(group_thread_id.x == 0) { diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionProbeRenderInner.azsl b/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionProbeRenderInner.azsl index a0734caf02..e9333a4694 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionProbeRenderInner.azsl +++ b/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionProbeRenderInner.azsl @@ -81,7 +81,7 @@ PSOutput MainPS(VSOutput IN, in uint sampleIndex : SV_SampleIndex) } // apply exposure setting - specular *= pow(2.0, SceneSrg::m_iblExposure); + specular *= pow(2.0, ObjectSrg::m_exposure); PSOutput OUT; OUT.m_color = float4(specular, 1.0f); diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionProbeRenderObjectSrg.azsli b/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionProbeRenderObjectSrg.azsli index 8151ed2fd5..366dc691ed 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionProbeRenderObjectSrg.azsli +++ b/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionProbeRenderObjectSrg.azsli @@ -17,6 +17,7 @@ ShaderResourceGroup ObjectSrg : SRG_PerObject float3 m_outerObbHalfLengths; float3 m_innerObbHalfLengths; bool m_useParallaxCorrection; + float m_exposure; TextureCube m_reflectionCubeMap; float4x4 GetWorldMatrix() diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionProbeRenderOuter.azsl b/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionProbeRenderOuter.azsl index ac97172f1f..138d29398e 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionProbeRenderOuter.azsl +++ b/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionProbeRenderOuter.azsl @@ -104,7 +104,7 @@ PSOutput MainPS(VSOutput IN, in uint sampleIndex : SV_SampleIndex) blendWeight /= max(1.0f, blendWeightAllProbes); // apply exposure setting - specular *= pow(2.0, SceneSrg::m_iblExposure); + specular *= pow(2.0, ObjectSrg::m_exposure); // apply blend weight for additive blending specular *= blendWeight; diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionScreenSpaceBlurCommon.azsli b/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionScreenSpaceBlurCommon.azsli index 1e4d4af8a2..3d38df2816 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionScreenSpaceBlurCommon.azsli +++ b/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionScreenSpaceBlurCommon.azsli @@ -6,11 +6,31 @@ * */ -// 7-tap Gaussian Kernel (Sigma 1.1) -static const uint GaussianKernelSize = 7; -static const int2 TexelOffsetsV[GaussianKernelSize] = {{0, -3}, {0, -2}, {0, -1}, {0, 0}, {0, 1}, {0, 2}, {0, 3}}; -static const int2 TexelOffsetsH[GaussianKernelSize] = {{-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}}; -static const float TexelWeights[GaussianKernelSize] = {0.010805f, 0.074929f, 0.238727f, 0.351078f, 0.238727f, 0.074929f, 0.010805f}; +// Gaussian Kernel Radius 9, Sigma 1.8 +static const uint GaussianKernelSize = 19; +static const int2 TexelOffsetsV[GaussianKernelSize] = {{0, -9}, {0, -8}, {0, -7}, {0, -6}, {0, -5}, {0, -4}, {0, -3}, {0, -2}, {0, -1}, {0, 0}, {0, 1}, {0, 2}, {0, 3}, {0, 4}, {0, 5}, {0, 6}, {0, 7}, {0, 8}, {0, 9}}; +static const int2 TexelOffsetsH[GaussianKernelSize] = {{-9, 0}, {-8, 0}, {-7, 0}, {-6, 0}, {-5, 0}, {-4, 0}, {-3, 0}, {-2, 0}, {-1, 0}, {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {6, 0}, {7, 0}, {8, 0}, {9, 0}}; +static const float TexelWeights[GaussianKernelSize] = { + 0.0000011022801820635918f, + 0.000014295732881160677f, + 0.0001370168487067367f, + 0.0009708086495991633f, + 0.005086391900047703f, + 0.019711193240183777f, + 0.056512463228943335f, + 0.11989501853796679f, + 0.18826323520204147f, + 0.21881694875889543f, + 0.18826323520204147f, + 0.11989501853796679f, + 0.056512463228943335f, + 0.019711193240183777f, + 0.005086391900047703f, + 0.0009708086495991633f, + 0.0001370168487067367f, + 0.000014295732881160677f, + 0.0000011022801820635918f +}; float3 GaussianFilter(uint2 screenCoords, int2 texelOffsets[GaussianKernelSize], RWTexture2D inputImage) { diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionScreenSpaceBlurVertical.azsl b/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionScreenSpaceBlurVertical.azsl index cfc35d10e4..bdc787350e 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionScreenSpaceBlurVertical.azsl +++ b/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionScreenSpaceBlurVertical.azsl @@ -10,12 +10,13 @@ #include #include -#include #include +#include #include "ReflectionScreenSpaceBlurCommon.azsli" ShaderResourceGroup PassSrg : SRG_PerPass { + Texture2DMS m_depth; RWTexture2D m_input; RWTexture2D m_output; uint m_imageWidth; @@ -26,13 +27,39 @@ ShaderResourceGroup PassSrg : SRG_PerPass #include // Pixel Shader +struct PSOutput +{ + float4 m_color : SV_Target0; + float m_depth : SV_Depth; +}; + PSOutput MainPS(VSOutput IN) { // vertical blur uses coordinates from the mip0 input image - uint2 coords = IN.m_position.xy * PassSrg::m_outputScale; - float3 result = GaussianFilter(coords, TexelOffsetsV, PassSrg::m_input); + uint2 halfResCoords = IN.m_position.xy * PassSrg::m_outputScale; + float3 result = GaussianFilter(halfResCoords, TexelOffsetsV, PassSrg::m_input); + + // downsample depth, using fullscreen image coordinates + float downsampledDepth = 0; + if (PassSrg::m_input[halfResCoords].w > 0.0f) + { + uint2 fullScreenCoords = halfResCoords * 2; + + for (int y = -2; y < 2; ++y) + { + for (int x = -2; x < 2; ++x) + { + float depth = PassSrg::m_depth.Load(fullScreenCoords + int2(x, y), 0).r; + if (depth > downsampledDepth) + { + downsampledDepth = depth; + } + } + } + } PSOutput OUT; OUT.m_color = float4(result, 1.0f); + OUT.m_depth = downsampledDepth; return OUT; } diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionScreenSpaceBlurVertical.shader b/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionScreenSpaceBlurVertical.shader index dcebb4d2ae..92995bd69f 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionScreenSpaceBlurVertical.shader +++ b/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionScreenSpaceBlurVertical.shader @@ -10,7 +10,8 @@ { "Depth" : { - "Enable" : false + "Enable" : true, // required to bind the depth buffer SRV + "CompareFunc" : "Always" } }, diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionScreenSpaceComposite.azsl b/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionScreenSpaceComposite.azsl index a0c31442fa..6cd4ce16f5 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionScreenSpaceComposite.azsl +++ b/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionScreenSpaceComposite.azsl @@ -12,17 +12,19 @@ #include #include #include +#include #include #include #include ShaderResourceGroup PassSrg : SRG_PerPass { - Texture2DMS m_trace; - Texture2D m_previousFrame; + Texture2D m_reflection; + Texture2D m_downsampledDepth; Texture2DMS m_normal; // RGB10 = Normal (Encoded), A2 = Flags Texture2DMS m_specularF0; // RGB8 = SpecularF0, A8 = Roughness Texture2DMS m_depth; + Texture2D m_previousFrame; Sampler LinearSampler { @@ -40,6 +42,49 @@ ShaderResourceGroup PassSrg : SRG_PerPass #include +float3 SampleReflection(float2 reflectionUV, float mip, float depth, float3 normal, uint2 invDimensions) +{ + const float DepthTolerance = 0.001f; + + // attempt to trivially accept the downsampled reflection texel + float downsampledDepth = PassSrg::m_downsampledDepth.SampleLevel(PassSrg::LinearSampler, reflectionUV, floor(mip)).r; + if (abs(depth - downsampledDepth) <= DepthTolerance) + { + // use this reflection sample + float3 reflection = PassSrg::m_reflection.SampleLevel(PassSrg::LinearSampler, reflectionUV, mip).rgb; + return reflection; + } + + // neighborhood search surrounding the downsampled texel, searching for the closest matching depth + float closestDepthDelta = 1.0f; + int2 closestOffsetUV = float2(0.0f, 0.0f); + for (int y = -4; y <= 4; ++y) + { + for (int x = -4; x <= 4; ++x) + { + float2 offsetUV = float2(x * invDimensions.x, y * invDimensions.y); + float downsampledDepth = PassSrg::m_downsampledDepth.SampleLevel(PassSrg::LinearSampler, reflectionUV + offsetUV, floor(mip)).r; + float depthDelta = abs(depth - downsampledDepth); + + if (depthDelta <= DepthTolerance) + { + // depth is within tolerance, use this texel + float3 reflection = PassSrg::m_reflection.SampleLevel(PassSrg::LinearSampler, reflectionUV + offsetUV, mip).rgb; + return reflection; + } + + if (closestDepthDelta > depthDelta) + { + closestDepthDelta = depthDelta; + closestOffsetUV = offsetUV; + } + } + } + + float3 reflection = PassSrg::m_reflection.SampleLevel(PassSrg::LinearSampler, reflectionUV + closestOffsetUV, mip).rgb; + return reflection; +} + // Pixel Shader PSOutput MainPS(VSOutput IN, in uint sampleIndex : SV_SampleIndex) { @@ -52,11 +97,21 @@ PSOutput MainPS(VSOutput IN, in uint sampleIndex : SV_SampleIndex) // compute trace image coordinates for the half-res image float2 traceCoords = screenCoords * 0.5f; - // load trace data and check w-component to see if there was a hit - float4 traceData = PassSrg::m_trace.Load(traceCoords, sampleIndex); - if (traceData.w <= 0.0f) + // check reflection data mip0 to see if there was a hit + float4 reflectionData = PassSrg::m_reflection.Load(uint3(traceCoords, 0)); + if (reflectionData.w <= 0.0f) { - // no hit, fallback to the cubemap reflections currently in the reflection buffer + // fallback to the cubemap reflections currently in the reflection buffer + discard; + } + + // load specular and roughness + float4 specularF0 = PassSrg::m_specularF0.Load(screenCoords, sampleIndex); + float roughness = specularF0.a; + const float MaxRoughness = 0.5f; + if (roughness > MaxRoughness) + { + // fallback to the cubemap reflections currently in the reflection buffer discard; } @@ -65,8 +120,9 @@ PSOutput MainPS(VSOutput IN, in uint sampleIndex : SV_SampleIndex) float depth = PassSrg::m_depth.Load(screenCoords, sampleIndex).r; float2 ndcPos = float2(UV.x, 1.0f - UV.y) * 2.0f - 1.0f; float4 projectedPos = float4(ndcPos, depth, 1.0f); - float4 positionWS = mul(ViewSrg::m_viewProjectionInverseMatrix, projectedPos); - positionWS /= positionWS.w; + float4 positionVS = mul(ViewSrg::m_projectionMatrixInverse, projectedPos); + positionVS /= positionVS.w; + float3 positionWS = mul(ViewSrg::m_viewMatrixInverse, positionVS).xyz; // compute ray from camera to surface position float3 cameraToPositionWS = normalize(positionWS.xyz - ViewSrg::m_worldPosition); @@ -74,42 +130,16 @@ PSOutput MainPS(VSOutput IN, in uint sampleIndex : SV_SampleIndex) // retrieve surface normal float4 encodedNormal = PassSrg::m_normal.Load(screenCoords, sampleIndex); float3 normalWS = DecodeNormalSignedOctahedron(encodedNormal.rgb); - - // compute surface specular - float4 specularF0 = PassSrg::m_specularF0.Load(screenCoords, sampleIndex); - float roughness = specularF0.a; float NdotV = dot(normalWS, -cameraToPositionWS); - float3 specular = FresnelSchlickWithRoughness(NdotV, specularF0.rgb, roughness); - // reconstruct the world space position of the trace coordinates - float2 traceUV = saturate(traceData.xy / dimensions); - float traceDepth = PassSrg::m_depth.Load(traceData.xy, sampleIndex).r; - float2 traceNDC = float2(traceUV.x, 1.0f - traceUV.y) * 2.0f - 1.0f; - float4 traceProjectedPos = float4(traceNDC, traceDepth, 1.0f); - float4 tracePositionVS = mul(ViewSrg::m_projectionMatrixInverse, traceProjectedPos); - tracePositionVS /= tracePositionVS.w; - float4 tracePositionWS = mul(ViewSrg::m_viewMatrixInverse, tracePositionVS); - - // reproject to the previous frame image coordinates - float4 tracePrevNDC = mul(ViewSrg::m_viewProjectionPrevMatrix, tracePositionWS); - tracePrevNDC /= tracePrevNDC.w; - float2 tracePrevUV = float2(tracePrevNDC.x, -1.0f * tracePrevNDC.y) * 0.5f + 0.5f; - - // compute the roughness mip to use in the previous frame image + // compute the roughness mip to use in the reflection image // remap the roughness mip into a lower range to more closely match the material roughness values - const float MaxRoughness = 0.5f; float mip = saturate(roughness / MaxRoughness) * PassSrg::m_maxMipLevel; - // sample reflection value from the roughness mip - float4 reflectionColor = float4(PassSrg::m_previousFrame.SampleLevel(PassSrg::LinearSampler, tracePrevUV, mip).rgb, 1.0f); - - // fade rays close to screen edge - const float ScreenFadeDistance = 0.95f; - float2 fadeAmount = max(max(0.0f, traceUV - ScreenFadeDistance), max(0.0f, 1.0f - traceUV - ScreenFadeDistance)); - fadeAmount /= (1.0f - ScreenFadeDistance); - float alpha = 1.0f - max(fadeAmount.x, fadeAmount.y); - + // sample reflection color from the mip chain + float3 reflectionColor = SampleReflection(IN.m_texCoord, mip, depth, normalWS, 1.0f / dimensions); + PSOutput OUT; - OUT.m_color = float4(reflectionColor.rgb * specular, alpha); + OUT.m_color = float4(reflectionColor, reflectionData.w); return OUT; } diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionScreenSpaceTrace.azsl b/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionScreenSpaceTrace.azsl index c95befce05..7c18b7f5de 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionScreenSpaceTrace.azsl +++ b/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionScreenSpaceTrace.azsl @@ -10,7 +10,7 @@ #include #include -#include +#include #include #include #include @@ -20,6 +20,18 @@ ShaderResourceGroup PassSrg : SRG_PerPass Texture2DMS m_depth; Texture2DMS m_normal; // RGB10 = Normal (Encoded), A2 = Flags Texture2DMS m_specularF0; // RGB8 = SpecularF0, A8 = Roughness + Texture2DMS m_reflection; + Texture2D m_previousFrame; + + Sampler LinearSampler + { + MinFilter = Linear; + MagFilter = Linear; + MipFilter = Linear; + AddressU = Clamp; + AddressV = Clamp; + AddressW = Clamp; + }; } #include @@ -49,6 +61,12 @@ VSOutput MainVS(VSInput input) } // Pixel Shader +struct PSOutput +{ + float4 m_color : SV_Target0; + float m_depth : SV_Depth; +}; + PSOutput MainPS(VSOutput IN) { // compute screen coords based on a half-res render target @@ -83,16 +101,83 @@ PSOutput MainPS(VSOutput IN) // reflect view ray around surface normal float3 reflectDirVS = normalize(reflect(cameraToPositionVS, normalVS)); + // check to see if the reflected direction is approaching the camera + float rdotv = dot(reflectDirVS, -cameraToPositionVS); + bool fallbackEdge = false; + if (rdotv >= -0.05f) + { + if (rdotv >= 0.0f) + { + // ray points back to camera, fallback to cubemaps + discard; + } + + // ray is approaching the camera direction, but not there yet - trace the reflection and set this + // as a non-reflected pixel, which will prevent artifacts at the boundary + fallbackEdge = true; + } + // trace screenspace rays against the depth buffer to find the screenspace intersection coordinates float4 result = float4(0.0f, 0.0f, 0.0f, 0.0f); float2 hitCoords = float2(0.0f, 0.0f); if (TraceRayScreenSpace(positionVS, reflectDirVS, dimensions, hitCoords)) { - float rdotv = dot(reflectDirVS, cameraToPositionVS); - result = float4(hitCoords, 0.0f, rdotv); + // reconstruct the world space position of the trace coordinates + float2 traceUV = saturate(hitCoords / dimensions); + float traceDepth = PassSrg::m_depth.Load(hitCoords, 0).r; + float2 traceNDC = float2(traceUV.x, 1.0f - traceUV.y) * 2.0f - 1.0f; + float4 traceProjectedPos = float4(traceNDC, traceDepth, 1.0f); + float4 tracePositionVS = mul(ViewSrg::m_projectionMatrixInverse, traceProjectedPos); + tracePositionVS /= tracePositionVS.w; + float4 tracePositionWS = mul(ViewSrg::m_viewMatrixInverse, tracePositionVS); + + // reproject to the previous frame image coordinates + float4 tracePrevNDC = mul(ViewSrg::m_viewProjectionPrevMatrix, tracePositionWS); + tracePrevNDC /= tracePrevNDC.w; + float2 tracePrevUV = float2(tracePrevNDC.x, -1.0f * tracePrevNDC.y) * 0.5f + 0.5f; + + // sample the previous frame image + result.rgb = PassSrg::m_previousFrame.SampleLevel(PassSrg::LinearSampler, tracePrevUV, 0).rgb; + + // apply surface specular + float3 specularF0 = PassSrg::m_specularF0.Load(screenCoords, 0).rgb; + result.rgb *= specularF0; + + // fade rays close to screen edge + const float ScreenFadeDistance = 0.95f; + float2 fadeAmount = max(max(0.0f, traceUV - ScreenFadeDistance), max(0.0f, 1.0f - traceUV - ScreenFadeDistance)); + fadeAmount /= (1.0f - ScreenFadeDistance); + result.a = fallbackEdge ? 0.0f : 1.0f - max(fadeAmount.x, fadeAmount.y); + } + else + { + // ray miss, add in the IBL/probe reflections from the specular pass + float4 positionWS = mul(ViewSrg::m_viewMatrixInverse, positionVS); + float3 cameraToPositionWS = normalize(positionWS - ViewSrg::m_worldPosition); + float3 reflectDirWS = normalize(reflect(cameraToPositionWS, normalWS)); + + result.rgb += PassSrg::m_reflection.Load(screenCoords, 0).rgb; + result.a = fallbackEdge ? 0.0f : 1.0f; + } + + // downsample depth + float downsampledDepth = 0.0f; + for (int y = -2; y < 2; ++y) + { + for (int x = -2; x < 2; ++x) + { + float depth = PassSrg::m_depth.Load(screenCoords + int2(x, y), 0).r; + + // take the closest depth sample (larger depth value due to reverse depth) + if (depth > downsampledDepth) + { + downsampledDepth = depth; + } + } } PSOutput OUT; OUT.m_color = result; + OUT.m_depth = downsampledDepth; return OUT; } diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionScreenSpaceTrace.shader b/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionScreenSpaceTrace.shader index 563e0e3276..3ceabd404a 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionScreenSpaceTrace.shader +++ b/Gems/Atom/Feature/Common/Assets/Shaders/Reflections/ReflectionScreenSpaceTrace.shader @@ -10,7 +10,8 @@ { "Depth" : { - "Enable" : false + "Enable" : true, // required to bind the depth buffer SRV + "CompareFunc" : "Always" } }, diff --git a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/CoreLights/DiskLightFeatureProcessorInterface.h b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/CoreLights/DiskLightFeatureProcessorInterface.h index 5aa2dfb800..98220fae15 100644 --- a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/CoreLights/DiskLightFeatureProcessorInterface.h +++ b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/CoreLights/DiskLightFeatureProcessorInterface.h @@ -86,6 +86,8 @@ namespace AZ virtual void SetShadowsEnabled(LightHandle handle, bool enabled) = 0; //! Sets the shadow bias virtual void SetShadowBias(LightHandle handle, float bias) = 0; + //! Sets the normal shadow bias + virtual void SetNormalShadowBias(LightHandle handle, float bias) = 0; //! Sets the shadowmap size (width and height) of the light. virtual void SetShadowmapMaxResolution(LightHandle handle, ShadowmapSize shadowmapSize) = 0; //! Specifies filter method of shadows. diff --git a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/CoreLights/PointLightFeatureProcessorInterface.h b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/CoreLights/PointLightFeatureProcessorInterface.h index 1a5a776cdf..52b1402b24 100644 --- a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/CoreLights/PointLightFeatureProcessorInterface.h +++ b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/CoreLights/PointLightFeatureProcessorInterface.h @@ -74,6 +74,8 @@ namespace AZ virtual void SetFilteringSampleCount(LightHandle handle, uint16_t count) = 0; //! Sets the Esm exponent to use. Higher values produce a steeper falloff in the border areas between light and shadow. virtual void SetEsmExponent(LightHandle handle, float exponent) = 0; + //! Sets the normal shadow bias. Reduces acne by biasing the shadowmap lookup along the geometric normal. + virtual void SetNormalShadowBias(LightHandle handle, float bias) = 0; //! Sets all of the the point data for the provided LightHandle. virtual void SetPointData(LightHandle handle, const PointLightData& data) = 0; }; diff --git a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Mesh/MeshFeatureProcessor.h b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Mesh/MeshFeatureProcessor.h index 2ac184e2e0..23cd76ca20 100644 --- a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Mesh/MeshFeatureProcessor.h +++ b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Mesh/MeshFeatureProcessor.h @@ -30,7 +30,7 @@ namespace AZ class TransformServiceFeatureProcessor; class RayTracingFeatureProcessor; - class MeshDataInstance + class ModelDataInstance { friend class MeshFeatureProcessor; friend class MeshLoader; @@ -47,7 +47,7 @@ namespace AZ public: using ModelChangedEvent = MeshFeatureProcessorInterface::ModelChangedEvent; - MeshLoader(const Data::Asset& modelAsset, MeshDataInstance* parent); + MeshLoader(const Data::Asset& modelAsset, ModelDataInstance* parent); ~MeshLoader(); ModelChangedEvent& GetModelChangedEvent(); @@ -68,7 +68,7 @@ namespace AZ } }; MeshFeatureProcessorInterface::ModelChangedEvent m_modelChangedEvent; Data::Asset m_modelAsset; - MeshDataInstance* m_parent = nullptr; + ModelDataInstance* m_parent = nullptr; }; void DeInit(); @@ -99,7 +99,8 @@ namespace AZ //! A reference to the original model asset in case it got cloned before creating the model instance. Data::Asset m_originalModelAsset; - Data::Instance m_shaderResourceGroup; + //! List of object SRGs used by meshes in this model + AZStd::vector> m_objectSrgList; AZStd::unique_ptr m_meshLoader; RPI::Scene* m_scene = nullptr; RHI::DrawItemSortKey m_sortKey; @@ -152,7 +153,7 @@ namespace AZ Data::Instance GetModel(const MeshHandle& meshHandle) const override; Data::Asset GetModelAsset(const MeshHandle& meshHandle) const override; - Data::Instance GetObjectSrg(const MeshHandle& meshHandle) const override; + const AZStd::vector>& GetObjectSrgs(const MeshHandle& meshHandle) const override; void QueueObjectSrgForCompile(const MeshHandle& meshHandle) const override; void SetMaterialAssignmentMap(const MeshHandle& meshHandle, const Data::Instance& material) override; void SetMaterialAssignmentMap(const MeshHandle& meshHandle, const MaterialAssignmentMap& materials) override; @@ -195,7 +196,7 @@ namespace AZ void OnRenderPipelineRemoved(RPI::RenderPipeline* pipeline) override; AZStd::concurrency_checker m_meshDataChecker; - StableDynamicArray m_meshData; + StableDynamicArray m_modelData; TransformServiceFeatureProcessor* m_transformService; RayTracingFeatureProcessor* m_rayTracingFeatureProcessor = nullptr; AZ::RPI::ShaderSystemInterface::GlobalShaderOptionUpdatedEvent::Handler m_handleGlobalShaderOptionUpdate; diff --git a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Mesh/MeshFeatureProcessorInterface.h b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Mesh/MeshFeatureProcessorInterface.h index cffbe5c3c5..356b1936ca 100644 --- a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Mesh/MeshFeatureProcessorInterface.h +++ b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Mesh/MeshFeatureProcessorInterface.h @@ -20,7 +20,7 @@ namespace AZ { namespace Render { - class MeshDataInstance; + class ModelDataInstance; //! Settings to apply to a mesh handle when acquiring it for the first time struct MeshHandleDescriptor @@ -40,7 +40,7 @@ namespace AZ public: AZ_RTTI(AZ::Render::MeshFeatureProcessorInterface, "{975D7F0C-2E7E-4819-94D0-D3C4E2024721}", FeatureProcessor); - using MeshHandle = StableDynamicArrayHandle; + using MeshHandle = StableDynamicArrayHandle; using ModelChangedEvent = Event>; //! Acquires a model with an optional collection of material assignments. @@ -61,12 +61,15 @@ namespace AZ virtual Data::Instance GetModel(const MeshHandle& meshHandle) const = 0; //! Gets the underlying RPI::ModelAsset for a meshHandle. virtual Data::Asset GetModelAsset(const MeshHandle& meshHandle) const = 0; - //! Gets the ObjectSrg for a meshHandle. - //! Updating the ObjectSrg should be followed by a call to QueueObjectSrgForCompile, - //! instead of compiling the srg directly. This way, if the srg has already been queued for compile, - //! it will not be queued twice in the same frame. The ObjectSrg should not be updated during + + //! Gets the ObjectSrgs for a meshHandle. + //! Updating the ObjectSrgs should be followed by a call to QueueObjectSrgForCompile, + //! instead of compiling the srgs directly. This way, if the srgs have already been queued for compile, + //! they will not be queued twice in the same frame. The ObjectSrgs should not be updated during //! Simulate, or it will create a race between updating the data and the call to Compile - virtual Data::Instance GetObjectSrg(const MeshHandle& meshHandle) const = 0; + //! Cases where there may be multiple ObjectSrgs: if a model has multiple submeshes and those submeshes use different + //! materials with different object SRGs. + virtual const AZStd::vector>& GetObjectSrgs(const MeshHandle& meshHandle) const = 0; //! Queues the object srg for compile. virtual void QueueObjectSrgForCompile(const MeshHandle& meshHandle) const = 0; //! Sets the MaterialAssignmentMap for a meshHandle, using just a single material for the DefaultMaterialAssignmentId. diff --git a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/ReflectionProbe/ReflectionProbeFeatureProcessor.h b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/ReflectionProbe/ReflectionProbeFeatureProcessor.h index 5efd235a67..ded36f5496 100644 --- a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/ReflectionProbe/ReflectionProbeFeatureProcessor.h +++ b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/ReflectionProbe/ReflectionProbeFeatureProcessor.h @@ -39,6 +39,8 @@ namespace AZ bool IsCubeMapReferenced(const AZStd::string& relativePath) override; bool IsValidProbeHandle(const ReflectionProbeHandle& probe) const override { return (probe.get() != nullptr); } void ShowProbeVisualization(const ReflectionProbeHandle& probe, bool showVisualization) override; + void SetRenderExposure(const ReflectionProbeHandle& probe, float renderExposure) override; + void SetBakeExposure(const ReflectionProbeHandle& probe, float bakeExposure) override; // FeatureProcessor overrides void Activate() override; diff --git a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/ReflectionProbe/ReflectionProbeFeatureProcessorInterface.h b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/ReflectionProbe/ReflectionProbeFeatureProcessorInterface.h index 4eb2130b1b..80c92281ea 100644 --- a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/ReflectionProbe/ReflectionProbeFeatureProcessorInterface.h +++ b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/ReflectionProbe/ReflectionProbeFeatureProcessorInterface.h @@ -50,6 +50,8 @@ namespace AZ virtual bool IsCubeMapReferenced(const AZStd::string& relativePath) = 0; virtual bool IsValidProbeHandle(const ReflectionProbeHandle& probe) const = 0; virtual void ShowProbeVisualization(const ReflectionProbeHandle& probe, bool showVisualization) = 0; + virtual void SetRenderExposure(const ReflectionProbeHandle& probe, float renderExposure) = 0; + virtual void SetBakeExposure(const ReflectionProbeHandle& probe, float bakeExposure) = 0; }; } // namespace Render } // namespace AZ diff --git a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Utils/IndexedDataVector.h b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Utils/IndexedDataVector.h index 82cc1e7d50..b2d483e48c 100644 --- a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Utils/IndexedDataVector.h +++ b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Utils/IndexedDataVector.h @@ -27,31 +27,50 @@ namespace AZ::Render static constexpr IndexType NoFreeSlot = std::numeric_limits::max(); IndexType m_firstFreeSlot = NoFreeSlot; + //! Clears all data and resets to initial state. void Clear(); + + //! Creates a new entry, default-constructs it, and returns an index that references it. IndexType GetFreeSlotIndex(); + + //! Destroys the data referenced by index and frees that index for future use. void RemoveIndex(IndexType index); + + //! Destroys the data and related index by using a pointer to the data itself. void RemoveData(DataType* data); + //! Returns a reference to the data using the provided index. DataType& GetData(IndexType index); const DataType& GetData(IndexType index) const; + + //! Returns a count of how many items are stored in the IndexedDataVector size_t GetDataCount() const; + //! Returns a reference to the internal data vector. + //! This vector should not be altered by calling code or the IndexedDataVector will be corrupted AZStd::vector& GetDataVector(); const AZStd::vector& GetDataVector() const; + + //! Returns a reference to the internal vector. + const AZStd::vector& GetDataToIndexVector() const; - AZStd::vector& GetIndexVector(); - const AZStd::vector& GetIndexVector() const; - + //! Returns the offset into the internal data vector for a given index. IndexType GetRawIndex(IndexType index) const; + + //! Returns the logical index for data given its pointer, which could passed to + //! GetData() to retrieve the data again. IndexType GetIndexForData(const DataType* data) const; private: constexpr static size_t InitialReservedSize = 128; - // Stores data indices and an embedded free list + // Indices to data and an embedded free list in the unused entries AZStd::vector m_indices; - // Stores the indirection index + + // Map of the physical index in m_data to the logical index for that data in m_indices. AZStd::vector m_dataToIndices; + + // The actual data. AZStd::vector m_data; }; } // namespace AZ::Render diff --git a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Utils/IndexedDataVector.inl b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Utils/IndexedDataVector.inl index 581186dbcc..03c3564ce9 100644 --- a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Utils/IndexedDataVector.inl +++ b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Utils/IndexedDataVector.inl @@ -125,13 +125,7 @@ namespace AZ::Render } template - inline AZStd::vector& IndexedDataVector::GetIndexVector() - { - return m_dataToIndices; - } - - template - inline const AZStd::vector& IndexedDataVector::GetIndexVector() const + inline const AZStd::vector& IndexedDataVector::GetDataToIndexVector() const { return m_dataToIndices; } diff --git a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Utils/ModelPreset.h b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Utils/ModelPreset.h index 8bd494dfde..2dd4bed264 100644 --- a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Utils/ModelPreset.h +++ b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Utils/ModelPreset.h @@ -30,7 +30,6 @@ namespace AZ AZStd::string m_displayName; AZ::Data::Asset m_modelAsset; - AZ::Data::Asset m_previewImageAsset; }; using ModelPresetPtr = AZStd::shared_ptr; diff --git a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Utils/MultiIndexedDataVector.h b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Utils/MultiIndexedDataVector.h index a1a6e329b2..c0f11dd159 100644 --- a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Utils/MultiIndexedDataVector.h +++ b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Utils/MultiIndexedDataVector.h @@ -17,7 +17,7 @@ namespace AZ { //! MultiIndexedDataVector is similar to IndexedDataVector but adds support for multiple different data vectors each containing different types //! i.e. structure of (N) arrays - //! See IndexedDataVectorTests.cpp for examples of use + //! See MultiIndexedDataVectorTests.cpp for examples of use template class MultiIndexedDataVector { @@ -199,6 +199,28 @@ namespace AZ { return m_indices.at(index); } + + template + IndexType GetIndexForData(const DataType* data) const + { + if (data >= &AZStd::get(m_data).front() && data <= &AZStd::get(m_data).back()) + { + return m_dataToIndices.at(data - &AZStd::get(m_data).front()); + } + return NoFreeSlot; + } + + template + void ForEach(LambdaType lambda) const + { + for (auto& item : AZStd::get(m_data)) + { + if (!lambda(item)) + { + break; + } + } + } private: using Fn = void(&)(AZStd::vector& ...); diff --git a/Gems/Atom/Feature/Common/Code/Mocks/MockMeshFeatureProcessor.h b/Gems/Atom/Feature/Common/Code/Mocks/MockMeshFeatureProcessor.h index 35e399997f..2c818d3c9b 100644 --- a/Gems/Atom/Feature/Common/Code/Mocks/MockMeshFeatureProcessor.h +++ b/Gems/Atom/Feature/Common/Code/Mocks/MockMeshFeatureProcessor.h @@ -19,7 +19,7 @@ namespace UnitTest MOCK_METHOD1(CloneMesh, MeshHandle(const MeshHandle&)); MOCK_CONST_METHOD1(GetModel, AZStd::intrusive_ptr(const MeshHandle&)); MOCK_CONST_METHOD1(GetModelAsset, AZ::Data::Asset(const MeshHandle&)); - MOCK_CONST_METHOD1(GetObjectSrg, AZStd::intrusive_ptr(const MeshHandle&)); + MOCK_CONST_METHOD1(GetObjectSrgs, const AZStd::vector>&(const MeshHandle&)); MOCK_CONST_METHOD1(QueueObjectSrgForCompile, void(const MeshHandle&)); MOCK_CONST_METHOD1(GetMaterialAssignmentMap, const AZ::Render::MaterialAssignmentMap&(const MeshHandle&)); MOCK_METHOD2(ConnectModelChangeEventHandler, void(const MeshHandle&, ModelChangedEvent::Handler&)); diff --git a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/AuxGeomBase.h b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/AuxGeomBase.h index fe731f4ad6..b329a35977 100644 --- a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/AuxGeomBase.h +++ b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/AuxGeomBase.h @@ -155,8 +155,10 @@ namespace AZ enum AuxGeomShapeType { ShapeType_Sphere, + ShapeType_Hemisphere, ShapeType_Cone, ShapeType_Cylinder, + ShapeType_CylinderNoEnds, // Cylinder without disks on either end ShapeType_Disk, ShapeType_Quad, diff --git a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/AuxGeomDrawQueue.cpp b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/AuxGeomDrawQueue.cpp index b755a6efee..5cc43e9013 100644 --- a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/AuxGeomDrawQueue.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/AuxGeomDrawQueue.cpp @@ -314,15 +314,40 @@ namespace AZ AddShape(style, shape); } - void AuxGeomDrawQueue::DrawSphere( - const AZ::Vector3& center, + Matrix3x3 CreateMatrix3x3FromDirection(const AZ::Vector3& direction) + { + Vector3 unitDirection(direction.GetNormalized()); + Vector3 unitOrthogonal(direction.GetOrthogonalVector().GetNormalized()); + Vector3 unitCross(unitOrthogonal.Cross(unitDirection)); + return Matrix3x3::CreateFromColumns(unitOrthogonal, unitDirection, unitCross); + } + + void AuxGeomDrawQueue::DrawSphere(const AZ::Vector3& center, const AZ::Vector3& direction, float radius, const AZ::Color& color, DrawStyle style, DepthTest depthTest, DepthWrite depthWrite, FaceCullMode faceCull, int32_t viewProjOverrideIndex) + { + DrawSphereCommon(center, direction, radius, color, style, depthTest, depthWrite, faceCull, viewProjOverrideIndex, false); + } + + void AuxGeomDrawQueue::DrawSphere(const AZ::Vector3& center, float radius, const AZ::Color& color, DrawStyle style, DepthTest depthTest, DepthWrite depthWrite, FaceCullMode faceCull, int32_t viewProjOverrideIndex) + { + DrawSphereCommon(center, AZ::Vector3::CreateAxisZ(), radius, color, style, depthTest, depthWrite, faceCull, viewProjOverrideIndex, false); + } + + void AuxGeomDrawQueue::DrawHemisphere(const AZ::Vector3& center, const AZ::Vector3& direction, float radius, const AZ::Color& color, DrawStyle style, DepthTest depthTest, DepthWrite depthWrite, FaceCullMode faceCull, int32_t viewProjOverrideIndex) + { + DrawSphereCommon(center, direction, radius, color, style, depthTest, depthWrite, faceCull, viewProjOverrideIndex, true); + } + + void AuxGeomDrawQueue::DrawSphereCommon( + const AZ::Vector3& center, + const AZ::Vector3& direction, float radius, const AZ::Color& color, DrawStyle style, DepthTest depthTest, DepthWrite depthWrite, FaceCullMode faceCull, - int32_t viewProjOverrideIndex) + int32_t viewProjOverrideIndex, + bool isHemisphere) { if (radius <= 0.0f) { @@ -330,12 +355,12 @@ namespace AZ } ShapeBufferEntry shape; - shape.m_shapeType = ShapeType_Sphere; + shape.m_shapeType = isHemisphere ? ShapeType_Hemisphere : ShapeType_Sphere; shape.m_depthRead = ConvertRPIDepthTestFlag(depthTest); shape.m_depthWrite = ConvertRPIDepthWriteFlag(depthWrite); shape.m_faceCullMode = ConvertRPIFaceCullFlag(faceCull); shape.m_color = color; - shape.m_rotationMatrix = Matrix3x3::CreateIdentity(); + shape.m_rotationMatrix = CreateMatrix3x3FromDirection(direction); shape.m_position = center; shape.m_scale = AZ::Vector3(radius, radius, radius); shape.m_pointSize = m_pointSize; @@ -362,13 +387,9 @@ namespace AZ shape.m_faceCullMode = ConvertRPIFaceCullFlag(faceCull); shape.m_color = color; - Vector3 unitDirection(direction.GetNormalized()); - Vector3 unitOrthogonal(direction.GetOrthogonalVector().GetNormalized()); - Vector3 unitCross(unitOrthogonal.Cross(unitDirection)); - // The disk mesh is created with the top of the disk pointing along the positive Y axis. This creates a // rotation so that the top of the disk will point along the given direction vector. - shape.m_rotationMatrix = Matrix3x3::CreateFromColumns(unitOrthogonal, unitDirection, unitCross); + shape.m_rotationMatrix = CreateMatrix3x3FromDirection(direction); shape.m_position = center; shape.m_scale = AZ::Vector3(radius, 1.0f, radius); shape.m_pointSize = m_pointSize; @@ -401,13 +422,7 @@ namespace AZ shape.m_faceCullMode = ConvertRPIFaceCullFlag(faceCull); shape.m_color = color; - Vector3 unitDirection(direction.GetNormalized()); - Vector3 unitOrthogonal(direction.GetOrthogonalVector().GetNormalized()); - Vector3 unitCross(unitOrthogonal.Cross(unitDirection)); - - // The cone mesh is created with the tip of the cone pointing along the positive Y axis. This creates a - // rotation so that the tip of the cone will point along the given direction vector. - shape.m_rotationMatrix = Matrix3x3::CreateFromColumns(unitOrthogonal, unitDirection, unitCross); + shape.m_rotationMatrix = CreateMatrix3x3FromDirection(direction); shape.m_position = center; shape.m_scale = AZ::Vector3(radius, height, radius); shape.m_pointSize = m_pointSize; @@ -416,17 +431,30 @@ namespace AZ AddShape(style, shape); } - void AuxGeomDrawQueue::DrawCylinder( - const AZ::Vector3& center, - const AZ::Vector3& direction, - float radius, - float height, - const AZ::Color& color, - DrawStyle style, - DepthTest depthTest, - DepthWrite depthWrite, - FaceCullMode faceCull, - int32_t viewProjOverrideIndex) + void AuxGeomDrawQueue::DrawCylinder(const AZ::Vector3& center, const AZ::Vector3& direction, float radius, float height, const AZ::Color& color, + DrawStyle style, DepthTest depthTest, DepthWrite depthWrite, FaceCullMode faceCull, int32_t viewProjOverrideIndex) + { + DrawCylinderCommon(center, direction, radius, height, color, style, depthTest, depthWrite, faceCull, viewProjOverrideIndex, true); + } + + void AuxGeomDrawQueue::DrawCylinderNoEnds(const AZ::Vector3& center, const AZ::Vector3& direction, float radius, float height, const AZ::Color& color, + DrawStyle style, DepthTest depthTest, DepthWrite depthWrite, FaceCullMode faceCull, int32_t viewProjOverrideIndex) + { + DrawCylinderCommon(center, direction, radius, height, color, style, depthTest, depthWrite, faceCull, viewProjOverrideIndex, false); + } + + void AuxGeomDrawQueue::DrawCylinderCommon( + const AZ::Vector3& center, + const AZ::Vector3& direction, + float radius, + float height, + const AZ::Color& color, + DrawStyle style, + DepthTest depthTest, + DepthWrite depthWrite, + FaceCullMode faceCull, + int32_t viewProjOverrideIndex, + bool drawEnds) { if (radius <= 0.0f || height <= 0.0f) { @@ -434,19 +462,15 @@ namespace AZ } ShapeBufferEntry shape; - shape.m_shapeType = ShapeType_Cylinder; - shape.m_depthRead = ConvertRPIDepthTestFlag(depthTest); + shape.m_shapeType = drawEnds ? ShapeType_Cylinder : ShapeType_CylinderNoEnds; + shape.m_depthRead = ConvertRPIDepthTestFlag(depthTest); shape.m_depthWrite = ConvertRPIDepthWriteFlag(depthWrite); shape.m_faceCullMode = ConvertRPIFaceCullFlag(faceCull); shape.m_color = color; - Vector3 unitDirection(direction.GetNormalized()); - Vector3 unitOrthogonal(direction.GetOrthogonalVector().GetNormalized()); - Vector3 unitCross(unitOrthogonal.Cross(unitDirection)); - // The cylinder mesh is created with the top end cap of the cylinder facing along the positive Y axis. This creates a // rotation so that the top face of the cylinder will face along the given direction vector. - shape.m_rotationMatrix = Matrix3x3::CreateFromColumns(unitOrthogonal, unitDirection, unitCross); + shape.m_rotationMatrix = CreateMatrix3x3FromDirection(direction); shape.m_position = center; shape.m_scale = AZ::Vector3(radius, height, radius); shape.m_pointSize = m_pointSize; diff --git a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/AuxGeomDrawQueue.h b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/AuxGeomDrawQueue.h index 535a992fe0..7fa1bbdca8 100644 --- a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/AuxGeomDrawQueue.h +++ b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/AuxGeomDrawQueue.h @@ -60,9 +60,12 @@ namespace AZ // Fixed shape draws void DrawQuad(float width, float height, const AZ::Matrix3x4& transform, const AZ::Color& color, DrawStyle style, DepthTest depthTest, DepthWrite depthWrite, FaceCullMode faceCull, int32_t viewProjOverrideIndex) override; void DrawSphere(const AZ::Vector3& center, float radius, const AZ::Color& color, DrawStyle style, DepthTest depthTest, DepthWrite depthWrite, FaceCullMode faceCull, int32_t viewProjOverrideIndex) override; + void DrawSphere(const AZ::Vector3& center, const AZ::Vector3& direction, float radius, const AZ::Color& color, DrawStyle style, DepthTest depthTest, DepthWrite depthWrite, FaceCullMode faceCull, int32_t viewProjOverrideIndex) override; + void DrawHemisphere(const AZ::Vector3& center, const AZ::Vector3& direction, float radius, const AZ::Color& color, DrawStyle style, DepthTest depthTest, DepthWrite depthWrite, FaceCullMode faceCull, int32_t viewProjOverrideIndex) override; void DrawDisk(const AZ::Vector3& center, const AZ::Vector3& direction, float radius, const AZ::Color& color, DrawStyle style, DepthTest depthTest, DepthWrite depthWrite, FaceCullMode faceCull, int32_t viewProjOverrideIndex) override; void DrawCone(const AZ::Vector3& center, const AZ::Vector3& direction, float radius, float height, const AZ::Color& color, DrawStyle style, DepthTest depthTest, DepthWrite depthWrite, FaceCullMode faceCull, int32_t viewProjOverrideIndex) override; void DrawCylinder(const AZ::Vector3& center, const AZ::Vector3& direction, float radius, float height, const AZ::Color& color, DrawStyle style, DepthTest depthTest, DepthWrite depthWrite, FaceCullMode faceCull, int32_t viewProjOverrideIndex) override; + void DrawCylinderNoEnds(const AZ::Vector3& center, const AZ::Vector3& direction, float radius, float height, const AZ::Color& color, DrawStyle style, DepthTest depthTest, DepthWrite depthWrite, FaceCullMode faceCull, int32_t viewProjOverrideIndex) override; void DrawAabb(const AZ::Aabb& aabb, const AZ::Color& color, DrawStyle style, DepthTest depthTest, DepthWrite depthWrite, FaceCullMode faceCull, int32_t viewProjOverrideIndex) override; void DrawAabb(const AZ::Aabb& aabb, const AZ::Matrix3x4& transform, const AZ::Color& color, DrawStyle style, DepthTest depthTest, DepthWrite depthWrite, FaceCullMode faceCull, int32_t viewProjOverrideIndex) override; void DrawObb(const AZ::Obb& obb, const AZ::Vector3& position, const AZ::Color& color, DrawStyle style, DepthTest depthTest, DepthWrite depthWrite, FaceCullMode faceCull, int32_t viewProjOverrideIndex) override; @@ -73,6 +76,9 @@ namespace AZ private: // functions + void DrawCylinderCommon(const AZ::Vector3& center, const AZ::Vector3& direction, float radius, float height, const AZ::Color& color, DrawStyle style, DepthTest depthTest, DepthWrite depthWrite, FaceCullMode faceCull, int32_t viewProjOverrideIndex, bool drawEnds); + void DrawSphereCommon(const AZ::Vector3& center, const AZ::Vector3& direction, float radius, const AZ::Color& color, DrawStyle style, DepthTest depthTest, DepthWrite depthWrite, FaceCullMode faceCull, int32_t viewProjOverrideIndex, bool isHemisphere); + //! Clear the current buffers void ClearCurrentBufferData(); diff --git a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/FixedShapeProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/FixedShapeProcessor.cpp index c2ee397b4c..2e7c0759db 100644 --- a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/FixedShapeProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/FixedShapeProcessor.cpp @@ -10,6 +10,7 @@ #include "AuxGeomDrawProcessorShared.h" #include +#include #include #include @@ -69,11 +70,13 @@ namespace AZ SetupInputStreamLayout(m_objectStreamLayout[DrawStyle_Solid], RHI::PrimitiveTopology::TriangleList, false); SetupInputStreamLayout(m_objectStreamLayout[DrawStyle_Shaded], RHI::PrimitiveTopology::TriangleList, true); - CreateSphereBuffersAndViews(); + CreateSphereBuffersAndViews(AuxGeomShapeType::ShapeType_Sphere); + CreateSphereBuffersAndViews(AuxGeomShapeType::ShapeType_Hemisphere); CreateQuadBuffersAndViews(); CreateDiskBuffersAndViews(); CreateConeBuffersAndViews(); - CreateCylinderBuffersAndViews(); + CreateCylinderBuffersAndViews(AuxGeomShapeType::ShapeType_Cylinder); + CreateCylinderBuffersAndViews(AuxGeomShapeType::ShapeType_CylinderNoEnds); CreateBoxBuffersAndViews(); // cache scene pointer for RHI::PipelineState creation. @@ -293,8 +296,11 @@ namespace AZ } } - bool FixedShapeProcessor::CreateSphereBuffersAndViews() + bool FixedShapeProcessor::CreateSphereBuffersAndViews(AuxGeomShapeType sphereShapeType) { + AZ_Assert(sphereShapeType == ShapeType_Sphere || sphereShapeType == ShapeType_Hemisphere, + "Trying to create sphere buffers and views with a non-sphere shape type!"); + const uint32_t numSphereLods = 5; struct LodInfo { @@ -311,13 +317,13 @@ namespace AZ { 9, 9, 0.0000f} }}; - auto& m_shape = m_shapes[ShapeType_Sphere]; + auto& m_shape = m_shapes[sphereShapeType]; m_shape.m_numLods = numSphereLods; for (uint32_t lodIndex = 0; lodIndex < numSphereLods; ++lodIndex) { MeshData meshData; - CreateSphereMeshData(meshData, lodInfo[lodIndex].numRings, lodInfo[lodIndex].numSections); + CreateSphereMeshData(meshData, lodInfo[lodIndex].numRings, lodInfo[lodIndex].numSections, sphereShapeType); ObjectBuffers objectBuffers; @@ -334,12 +340,25 @@ namespace AZ return true; } - void FixedShapeProcessor::CreateSphereMeshData(MeshData& meshData, uint32_t numRings, uint32_t numSections) + void FixedShapeProcessor::CreateSphereMeshData(MeshData& meshData, uint32_t numRings, uint32_t numSections, AuxGeomShapeType sphereShapeType) { const float radius = 1.0f; + // calculate "inner" vertices + float sectionAngle(DegToRad(360.0f / static_cast(numSections))); + float ringSlice(DegToRad(180.0f / static_cast(numRings))); + + uint32_t numberOfPoles = 2; + + if (sphereShapeType == ShapeType_Hemisphere) + { + numberOfPoles = 1; + numRings = (numRings + 1) / 2; + ringSlice = DegToRad(90.0f / static_cast(numRings)); + } + // calc required number of vertices/indices/triangles to build a sphere for the given parameters - uint32_t numVertices = (numRings - 1) * numSections + 2; + uint32_t numVertices = (numRings - 1) * numSections + numberOfPoles; // setup buffers auto& positions = meshData.m_positions; @@ -354,30 +373,29 @@ namespace AZ using NormalType = AuxGeomNormal; // 1st pole vertex - positions.push_back(PosType(0.0f, 0.0f, radius)); - normals.push_back(NormalType(0.0f, 0.0f, 1.0f)); + positions.push_back(PosType(0.0f, radius, 0.0f)); + normals.push_back(NormalType(0.0f, 1.0f, 0.0f)); - // calculate "inner" vertices - float sectionAngle(DegToRad(360.0f / static_cast(numSections))); - float ringSlice(DegToRad(180.0f / static_cast(numRings))); - - for (uint32_t ring = 1; ring < numRings; ++ring) + for (uint32_t ring = 1; ring < numRings - numberOfPoles + 2; ++ring) { float w(sinf(ring * ringSlice)); for (uint32_t section = 0; section < numSections; ++section) { float x = radius * cosf(section * sectionAngle) * w; - float y = radius * sinf(section * sectionAngle) * w; - float z = radius * cosf(ring * ringSlice); + float y = radius * cosf(ring * ringSlice); + float z = radius * sinf(section * sectionAngle) * w; Vector3 radialVector(x, y, z); positions.push_back(radialVector); normals.push_back(radialVector.GetNormalized()); } } - // 2nd vertex of pole (for end cap) - positions.push_back(PosType(0.0f, 0.0f, -radius)); - normals.push_back(NormalType(0.0f, 0.0f, -1.0f)); + if (sphereShapeType == ShapeType_Sphere) + { + // 2nd vertex of pole (for end cap) + positions.push_back(PosType(0.0f, -radius, 0.0f)); + normals.push_back(NormalType(0.0f, -1.0f, 0.0f)); + } // point indices { @@ -393,7 +411,8 @@ namespace AZ // line indices { - const uint32_t numEdges = (numRings - 2) * numSections * 2 + 2 * numSections * 2; + // NumEdges = NumRingEdges + NumSectionEdges = (numRings * numSections) + (numRings * numSections) + const uint32_t numEdges = numRings * numSections * 2; const uint32_t numLineIndices = numEdges * 2; // build "inner" faces @@ -401,10 +420,9 @@ namespace AZ indices.clear(); indices.reserve(numLineIndices); - for (uint16_t ring = 0; ring < numRings - 2; ++ring) + for (uint16_t ring = 0; ring < numRings - numberOfPoles + 1; ++ring) { uint16_t firstVertOfThisRing = static_cast(1 + ring * numSections); - uint16_t firstVertOfNextRing = static_cast(1 + (ring + 1) * numSections); for (uint16_t section = 0; section < numSections; ++section) { uint32_t nextSection = (section + 1) % numSections; @@ -414,32 +432,33 @@ namespace AZ indices.push_back(static_cast(firstVertOfThisRing + nextSection)); // line around section - indices.push_back(firstVertOfThisRing + section); - indices.push_back(firstVertOfNextRing + section); + int currentVertexIndex = firstVertOfThisRing + section; + // max 0 will implicitly handle the top pole + int previousVertexIndex = AZStd::max(currentVertexIndex - (int)numSections, 0); + indices.push_back(static_cast(currentVertexIndex)); + indices.push_back(static_cast(previousVertexIndex)); } } - // build faces for end caps (to connect "inner" vertices with poles) - uint16_t firstPoleVert = 0; - uint16_t firstVertOfFirstRing = static_cast(1 + (0) * numSections); - for (uint16_t section = 0; section < numSections; ++section) + if (sphereShapeType == ShapeType_Sphere) { - indices.push_back(firstPoleVert); - indices.push_back(firstVertOfFirstRing + section); - } - - uint16_t lastPoleVert = static_cast((numRings - 1) * numSections + 1); - uint16_t firstVertOfLastRing = static_cast(1 + (numRings - 2) * numSections); - for (uint16_t section = 0; section < numSections; ++section) - { - indices.push_back(firstVertOfLastRing + section); - indices.push_back(lastPoleVert); + // build faces for bottom pole (to connect "inner" vertices with poles) + uint16_t lastPoleVert = static_cast((numRings - 1) * numSections + 1); + uint16_t firstVertOfLastRing = static_cast(1 + (numRings - 2) * numSections); + for (uint16_t section = 0; section < numSections; ++section) + { + indices.push_back(firstVertOfLastRing + section); + indices.push_back(lastPoleVert); + } } } // triangle indices { - const uint32_t numTriangles = (numRings - 2) * numSections * 2 + 2 * numSections; + // NumTriangles = NumTrianglesAtPoles + NumQuads * 2 + // = (numSections * 2) + ((numRings - 2) * numSections * 2) + // = (numSections * 2) * (numRings - 2 + 1) + const uint32_t numTriangles = (numRings - 1) * numSections * 2; const uint32_t numTriangleIndices = numTriangles * 3; // build "inner" faces @@ -447,10 +466,10 @@ namespace AZ indices.clear(); indices.reserve(numTriangleIndices); - for (uint32_t ring = 0; ring < numRings - 2; ++ring) + for (uint32_t ring = 0; ring < numRings - numberOfPoles; ++ring) { uint32_t firstVertOfThisRing = 1 + ring * numSections; - uint32_t firstVertOfNextRing = 1 + (ring + 1) * numSections; + uint32_t firstVertOfNextRing = firstVertOfThisRing + numSections; for (uint32_t section = 0; section < numSections; ++section) { @@ -476,14 +495,17 @@ namespace AZ indices.push_back(static_cast(firstPoleVert)); } - uint32_t lastPoleVert = (numRings - 1) * numSections + 1; - uint32_t firstVertOfLastRing = 1 + (numRings - 2) * numSections; - for (uint32_t section = 0; section < numSections; ++section) + if (sphereShapeType == ShapeType_Sphere) { - uint32_t nextSection = (section + 1) % numSections; - indices.push_back(static_cast(firstVertOfLastRing + nextSection)); - indices.push_back(static_cast(firstVertOfLastRing + section)); - indices.push_back(static_cast(lastPoleVert)); + uint32_t lastPoleVert = (numRings - 1) * numSections + 1; + uint32_t firstVertOfLastRing = 1 + (numRings - 2) * numSections; + for (uint32_t section = 0; section < numSections; ++section) + { + uint32_t nextSection = (section + 1) % numSections; + indices.push_back(static_cast(firstVertOfLastRing + nextSection)); + indices.push_back(static_cast(firstVertOfLastRing + section)); + indices.push_back(static_cast(lastPoleVert)); + } } } } @@ -827,8 +849,11 @@ namespace AZ } } - bool FixedShapeProcessor::CreateCylinderBuffersAndViews() + bool FixedShapeProcessor::CreateCylinderBuffersAndViews(AuxGeomShapeType cylinderShapeType) { + AZ_Assert(cylinderShapeType == ShapeType_Cylinder || cylinderShapeType == ShapeType_CylinderNoEnds, + "Trying to create cylinder buffers and views with a non-cylinder shape type!"); + const uint32_t numCylinderLods = 5; struct LodInfo { @@ -836,21 +861,21 @@ namespace AZ float screenPercentage; }; const AZStd::array lodInfo = - {{ + { { { 38, 0.1000f}, { 22, 0.0100f}, { 14, 0.0010f}, { 10, 0.0001f}, { 8, 0.0000f} - }}; + } }; - auto& m_shape = m_shapes[ShapeType_Cylinder]; + auto& m_shape = m_shapes[cylinderShapeType]; m_shape.m_numLods = numCylinderLods; for (uint32_t lodIndex = 0; lodIndex < numCylinderLods; ++lodIndex) { MeshData meshData; - CreateCylinderMeshData(meshData, lodInfo[lodIndex].numSections); + CreateCylinderMeshData(meshData, lodInfo[lodIndex].numSections, cylinderShapeType); ObjectBuffers objectBuffers; @@ -867,13 +892,25 @@ namespace AZ return true; } - void FixedShapeProcessor::CreateCylinderMeshData(MeshData& meshData, uint32_t numSections) + void FixedShapeProcessor::CreateCylinderMeshData(MeshData& meshData, uint32_t numSections, AuxGeomShapeType cylinderShapeType) { const float radius = 1.0f; const float height = 1.0f; + //uint16_t indexOfBottomCenter = 0; + //uint16_t indexOfBottomStart = 1; + //uint16_t indexOfTopCenter = numSections + 1; + //uint16_t indexOfTopStart = numSections + 2; + uint16_t indexOfSidesStart = static_cast(2 * numSections + 2); + + if (cylinderShapeType == ShapeType_CylinderNoEnds) + { + // We won't draw disks at the ends of the cylinder, so no need to offset side indices + indexOfSidesStart = 0; + } + // calc required number of vertices to build a cylinder for the given parameters - uint32_t numVertices = 4 * numSections + 2; + uint32_t numVertices = indexOfSidesStart + 2 * numSections; // setup buffers auto& positions = meshData.m_positions; @@ -888,8 +925,11 @@ namespace AZ float topHeight = height * 0.5f; // Create caps - CreateDiskMeshData(meshData, numSections, Facing::Down, bottomHeight); - CreateDiskMeshData(meshData, numSections, Facing::Up, topHeight); + if (cylinderShapeType == ShapeType_Cylinder) + { + CreateDiskMeshData(meshData, numSections, Facing::Down, bottomHeight); + CreateDiskMeshData(meshData, numSections, Facing::Up, topHeight); + } // create vertices for side (so normal points out correctly) float sectionAngle(DegToRad(360.0f / (float)numSections)); @@ -906,12 +946,6 @@ namespace AZ normals.push_back(normal); } - //uint16_t indexOfBottomCenter = 0; - //uint16_t indexOfBottomStart = 1; - //uint16_t indexOfTopCenter = numSections + 1; - //uint16_t indexOfTopStart = numSections + 2; - uint16_t indexOfSidesStart = static_cast(2 * numSections + 2); - // build point indices { auto& indices = meshData.m_pointIndices; @@ -930,6 +964,24 @@ namespace AZ indices.push_back(indexOfSidesStart + 2 * section); indices.push_back(indexOfSidesStart + 2 * section + 1); } + + // If we're not drawing the disks at the ends of the cylinder, we still want to + // draw a ring around the end to join the tips of lines we created just above + if (cylinderShapeType == ShapeType_CylinderNoEnds) + { + for (uint16_t section = 0; section < numSections; ++section) + { + uint16_t nextSection = (section + 1) % numSections; + + // line around the bottom cap + indices.push_back(section * 2); + indices.push_back(nextSection * 2); + + // line around the top cap + indices.push_back(section * 2 + 1); + indices.push_back(nextSection * 2 + 1); + } + } } // indices for triangles diff --git a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/FixedShapeProcessor.h b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/FixedShapeProcessor.h index 4007d62f66..958cee3143 100644 --- a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/FixedShapeProcessor.h +++ b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/FixedShapeProcessor.h @@ -138,8 +138,8 @@ namespace AZ Both, }; - bool CreateSphereBuffersAndViews(); - void CreateSphereMeshData(MeshData& meshData, uint32_t numRings, uint32_t numSections); + bool CreateSphereBuffersAndViews(AuxGeomShapeType sphereShapeType); + void CreateSphereMeshData(MeshData& meshData, uint32_t numRings, uint32_t numSections, AuxGeomShapeType sphereShapeType); bool CreateQuadBuffersAndViews(); void CreateQuadMeshDataSide(MeshData& meshData, bool isUp, bool drawLines); @@ -152,8 +152,8 @@ namespace AZ bool CreateConeBuffersAndViews(); void CreateConeMeshData(MeshData& meshData, uint32_t numRings, uint32_t numSections); - bool CreateCylinderBuffersAndViews(); - void CreateCylinderMeshData(MeshData& meshData, uint32_t numSections); + bool CreateCylinderBuffersAndViews(AuxGeomShapeType cylinderShapeType); + void CreateCylinderMeshData(MeshData& meshData, uint32_t numSections, AuxGeomShapeType cylinderShapeType); bool CreateBoxBuffersAndViews(); void CreateBoxMeshData(MeshData& meshData); diff --git a/Gems/Atom/Feature/Common/Code/Source/CommonSystemComponent.cpp b/Gems/Atom/Feature/Common/Code/Source/CommonSystemComponent.cpp index 2e5db39880..c3c189eb62 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CommonSystemComponent.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/CommonSystemComponent.cpp @@ -100,6 +100,7 @@ #include #include #include +#include #include #include #include @@ -292,6 +293,7 @@ namespace AZ passSystem->AddPassCreator(Name("DeferredFogPass"), &DeferredFogPass::Create); // Add Reflection passes + passSystem->AddPassCreator(Name("ReflectionScreenSpaceTracePass"), &Render::ReflectionScreenSpaceTracePass::Create); passSystem->AddPassCreator(Name("ReflectionScreenSpaceBlurPass"), &Render::ReflectionScreenSpaceBlurPass::Create); passSystem->AddPassCreator(Name("ReflectionScreenSpaceBlurChildPass"), &Render::ReflectionScreenSpaceBlurChildPass::Create); passSystem->AddPassCreator(Name("ReflectionScreenSpaceCompositePass"), &Render::ReflectionScreenSpaceCompositePass::Create); diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/DirectionalLightFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/CoreLights/DirectionalLightFeatureProcessor.cpp index b6c6910fd3..8a1ff95f29 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/DirectionalLightFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/DirectionalLightFeatureProcessor.cpp @@ -343,7 +343,6 @@ namespace AZ m_shadowBufferNeedsUpdate = true; m_shadowProperties.GetData(index).m_cameraConfigurations[nullptr] = {}; - m_shadowProperties.GetData(index).m_cameraTransforms[nullptr] = Transform::CreateIdentity(); const LightHandle handle(index); m_shadowingLightHandle = handle; // only the recent light has shadows. @@ -495,20 +494,10 @@ namespace AZ void DirectionalLightFeatureProcessor::SetCameraTransform( LightHandle handle, - const Transform& cameraTransform, - const RPI::RenderPipelineId& renderPipelineId) + const Transform&, + const RPI::RenderPipelineId&) { ShadowProperty& property = m_shadowProperties.GetData(handle.GetIndex()); - - if (RPI::RenderPipeline* renderPipeline = GetParentScene()->GetRenderPipeline(renderPipelineId).get()) - { - const RPI::View* cameraView = renderPipeline->GetDefaultView().get(); - property.m_cameraTransforms[cameraView] = cameraTransform; - } - else - { - property.m_cameraTransforms[nullptr] = cameraTransform; - } property.m_shadowmapViewNeedsUpdate = true; } @@ -934,17 +923,6 @@ namespace AZ return property.m_cameraConfigurations.at(nullptr); } - const Transform& DirectionalLightFeatureProcessor::GetCameraTransform(LightHandle handle, const RPI::View* cameraView) const - { - const ShadowProperty& property = m_shadowProperties.GetData(handle.GetIndex()); - const auto findIt = property.m_cameraTransforms.find(cameraView); - if (findIt != property.m_cameraTransforms.end()) - { - return findIt->second; - } - return property.m_cameraTransforms.at(nullptr); - } - void DirectionalLightFeatureProcessor::UpdateFrustums( LightHandle handle) { @@ -1056,7 +1034,7 @@ namespace AZ // if the shadow is rendering in an EnvironmentCubeMapPass it also needs to be a ReflectiveCubeMap view, // to filter out shadows from objects that are excluded from the cubemap RPI::PassFilter passFilter = RPI::PassFilter::CreateWithPassClass(); - passFilter.SetOwenrScene(GetParentScene()); // only handles passes for this scene + passFilter.SetOwnerScene(GetParentScene()); // only handles passes for this scene RPI::PassSystemInterface::Get()->ForEachPass(passFilter, [&usageFlags]([[maybe_unused]] RPI::Pass* pass) -> RPI::PassFilterExecutionFlow { usageFlags |= RPI::View::UsageReflectiveCubeMap; @@ -1248,6 +1226,32 @@ namespace AZ property.m_shadowmapViewNeedsUpdate = true; } + float DirectionalLightFeatureProcessor::GetShadowmapSizeFromCameraView(const LightHandle handle, const RPI::View* cameraView) const + { + const DirectionalLightShadowData& shadowData = m_shadowData.at(cameraView).GetData(handle.GetIndex()); + return static_cast(shadowData.m_shadowmapSize); + } + + void DirectionalLightFeatureProcessor::SnapAabbToPixelIncrements(const float invShadowmapSize, Vector3& orthoMin, Vector3& orthoMax) + { + // This function stops the cascaded shadowmap from shimmering as the camera moves. + // See CascadedShadowsManager.cpp in the Microsoft CascadedShadowMaps11 sample for details. + + const Vector3 normalizeByBufferSize = Vector3(invShadowmapSize, invShadowmapSize, invShadowmapSize); + + const Vector3 worldUnitsPerTexel = (orthoMax - orthoMin) * normalizeByBufferSize; + + // We snap the camera to 1 pixel increments so that moving the camera does not cause the shadows to jitter. + // This is a matter of dividing by the world space size of a texel + orthoMin /= worldUnitsPerTexel; + orthoMin = orthoMin.GetFloor(); + orthoMin *= worldUnitsPerTexel; + + orthoMax /= worldUnitsPerTexel; + orthoMax = orthoMax.GetFloor(); + orthoMax *= worldUnitsPerTexel; + } + void DirectionalLightFeatureProcessor::UpdateShadowmapViews(LightHandle handle) { ShadowProperty& property = m_shadowProperties.GetData(handle.GetIndex()); @@ -1259,18 +1263,26 @@ namespace AZ for (auto& segmentIt : property.m_segments) { + const float invShadowmapSize = 1.0f / GetShadowmapSizeFromCameraView(handle, segmentIt.first); + for (uint16_t cascadeIndex = 0; cascadeIndex < segmentIt.second.size(); ++cascadeIndex) { - const Aabb viewAabb = CalculateShadowViewAabb( - handle, segmentIt.first, cascadeIndex, lightTransform); + const Aabb viewAabb = CalculateShadowViewAabb(handle, segmentIt.first, cascadeIndex, lightTransform); if (viewAabb.IsValid() && viewAabb.IsFinite()) { + const float cascadeNear = viewAabb.GetMin().GetY(); + const float cascadeFar = viewAabb.GetMax().GetY(); + + Vector3 snappedAabbMin = viewAabb.GetMin(); + Vector3 snappedAabbMax = viewAabb.GetMax(); + + SnapAabbToPixelIncrements(invShadowmapSize, snappedAabbMin, snappedAabbMax); + Matrix4x4 viewToClipMatrix = Matrix4x4::CreateIdentity(); - MakeOrthographicMatrixRH(viewToClipMatrix, - viewAabb.GetMin().GetElement(0), viewAabb.GetMax().GetElement(0), - viewAabb.GetMin().GetElement(2), viewAabb.GetMax().GetElement(2), - viewAabb.GetMin().GetElement(1), viewAabb.GetMax().GetElement(1)); + MakeOrthographicMatrixRH( + viewToClipMatrix, snappedAabbMin.GetElement(0), snappedAabbMax.GetElement(0), snappedAabbMin.GetElement(2), + snappedAabbMax.GetElement(2), cascadeNear, cascadeFar); CascadeSegment& segment = segmentIt.second[cascadeIndex]; segment.m_aabb = viewAabb; @@ -1331,10 +1343,11 @@ namespace AZ // If we used an AABB whose Y-direction range is from a segment, // the depth value on the shadowmap saturated to 0 or 1, // and we could not draw shadow correctly. + const Transform cameraTransform = cameraView->GetCameraTransform(); const Vector3 entireFrustumCenterLight = - lightTransform.GetInverseFast() * (GetCameraTransform(handle, cameraView).TransformPoint(property.m_entireFrustumCenterLocal)); + lightTransform.GetInverseFast() * (cameraTransform.TransformPoint(property.m_entireFrustumCenterLocal)); const float entireCenterY = entireFrustumCenterLight.GetElement(1); - const Vector3 cameraLocationWorld = GetCameraTransform(handle, cameraView).GetTranslation(); + const Vector3 cameraLocationWorld = cameraTransform.GetTranslation(); const Vector3 cameraLocationLight = lightTransformInverse * cameraLocationWorld; // Extend light view frustum by camera depth far in order to avoid shadow lacking behind camera. const float cameraBehindMinY = cameraLocationLight.GetElement(1) - GetCameraConfiguration(handle, cameraView).GetDepthFar(); @@ -1394,8 +1407,8 @@ namespace AZ GetCameraConfiguration(handle, cameraView).GetDepthCenter(depthNear, depthFar), depthFar); - const Vector3 localCenter{ 0.f, depthCenter, 0.f }; - return GetCameraTransform(handle, cameraView).TransformPoint(localCenter); + const Vector3 localCenter{ 0.f, depthCenter, 0.f }; + return cameraView->GetCameraTransform().TransformPoint(localCenter); } float DirectionalLightFeatureProcessor::GetRadius( @@ -1449,7 +1462,7 @@ namespace AZ const ShadowProperty& property = m_shadowProperties.GetData(handle.GetIndex()); const Vector3& boundaryCenter = GetWorldCenterPosition(handle, cameraView, depthNear, depthFar); const CascadeShadowCameraConfiguration& cameraConfiguration = GetCameraConfiguration(handle, cameraView); - const Transform& cameraTransform = GetCameraTransform(handle, cameraView); + const Transform cameraTransform = cameraView->GetCameraTransform(); const Vector3& cameraFwd = cameraTransform.GetBasis(1); const Vector3& cameraUp = cameraTransform.GetBasis(2); const Vector3 cameraToBoundaryCenter = boundaryCenter - cameraTransform.GetTranslation(); diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/DirectionalLightFeatureProcessor.h b/Gems/Atom/Feature/Common/Code/Source/CoreLights/DirectionalLightFeatureProcessor.h index 8d7a9d76e4..c206a5097f 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/DirectionalLightFeatureProcessor.h +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/DirectionalLightFeatureProcessor.h @@ -134,9 +134,6 @@ namespace AZ // Default far depth of each cascade. AZStd::array m_defaultFarDepths; - // Transforms of camera who offers view frustum for each camera view. - AZStd::unordered_map m_cameraTransforms; - // Configuration offers shape of the camera view frustum for each camera view. AZStd::unordered_map m_cameraConfigurations; @@ -259,11 +256,6 @@ namespace AZ //! it returns one of the fallback render pipeline ID. const CascadeShadowCameraConfiguration& GetCameraConfiguration(LightHandle handle, const RPI::View* cameraView) const; - //! This returns the camera transform. - //! If it has not been registered for the given camera view. - //! it returns one of the fallback render pipeline ID. - const Transform& GetCameraTransform(LightHandle handle, const RPI::View* cameraView) const; - //! This update view frustum of camera. void UpdateFrustums(LightHandle handle); @@ -341,6 +333,9 @@ namespace AZ //! This draws bounding boxes of cascades. void DrawCascadeBoundingBoxes(LightHandle handle); + float GetShadowmapSizeFromCameraView(const LightHandle handle, const RPI::View* cameraView) const; + void SnapAabbToPixelIncrements(const float invShadowmapSize, Vector3& orthoMin, Vector3& orthoMax); + IndexedDataVector m_shadowProperties; // [GFX TODO][ATOM-2012] shadow for multiple directional lights LightHandle m_shadowingLightHandle; diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/DiskLightFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/CoreLights/DiskLightFeatureProcessor.cpp index acf81ede32..e362ee3afc 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/DiskLightFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/DiskLightFeatureProcessor.cpp @@ -313,6 +313,11 @@ namespace AZ SetShadowSetting(handle, &ProjectedShadowFeatureProcessor::SetShadowBias, bias); } + void DiskLightFeatureProcessor::SetNormalShadowBias(LightHandle handle, float bias) + { + SetShadowSetting(handle, &ProjectedShadowFeatureProcessor::SetNormalShadowBias, bias); + } + void DiskLightFeatureProcessor::SetShadowmapMaxResolution(LightHandle handle, ShadowmapSize shadowmapSize) { SetShadowSetting(handle, &ProjectedShadowFeatureProcessor::SetShadowmapMaxResolution, shadowmapSize); diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/DiskLightFeatureProcessor.h b/Gems/Atom/Feature/Common/Code/Source/CoreLights/DiskLightFeatureProcessor.h index 275712f84f..bafddacc65 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/DiskLightFeatureProcessor.h +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/DiskLightFeatureProcessor.h @@ -51,6 +51,7 @@ namespace AZ void SetConeAngles(LightHandle handle, float innerDegrees, float outerDegrees) override; void SetShadowsEnabled(LightHandle handle, bool enabled) override; void SetShadowBias(LightHandle handle, float bias) override; + void SetNormalShadowBias(LightHandle handle, float bias) override; void SetShadowmapMaxResolution(LightHandle handle, ShadowmapSize shadowmapSize) override; void SetShadowFilterMethod(LightHandle handle, ShadowFilterMethod method) override; void SetFilteringSampleCount(LightHandle handle, uint16_t count) override; diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/PointLightFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/CoreLights/PointLightFeatureProcessor.cpp index dcf412c35d..c5d6c3bf78 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/PointLightFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/PointLightFeatureProcessor.cpp @@ -302,5 +302,10 @@ namespace AZ SetShadowSetting(handle, &ProjectedShadowFeatureProcessor::SetEsmExponent, esmExponent); } + void PointLightFeatureProcessor::SetNormalShadowBias(LightHandle handle, float bias) + { + SetShadowSetting(handle, &ProjectedShadowFeatureProcessor::SetNormalShadowBias, bias); + } + } // namespace Render } // namespace AZ diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/PointLightFeatureProcessor.h b/Gems/Atom/Feature/Common/Code/Source/CoreLights/PointLightFeatureProcessor.h index 54cb0303cc..df97fa0a52 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/PointLightFeatureProcessor.h +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/PointLightFeatureProcessor.h @@ -52,6 +52,7 @@ namespace AZ void SetShadowFilterMethod(LightHandle handle, ShadowFilterMethod method) override; void SetFilteringSampleCount(LightHandle handle, uint16_t count) override; void SetEsmExponent(LightHandle handle, float esmExponent) override; + void SetNormalShadowBias(LightHandle handle, float bias) override; void SetPointData(LightHandle handle, const PointLightData& data) override; const Data::Instance GetLightBuffer() const; diff --git a/Gems/Atom/Feature/Common/Code/Source/FrameCaptureSystemComponent.cpp b/Gems/Atom/Feature/Common/Code/Source/FrameCaptureSystemComponent.cpp index 8b016410aa..5fc4fed420 100644 --- a/Gems/Atom/Feature/Common/Code/Source/FrameCaptureSystemComponent.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/FrameCaptureSystemComponent.cpp @@ -142,7 +142,12 @@ namespace AZ Utils::PngFile image = Utils::PngFile::Create(readbackResult.m_imageDescriptor.m_size, format, *buffer); Utils::PngFile::SaveSettings saveSettings; - saveSettings.m_compressionLevel = r_pngCompressionLevel; + + if (auto console = AZ::Interface::Get(); console != nullptr) + { + console->GetCvarValue("r_pngCompressionLevel", saveSettings.m_compressionLevel); + } + // We should probably strip alpha to save space, especially for automated test screenshots. Alpha is left in to maintain // prior behavior, changing this is out of scope for the current task. Note, it would have bit of a cascade effect where // AtomSampleViewer's ScriptReporter assumes an RGBA image. diff --git a/Gems/Atom/Feature/Common/Code/Source/LuxCore/LuxCoreRenderer.cpp b/Gems/Atom/Feature/Common/Code/Source/LuxCore/LuxCoreRenderer.cpp index c753079d5b..ef3f33d1c3 100644 --- a/Gems/Atom/Feature/Common/Code/Source/LuxCore/LuxCoreRenderer.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/LuxCore/LuxCoreRenderer.cpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include @@ -295,14 +296,12 @@ namespace AZ } // Run luxcoreui.exe - AZStd::string luxCoreExeFullPath; - AzFramework::ApplicationRequests::Bus::BroadcastResult(luxCoreExeFullPath, &AzFramework::ApplicationRequests::GetAppRoot); - luxCoreExeFullPath = luxCoreExeFullPath + AZ_TRAIT_LUXCORE_EXEPATH; - AzFramework::StringFunc::Path::Normalize(luxCoreExeFullPath); + AZ::IO::FixedMaxPath luxCoreExeFullPath = AZ::Utils::GetEnginePath(); + luxCoreExeFullPath /= AZ_TRAIT_LUXCORE_EXEPATH; AZStd::string commandLine = "-o " + AZStd::string(resolvedPath) + "/render.cfg"; - LuxCoreUI::LaunchLuxCoreUI(luxCoreExeFullPath, commandLine); + LuxCoreUI::LaunchLuxCoreUI(luxCoreExeFullPath.String(), commandLine); } } } diff --git a/Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp index c7fb19bc5d..112eff64a8 100644 --- a/Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp @@ -67,7 +67,7 @@ namespace AZ m_handleGlobalShaderOptionUpdate.Disconnect(); DisableSceneNotification(); - AZ_Warning("MeshFeatureProcessor", m_meshData.size() == 0, + AZ_Warning("MeshFeatureProcessor", m_modelData.size() == 0, "Deactivaing the MeshFeatureProcessor, but there are still outstanding mesh handles.\n" ); m_transformService = nullptr; @@ -81,7 +81,7 @@ namespace AZ AZStd::concurrency_check_scope scopeCheck(m_meshDataChecker); - const auto iteratorRanges = m_meshData.GetParallelRanges(); + const auto iteratorRanges = m_modelData.GetParallelRanges(); AZ::JobCompletion jobCompletion; for (const auto& iteratorRange : iteratorRanges) { @@ -125,11 +125,11 @@ namespace AZ m_forceRebuildDrawPackets = false; // CullingSystem::RegisterOrUpdateCullable() is not threadsafe, so need to do those updates in a single thread - for (MeshDataInstance& meshDataInstance : m_meshData) + for (ModelDataInstance& modelDataInstance : m_modelData) { - if (meshDataInstance.m_model && meshDataInstance.m_cullBoundsNeedsUpdate) + if (modelDataInstance.m_model && modelDataInstance.m_cullBoundsNeedsUpdate) { - meshDataInstance.UpdateCullBounds(m_transformService); + modelDataInstance.UpdateCullBounds(m_transformService); } } } @@ -151,14 +151,14 @@ namespace AZ AZ_PROFILE_SCOPE(AzRender, "MeshFeatureProcessor: AcquireMesh"); // don't need to check the concurrency during emplace() because the StableDynamicArray won't move the other elements during insertion - MeshHandle meshDataHandle = m_meshData.emplace(); + MeshHandle meshDataHandle = m_modelData.emplace(); meshDataHandle->m_descriptor = descriptor; meshDataHandle->m_scene = GetParentScene(); meshDataHandle->m_materialAssignments = materials; meshDataHandle->m_objectId = m_transformService->ReserveObjectId(); meshDataHandle->m_originalModelAsset = descriptor.m_modelAsset; - meshDataHandle->m_meshLoader = AZStd::make_unique(descriptor.m_modelAsset, &*meshDataHandle); + meshDataHandle->m_meshLoader = AZStd::make_unique(descriptor.m_modelAsset, &*meshDataHandle); return meshDataHandle; } @@ -183,7 +183,7 @@ namespace AZ m_transformService->ReleaseObjectId(meshHandle->m_objectId); AZStd::concurrency_check_scope scopeCheck(m_meshDataChecker); - m_meshData.erase(meshHandle); + m_modelData.erase(meshHandle); return true; } @@ -215,9 +215,10 @@ namespace AZ return {}; } - Data::Instance MeshFeatureProcessor::GetObjectSrg(const MeshHandle& meshHandle) const + const AZStd::vector>& MeshFeatureProcessor::GetObjectSrgs(const MeshHandle& meshHandle) const { - return meshHandle.IsValid() ? meshHandle->m_shaderResourceGroup : nullptr; + static AZStd::vector> staticEmptyList; + return meshHandle.IsValid() ? meshHandle->m_objectSrgList : staticEmptyList; } void MeshFeatureProcessor::QueueObjectSrgForCompile(const MeshHandle& meshHandle) const @@ -274,9 +275,9 @@ namespace AZ { if (meshHandle.IsValid()) { - MeshDataInstance& meshData = *meshHandle; - meshData.m_cullBoundsNeedsUpdate = true; - meshData.m_objectSrgNeedsUpdate = true; + ModelDataInstance& modelData = *meshHandle; + modelData.m_cullBoundsNeedsUpdate = true; + modelData.m_objectSrgNeedsUpdate = true; m_transformService->SetTransformForId(meshHandle->m_objectId, transform, nonUniformScale); @@ -292,10 +293,10 @@ namespace AZ { if (meshHandle.IsValid()) { - MeshDataInstance& meshData = *meshHandle; - meshData.m_aabb = localAabb; - meshData.m_cullBoundsNeedsUpdate = true; - meshData.m_objectSrgNeedsUpdate = true; + ModelDataInstance& modelData = *meshHandle; + modelData.m_aabb = localAabb; + modelData.m_cullBoundsNeedsUpdate = true; + modelData.m_objectSrgNeedsUpdate = true; } }; @@ -465,7 +466,7 @@ namespace AZ void MeshFeatureProcessor::UpdateMeshReflectionProbes() { // we need to rebuild the Srg for any meshes that are using the forward pass IBL specular option - for (auto& meshInstance : m_meshData) + for (auto& meshInstance : m_modelData) { if (meshInstance.m_descriptor.m_useForwardPassIblSpecular) { @@ -474,14 +475,14 @@ namespace AZ } } - // MeshDataInstance::MeshLoader... - MeshDataInstance::MeshLoader::MeshLoader(const Data::Asset& modelAsset, MeshDataInstance* parent) + // ModelDataInstance::MeshLoader... + ModelDataInstance::MeshLoader::MeshLoader(const Data::Asset& modelAsset, ModelDataInstance* parent) : m_modelAsset(modelAsset) , m_parent(parent) { if (!m_modelAsset.GetId().IsValid()) { - AZ_Error("MeshDataInstance::MeshLoader", false, "Invalid model asset Id."); + AZ_Error("ModelDataInstance::MeshLoader", false, "Invalid model asset Id."); return; } @@ -494,19 +495,19 @@ namespace AZ AzFramework::AssetCatalogEventBus::Handler::BusConnect(); } - MeshDataInstance::MeshLoader::~MeshLoader() + ModelDataInstance::MeshLoader::~MeshLoader() { AzFramework::AssetCatalogEventBus::Handler::BusDisconnect(); Data::AssetBus::Handler::BusDisconnect(); } - MeshFeatureProcessorInterface::ModelChangedEvent& MeshDataInstance::MeshLoader::GetModelChangedEvent() + MeshFeatureProcessorInterface::ModelChangedEvent& ModelDataInstance::MeshLoader::GetModelChangedEvent() { return m_modelChangedEvent; } //! AssetBus::Handler overrides... - void MeshDataInstance::MeshLoader::OnAssetReady(Data::Asset asset) + void ModelDataInstance::MeshLoader::OnAssetReady(Data::Asset asset) { Data::Asset modelAsset = asset; @@ -527,7 +528,7 @@ namespace AZ } else { - AZ_Error("MeshDataInstance", false, "Cannot clone model for '%s'. Cloth simulation results won't be individual per entity.", modelAsset->GetName().GetCStr()); + AZ_Error("ModelDataInstance", false, "Cannot clone model for '%s'. Cloth simulation results won't be individual per entity.", modelAsset->GetName().GetCStr()); model = RPI::Model::FindOrCreate(modelAsset); } } @@ -547,29 +548,29 @@ namespace AZ { //when running with null renderer, the RPI::Model::FindOrCreate(...) is expected to return nullptr, so suppress this error. AZ_Error( - "MeshDataInstance::OnAssetReady", RHI::IsNullRenderer(), "Failed to create model instance for '%s'", + "ModelDataInstance::OnAssetReady", RHI::IsNullRenderer(), "Failed to create model instance for '%s'", asset.GetHint().c_str()); } } - void MeshDataInstance::MeshLoader::OnModelReloaded(Data::Asset asset) + void ModelDataInstance::MeshLoader::OnModelReloaded(Data::Asset asset) { OnAssetReady(asset); } - void MeshDataInstance::MeshLoader::OnAssetError(Data::Asset asset) + void ModelDataInstance::MeshLoader::OnAssetError(Data::Asset asset) { // Note: m_modelAsset and asset represents same asset, but only m_modelAsset contains the file path in its hint from serialization AZ_Error( - "MeshDataInstance::MeshLoader", false, "Failed to load asset %s. It may be missing, or not be finished processing", + "ModelDataInstance::MeshLoader", false, "Failed to load asset %s. It may be missing, or not be finished processing", m_modelAsset.GetHint().c_str()); AzFramework::AssetSystemRequestBus::Broadcast( &AzFramework::AssetSystem::AssetSystemRequests::EscalateAssetByUuid, m_modelAsset.GetId().m_guid); } - void MeshDataInstance::MeshLoader::OnCatalogAssetChanged(const AZ::Data::AssetId& assetId) + void ModelDataInstance::MeshLoader::OnCatalogAssetChanged(const AZ::Data::AssetId& assetId) { if (assetId == m_modelAsset.GetId()) { @@ -584,7 +585,7 @@ namespace AZ } } - void MeshDataInstance::MeshLoader::OnCatalogAssetAdded(const AZ::Data::AssetId& assetId) + void ModelDataInstance::MeshLoader::OnCatalogAssetAdded(const AZ::Data::AssetId& assetId) { if (assetId == m_modelAsset.GetId()) { @@ -599,9 +600,9 @@ namespace AZ } } - // MeshDataInstance... + // ModelDataInstance... - void MeshDataInstance::DeInit() + void ModelDataInstance::DeInit() { m_scene->GetCullingScene()->UnregisterCullable(m_cullable); @@ -609,11 +610,11 @@ namespace AZ m_drawPacketListsByLod.clear(); m_materialAssignments.clear(); - m_shaderResourceGroup = {}; + m_objectSrgList = {}; m_model = {}; } - void MeshDataInstance::Init(Data::Instance model) + void ModelDataInstance::Init(Data::Instance model) { m_model = model; const size_t modelLodCount = m_model->GetLodCount(); @@ -623,11 +624,11 @@ namespace AZ BuildDrawPacketList(modelLodIndex); } - if (m_shaderResourceGroup) + for(auto& objectSrg : m_objectSrgList) { // Set object Id once since it never changes RHI::ShaderInputNameIndex objectIdIndex = "m_objectId"; - m_shaderResourceGroup->SetConstant(objectIdIndex, m_objectId.GetIndex()); + objectSrg->SetConstant(objectIdIndex, m_objectId.GetIndex()); objectIdIndex.AssertValid(); } @@ -643,12 +644,12 @@ namespace AZ m_objectSrgNeedsUpdate = true; } - void MeshDataInstance::BuildDrawPacketList(size_t modelLodIndex) + void ModelDataInstance::BuildDrawPacketList(size_t modelLodIndex) { RPI::ModelLod& modelLod = *m_model->GetLods()[modelLodIndex]; const size_t meshCount = modelLod.GetMeshes().size(); - MeshDataInstance::DrawPacketList& drawPacketListOut = m_drawPacketListsByLod[modelLodIndex]; + ModelDataInstance::DrawPacketList& drawPacketListOut = m_drawPacketListsByLod[modelLodIndex]; drawPacketListOut.clear(); drawPacketListOut.reserve(meshCount); @@ -682,27 +683,32 @@ namespace AZ continue; } - if (m_shaderResourceGroup && m_shaderResourceGroup->GetLayout()->GetHash() != objectSrgLayout->GetHash()) + Data::Instance meshObjectSrg; + + // See if the object SRG for this mesh is already in our list of object SRGs + for (auto& objectSrgIter : m_objectSrgList) { - AZ_Warning("MeshFeatureProcessor", false, "All materials on a model must use the same per-object ShaderResourceGroup. Skipping."); - continue; + if (objectSrgIter->GetLayout()->GetHash() == objectSrgLayout->GetHash()) + { + meshObjectSrg = objectSrgIter; + } } - // The first time we find the per-surface SRG asset we create an instance and store it - // in shaderResourceGroupInOut. All of the Model's draw packets will use this same instance. - if (!m_shaderResourceGroup) + // If the object SRG for this mesh was not already in the list, create it and add it to the list + if (!meshObjectSrg) { auto& shaderAsset = material->GetAsset()->GetMaterialTypeAsset()->GetShaderAssetForObjectSrg(); - m_shaderResourceGroup = RPI::ShaderResourceGroup::Create(shaderAsset, objectSrgLayout->GetName()); - if (!m_shaderResourceGroup) + meshObjectSrg = RPI::ShaderResourceGroup::Create(shaderAsset, objectSrgLayout->GetName()); + if (!meshObjectSrg) { AZ_Warning("MeshFeatureProcessor", false, "Failed to create a new shader resource group, skipping."); continue; } + m_objectSrgList.push_back(meshObjectSrg); } // setup the mesh draw packet - RPI::MeshDrawPacket drawPacket(modelLod, meshIndex, material, m_shaderResourceGroup, materialAssignment.m_matModUvOverrides); + RPI::MeshDrawPacket drawPacket(modelLod, meshIndex, material, meshObjectSrg, materialAssignment.m_matModUvOverrides); // set the shader option to select forward pass IBL specular if necessary if (!drawPacket.SetShaderOption(AZ::Name("o_meshUseForwardPassIBLSpecular"), AZ::RPI::ShaderOptionValue{ m_descriptor.m_useForwardPassIblSpecular })) @@ -726,7 +732,7 @@ namespace AZ } } - void MeshDataInstance::SetRayTracingData() + void ModelDataInstance::SetRayTracingData() { if (!m_model) { @@ -993,7 +999,7 @@ namespace AZ rayTracingFeatureProcessor->SetMesh(m_objectId, m_model->GetModelAsset()->GetId(), subMeshes); } - void MeshDataInstance::RemoveRayTracingData() + void ModelDataInstance::RemoveRayTracingData() { // remove from ray tracing RayTracingFeatureProcessor* rayTracingFeatureProcessor = m_scene->GetFeatureProcessor(); @@ -1003,7 +1009,7 @@ namespace AZ } } - void MeshDataInstance::SetSortKey(RHI::DrawItemSortKey sortKey) + void ModelDataInstance::SetSortKey(RHI::DrawItemSortKey sortKey) { m_sortKey = sortKey; for (auto& drawPacketList : m_drawPacketListsByLod) @@ -1015,24 +1021,24 @@ namespace AZ } } - RHI::DrawItemSortKey MeshDataInstance::GetSortKey() const + RHI::DrawItemSortKey ModelDataInstance::GetSortKey() const { return m_sortKey; } - void MeshDataInstance::SetMeshLodConfiguration(RPI::Cullable::LodConfiguration meshLodConfig) + void ModelDataInstance::SetMeshLodConfiguration(RPI::Cullable::LodConfiguration meshLodConfig) { m_cullable.m_lodData.m_lodConfiguration = meshLodConfig; } - RPI::Cullable::LodConfiguration MeshDataInstance::GetMeshLodConfiguration() const + RPI::Cullable::LodConfiguration ModelDataInstance::GetMeshLodConfiguration() const { return m_cullable.m_lodData.m_lodConfiguration; } - void MeshDataInstance::UpdateDrawPackets(bool forceUpdate /*= false*/) + void ModelDataInstance::UpdateDrawPackets(bool forceUpdate /*= false*/) { - AZ_PROFILE_SCOPE(AzRender, "MeshDataInstance:: UpdateDrawPackets"); + AZ_PROFILE_SCOPE(AzRender, "ModelDataInstance:: UpdateDrawPackets"); for (auto& drawPacketList : m_drawPacketListsByLod) { for (auto& drawPacket : drawPacketList) @@ -1045,9 +1051,9 @@ namespace AZ } } - void MeshDataInstance::BuildCullable() + void ModelDataInstance::BuildCullable() { - AZ_PROFILE_SCOPE(AzRender, "MeshDataInstance: BuildCullable"); + AZ_PROFILE_SCOPE(AzRender, "ModelDataInstance: BuildCullable"); AZ_Assert(m_cullableNeedsRebuild, "This function only needs to be called if the cullable to be rebuilt"); AZ_Assert(m_model, "The model has not finished loading yet"); @@ -1122,9 +1128,9 @@ namespace AZ m_cullBoundsNeedsUpdate = true; } - void MeshDataInstance::UpdateCullBounds(const TransformServiceFeatureProcessor* transformService) + void ModelDataInstance::UpdateCullBounds(const TransformServiceFeatureProcessor* transformService) { - AZ_PROFILE_SCOPE(AzRender, "MeshDataInstance: UpdateCullBounds"); + AZ_PROFILE_SCOPE(AzRender, "ModelDataInstance: UpdateCullBounds"); AZ_Assert(m_cullBoundsNeedsUpdate, "This function only needs to be called if the culling bounds need to be rebuilt"); AZ_Assert(m_model, "The model has not finished loading yet"); @@ -1148,70 +1154,74 @@ namespace AZ m_cullBoundsNeedsUpdate = false; } - void MeshDataInstance::UpdateObjectSrg() + void ModelDataInstance::UpdateObjectSrg() { - if (!m_shaderResourceGroup) + for (auto& objectSrg : m_objectSrgList) { - return; + ReflectionProbeFeatureProcessor* reflectionProbeFeatureProcessor = m_scene->GetFeatureProcessor(); + + if (reflectionProbeFeatureProcessor && (m_descriptor.m_useForwardPassIblSpecular || m_hasForwardPassIblSpecularMaterial)) + { + // retrieve probe constant indices + AZ::RHI::ShaderInputConstantIndex modelToWorldConstantIndex = objectSrg->FindShaderInputConstantIndex(Name("m_reflectionProbeData.m_modelToWorld")); + AZ_Error("ModelDataInstance", modelToWorldConstantIndex.IsValid(), "Failed to find ReflectionProbe constant index"); + + AZ::RHI::ShaderInputConstantIndex modelToWorldInverseConstantIndex = objectSrg->FindShaderInputConstantIndex(Name("m_reflectionProbeData.m_modelToWorldInverse")); + AZ_Error("ModelDataInstance", modelToWorldInverseConstantIndex.IsValid(), "Failed to find ReflectionProbe constant index"); + + AZ::RHI::ShaderInputConstantIndex outerObbHalfLengthsConstantIndex = objectSrg->FindShaderInputConstantIndex(Name("m_reflectionProbeData.m_outerObbHalfLengths")); + AZ_Error("ModelDataInstance", outerObbHalfLengthsConstantIndex.IsValid(), "Failed to find ReflectionProbe constant index"); + + AZ::RHI::ShaderInputConstantIndex innerObbHalfLengthsConstantIndex = objectSrg->FindShaderInputConstantIndex(Name("m_reflectionProbeData.m_innerObbHalfLengths")); + AZ_Error("ModelDataInstance", innerObbHalfLengthsConstantIndex.IsValid(), "Failed to find ReflectionProbe constant index"); + + AZ::RHI::ShaderInputConstantIndex useReflectionProbeConstantIndex = objectSrg->FindShaderInputConstantIndex(Name("m_reflectionProbeData.m_useReflectionProbe")); + AZ_Error("ModelDataInstance", useReflectionProbeConstantIndex.IsValid(), "Failed to find ReflectionProbe constant index"); + + AZ::RHI::ShaderInputConstantIndex useParallaxCorrectionConstantIndex = objectSrg->FindShaderInputConstantIndex(Name("m_reflectionProbeData.m_useParallaxCorrection")); + AZ_Error("ModelDataInstance", useParallaxCorrectionConstantIndex.IsValid(), "Failed to find ReflectionProbe constant index"); + + AZ::RHI::ShaderInputConstantIndex exposureConstantIndex = objectSrg->FindShaderInputConstantIndex(Name("m_reflectionProbeData.m_exposure")); + AZ_Error("ModelDataInstance", exposureConstantIndex.IsValid(), "Failed to find ReflectionProbe constant index"); + + // retrieve probe cubemap index + Name reflectionCubeMapImageName = Name("m_reflectionProbeCubeMap"); + RHI::ShaderInputImageIndex reflectionCubeMapImageIndex = objectSrg->FindShaderInputImageIndex(reflectionCubeMapImageName); + AZ_Error("ModelDataInstance", reflectionCubeMapImageIndex.IsValid(), "Failed to find shader image index [%s]", reflectionCubeMapImageName.GetCStr()); + + // retrieve the list of probes that contain the centerpoint of the mesh + TransformServiceFeatureProcessor* transformServiceFeatureProcessor = m_scene->GetFeatureProcessor(); + Transform transform = transformServiceFeatureProcessor->GetTransformForId(m_objectId); + + ReflectionProbeFeatureProcessor::ReflectionProbeVector reflectionProbes; + reflectionProbeFeatureProcessor->FindReflectionProbes(transform.GetTranslation(), reflectionProbes); + + if (!reflectionProbes.empty() && reflectionProbes[0]) + { + objectSrg->SetConstant(modelToWorldConstantIndex, reflectionProbes[0]->GetTransform()); + objectSrg->SetConstant(modelToWorldInverseConstantIndex, Matrix3x4::CreateFromTransform(reflectionProbes[0]->GetTransform()).GetInverseFull()); + objectSrg->SetConstant(outerObbHalfLengthsConstantIndex, reflectionProbes[0]->GetOuterObbWs().GetHalfLengths()); + objectSrg->SetConstant(innerObbHalfLengthsConstantIndex, reflectionProbes[0]->GetInnerObbWs().GetHalfLengths()); + objectSrg->SetConstant(useReflectionProbeConstantIndex, true); + objectSrg->SetConstant(useParallaxCorrectionConstantIndex, reflectionProbes[0]->GetUseParallaxCorrection()); + objectSrg->SetConstant(exposureConstantIndex, reflectionProbes[0]->GetRenderExposure()); + + objectSrg->SetImage(reflectionCubeMapImageIndex, reflectionProbes[0]->GetCubeMapImage()); + } + else + { + objectSrg->SetConstant(useReflectionProbeConstantIndex, false); + } + } + + objectSrg->Compile(); } - ReflectionProbeFeatureProcessor* reflectionProbeFeatureProcessor = m_scene->GetFeatureProcessor(); - - if (reflectionProbeFeatureProcessor && (m_descriptor.m_useForwardPassIblSpecular || m_hasForwardPassIblSpecularMaterial)) - { - // retrieve probe constant indices - AZ::RHI::ShaderInputConstantIndex modelToWorldConstantIndex = m_shaderResourceGroup->FindShaderInputConstantIndex(Name("m_reflectionProbeData.m_modelToWorld")); - AZ_Error("MeshDataInstance", modelToWorldConstantIndex.IsValid(), "Failed to find ReflectionProbe constant index"); - - AZ::RHI::ShaderInputConstantIndex modelToWorldInverseConstantIndex = m_shaderResourceGroup->FindShaderInputConstantIndex(Name("m_reflectionProbeData.m_modelToWorldInverse")); - AZ_Error("MeshDataInstance", modelToWorldInverseConstantIndex.IsValid(), "Failed to find ReflectionProbe constant index"); - - AZ::RHI::ShaderInputConstantIndex outerObbHalfLengthsConstantIndex = m_shaderResourceGroup->FindShaderInputConstantIndex(Name("m_reflectionProbeData.m_outerObbHalfLengths")); - AZ_Error("MeshDataInstance", outerObbHalfLengthsConstantIndex.IsValid(), "Failed to find ReflectionProbe constant index"); - - AZ::RHI::ShaderInputConstantIndex innerObbHalfLengthsConstantIndex = m_shaderResourceGroup->FindShaderInputConstantIndex(Name("m_reflectionProbeData.m_innerObbHalfLengths")); - AZ_Error("MeshDataInstance", innerObbHalfLengthsConstantIndex.IsValid(), "Failed to find ReflectionProbe constant index"); - - AZ::RHI::ShaderInputConstantIndex useReflectionProbeConstantIndex = m_shaderResourceGroup->FindShaderInputConstantIndex(Name("m_reflectionProbeData.m_useReflectionProbe")); - AZ_Error("MeshDataInstance", useReflectionProbeConstantIndex.IsValid(), "Failed to find ReflectionProbe constant index"); - - AZ::RHI::ShaderInputConstantIndex useParallaxCorrectionConstantIndex = m_shaderResourceGroup->FindShaderInputConstantIndex(Name("m_reflectionProbeData.m_useParallaxCorrection")); - AZ_Error("MeshDataInstance", useParallaxCorrectionConstantIndex.IsValid(), "Failed to find ReflectionProbe constant index"); - - // retrieve probe cubemap index - Name reflectionCubeMapImageName = Name("m_reflectionProbeCubeMap"); - RHI::ShaderInputImageIndex reflectionCubeMapImageIndex = m_shaderResourceGroup->FindShaderInputImageIndex(reflectionCubeMapImageName); - AZ_Error("MeshDataInstance", reflectionCubeMapImageIndex.IsValid(), "Failed to find shader image index [%s]", reflectionCubeMapImageName.GetCStr()); - - // retrieve the list of probes that contain the centerpoint of the mesh - TransformServiceFeatureProcessor* transformServiceFeatureProcessor = m_scene->GetFeatureProcessor(); - Transform transform = transformServiceFeatureProcessor->GetTransformForId(m_objectId); - - ReflectionProbeFeatureProcessor::ReflectionProbeVector reflectionProbes; - reflectionProbeFeatureProcessor->FindReflectionProbes(transform.GetTranslation(), reflectionProbes); - - if (!reflectionProbes.empty() && reflectionProbes[0]) - { - m_shaderResourceGroup->SetConstant(modelToWorldConstantIndex, reflectionProbes[0]->GetTransform()); - m_shaderResourceGroup->SetConstant(modelToWorldInverseConstantIndex, Matrix3x4::CreateFromTransform(reflectionProbes[0]->GetTransform()).GetInverseFull()); - m_shaderResourceGroup->SetConstant(outerObbHalfLengthsConstantIndex, reflectionProbes[0]->GetOuterObbWs().GetHalfLengths()); - m_shaderResourceGroup->SetConstant(innerObbHalfLengthsConstantIndex, reflectionProbes[0]->GetInnerObbWs().GetHalfLengths()); - m_shaderResourceGroup->SetConstant(useReflectionProbeConstantIndex, true); - m_shaderResourceGroup->SetConstant(useParallaxCorrectionConstantIndex, reflectionProbes[0]->GetUseParallaxCorrection()); - - m_shaderResourceGroup->SetImage(reflectionCubeMapImageIndex, reflectionProbes[0]->GetCubeMapImage()); - } - else - { - m_shaderResourceGroup->SetConstant(useReflectionProbeConstantIndex, false); - } - } - - m_shaderResourceGroup->Compile(); - m_objectSrgNeedsUpdate = false; + // Set m_objectSrgNeedsUpdate to false if there are object SRGs in the list + m_objectSrgNeedsUpdate = m_objectSrgNeedsUpdate && (m_objectSrgList.size() == 0); } - bool MeshDataInstance::MaterialRequiresForwardPassIblSpecular(Data::Instance material) const + bool ModelDataInstance::MaterialRequiresForwardPassIblSpecular(Data::Instance material) const { // look for a shader that has the o_materialUseForwardPassIBLSpecular option set // Note: this should be changed to have the material automatically set the forwardPassIBLSpecular @@ -1237,7 +1247,7 @@ namespace AZ return false; } - void MeshDataInstance::SetVisible(bool isVisible) + void ModelDataInstance::SetVisible(bool isVisible) { m_visible = isVisible; m_cullable.m_isHidden = !isVisible; diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcess/PostProcessFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/PostProcess/PostProcessFeatureProcessor.cpp index a9d8d5105f..c8e683e1d1 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcess/PostProcessFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcess/PostProcessFeatureProcessor.cpp @@ -37,6 +37,11 @@ namespace AZ m_currentTime = AZStd::chrono::system_clock::now(); } + void PostProcessFeatureProcessor::Deactivate() + { + m_viewAliasMap.clear(); + } + void PostProcessFeatureProcessor::UpdateTime() { AZStd::chrono::system_clock::time_point now = AZStd::chrono::system_clock::now(); @@ -45,6 +50,16 @@ namespace AZ m_deltaTime = deltaTime.count(); } + void PostProcessFeatureProcessor::SetViewAlias(const AZ::RPI::ViewPtr sourceView, const AZ::RPI::ViewPtr targetView) + { + m_viewAliasMap[sourceView.get()] = targetView.get(); + } + + void PostProcessFeatureProcessor::RemoveViewAlias(const AZ::RPI::ViewPtr sourceView) + { + m_viewAliasMap.erase(sourceView.get()); + } + void PostProcessFeatureProcessor::Simulate(const FeatureProcessor::SimulatePacket& packet) { AZ_PROFILE_SCOPE(RPI, "PostProcessFeatureProcessor: Simulate"); @@ -200,8 +215,12 @@ namespace AZ AZ::Render::PostProcessSettings* PostProcessFeatureProcessor::GetLevelSettingsFromView(AZ::RPI::ViewPtr view) { + // check for view aliases first + auto viewAliasiterator = m_viewAliasMap.find(view.get()); + + // Use the view alias if it exists + auto settingsIterator = m_blendedPerViewSettings.find(viewAliasiterator != m_viewAliasMap.end() ? viewAliasiterator->second : view.get()); // If no settings for the view is found, the global settings is returned. - auto settingsIterator = m_blendedPerViewSettings.find(view.get()); return settingsIterator != m_blendedPerViewSettings.end() ? &settingsIterator->second : m_globalAggregateLevelSettings.get(); diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcess/PostProcessFeatureProcessor.h b/Gems/Atom/Feature/Common/Code/Source/PostProcess/PostProcessFeatureProcessor.h index 2c1cc98449..10af993d9d 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcess/PostProcessFeatureProcessor.h +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcess/PostProcessFeatureProcessor.h @@ -34,6 +34,7 @@ namespace AZ //! FeatureProcessor overrides... void Activate() override; + void Deactivate() override; void Simulate(const FeatureProcessor::SimulatePacket& packet) override; //! PostProcessFeatureProcessorInterface... @@ -43,6 +44,9 @@ namespace AZ void OnPostProcessSettingsChanged() override; PostProcessSettings* GetLevelSettingsFromView(AZ::RPI::ViewPtr view); + void SetViewAlias(const AZ::RPI::ViewPtr sourceView, const AZ::RPI::ViewPtr targetView); + void RemoveViewAlias(const AZ::RPI::ViewPtr sourceView); + private: PostProcessFeatureProcessor(const PostProcessFeatureProcessor&) = delete; @@ -83,6 +87,8 @@ namespace AZ // Each camera/view will have its own PostProcessSettings AZStd::unordered_map m_blendedPerViewSettings; + // This is used for mimicking a postfx setting of a different view + AZStd::unordered_map m_viewAliasMap; }; } // namespace Render } // namespace AZ diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/EyeAdaptationPass.cpp b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/EyeAdaptationPass.cpp index 862892ad1b..5683241693 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/EyeAdaptationPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/EyeAdaptationPass.cpp @@ -81,7 +81,7 @@ namespace AZ if (scene) { PostProcessFeatureProcessor* fp = scene->GetFeatureProcessor(); - AZ::RPI::ViewPtr view = GetView(); + AZ::RPI::ViewPtr view = GetRenderPipeline()->GetDefaultView(); if (fp) { PostProcessSettings* postProcessSettings = fp->GetLevelSettingsFromView(view); @@ -110,7 +110,7 @@ namespace AZ PostProcessFeatureProcessor* fp = scene->GetFeatureProcessor(); if (fp) { - AZ::RPI::ViewPtr view = GetView(); + AZ::RPI::ViewPtr view = GetRenderPipeline()->GetDefaultView(); PostProcessSettings* postProcessSettings = fp->GetLevelSettingsFromView(view); if (postProcessSettings) { diff --git a/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.cpp b/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.cpp index e86d91d387..4ac5782b04 100644 --- a/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.cpp @@ -120,15 +120,17 @@ namespace AZ m_scene->RemoveRenderPipeline(m_environmentCubeMapPipelineId); m_environmentCubeMapPass = nullptr; - // restore exposure - sceneSrg->SetConstant(m_iblExposureConstantIndex, m_previousExposure); + // restore exposures + sceneSrg->SetConstant(m_globalIblExposureConstantIndex, m_previousGlobalIblExposure); + sceneSrg->SetConstant(m_skyBoxExposureConstantIndex, m_previousSkyBoxExposure); m_buildingCubeMap = false; } else { - // set exposure to 0.0 while baking the cubemap - sceneSrg->SetConstant(m_iblExposureConstantIndex, 0.0f); + // set exposures to the user specified value while baking the cubemap + sceneSrg->SetConstant(m_globalIblExposureConstantIndex, m_bakeExposure); + sceneSrg->SetConstant(m_skyBoxExposureConstantIndex, m_bakeExposure); } } @@ -162,6 +164,7 @@ namespace AZ m_renderOuterSrg->SetConstant(m_reflectionRenderData->m_outerObbHalfLengthsRenderConstantIndex, m_outerObbWs.GetHalfLengths()); m_renderOuterSrg->SetConstant(m_reflectionRenderData->m_innerObbHalfLengthsRenderConstantIndex, m_innerObbWs.GetHalfLengths()); m_renderOuterSrg->SetConstant(m_reflectionRenderData->m_useParallaxCorrectionRenderConstantIndex, m_useParallaxCorrection); + m_renderOuterSrg->SetConstant(m_reflectionRenderData->m_exposureConstantIndex, m_renderExposure); m_renderOuterSrg->SetImage(m_reflectionRenderData->m_reflectionCubeMapRenderImageIndex, m_cubeMapImage); m_renderOuterSrg->Compile(); @@ -172,6 +175,7 @@ namespace AZ m_renderInnerSrg->SetConstant(m_reflectionRenderData->m_outerObbHalfLengthsRenderConstantIndex, m_outerObbWs.GetHalfLengths()); m_renderInnerSrg->SetConstant(m_reflectionRenderData->m_innerObbHalfLengthsRenderConstantIndex, m_innerObbWs.GetHalfLengths()); m_renderInnerSrg->SetConstant(m_reflectionRenderData->m_useParallaxCorrectionRenderConstantIndex, m_useParallaxCorrection); + m_renderInnerSrg->SetConstant(m_reflectionRenderData->m_exposureConstantIndex, m_renderExposure); m_renderInnerSrg->SetImage(m_reflectionRenderData->m_reflectionCubeMapRenderImageIndex, m_cubeMapImage); m_renderInnerSrg->Compile(); @@ -303,9 +307,10 @@ namespace AZ const RPI::Ptr& rootPass = environmentCubeMapPipeline->GetRootPass(); rootPass->AddChild(m_environmentCubeMapPass); - // store the current IBL exposure value + // store the current IBL exposure values Data::Instance sceneSrg = m_scene->GetShaderResourceGroup(); - m_previousExposure = sceneSrg->GetConstant(m_iblExposureConstantIndex); + m_previousGlobalIblExposure = sceneSrg->GetConstant(m_globalIblExposureConstantIndex); + m_previousSkyBoxExposure = sceneSrg->GetConstant(m_skyBoxExposureConstantIndex); m_scene->AddRenderPipeline(environmentCubeMapPipeline); } @@ -326,6 +331,17 @@ namespace AZ m_meshFeatureProcessor->SetVisible(m_visualizationMeshHandle, showVisualization); } + void ReflectionProbe::SetRenderExposure(float renderExposure) + { + m_renderExposure = renderExposure; + m_updateSrg = true; + } + + void ReflectionProbe::SetBakeExposure(float bakeExposure) + { + m_bakeExposure = bakeExposure; + } + const RHI::DrawPacket* ReflectionProbe::BuildDrawPacket( const Data::Instance& srg, const RPI::Ptr& pipelineState, diff --git a/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.h b/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.h index bee304c5b9..17ef54367b 100644 --- a/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.h +++ b/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.h @@ -61,6 +61,7 @@ namespace AZ RHI::ShaderInputNameIndex m_outerObbHalfLengthsRenderConstantIndex = "m_outerObbHalfLengths"; RHI::ShaderInputNameIndex m_innerObbHalfLengthsRenderConstantIndex = "m_innerObbHalfLengths"; RHI::ShaderInputNameIndex m_useParallaxCorrectionRenderConstantIndex = "m_useParallaxCorrection"; + RHI::ShaderInputNameIndex m_exposureConstantIndex = "m_exposure"; RHI::ShaderInputNameIndex m_reflectionCubeMapRenderImageIndex = "m_reflectionCubeMap"; }; @@ -106,6 +107,14 @@ namespace AZ // enables or disables rendering of the visualization sphere void ShowVisualization(bool showVisualization); + // the exposure to use when rendering meshes with this probe's cubemap + void SetRenderExposure(float renderExposure); + float GetRenderExposure() const { return m_renderExposure; } + + // the exposure to use when baking the probe cubemap + void SetBakeExposure(float bakeExposure); + float GetBakeExposure() const { return m_bakeExposure; } + private: AZ_DISABLE_COPY_MOVE(ReflectionProbe); @@ -157,6 +166,8 @@ namespace AZ RHI::ConstPtr m_blendWeightDrawPacket; RHI::ConstPtr m_renderOuterDrawPacket; RHI::ConstPtr m_renderInnerDrawPacket; + float m_renderExposure = 0.0f; + float m_bakeExposure = 0.0f; bool m_updateSrg = false; const RHI::DrawItemSortKey InvalidSortKey = static_cast(-1); @@ -169,8 +180,10 @@ namespace AZ RPI::Ptr m_environmentCubeMapPass = nullptr; RPI::RenderPipelineId m_environmentCubeMapPipelineId; BuildCubeMapCallback m_callback; - RHI::ShaderInputNameIndex m_iblExposureConstantIndex = "m_iblExposure"; - float m_previousExposure = 0.0f; + RHI::ShaderInputNameIndex m_globalIblExposureConstantIndex = "m_iblExposure"; + RHI::ShaderInputNameIndex m_skyBoxExposureConstantIndex = "m_cubemapExposure"; + float m_previousGlobalIblExposure = 0.0f; + float m_previousSkyBoxExposure = 0.0f; bool m_buildingCubeMap = false; }; diff --git a/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbeFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbeFeatureProcessor.cpp index ae63ff1dde..e9038858ad 100644 --- a/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbeFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbeFeatureProcessor.cpp @@ -283,6 +283,18 @@ namespace AZ probe->ShowVisualization(showVisualization); } + void ReflectionProbeFeatureProcessor::SetRenderExposure(const ReflectionProbeHandle& probe, float renderExposure) + { + AZ_Assert(probe.get(), "SetRenderExposure called with an invalid handle"); + probe->SetRenderExposure(renderExposure); + } + + void ReflectionProbeFeatureProcessor::SetBakeExposure(const ReflectionProbeHandle& probe, float bakeExposure) + { + AZ_Assert(probe.get(), "SetBakeExposure called with an invalid handle"); + probe->SetBakeExposure(bakeExposure); + } + void ReflectionProbeFeatureProcessor::FindReflectionProbes(const Vector3& position, ReflectionProbeVector& reflectionProbes) { reflectionProbes.clear(); diff --git a/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionCopyFrameBufferPass.cpp b/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionCopyFrameBufferPass.cpp index a1858a7e9d..8c5e36e706 100644 --- a/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionCopyFrameBufferPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionCopyFrameBufferPass.cpp @@ -7,7 +7,7 @@ */ #include "ReflectionCopyFrameBufferPass.h" -#include "ReflectionScreenSpaceBlurPass.h" +#include "ReflectionScreenSpaceTracePass.h" #include #include @@ -28,16 +28,16 @@ namespace AZ void ReflectionCopyFrameBufferPass::BuildInternal() { - RPI::PassFilter passFilter = RPI::PassFilter::CreateWithPassName(AZ::Name("ReflectionScreenSpaceBlurPass"), GetRenderPipeline()); + RPI::PassFilter passFilter = RPI::PassFilter::CreateWithPassName(AZ::Name("ReflectionScreenSpaceTracePass"), GetRenderPipeline()); RPI::PassSystemInterface::Get()->ForEachPass(passFilter, [this](RPI::Pass* pass) -> RPI::PassFilterExecutionFlow { - Render::ReflectionScreenSpaceBlurPass* blurPass = azrtti_cast(pass); - Data::Instance& frameBufferAttachment = blurPass->GetFrameBufferImageAttachment(); + Render::ReflectionScreenSpaceTracePass* tracePass = azrtti_cast(pass); + Data::Instance& frameBufferAttachment = tracePass->GetPreviousFrameImageAttachment(); RPI::PassAttachmentBinding& outputBinding = GetOutputBinding(0); AttachImageToSlot(outputBinding.m_name, frameBufferAttachment); - return RPI::PassFilterExecutionFlow::StopVisitingPasses; + return RPI::PassFilterExecutionFlow::StopVisitingPasses; }); FullscreenTrianglePass::BuildInternal(); diff --git a/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceBlurPass.cpp b/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceBlurPass.cpp index edd7ad1013..c0b25697a3 100644 --- a/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceBlurPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceBlurPass.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -79,7 +80,7 @@ namespace AZ horizontalBlurChildDesc.m_passTemplate = blurHorizontalPassTemplate; // add child passes to perform the vertical and horizontal Gaussian blur for each roughness mip level - for (uint32_t mip = 0; mip < m_numBlurMips; ++mip) + for (uint32_t mip = 0; mip < NumMipLevels - 1; ++mip) { // create Vertical blur child passes { @@ -114,35 +115,15 @@ namespace AZ RemoveChildren(); m_flags.m_createChildren = true; - Data::Instance pool = RPI::ImageSystemInterface::Get()->GetSystemAttachmentPool(); - - // retrieve the image attachment from the pass - AZ_Assert(m_ownedAttachments.size() == 1, "ReflectionScreenSpaceBlurPass must have exactly one ImageAttachment defined"); - RPI::Ptr reflectionImageAttachment = m_ownedAttachments[0]; - - // update the image attachment descriptor to sync up size and format - reflectionImageAttachment->Update(); - - // change the lifetime since we want it to live between frames - reflectionImageAttachment->m_lifetime = RHI::AttachmentLifetimeType::Imported; - - // set the bind flags - RHI::ImageDescriptor& imageDesc = reflectionImageAttachment->m_descriptor.m_image; - imageDesc.m_bindFlags |= RHI::ImageBindFlags::Color | RHI::ImageBindFlags::ShaderReadWrite; - - // create the image attachment - RHI::ClearValue clearValue = RHI::ClearValue::CreateVector4Float(0, 0, 0, 0); - m_frameBufferImageAttachment = RPI::AttachmentImage::Create(*pool.get(), imageDesc, Name(reflectionImageAttachment->m_path.GetCStr()), &clearValue, nullptr); - - reflectionImageAttachment->m_path = m_frameBufferImageAttachment->GetAttachmentId(); - reflectionImageAttachment->m_importedResource = m_frameBufferImageAttachment; - - uint32_t mipLevels = reflectionImageAttachment->m_descriptor.m_image.m_mipLevels; + // retrieve the reflection, downsampled normal, and downsampled depth attachments + RPI::PassAttachment* reflectionImageAttachment = GetInputOutputBinding(0).m_attachment.get(); RHI::Size imageSize = reflectionImageAttachment->m_descriptor.m_image.m_size; + RPI::PassAttachment* downsampledDepthImageAttachment = GetInputOutputBinding(1).m_attachment.get(); + // create transient attachments, one for each blur mip level AZStd::vector transientPassAttachments; - for (uint32_t mip = 1; mip <= mipLevels - 1; ++mip) + for (uint32_t mip = 1; mip <= NumMipLevels - 1; ++mip) { RHI::Size mipSize = imageSize.GetReducedMip(mip); @@ -160,8 +141,6 @@ namespace AZ m_ownedAttachments.push_back(transientPassAttachment); } - m_numBlurMips = mipLevels - 1; - // call ParentPass::BuildInternal() first to configure the slots and auto-add the empty bindings, // then we will assign attachments to the bindings ParentPass::BuildInternal(); @@ -170,13 +149,27 @@ namespace AZ uint32_t attachmentIndex = 0; for (auto& verticalBlurChildPass : m_verticalBlurChildPasses) { + // mip0 source input RPI::PassAttachmentBinding& inputAttachmentBinding = verticalBlurChildPass->GetInputOutputBinding(0); inputAttachmentBinding.SetAttachment(reflectionImageAttachment); inputAttachmentBinding.m_connectedBinding = &GetInputOutputBinding(0); + // mipN transient output RPI::PassAttachmentBinding& outputAttachmentBinding = verticalBlurChildPass->GetInputOutputBinding(1); outputAttachmentBinding.SetAttachment(transientPassAttachments[attachmentIndex]); + // setup downsampled depth output + // Note: this is a vertical pass output only, and each vertical child pass writes a specific mip level + uint32_t mipLevel = attachmentIndex + 1; + + // downsampled depth output + RPI::PassAttachmentBinding& downsampledDepthAttachmentBinding = verticalBlurChildPass->GetInputOutputBinding(2); + RHI::ImageViewDescriptor downsampledDepthOutputViewDesc; + downsampledDepthOutputViewDesc.m_mipSliceMin = static_cast(mipLevel); + downsampledDepthOutputViewDesc.m_mipSliceMax = static_cast(mipLevel); + downsampledDepthAttachmentBinding.m_unifiedScopeDesc.SetAsImage(downsampledDepthOutputViewDesc); + downsampledDepthAttachmentBinding.SetAttachment(downsampledDepthImageAttachment); + attachmentIndex++; } diff --git a/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceBlurPass.h b/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceBlurPass.h index b7ea98ae25..9548665c8a 100644 --- a/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceBlurPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceBlurPass.h @@ -29,12 +29,8 @@ namespace AZ //! Creates a new pass without a PassTemplate static RPI::Ptr Create(const RPI::PassDescriptor& descriptor); - //! Returns the frame buffer image attachment used by the ReflectionFrameBufferCopy pass - //! to store the previous frame image - Data::Instance& GetFrameBufferImageAttachment() { return m_frameBufferImageAttachment; } - - //! Returns the number of mip levels in the blur - uint32_t GetNumBlurMips() const { return m_numBlurMips; } + //! The total number of mip levels in the blur (including mip0) + static const uint32_t NumMipLevels = 5; private: explicit ReflectionScreenSpaceBlurPass(const RPI::PassDescriptor& descriptor); @@ -47,9 +43,6 @@ namespace AZ AZStd::vector> m_verticalBlurChildPasses; AZStd::vector> m_horizontalBlurChildPasses; - - Data::Instance m_frameBufferImageAttachment; - uint32_t m_numBlurMips = 0; }; } // namespace RPI } // namespace AZ diff --git a/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceCompositePass.cpp b/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceCompositePass.cpp index 1362191691..d27d4d90c9 100644 --- a/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceCompositePass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceCompositePass.cpp @@ -26,6 +26,19 @@ namespace AZ { } + bool ReflectionScreenSpaceCompositePass::IsEnabled() const + { + // delay for a few frames to ensure that the previous frame texture is populated + static const uint32_t FrameDelay = 10; + if (m_frameDelayCount < FrameDelay) + { + m_frameDelayCount++; + return false; + } + + return true; + } + void ReflectionScreenSpaceCompositePass::CompileResources([[maybe_unused]] const RHI::FrameGraphCompileContext& context) { if (!m_shaderResourceGroup) @@ -33,22 +46,8 @@ namespace AZ return; } - RPI::PassFilter passFilter = RPI::PassFilter::CreateWithPassName(AZ::Name("ReflectionScreenSpaceBlurPass"), GetRenderPipeline()); - - RPI::PassSystemInterface::Get()->ForEachPass(passFilter, [this](RPI::Pass* pass) -> RPI::PassFilterExecutionFlow - { - Render::ReflectionScreenSpaceBlurPass* blurPass = azrtti_cast(pass); - - // compute the max mip level based on the available mips in the previous frame image, and capping it - // to stay within a range that has reasonable data - const uint32_t MaxNumRoughnessMips = 8; - uint32_t maxMipLevel = AZStd::min(MaxNumRoughnessMips, blurPass->GetNumBlurMips()) - 1; - - auto constantIndex = m_shaderResourceGroup->FindShaderInputConstantIndex(Name("m_maxMipLevel")); - m_shaderResourceGroup->SetConstant(constantIndex, maxMipLevel); - - return RPI::PassFilterExecutionFlow::StopVisitingPasses; - }); + auto constantIndex = m_shaderResourceGroup->FindShaderInputConstantIndex(Name("m_maxMipLevel")); + m_shaderResourceGroup->SetConstant(constantIndex, ReflectionScreenSpaceBlurPass::NumMipLevels - 1); FullscreenTrianglePass::CompileResources(context); } diff --git a/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceCompositePass.h b/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceCompositePass.h index c70a21cd1e..03b2834633 100644 --- a/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceCompositePass.h +++ b/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceCompositePass.h @@ -34,6 +34,9 @@ namespace AZ // Pass Overrides... void CompileResources(const RHI::FrameGraphCompileContext& context) override; + bool IsEnabled() const override; + + mutable uint32_t m_frameDelayCount = 0; }; } // namespace RPI } // namespace AZ diff --git a/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceTracePass.cpp b/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceTracePass.cpp new file mode 100644 index 0000000000..7f6bce8a00 --- /dev/null +++ b/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceTracePass.cpp @@ -0,0 +1,58 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include "ReflectionScreenSpaceTracePass.h" +#include +#include +#include +#include +#include + +namespace AZ +{ + namespace Render + { + RPI::Ptr ReflectionScreenSpaceTracePass::Create(const RPI::PassDescriptor& descriptor) + { + RPI::Ptr pass = aznew ReflectionScreenSpaceTracePass(descriptor); + return AZStd::move(pass); + } + + ReflectionScreenSpaceTracePass::ReflectionScreenSpaceTracePass(const RPI::PassDescriptor& descriptor) + : RPI::FullscreenTrianglePass(descriptor) + { + } + + void ReflectionScreenSpaceTracePass::BuildInternal() + { + Data::Instance pool = RPI::ImageSystemInterface::Get()->GetSystemAttachmentPool(); + + // retrieve the previous frame image attachment from the pass + AZ_Assert(m_ownedAttachments.size() == 3, "ReflectionScreenSpaceTracePass must have the following attachment images defined: ReflectionImage, DownSampledDepthImage, and PreviousFrameImage"); + RPI::Ptr previousFrameImageAttachment = m_ownedAttachments[2]; + + // update the image attachment descriptor to sync up size and format + previousFrameImageAttachment->Update(); + + // change the lifetime since we want it to live between frames + previousFrameImageAttachment->m_lifetime = RHI::AttachmentLifetimeType::Imported; + + // set the bind flags + RHI::ImageDescriptor& imageDesc = previousFrameImageAttachment->m_descriptor.m_image; + imageDesc.m_bindFlags |= RHI::ImageBindFlags::Color | RHI::ImageBindFlags::ShaderReadWrite; + + // create the image attachment + RHI::ClearValue clearValue = RHI::ClearValue::CreateVector4Float(0, 0, 0, 0); + m_previousFrameImageAttachment = RPI::AttachmentImage::Create(*pool.get(), imageDesc, Name(previousFrameImageAttachment->m_path.GetCStr()), &clearValue, nullptr); + + previousFrameImageAttachment->m_path = m_previousFrameImageAttachment->GetAttachmentId(); + previousFrameImageAttachment->m_importedResource = m_previousFrameImageAttachment; + } + + } // namespace RPI +} // namespace AZ diff --git a/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceTracePass.h b/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceTracePass.h new file mode 100644 index 0000000000..b03418bbac --- /dev/null +++ b/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceTracePass.h @@ -0,0 +1,43 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ +#pragma once + +#include +#include +#include +#include + +namespace AZ +{ + namespace Render + { + //! This pass traces screenspace reflections from the previous frame image. + class ReflectionScreenSpaceTracePass + : public RPI::FullscreenTrianglePass + { + AZ_RPI_PASS(DiffuseProbeGridDownsamplePass); + + public: + AZ_RTTI(Render::ReflectionScreenSpaceTracePass, "{70FD45E9-8363-4AA1-A514-3C24AC975E53}", FullscreenTrianglePass); + AZ_CLASS_ALLOCATOR(Render::ReflectionScreenSpaceTracePass, SystemAllocator, 0); + + //! Creates a new pass without a PassTemplate + static RPI::Ptr Create(const RPI::PassDescriptor& descriptor); + + Data::Instance& GetPreviousFrameImageAttachment() { return m_previousFrameImageAttachment; } + + private: + explicit ReflectionScreenSpaceTracePass(const RPI::PassDescriptor& descriptor); + + // Pass behavior overrides... + virtual void BuildInternal() override; + + Data::Instance m_previousFrameImageAttachment; + }; + } // namespace RPI +} // namespace AZ diff --git a/Gems/Atom/Feature/Common/Code/Source/Shadows/ProjectedShadowFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/Shadows/ProjectedShadowFeatureProcessor.cpp index 70ccaa5702..c0cc93d7e0 100644 --- a/Gems/Atom/Feature/Common/Code/Source/Shadows/ProjectedShadowFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/Shadows/ProjectedShadowFeatureProcessor.cpp @@ -155,8 +155,9 @@ namespace AZ::Render { AZ_Assert(id.IsValid(), "Invalid ShadowId passed to ProjectedShadowFeatureProcessor::SetNormalShadowBias()."); - ShadowProperty& shadowProperty = GetShadowPropertyFromShadowId(id); - shadowProperty.m_normalShadowBias = normalShadowBias; + ShadowData& shadowData = m_shadowData.GetElement(id.GetIndex()); + shadowData.m_normalShadowBias = normalShadowBias; + m_deviceBufferNeedsUpdate = true; } void ProjectedShadowFeatureProcessor::SetShadowmapMaxResolution(ShadowId id, ShadowmapSize size) diff --git a/Gems/Atom/Feature/Common/Code/Source/Shadows/ProjectedShadowFeatureProcessor.h b/Gems/Atom/Feature/Common/Code/Source/Shadows/ProjectedShadowFeatureProcessor.h index 8939f1845d..a892e77b7f 100644 --- a/Gems/Atom/Feature/Common/Code/Source/Shadows/ProjectedShadowFeatureProcessor.h +++ b/Gems/Atom/Feature/Common/Code/Source/Shadows/ProjectedShadowFeatureProcessor.h @@ -68,7 +68,7 @@ namespace AZ::Render uint32_t m_filteringSampleCount = 0; AZStd::array m_unprojectConstants = { {0, 0} }; float m_bias; - float m_normalShadowBias; + float m_normalShadowBias = 0; float m_esmExponent = 87.0f; float m_padding[3]; }; @@ -79,7 +79,6 @@ namespace AZ::Render ProjectedShadowDescriptor m_desc; RPI::ViewPtr m_shadowmapView; float m_bias = 0.1f; - float m_normalShadowBias = 0.0f; ShadowId m_shadowId; }; diff --git a/Gems/Atom/Feature/Common/Code/Source/SkinnedMesh/SkinnedMeshFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/SkinnedMesh/SkinnedMeshFeatureProcessor.cpp index 4c379c4239..c135b017fa 100644 --- a/Gems/Atom/Feature/Common/Code/Source/SkinnedMesh/SkinnedMeshFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/SkinnedMesh/SkinnedMeshFeatureProcessor.cpp @@ -95,13 +95,13 @@ namespace AZ renderProxy.m_instance->m_model->WaitForUpload(); } - //Note: we are creating pointers to the meshDataInstance cullpacket and lod packet here, + //Note: we are creating pointers to the modelDataInstance cullpacket and lod packet here, //and holding them until the skinnedMeshDispatchItems are dispatched. There is an assumption that the underlying //data will not move during this phase. - MeshDataInstance& meshDataInstance = **renderProxy.m_meshHandle; - m_workgroup.m_cullPackets.push_back(&meshDataInstance.GetCullPacket()); - m_workgroup.m_drawListMask |= meshDataInstance.GetCullPacket().m_drawListMask; - m_lodPackets.push_back(&meshDataInstance.GetLodPacket()); + ModelDataInstance& modelDataInstance = **renderProxy.m_meshHandle; + m_workgroup.m_cullPackets.push_back(&modelDataInstance.GetCullPacket()); + m_workgroup.m_drawListMask |= modelDataInstance.GetCullPacket().m_drawListMask; + m_lodPackets.push_back(&modelDataInstance.GetLodPacket()); m_potentiallyVisibleProxies.push_back(&renderProxy); } } @@ -187,8 +187,8 @@ namespace AZ renderProxy.m_instance->m_model->WaitForUpload(); } - MeshDataInstance& meshDataInstance = **renderProxy.m_meshHandle; - const RPI::Cullable& cullable = meshDataInstance.GetCullable(); + ModelDataInstance& modelDataInstance = **renderProxy.m_meshHandle; + const RPI::Cullable& cullable = modelDataInstance.GetCullable(); for (const RPI::ViewPtr& viewPtr : packet.m_views) { diff --git a/Gems/Atom/Feature/Common/Code/Source/SkinnedMesh/SkinnedMeshOutputStreamManager.cpp b/Gems/Atom/Feature/Common/Code/Source/SkinnedMesh/SkinnedMeshOutputStreamManager.cpp index 8bf518e277..87fb46a7c6 100644 --- a/Gems/Atom/Feature/Common/Code/Source/SkinnedMesh/SkinnedMeshOutputStreamManager.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/SkinnedMesh/SkinnedMeshOutputStreamManager.cpp @@ -98,7 +98,12 @@ namespace AZ } m_needsInit = false; - const AZ::u64 sizeInMb = r_skinnedMeshInstanceMemoryPoolSize; + AZ::u64 sizeInMb{}; + if (auto console = AZ::Interface::Get(); console != nullptr) + { + console->GetCvarValue("r_skinnedMeshInstanceMemoryPoolSize", sizeInMb); + } + m_sizeInBytes = sizeInMb * (1024u * 1024u); CalculateAlignment(); diff --git a/Gems/Atom/Feature/Common/Code/Source/Utils/EditorLightingPreset.cpp b/Gems/Atom/Feature/Common/Code/Source/Utils/EditorLightingPreset.cpp index 3704c8ec0f..e2a99668eb 100644 --- a/Gems/Atom/Feature/Common/Code/Source/Utils/EditorLightingPreset.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/Utils/EditorLightingPreset.cpp @@ -110,6 +110,11 @@ namespace AZ ->DataElement(AZ::Edit::UIHandlers::Default, &LightingPreset::m_displayName, "Display Name", "Identifier used for display and selection") ->DataElement(AZ::Edit::UIHandlers::Default, &LightingPreset::m_iblDiffuseImageAsset, "IBL Diffuse Image Asset", "IBL diffuse image asset reference") ->DataElement(AZ::Edit::UIHandlers::Default, &LightingPreset::m_iblSpecularImageAsset, "IBL Specular Image Asset", "IBL specular image asset reference") + ->DataElement(AZ::Edit::UIHandlers::Slider, &LightingPreset::m_iblExposure, "IBL exposure", "IBL exposure") + ->Attribute(AZ::Edit::Attributes::SoftMin, -5.0f) + ->Attribute(AZ::Edit::Attributes::SoftMax, 5.0f) + ->Attribute(AZ::Edit::Attributes::Min, -20.0f) + ->Attribute(AZ::Edit::Attributes::Max, 20.0f) ->DataElement(AZ::Edit::UIHandlers::Default, &LightingPreset::m_skyboxImageAsset, "Skybox Image Asset", "Skybox image asset reference") ->DataElement(AZ::Edit::UIHandlers::Default, &LightingPreset::m_alternateSkyboxImageAsset, "Skybox Image Asset (Alt)", "Alternate skybox image asset reference") ->DataElement(AZ::Edit::UIHandlers::Slider, &LightingPreset::m_skyboxExposure, "Skybox Exposure", "Skybox exposure") diff --git a/Gems/Atom/Feature/Common/Code/Source/Utils/EditorModelPreset.cpp b/Gems/Atom/Feature/Common/Code/Source/Utils/EditorModelPreset.cpp index 63c2fc7150..d636fde2fe 100644 --- a/Gems/Atom/Feature/Common/Code/Source/Utils/EditorModelPreset.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/Utils/EditorModelPreset.cpp @@ -29,7 +29,6 @@ namespace AZ ->Attribute(AZ::Edit::Attributes::AutoExpand, true) ->DataElement(AZ::Edit::UIHandlers::Default, &ModelPreset::m_displayName, "Display Name", "Identifier used for display and selection") ->DataElement(AZ::Edit::UIHandlers::Default, &ModelPreset::m_modelAsset, "Model Asset", "Model asset reference") - ->DataElement(AZ::Edit::UIHandlers::Default, &ModelPreset::m_previewImageAsset, "Preview Image Asset", "Preview image asset reference") ; } } diff --git a/Gems/Atom/Feature/Common/Code/Source/Utils/ModelPreset.cpp b/Gems/Atom/Feature/Common/Code/Source/Utils/ModelPreset.cpp index c684b3cc89..ce8a1680a9 100644 --- a/Gems/Atom/Feature/Common/Code/Source/Utils/ModelPreset.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/Utils/ModelPreset.cpp @@ -24,10 +24,9 @@ namespace AZ if (auto serializeContext = azrtti_cast(context)) { serializeContext->Class() - ->Version(3) + ->Version(4) ->Field("displayName", &ModelPreset::m_displayName) ->Field("modelAsset", &ModelPreset::m_modelAsset) - ->Field("previewImageAsset", &ModelPreset::m_previewImageAsset) ; } @@ -41,7 +40,6 @@ namespace AZ ->Constructor() ->Property("displayName", BehaviorValueProperty(&ModelPreset::m_displayName)) ->Property("modelAsset", BehaviorValueProperty(&ModelPreset::m_modelAsset)) - ->Property("previewImageAsset", BehaviorValueProperty(&ModelPreset::m_previewImageAsset)) ; } } diff --git a/Gems/Atom/Feature/Common/Code/Tests/IndexedDataVectorTests.cpp b/Gems/Atom/Feature/Common/Code/Tests/IndexedDataVectorTests.cpp index 6a13b9b774..88e67538c5 100644 --- a/Gems/Atom/Feature/Common/Code/Tests/IndexedDataVectorTests.cpp +++ b/Gems/Atom/Feature/Common/Code/Tests/IndexedDataVectorTests.cpp @@ -8,156 +8,218 @@ #include #include -#include +#include #include #include - namespace UnitTest { using namespace AZ; using namespace AZ::Render; - + class IndexedDataVectorTests - : public ::testing::Test + : public UnitTest::AllocatorsTestFixture { public: void SetUp() override { - CreateAllocator(); + UnitTest::AllocatorsTestFixture::SetUp(); } void TearDown() override { - DestroyAllocator(); + UnitTest::AllocatorsTestFixture::TearDown(); } - private: - - void CreateAllocator() + template + IndexedDataVector SetupIndexedDataVector(size_t size, T initialValue = T(0), T incrementAmount = T(1), AZStd::vector* indices = nullptr) { - static constexpr size_t NumMBToAllocate = 1; - SystemAllocator::Descriptor desc; - desc.m_heap.m_numFixedMemoryBlocks = 1; - desc.m_heap.m_fixedMemoryBlocksByteSize[0] = NumMBToAllocate * 1024 * 1024; - m_memBlock = AZ_OS_MALLOC( - desc.m_heap.m_fixedMemoryBlocksByteSize[0], - desc.m_heap.m_memoryBlockAlignment); - desc.m_heap.m_fixedMemoryBlocks[0] = m_memBlock; - - AllocatorInstance::Create(desc); + IndexedDataVector data; + T value = initialValue; + for (size_t i = 0; i < size; ++i) + { + uint16_t index = data.GetFreeSlotIndex(); + EXPECT_NE(index, IndexedDataVector::NoFreeSlot); + if (indices) + { + indices->push_back(index); + } + if (index != IndexedDataVector::NoFreeSlot) + { + data.GetData(index) = value; + value += incrementAmount; + } + } + return data; } - void DestroyAllocator() + template + void ShuffleIndexedDataVector(IndexedDataVector& dataVector, AZStd::vector& indices) { - AllocatorInstance::Destroy(); - AZ_OS_FREE(m_memBlock); - m_memBlock = nullptr; + AZStd::vector values; + + // remove every other element and store it + for (size_t i = 0; i < indices.size(); ++i) + { + values.push_back(dataVector.GetData(indices.at(i))); + dataVector.RemoveIndex(indices.at(i)); + indices.erase(&indices.at(i)); + } + + for (T value : values) + { + uint16_t index = dataVector.GetFreeSlotIndex(); + indices.push_back(index); + dataVector.GetData(index) = value; + } } - void* m_memBlock = nullptr; }; - - TEST_F(IndexedDataVectorTests, TestInsert) + + TEST_F(IndexedDataVectorTests, Construction) { - MultiIndexedDataVector myVec; - constexpr int NumToInsert = 5; + IndexedDataVector testVector; + uint16_t index = testVector.GetFreeSlotIndex(); + EXPECT_NE(index, IndexedDataVector::NoFreeSlot); + } + + TEST_F(IndexedDataVectorTests, TestInsertGetBasic) + { + constexpr size_t count = 16; + constexpr int initialValue = 0; + constexpr int increment = 1; AZStd::vector indices; - - for (int i = 0; i < NumToInsert; ++i) + IndexedDataVector testVector = SetupIndexedDataVector(count, initialValue, increment, &indices); + + int value = initialValue; + for (size_t i = 0; i < count; ++i) { - auto index = myVec.GetFreeSlotIndex(); - indices.push_back(index); - myVec.GetData<0>(index) = i; - myVec.GetData<1>(index) = (double)i; + EXPECT_EQ(testVector.GetData(indices.at(i)), value); + value += increment; + } + } + + TEST_F(IndexedDataVectorTests, TestInsertGetComplex) + { + constexpr size_t count = 16; + constexpr int initialValue = 0; + constexpr int increment = 1; + + AZStd::vector indices; + IndexedDataVector testVector = SetupIndexedDataVector(count, initialValue, increment, &indices); + + // Create a set of the data that should be in the IndexedDataVector + AZStd::set values; + for (int i = 0; i < count; ++i) + { + values.emplace(initialValue + i * increment); } - for (size_t i = 0; i < NumToInsert; ++i) + // Add and remove items to shuffle the underlying data + ShuffleIndexedDataVector(testVector, indices); + + // Check to make sure all the data is still there + AZStd::vector& underlyingVector = testVector.GetDataVector(); + for (size_t i = 0; i < underlyingVector.size(); ++i) { - auto index = indices[i]; - EXPECT_EQ(i, myVec.GetData<0>(index)); - EXPECT_EQ((double)i, myVec.GetData<1>(index)); + EXPECT_TRUE(values.contains(underlyingVector.at(i))); } } TEST_F(IndexedDataVectorTests, TestSize) { - MultiIndexedDataVector myVec; - constexpr int NumToInsert = 5; - for (int i = 0; i < NumToInsert; ++i) - { - auto index = myVec.GetFreeSlotIndex(); - myVec.GetData<0>(index) = i; - } - EXPECT_EQ(NumToInsert, myVec.GetDataCount()); - EXPECT_EQ(NumToInsert, myVec.GetDataVector<0>().size()); + constexpr size_t count = 32; - myVec.Clear(); - - EXPECT_EQ(0, myVec.GetDataCount()); - EXPECT_EQ(0, myVec.GetDataVector<0>().size()); + IndexedDataVector testVector = SetupIndexedDataVector(count); + EXPECT_EQ(testVector.GetDataCount(), count); } - TEST_F(IndexedDataVectorTests, TestErase) + TEST_F(IndexedDataVectorTests, TestClear) { - MultiIndexedDataVector myVec; - constexpr int NumToInsert = 200; - AZStd::unordered_map valueToIndex; - - for (int i = 0; i < NumToInsert; ++i) - { - auto index = myVec.GetFreeSlotIndex(); - valueToIndex[i] = index; - myVec.GetData<0>(index) = i; - } - - // erase every even number - for (int i = 0; i < NumToInsert; i += 2) - { - uint16_t index = valueToIndex[i]; - auto previousRawIndex = myVec.GetRawIndex(index); - auto movedIndex = myVec.RemoveIndex(index); - if (movedIndex != MultiIndexedDataVector::NoFreeSlot) - { - auto newRawIndex = myVec.GetRawIndex(movedIndex); - - // RemoveIndex() returns the index of the item that moves into its spot if any, so check - // to make sure the Raw index of the old matches the raw index of the new - EXPECT_EQ(previousRawIndex, newRawIndex); - } - valueToIndex.erase(i); - } - - for (const auto& iter : valueToIndex) - { - int val = iter.first; - uint16_t index = iter.second; - EXPECT_EQ(val, myVec.GetData<0>(index)); - } + constexpr size_t count = 32; + IndexedDataVector testVector = SetupIndexedDataVector(count); + testVector.Clear(); + EXPECT_EQ(testVector.GetDataCount(), 0); } - TEST_F(IndexedDataVectorTests, TestManyTypes) + TEST_F(IndexedDataVectorTests, TestRemove) { - MultiIndexedDataVector myVec; - auto index = myVec.GetFreeSlotIndex(); + constexpr size_t count = 8; + constexpr int initialValue = 0; + constexpr int increment = 8; - constexpr int TestIntVal = INT_MIN; - constexpr double TestDoubleVal = -DBL_MIN; - const AZStd::string TestStringVal = "This is an AZStd::string."; - constexpr float TestFloatVal = FLT_MAX; - const char* TestConstPointerVal = "This is a C array."; + AZStd::vector indices; + IndexedDataVector testVector = SetupIndexedDataVector(count, initialValue, increment, &indices); - myVec.GetData<0>(index) = TestIntVal; - myVec.GetData<1>(index) = TestStringVal; - myVec.GetData<2>(index) = TestDoubleVal; - myVec.GetData<3>(index) = TestFloatVal; - myVec.GetData<4>(index) = TestConstPointerVal; + // Remove every other element by index + for (uint16_t i = 0; i < count; i += 2) + { + testVector.RemoveIndex(i); + } + + EXPECT_EQ(testVector.GetDataCount(), count / 2); + + // Make sure the rest of the data is still there + AZStd::vector remainingIndices; + for (size_t i = 1; i < count; i += 2) + { + int value = testVector.GetData(indices.at(i)); + EXPECT_EQ(value, initialValue + increment * i); + remainingIndices.push_back(indices.at(i)); + } + + // remove the rest of the valus by value + for (uint16_t index : remainingIndices) + { + int* valuePtr = &testVector.GetData(index); + testVector.RemoveData(valuePtr); + } + + EXPECT_EQ(testVector.GetDataCount(), 0); + } + + TEST_F(IndexedDataVectorTests, TestIndexForData) + { + constexpr size_t count = 8; + constexpr int initialValue = 0; + constexpr int increment = 8; + + AZStd::vector indices; + IndexedDataVector testVector = SetupIndexedDataVector(count, initialValue, increment, &indices); + + // Add and remove items to shuffle the underlying data + ShuffleIndexedDataVector(testVector, indices); + + AZStd::vector& underlyingVector = testVector.GetDataVector(); + for (size_t i = 0; i < underlyingVector.size(); ++i) + { + int value = underlyingVector.at(i); + uint16_t index = testVector.GetIndexForData(&underlyingVector.at(i)); + + // The data from GetData(index) should match for the index retrieved using GetIndexForData() for the same data. + EXPECT_EQ(testVector.GetData(index), value); + } + } + + TEST_F(IndexedDataVectorTests, TestRawIndex) + { + constexpr size_t count = 8; + constexpr int initialValue = 0; + constexpr int increment = 8; + + AZStd::vector indices; + IndexedDataVector testVector = SetupIndexedDataVector(count, initialValue, increment, &indices); + + // Add and remove items to shuffle the underlying data + ShuffleIndexedDataVector(testVector, indices); + + AZStd::vector& underlyingVector = testVector.GetDataVector(); + for (size_t i = 0; i < indices.size(); ++i) + { + // Check that the data retrieved from GetData for a given index matches the data in the underlying vector for the raw index. + EXPECT_EQ(testVector.GetData(indices.at(i)), underlyingVector.at(testVector.GetRawIndex(indices.at(i)))); + } - EXPECT_EQ(TestIntVal, static_cast(myVec.GetData<0>(index))); - EXPECT_EQ(TestStringVal, static_cast(myVec.GetData<1>(index))); - EXPECT_EQ(TestDoubleVal, static_cast(myVec.GetData<2>(index))); - EXPECT_EQ(TestFloatVal, static_cast(myVec.GetData<3>(index))); - EXPECT_STREQ(TestConstPointerVal, static_cast(myVec.GetData<4>(index))); } } diff --git a/Gems/Atom/Feature/Common/Code/Tests/MultiIndexedDataVectorTests.cpp b/Gems/Atom/Feature/Common/Code/Tests/MultiIndexedDataVectorTests.cpp new file mode 100644 index 0000000000..5a317c41aa --- /dev/null +++ b/Gems/Atom/Feature/Common/Code/Tests/MultiIndexedDataVectorTests.cpp @@ -0,0 +1,320 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include +#include +#include +#include +#include + + +namespace UnitTest +{ + using namespace AZ; + using namespace AZ::Render; + + class MultiIndexedDataVectorTests + : public UnitTest::AllocatorsTestFixture + { + public: + void SetUp() override + { + UnitTest::AllocatorsTestFixture::SetUp(); + } + + void TearDown() override + { + UnitTest::AllocatorsTestFixture::TearDown(); + } + }; + + TEST_F(MultiIndexedDataVectorTests, TestInsert) + { + enum Types + { + IntType = 0, + DoubleType = 1, + }; + + MultiIndexedDataVector myVec; + constexpr int NumToInsert = 5; + + AZStd::vector indices; + + for (int i = 0; i < NumToInsert; ++i) + { + auto index = myVec.GetFreeSlotIndex(); + indices.push_back(index); + myVec.GetData(index) = i; + myVec.GetData(index) = (double)i; + } + + for (size_t i = 0; i < NumToInsert; ++i) + { + auto index = indices[i]; + EXPECT_EQ(i, myVec.GetData(index)); + EXPECT_EQ((double)i, myVec.GetData(index)); + } + } + + TEST_F(MultiIndexedDataVectorTests, TestSize) + { + enum Types + { + IntType = 0, + }; + + MultiIndexedDataVector myVec; + constexpr int NumToInsert = 5; + for (int i = 0; i < NumToInsert; ++i) + { + auto index = myVec.GetFreeSlotIndex(); + myVec.GetData(index) = i; + } + EXPECT_EQ(NumToInsert, myVec.GetDataCount()); + EXPECT_EQ(NumToInsert, myVec.GetDataVector().size()); + + myVec.Clear(); + + EXPECT_EQ(0, myVec.GetDataCount()); + EXPECT_EQ(0, myVec.GetDataVector().size()); + } + + TEST_F(MultiIndexedDataVectorTests, TestErase) + { + enum Types + { + IntType = 0, + }; + + MultiIndexedDataVector myVec; + constexpr int NumToInsert = 200; + AZStd::unordered_map valueToIndex; + + for (int i = 0; i < NumToInsert; ++i) + { + auto index = myVec.GetFreeSlotIndex(); + valueToIndex[i] = index; + myVec.GetData(index) = i; + } + + // erase every even number + for (int i = 0; i < NumToInsert; i += 2) + { + uint16_t index = valueToIndex[i]; + auto previousRawIndex = myVec.GetRawIndex(index); + auto movedIndex = myVec.RemoveIndex(index); + if (movedIndex != MultiIndexedDataVector::NoFreeSlot) + { + auto newRawIndex = myVec.GetRawIndex(movedIndex); + + // RemoveIndex() returns the index of the item that moves into its spot if any, so check + // to make sure the Raw index of the old matches the raw index of the new + EXPECT_EQ(previousRawIndex, newRawIndex); + } + valueToIndex.erase(i); + } + + for (const auto& iter : valueToIndex) + { + int val = iter.first; + uint16_t index = iter.second; + EXPECT_EQ(val, myVec.GetData(index)); + } + } + + TEST_F(MultiIndexedDataVectorTests, TestManyTypes) + { + enum Types + { + IntType = 0, + StringType = 1, + DoubleType = 2, + FloatType = 3, + CharType = 4, + }; + + MultiIndexedDataVector myVec; + auto index = myVec.GetFreeSlotIndex(); + + constexpr int TestIntVal = INT_MIN; + constexpr double TestDoubleVal = -DBL_MIN; + const AZStd::string TestStringVal = "This is an AZStd::string."; + constexpr float TestFloatVal = FLT_MAX; + const char* TestConstPointerVal = "This is a C array."; + + myVec.GetData(index) = TestIntVal; + myVec.GetData(index) = TestStringVal; + myVec.GetData(index) = TestDoubleVal; + myVec.GetData(index) = TestFloatVal; + myVec.GetData(index) = TestConstPointerVal; + + EXPECT_EQ(TestIntVal, static_cast(myVec.GetData(index))); + EXPECT_EQ(TestStringVal, static_cast(myVec.GetData(index))); + EXPECT_EQ(TestDoubleVal, static_cast(myVec.GetData(index))); + EXPECT_EQ(TestFloatVal, static_cast(myVec.GetData(index))); + EXPECT_STREQ(TestConstPointerVal, static_cast(myVec.GetData(index))); + } + + MultiIndexedDataVector CreateTestVector(AZStd::vector& indices) + { + enum Types + { + IntType = 0, + FloatType = 1, + }; + + MultiIndexedDataVector myVec; + constexpr int32_t Count = 10; + int32_t startInt = 10; + float startFloat = 2.0f; + + // Create some initial values + for (uint32_t i = 0; i < Count; ++i) + { + uint16_t index = myVec.GetFreeSlotIndex(); + indices.push_back(index); + myVec.GetData(index) = startInt; + myVec.GetData(index) = startFloat; + startInt += 1; + startFloat += 1.0f; + } + + return myVec; + } + + void CheckIndexedData(MultiIndexedDataVector& data, AZStd::vector& indices) + { + enum Types + { + IntType = 0, + FloatType = 1, + }; + + // For each index, get its data and make sure GetIndexForData returns the same + // index used to retrieve the data + for (uint32_t i = 0; i < data.GetDataCount(); ++i) + { + int32_t& intData = data.GetData(indices.at(i)); + uint16_t indexForData = data.GetIndexForData(&intData); + EXPECT_EQ(indices.at(i), indexForData); + + float& floatData = data.GetData(indices.at(i)); + indexForData = data.GetIndexForData(&floatData); + EXPECT_EQ(indices.at(i), indexForData); + } + } + + TEST_F(MultiIndexedDataVectorTests, GetIndexForDataSimple) + { + AZStd::vector indices; + MultiIndexedDataVector myVec = CreateTestVector(indices); + CheckIndexedData(myVec, indices); + } + + TEST_F(MultiIndexedDataVectorTests, GetIndexForDataComplex) + { + enum Types + { + IntType = 0, + FloatType = 1, + }; + + AZStd::vector indices; + MultiIndexedDataVector myVec = CreateTestVector(indices); + + // remove every other value to shuffle the data around + for (uint32_t i = 0; i < myVec.GetDataCount(); i += 2) + { + myVec.RemoveIndex(indices.at(i)); + } + + int32_t startInt = 100; + float startFloat = 20.0f; + + // Add some data back in + const size_t count = myVec.GetDataCount(); + for (uint32_t i = 0; i < count; i += 2) + { + uint16_t index = myVec.GetFreeSlotIndex(); + indices.at(i) = index; + myVec.GetData(index) = startInt; + myVec.GetData(index) = startFloat; + startInt += 1; + startFloat += 1.0f; + } + + CheckIndexedData(myVec, indices); + } + + TEST_F(MultiIndexedDataVectorTests, ForEach) + { + enum Types + { + IntType = 0, + FloatType = 1, + }; + + MultiIndexedDataVector myVec; + constexpr int32_t Count = 10; + int32_t startInt = 10; + float startFloat = 2.0f; + + AZStd::vector indices; + AZStd::set intValues; + AZStd::set floatValues; + + // Create some initial values + for (uint32_t i = 0; i < Count; ++i) + { + uint16_t index = myVec.GetFreeSlotIndex(); + indices.push_back(index); + myVec.GetData(index) = startInt; + myVec.GetData(index) = startFloat; + intValues.insert(startInt); + floatValues.insert(startFloat); + startInt += 1; + startFloat += 1.0f; + } + + uint32_t visitCount = 0; + myVec.ForEach([&](int32_t value) -> bool + { + intValues.erase(value); + ++visitCount; + return true; // keep iterating + }); + + // All ints should have been visited and found in the set + EXPECT_EQ(visitCount, Count); + EXPECT_EQ(intValues.size(), 0); + + visitCount = 0; + myVec.ForEach([&](float value) -> bool + { + floatValues.erase(value); + ++visitCount; + return true; // keep iterating + }); + + // All floats should have been visited and found in the set + EXPECT_EQ(visitCount, Count); + EXPECT_EQ(floatValues.size(), 0); + + visitCount = 0; + myVec.ForEach([&]([[maybe_unused]] int32_t value) -> bool + { + ++visitCount; + return false; // stop iterating + }); + + // Since false is immediately returned, only one element should have been visited. + EXPECT_EQ(visitCount, 1); + + } +} diff --git a/Gems/Atom/Feature/Common/Code/atom_feature_common_files.cmake b/Gems/Atom/Feature/Common/Code/atom_feature_common_files.cmake index 184460b210..3ed2ec8755 100644 --- a/Gems/Atom/Feature/Common/Code/atom_feature_common_files.cmake +++ b/Gems/Atom/Feature/Common/Code/atom_feature_common_files.cmake @@ -275,6 +275,8 @@ set(FILES Source/RayTracing/RayTracingPassData.h Source/ReflectionProbe/ReflectionProbeFeatureProcessor.cpp Source/ReflectionProbe/ReflectionProbe.cpp + Source/ReflectionScreenSpace/ReflectionScreenSpaceTracePass.cpp + Source/ReflectionScreenSpace/ReflectionScreenSpaceTracePass.h Source/ReflectionScreenSpace/ReflectionScreenSpaceBlurPass.cpp Source/ReflectionScreenSpace/ReflectionScreenSpaceBlurPass.h Source/ReflectionScreenSpace/ReflectionScreenSpaceBlurChildPass.cpp diff --git a/Gems/Atom/Feature/Common/Code/atom_feature_common_tests_files.cmake b/Gems/Atom/Feature/Common/Code/atom_feature_common_tests_files.cmake index 1d94a2ae9e..99f3cf8e1a 100644 --- a/Gems/Atom/Feature/Common/Code/atom_feature_common_tests_files.cmake +++ b/Gems/Atom/Feature/Common/Code/atom_feature_common_tests_files.cmake @@ -11,6 +11,7 @@ set(FILES Tests/CommonTest.cpp Tests/CoreLights/ShadowmapAtlasTest.cpp Tests/IndexedDataVectorTests.cpp + Tests/MultiIndexedDataVectorTests.cpp Tests/IndexableListTests.cpp Tests/SparseVectorTests.cpp Tests/SkinnedMesh/SkinnedMeshDispatchItemTests.cpp diff --git a/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/__init__.py b/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/__init__.py index d500d6e09c..7e244dcfb2 100644 --- a/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/__init__.py +++ b/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/__init__.py @@ -163,6 +163,7 @@ _LOGGER.debug('Invoking __init__.py for {0}.'.format({_PACKAGENAME})) # ------------------------------------------------------------------------- +# ------------------------------------------------------------------------- def get_datadir() -> pathlib.Path: """ persistent application data. diff --git a/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/capture_displaymapperpassthrough.py b/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/capture_displaymapper.py similarity index 65% rename from Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/capture_displaymapperpassthrough.py rename to Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/capture_displaymapper.py index 76cdd8450a..bfcdf4c79e 100644 --- a/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/capture_displaymapperpassthrough.py +++ b/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/capture_displaymapper.py @@ -10,9 +10,7 @@ """Frame capture of the Displaymapper Passthrough (outputs .dds image)""" # ------------------------------------------------------------------------ import logging as _logging -from env_bool import env_bool -# ------------------------------------------------------------------------ _MODULENAME = 'ColorGrading.capture_displaymapperpassthrough' import ColorGrading.initialize @@ -27,25 +25,35 @@ _LOGGER.debug('Initializing: {0}.'.format({_MODULENAME})) import azlmbr.bus import azlmbr.atom -default_passtree = ["Root", +# This requires the level to have the DisplayMapper component added +# and configured to 'Passthrough' +# but now we can capture the parent input +# so this is here for reference for how it previously worked +passtree_displaymapperpassthrough = ["Root", + "MainPipeline_0", + "MainPipeline", + "PostProcessPass", + "LightAdaptation", + "DisplayMapperPass", + "DisplayMapperPassthrough"] + +# we can grad the parent pass input to the displaymapper directly +passtree_default = ["Root", "MainPipeline_0", "MainPipeline", "PostProcessPass", "LightAdaptation", - "DisplayMapperPass", - "DisplayMapperPassthrough"] + "DisplayMapperPass"] -default_path = "FrameCapture\DisplayMapperPassthrough.dds" - -# To Do: we should try to set display mapper to passthrough, -# then back after capture? +default_path = "FrameCapture\DisplayMappeInput.dds" # To Do: we can wrap this, to call from a PySide2 GUI def capture(command="CapturePassAttachment", - passtree=default_passtree, - pass_type="Output", + passtree=passtree_default, + pass_type="Input", output_path=default_path): + """Writes frame capture into project cache""" azlmbr.atom.FrameCaptureRequestBus(azlmbr.bus.Broadcast, command, passtree, diff --git a/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/initialize.py b/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/initialize.py index ac64ade322..24fcd08f02 100644 --- a/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/initialize.py +++ b/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/initialize.py @@ -32,10 +32,7 @@ if DCCSI_GDEBUG: DCCSI_LOGLEVEL = int(10) # set up logger with both console and file _logging -if DCCSI_GDEBUG: - _LOGGER = initialize_logger(_PACKAGENAME, log_to_file=True, default_log_level=DCCSI_LOGLEVEL) -else: - _LOGGER = initialize_logger(_PACKAGENAME, log_to_file=False, default_log_level=DCCSI_LOGLEVEL) +_LOGGER = initialize_logger(_PACKAGENAME, log_to_file=DCCSI_GDEBUG, default_log_level=DCCSI_LOGLEVEL) _LOGGER.debug('Initializing: {0}.'.format({_MODULENAME})) @@ -46,7 +43,7 @@ if DCCSI_DEV_MODE: APPDATA = get_datadir() # os APPDATA APPDATA_WING = Path(APPDATA, f"Wing Pro {DCCSI_WING_VERSION_MAJOR}").resolve() if APPDATA_WING.exists(): - site.addsitedir(pathlib.PureWindowsPath(APPDATA_WING).as_posix()) + site.addsitedir(APPDATA_WING.resolve()) import wingdbstub as debugger try: debugger.Ensure() @@ -75,8 +72,7 @@ def start(): try: _O3DE_DEV = Path(os.getenv('O3DE_DEV')) - _O3DE_DEV = _O3DE_DEV.resolve() - os.environ['O3DE_DEV'] = pathlib.PureWindowsPath(_O3DE_DEV).as_posix() + os.environ['O3DE_DEV'] = _O3DE_DEV.as_posix() _LOGGER.debug(f'O3DE_DEV is: {_O3DE_DEV}') except EnvironmentError as e: _LOGGER.error('O3DE engineroot not set or found') @@ -86,23 +82,22 @@ def start(): _TAG_LY_BUILD_PATH = os.getenv('TAG_LY_BUILD_PATH', 'build') _DEFAULT_BIN_PATH = Path(str(_O3DE_DEV), _TAG_LY_BUILD_PATH, 'bin', 'profile') _O3DE_BIN_PATH = Path(os.getenv('O3DE_BIN_PATH', _DEFAULT_BIN_PATH)) - _O3DE_BIN_PATH = _O3DE_BIN_PATH.resolve() - os.environ['O3DE_BIN_PATH'] = pathlib.PureWindowsPath(_O3DE_BIN_PATH).as_posix() + os.environ['O3DE_BIN_PATH'] = _O3DE_BIN_PATH.as_posix() _LOGGER.debug(f'O3DE_BIN_PATH is: {_O3DE_BIN_PATH}') - site.addsitedir(pathlib.PureWindowsPath(_O3DE_BIN_PATH).as_posix()) + site.addsitedir(_O3DE_BIN_PATH.resolve()) except EnvironmentError as e: _LOGGER.error('O3DE bin folder not set or found') raise e if running_editor: _O3DE_DEV = Path(os.getenv('O3DE_DEV', Path(azlmbr.paths.engroot))) - os.environ['O3DE_DEV'] = pathlib.PureWindowsPath(_O3DE_DEV).as_posix() + os.environ['O3DE_DEV'] = _O3DE_DEV.as_posix() _LOGGER.debug(_O3DE_DEV) _O3DE_BIN_PATH = Path(str(_O3DE_DEV),Path(azlmbr.paths.executableFolder)) _O3DE_BIN = Path(os.getenv('O3DE_BIN', _O3DE_BIN_PATH.resolve())) - os.environ['O3DE_BIN'] = pathlib.PureWindowsPath(_O3DE_BIN).as_posix() + os.environ['O3DE_BIN'] = _O3DE_BIN_PATH.as_posix() _LOGGER.debug(_O3DE_BIN) diff --git a/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/CMD_ColorGradingTools.bat b/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/CMD_ColorGradingTools.bat index 56021c0801..89dd86be80 100644 --- a/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/CMD_ColorGradingTools.bat +++ b/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/CMD_ColorGradingTools.bat @@ -34,15 +34,15 @@ SETLOCAL ENABLEDELAYEDEXPANSION IF EXIST "%~dp0User_Env.bat" CALL %~dp0User_Env.bat :: Initialize env -echo +echo. echo ... calling Env_Core.bat CALL %~dp0\Env_Core.bat -echo +echo. echo ... calling Env_Python.bat CALL %~dp0\Env_Python.bat -echo +echo. echo ... calling Env_Tools.bat CALL %~dp0\Env_Tools.bat diff --git a/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/Env_Python.bat b/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/Env_Python.bat index fc4afc964e..ffb34b06e5 100644 --- a/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/Env_Python.bat +++ b/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/Env_Python.bat @@ -27,37 +27,19 @@ echo ~ O3DE Color Grading Python Env ... echo _____________________________________________________________________ echo. -:: Python Version -:: Ideally these are set to match the O3DE python distribution -:: \python\runtime -IF "%DCCSI_PY_VERSION_MAJOR%"=="" (set DCCSI_PY_VERSION_MAJOR=3) -echo DCCSI_PY_VERSION_MAJOR = %DCCSI_PY_VERSION_MAJOR% - -:: PY version Major -IF "%DCCSI_PY_VERSION_MINOR%"=="" (set DCCSI_PY_VERSION_MINOR=7) -echo DCCSI_PY_VERSION_MINOR = %DCCSI_PY_VERSION_MINOR% - -IF "%DCCSI_PY_VERSION_RELEASE%"=="" (set DCCSI_PY_VERSION_RELEASE=10) -echo DCCSI_PY_VERSION_RELEASE = %DCCSI_PY_VERSION_RELEASE% - -:: shared location for 64bit python 3.7 DEV location -:: this defines a DCCsi sandbox for lib site-packages by version -:: \Gems\AtomLyIntegration\TechnicalArt\DccScriptingInterface\3rdParty\Python\Lib -set DCCSI_PYTHON_PATH=%DCCSIG_PATH%\3rdParty\Python -echo DCCSI_PYTHON_PATH = %DCCSI_PYTHON_PATH% - -:: add access to a Lib location that matches the py version (example: 3.7.x) -:: switch this for other python versions like maya (2.7.x) -IF "%DCCSI_PYTHON_LIB_PATH%"=="" (set DCCSI_PYTHON_LIB_PATH=%DCCSI_PYTHON_PATH%\Lib\%DCCSI_PY_VERSION_MAJOR%.x\%DCCSI_PY_VERSION_MAJOR%.%DCCSI_PY_VERSION_MINOR%.x\site-packages) -echo DCCSI_PYTHON_LIB_PATH = %DCCSI_PYTHON_LIB_PATH% - -:: add to the PATH -SET PATH=%DCCSI_PYTHON_LIB_PATH%;%PATH% - :: shared location for default O3DE python location set DCCSI_PYTHON_INSTALL=%O3DE_DEV%\Python echo DCCSI_PYTHON_INSTALL = %DCCSI_PYTHON_INSTALL% +:: Warning, many DCC tools (like Maya) include thier own versioned python interpretter. +:: Some apps may not operate correctly if PYTHONHOME is set/propogated. +:: This is definitely the case with Maya, doing so causes Maya to not boot. +FOR /F "tokens=* USEBACKQ" %%F IN (`%DCCSI_PYTHON_INSTALL%\python.cmd %DCCSI_PYTHON_INSTALL%\get_python_path.py`) DO (SET PYTHONHOME=%%F) +echo PYTHONHOME - is now the folder containing O3DE python executable +echo PYTHONHOME = %PYTHONHOME% + +SET PYTHON=%PYTHONHOME%\python.exe + :: location for O3DE python 3.7 location set DCCSI_PY_BASE=%DCCSI_PYTHON_INSTALL%\python.cmd echo DCCSI_PY_BASE = %DCCSI_PY_BASE% @@ -65,10 +47,7 @@ echo DCCSI_PY_BASE = %DCCSI_PY_BASE% :: ide and debugger plug set DCCSI_PY_DEFAULT=%DCCSI_PY_BASE% -IF "%DCCSI_PY_REV%"=="" (set DCCSI_PY_REV=rev2) -IF "%DCCSI_PY_PLATFORM%"=="" (set DCCSI_PY_PLATFORM=windows) - -set DCCSI_PY_IDE=%DCCSI_PYTHON_INSTALL%\runtime\python-%DCCSI_PY_VERSION_MAJOR%.%DCCSI_PY_VERSION_MINOR%.%DCCSI_PY_VERSION_RELEASE%-%DCCSI_PY_REV%-%DCCSI_PY_PLATFORM%\python +set DCCSI_PY_IDE=%PYTHONHOME% echo DCCSI_PY_IDE = %DCCSI_PY_IDE% :: Wing and other IDEs probably prefer access directly to the python.exe @@ -91,11 +70,6 @@ SET PATH=%DCCSI_PYTHON_INSTALL%;%DCCSI_PY_IDE%;%DCCSI_PY_IDE_PACKAGES%;%DCCSI_PY set PYTHONPATH=%DCCSIG_PATH%;%DCCSI_PYTHON_LIB_PATH%;%O3DE_BIN_PATH%;%DCCSI_COLORGRADING_SCRIPTS%;%DCCSI_FEATURECOMMON_SCRIPTS%;%PYTHONPATH% echo PYTHONPATH = %PYTHONPATH% -:: used for debugging in WingIDE (but needs to be here) -IF "%TAG_USERNAME%"=="" (set TAG_USERNAME=NOT_SET) -echo TAG_USERNAME = %TAG_USERNAME% -IF "%TAG_USERNAME%"=="NOT_SET" (echo Add TAG_USERNAME to User_Env.bat) - :: Set flag so we don't initialize dccsi environment twice SET O3DE_ENV_PY_INIT=1 GOTO END_OF_FILE diff --git a/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/User_Env.bat.template b/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/User_Env.bat.template index 973d6d5afd..7ab970c98e 100644 --- a/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/User_Env.bat.template +++ b/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/User_Env.bat.template @@ -25,11 +25,6 @@ SET TAG_LY_BUILD_PATH=build SET DCCSI_GDEBUG=True SET DCCSI_DEV_MODE=True -:: set the your user name here for windows path -SET TAG_USERNAME=NOT_SET -SET DCCSI_PY_REV=rev1 -SET DCCSI_PY_PLATFORM=windows - :: Set flag so we don't initialize dccsi environment twice SET O3DE_USER_ENV_INIT=1 GOTO END_OF_FILE diff --git a/Gems/Atom/RHI/Code/Include/Atom/RHI/CommandQueue.h b/Gems/Atom/RHI/Code/Include/Atom/RHI/CommandQueue.h index 2985581040..4ae560c816 100644 --- a/Gems/Atom/RHI/Code/Include/Atom/RHI/CommandQueue.h +++ b/Gems/Atom/RHI/Code/Include/Atom/RHI/CommandQueue.h @@ -72,6 +72,8 @@ namespace AZ AZStd::mutex m_workQueueMutex; AZStd::queue m_workQueue; AZStd::condition_variable m_workQueueCondition; + AZStd::mutex m_flushCommandsMutex; + AZStd::condition_variable m_flushCommandsCondition; AZStd::atomic_bool m_isWorkQueueEmpty; AZStd::atomic_bool m_isQuitting; }; diff --git a/Gems/Atom/RHI/Code/Include/Atom/RHI/SwapChain.h b/Gems/Atom/RHI/Code/Include/Atom/RHI/SwapChain.h index 97ac3baa90..abad1fb263 100644 --- a/Gems/Atom/RHI/Code/Include/Atom/RHI/SwapChain.h +++ b/Gems/Atom/RHI/Code/Include/Atom/RHI/SwapChain.h @@ -75,6 +75,9 @@ namespace AZ //! Return True if the swap chain prefers exclusive full screen mode and a transition happened, false otherwise. virtual bool SetExclusiveFullScreenState([[maybe_unused]]bool fullScreenState) { return false; } + //! Recreate the swapchain if it becomes invalid during presenting. This should happen at the end of the frame + //! due to images being used as attachments in the frame graph. + virtual void ProcessRecreation() {}; protected: SwapChain(); @@ -98,6 +101,14 @@ namespace AZ ////////////////////////////////////////////////////////////////////////// + //! Shutdown and clear all the images. + void ShutdownImages(); + + //! Initialized all the images. + ResultCode InitImages(); + + //! Flag indicating if swapchain recreation is needed at the end of the frame. + bool m_pendingRecreation = false; private: bool ValidateDescriptor(const SwapChainDescriptor& descriptor) const; diff --git a/Gems/Atom/RHI/Code/Source/RHI/CommandQueue.cpp b/Gems/Atom/RHI/Code/Source/RHI/CommandQueue.cpp index a365b23e94..1cee382189 100644 --- a/Gems/Atom/RHI/Code/Source/RHI/CommandQueue.cpp +++ b/Gems/Atom/RHI/Code/Source/RHI/CommandQueue.cpp @@ -71,6 +71,7 @@ namespace AZ { m_isQuitting = true; m_workQueueCondition.notify_all(); + m_flushCommandsCondition.notify_all(); if (m_thread.joinable()) { m_thread.join(); @@ -102,9 +103,10 @@ namespace AZ void CommandQueue::FlushCommands() { AZ_PROFILE_SCOPE(RHI, "CommandQueue: FlushCommands"); - while (!m_isWorkQueueEmpty && !m_isQuitting) + AZStd::unique_lock lock(m_flushCommandsMutex); + if (!m_isWorkQueueEmpty && !m_isQuitting) { - AZStd::this_thread::yield(); + m_flushCommandsCondition.wait(lock, [this]() { return m_isWorkQueueEmpty.load() || m_isQuitting.load(); }); } } @@ -119,7 +121,11 @@ namespace AZ if (m_workQueue.empty()) { - m_isWorkQueueEmpty = true; + { + AZStd::unique_lock flushCommandsLock(m_flushCommandsMutex); + m_isWorkQueueEmpty = true; + m_flushCommandsCondition.notify_all(); + } m_workQueueCondition.wait(lock, [this]() { return !m_workQueue.empty() || m_isQuitting; }); } diff --git a/Gems/Atom/RHI/Code/Source/RHI/FrameGraphAttachmentDatabase.cpp b/Gems/Atom/RHI/Code/Source/RHI/FrameGraphAttachmentDatabase.cpp index 6bac2b8c7d..388277ff59 100644 --- a/Gems/Atom/RHI/Code/Source/RHI/FrameGraphAttachmentDatabase.cpp +++ b/Gems/Atom/RHI/Code/Source/RHI/FrameGraphAttachmentDatabase.cpp @@ -134,7 +134,6 @@ namespace AZ m_scopeAttachmentLookup.clear(); m_imageAttachments.clear(); m_bufferAttachments.clear(); - m_swapChainAttachments.clear(); m_importedImageAttachments.clear(); m_importedBufferAttachments.clear(); m_transientImageAttachments.clear(); @@ -153,6 +152,13 @@ namespace AZ delete attachment; } m_attachments.clear(); + + for (auto swapchainAttachment : m_swapChainAttachments) + { + swapchainAttachment->GetSwapChain()->ProcessRecreation(); + } + + m_swapChainAttachments.clear(); } ImageDescriptor FrameGraphAttachmentDatabase::GetImageDescriptor(const AttachmentId& attachmentId) const diff --git a/Gems/Atom/RHI/Code/Source/RHI/SwapChain.cpp b/Gems/Atom/RHI/Code/Source/RHI/SwapChain.cpp index ff1f0e69a6..074eedf1b6 100644 --- a/Gems/Atom/RHI/Code/Source/RHI/SwapChain.cpp +++ b/Gems/Atom/RHI/Code/Source/RHI/SwapChain.cpp @@ -58,43 +58,68 @@ namespace AZ // Overwrite descriptor dimensions with the native ones (the ones assigned by the platform) returned by InitInternal. m_descriptor.m_dimensions = nativeDimensions; - m_images.reserve(m_descriptor.m_dimensions.m_imageCount); + resultCode = InitImages(); + } - for (uint32_t imageIdx = 0; imageIdx < m_descriptor.m_dimensions.m_imageCount; ++imageIdx) - { - m_images.emplace_back(RHI::Factory::Get().CreateImage()); - } + return resultCode; + } - InitImageRequest request; + void SwapChain::ShutdownImages() + { + // Shutdown existing set of images. + uint32_t imageSize = aznumeric_cast(m_images.size()); + for (uint32_t imageIdx = 0; imageIdx < imageSize; ++imageIdx) + { + m_images[imageIdx]->Shutdown(); + } - RHI::ImageDescriptor& imageDescriptor = request.m_descriptor; - imageDescriptor.m_dimension = RHI::ImageDimension::Image2D; - imageDescriptor.m_bindFlags = RHI::ImageBindFlags::Color; - imageDescriptor.m_size.m_width = m_descriptor.m_dimensions.m_imageWidth; - imageDescriptor.m_size.m_height = m_descriptor.m_dimensions.m_imageHeight; - imageDescriptor.m_format = m_descriptor.m_dimensions.m_imageFormat; + m_images.clear(); + } - for (uint32_t imageIdx = 0; imageIdx < m_descriptor.m_dimensions.m_imageCount; ++imageIdx) - { - request.m_image = m_images[imageIdx].get(); - request.m_imageIndex = imageIdx; + ResultCode SwapChain::InitImages() + { + ResultCode resultCode = ResultCode::Success; - resultCode = ImagePoolBase::InitImage( - request.m_image, - imageDescriptor, - [this, &request]() + m_images.reserve(m_descriptor.m_dimensions.m_imageCount); + + // If the new display mode has more buffers, add them. + for (uint32_t i = 0; i < m_descriptor.m_dimensions.m_imageCount; ++i) + { + m_images.emplace_back(RHI::Factory::Get().CreateImage()); + } + + InitImageRequest request; + + RHI::ImageDescriptor& imageDescriptor = request.m_descriptor; + imageDescriptor.m_dimension = RHI::ImageDimension::Image2D; + imageDescriptor.m_bindFlags = RHI::ImageBindFlags::Color; + imageDescriptor.m_size.m_width = m_descriptor.m_dimensions.m_imageWidth; + imageDescriptor.m_size.m_height = m_descriptor.m_dimensions.m_imageHeight; + imageDescriptor.m_format = m_descriptor.m_dimensions.m_imageFormat; + + for (uint32_t imageIdx = 0; imageIdx < m_descriptor.m_dimensions.m_imageCount; ++imageIdx) + { + request.m_image = m_images[imageIdx].get(); + request.m_imageIndex = imageIdx; + + resultCode = ImagePoolBase::InitImage( + request.m_image, imageDescriptor, + [this, &request]() { return InitImageInternal(request); }); - if (resultCode != ResultCode::Success) - { - Shutdown(); - break; - } + if (resultCode != ResultCode::Success) + { + AZ_Error("Swapchain", false, "Failed to initialize images."); + Shutdown(); + break; } } + // Reset the current index back to 0 so we match the platform swap chain. + m_currentImageIndex = 0; + return resultCode; } @@ -105,63 +130,15 @@ namespace AZ } ResultCode SwapChain::Resize(const RHI::SwapChainDimensions& dimensions) - { - // Shutdown existing set of images. - for (uint32_t imageIdx = 0; imageIdx < GetImageCount(); ++imageIdx) - { - m_images[imageIdx]->Shutdown(); - } + { + ShutdownImages(); SwapChainDimensions nativeDimensions = dimensions; ResultCode resultCode = ResizeInternal(dimensions, &nativeDimensions); if (resultCode == ResultCode::Success) { m_descriptor.m_dimensions = nativeDimensions; - m_images.reserve(m_descriptor.m_dimensions.m_imageCount); - - // If the new display mode has more buffers, add them. - while (m_images.size() < static_cast(m_descriptor.m_dimensions.m_imageCount)) - { - m_images.emplace_back(RHI::Factory::Get().CreateImage()); - } - - // If it has fewer, trim down. - while (m_images.size() > static_cast(m_descriptor.m_dimensions.m_imageCount)) - { - m_images.pop_back(); - } - - InitImageRequest request; - - RHI::ImageDescriptor& imageDescriptor = request.m_descriptor; - imageDescriptor.m_dimension = RHI::ImageDimension::Image2D; - imageDescriptor.m_bindFlags = RHI::ImageBindFlags::Color; - imageDescriptor.m_size.m_width = m_descriptor.m_dimensions.m_imageWidth; - imageDescriptor.m_size.m_height = m_descriptor.m_dimensions.m_imageHeight; - imageDescriptor.m_format = m_descriptor.m_dimensions.m_imageFormat; - - for (uint32_t imageIdx = 0; imageIdx < GetImageCount(); ++imageIdx) - { - request.m_image = m_images[imageIdx].get(); - request.m_imageIndex = imageIdx; - - resultCode = ImagePoolBase::InitImage( - request.m_image, - imageDescriptor, - [this, &request]() - { - return InitImageInternal(request); - }); - - if (resultCode != ResultCode::Success) - { - Shutdown(); - break; - } - } - - // Reset the current index back to 0 so we match the platform swap chain. - m_currentImageIndex = 0; + resultCode = InitImages(); } return resultCode; @@ -188,7 +165,7 @@ namespace AZ uint32_t SwapChain::GetImageCount() const { - return static_cast(m_images.size()); + return aznumeric_cast(m_images.size()); } uint32_t SwapChain::GetCurrentImageIndex() const @@ -209,8 +186,18 @@ namespace AZ void SwapChain::Present() { AZ_TRACE_METHOD(); - m_currentImageIndex = PresentInternal(); - AZ_Assert(m_currentImageIndex < m_images.size(), "Invalid image index"); + // Due to swapchain recreation, the images are refreshed. + // There is no need to present swapchain for this frame. + const uint32_t imageCount = aznumeric_cast(m_images.size()); + if (imageCount == 0) + { + return; + } + else + { + m_currentImageIndex = PresentInternal(); + AZ_Assert(m_currentImageIndex < imageCount, "Invalid image index"); + } } } } diff --git a/Gems/Atom/RHI/DX12/Code/Source/RHI/AsyncUploadQueue.cpp b/Gems/Atom/RHI/DX12/Code/Source/RHI/AsyncUploadQueue.cpp index 5f85d3ad03..fc80cc50d6 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/RHI/AsyncUploadQueue.cpp +++ b/Gems/Atom/RHI/DX12/Code/Source/RHI/AsyncUploadQueue.cpp @@ -33,12 +33,20 @@ namespace AZ ID3D12DeviceX* dx12Device = device.GetDevice(); m_copyQueue = CommandQueue::Create(); - + + // The async upload queue should always use the primary copy queue, + // but because this change is being made in the stabilization branch + // we will put it behind a define out of an abundance of caution, and + // change it to always do this once the change gets back to development. + #if defined(AZ_DX12_USE_PRIMARY_COPY_QUEUE_FOR_ASYNC_UPLOAD_QUEUE) + m_copyQueue = &device.GetCommandQueueContext().GetCommandQueue(RHI::HardwareQueueClass::Copy); + #else // Make a secondary Copy queue, the primary queue is owned by the CommandQueueContext CommandQueueDescriptor commandQueueDesc; commandQueueDesc.m_hardwareQueueClass = RHI::HardwareQueueClass::Copy; commandQueueDesc.m_hardwareQueueSubclass = HardwareQueueSubclass::Secondary; m_copyQueue->Init(device, commandQueueDesc); + #endif // defined(AZ_DX12_ASYNC_UPLOAD_QUEUE_USE_PRIMARY_COPY_QUEUE) m_uploadFence.Init(dx12Device, RHI::FenceState::Signaled); for (size_t i = 0; i < descriptor.m_frameCount; ++i) diff --git a/Gems/Atom/RHI/Vulkan/Code/Source/RHI/SwapChain.cpp b/Gems/Atom/RHI/Vulkan/Code/Source/RHI/SwapChain.cpp index bef2b154e1..47c92d97fb 100644 --- a/Gems/Atom/RHI/Vulkan/Code/Source/RHI/SwapChain.cpp +++ b/Gems/Atom/RHI/Vulkan/Code/Source/RHI/SwapChain.cpp @@ -59,14 +59,26 @@ namespace AZ m_swapChainBarrier.m_isValid = true; } + void SwapChain::ProcessRecreation() + { + if (m_pendingRecreation) + { + ShutdownImages(); + InvalidateNativeSwapChain(); + CreateSwapchain(); + InitImages(); + + m_pendingRecreation = false; + } + } + void SwapChain::SetVerticalSyncIntervalInternal(uint32_t previousVsyncInterval) { if (GetDescriptor().m_verticalSyncInterval == 0 || previousVsyncInterval == 0) { // The presentation mode may change when transitioning to or from a vsynced presentation mode // In this case, the swapchain must be recreated. - InvalidateNativeSwapChain(); - CreateSwapchain(); + m_pendingRecreation = true; } } @@ -231,8 +243,7 @@ namespace AZ // VK_SUBOPTIMAL_KHR is treated as success, but we better update the surface info as well. if (result == VK_ERROR_OUT_OF_DATE_KHR || result == VK_SUBOPTIMAL_KHR) { - InvalidateNativeSwapChain(); - CreateSwapchain(); + m_pendingRecreation = true; } else { @@ -246,18 +257,16 @@ namespace AZ } }; - m_presentationQueue->QueueCommand(AZStd::move(presentCommand)); - uint32_t acquiredImageIndex = GetCurrentImageIndex(); RHI::ResultCode result = AcquireNewImage(&acquiredImageIndex); if (result == RHI::ResultCode::Fail) { - InvalidateNativeSwapChain(); - CreateSwapchain(); + m_pendingRecreation = true; return 0; } else { + m_presentationQueue->QueueCommand(AZStd::move(presentCommand)); return acquiredImageIndex; } } diff --git a/Gems/Atom/RHI/Vulkan/Code/Source/RHI/SwapChain.h b/Gems/Atom/RHI/Vulkan/Code/Source/RHI/SwapChain.h index ee2ff3c207..68abc97b2d 100644 --- a/Gems/Atom/RHI/Vulkan/Code/Source/RHI/SwapChain.h +++ b/Gems/Atom/RHI/Vulkan/Code/Source/RHI/SwapChain.h @@ -51,6 +51,7 @@ namespace AZ void QueueBarrier(const VkPipelineStageFlags src, const VkPipelineStageFlags dst, const VkImageMemoryBarrier& imageBarrier); + void ProcessRecreation() override; private: SwapChain() = default; diff --git a/Gems/Atom/RPI/Assets/Textures/Defaults/DefaultFallback.png b/Gems/Atom/RPI/Assets/Textures/Defaults/DefaultFallback.png new file mode 100644 index 0000000000..1352d14edf --- /dev/null +++ b/Gems/Atom/RPI/Assets/Textures/Defaults/DefaultFallback.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb91c050a829ff03b972202cf8c90034e4f252d972332224791d135c07d9d528 +size 796 diff --git a/Gems/Atom/RPI/Assets/Textures/Defaults/Missing.png b/Gems/Atom/RPI/Assets/Textures/Defaults/Missing.png new file mode 100644 index 0000000000..198d034892 --- /dev/null +++ b/Gems/Atom/RPI/Assets/Textures/Defaults/Missing.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7028c8db4f935f23aa4396668278a67691d92fe345cc9d417a9f47bd9a4af32b +size 8130 diff --git a/Gems/Atom/RPI/Assets/Textures/Defaults/Missing.png.assetinfo b/Gems/Atom/RPI/Assets/Textures/Defaults/Missing.png.assetinfo new file mode 100644 index 0000000000..264a7f2a25 --- /dev/null +++ b/Gems/Atom/RPI/Assets/Textures/Defaults/Missing.png.assetinfo @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Gems/Atom/RPI/Assets/Textures/Defaults/Processing.png b/Gems/Atom/RPI/Assets/Textures/Defaults/Processing.png new file mode 100644 index 0000000000..14c3ec76b0 --- /dev/null +++ b/Gems/Atom/RPI/Assets/Textures/Defaults/Processing.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7d94b9c0a77741736b93d8ed4d2b22bc9ae4cf649f3d8b3f10cbaf595a3ed31 +size 8336 diff --git a/Gems/Atom/RPI/Assets/Textures/Defaults/Processing.png.assetinfo b/Gems/Atom/RPI/Assets/Textures/Defaults/Processing.png.assetinfo new file mode 100644 index 0000000000..4a234ef9f3 --- /dev/null +++ b/Gems/Atom/RPI/Assets/Textures/Defaults/Processing.png.assetinfo @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Gems/Atom/RPI/Assets/Textures/Defaults/ProcessingFailed.png b/Gems/Atom/RPI/Assets/Textures/Defaults/ProcessingFailed.png new file mode 100644 index 0000000000..aafdcc2681 --- /dev/null +++ b/Gems/Atom/RPI/Assets/Textures/Defaults/ProcessingFailed.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bbd45e3ef81850da81d1cc01775930a53c424e64e287b00990af3e7e6a682ba +size 9701 diff --git a/Gems/Atom/RPI/Assets/Textures/Defaults/ProcessingFailed.png.assetinfo b/Gems/Atom/RPI/Assets/Textures/Defaults/ProcessingFailed.png.assetinfo new file mode 100644 index 0000000000..747ce3e0e2 --- /dev/null +++ b/Gems/Atom/RPI/Assets/Textures/Defaults/ProcessingFailed.png.assetinfo @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Gems/Atom/RPI/Assets/seedList.seed b/Gems/Atom/RPI/Assets/seedList.seed index 300092e6c3..622638d698 100644 --- a/Gems/Atom/RPI/Assets/seedList.seed +++ b/Gems/Atom/RPI/Assets/seedList.seed @@ -24,6 +24,22 @@ + + + + + + + + + + + + + + + + diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Common/AssetUtils.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Common/AssetUtils.h index bd11965ffa..f758019cfb 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Common/AssetUtils.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Common/AssetUtils.h @@ -12,6 +12,7 @@ #include #include +#include namespace AZ { @@ -21,21 +22,24 @@ namespace AZ { // Declarations... - Outcome MakeAssetId(const AZStd::string& sourcePath, uint32_t productSubId); + // Note that these functions default to TraceLevel::Error to preserve legacy behavior of these APIs. It would be nice to make the default match + // RPI.Reflect/Asset/AssetUtils.h which is TraceLevel::Warning, but we are close to a release so it isn't worth the risk at this time. - Outcome MakeAssetId(const AZStd::string& originatingSourcePath, const AZStd::string& referencedSourceFilePath, uint32_t productSubId); + Outcome MakeAssetId(const AZStd::string& sourcePath, uint32_t productSubId, TraceLevel reporting = TraceLevel::Error); + + Outcome MakeAssetId(const AZStd::string& originatingSourcePath, const AZStd::string& referencedSourceFilePath, uint32_t productSubId, TraceLevel reporting = TraceLevel::Error); template - Outcome> LoadAsset(const AZStd::string& sourcePath, uint32_t productSubId = 0); + Outcome> LoadAsset(const AZStd::string& sourcePath, uint32_t productSubId = 0, TraceLevel reporting = TraceLevel::Error); template - Outcome> LoadAsset(const AZStd::string& originatingSourcePath, const AZStd::string& referencedSourceFilePath, uint32_t productSubId = 0); + Outcome> LoadAsset(const AZStd::string& originatingSourcePath, const AZStd::string& referencedSourceFilePath, uint32_t productSubId = 0, TraceLevel reporting = TraceLevel::Error); template - Outcome> LoadAsset(const AZ::Data::AssetId& assetId, const char* sourcePathForDebug); + Outcome> LoadAsset(const AZ::Data::AssetId& assetId, const char* sourcePathForDebug, TraceLevel reporting = TraceLevel::Error); template - Outcome> LoadAsset(const AZ::Data::AssetId& assetId); + Outcome> LoadAsset(const AZ::Data::AssetId& assetId, TraceLevel reporting = TraceLevel::Error); //! Attempts to resolve the full path to a product asset given its ID AZStd::string GetProductPathByAssetId(const AZ::Data::AssetId& assetId); @@ -65,12 +69,12 @@ namespace AZ // Definitions... template - Outcome> LoadAsset(const AZStd::string& sourcePath, uint32_t productSubId) + Outcome> LoadAsset(const AZStd::string& sourcePath, uint32_t productSubId, TraceLevel reporting) { - auto assetId = MakeAssetId(sourcePath, productSubId); + auto assetId = MakeAssetId(sourcePath, productSubId, reporting); if (assetId.IsSuccess()) { - return LoadAsset(assetId.GetValue(), sourcePath.c_str()); + return LoadAsset(assetId.GetValue(), sourcePath.c_str(), reporting); } else { @@ -79,20 +83,20 @@ namespace AZ } template - Outcome> LoadAsset(const AZStd::string& originatingSourcePath, const AZStd::string& referencedSourceFilePath, uint32_t productSubId) + Outcome> LoadAsset(const AZStd::string& originatingSourcePath, const AZStd::string& referencedSourceFilePath, uint32_t productSubId, TraceLevel reporting) { AZStd::string resolvedPath = ResolvePathReference(originatingSourcePath, referencedSourceFilePath); - return LoadAsset(resolvedPath, productSubId); + return LoadAsset(resolvedPath, productSubId, reporting); } template - Outcome> LoadAsset(const AZ::Data::AssetId& assetId) + Outcome> LoadAsset(const AZ::Data::AssetId& assetId, TraceLevel reporting) { - return LoadAsset(assetId, nullptr); + return LoadAsset(assetId, nullptr, reporting); } template - Outcome> LoadAsset(const AZ::Data::AssetId& assetId, [[maybe_unused]] const char* sourcePathForDebug) + Outcome> LoadAsset(const AZ::Data::AssetId& assetId, [[maybe_unused]] const char* sourcePathForDebug, TraceLevel reporting) { if (nullptr == AZ::IO::FileIOBase::GetInstance()->GetAlias("@products@")) { @@ -111,11 +115,11 @@ namespace AZ } else { - AZ_Error("AssetUtils", false, "Could not load %s [Source='%s' Cache='%s' AssetID=%s] ", + AssetUtilsInternal::ReportIssue(reporting, AZStd::string::format("Could not load %s [Source='%s' Cache='%s' AssetID=%s] ", AzTypeInfo::Name(), sourcePathForDebug ? sourcePathForDebug : "", asset.GetHint().empty() ? "" : asset.GetHint().c_str(), - assetId.ToString().c_str()); + assetId.ToString().c_str()).c_str()); return AZ::Failure(); } diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Material/MaterialUtils.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Material/MaterialUtils.h index d12e848a02..c1183c7aa1 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Material/MaterialUtils.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Material/MaterialUtils.h @@ -28,7 +28,18 @@ namespace AZ namespace MaterialUtils { - Outcome> GetImageAssetReference(AZStd::string_view materialSourceFilePath, const AZStd::string imageFilePath); + enum class GetImageAssetResult + { + Empty, //! No image was actually requested, the path was empty + Found, //! The requested asset was found + Missing //! The requested asset was not found, and a placeholder asset was used instead + }; + + //! Finds an ImageAsset referenced by a material file (or a placeholder) + //! @param imageAsset the resulting ImageAsset + //! @param materialSourceFilePath the full path to a material source file that is referenfing an image file + //! @param imageFilePath the path to an image source file, which could be relative to the asset root or relative to the material file + GetImageAssetResult GetImageAssetReference(Data::Asset& imageAsset, AZStd::string_view materialSourceFilePath, const AZStd::string imageFilePath); //! Resolve an enum to a uint32_t given its name and definition array (in MaterialPropertyDescriptor). //! @param propertyDescriptor it contains the definition of all enum names in an array. diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderVariantAssetCreator.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderVariantAssetCreator.h index fd069f21e0..488bfb09f8 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderVariantAssetCreator.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderVariantAssetCreator.h @@ -40,7 +40,7 @@ namespace AZ //! Set the timestamp value when the ProcessJob() started. //! This is needed to synchronize between the ShaderAsset and ShaderVariantAsset when hot-reloading shaders. //! The idea is that this timestamp must be greater or equal than the ShaderAsset. - void SetBuildTimestamp(AZStd::sys_time_t buildTimestamp); + void SetBuildTimestamp(AZ::u64 buildTimestamp); //! Assigns a shaderStageFunction, which contains the byte code, to the slot dictated by the shader stage. void SetShaderFunction(RHI::ShaderStage shaderStage, RHI::Ptr shaderStageFunction); diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/AuxGeom/AuxGeomDraw.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/AuxGeom/AuxGeomDraw.h index 474d0d5b9e..29b127407e 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/AuxGeom/AuxGeomDraw.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/AuxGeom/AuxGeomDraw.h @@ -147,6 +147,30 @@ namespace AZ //! @param viewProjOverrideIndex Which view projection override entry to use, -1 if unused virtual void DrawSphere( const AZ::Vector3& center, float radius, const AZ::Color& color, DrawStyle style = DrawStyle::Shaded, DepthTest depthTest = DepthTest::On, DepthWrite depthWrite = DepthWrite::On, FaceCullMode faceCull = FaceCullMode::Back, int32_t viewProjOverrideIndex = -1) = 0; + //! Draw a sphere. + //! @param center The center of the sphere. + //! @param direction The direction vector. The Pole of the hemisphere will point along this vector. + //! @param radius The radius. + //! @param color The color to draw the sphere. + //! @param style The draw style (point, wireframe, solid, shaded etc). + //! @param depthTest If depth testing should be enabled + //! @param depthWrite If depth writing should be enabled + //! @param faceCull Which (if any) facing triangles should be culled + //! @param viewProjOverrideIndex Which view projection override entry to use, -1 if unused + virtual void DrawSphere(const AZ::Vector3& center, const AZ::Vector3& direction, float radius, const AZ::Color& color, DrawStyle style = DrawStyle::Shaded, DepthTest depthTest = DepthTest::On, DepthWrite depthWrite = DepthWrite::On, FaceCullMode faceCull = FaceCullMode::Back, int32_t viewProjOverrideIndex = -1) = 0; + + //! Draw a hemisphere. + //! @param center The center of the sphere. + //! @param direction The direction vector. The Pole of the hemisphere will point along this vector. + //! @param radius The radius. + //! @param color The color to draw the sphere. + //! @param style The draw style (point, wireframe, solid, shaded etc). + //! @param depthTest If depth testing should be enabled + //! @param depthWrite If depth writing should be enabled + //! @param faceCull Which (if any) facing triangles should be culled + //! @param viewProjOverrideIndex Which view projection override entry to use, -1 if unused + virtual void DrawHemisphere( const AZ::Vector3& center, const AZ::Vector3& direction, float radius, const AZ::Color& color, DrawStyle style = DrawStyle::Shaded, DepthTest depthTest = DepthTest::On, DepthWrite depthWrite = DepthWrite::On, FaceCullMode faceCull = FaceCullMode::Back, int32_t viewProjOverrideIndex = -1) = 0; + //! Draw a disk. //! @param center The center of the disk. //! @param direction The direction vector. The disk will be orthogonal this vector. @@ -172,7 +196,7 @@ namespace AZ //! @param viewProjOverrideIndex Which view projection override entry to use, -1 if unused virtual void DrawCone(const AZ::Vector3& center, const AZ::Vector3& direction, float radius, float height, const AZ::Color& color, DrawStyle style = DrawStyle::Shaded, DepthTest depthTest = DepthTest::On, DepthWrite depthWrite = DepthWrite::On, FaceCullMode faceCull = FaceCullMode::Back, int32_t viewProjOverrideIndex = -1) = 0; - //! Draw a cylinder. + //! Draw a cylinder (with flat disks on the end). //! @param center The center of the base circle. //! @param direction The direction vector. The top end cap of the cylinder will face along this vector. //! @param radius The radius. @@ -185,6 +209,19 @@ namespace AZ //! @param viewProjOverrideIndex Which view projection override entry to use, -1 if unused virtual void DrawCylinder(const AZ::Vector3& center, const AZ::Vector3& direction, float radius, float height, const AZ::Color& color, DrawStyle style = DrawStyle::Shaded, DepthTest depthTest = DepthTest::On, DepthWrite depthWrite = DepthWrite::On, FaceCullMode faceCull = FaceCullMode::Back, int32_t viewProjOverrideIndex = -1) = 0; + //! Draw a cylinder without flat disk on the end. + //! @param center The center of the base circle. + //! @param direction The direction vector. The top end cap of the cylinder will face along this vector. + //! @param radius The radius. + //! @param height The height of the cylinder. + //! @param color The color to draw the cylinder. + //! @param style The draw style (point, wireframe, solid, shaded etc). + //! @param depthTest If depth testing should be enabled + //! @param depthWrite If depth writing should be enabled + //! @param faceCull Which (if any) facing triangles should be culled + //! @param viewProjOverrideIndex Which view projection override entry to use, -1 if unused + virtual void DrawCylinderNoEnds(const AZ::Vector3& center, const AZ::Vector3& direction, float radius, float height, const AZ::Color& color, DrawStyle style = DrawStyle::Shaded, DepthTest depthTest = DepthTest::On, DepthWrite depthWrite = DepthWrite::On, FaceCullMode faceCull = FaceCullMode::Back, int32_t viewProjOverrideIndex = -1) = 0; + //! Draw an axis-aligned bounding box with no transform. //! @param aabb The AABB (typically the bounding box of a set of world space points). //! @param color The color to draw the box. diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Image/ImageSystemInterface.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Image/ImageSystemInterface.h index f567881c50..920b763bc3 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Image/ImageSystemInterface.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Image/ImageSystemInterface.h @@ -29,6 +29,14 @@ namespace AZ Count }; + namespace DefaultImageAssetPaths + { + static constexpr char DefaultFallback[] = "textures/defaults/defaultfallback.png.streamingimage"; + static constexpr char Processing[] = "textures/defaults/processing.png.streamingimage"; + static constexpr char ProcessingFailed[] = "textures/defaults/processingfailed.png.streamingimage"; + static constexpr char Missing[] = "textures/defaults/missing.png.streamingimage"; + } + class ImageSystemInterface { public: diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/PassFilter.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/PassFilter.h index c42991725e..b93458113b 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/PassFilter.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/PassFilter.h @@ -56,8 +56,8 @@ namespace AZ OwnerRenderPipeline = AZ_BIT(5) }; - void SetOwenrScene(const Scene* scene); - void SetOwenrRenderPipeline(const RenderPipeline* renderPipeline); + void SetOwnerScene(const Scene* scene); + void SetOwnerRenderPipeline(const RenderPipeline* renderPipeline); void SetPassName(Name passName); void SetTemplateName(Name passTemplateName); void SetPassClass(TypeId passClassTypeId); diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/RenderPass.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/RenderPass.h index ec51e34897..bdd305b4eb 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/RenderPass.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/RenderPass.h @@ -62,6 +62,10 @@ namespace AZ //! It may return nullptr if this pass is independent with any views. ViewPtr GetView() const; + // Add a srg to srg list to be bound for this pass + void BindSrg(const RHI::ShaderResourceGroup* srg); + + protected: explicit RenderPass(const PassDescriptor& descriptor); @@ -95,9 +99,6 @@ namespace AZ // Clear the srg list void ResetSrgs(); - // Add a srg to srg list to be bound for this pass - void BindSrg(const RHI::ShaderResourceGroup* srg); - // Set srgs for pass's execution void SetSrgsForDraw(RHI::CommandList* commandList); void SetSrgsForDispatch(RHI::CommandList* commandList); diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/RPISystem.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/RPISystem.h index 9138c0b418..57f595ccba 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/RPISystem.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/RPISystem.h @@ -97,7 +97,7 @@ namespace AZ // SystemTickBus::OnTick void OnSystemTick() override; - float GetCurrentTime(); + float GetCurrentTime() const; // The set of core asset handlers registered by the system. AZStd::vector> m_assetHandlers; @@ -123,7 +123,6 @@ namespace AZ // The job policy used for feature processor's rendering prepare RHI::JobPolicy m_prepareRenderJobPolicy = RHI::JobPolicy::Parallel; - ScriptTimePoint m_startTime; float m_currentSimulationTime = 0.0f; RPISystemDescriptor m_descriptor; diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/View.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/View.h index cdaf59ff75..eb3592944d 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/View.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/View.h @@ -92,6 +92,8 @@ namespace AZ const AZ::Matrix4x4& GetViewToWorldMatrix() const; const AZ::Matrix4x4& GetViewToClipMatrix() const; const AZ::Matrix4x4& GetWorldToClipMatrix() const; + const AZ::Matrix4x4& GetClipToWorldMatrix() const; + //! Get the camera's world transform, converted from the viewToWorld matrix's native y-up to z-up AZ::Transform GetCameraTransform() const; @@ -130,17 +132,22 @@ namespace AZ //! Returns the masked occlusion culling interface MaskedOcclusionCulling* GetMaskedOcclusionCulling(); + //! This is called by RenderPipeline when this view is added to the pipeline. + void OnAddToRenderPipeline(); + private: View() = delete; View(const AZ::Name& name, UsageFlags usage); - //! Sorts the finalized draw lists in this view void SortFinalizedDrawLists(); //! Sorts a drawList using the sort function from a pass with the corresponding drawListTag void SortDrawList(RHI::DrawList& drawList, RHI::DrawListTag tag); + //! Attempt to create a shader resource group. + void TryCreateShaderResourceGroup(); + AZ::Name m_name; UsageFlags m_usageFlags; diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/ViewportContextBus.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/ViewportContextBus.h index 0b53172ba2..2b83903dd1 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/ViewportContextBus.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/ViewportContextBus.h @@ -67,6 +67,9 @@ namespace AZ virtual ViewportContextPtr GetViewportContextByName(const Name& contextName) const = 0; //! Gets the registered ViewportContext with the corresponding ID, if any. virtual ViewportContextPtr GetViewportContextById(AzFramework::ViewportId id) const = 0; + //! Gets the registered ViewportContext with matching RPI::Scene, if any. + //! This function will return the first result. + virtual ViewportContextPtr GetViewportContextByScene(const Scene* scene) const = 0; //! Maps a ViewportContext to a new name, inheriting the View stack (if any) registered to that context name. //! This can be used to switch "default" viewports by registering a viewport with the default ViewportContext name //! but note that only one ViewportContext can be mapped to a context name at a time. diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/ViewportContextManager.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/ViewportContextManager.h index 65576f97d3..2672ede9f5 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/ViewportContextManager.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/ViewportContextManager.h @@ -41,6 +41,7 @@ namespace AZ bool PopView(const Name& contextName, ViewPtr view) override; ViewPtr GetCurrentView(const Name& contextName) const override; ViewportContextPtr GetDefaultViewportContext() const override; + ViewportContextPtr GetViewportContextByScene(const Scene* scene) const override; private: void RegisterViewportContext(const Name& contextName, ViewportContextPtr viewportContext); diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Image/StreamingImageAssetHandler.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Image/StreamingImageAssetHandler.h index 3f4e15744a..b3b62cbc31 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Image/StreamingImageAssetHandler.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Image/StreamingImageAssetHandler.h @@ -25,6 +25,9 @@ namespace AZ const Data::Asset& asset, AZStd::shared_ptr stream, const Data::AssetFilterCB& assetLoadFilterCB) override; + + // Return a default fallback image if an asset is missing + Data::AssetId AssetMissingInCatalog(const Data::Asset& /*asset*/) override; }; } } diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAsset.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAsset.h index 711ebb61a7..70451bd055 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAsset.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAsset.h @@ -294,7 +294,7 @@ namespace AZ Name m_drawListName; //! Use to synchronize versions of the ShaderAsset and ShaderVariantTreeAsset, especially during hot-reload. - AZStd::sys_time_t m_buildTimestamp = 0; + AZ::u64 m_buildTimestamp = 0; /////////////////////////////////////////////////////////////////// diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderVariantAsset.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderVariantAsset.h index 66bbd7b188..5146ae370a 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderVariantAsset.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderVariantAsset.h @@ -61,7 +61,7 @@ namespace AZ //! Return the timestamp when this asset was built, and it must be >= than the timestamp of the main ShaderAsset. //! This is used to synchronize versions of the ShaderAsset and ShaderVariantAsset, especially during hot-reload. - AZStd::sys_time_t GetBuildTimestamp() const; + AZ::u64 GetBuildTimestamp() const; bool IsRootVariant() const { return m_stableId == RPI::RootShaderVariantStableId; } @@ -80,7 +80,7 @@ namespace AZ AZStd::array, RHI::ShaderStageCount> m_functionsByStage; //! Used to synchronize versions of the ShaderAsset and ShaderVariantAsset, especially during hot-reload. - AZStd::sys_time_t m_buildTimestamp = 0; + AZ::u64 m_buildTimestamp = 0; }; class ShaderVariantAssetHandler final diff --git a/Gems/Atom/RPI/Code/Source/RPI.Builders/Material/MaterialBuilder.cpp b/Gems/Atom/RPI/Code/Source/RPI.Builders/Material/MaterialBuilder.cpp index e9cebf29c7..f11b2f94ac 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Builders/Material/MaterialBuilder.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Builders/Material/MaterialBuilder.cpp @@ -63,11 +63,21 @@ namespace AZ { BusDisconnect(); } + + bool MaterialBuilder::ReportMaterialAssetWarningsAsErrors() const + { + bool warningsAsErrors = false; + if (auto settingsRegistry = AZ::SettingsRegistry::Get(); settingsRegistry != nullptr) + { + settingsRegistry->Get(warningsAsErrors, "/O3DE/Atom/RPI/MaterialBuilder/WarningsAsErrors"); + } + return warningsAsErrors; + } //! Adds all relevant dependencies for a referenced source file, considering that the path might be relative to the original file location or a full asset path. //! This will usually include multiple source dependencies and a single job dependency, but will include only source dependencies if the file is not found. //! Note the AssetBuilderSDK::JobDependency::m_platformIdentifier will not be set by this function. The calling code must set this value before passing back - //! to the AssetBuilderSDK::CreateJobsResponse. If isOrderedOnceForMaterialTypes is true and the dependency is a materialtype file, the job dependency type + //! to the AssetBuilderSDK::CreateJobsResponse. If isOrderedOnceForMaterialTypes is true and the dependency is a .materialtype file, the job dependency type //! will be set to JobDependencyType::OrderOnce. void AddPossibleDependencies(AZStd::string_view currentFilePath, AZStd::string_view referencedParentPath, @@ -277,8 +287,8 @@ namespace AZ return materialTypeAssetOutcome.GetValue(); } - - AZ::Data::Asset CreateMaterialAsset(AZStd::string_view materialSourceFilePath, const rapidjson::Value& json) + + AZ::Data::Asset MaterialBuilder::CreateMaterialAsset(AZStd::string_view materialSourceFilePath, const rapidjson::Value& json) const { auto material = LoadSourceData(json, materialSourceFilePath); @@ -292,7 +302,7 @@ namespace AZ return {}; } - auto materialAssetOutcome = material.GetValue().CreateMaterialAsset(Uuid::CreateRandom(), materialSourceFilePath, true); + auto materialAssetOutcome = material.GetValue().CreateMaterialAsset(Uuid::CreateRandom(), materialSourceFilePath, ReportMaterialAssetWarningsAsErrors()); if (!materialAssetOutcome.IsSuccess()) { return {}; diff --git a/Gems/Atom/RPI/Code/Source/RPI.Builders/Material/MaterialBuilder.h b/Gems/Atom/RPI/Code/Source/RPI.Builders/Material/MaterialBuilder.h index afb0789dcf..4fa5f3cf10 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Builders/Material/MaterialBuilder.h +++ b/Gems/Atom/RPI/Code/Source/RPI.Builders/Material/MaterialBuilder.h @@ -9,6 +9,8 @@ #pragma once #include +#include +#include namespace AZ { @@ -37,6 +39,9 @@ namespace AZ private: + AZ::Data::Asset CreateMaterialAsset(AZStd::string_view materialSourceFilePath, const rapidjson::Value& json) const; + bool ReportMaterialAssetWarningsAsErrors() const; + bool m_isShuttingDown = false; }; diff --git a/Gems/Atom/RPI/Code/Source/RPI.Builders/Model/ModelAssetBuilderComponent.cpp b/Gems/Atom/RPI/Code/Source/RPI.Builders/Model/ModelAssetBuilderComponent.cpp index 9fc99e3ea4..dbf0fea791 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Builders/Model/ModelAssetBuilderComponent.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Builders/Model/ModelAssetBuilderComponent.cpp @@ -2088,7 +2088,7 @@ namespace AZ AZ::Vector3 vpos; //note: it seems to be fastest to reuse a local Vector3 rather than constructing new ones each loop iteration for (uint32_t i = 0; i < elementCount; ++i) { - vpos.Set(const_cast(reinterpret_cast(&buffer[i]))); + vpos.Set(reinterpret_cast(&buffer[i])); aabb.AddPoint(vpos); } } diff --git a/Gems/Atom/RPI/Code/Source/RPI.Builders/Model/ModelExporterComponent.h b/Gems/Atom/RPI/Code/Source/RPI.Builders/Model/ModelExporterComponent.h index ee4bce634d..de4e1a0fe5 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Builders/Model/ModelExporterComponent.h +++ b/Gems/Atom/RPI/Code/Source/RPI.Builders/Model/ModelExporterComponent.h @@ -25,7 +25,7 @@ namespace AZ namespace RPI { /** - * This is the central component that drive the process of exporting a scene to Model + * This is the central component that drive the process of exporting a scene to Model * and Material assets. It delegates asset-build duties to other components like * ModelAssetBuilderComponent and MaterialAssetBuilderComponent via export events. */ @@ -55,7 +55,7 @@ namespace AZ AZStd::string_view m_relativeFileName; AZStd::string_view m_extension; - const Uuid m_sourceUuid; + const Uuid m_sourceUuid = Uuid::CreateNull(); const DataStream::StreamType m_dataStreamType = DataStream::ST_BINARY; }; diff --git a/Gems/Atom/RPI/Code/Source/RPI.Edit/Common/AssetUtils.cpp b/Gems/Atom/RPI/Code/Source/RPI.Edit/Common/AssetUtils.cpp index c940ef808b..e2877aa163 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Edit/Common/AssetUtils.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Edit/Common/AssetUtils.cpp @@ -10,6 +10,7 @@ #include #include #include +#include namespace AZ { @@ -46,6 +47,12 @@ namespace AZ AZStd::string ResolvePathReference(const AZStd::string& originatingSourceFilePath, const AZStd::string& referencedSourceFilePath) { + // The IsAbsolute part prevents "second join parameter is an absolute path" warnings in StringFunc::Path::Join below + if (referencedSourceFilePath.empty() || AZ::IO::PathView{referencedSourceFilePath}.IsAbsolute()) + { + return referencedSourceFilePath; + } + AZStd::string normalizedReferencedPath = referencedSourceFilePath; AzFramework::StringFunc::Path::Normalize(normalizedReferencedPath); @@ -113,7 +120,7 @@ namespace AZ return results; } - Outcome MakeAssetId(const AZStd::string& sourcePath, uint32_t productSubId) + Outcome MakeAssetId(const AZStd::string& sourcePath, uint32_t productSubId, TraceLevel reporting) { bool assetFound = false; AZ::Data::AssetInfo sourceInfo; @@ -122,7 +129,7 @@ namespace AZ if (!assetFound) { - AZ_Error("AssetUtils", false, "Could not find asset [%s]", sourcePath.c_str()); + AssetUtilsInternal::ReportIssue(reporting, AZStd::string::format("Could not find asset [%s]", sourcePath.c_str()).c_str()); return AZ::Failure(); } else @@ -131,10 +138,10 @@ namespace AZ } } - Outcome MakeAssetId(const AZStd::string& originatingSourcePath, const AZStd::string& referencedSourceFilePath, uint32_t productSubId) + Outcome MakeAssetId(const AZStd::string& originatingSourcePath, const AZStd::string& referencedSourceFilePath, uint32_t productSubId, TraceLevel reporting) { AZStd::string resolvedPath = ResolvePathReference(originatingSourcePath, referencedSourceFilePath); - return MakeAssetId(resolvedPath, productSubId); + return MakeAssetId(resolvedPath, productSubId, reporting); } } // namespace AssetUtils } // namespace RPI diff --git a/Gems/Atom/RPI/Code/Source/RPI.Edit/Material/MaterialSourceData.cpp b/Gems/Atom/RPI/Code/Source/RPI.Edit/Material/MaterialSourceData.cpp index d6308ec655..4351213c22 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Edit/Material/MaterialSourceData.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Edit/Material/MaterialSourceData.cpp @@ -116,10 +116,11 @@ namespace AZ { m_properties = AZStd::move(newPropertyGroups); - AZ_Warning("MaterialSourceData", false, + AZ_Warning( + "MaterialSourceData", false, "This material is based on version '%u' of '%s', but the material type is now at version '%u'. " - "Automatic updates are available. Consider updating the .material source file.", - m_materialTypeVersion, m_materialType.c_str(), materialTypeSourceData.m_version); + "Automatic updates are available. Consider updating the .material source file: '%s'.", + m_materialTypeVersion, materialTypeFullPath.c_str(), materialTypeSourceData.m_version, materialSourceFilePath.data()); } m_materialTypeVersion = materialTypeSourceData.m_version; @@ -303,7 +304,7 @@ namespace AZ MaterialPropertyId propertyId{ group.first, property.first }; if (!property.second.m_value.IsValid()) { - AZ_Warning("Material source data", false, "Source data for material property value is invalid."); + materialAssetCreator.ReportWarning("Source data for material property value is invalid."); } else { @@ -317,22 +318,20 @@ namespace AZ { case MaterialPropertyDataType::Image: { - Outcome> imageAssetResult = MaterialUtils::GetImageAssetReference( - materialSourceFilePath, property.second.m_value.GetValue()); + Data::Asset imageAsset; - if (imageAssetResult.IsSuccess()) + MaterialUtils::GetImageAssetResult result = MaterialUtils::GetImageAssetReference( + imageAsset, materialSourceFilePath, property.second.m_value.GetValue()); + + if (result == MaterialUtils::GetImageAssetResult::Missing) { - auto& imageAsset = imageAssetResult.GetValue(); - // Load referenced images when load material - imageAsset.SetAutoLoadBehavior(Data::AssetLoadBehavior::PreLoad); - materialAssetCreator.SetPropertyValue(propertyId.GetFullName(), imageAsset); - } - else - { - materialAssetCreator.ReportError( + materialAssetCreator.ReportWarning( "Material property '%s': Could not find the image '%s'", propertyId.GetFullName().GetCStr(), property.second.m_value.GetValue().data()); } + + imageAsset.SetAutoLoadBehavior(Data::AssetLoadBehavior::PreLoad); + materialAssetCreator.SetPropertyValue(propertyId.GetFullName(), imageAsset); } break; case MaterialPropertyDataType::Enum: diff --git a/Gems/Atom/RPI/Code/Source/RPI.Edit/Material/MaterialTypeSourceData.cpp b/Gems/Atom/RPI/Code/Source/RPI.Edit/Material/MaterialTypeSourceData.cpp index d5551e89ae..d8e6c156be 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Edit/Material/MaterialTypeSourceData.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Edit/Material/MaterialTypeSourceData.cpp @@ -451,20 +451,21 @@ namespace AZ { case MaterialPropertyDataType::Image: { - auto imageAssetResult = MaterialUtils::GetImageAssetReference( - materialTypeSourceFilePath, property.m_value.GetValue()); + Data::Asset imageAsset; - if (imageAssetResult) - { - auto imageAsset = imageAssetResult.GetValue(); - materialTypeAssetCreator.SetPropertyValue(propertyId.GetFullName(), imageAsset); - } - else + MaterialUtils::GetImageAssetResult result = MaterialUtils::GetImageAssetReference( + imageAsset, materialTypeSourceFilePath, property.m_value.GetValue()); + + if (result == MaterialUtils::GetImageAssetResult::Missing) { materialTypeAssetCreator.ReportError( "Material property '%s': Could not find the image '%s'", propertyId.GetFullName().GetCStr(), property.m_value.GetValue().data()); } + else + { + materialTypeAssetCreator.SetPropertyValue(propertyId.GetFullName(), imageAsset); + } } break; case MaterialPropertyDataType::Enum: diff --git a/Gems/Atom/RPI/Code/Source/RPI.Edit/Material/MaterialUtils.cpp b/Gems/Atom/RPI/Code/Source/RPI.Edit/Material/MaterialUtils.cpp index 90ce9e66ce..7fff8d81bc 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Edit/Material/MaterialUtils.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Edit/Material/MaterialUtils.cpp @@ -28,25 +28,36 @@ namespace AZ { namespace MaterialUtils { - Outcome> GetImageAssetReference(AZStd::string_view materialSourceFilePath, const AZStd::string imageFilePath) + GetImageAssetResult GetImageAssetReference(Data::Asset& imageAsset, AZStd::string_view materialSourceFilePath, const AZStd::string imageFilePath) { + imageAsset = {}; + if (imageFilePath.empty()) { // The image value was present but specified an empty string, meaning the texture asset should be explicitly cleared. - return AZ::Success(Data::Asset()); + return GetImageAssetResult::Empty; } else { - Outcome imageAssetId = AssetUtils::MakeAssetId(materialSourceFilePath, imageFilePath, StreamingImageAsset::GetImageAssetSubId()); + // We use TraceLevel::None because fallback textures are available and we'll return GetImageAssetResult::Missing below in that case. + // Callers of GetImageAssetReference will be responsible for logging warnings or errors as needed. + + Outcome imageAssetId = AssetUtils::MakeAssetId(materialSourceFilePath, imageFilePath, StreamingImageAsset::GetImageAssetSubId(), AssetUtils::TraceLevel::None); + if (!imageAssetId.IsSuccess()) { - return AZ::Failure(); - } - else - { - Data::Asset unloadedImageAssetReference(imageAssetId.GetValue(), azrtti_typeid(), imageFilePath); - return AZ::Success(unloadedImageAssetReference); + // When the AssetId cannot be found, we don't want to outright fail, because the runtime has mechanisms for displaying fallback textures which gives the + // user a better recovery workflow. On the other hand we can't just provide an empty/invalid Asset because that would be interpreted as simply + // no value was present and result in using no texture, and this would amount to a silent failure. + // So we use a randomly generated (well except for the "BADA55E7" bit ;) UUID which the runtime and tools will interpret as a missing asset and represent + // it as such. + static const Uuid InvalidAssetPlaceholderId = "{BADA55E7-1A1D-4940-B655-9D08679BD62F}"; + imageAsset = Data::Asset{InvalidAssetPlaceholderId, azrtti_typeid(), imageFilePath}; + return GetImageAssetResult::Missing; } + + imageAsset = Data::Asset{imageAssetId.GetValue(), azrtti_typeid(), imageFilePath}; + return GetImageAssetResult::Found; } } diff --git a/Gems/Atom/RPI/Code/Source/RPI.Edit/Shader/ShaderVariantAssetCreator.cpp b/Gems/Atom/RPI/Code/Source/RPI.Edit/Shader/ShaderVariantAssetCreator.cpp index e0e83cfce2..5b32edc0bf 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Edit/Shader/ShaderVariantAssetCreator.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Edit/Shader/ShaderVariantAssetCreator.cpp @@ -92,7 +92,7 @@ namespace AZ ///////////////////////////////////////////////////////////////////// // Methods for all shader variant types - void ShaderVariantAssetCreator::SetBuildTimestamp(AZStd::sys_time_t buildTimestamp) + void ShaderVariantAssetCreator::SetBuildTimestamp(AZ::u64 buildTimestamp) { if (ValidateIsReady()) { diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Culling.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Culling.cpp index 65508b6371..07a62eba1f 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Culling.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Culling.cpp @@ -20,7 +20,6 @@ #include #include #include -#include #include #include #include diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/PassFilter.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/PassFilter.cpp index d9e458c615..d172abd81f 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/PassFilter.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/PassFilter.cpp @@ -90,13 +90,13 @@ namespace AZ return filter; } - void PassFilter::SetOwenrScene(const Scene* scene) + void PassFilter::SetOwnerScene(const Scene* scene) { m_ownerScene = scene; UpdateFilterOptions(); } - void PassFilter::SetOwenrRenderPipeline(const RenderPipeline* renderPipeline) + void PassFilter::SetOwnerRenderPipeline(const RenderPipeline* renderPipeline) { m_ownerRenderPipeline = renderPipeline; UpdateFilterOptions(); diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/RPISystem.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/RPISystem.cpp index 2b32503838..4465b8594f 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/RPISystem.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/RPISystem.cpp @@ -33,6 +33,7 @@ #include #include +#include #include @@ -276,15 +277,10 @@ namespace AZ } } - float RPISystem::GetCurrentTime() + float RPISystem::GetCurrentTime() const { - ScriptTimePoint timeAtCurrentTick; - AZ::TickRequestBus::BroadcastResult(timeAtCurrentTick, &AZ::TickRequestBus::Events::GetTimeAtCurrentTick); - - // We subtract the start time to maximize precision of the time value, since we will be converting it to a float. - double currentTime = timeAtCurrentTick.GetSeconds() - m_startTime.GetSeconds(); - - return aznumeric_cast(currentTime); + const AZ::TimeUs currentSimulationTimeUs = AZ::GetRealElapsedTimeUs(); + return AZ::TimeUsToSeconds(currentSimulationTimeUs); } void RPISystem::RenderTick() diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/RenderPipeline.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/RenderPipeline.cpp index 8d4303f187..062eaf02bd 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/RenderPipeline.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/RenderPipeline.cpp @@ -178,6 +178,10 @@ namespace AZ pipelineViews.m_views.resize(1); } ViewPtr previousView = pipelineViews.m_views[0]; + if (view) + { + view->OnAddToRenderPipeline(); + } pipelineViews.m_views[0] = view; if (previousView) @@ -238,6 +242,7 @@ namespace AZ pipelineViews.m_type = PipelineViewType::Transient; } view->SetPassesByDrawList(&pipelineViews.m_passesByDrawList); + view->OnAddToRenderPipeline(); pipelineViews.m_views.push_back(view); } } diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/Shader.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/Shader.cpp index 337eaa5455..b1ae460af6 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/Shader.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/Shader.cpp @@ -202,17 +202,17 @@ namespace AZ return; } AZ_Assert(m_asset->m_buildTimestamp == m_reloadedRootShaderVariantAsset->GetBuildTimestamp(), - "shaderAsset timeStamp=%lld, but Root ShaderVariantAsset timeStamp=%lld", + "shaderAsset '%s' timeStamp=%lld, but Root ShaderVariantAsset timeStamp=%lld", m_asset.GetHint().c_str(), m_asset->m_buildTimestamp, m_reloadedRootShaderVariantAsset->GetBuildTimestamp()); m_asset->UpdateRootShaderVariantAsset(m_supervariantIndex, m_reloadedRootShaderVariantAsset); m_reloadedRootShaderVariantAsset = {}; // Clear the temporary reference. if (ShaderReloadDebugTracker::IsEnabled()) { - auto makeTimeString = [](AZStd::sys_time_t timestamp, AZStd::sys_time_t now) + auto makeTimeString = [](AZ::u64 timestamp, AZ::u64 now) { - AZStd::sys_time_t elapsedMicroseconds = now - timestamp; - double elapsedSeconds = aznumeric_cast(elapsedMicroseconds / 1'000'000); + AZ::u64 elapsedMillis = now - timestamp; + double elapsedSeconds = aznumeric_cast(elapsedMillis / 1'000); AZStd::string timeString = AZStd::string::format("%lld (%f seconds ago)", timestamp, elapsedSeconds); return timeString; }; diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/View.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/View.cpp index 8c1e38ba58..4ad8dae41c 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/View.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/View.cpp @@ -47,18 +47,14 @@ namespace AZ { AZ_Assert(!name.IsEmpty(), "invalid name"); - // Set default matrixes. + // Set default matrices SetWorldToViewMatrix(AZ::Matrix4x4::CreateIdentity()); AZ::Matrix4x4 viewToClipMatrix; AZ::MakePerspectiveFovMatrixRH(viewToClipMatrix, AZ::Constants::HalfPi, 1, 0.1f, 1000.f, true); SetViewToClipMatrix(viewToClipMatrix); - Data::Asset viewSrgShaderAsset = RPISystemInterface::Get()->GetCommonShaderAssetForSrgs(); + TryCreateShaderResourceGroup(); - if (viewSrgShaderAsset.IsReady()) - { - m_shaderResourceGroup = ShaderResourceGroup::Create(viewSrgShaderAsset, RPISystemInterface::Get()->GetViewSrgLayout()->GetName()); - } #if AZ_TRAIT_MASKED_OCCLUSION_CULLING_SUPPORTED m_maskedOcclusionCulling = MaskedOcclusionCulling::Create(); m_maskedOcclusionCulling->SetResolution(MaskedSoftwareOcclusionCullingWidth, MaskedSoftwareOcclusionCullingHeight); @@ -125,6 +121,7 @@ namespace AZ m_worldToViewMatrix = worldToView; m_worldToClipMatrix = m_viewToClipMatrix * m_worldToViewMatrix; + m_clipToWorldMatrix = m_worldToClipMatrix.GetInverseFull(); m_onWorldToViewMatrixChange.Signal(m_worldToViewMatrix); m_onWorldToClipMatrixChange.Signal(m_worldToClipMatrix); @@ -162,6 +159,7 @@ namespace AZ m_worldToViewMatrix = m_viewToWorldMatrix.GetInverseFast(); m_worldToClipMatrix = m_viewToClipMatrix * m_worldToViewMatrix; + m_clipToWorldMatrix = m_worldToClipMatrix.GetInverseFull(); // Only signal an update when there is a change, otherwise this might block // user input from changing the value. @@ -177,6 +175,7 @@ namespace AZ m_viewToClipMatrix = viewToClip; m_worldToClipMatrix = m_viewToClipMatrix * m_worldToViewMatrix; + m_clipToWorldMatrix = m_worldToClipMatrix.GetInverseFull(); // Update z depth constant simultaneously // zNear -> n, zFar -> f @@ -227,6 +226,11 @@ namespace AZ return m_worldToClipMatrix; } + const AZ::Matrix4x4& View::GetClipToWorldMatrix() const + { + return m_clipToWorldMatrix; + } + bool View::HasDrawListTag(RHI::DrawListTag drawListTag) { return drawListTag.IsValid() && m_drawListMask[drawListTag.GetIndex()]; @@ -361,16 +365,19 @@ namespace AZ { if (m_clipSpaceOffset.IsZero()) { - Matrix4x4 worldToClipPrevMatrix = m_viewToClipPrevMatrix * m_worldToViewPrevMatrix; - m_shaderResourceGroup->SetConstant(m_worldToClipPrevMatrixConstantIndex, worldToClipPrevMatrix); - m_shaderResourceGroup->SetConstant(m_viewProjectionMatrixConstantIndex, m_worldToClipMatrix); - m_shaderResourceGroup->SetConstant(m_projectionMatrixConstantIndex, m_viewToClipMatrix); - m_shaderResourceGroup->SetConstant(m_clipToWorldMatrixConstantIndex, m_clipToWorldMatrix); - m_shaderResourceGroup->SetConstant(m_projectionMatrixInverseConstantIndex, m_viewToClipMatrix.GetInverseFull()); + if (m_shaderResourceGroup) + { + Matrix4x4 worldToClipPrevMatrix = m_viewToClipPrevMatrix * m_worldToViewPrevMatrix; + m_shaderResourceGroup->SetConstant(m_worldToClipPrevMatrixConstantIndex, worldToClipPrevMatrix); + m_shaderResourceGroup->SetConstant(m_viewProjectionMatrixConstantIndex, m_worldToClipMatrix); + m_shaderResourceGroup->SetConstant(m_projectionMatrixConstantIndex, m_viewToClipMatrix); + m_shaderResourceGroup->SetConstant(m_clipToWorldMatrixConstantIndex, m_clipToWorldMatrix); + m_shaderResourceGroup->SetConstant(m_projectionMatrixInverseConstantIndex, m_viewToClipMatrix.GetInverseFull()); + } } else { - // Offset the current and previous frame clip matricies + // Offset the current and previous frame clip matrices Matrix4x4 offsetViewToClipMatrix = m_viewToClipMatrix; offsetViewToClipMatrix.SetElement(0, 2, m_clipSpaceOffset.GetX()); offsetViewToClipMatrix.SetElement(1, 2, m_clipSpaceOffset.GetY()); @@ -379,27 +386,33 @@ namespace AZ offsetViewToClipPrevMatrix.SetElement(0, 2, m_clipSpaceOffset.GetX()); offsetViewToClipPrevMatrix.SetElement(1, 2, m_clipSpaceOffset.GetY()); - // Build other matricies dependent on the view to clip matricies + // Build other matrices dependent on the view to clip matrices Matrix4x4 offsetWorldToClipMatrix = offsetViewToClipMatrix * m_worldToViewMatrix; Matrix4x4 offsetWorldToClipPrevMatrix = offsetViewToClipPrevMatrix * m_worldToViewPrevMatrix; Matrix4x4 offsetClipToViewMatrix = offsetViewToClipMatrix.GetInverseFull(); Matrix4x4 offsetClipToWorldMatrix = m_viewToWorldMatrix * offsetClipToViewMatrix; - - m_shaderResourceGroup->SetConstant(m_worldToClipPrevMatrixConstantIndex, offsetWorldToClipPrevMatrix); - m_shaderResourceGroup->SetConstant(m_viewProjectionMatrixConstantIndex, offsetWorldToClipMatrix); - m_shaderResourceGroup->SetConstant(m_projectionMatrixConstantIndex, offsetViewToClipMatrix); - m_shaderResourceGroup->SetConstant(m_clipToWorldMatrixConstantIndex, offsetClipToWorldMatrix); - m_shaderResourceGroup->SetConstant(m_projectionMatrixInverseConstantIndex, offsetViewToClipMatrix.GetInverseFull()); + + if (m_shaderResourceGroup) + { + m_shaderResourceGroup->SetConstant(m_worldToClipPrevMatrixConstantIndex, offsetWorldToClipPrevMatrix); + m_shaderResourceGroup->SetConstant(m_viewProjectionMatrixConstantIndex, offsetWorldToClipMatrix); + m_shaderResourceGroup->SetConstant(m_projectionMatrixConstantIndex, offsetViewToClipMatrix); + m_shaderResourceGroup->SetConstant(m_clipToWorldMatrixConstantIndex, offsetClipToWorldMatrix); + m_shaderResourceGroup->SetConstant(m_projectionMatrixInverseConstantIndex, offsetViewToClipMatrix.GetInverseFull()); + } } - m_shaderResourceGroup->SetConstant(m_worldPositionConstantIndex, m_position); - m_shaderResourceGroup->SetConstant(m_viewMatrixConstantIndex, m_worldToViewMatrix); - m_shaderResourceGroup->SetConstant(m_viewMatrixInverseConstantIndex, m_worldToViewMatrix.GetInverseFull()); - m_shaderResourceGroup->SetConstant(m_zConstantsConstantIndex, m_nearZ_farZ_farZTimesNearZ_farZMinusNearZ); - m_shaderResourceGroup->SetConstant(m_unprojectionConstantsIndex, m_unprojectionConstants); + if (m_shaderResourceGroup) + { + m_shaderResourceGroup->SetConstant(m_worldPositionConstantIndex, m_position); + m_shaderResourceGroup->SetConstant(m_viewMatrixConstantIndex, m_worldToViewMatrix); + m_shaderResourceGroup->SetConstant(m_viewMatrixInverseConstantIndex, m_worldToViewMatrix.GetInverseFull()); + m_shaderResourceGroup->SetConstant(m_zConstantsConstantIndex, m_nearZ_farZ_farZTimesNearZ_farZMinusNearZ); + m_shaderResourceGroup->SetConstant(m_unprojectionConstantsIndex, m_unprojectionConstants); - m_shaderResourceGroup->Compile(); + m_shaderResourceGroup->Compile(); + } m_viewToClipPrevMatrix = m_viewToClipMatrix; m_worldToViewPrevMatrix = m_worldToViewMatrix; @@ -418,5 +431,30 @@ namespace AZ { return m_maskedOcclusionCulling; } + + void View::TryCreateShaderResourceGroup() + { + if (!m_shaderResourceGroup) + { + if (auto rpiSystemInterface = RPISystemInterface::Get()) + { + if (Data::Asset viewSrgShaderAsset = rpiSystemInterface->GetCommonShaderAssetForSrgs(); + viewSrgShaderAsset.IsReady()) + { + m_shaderResourceGroup = + ShaderResourceGroup::Create(viewSrgShaderAsset, rpiSystemInterface->GetViewSrgLayout()->GetName()); + } + } + } + } + + void View::OnAddToRenderPipeline() + { + TryCreateShaderResourceGroup(); + if (!m_shaderResourceGroup) + { + AZ_Warning("RPI::View", false, "Shader Resource Group failed to initialize"); + } + } } // namespace RPI } // namespace AZ diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/ViewportContextManager.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/ViewportContextManager.cpp index 6ea2491a0f..bba9ae7cf6 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/ViewportContextManager.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/ViewportContextManager.cpp @@ -176,6 +176,20 @@ namespace AZ return {}; } + ViewportContextPtr ViewportContextManager::GetViewportContextByScene(const Scene* scene) const + { + AZStd::lock_guard lock(m_containerMutex); + for (const auto& viewportData : m_viewportContexts) + { + ViewportContextPtr viewportContext = viewportData.second.context.lock(); + if (viewportContext && viewportContext->GetRenderScene().get() == scene) + { + return viewportContext; + } + } + return {}; + } + void ViewportContextManager::RenameViewportContext(ViewportContextPtr viewportContext, const Name& newContextName) { auto currentAssignedViewportContext = GetViewportContextByName(newContextName); diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Image/StreamingImageAssetHandler.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Image/StreamingImageAssetHandler.cpp index fa39820329..dd16c565e7 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Image/StreamingImageAssetHandler.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Image/StreamingImageAssetHandler.cpp @@ -7,6 +7,9 @@ */ #include +#include +#include +#include namespace AZ { @@ -40,5 +43,56 @@ namespace AZ return loadResult; } - } -} + + Data::AssetId StreamingImageAssetHandler::AssetMissingInCatalog(const Data::Asset& asset) + { + // Find out if the asset is missing completely, or just still processing + // and escalate the asset to the top of the list + AzFramework::AssetSystem::AssetStatus missingAssetStatus; + AzFramework::AssetSystemRequestBus::BroadcastResult( + missingAssetStatus, &AzFramework::AssetSystem::AssetSystemRequests::GetAssetStatusById, asset.GetId().m_guid); + + // Determine which fallback image to use + const char* relativePath = DefaultImageAssetPaths::DefaultFallback; + + bool useDebugFallbackImages = true; + if (auto settingsRegistry = AZ::SettingsRegistry::Get(); settingsRegistry != nullptr) + { + settingsRegistry->GetObject(useDebugFallbackImages, "/O3DE/Atom/RPI/UseDebugFallbackImages"); + } + + if (useDebugFallbackImages) + { + switch (missingAssetStatus) + { + case AzFramework::AssetSystem::AssetStatus::AssetStatus_Queued: + case AzFramework::AssetSystem::AssetStatus::AssetStatus_Compiling: + relativePath = DefaultImageAssetPaths::Processing; + break; + case AzFramework::AssetSystem::AssetStatus::AssetStatus_Failed: + relativePath = DefaultImageAssetPaths::ProcessingFailed; + break; + case AzFramework::AssetSystem::AssetStatus::AssetStatus_Missing: + case AzFramework::AssetSystem::AssetStatus::AssetStatus_Unknown: + case AzFramework::AssetSystem::AssetStatus::AssetStatus_Compiled: + relativePath = DefaultImageAssetPaths::Missing; + break; + } + } + + // Make sure the fallback image has been processed + AzFramework::AssetSystem::AssetStatus status = AzFramework::AssetSystem::AssetStatus_Unknown; + AzFramework::AssetSystemRequestBus::BroadcastResult( + status, &AzFramework::AssetSystemRequestBus::Events::CompileAssetSync, relativePath); + + // Return the asset id of the fallback image + Data::AssetId assetId{}; + bool autoRegisterIfNotFound = false; + Data::AssetCatalogRequestBus::BroadcastResult( + assetId, &Data::AssetCatalogRequestBus::Events::GetAssetIdByPath, relativePath, + azrtti_typeid(), autoRegisterIfNotFound); + + return assetId; + } + } // namespace RPI +} // namespace AZ diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Material/MaterialAsset.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Material/MaterialAsset.cpp index ac90333842..3c6947b83d 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Material/MaterialAsset.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Material/MaterialAsset.cpp @@ -226,10 +226,12 @@ namespace AZ if (changesWereApplied) { - AZ_Warning("MaterialAsset", false, + AZ_Warning( + "MaterialAsset", false, "This material is based on version '%u' of %s, but the material type is now at version '%u'. " - "Automatic updates are available. Consider updating the .material source file.", - originalVersion, m_materialTypeAsset.ToString().c_str(), m_materialTypeAsset->GetVersion()); + "Automatic updates are available. Consider updating the .material source file for '%s'.", + originalVersion, m_materialTypeAsset.ToString().c_str(), m_materialTypeAsset->GetVersion(), + GetId().ToString().c_str()); } m_materialTypeVersion = m_materialTypeAsset->GetVersion(); diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Material/MaterialPropertyValue.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Material/MaterialPropertyValue.cpp index d1017139fc..b74305613e 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Material/MaterialPropertyValue.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Material/MaterialPropertyValue.cpp @@ -118,12 +118,16 @@ namespace AZ else if (value.is>()) { result.m_value = Data::Asset( - AZStd::any_cast>(value).GetId(), azrtti_typeid()); + AZStd::any_cast>(value).GetId(), + azrtti_typeid(), + AZStd::any_cast>(value).GetHint()); } else if (value.is>()) { result.m_value = Data::Asset( - AZStd::any_cast>(value).GetId(), azrtti_typeid()); + AZStd::any_cast>(value).GetId(), + azrtti_typeid(), + AZStd::any_cast>(value).GetHint()); } else if (value.is>()) { diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Model/ModelAsset.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Model/ModelAsset.cpp index 9a432643d7..e362229d2d 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Model/ModelAsset.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Model/ModelAsset.cpp @@ -201,23 +201,11 @@ namespace AZ AZ::Vector3& normal) const { const BufferAssetView& indexBufferView = mesh.GetIndexBufferAssetView(); - const AZStd::array_view& streamBufferList = mesh.GetStreamBufferInfoList(); + const BufferAssetView* positionBufferView = mesh.GetSemanticBufferAssetView(m_positionName); - // find position semantic - const ModelLodAsset::Mesh::StreamBufferInfo* positionBuffer = nullptr; - - for (const ModelLodAsset::Mesh::StreamBufferInfo& bufferInfo : streamBufferList) + if (positionBufferView && positionBufferView->GetBufferAsset().Get()) { - if (bufferInfo.m_semantic.m_name == m_positionName) - { - positionBuffer = &bufferInfo; - break; - } - } - - if (positionBuffer && positionBuffer->m_bufferAssetView.GetBufferAsset().Get()) - { - BufferAsset* bufferAssetViewPtr = positionBuffer->m_bufferAssetView.GetBufferAsset().Get(); + BufferAsset* bufferAssetViewPtr = positionBufferView->GetBufferAsset().Get(); BufferAsset* indexAssetViewPtr = indexBufferView.GetBufferAsset().Get(); if (!bufferAssetViewPtr || !indexAssetViewPtr) @@ -225,7 +213,7 @@ namespace AZ return false; } - RHI::BufferViewDescriptor positionBufferViewDesc = bufferAssetViewPtr->GetBufferViewDescriptor(); + RHI::BufferViewDescriptor positionBufferViewDesc = positionBufferView->GetBufferViewDescriptor(); AZStd::array_view positionRawBuffer = bufferAssetViewPtr->GetBuffer(); const uint32_t positionElementSize = positionBufferViewDesc.m_elementSize; @@ -234,22 +222,28 @@ namespace AZ // Position is 3 floats if (positionElementSize != sizeof(float) * 3) { - AZ_Warning("ModelAsset", false, "unsupported mesh posiiton format, only full 3 floats per vertex are supported at the moment"); + AZ_Warning( + "ModelAsset", false, "unsupported mesh posiiton format, only full 3 floats per vertex are supported at the moment"); return false; } + RHI::BufferViewDescriptor indexBufferViewDesc = indexBufferView.GetBufferViewDescriptor(); AZStd::array_view indexRawBuffer = indexAssetViewPtr->GetBuffer(); - RHI::BufferViewDescriptor indexRawDesc = indexAssetViewPtr->GetBufferViewDescriptor(); - - bool anyHit = false; const AZ::Vector3 rayEnd = rayStart + rayDir; AZ::Vector3 a, b, c; AZ::Vector3 intersectionNormal; + bool anyHit = false; float shortestDistanceNormalized = AZStd::numeric_limits::max(); - const AZ::u32* indexPtr = reinterpret_cast(indexRawBuffer.data()); - for (uint32_t indexIter = 0; indexIter <= indexRawDesc.m_elementCount - 3; indexIter += 3, indexPtr += 3) + + const AZ::u32* indexPtr = reinterpret_cast( + indexRawBuffer.data() + (indexBufferViewDesc.m_elementOffset * indexBufferViewDesc.m_elementSize)); + const float* positionPtr = reinterpret_cast( + positionRawBuffer.data() + (positionBufferViewDesc.m_elementOffset * positionBufferViewDesc.m_elementSize)); + + constexpr int StepSize = 3; // number of values per vertex (x, y, z) + for (uint32_t indexIter = 0; indexIter < indexBufferViewDesc.m_elementCount; indexIter += StepSize, indexPtr += StepSize) { AZ::u32 index0 = indexPtr[0]; AZ::u32 index1 = indexPtr[1]; @@ -261,17 +255,17 @@ namespace AZ return false; } - const float* p = reinterpret_cast(&positionRawBuffer[index0 * positionElementSize]); - a.Set(const_cast(p)); // faster than AZ::Vector3 c-tor - - p = reinterpret_cast(&positionRawBuffer[index1 * positionElementSize]); - b.Set(const_cast(p)); - - p = reinterpret_cast(&positionRawBuffer[index2 * positionElementSize]); - c.Set(const_cast(p)); + // faster than AZ::Vector3 c-tor + const float* aRef = &positionPtr[index0 * StepSize]; + a.Set(aRef); + const float* bRef = &positionPtr[index1 * StepSize]; + b.Set(bRef); + const float* cRef = &positionPtr[index2 * StepSize]; + c.Set(cRef); float currentDistanceNormalized; - if (AZ::Intersect::IntersectSegmentTriangleCCW(rayStart, rayEnd, a, b, c, intersectionNormal, currentDistanceNormalized)) + if (AZ::Intersect::IntersectSegmentTriangleCCW( + rayStart, rayEnd, a, b, c, intersectionNormal, currentDistanceNormalized)) { anyHit = true; diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderVariantAsset.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderVariantAsset.cpp index 442fc6a79f..ec1a65a6d5 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderVariantAsset.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderVariantAsset.cpp @@ -60,7 +60,7 @@ namespace AZ } } - AZStd::sys_time_t ShaderVariantAsset::GetBuildTimestamp() const + AZ::u64 ShaderVariantAsset::GetBuildTimestamp() const { return m_buildTimestamp; } diff --git a/Gems/Atom/RPI/Code/Tests.Builders/BuilderTestFixture.h b/Gems/Atom/RPI/Code/Tests.Builders/BuilderTestFixture.h index 31c1bc6715..02e69e732c 100644 --- a/Gems/Atom/RPI/Code/Tests.Builders/BuilderTestFixture.h +++ b/Gems/Atom/RPI/Code/Tests.Builders/BuilderTestFixture.h @@ -46,7 +46,6 @@ namespace UnitTest bool DeleteEntity(const AZ::EntityId&) override { return false; } AZ::Entity* FindEntity(const AZ::EntityId&) override { return nullptr; } AZ::BehaviorContext* GetBehaviorContext() override { return nullptr; } - const char* GetAppRoot() const override { return nullptr; } const char* GetEngineRoot() const override { return nullptr; } const char* GetExecutableFolder() const override { return nullptr; } void EnumerateEntities(const EntityCallback& /*callback*/) override {} diff --git a/Gems/Atom/RPI/Code/Tests/Common/AssetManagerTestFixture.h b/Gems/Atom/RPI/Code/Tests/Common/AssetManagerTestFixture.h index ee3ad94d4f..fb88e62617 100644 --- a/Gems/Atom/RPI/Code/Tests/Common/AssetManagerTestFixture.h +++ b/Gems/Atom/RPI/Code/Tests/Common/AssetManagerTestFixture.h @@ -44,7 +44,6 @@ namespace UnitTest AZ::Entity* FindEntity(const AZ::EntityId&) override { return nullptr; } AZ::BehaviorContext* GetBehaviorContext() override { return nullptr; } AZ::JsonRegistrationContext* GetJsonRegistrationContext() override { return nullptr; } - const char* GetAppRoot() const override { return nullptr; } const char* GetEngineRoot() const override { return nullptr; } const char* GetExecutableFolder() const override { return nullptr; } void EnumerateEntities(const EntityCallback& /*callback*/) override {} diff --git a/Gems/Atom/RPI/Code/Tests/Common/RPITestFixture.cpp b/Gems/Atom/RPI/Code/Tests/Common/RPITestFixture.cpp index 5343c295d8..8c685656ba 100644 --- a/Gems/Atom/RPI/Code/Tests/Common/RPITestFixture.cpp +++ b/Gems/Atom/RPI/Code/Tests/Common/RPITestFixture.cpp @@ -69,6 +69,19 @@ namespace UnitTest assetPath /= "Cache"; AZ::IO::FileIOBase::GetInstance()->SetAlias("@products@", assetPath.c_str()); + // Remark, AZ::Utils::GetProjectPath() is not used when defining "user" folder, + // instead We use AZ::Test::GetEngineRootPath();. + // Reason: + // When running unit tests, using AZ::Utils::GetProjectPath() will resolve to something like: + // "/data/workspace/o3de/build/linux/External/Atom-9a4d112b/RPI/Code/Cache" + // The ShaderMetricSystem.cpp writes to the @user@ folder and the following runtime error occurs: + // "You may not alter data inside the asset cache. Please check the call stack and consider writing into the source asset folder instead." + // "Attempted write location: /data/workspace/o3de/build/linux/External/Atom-9a4d112b/RPI/Code/Cache/user/shadermetrics.json" + // To avoid the error We use AZ::Test::GetEngineRootPath(); + AZ::IO::Path userPath = AZ::Test::GetEngineRootPath(); + userPath /= "user"; + AZ::IO::FileIOBase::GetInstance()->SetAlias("@user@", userPath.c_str()); + m_jsonRegistrationContext = AZStd::make_unique(); m_jsonSystemComponent = AZStd::make_unique(); m_jsonSystemComponent->Reflect(m_jsonRegistrationContext.get()); diff --git a/Gems/Atom/RPI/Code/Tests/Material/MaterialSourceDataTests.cpp b/Gems/Atom/RPI/Code/Tests/Material/MaterialSourceDataTests.cpp index fa8eed35de..d4bf3e5eaa 100644 --- a/Gems/Atom/RPI/Code/Tests/Material/MaterialSourceDataTests.cpp +++ b/Gems/Atom/RPI/Code/Tests/Material/MaterialSourceDataTests.cpp @@ -625,23 +625,6 @@ namespace UnitTest // We use local functions to easily start a new MaterialAssetCreator for each test case because // the AssetCreator would just skip subsequent operations after the first failure is detected. - auto expectError = [](AZStd::function setOneBadInput, [[maybe_unused]] uint32_t expectedAsserts = 2) - { - MaterialSourceData sourceData; - - sourceData.m_materialType = "@exefolder@/Temp/test.materialtype"; - - AddPropertyGroup(sourceData, "general"); - - setOneBadInput(sourceData); - - AZ_TEST_START_ASSERTTEST; - auto materialAssetOutcome = sourceData.CreateMaterialAsset(Uuid::CreateRandom(), "", false); - AZ_TEST_STOP_ASSERTTEST(expectedAsserts); // Usually one for the initial error, and one for when End() is called - - EXPECT_FALSE(materialAssetOutcome.IsSuccess()); - }; - auto expectWarning = [](AZStd::function setOneBadInput, [[maybe_unused]] uint32_t expectedAsserts = 1) { MaterialSourceData sourceData; @@ -692,10 +675,10 @@ namespace UnitTest }); // Missing image reference - expectError([](MaterialSourceData& materialSourceData) + expectWarning([](MaterialSourceData& materialSourceData) { AddProperty(materialSourceData, "general", "MyImage", AZStd::string("doesNotExist.streamingimage")); - }, 3); // Expect a 3rd error because AssetUtils reports its own assertion failure + }); } diff --git a/Gems/Atom/RPI/Code/Tests/Material/MaterialTests.cpp b/Gems/Atom/RPI/Code/Tests/Material/MaterialTests.cpp index 9c3e08ee08..61999d808e 100644 --- a/Gems/Atom/RPI/Code/Tests/Material/MaterialTests.cpp +++ b/Gems/Atom/RPI/Code/Tests/Material/MaterialTests.cpp @@ -888,4 +888,43 @@ namespace UnitTest EXPECT_EQ(indexFromOldName, indexFromNewName); } + template + void CheckPropertyValueRoundTrip(const T& value) + { + AZ::RPI::MaterialPropertyValue materialPropertyValue{value}; + AZStd::any anyValue{value}; + AZ::RPI::MaterialPropertyValue materialPropertyValueFromAny = MaterialPropertyValue::FromAny(anyValue); + AZ::RPI::MaterialPropertyValue materialPropertyValueFromRoundTrip = MaterialPropertyValue::FromAny(MaterialPropertyValue::ToAny(materialPropertyValue)); + + EXPECT_EQ(materialPropertyValue, materialPropertyValueFromAny); + EXPECT_EQ(materialPropertyValue, materialPropertyValueFromRoundTrip); + + if (materialPropertyValue.Is>()) + { + EXPECT_EQ(materialPropertyValue.GetValue>().GetHint(), materialPropertyValueFromAny.GetValue>().GetHint()); + EXPECT_EQ(materialPropertyValue.GetValue>().GetHint(), materialPropertyValueFromRoundTrip.GetValue>().GetHint()); + } + } + + TEST_F(MaterialTests, TestMaterialPropertyValueAsAny) + { + CheckPropertyValueRoundTrip(true); + CheckPropertyValueRoundTrip(false); + CheckPropertyValueRoundTrip(7); + CheckPropertyValueRoundTrip(8u); + CheckPropertyValueRoundTrip(9.0f); + CheckPropertyValueRoundTrip(AZ::Vector2(1.0f, 2.0f)); + CheckPropertyValueRoundTrip(AZ::Vector3(1.0f, 2.0f, 3.0f)); + CheckPropertyValueRoundTrip(AZ::Vector4(1.0f, 2.0f, 3.0f, 4.0f)); + CheckPropertyValueRoundTrip(AZ::Color(1.0f, 2.0f, 3.0f, 4.0f)); + CheckPropertyValueRoundTrip(Data::Asset{}); + CheckPropertyValueRoundTrip(Data::Asset{}); + CheckPropertyValueRoundTrip(Data::Asset{}); + CheckPropertyValueRoundTrip(Data::Asset{Uuid::CreateRandom(), azrtti_typeid(), "TestAssetPath.png"}); + CheckPropertyValueRoundTrip(Data::Asset{Uuid::CreateRandom(), azrtti_typeid(), "TestAssetPath.png"}); + CheckPropertyValueRoundTrip(Data::Asset{Uuid::CreateRandom(), azrtti_typeid(), "TestAssetPath.png"}); + CheckPropertyValueRoundTrip(m_testImageAsset); + CheckPropertyValueRoundTrip(Data::Instance{m_testImage}); + CheckPropertyValueRoundTrip(AZStd::string{"hello"}); + } } diff --git a/Gems/Atom/RPI/Code/Tests/Model/ModelTests.cpp b/Gems/Atom/RPI/Code/Tests/Model/ModelTests.cpp index 7b07e14de0..81d773d8c0 100644 --- a/Gems/Atom/RPI/Code/Tests/Model/ModelTests.cpp +++ b/Gems/Atom/RPI/Code/Tests/Model/ModelTests.cpp @@ -38,7 +38,7 @@ namespace UnitTest bufferData.resize(bufferSize); //The actual data doesn't matter - const uint8_t bufferDataSize = static_cast(bufferData.size()); + const uint8_t bufferDataSize = aznumeric_cast(bufferData.size()); for (uint8_t i = 0; i < bufferDataSize; ++i) { bufferData[i] = i; @@ -248,7 +248,8 @@ namespace UnitTest return asset; } - AZ::Data::Asset BuildTestModel(const uint32_t lodCount, const uint32_t sharedMeshCount, const uint32_t separateMeshCount, ExpectedModel& expectedModel) + AZ::Data::Asset BuildTestModel( + const uint32_t lodCount, const uint32_t sharedMeshCount, const uint32_t separateMeshCount, ExpectedModel& expectedModel) { using namespace AZ; @@ -989,6 +990,9 @@ namespace UnitTest uint32_t{ 0 }, 2, 1, 1, 2, 3, 4, 5, 6, 5, 7, 6, 0, 4, 2, 4, 6, 2, 1, 3, 5, 5, 3, 7, 0, 1, 4, 4, 1, 5, 2, 6, 3, 6, 7, 3, }; + static constexpr AZStd::array QuadPositions = { -1.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, -1.0f, -1.0f, 0.0f, 1.0f, -1.0f, 0.0f }; + static constexpr AZStd::array QuadIndices = { uint32_t{ 0 }, 2, 1, 1, 2, 3 }; + // This class creates a Model with one LOD, whose mesh contains 2 planes. Plane 1 is in the XY plane at Z=-0.5, and // plane 2 is in the XY plane at Z=0.5. The two planes each have 9 quads which have been triangulated. It only has // a position and index buffer. @@ -1031,42 +1035,80 @@ namespace UnitTest static constexpr inline auto minmaxElement = AZStd::minmax_element(begin(TwoSeparatedPlanesIndices), end(TwoSeparatedPlanesIndices)); static_assert(*minmaxElement.second == (TwoSeparatedPlanesPositions.size() / 3) - 1); - template class TD; class TestMesh { public: + TestMesh() = default; + TestMesh(const float* positions, size_t positionCount, const uint32_t* indices, size_t indicesCount) { AZ::RPI::ModelLodAssetCreator lodCreator; - lodCreator.Begin(AZ::Data::AssetId(AZ::Uuid::CreateRandom())); + Begin(lodCreator); + Add(lodCreator, positions, positionCount, /*positionOffset=*/0, indices, indicesCount, /*indexOffset=*/0); + End(lodCreator); + } + // initiate the asset lod creation process (note: End must be called after meshes have been added). + void Begin(AZ::RPI::ModelLodAssetCreator& lodCreator) + { + lodCreator.Begin(AZ::Data::AssetId(AZ::Uuid::CreateRandom())); + } + + // add a sub mesh and reuse existing position/index buffer (be very careful with the offsets used) + void Add( + AZ::RPI::ModelLodAssetCreator& lodCreator, + const float* positions, + size_t positionCount, + size_t positionOffset, + AZ::Data::Asset positionBuffer, + const uint32_t* indices, + size_t indexCount, + size_t indexOffset, + AZ::Data::Asset indexBuffer) + { lodCreator.BeginMesh(); - lodCreator.SetMeshAabb(AZ::Aabb::CreateFromMinMax({-1.0f, -1.0f, -0.5f}, {1.0f, 1.0f, 0.5f})); + lodCreator.SetMeshAabb(AZ::Aabb::CreateFromMinMax({ -1.0f, -1.0f, -0.5f }, { 1.0f, 1.0f, 0.5f })); lodCreator.SetMeshMaterialSlot(AZ::Sfmt::GetInstance().Rand32()); - { - AZ::Data::Asset indexBuffer = BuildTestBuffer(static_cast(indicesCount), sizeof(uint32_t)); - AZStd::copy(indices, indices + indicesCount, reinterpret_cast(const_cast(indexBuffer->GetBuffer().data()))); - lodCreator.SetMeshIndexBuffer({ - indexBuffer, - AZ::RHI::BufferViewDescriptor::CreateStructured(0, static_cast(indicesCount), sizeof(uint32_t)) - }); - } + AZStd::copy( + indices, indices + indexCount, + reinterpret_cast(const_cast(indexBuffer->GetBuffer().data())) + indexOffset); + lodCreator.SetMeshIndexBuffer( + { indexBuffer, + AZ::RHI::BufferViewDescriptor::CreateStructured( + aznumeric_cast(indexOffset), aznumeric_cast(indexCount), sizeof(uint32_t)) }); + AZStd::copy( + positions, positions + positionCount, + reinterpret_cast(const_cast(positionBuffer->GetBuffer().data())) + positionOffset); + lodCreator.AddMeshStreamBuffer( + AZ::RHI::ShaderSemantic(AZ::Name("POSITION")), AZ::Name(), + { positionBuffer, + AZ::RHI::BufferViewDescriptor::CreateStructured( + aznumeric_cast(positionOffset / 3), aznumeric_cast(positionCount / 3), sizeof(float) * 3) }); - { - AZ::Data::Asset positionBuffer = BuildTestBuffer(static_cast(positionCount / 3), sizeof(float) * 3); - AZStd::copy(positions, positions + positionCount, reinterpret_cast(const_cast(positionBuffer->GetBuffer().data()))); - lodCreator.AddMeshStreamBuffer( - AZ::RHI::ShaderSemantic(AZ::Name("POSITION")), - AZ::Name(), - { - positionBuffer, - AZ::RHI::BufferViewDescriptor::CreateStructured(0, static_cast(positionCount / 3), sizeof(float) * 3) - } - ); - } lodCreator.EndMesh(); + } + // overload of Add - here a new index/position buffer is created for the new data instead of potentially reusing an existing buffer + void Add( + AZ::RPI::ModelLodAssetCreator& lodCreator, + const float* positions, + size_t positionCount, + size_t positionOffset, + const uint32_t* indices, + size_t indexCount, + size_t indexOffset) + { + AZ::Data::Asset indexBuffer = BuildTestBuffer(aznumeric_cast(indexCount), sizeof(uint32_t)); + AZ::Data::Asset positionBuffer = + BuildTestBuffer(aznumeric_cast(positionCount / 3), sizeof(float) * 3); + + Add(lodCreator, positions, positionCount, positionOffset, positionBuffer, indices, indexCount, indexOffset, indexBuffer); + } + + // complete the asset lod creation process + void End(AZ::RPI::ModelLodAssetCreator& lodCreator) + { AZ::Data::Asset lodAsset; lodCreator.End(lodAsset); @@ -1199,7 +1241,7 @@ namespace UnitTest constexpr float rayLength = 100.0f; EXPECT_THAT( m_kdTree->RayIntersection( - AZ::Vector3::CreateZero(), AZ::Vector3::CreateAxisZ(-rayLength), t, normal), testing::Eq(true)); + AZ::Vector3::CreateZero(), AZ::Vector3::CreateAxisZ(-rayLength), t, normal), testing::IsTrue()); EXPECT_THAT(t, testing::FloatEq(0.005f)); } @@ -1210,7 +1252,7 @@ namespace UnitTest constexpr float rayLength = 10.0f; EXPECT_THAT( - m_kdTree->RayIntersection(AZ::Vector3::CreateAxisZ(0.75f), AZ::Vector3::CreateAxisZ(-rayLength), t, normal), testing::Eq(true)); + m_kdTree->RayIntersection(AZ::Vector3::CreateAxisZ(0.75f), AZ::Vector3::CreateAxisZ(-rayLength), t, normal), testing::IsTrue()); EXPECT_THAT(t, testing::FloatEq(0.025f)); } @@ -1288,7 +1330,7 @@ namespace UnitTest EXPECT_THAT( m_mesh->GetModel()->LocalRayIntersectionAgainstModel( AZ::Vector3::CreateAxisZ(5.0f), -AZ::Vector3::CreateAxisZ(10.0f), AllowBruteForce, t, normal), - testing::Eq(true)); + testing::IsTrue()); EXPECT_THAT(t, testing::FloatEq(0.4f)); } @@ -1302,8 +1344,87 @@ namespace UnitTest EXPECT_THAT( m_mesh->GetModel()->LocalRayIntersectionAgainstModel( AZ::Vector3::CreateAxisY(10.0f), -AZ::Vector3::CreateAxisY(9.0f), AllowBruteForce, t, normal), - testing::Eq(true)); + testing::IsTrue()); EXPECT_THAT(t, testing::FloatEq(1.0f)); EXPECT_THAT(normal, IsClose(AZ::Vector3::CreateAxisY())); } + + // test to verify that each secondary sub meshes are still intersected with correctly when using brute-force + // ray intersection + class BruteForceMultiModelIntersectsFixture : public ModelTests + { + public: + inline static const float QuadOffsetX = 15.0f; + + void SetUp() override + { + ModelTests::SetUp(); + m_mesh = AZStd::make_unique(); + + AZ::RPI::ModelLodAssetCreator lodCreator; + m_mesh->Begin(lodCreator); + + // take default quad positions and offset in X by set amount + AZStd::vector offsetQuadPositions; + offsetQuadPositions.resize(QuadPositions.size()); + AZStd::copy(QuadPositions.begin(), QuadPositions.end(), offsetQuadPositions.begin()); + for (size_t xVertIndex = 0; xVertIndex < offsetQuadPositions.size(); xVertIndex += 3) + { + offsetQuadPositions[xVertIndex] += QuadOffsetX; + } + + // create shared buffer to store cube and quad mesh in the same buffer + const size_t indicesCount = QuadIndices.size() + CubeIndices.size(); + const size_t positionCount = QuadPositions.size() + CubePositions.size(); + AZ::Data::Asset indexBuffer = BuildTestBuffer(aznumeric_cast(indicesCount), sizeof(uint32_t)); + AZ::Data::Asset positionBuffer = + BuildTestBuffer(aznumeric_cast(positionCount / 3), sizeof(float) * 3); + + // add the cube mesh + m_mesh->Add( + lodCreator, CubePositions.data(), CubePositions.size(), 0, positionBuffer, CubeIndices.data(), CubeIndices.size(), 0, + indexBuffer); + // add the quad mesh (offset by the cube position and index data into the same buffer) + m_mesh->Add( + lodCreator, offsetQuadPositions.data(), offsetQuadPositions.size(), /*offset=*/CubePositions.size(), positionBuffer, + QuadIndices.data(), QuadIndices.size(), /*offset=*/CubeIndices.size(), indexBuffer); + + m_mesh->End(lodCreator); + } + + void TearDown() override + { + m_mesh.reset(); + ModelTests::TearDown(); + } + + AZStd::unique_ptr m_mesh; + inline static constexpr bool AllowBruteForce = false; + }; + + TEST_F(BruteForceMultiModelIntersectsFixture, RayIntersectsWithFirstSubMesh) + { + float t = 0.0f; + AZ::Vector3 normal = AZ::Vector3::CreateOne(); // invalid starting normal + // fire a ray at the first sub mesh and ensure a successful hit is returned + EXPECT_THAT( + m_mesh->GetModel()->LocalRayIntersectionAgainstModel( + AZ::Vector3(0.0f, 0.0f, 5.0f), -AZ::Vector3::CreateAxisZ(10.0f), AllowBruteForce, t, normal), + testing::IsTrue()); + EXPECT_THAT(t, testing::FloatEq(0.4f)); + EXPECT_THAT(normal, IsClose(AZ::Vector3::CreateAxisZ())); + } + + TEST_F(BruteForceMultiModelIntersectsFixture, RayIntersectsWithSecondSubMesh) + { + float t = 0.0f; + AZ::Vector3 normal = AZ::Vector3::CreateOne(); // invalid starting normal + // fire a ray at the second sub mesh and ensure a successful hit is returned + EXPECT_THAT( + m_mesh->GetModel()->LocalRayIntersectionAgainstModel( + AZ::Vector3(QuadOffsetX, 0.0f, 5.0f), -AZ::Vector3::CreateAxisZ(10.0f), AllowBruteForce, t, normal), + testing::IsTrue()); + EXPECT_THAT(t, testing::FloatEq(0.5f)); + EXPECT_THAT(normal, IsClose(AZ::Vector3::CreateAxisZ())); + } } // namespace UnitTest diff --git a/Gems/Atom/RPI/Registry/atom_rpi.release.setreg b/Gems/Atom/RPI/Registry/atom_rpi.release.setreg new file mode 100644 index 0000000000..72fb4f01e8 --- /dev/null +++ b/Gems/Atom/RPI/Registry/atom_rpi.release.setreg @@ -0,0 +1,9 @@ +{ + "O3DE": { + "Atom": { + "RPI": { + "UseDebugFallbackImages": false + } + } + } +} diff --git a/Gems/Atom/RPI/Registry/atom_rpi.setreg b/Gems/Atom/RPI/Registry/atom_rpi.setreg index 16ce8b3bd7..fa3c13a81e 100644 --- a/Gems/Atom/RPI/Registry/atom_rpi.setreg +++ b/Gems/Atom/RPI/Registry/atom_rpi.setreg @@ -17,7 +17,8 @@ "DynamicDrawSystemDescriptor": { "DynamicBufferPoolSize": 50331648 // 3 * 16 * 1024 * 1024 (for 3 frames) } - } + }, + "UseDebugFallbackImages": true } } } diff --git a/Gems/Atom/TestData/TestData/Materials/SkinTestCases/002_wrinkle_regression_test.material b/Gems/Atom/TestData/TestData/Materials/SkinTestCases/002_wrinkle_regression_test.material index 400044d29f..78f597b14f 100644 --- a/Gems/Atom/TestData/TestData/Materials/SkinTestCases/002_wrinkle_regression_test.material +++ b/Gems/Atom/TestData/TestData/Materials/SkinTestCases/002_wrinkle_regression_test.material @@ -33,7 +33,7 @@ }, "subsurfaceScattering": { "enableSubsurfaceScattering": true, - "influenceMap": "Objects/Lucy/Lucy_thickness.tif", + "influenceMap": "TestData/Textures/checker8x8_gray_512.png", "scatterDistance": 15.0, "subsurfaceScatterFactor": 0.4300000071525574, "thicknessMap": "Objects/Lucy/Lucy_thickness.tif", @@ -47,8 +47,7 @@ 0.3182879388332367, 0.16388189792633058, 1.0 - ], - "useInfluenceMap": false + ] }, "wrinkleLayers": { "baseColorMap1": "TestData/Textures/cc0/Lava004_1K_Color.jpg", @@ -61,4 +60,4 @@ "normalMap2": "TestData/Textures/TextureHaven/4k_castle_brick_02_red/4k_castle_brick_02_red_normal.png" } } -} +} \ No newline at end of file diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/CMakeLists.txt b/Gems/Atom/Tools/AtomToolsFramework/Code/CMakeLists.txt index 40c8d7956e..e7e8208722 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/CMakeLists.txt +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/CMakeLists.txt @@ -42,6 +42,7 @@ ly_add_target( Gem::Atom_RHI.Reflect Gem::Atom_Feature_Common.Static Gem::Atom_Bootstrap.Headers + Gem::ImageProcessingAtom.Headers ) ly_add_target( @@ -60,6 +61,8 @@ ly_add_target( BUILD_DEPENDENCIES PRIVATE Gem::AtomToolsFramework.Static + RUNTIME_DEPENDENCIES + Gem::ImageProcessingAtom.Editor ) ################################################################################ @@ -80,6 +83,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED) PRIVATE AZ::AzTest AZ::AzTestShared + AZ::AzFrameworkTestShared Gem::AtomToolsFramework.Static Gem::Atom_Utils.TestUtils.Static ) diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Application/AtomToolsApplication.h b/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Application/AtomToolsApplication.h index d55755a242..9eaacbfa4f 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Application/AtomToolsApplication.h +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Application/AtomToolsApplication.h @@ -58,7 +58,7 @@ namespace AtomToolsFramework void CreateStaticModules(AZStd::vector& outModules) override; const char* GetCurrentConfigurationName() const override; void StartCommon(AZ::Entity* systemEntity) override; - void Tick(float deltaOverride = -1.f) override; + void Tick() override; void Stop() override; protected: diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Debug/TraceRecorder.h b/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Debug/TraceRecorder.h index 96a8728a43..fc19aea2d3 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Debug/TraceRecorder.h +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Debug/TraceRecorder.h @@ -26,6 +26,21 @@ namespace AtomToolsFramework //! Get the combined output of all messages AZStd::string GetDump() const; + //! Return the number of OnAssert calls + size_t GetAssertCount() const; + + //! Return the number of OnException calls + size_t GetExceptionCount() const; + + //! Return the number of OnError calls, and includes OnAssert and OnException if @includeHigher is true + size_t GetErrorCount(bool includeHigher = false) const; + + //! Return the number of OnWarning calls, and includes higher categories if @includeHigher is true + size_t GetWarningCount(bool includeHigher = false) const; + + //! Return the number of OnPrintf calls, and includes higher categories if @includeHigher is true + size_t GetPrintfCount(bool includeHigher = false) const; + private: ////////////////////////////////////////////////////////////////////////// // AZ::Debug::TraceMessageBus::Handler overrides... @@ -38,5 +53,11 @@ namespace AtomToolsFramework size_t m_maxMessageCount = std::numeric_limits::max(); AZStd::list m_messages; + + size_t m_assertCount = 0; + size_t m_exceptionCount = 0; + size_t m_errorCount = 0; + size_t m_warningCount = 0; + size_t m_printfCount = 0; }; } // namespace AtomToolsFramework diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Util/MaterialPropertyUtil.h b/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Util/MaterialPropertyUtil.h index 08f59f9e0b..d27f2403a1 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Util/MaterialPropertyUtil.h +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Util/MaterialPropertyUtil.h @@ -49,6 +49,7 @@ namespace AtomToolsFramework //! @param propertyValue the value being converted before saving bool ConvertToExportFormat( const AZStd::string& exportPath, + [[maybe_unused]] const AZ::Name& propertyId, const AZ::RPI::MaterialTypeSourceData::PropertyDefinition& propertyDefinition, AZ::RPI::MaterialPropertyValue& propertyValue); diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Util/Util.h b/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Util/Util.h index 1ad6f69961..ab2b8b46c0 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Util/Util.h +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Util/Util.h @@ -8,8 +8,9 @@ #pragma once -#include #include +#include +#include #include AZ_PUSH_DISABLE_WARNING(4251 4800, "-Wunknown-warning-option") // disable warnings spawned by QT @@ -18,11 +19,24 @@ AZ_PUSH_DISABLE_WARNING(4251 4800, "-Wunknown-warning-option") // disable warnin #include AZ_POP_DISABLE_WARNING +class QImage; + namespace AtomToolsFramework { + template + T GetSettingOrDefault(AZStd::string_view path, const T& defaultValue) + { + T result; + auto settingsRegistry = AZ::SettingsRegistry::Get(); + return (settingsRegistry && settingsRegistry->Get(result, path)) ? result : defaultValue; + } + + using LoadImageAsyncCallback = AZStd::function; + void LoadImageAsync(const AZStd::string& path, LoadImageAsyncCallback callback); + QFileInfo GetSaveFileInfo(const QString& initialPath); QFileInfo GetOpenFileInfo(const AZStd::vector& assetTypes); QFileInfo GetUniqueFileInfo(const QString& initialPath); QFileInfo GetDuplicationFileInfo(const QString& initialPath); bool LaunchTool(const QString& baseName, const QString& extension, const QStringList& arguments); -} +} // namespace AtomToolsFramework diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Viewport/ModularViewportCameraController.h b/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Viewport/ModularViewportCameraController.h index 1200cb3d79..45c5394fd8 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Viewport/ModularViewportCameraController.h +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Viewport/ModularViewportCameraController.h @@ -112,15 +112,16 @@ namespace AtomToolsFramework void UpdateViewport(const AzFramework::ViewportControllerUpdateEvent& event) override; // ModularViewportCameraControllerRequestBus overrides ... - void InterpolateToTransform(const AZ::Transform& worldFromLocal) override; - AZ::Transform GetReferenceFrame() const override; - void SetReferenceFrame(const AZ::Transform& worldFromLocal) override; - void ClearReferenceFrame() override; + bool InterpolateToTransform(const AZ::Transform& worldFromLocal) override; + bool IsInterpolating() const override; + void StartTrackingTransform(const AZ::Transform& worldFromLocal) override; + void StopTrackingTransform() override; + bool IsTrackingTransform() const override; private: - //! Update the reference frame after a change has been made to the camera - //! view without updating the internal camera via user input. - void RefreshReferenceFrame(); + //! Combine the current camera transform with any potential roll from the tracked + //! transform (this is usually zero). + AZ::Transform CombinedCameraTransform() const; //! The current mode the camera controller is in. enum class CameraMode @@ -141,21 +142,21 @@ namespace AtomToolsFramework AzFramework::Camera m_camera; //!< The current camera state (pitch/yaw/position/look-distance). AzFramework::Camera m_targetCamera; //!< The target (next) camera state that m_camera is catching up to. AzFramework::Camera m_previousCamera; //!< The state of the camera from the previous frame. - AZStd::optional m_storedCamera; //!< A potentially stored camera for when a custom reference frame is set. + AZStd::optional m_storedCamera; //!< A potentially stored camera for when a transform is being tracked. AzFramework::CameraSystem m_cameraSystem; //!< The camera system responsible for managing all CameraInputs. AzFramework::CameraProps m_cameraProps; //!< Camera properties to control rotate and translate smoothness. CameraControllerPriorityFn m_priorityFn; //!< Controls at what priority the camera controller should respond to events. CameraAnimation m_cameraAnimation; //!< Camera animation state (used during CameraMode::Animation). CameraMode m_cameraMode = CameraMode::Control; //!< The current mode the camera is operating in. - //! An additional reference frame the camera can operate in (identity has no effect). - AZ::Transform m_referenceFrameOverride = AZ::Transform::CreateIdentity(); - //! Flag to prevent circular updates of the camera transform (while the viewport transform is being updated internally). - bool m_updatingTransformInternally = false; + float m_roll = 0.0f; //!< The current amount of roll to be applied to the camera. + float m_targetRoll = 0.0f; //!< The target amount of roll to be applied to the camera (current will move towards this). //! Listen for camera view changes outside of the camera controller. AZ::RPI::ViewportContext::MatrixChangedEvent::Handler m_cameraViewMatrixChangeHandler; //! The current instance of the modular camera viewport context. AZStd::unique_ptr m_modularCameraViewportContext; + //! Flag to prevent circular updates of the camera transform (while the viewport transform is being updated internally). + bool m_updatingTransformInternally = false; }; //! Placeholder implementation for ModularCameraViewportContext (useful for verifying the interface). diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Viewport/ModularViewportCameraControllerRequestBus.h b/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Viewport/ModularViewportCameraControllerRequestBus.h index ab397692e4..4422751d6b 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Viewport/ModularViewportCameraControllerRequestBus.h +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Viewport/ModularViewportCameraControllerRequestBus.h @@ -23,23 +23,31 @@ namespace AtomToolsFramework class ModularViewportCameraControllerRequests : public AZ::EBusTraits { public: + static inline constexpr float InterpolateToTransformDuration = 1.0f; + using BusIdType = AzFramework::ViewportId; static const AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::ById; static const AZ::EBusHandlerPolicy HandlerPolicy = AZ::EBusHandlerPolicy::Single; //! Begin a smooth transition of the camera to the requested transform. //! @param worldFromLocal The transform of where the camera should end up. - virtual void InterpolateToTransform(const AZ::Transform& worldFromLocal) = 0; + //! @return Returns true if the call began an interpolation and false otherwise. Calls to InterpolateToTransform + //! will have no effect if an interpolation is currently in progress. + virtual bool InterpolateToTransform(const AZ::Transform& worldFromLocal) = 0; - //! Return the current reference frame. - //! @note If a reference frame has not been set or a frame has been cleared, this is just the identity. - virtual AZ::Transform GetReferenceFrame() const = 0; + //! Returns if the camera is currently interpolating to a new transform. + virtual bool IsInterpolating() const = 0; - //! Set a new reference frame other than the identity for the camera controller. - virtual void SetReferenceFrame(const AZ::Transform& worldFromLocal) = 0; + //! Start tracking a transform. + //! Store the current camera transform and move to the next camera transform. + virtual void StartTrackingTransform(const AZ::Transform& worldFromLocal) = 0; - //! Clear the current reference frame to restore the identity. - virtual void ClearReferenceFrame() = 0; + //! Stop tracking the set transform. + //! The previously stored camera transform is restored. + virtual void StopTrackingTransform() = 0; + + //! Return if the tracking transform is set. + virtual bool IsTrackingTransform() const = 0; protected: ~ModularViewportCameraControllerRequests() = default; diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Viewport/RenderViewportWidget.h b/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Viewport/RenderViewportWidget.h index 8233658ded..5216f511cb 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Viewport/RenderViewportWidget.h +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Viewport/RenderViewportWidget.h @@ -21,6 +21,7 @@ #include #include #include +#include namespace AtomToolsFramework { @@ -30,8 +31,8 @@ namespace AtomToolsFramework //! @see AZ::RPI::ViewportContext for Atom's API for setting up class RenderViewportWidget : public QWidget - , public AzToolsFramework::ViewportInteraction::ViewportInteractionRequestBus::Handler , public AzToolsFramework::ViewportInteraction::ViewportMouseCursorRequestBus::Handler + , public AzToolsFramework::ViewportInteraction::ViewportInteractionRequests , public AzFramework::WindowRequestBus::Handler , protected AzFramework::InputChannelEventListener , protected AZ::TickBus::Handler @@ -90,11 +91,11 @@ namespace AtomToolsFramework //! Input processing is enabled by default. void SetInputProcessingEnabled(bool enabled); - // AzToolsFramework::ViewportInteraction::ViewportInteractionRequestBus::Handler overrides ... + // ViewportInteractionRequests overrides ... AzFramework::CameraState GetCameraState() override; AzFramework::ScreenPoint ViewportWorldToScreen(const AZ::Vector3& worldPosition) override; - AZStd::optional ViewportScreenToWorld(const AzFramework::ScreenPoint& screenPosition, float depth) override; - AZStd::optional ViewportScreenToWorldRay( + AZ::Vector3 ViewportScreenToWorld(const AzFramework::ScreenPoint& screenPosition) override; + AzToolsFramework::ViewportInteraction::ProjectedViewportRay ViewportScreenToWorldRay( const AzFramework::ScreenPoint& screenPosition) override; float DeviceScalingFactor() override; @@ -149,5 +150,7 @@ namespace AtomToolsFramework AZ::ScriptTimePoint m_time; // Maps our internal Qt events into AzFramework InputChannels for our ViewportControllerList. AzToolsFramework::QtEventToAzInputMapper* m_inputChannelMapper = nullptr; + // Implementation of ViewportInteractionRequests (handles viewport picking operations). + AZStd::unique_ptr m_viewportInteractionImpl; }; } //namespace AtomToolsFramework diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Viewport/ViewportInteractionImpl.h b/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Viewport/ViewportInteractionImpl.h new file mode 100644 index 0000000000..b6ad6e17d1 --- /dev/null +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Include/AtomToolsFramework/Viewport/ViewportInteractionImpl.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#pragma once + +#include +#include +#include +#include +#include + +namespace AtomToolsFramework +{ + //! A concrete implementation of the ViewportInteractionRequestBus. + //! Primarily concerned with picking (screen to world and world to screen transformations). + class ViewportInteractionImpl + : public AzToolsFramework::ViewportInteraction::ViewportInteractionRequestBus::Handler + , private AZ::RPI::ViewportContextIdNotificationBus::Handler + { + public: + explicit ViewportInteractionImpl(AZ::RPI::ViewPtr viewPtr); + + void Connect(AzFramework::ViewportId viewportId); + void Disconnect(); + + // ViewportInteractionRequestBus overrides ... + AzFramework::CameraState GetCameraState() override; + AzFramework::ScreenPoint ViewportWorldToScreen(const AZ::Vector3& worldPosition) override; + AZ::Vector3 ViewportScreenToWorld(const AzFramework::ScreenPoint& screenPosition) override; + AzToolsFramework::ViewportInteraction::ProjectedViewportRay ViewportScreenToWorldRay( + const AzFramework::ScreenPoint& screenPosition) override; + float DeviceScalingFactor() override; + + AZStd::function m_screenSizeFn; //! Callback to determine the screen size. + AZStd::function m_deviceScalingFactorFn; //! Callback to determine the device scaling factor. + + private: + // ViewportContextIdNotificationBus overrides ... + void OnViewportDefaultViewChanged(AZ::RPI::ViewPtr view) override; + + AZ::RPI::ViewPtr m_viewPtr; + }; +} // namespace AtomToolsFramework diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Application/AtomToolsApplication.cpp b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Application/AtomToolsApplication.cpp index ba3bfe4718..0f21dcb70e 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Application/AtomToolsApplication.cpp +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Application/AtomToolsApplication.cpp @@ -79,12 +79,18 @@ namespace AtomToolsFramework m_styleManager.reset(new AzQtComponents::StyleManager(this)); m_styleManager->initialize(this, engineRootPath); - connect(&m_timer, &QTimer::timeout, this, [&]() + m_timer.setInterval(1); + connect(&m_timer, &QTimer::timeout, this, [this]() { this->PumpSystemEventLoopUntilEmpty(); this->Tick(); }); + connect(this, &QGuiApplication::applicationStateChanged, this, [this]() + { + // Limit the update interval when not in focus to reduce power consumption and interference with other applications + this->m_timer.setInterval((applicationState() & Qt::ApplicationActive) ? 1 : 32); + }); } AtomToolsApplication ::~AtomToolsApplication() @@ -454,10 +460,10 @@ namespace AtomToolsFramework return false; } - void AtomToolsApplication::Tick(float deltaOverride) + void AtomToolsApplication::Tick() { TickSystem(); - Base::Tick(deltaOverride); + Base::Tick(); if (WasExitMainLoopRequested()) { diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/AtomToolsFrameworkModule.h b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/AtomToolsFrameworkModule.h index 759b2558bf..ae60220314 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/AtomToolsFrameworkModule.h +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/AtomToolsFrameworkModule.h @@ -9,11 +9,13 @@ #pragma once #include +#include namespace AtomToolsFramework { class AtomToolsFrameworkModule : public AZ::Module + , public AzToolsFramework::EmbeddedPython::PythonLoader { public: AZ_RTTI(AtomToolsFrameworkModule, "{B58B7CA8-98C9-4DC8-8607-E094989BBBE2}", AZ::Module); diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Debug/TraceRecorder.cpp b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Debug/TraceRecorder.cpp index 3fd069ff0b..5f8c8b9004 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Debug/TraceRecorder.cpp +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Debug/TraceRecorder.cpp @@ -31,6 +31,7 @@ namespace AtomToolsFramework bool TraceRecorder::OnAssert(const char* message) { + ++m_assertCount; if (m_messages.size() < m_maxMessageCount) { m_messages.push_back(AZStd::string::format("Assert: %s", message)); @@ -40,6 +41,7 @@ namespace AtomToolsFramework bool TraceRecorder::OnException(const char* message) { + ++m_exceptionCount; if (m_messages.size() < m_maxMessageCount) { m_messages.push_back(AZStd::string::format("Exception: %s", message)); @@ -49,6 +51,7 @@ namespace AtomToolsFramework bool TraceRecorder::OnError(const char* /*window*/, const char* message) { + ++m_errorCount; if (m_messages.size() < m_maxMessageCount) { m_messages.push_back(AZStd::string::format("Error: %s", message)); @@ -58,6 +61,7 @@ namespace AtomToolsFramework bool TraceRecorder::OnWarning(const char* /*window*/, const char* message) { + ++m_warningCount; if (m_messages.size() < m_maxMessageCount) { m_messages.push_back(AZStd::string::format("Warning: %s", message)); @@ -67,11 +71,58 @@ namespace AtomToolsFramework bool TraceRecorder::OnPrintf(const char* /*window*/, const char* message) { + ++m_printfCount; if (m_messages.size() < m_maxMessageCount) { m_messages.push_back(AZStd::string::format("%s", message)); } return false; +} + + size_t TraceRecorder::GetAssertCount() const + { + return m_assertCount; + } + + size_t TraceRecorder::GetExceptionCount() const + { + return m_exceptionCount; + } + + size_t TraceRecorder::GetErrorCount(bool includeHigher) const + { + if (includeHigher) + { + return m_errorCount + GetAssertCount() + GetExceptionCount(); + } + else + { + return m_errorCount; + } + } + + size_t TraceRecorder::GetWarningCount(bool includeHigher) const + { + if (includeHigher) + { + return m_warningCount + GetErrorCount(true); + } + else + { + return m_warningCount; + } + } + + size_t TraceRecorder::GetPrintfCount(bool includeHigher) const + { + if (includeHigher) + { + return m_printfCount + GetWarningCount(true); + } + else + { + return m_printfCount; + } } } // namespace AtomToolsFramework diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Document/AtomToolsDocumentSystemComponent.cpp b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Document/AtomToolsDocumentSystemComponent.cpp index 00de2a7c4c..3a392c1413 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Document/AtomToolsDocumentSystemComponent.cpp +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Document/AtomToolsDocumentSystemComponent.cpp @@ -495,8 +495,6 @@ namespace AtomToolsFramework return AZ::Uuid::CreateNull(); } - traceRecorder.GetDump().clear(); - bool openResult = false; AtomToolsDocumentRequestBus::EventResult(openResult, documentId, &AtomToolsDocumentRequestBus::Events::Open, requestedPath); if (!openResult) @@ -507,6 +505,12 @@ namespace AtomToolsFramework AtomToolsDocumentSystemRequestBus::Broadcast(&AtomToolsDocumentSystemRequestBus::Events::DestroyDocument, documentId); return AZ::Uuid::CreateNull(); } + else if (traceRecorder.GetWarningCount(true) > 0) + { + QMessageBox::warning( + QApplication::activeWindow(), QString("Document opened with warnings"), + QString("Warnings encountered: \n%1\n\n%2").arg(requestedPath.c_str()).arg(traceRecorder.GetDump().c_str())); + } return documentId; } diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/PreviewRenderer/PreviewRendererSystemComponent.cpp b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/PreviewRenderer/PreviewRendererSystemComponent.cpp index d46e7b27be..28bd196a1d 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/PreviewRenderer/PreviewRendererSystemComponent.cpp +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/PreviewRenderer/PreviewRendererSystemComponent.cpp @@ -10,6 +10,7 @@ #include #include #include +#include namespace AtomToolsFramework { @@ -53,10 +54,15 @@ namespace AtomToolsFramework AZ::TickBus::QueueFunction( [this]() { - if (!m_previewRenderer) + // Only create a preview renderer if the RPI interface is fully initialized. Otherwise the constructor will leave things + // in a bad state that can lead to crashing. + if (AZ::RPI::RPISystemInterface::Get()->IsInitialized()) { - m_previewRenderer.reset(aznew AtomToolsFramework::PreviewRenderer( - "PreviewRendererSystemComponent Preview Scene", "PreviewRendererSystemComponent Preview Pipeline")); + if (!m_previewRenderer) + { + m_previewRenderer.reset(aznew AtomToolsFramework::PreviewRenderer( + "PreviewRendererSystemComponent Preview Scene", "PreviewRendererSystemComponent Preview Pipeline")); + } } }); } diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Util/MaterialPropertyUtil.cpp b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Util/MaterialPropertyUtil.cpp index c49cd3fafb..3ffd8efa6e 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Util/MaterialPropertyUtil.cpp +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Util/MaterialPropertyUtil.cpp @@ -167,6 +167,7 @@ namespace AtomToolsFramework bool ConvertToExportFormat( const AZStd::string& exportPath, + [[maybe_unused]] const AZ::Name& propertyId, const AZ::RPI::MaterialTypeSourceData::PropertyDefinition& propertyDefinition, AZ::RPI::MaterialPropertyValue& propertyValue) { @@ -175,7 +176,7 @@ namespace AtomToolsFramework const uint32_t index = propertyValue.GetValue(); if (index >= propertyDefinition.m_enumValues.size()) { - AZ_Error("AtomToolsFramework", false, "Invalid value for material enum property: '%s'.", propertyDefinition.m_name.c_str()); + AZ_Error("AtomToolsFramework", false, "Invalid value for material enum property: '%s'.", propertyId.GetCStr()); return false; } @@ -186,18 +187,33 @@ namespace AtomToolsFramework // Image asset references must be converted from asset IDs to a relative source file path if (propertyDefinition.m_dataType == AZ::RPI::MaterialPropertyDataType::Image) { + AZStd::string imagePath; + AZ::Data::AssetId imageAssetId; + if (propertyValue.Is>()) { const auto& imageAsset = propertyValue.GetValue>(); - const auto& imagePath = AZ::RPI::AssetUtils::GetSourcePathByAssetId(imageAsset.GetId()); - propertyValue = GetExteralReferencePath(exportPath, imagePath); - return true; + imageAssetId = imageAsset.GetId(); } if (propertyValue.Is>()) { const auto& image = propertyValue.GetValue>(); - const auto& imagePath = image ? AZ::RPI::AssetUtils::GetSourcePathByAssetId(image->GetAssetId()) : ""; + if (image) + { + imageAssetId = image->GetAssetId(); + } + } + + imagePath = AZ::RPI::AssetUtils::GetSourcePathByAssetId(imageAssetId); + + if (imageAssetId.IsValid() && imagePath.empty()) + { + AZ_Error("AtomToolsFramework", false, "Image asset could not be found for property: '%s'.", propertyId.GetCStr()); + return false; + } + else + { propertyValue = GetExteralReferencePath(exportPath, imagePath); return true; } diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Util/Util.cpp b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Util/Util.cpp index be112345a9..cd50c10e23 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Util/Util.cpp +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Util/Util.cpp @@ -6,15 +6,18 @@ * */ +#include +#include #include #include +#include #include #include #include #include +#include #include #include -#include AZ_PUSH_DISABLE_WARNING(4251 4800, "-Wunknown-warning-option") // disable warnings spawned by QT #include @@ -24,6 +27,36 @@ AZ_POP_DISABLE_WARNING namespace AtomToolsFramework { + void LoadImageAsync(const AZStd::string& path, LoadImageAsyncCallback callback) + { + AZ::Job* job = AZ::CreateJobFunction( + [path, callback]() + { + ImageProcessingAtom::IImageObjectPtr imageObject; + ImageProcessingAtom::ImageProcessingRequestBus::BroadcastResult( + imageObject, &ImageProcessingAtom::ImageProcessingRequests::LoadImagePreview, path); + + if (imageObject) + { + AZ::u8* imageBuf = nullptr; + AZ::u32 pitch = 0; + AZ::u32 mip = 0; + imageObject->GetImagePointer(mip, imageBuf, pitch); + const AZ::u32 width = imageObject->GetWidth(mip); + const AZ::u32 height = imageObject->GetHeight(mip); + + QImage image(imageBuf, width, height, pitch, QImage::Format_RGBA8888); + + if (callback) + { + callback(image); + } + } + }, + true); + job->Start(); + } + QFileInfo GetSaveFileInfo(const QString& initialPath) { const QFileInfo initialFileInfo(initialPath); @@ -133,29 +166,12 @@ namespace AtomToolsFramework bool LaunchTool(const QString& baseName, const QString& extension, const QStringList& arguments) { - const char* engineRoot = nullptr; - AzFramework::ApplicationRequests::Bus::BroadcastResult(engineRoot, &AzFramework::ApplicationRequests::GetEngineRoot); - AZ_Assert(engineRoot != nullptr, "AzFramework::ApplicationRequests::GetEngineRoot failed"); + AZ::IO::FixedMaxPath engineRoot = AZ::Utils::GetEnginePath(); + AZ_Assert(!engineRoot.empty(), "Cannot query Engine Path"); - char binFolderName[AZ_MAX_PATH_LEN] = {}; - AZ::Utils::GetExecutablePathReturnType ret = AZ::Utils::GetExecutablePath(binFolderName, AZ_MAX_PATH_LEN); + AZ::IO::FixedMaxPath launchPath = AZ::IO::FixedMaxPath(AZ::Utils::GetExecutableDirectory()) + / (baseName + extension).toUtf8().constData(); - // If it contains the filename, zero out the last path separator character... - if (ret.m_pathIncludesFilename) - { - char* lastSlash = strrchr(binFolderName, AZ_CORRECT_FILESYSTEM_SEPARATOR); - if (lastSlash) - { - *lastSlash = '\0'; - } - } - - const QString path = QString("%1%2%3%4") - .arg(binFolderName) - .arg(AZ_CORRECT_FILESYSTEM_SEPARATOR_STRING) - .arg(baseName) - .arg(extension); - - return QProcess::startDetached(path, arguments, engineRoot); + return QProcess::startDetached(launchPath.c_str(), arguments, engineRoot.c_str()); } } diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Viewport/ModularViewportCameraController.cpp b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Viewport/ModularViewportCameraController.cpp index a92bfdbcdb..179ccd9fd8 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Viewport/ModularViewportCameraController.cpp +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Viewport/ModularViewportCameraController.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -175,16 +176,12 @@ namespace AtomToolsFramework // ignore these updates if the camera is being updated internally if (!m_updatingTransformInternally) { - if (m_storedCamera.has_value()) - { - // if an external change occurs ensure we update the stored reference frame if one is set - RefreshReferenceFrame(); - return; - } - m_previousCamera = m_targetCamera; - UpdateCameraFromTransform(m_targetCamera, m_modularCameraViewportContext->GetCameraTransform()); - m_camera = m_targetCamera; + + const AZ::Transform transform = m_modularCameraViewportContext->GetCameraTransform(); + const AZ::Vector3 eulerAngles = AzFramework::EulerAngles(AZ::Matrix3x3::CreateFromTransform(transform)); + UpdateCameraFromTranslationAndRotation(m_targetCamera, transform.GetTranslation(), eulerAngles); + m_targetRoll = eulerAngles.GetY(); } }; @@ -227,7 +224,9 @@ namespace AtomToolsFramework { m_targetCamera = m_cameraSystem.StepCamera(m_targetCamera, event.m_deltaTime.count()); m_camera = AzFramework::SmoothCamera(m_camera, m_targetCamera, m_cameraProps, event.m_deltaTime.count()); - m_modularCameraViewportContext->SetCameraTransform(m_referenceFrameOverride * m_camera.Transform()); + m_roll = AzFramework::SmoothValue(m_targetRoll, m_roll, m_cameraProps.m_rotateSmoothnessFn(), event.m_deltaTime.count()); + + m_modularCameraViewportContext->SetCameraTransform(CombinedCameraTransform()); } else if (m_cameraMode == CameraMode::Animation) { @@ -236,7 +235,10 @@ namespace AtomToolsFramework return t * t * t * (t * (t * 6.0f - 15.0f) + 10.0f); }; - m_cameraAnimation.m_time = AZ::GetClamp(m_cameraAnimation.m_time + event.m_deltaTime.count(), 0.0f, 1.0f); + m_cameraAnimation.m_time = AZ::GetClamp( + m_cameraAnimation.m_time + + (event.m_deltaTime.count() / ModularViewportCameraControllerRequests::InterpolateToTransformDuration), + 0.0f, 1.0f); const auto& [transformStart, transformEnd, animationTime] = m_cameraAnimation; @@ -250,6 +252,7 @@ namespace AtomToolsFramework m_camera.m_yaw = eulerAngles.GetZ(); m_camera.m_pivot = current.GetTranslation(); m_camera.m_offset = AZ::Vector3::CreateZero(); + m_targetRoll = eulerAngles.GetY(); m_targetCamera = m_camera; m_modularCameraViewportContext->SetCameraTransform(current); @@ -257,55 +260,59 @@ namespace AtomToolsFramework if (animationTime >= 1.0f) { m_cameraMode = CameraMode::Control; - RefreshReferenceFrame(); } } m_updatingTransformInternally = false; } - void ModularViewportCameraControllerInstance::InterpolateToTransform(const AZ::Transform& worldFromLocal) + bool ModularViewportCameraControllerInstance::InterpolateToTransform(const AZ::Transform& worldFromLocal) { - m_cameraMode = CameraMode::Animation; - m_cameraAnimation = CameraAnimation{ m_referenceFrameOverride * m_camera.Transform(), worldFromLocal, 0.0f }; + if (!IsInterpolating()) + { + m_cameraMode = CameraMode::Animation; + m_cameraAnimation = CameraAnimation{ CombinedCameraTransform(), worldFromLocal, 0.0f }; + + return true; + } + + return false; } - AZ::Transform ModularViewportCameraControllerInstance::GetReferenceFrame() const + bool ModularViewportCameraControllerInstance::IsInterpolating() const { - return m_referenceFrameOverride; + return m_cameraMode == CameraMode::Animation; } - void ModularViewportCameraControllerInstance::SetReferenceFrame(const AZ::Transform& worldFromLocal) + void ModularViewportCameraControllerInstance::StartTrackingTransform(const AZ::Transform& worldFromLocal) { if (!m_storedCamera.has_value()) { m_storedCamera = m_previousCamera; } - m_referenceFrameOverride = worldFromLocal; - m_targetCamera.m_pitch = 0.0f; - m_targetCamera.m_yaw = 0.0f; + const auto angles = AzFramework::EulerAngles(AZ::Matrix3x3::CreateFromQuaternion(worldFromLocal.GetRotation())); + m_targetCamera.m_pitch = angles.GetX(); + m_targetCamera.m_yaw = angles.GetZ(); m_targetCamera.m_offset = AZ::Vector3::CreateZero(); - m_targetCamera.m_pivot = AZ::Vector3::CreateZero(); - m_camera = m_targetCamera; + m_targetCamera.m_pivot = worldFromLocal.GetTranslation(); + m_targetRoll = angles.GetY(); } - void ModularViewportCameraControllerInstance::ClearReferenceFrame() + void ModularViewportCameraControllerInstance::StopTrackingTransform() { - m_referenceFrameOverride = AZ::Transform::CreateIdentity(); - if (m_storedCamera.has_value()) { m_targetCamera = m_storedCamera.value(); - m_camera = m_targetCamera; + m_targetRoll = 0.0f; } m_storedCamera.reset(); } - void ModularViewportCameraControllerInstance::RefreshReferenceFrame() + bool ModularViewportCameraControllerInstance::IsTrackingTransform() const { - m_referenceFrameOverride = m_modularCameraViewportContext->GetCameraTransform() * m_camera.Transform().GetInverse(); + return m_storedCamera.has_value(); } AZ::Transform PlaceholderModularCameraViewportContextImpl::GetCameraTransform() const @@ -324,4 +331,9 @@ namespace AtomToolsFramework { handler.Connect(m_viewMatrixChangedEvent); } + + AZ::Transform ModularViewportCameraControllerInstance::CombinedCameraTransform() const + { + return m_camera.Transform() * AZ::Transform::CreateFromMatrix3x3(AZ::Matrix3x3::CreateRotationY(m_targetRoll)); + } } // namespace AtomToolsFramework diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Viewport/RenderViewportWidget.cpp b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Viewport/RenderViewportWidget.cpp index bed4778e8e..759f939382 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Viewport/RenderViewportWidget.cpp +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Viewport/RenderViewportWidget.cpp @@ -75,7 +75,11 @@ namespace AtomToolsFramework m_defaultCamera = AZ::RPI::View::CreateView(cameraName, AZ::RPI::View::UsageFlags::UsageCamera); AZ::Interface::Get()->PushView(m_viewportContext->GetName(), m_defaultCamera); - AzToolsFramework::ViewportInteraction::ViewportInteractionRequestBus::Handler::BusConnect(GetId()); + m_viewportInteractionImpl = AZStd::make_unique(m_defaultCamera); + m_viewportInteractionImpl->m_deviceScalingFactorFn = [this] { return aznumeric_cast(devicePixelRatioF()); }; + m_viewportInteractionImpl->m_screenSizeFn = [this] { return AzFramework::ScreenSize(width(), height()); }; + m_viewportInteractionImpl->Connect(id); + AzToolsFramework::ViewportInteraction::ViewportMouseCursorRequestBus::Handler::BusConnect(GetId()); AzFramework::InputChannelEventListener::Connect(); AZ::TickBus::Handler::BusConnect(); @@ -107,7 +111,7 @@ namespace AtomToolsFramework AZ::TickBus::Handler::BusDisconnect(); AzFramework::InputChannelEventListener::Disconnect(); AzToolsFramework::ViewportInteraction::ViewportMouseCursorRequestBus::Handler::BusDisconnect(); - AzToolsFramework::ViewportInteraction::ViewportInteractionRequestBus::Handler::BusDisconnect(); + m_viewportInteractionImpl->Disconnect(); } void RenderViewportWidget::LockRenderTargetSize(uint32_t width, uint32_t height) @@ -290,77 +294,23 @@ namespace AtomToolsFramework AzFramework::CameraState RenderViewportWidget::GetCameraState() { - AZ::RPI::ViewPtr currentView = m_viewportContext->GetDefaultView(); - if (currentView == nullptr) - { - return {}; - } - - // Build camera state from Atom camera transforms - AzFramework::CameraState cameraState = AzFramework::CreateCameraFromWorldFromViewMatrix( - currentView->GetViewToWorldMatrix(), - AZ::Vector2{aznumeric_cast(width()), aznumeric_cast(height())} - ); - AzFramework::SetCameraClippingVolumeFromPerspectiveFovMatrixRH(cameraState, currentView->GetViewToClipMatrix()); - - // Convert from Z-up - AZStd::swap(cameraState.m_forward, cameraState.m_up); - cameraState.m_forward = -cameraState.m_forward; - - return cameraState; + return m_viewportInteractionImpl->GetCameraState(); } AzFramework::ScreenPoint RenderViewportWidget::ViewportWorldToScreen(const AZ::Vector3& worldPosition) { - if (AZ::RPI::ViewPtr currentView = m_viewportContext->GetDefaultView(); - currentView == nullptr) - { - return AzFramework::ScreenPoint(0, 0); - } - - return AzFramework::WorldToScreen(worldPosition, GetCameraState()); + return m_viewportInteractionImpl->ViewportWorldToScreen(worldPosition); } - AZStd::optional RenderViewportWidget::ViewportScreenToWorld(const AzFramework::ScreenPoint& screenPosition, float depth) + AZ::Vector3 RenderViewportWidget::ViewportScreenToWorld(const AzFramework::ScreenPoint& screenPosition) { - const auto& cameraProjection = m_viewportContext->GetCameraProjectionMatrix(); - const auto& cameraView = m_viewportContext->GetCameraViewMatrix(); - - const AZ::Vector4 normalizedScreenPosition { - screenPosition.m_x * 2.f / width() - 1.0f, - (height() - screenPosition.m_y) * 2.f / height() - 1.0f, - 1.f - depth, // [GFX TODO] [ATOM-1501] Currently we always assume reverse depth - 1.f - }; - - AZ::Matrix4x4 worldFromScreen = cameraProjection * cameraView; - worldFromScreen.InvertFull(); - - const AZ::Vector4 projectedPosition = worldFromScreen * normalizedScreenPosition; - if (projectedPosition.GetW() == 0.0f) - { - return {}; - } - - return projectedPosition.GetAsVector3() / projectedPosition.GetW(); + return m_viewportInteractionImpl->ViewportScreenToWorld(screenPosition); } - AZStd::optional RenderViewportWidget::ViewportScreenToWorldRay( + AzToolsFramework::ViewportInteraction::ProjectedViewportRay RenderViewportWidget::ViewportScreenToWorldRay( const AzFramework::ScreenPoint& screenPosition) { - auto pos0 = ViewportScreenToWorld(screenPosition, 0.f); - auto pos1 = ViewportScreenToWorld(screenPosition, 1.f); - if (!pos0.has_value() || !pos1.has_value()) - { - return {}; - } - - pos0 = m_viewportContext->GetDefaultView()->GetViewToWorldMatrix().GetTranslation(); - AZ::Vector3 rayOrigin = pos0.value(); - AZ::Vector3 rayDirection = pos1.value() - pos0.value(); - rayDirection.Normalize(); - - return AzToolsFramework::ViewportInteraction::ProjectedViewportRay{rayOrigin, rayDirection}; + return m_viewportInteractionImpl->ViewportScreenToWorldRay(screenPosition); } float RenderViewportWidget::DeviceScalingFactor() diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Viewport/ViewportInteractionImpl.cpp b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Viewport/ViewportInteractionImpl.cpp new file mode 100644 index 0000000000..1a015c167c --- /dev/null +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Viewport/ViewportInteractionImpl.cpp @@ -0,0 +1,68 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include +#include + +namespace AtomToolsFramework +{ + ViewportInteractionImpl::ViewportInteractionImpl(AZ::RPI::ViewPtr viewPtr) + : m_viewPtr(AZStd::move(viewPtr)) + { + } + + void ViewportInteractionImpl::Connect(const AzFramework::ViewportId viewportId) + { + AzToolsFramework::ViewportInteraction::ViewportInteractionRequestBus::Handler::BusConnect(viewportId); + AZ::RPI::ViewportContextIdNotificationBus::Handler::BusConnect(viewportId); + } + + void ViewportInteractionImpl::Disconnect() + { + AZ::RPI::ViewportContextIdNotificationBus::Handler::BusDisconnect(); + AzToolsFramework::ViewportInteraction::ViewportInteractionRequestBus::Handler::BusDisconnect(); + } + + AzFramework::CameraState ViewportInteractionImpl::GetCameraState() + { + // build camera state from atom camera transforms + AzFramework::CameraState cameraState = + AzFramework::CreateDefaultCamera(m_viewPtr->GetCameraTransform(), AzFramework::Vector2FromScreenSize(m_screenSizeFn())); + AzFramework::SetCameraClippingVolumeFromPerspectiveFovMatrixRH(cameraState, m_viewPtr->GetViewToClipMatrix()); + return cameraState; + } + + AzFramework::ScreenPoint ViewportInteractionImpl::ViewportWorldToScreen(const AZ::Vector3& worldPosition) + { + return AzFramework::WorldToScreen(worldPosition, GetCameraState()); + } + + AZ::Vector3 ViewportInteractionImpl::ViewportScreenToWorld(const AzFramework::ScreenPoint& screenPosition) + { + return AzFramework::ScreenToWorld(screenPosition, GetCameraState()); + } + + AzToolsFramework::ViewportInteraction::ProjectedViewportRay ViewportInteractionImpl::ViewportScreenToWorldRay( + const AzFramework::ScreenPoint& screenPosition) + { + const AzFramework::CameraState cameraState = GetCameraState(); + const AZ::Vector3 rayOrigin = AzFramework::ScreenToWorld(screenPosition, cameraState); + const AZ::Vector3 rayDirection = (rayOrigin - cameraState.m_position).GetNormalized(); + return AzToolsFramework::ViewportInteraction::ProjectedViewportRay{ rayOrigin, rayDirection }; + } + + float ViewportInteractionImpl::DeviceScalingFactor() + { + return m_deviceScalingFactorFn(); + } + + void ViewportInteractionImpl::OnViewportDefaultViewChanged(AZ::RPI::ViewPtr view) + { + m_viewPtr = AZStd::move(view); + } +} // namespace AtomToolsFramework diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Window/AtomToolsMainWindow.cpp b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Window/AtomToolsMainWindow.cpp index aeca51230a..f07fd9c536 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Window/AtomToolsMainWindow.cpp +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Window/AtomToolsMainWindow.cpp @@ -50,8 +50,9 @@ namespace AtomToolsFramework void AtomToolsMainWindow::ActivateWindow() { - activateWindow(); + show(); raise(); + activateWindow(); } bool AtomToolsMainWindow::AddDockWidget(const AZStd::string& name, QWidget* widget, uint32_t area, uint32_t orientation) diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Tests/AtomToolsFrameworkTest.cpp b/Gems/Atom/Tools/AtomToolsFramework/Code/Tests/AtomToolsFrameworkTest.cpp index df16cfbc43..3124372bd2 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/Tests/AtomToolsFrameworkTest.cpp +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Tests/AtomToolsFrameworkTest.cpp @@ -12,16 +12,25 @@ namespace UnitTest { + class AtomToolsFrameworkTestEnvironment : public AZ::Test::ITestEnvironment + { + protected: + void SetupEnvironment() override + { + AZ::AllocatorInstance::Create(); + } + + void TeardownEnvironment() override + { + AZ::AllocatorInstance::Destroy(); + } + }; + class AtomToolsFrameworkTest : public ::testing::Test { protected: void SetUp() override { - if (!AZ::AllocatorInstance::IsReady()) - { - AZ::AllocatorInstance::Create(AZ::SystemAllocator::Descriptor()); - } - m_assetSystemStub.Activate(); RegisterSourceAsset("objects/upgrades/materials/supercondor.material"); @@ -38,11 +47,6 @@ namespace UnitTest void TearDown() override { m_assetSystemStub.Deactivate(); - - if (AZ::AllocatorInstance::IsReady()) - { - AZ::AllocatorInstance::Destroy(); - } } void RegisterSourceAsset(const AZStd::string& path) @@ -73,5 +77,5 @@ namespace UnitTest ASSERT_EQ(AtomToolsFramework::GetExteralReferencePath("d:/project/assets/objects/upgrades/materials/supercondor.material", "d:/project/assets/materials/condor.material", 0), "materials/condor.material"); } - AZ_UNIT_TEST_HOOK(DEFAULT_UNIT_TEST_ENV); + AZ_UNIT_TEST_HOOK(new AtomToolsFrameworkTestEnvironment); } // namespace UnitTest diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Tests/ViewportInteractionImplTests.cpp b/Gems/Atom/Tools/AtomToolsFramework/Code/Tests/ViewportInteractionImplTests.cpp new file mode 100644 index 0000000000..2dfe4f7c29 --- /dev/null +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Tests/ViewportInteractionImplTests.cpp @@ -0,0 +1,209 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace UnitTest +{ + class ViewportInteractionImplFixture : public ::testing::Test + { + public: + static inline constexpr AzFramework::ViewportId TestViewportId = 1234; + static inline constexpr AzFramework::ScreenSize ScreenDimensions = AzFramework::ScreenSize(1280, 720); + + static AzFramework::ScreenPoint ScreenCenter() + { + const auto halfScreenDimensions = ScreenDimensions * 0.5f; + return AzFramework::ScreenPoint(halfScreenDimensions.m_width, halfScreenDimensions.m_height); + } + + void SetUp() override + { + AZ::NameDictionary::Create(); + + m_view = AZ::RPI::View::CreateView(AZ::Name("TestView"), AZ::RPI::View::UsageCamera); + + const auto aspectRatio = aznumeric_cast(ScreenDimensions.m_width) / aznumeric_cast(ScreenDimensions.m_height); + + AZ::Matrix4x4 viewToClipMatrix; + AZ::MakePerspectiveFovMatrixRH(viewToClipMatrix, AZ::DegToRad(60.0f), aspectRatio, 0.1f, 1000.f, true); + m_view->SetViewToClipMatrix(viewToClipMatrix); + + m_viewportInteractionImpl = AZStd::make_unique(m_view); + + m_viewportInteractionImpl->m_deviceScalingFactorFn = [] + { + return 1.0f; + }; + m_viewportInteractionImpl->m_screenSizeFn = [] + { + return ScreenDimensions; + }; + + m_viewportInteractionImpl->Connect(TestViewportId); + } + + void TearDown() override + { + m_viewportInteractionImpl->Disconnect(); + m_viewportInteractionImpl.reset(); + + m_view.reset(); + + AZ::NameDictionary::Destroy(); + } + + AZ::RPI::ViewPtr m_view; + AZStd::unique_ptr m_viewportInteractionImpl; + }; + + // transform a point from screen space to world space, and then from world space back to screen space + AzFramework::ScreenPoint ScreenToWorldToScreen( + const AzFramework::ScreenPoint& screenPoint, + AzToolsFramework::ViewportInteraction::ViewportInteractionRequests& viewportInteractionRequests) + { + const auto worldResult = viewportInteractionRequests.ViewportScreenToWorld(screenPoint); + return viewportInteractionRequests.ViewportWorldToScreen(worldResult); + } + + TEST_F(ViewportInteractionImplFixture, ViewportInteractionRequestsMapsFromScreenToWorldAndBack) + { + using AzFramework::ScreenPoint; + + m_view->SetCameraTransform(AZ::Matrix3x4::CreateFromMatrix3x3AndTranslation( + AZ::Matrix3x3::CreateRotationZ(AZ::DegToRad(90.0f)), AZ::Vector3(10.0f, 0.0f, 5.0f))); + + { + const auto expectedScreenPoint = ScreenPoint{ 600, 450 }; + const auto resultScreenPoint = ScreenToWorldToScreen(expectedScreenPoint, *m_viewportInteractionImpl); + EXPECT_EQ(resultScreenPoint, expectedScreenPoint); + } + + { + auto expectedScreenPoint = ScreenCenter(); + const auto resultScreenPoint = ScreenToWorldToScreen(expectedScreenPoint, *m_viewportInteractionImpl); + EXPECT_EQ(resultScreenPoint, expectedScreenPoint); + } + + { + const auto expectedScreenPoint = ScreenPoint{ 0, 0 }; + const auto resultScreenPoint = ScreenToWorldToScreen(expectedScreenPoint, *m_viewportInteractionImpl); + EXPECT_EQ(resultScreenPoint, expectedScreenPoint); + } + + { + const auto expectedScreenPoint = ScreenPoint{ ScreenDimensions.m_width, ScreenDimensions.m_height }; + const auto resultScreenPoint = ScreenToWorldToScreen(expectedScreenPoint, *m_viewportInteractionImpl); + EXPECT_EQ(resultScreenPoint, expectedScreenPoint); + } + } + + TEST_F(ViewportInteractionImplFixture, ScreenToWorldReturnsPositionOnNearClipPlaneInWorldSpace) + { + m_view->SetCameraTransform(AZ::Matrix3x4::CreateFromMatrix3x3AndTranslation( + AZ::Matrix3x3::CreateRotationZ(AZ::DegToRad(-90.0f)), AZ::Vector3(20.0f, 0.0f, 0.0f))); + + const auto worldResult = m_viewportInteractionImpl->ViewportScreenToWorld(ScreenCenter()); + EXPECT_THAT(worldResult, IsClose(AZ::Vector3(20.1f, 0.0f, 0.0f))); + } + + // note: values produced by reproducing in the editor viewport + TEST_F(ViewportInteractionImplFixture, WorldToScreenGivesExpectedScreenCoordinates) + { + using AzFramework::ScreenPoint; + + { + m_view->SetCameraTransform(AZ::Matrix3x4::CreateFromMatrix3x3AndTranslation( + AZ::Matrix3x3::CreateRotationZ(AZ::DegToRad(160.0f)) * AZ::Matrix3x3::CreateRotationX(AZ::DegToRad(-18.0f)), + AZ::Vector3(-21.0f, 2.5f, 6.0f))); + + const auto screenResult = m_viewportInteractionImpl->ViewportWorldToScreen(AZ::Vector3(-21.0f, -1.5f, 5.0f)); + EXPECT_EQ(screenResult, ScreenPoint(420, 326)); + } + + { + m_view->SetCameraTransform(AZ::Matrix3x4::CreateFromMatrix3x3AndTranslation( + AZ::Matrix3x3::CreateRotationZ(AZ::DegToRad(175.0f)) * AZ::Matrix3x3::CreateRotationX(AZ::DegToRad(-90.0f)), + AZ::Vector3(-10.0f, -11.0f, 2.5f))); + + const auto screenResult = m_viewportInteractionImpl->ViewportWorldToScreen(AZ::Vector3(-10.0f, -10.5f, 0.5f)); + EXPECT_EQ(screenResult, ScreenPoint(654, 515)); + } + + { + m_view->SetCameraTransform(AZ::Matrix3x4::CreateFromMatrix3x3AndTranslation( + AZ::Matrix3x3::CreateRotationZ(AZ::DegToRad(70.0f)) * AZ::Matrix3x3::CreateRotationX(AZ::DegToRad(65.0f)), + AZ::Vector3(-22.5f, -10.0f, 1.5f))); + + const auto screenResult = m_viewportInteractionImpl->ViewportWorldToScreen(AZ::Vector3(-23.0f, -9.5f, 3.0f)); + EXPECT_EQ(screenResult, ScreenPoint(754, 340)); + } + } + + TEST_F(ViewportInteractionImplFixture, ScreenToWorldRayGivesGivesExpectedOriginAndDirection) + { + using AzFramework::ScreenPoint; + + m_view->SetCameraTransform(AZ::Matrix3x4::CreateFromMatrix3x3AndTranslation( + AZ::Matrix3x3::CreateRotationZ(AZ::DegToRad(34.0f)) * AZ::Matrix3x3::CreateRotationX(AZ::DegToRad(-24.0f)), + AZ::Vector3(-9.3f, -9.8f, 4.0f))); + + const auto ray = m_viewportInteractionImpl->ViewportScreenToWorldRay(ScreenPoint(832, 226)); + + float unused; + auto intersection = AZ::Intersect::IntersectRaySphere(ray.origin, ray.direction, AZ::Vector3(-14.0f, 5.7f, 0.75f), 0.5f, unused); + + EXPECT_EQ(intersection, AZ::Intersect::SphereIsectTypes::ISECT_RAY_SPHERE_ISECT); + } + + TEST_F(ViewportInteractionImplFixture, ViewportInteractionRequestsReturnsNewViewWhenItIsChanged) + { + // Given + const auto primaryViewTransform = AZ::Matrix3x4::CreateFromMatrix3x3AndTranslation( + AZ::Matrix3x3::CreateRotationZ(AZ::DegToRad(90.0f)) * AZ::Matrix3x3::CreateRotationX(AZ::DegToRad(-45.0f)), + AZ::Vector3(-10.0f, -15.0f, 20.0f)); + + m_view->SetCameraTransform(primaryViewTransform); + + AZ::RPI::ViewPtr secondaryView = AZ::RPI::View::CreateView(AZ::Name("SecondaryView"), AZ::RPI::View::UsageCamera); + + const auto secondaryViewTransform = AZ::Matrix3x4::CreateFromMatrix3x3AndTranslation( + AZ::Matrix3x3::CreateRotationZ(AZ::DegToRad(-90.0f)) * AZ::Matrix3x3::CreateRotationX(AZ::DegToRad(30.0f)), + AZ::Vector3(-50.0f, -25.0f, 10.0f)); + + secondaryView->SetCameraTransform(secondaryViewTransform); + + // When + AZ::RPI::ViewportContextIdNotificationBus::Event( + TestViewportId, &AZ::RPI::ViewportContextIdNotificationBus::Events::OnViewportDefaultViewChanged, secondaryView); + + // retrieve updated camera transform + AzFramework::CameraState cameraState; + AzToolsFramework::ViewportInteraction::ViewportInteractionRequestBus::EventResult( + cameraState, TestViewportId, &AzToolsFramework::ViewportInteraction::ViewportInteractionRequestBus::Events::GetCameraState); + + const auto cameraMatrix = AzFramework::CameraTransform(cameraState); + const auto cameraTransform = AZ::Matrix3x4::CreateFromMatrix3x3AndTranslation( + AZ::Matrix3x3::CreateFromMatrix4x4(cameraMatrix), cameraMatrix.GetTranslation()); + + // Then + // camera transform matches that of the secondary view + EXPECT_THAT(cameraTransform, IsClose(secondaryViewTransform)); + } +} // namespace UnitTest diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/atomtoolsframework_files.cmake b/Gems/Atom/Tools/AtomToolsFramework/Code/atomtoolsframework_files.cmake index a2446cebcc..3ddcc05245 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/atomtoolsframework_files.cmake +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/atomtoolsframework_files.cmake @@ -28,6 +28,7 @@ set(FILES Include/AtomToolsFramework/Util/MaterialPropertyUtil.h Include/AtomToolsFramework/Util/Util.h Include/AtomToolsFramework/Viewport/RenderViewportWidget.h + Include/AtomToolsFramework/Viewport/ViewportInteractionImpl.h Include/AtomToolsFramework/Viewport/ModularViewportCameraController.h Include/AtomToolsFramework/Viewport/ModularViewportCameraControllerRequestBus.h Include/AtomToolsFramework/Window/AtomToolsMainWindow.h @@ -55,6 +56,7 @@ set(FILES Source/Util/Util.cpp Source/Viewport/RenderViewportWidget.cpp Source/Viewport/ModularViewportCameraController.cpp + Source/Viewport/ViewportInteractionImpl.cpp Source/Window/AtomToolsMainWindow.cpp Source/Window/AtomToolsMainWindowSystemComponent.cpp Source/Window/AtomToolsMainWindowSystemComponent.h diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/atomtoolsframework_tests_files.cmake b/Gems/Atom/Tools/AtomToolsFramework/Code/atomtoolsframework_tests_files.cmake index bd9ad9b3d8..a071d29f47 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/atomtoolsframework_tests_files.cmake +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/atomtoolsframework_tests_files.cmake @@ -8,4 +8,5 @@ set(FILES Tests/AtomToolsFrameworkTest.cpp + Tests/ViewportInteractionImplTests.cpp ) \ No newline at end of file diff --git a/Gems/Atom/Tools/MaterialEditor/Code/CMakeLists.txt b/Gems/Atom/Tools/MaterialEditor/Code/CMakeLists.txt index d585e81162..99beb721d6 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/CMakeLists.txt +++ b/Gems/Atom/Tools/MaterialEditor/Code/CMakeLists.txt @@ -60,7 +60,6 @@ ly_add_target( Gem::AtomToolsFramework.Editor Gem::Atom_RPI.Public Gem::Atom_Feature_Common.Public - Gem::ImageProcessingAtom.Headers ) ly_add_target( @@ -113,7 +112,6 @@ ly_add_target( RUNTIME_DEPENDENCIES Gem::AtomToolsFramework.Editor Gem::EditorPythonBindings.Editor - Gem::ImageProcessingAtom.Editor ) ly_set_gem_variant_to_load(TARGETS MaterialEditor VARIANTS Tools) diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Include/Atom/Viewport/MaterialViewportRequestBus.h b/Gems/Atom/Tools/MaterialEditor/Code/Include/Atom/Viewport/MaterialViewportRequestBus.h index e859d6a433..e37512127c 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Include/Atom/Viewport/MaterialViewportRequestBus.h +++ b/Gems/Atom/Tools/MaterialEditor/Code/Include/Atom/Viewport/MaterialViewportRequestBus.h @@ -62,15 +62,6 @@ namespace MaterialEditor //! Get set of lighting preset names virtual MaterialViewportPresetNameSet GetLightingPresetNames() const = 0; - //! Set lighting preset preview image - //! @param preset used to set preview image - //! @param preview image - virtual void SetLightingPresetPreview(AZ::Render::LightingPresetPtr preset, const QImage& image) = 0; - - //! Get lighting preset preview image - //! @param preset used to find preview image - virtual QImage GetLightingPresetPreview(AZ::Render::LightingPresetPtr preset) const = 0; - //! Get model preset last save path //! @param preset to lookup last save path virtual AZStd::string GetLightingPresetLastSavePath(AZ::Render::LightingPresetPtr preset) const = 0; @@ -108,15 +99,6 @@ namespace MaterialEditor //! Get set of model preset names virtual MaterialViewportPresetNameSet GetModelPresetNames() const = 0; - //! Set model preset preview image - //! @param preset used to set preview image - //! @param preview image - virtual void SetModelPresetPreview(AZ::Render::ModelPresetPtr preset, const QImage& image) = 0; - - //! Get model preset preview image - //! @param preset used to find preview image - virtual QImage GetModelPresetPreview(AZ::Render::ModelPresetPtr preset) const = 0; - //! Get model preset last save path //! @param preset to lookup last save path virtual AZStd::string GetModelPresetLastSavePath(AZ::Render::ModelPresetPtr preset) const = 0; diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Document/MaterialDocument.cpp b/Gems/Atom/Tools/MaterialEditor/Code/Source/Document/MaterialDocument.cpp index 8635d1eb3e..2d7768feec 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Source/Document/MaterialDocument.cpp +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Document/MaterialDocument.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -594,7 +595,7 @@ namespace MaterialEditor MaterialPropertyValue propertyValue = AtomToolsFramework::ConvertToRuntimeType(it->second.GetValue()); if (propertyValue.IsValid()) { - if (!AtomToolsFramework::ConvertToExportFormat(exportPath, propertyDefinition, propertyValue)) + if (!AtomToolsFramework::ConvertToExportFormat(exportPath, propertyId.GetFullName(), propertyDefinition, propertyValue)) { AZ_Error("MaterialDocument", false, "Material document property could not be converted: '%s' in '%s'.", propertyId.GetFullName().GetCStr(), m_absolutePath.c_str()); result = false; @@ -708,6 +709,8 @@ namespace MaterialEditor AZ_Error("MaterialDocument", false, "Material document extension not supported: '%s'.", m_absolutePath.c_str()); return false; } + + const bool elevateWarnings = false; // In order to support automation, general usability, and 'save as' functionality, the user must not have to wait // for their JSON file to be cooked by the asset processor before opening or editing it. @@ -716,7 +719,7 @@ namespace MaterialEditor // Long term, the material document should not be concerned with assets at all. The viewport window should be the // only thing concerned with assets or instances. auto materialAssetResult = - m_materialSourceData.CreateMaterialAssetFromSourceData(Uuid::CreateRandom(), m_absolutePath, true, true, &m_sourceDependencies); + m_materialSourceData.CreateMaterialAssetFromSourceData(Uuid::CreateRandom(), m_absolutePath, elevateWarnings, true, &m_sourceDependencies); if (!materialAssetResult) { AZ_Error("MaterialDocument", false, "Material asset could not be created from source data: '%s'.", m_absolutePath.c_str()); @@ -754,7 +757,7 @@ namespace MaterialEditor AZ_Error("MaterialDocument", false, "Material parent asset ID could not be created: '%s'.", m_materialSourceData.m_parentMaterial.c_str()); return false; } - + auto parentMaterialAssetResult = parentMaterialSourceData.CreateMaterialAssetFromSourceData( parentMaterialAssetIdResult.GetValue(), m_materialSourceData.m_parentMaterial, true, true); if (!parentMaterialAssetResult) diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Viewport/MaterialViewportComponent.cpp b/Gems/Atom/Tools/MaterialEditor/Code/Source/Viewport/MaterialViewportComponent.cpp index a8f41917f9..c8df123d0d 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Source/Viewport/MaterialViewportComponent.cpp +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Viewport/MaterialViewportComponent.cpp @@ -6,61 +6,26 @@ * */ -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include - -#include -#include #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include namespace MaterialEditor { - using LoadImageAsyncCallback = AZStd::function; - void LoadImageAsync(const AZStd::string& path, LoadImageAsyncCallback callback) - { - AZ::Job* job = AZ::CreateJobFunction([path, callback]() { - ImageProcessingAtom::IImageObjectPtr imageObject; - ImageProcessingAtom::ImageProcessingRequestBus::BroadcastResult(imageObject, &ImageProcessingAtom::ImageProcessingRequests::LoadImagePreview, path); - - if (imageObject) - { - AZ::u8* imageBuf = nullptr; - AZ::u32 pitch = 0; - AZ::u32 mip = 0; - imageObject->GetImagePointer(mip, imageBuf, pitch); - const AZ::u32 width = imageObject->GetWidth(mip); - const AZ::u32 height = imageObject->GetHeight(mip); - - QImage image(imageBuf, width, height, pitch, QImage::Format_RGBA8888); - - if (callback) - { - callback(image); - } - } - }, true); - job->Start(); - } - MaterialViewportComponent::MaterialViewportComponent() { } @@ -162,12 +127,6 @@ namespace MaterialEditor m_viewportSettings = AZ::UserSettings::CreateFind(AZ::Crc32("MaterialViewportSettings"), AZ::UserSettings::CT_GLOBAL); - m_lightingPresetPreviewImageDefault = QImage(180, 90, QImage::Format::Format_RGBA8888); - m_lightingPresetPreviewImageDefault.fill(Qt::GlobalColor::black); - - m_modelPresetPreviewImageDefault = QImage(90, 90, QImage::Format::Format_RGBA8888); - m_modelPresetPreviewImageDefault.fill(Qt::GlobalColor::black); - MaterialViewportRequestBus::Handler::BusConnect(); AzFramework::AssetCatalogEventBus::Handler::BusConnect(); } @@ -177,12 +136,10 @@ namespace MaterialEditor AzFramework::AssetCatalogEventBus::Handler::BusDisconnect(); MaterialViewportRequestBus::Handler::BusDisconnect(); - m_lightingPresetPreviewImages.clear(); m_lightingPresetVector.clear(); m_lightingPresetLastSavePathMap.clear(); m_lightingPresetSelection.reset(); - m_modelPresetPreviewImages.clear(); m_modelPresetVector.clear(); m_modelPresetLastSavePathMap.clear(); m_modelPresetSelection.reset(); @@ -286,14 +243,6 @@ namespace MaterialEditor SelectLightingPreset(presetPtr); } - const auto& imagePath = AZ::RPI::AssetUtils::GetSourcePathByAssetId(presetPtr->m_skyboxImageAsset.GetId()); - LoadImageAsync(imagePath, [presetPtr](const QImage& image) { - QImage imageScaled = image.scaled(180, 90, Qt::AspectRatioMode::KeepAspectRatio); - AZ::TickBus::QueueFunction([presetPtr, imageScaled]() { - MaterialViewportRequestBus::Broadcast(&MaterialViewportRequestBus::Events::SetLightingPresetPreview, presetPtr, imageScaled); - }); - }); - return presetPtr; } @@ -353,17 +302,6 @@ namespace MaterialEditor return names; } - void MaterialViewportComponent::SetLightingPresetPreview(AZ::Render::LightingPresetPtr preset, const QImage& image) - { - m_lightingPresetPreviewImages[preset] = image; - } - - QImage MaterialViewportComponent::GetLightingPresetPreview(AZ::Render::LightingPresetPtr preset) const - { - auto imageItr = m_lightingPresetPreviewImages.find(preset); - return imageItr != m_lightingPresetPreviewImages.end() ? imageItr->second : m_lightingPresetPreviewImageDefault; - } - AZStd::string MaterialViewportComponent::GetLightingPresetLastSavePath(AZ::Render::LightingPresetPtr preset) const { auto pathItr = m_lightingPresetLastSavePathMap.find(preset); @@ -382,14 +320,6 @@ namespace MaterialEditor SelectModelPreset(presetPtr); } - const auto& imagePath = AZ::RPI::AssetUtils::GetSourcePathByAssetId(presetPtr->m_previewImageAsset.GetId()); - LoadImageAsync(imagePath, [presetPtr](const QImage& image) { - QImage imageScaled = image.scaled(90, 90, Qt::AspectRatioMode::KeepAspectRatio); - AZ::TickBus::QueueFunction([presetPtr, imageScaled]() { - MaterialViewportRequestBus::Broadcast(&MaterialViewportRequestBus::Events::SetModelPresetPreview, presetPtr, imageScaled); - }); - }); - return presetPtr; } @@ -449,17 +379,6 @@ namespace MaterialEditor return names; } - void MaterialViewportComponent::SetModelPresetPreview(AZ::Render::ModelPresetPtr preset, const QImage& image) - { - m_modelPresetPreviewImages[preset] = image; - } - - QImage MaterialViewportComponent::GetModelPresetPreview(AZ::Render::ModelPresetPtr preset) const - { - auto imageItr = m_modelPresetPreviewImages.find(preset); - return imageItr != m_modelPresetPreviewImages.end() ? imageItr->second : m_modelPresetPreviewImageDefault; - } - AZStd::string MaterialViewportComponent::GetModelPresetLastSavePath(AZ::Render::ModelPresetPtr preset) const { auto pathItr = m_modelPresetLastSavePathMap.find(preset); diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Viewport/MaterialViewportComponent.h b/Gems/Atom/Tools/MaterialEditor/Code/Source/Viewport/MaterialViewportComponent.h index 12475bb113..a4f94c3546 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Source/Viewport/MaterialViewportComponent.h +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Viewport/MaterialViewportComponent.h @@ -58,8 +58,6 @@ namespace MaterialEditor void SelectLightingPreset(AZ::Render::LightingPresetPtr preset) override; void SelectLightingPresetByName(const AZStd::string& name) override; MaterialViewportPresetNameSet GetLightingPresetNames() const override; - void SetLightingPresetPreview(AZ::Render::LightingPresetPtr preset, const QImage& image) override; - QImage GetLightingPresetPreview(AZ::Render::LightingPresetPtr preset) const override; AZStd::string GetLightingPresetLastSavePath(AZ::Render::LightingPresetPtr preset) const override; AZ::Render::ModelPresetPtr AddModelPreset(const AZ::Render::ModelPreset& preset) override; @@ -70,8 +68,6 @@ namespace MaterialEditor void SelectModelPreset(AZ::Render::ModelPresetPtr preset) override; void SelectModelPresetByName(const AZStd::string& name) override; MaterialViewportPresetNameSet GetModelPresetNames() const override; - void SetModelPresetPreview(AZ::Render::ModelPresetPtr preset, const QImage& image) override; - QImage GetModelPresetPreview(AZ::Render::ModelPresetPtr preset) const override; AZStd::string GetModelPresetLastSavePath(AZ::Render::ModelPresetPtr preset) const override; void SetShadowCatcherEnabled(bool enable) override; @@ -97,12 +93,6 @@ namespace MaterialEditor AZ::Render::ModelPresetPtrVector m_modelPresetVector; AZ::Render::ModelPresetPtr m_modelPresetSelection; - AZStd::map m_lightingPresetPreviewImages; - AZStd::map m_modelPresetPreviewImages; - - QImage m_lightingPresetPreviewImageDefault; - QImage m_modelPresetPreviewImageDefault; - mutable AZStd::map m_lightingPresetLastSavePathMap; mutable AZStd::map m_modelPresetLastSavePathMap; diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/PresetBrowserDialogs/LightingPresetBrowserDialog.cpp b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/PresetBrowserDialogs/LightingPresetBrowserDialog.cpp index 72bf7fe003..f8ad038a85 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/PresetBrowserDialogs/LightingPresetBrowserDialog.cpp +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/PresetBrowserDialogs/LightingPresetBrowserDialog.cpp @@ -7,6 +7,7 @@ */ #include +#include #include #include #include @@ -27,13 +28,16 @@ namespace MaterialEditor MaterialViewportRequestBus::BroadcastResult(presets, &MaterialViewportRequestBus::Events::GetLightingPresets); AZStd::sort(presets.begin(), presets.end(), [](const auto& a, const auto& b) { return a->m_displayName < b->m_displayName; }); + const int itemSize = aznumeric_cast( + AtomToolsFramework::GetSettingOrDefault("/O3DE/Atom/MaterialEditor/PresetBrowserDialog/LightingItemSize", 180)); + QListWidgetItem* selectedItem = nullptr; for (const auto& preset : presets) { - QImage image; - MaterialViewportRequestBus::BroadcastResult(image, &MaterialViewportRequestBus::Events::GetLightingPresetPreview, preset); - - QListWidgetItem* item = CreateListItem(preset->m_displayName.c_str(), image); + AZStd::string path; + MaterialViewportRequestBus::BroadcastResult(path, &MaterialViewportRequestBus::Events::GetLightingPresetLastSavePath, preset); + QListWidgetItem* item = CreateListItem( + preset->m_displayName.c_str(), AZ::RPI::AssetUtils::MakeAssetId(path, 0).GetValue(), QSize(itemSize, itemSize)); m_listItemToPresetMap[item] = preset; diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/PresetBrowserDialogs/ModelPresetBrowserDialog.cpp b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/PresetBrowserDialogs/ModelPresetBrowserDialog.cpp index c1936cde35..f5a1677462 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/PresetBrowserDialogs/ModelPresetBrowserDialog.cpp +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/PresetBrowserDialogs/ModelPresetBrowserDialog.cpp @@ -27,13 +27,13 @@ namespace MaterialEditor MaterialViewportRequestBus::BroadcastResult(presets, &MaterialViewportRequestBus::Events::GetModelPresets); AZStd::sort(presets.begin(), presets.end(), [](const auto& a, const auto& b) { return a->m_displayName < b->m_displayName; }); + const int itemSize = aznumeric_cast( + AtomToolsFramework::GetSettingOrDefault("/O3DE/Atom/MaterialEditor/PresetBrowserDialog/ModelItemSize", 90)); + QListWidgetItem* selectedItem = nullptr; for (const auto& preset : presets) { - QImage image; - MaterialViewportRequestBus::BroadcastResult(image, &MaterialViewportRequestBus::Events::GetModelPresetPreview, preset); - - QListWidgetItem* item = CreateListItem(preset->m_displayName.c_str(), image); + QListWidgetItem* item = CreateListItem(preset->m_displayName.c_str(), preset->m_modelAsset.GetId(), QSize(itemSize, itemSize)); m_listItemToPresetMap[item] = preset; diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/PresetBrowserDialogs/PresetBrowserDialog.cpp b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/PresetBrowserDialogs/PresetBrowserDialog.cpp index d3aa6350f0..f2bb84dff6 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/PresetBrowserDialogs/PresetBrowserDialog.cpp +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/PresetBrowserDialogs/PresetBrowserDialog.cpp @@ -12,11 +12,16 @@ #include #include #include +#include +#include +#include +#include #include #include #include #include +#include namespace MaterialEditor { @@ -41,35 +46,51 @@ namespace MaterialEditor m_ui->m_presetList->setGridSize(QSize(0, 0)); m_ui->m_presetList->setWrapping(true); - QObject::connect(m_ui->m_presetList, &QListWidget::currentItemChanged, [this]() { SelectCurrentPreset(); }); + QObject::connect(m_ui->m_presetList, &QListWidget::currentItemChanged, [this](){ SelectCurrentPreset(); }); } - QListWidgetItem* PresetBrowserDialog::CreateListItem(const QString& title, const QImage& image) + QListWidgetItem* PresetBrowserDialog::CreateListItem(const QString& title, const AZ::Data::AssetId& assetId, const QSize& size) { + const int itemBorder = aznumeric_cast( + AtomToolsFramework::GetSettingOrDefault("/O3DE/Atom/MaterialEditor/PresetBrowserDialog/ItemBorder", 4)); + const int itemSpacing = aznumeric_cast( + AtomToolsFramework::GetSettingOrDefault("/O3DE/Atom/MaterialEditor/PresetBrowserDialog/ItemSpacing", 10)); + const int headerHeight = aznumeric_cast( + AtomToolsFramework::GetSettingOrDefault("/O3DE/Atom/MaterialEditor/PresetBrowserDialog/HeaderHeight", 15)); + const QSize gridSize = m_ui->m_presetList->gridSize(); - m_ui->m_presetList->setGridSize( - QSize(AZStd::max(gridSize.width(), image.width() + 10), AZStd::max(gridSize.height(), image.height() + 10))); + m_ui->m_presetList->setGridSize(QSize( + AZStd::max(gridSize.width(), size.width() + itemSpacing), + AZStd::max(gridSize.height(), size.height() + itemSpacing + headerHeight))); QListWidgetItem* item = new QListWidgetItem(m_ui->m_presetList); item->setData(Qt::UserRole, title); - item->setSizeHint(image.size() + QSize(4, 4)); + item->setSizeHint(size + QSize(itemBorder, itemBorder + headerHeight)); m_ui->m_presetList->addItem(item); - QLabel* previewImage = new QLabel(m_ui->m_presetList); - previewImage->setFixedSize(image.size()); - previewImage->setMargin(0); - previewImage->setPixmap(QPixmap::fromImage(image)); - previewImage->updateGeometry(); + QWidget* itemWidget = new QWidget(m_ui->m_presetList); + itemWidget->setLayout(new QVBoxLayout(itemWidget)); + itemWidget->layout()->setSpacing(0); + itemWidget->layout()->setMargin(0); - AzQtComponents::ElidingLabel* previewLabel = new AzQtComponents::ElidingLabel(previewImage); - previewLabel->setText(title); - previewLabel->setFixedSize(QSize(image.width(), 15)); - previewLabel->setMargin(0); - previewLabel->setStyleSheet("background-color: rgb(35, 35, 35)"); - AzQtComponents::Text::addPrimaryStyle(previewLabel); - AzQtComponents::Text::addLabelStyle(previewLabel); + AzQtComponents::ElidingLabel* header = new AzQtComponents::ElidingLabel(itemWidget); + header->setText(title); + header->setFixedSize(QSize(size.width(), headerHeight)); + header->setMargin(0); + header->setStyleSheet("background-color: rgb(35, 35, 35)"); + AzQtComponents::Text::addPrimaryStyle(header); + AzQtComponents::Text::addLabelStyle(header); + itemWidget->layout()->addWidget(header); - m_ui->m_presetList->setItemWidget(item, previewImage); + AzToolsFramework::Thumbnailer::ThumbnailWidget* thumbnail = new AzToolsFramework::Thumbnailer::ThumbnailWidget(itemWidget); + thumbnail->setFixedSize(size); + thumbnail->SetThumbnailKey( + MAKE_TKEY(AzToolsFramework::AssetBrowser::ProductThumbnailKey, assetId), + AzToolsFramework::Thumbnailer::ThumbnailContext::DefaultContext); + thumbnail->updateGeometry(); + itemWidget->layout()->addWidget(thumbnail); + + m_ui->m_presetList->setItemWidget(item, itemWidget); return item; } @@ -79,15 +100,15 @@ namespace MaterialEditor m_ui->m_searchWidget->setReadOnly(false); m_ui->m_searchWidget->setContextMenuPolicy(Qt::CustomContextMenu); AzQtComponents::LineEdit::applySearchStyle(m_ui->m_searchWidget); - connect(m_ui->m_searchWidget, &QLineEdit::textChanged, this, [this]() { ApplySearchFilter(); }); - connect(m_ui->m_searchWidget, &QWidget::customContextMenuRequested, this, [this](const QPoint& pos) { ShowSearchMenu(pos); }); + connect(m_ui->m_searchWidget, &QLineEdit::textChanged, this, [this](){ ApplySearchFilter(); }); + connect(m_ui->m_searchWidget, &QWidget::customContextMenuRequested, this, [this](const QPoint& pos){ ShowSearchMenu(pos); }); } void PresetBrowserDialog::SetupDialogButtons() { connect(m_ui->m_buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); connect(m_ui->m_buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); - connect(this, &QDialog::rejected, this, [this]() { SelectInitialPreset(); }); + connect(this, &QDialog::rejected, this, [this](){ SelectInitialPreset(); }); } void PresetBrowserDialog::ApplySearchFilter() diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/PresetBrowserDialogs/PresetBrowserDialog.h b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/PresetBrowserDialogs/PresetBrowserDialog.h index ee01737352..20e049f6f8 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/PresetBrowserDialogs/PresetBrowserDialog.h +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/PresetBrowserDialogs/PresetBrowserDialog.h @@ -9,12 +9,12 @@ #pragma once #if !defined(Q_MOC_RUN) +#include #include - #include #endif -#include +#include class QImage; class QListWidgetItem; @@ -32,7 +32,7 @@ namespace MaterialEditor protected: void SetupPresetList(); - QListWidgetItem* CreateListItem(const QString& title, const QImage& image); + QListWidgetItem* CreateListItem(const QString& title, const AZ::Data::AssetId& assetId, const QSize& size); void SetupSearchWidget(); void SetupDialogButtons(); diff --git a/Gems/Atom/Utils/Code/Include/Atom/Utils/ImGuiPassTree.inl b/Gems/Atom/Utils/Code/Include/Atom/Utils/ImGuiPassTree.inl index 55e457926a..5a8aaf7ded 100644 --- a/Gems/Atom/Utils/Code/Include/Atom/Utils/ImGuiPassTree.inl +++ b/Gems/Atom/Utils/Code/Include/Atom/Utils/ImGuiPassTree.inl @@ -19,11 +19,11 @@ #include -#include #include #include #include +#include #ifndef SCRIPTABLE_IMGUI #define Scriptable_ImGui ImGui @@ -334,11 +334,10 @@ namespace AZ::Render if (m_engineRoot.empty()) { - const char* engineRoot = nullptr; - AzFramework::ApplicationRequests::Bus::BroadcastResult(engineRoot, &AzFramework::ApplicationRequests::GetEngineRoot); - if (engineRoot) + AZ::IO::FixedMaxPathString engineRoot = AZ::Utils::GetEnginePath(); + if (!engineRoot.empty()) { - m_engineRoot = AZStd::string(engineRoot); + m_engineRoot = AZStd::string_view(engineRoot); } } diff --git a/Gems/Atom/Utils/Code/Source/AssetCollectionAsyncLoader.cpp b/Gems/Atom/Utils/Code/Source/AssetCollectionAsyncLoader.cpp index 859b4b4dd3..7a25dfb9ff 100644 --- a/Gems/Atom/Utils/Code/Source/AssetCollectionAsyncLoader.cpp +++ b/Gems/Atom/Utils/Code/Source/AssetCollectionAsyncLoader.cpp @@ -123,6 +123,8 @@ namespace AZ // Prepare to create a cancellable job. AZ::JobManagerDesc desc; + desc.m_jobManagerName = "AssetCollectionAsyncLoader"; + AZ::JobManagerThreadDesc threadDesc; desc.m_workerThreads.push_back(threadDesc); m_jobManager = AZStd::make_unique(desc); diff --git a/Gems/AtomLyIntegration/AtomBridge/Code/Source/AtomDebugDisplayViewportInterface.cpp b/Gems/AtomLyIntegration/AtomBridge/Code/Source/AtomDebugDisplayViewportInterface.cpp index 12e4ccd8ad..39cc2f63b2 100644 --- a/Gems/AtomLyIntegration/AtomBridge/Code/Source/AtomDebugDisplayViewportInterface.cpp +++ b/Gems/AtomLyIntegration/AtomBridge/Code/Source/AtomDebugDisplayViewportInterface.cpp @@ -1016,6 +1016,55 @@ namespace AZ::AtomBridge } } + void AtomDebugDisplayViewportInterface::DrawWireCylinderNoEnds(const AZ::Vector3& center, const AZ::Vector3& axis, float radius, float height) + { + if (m_auxGeomPtr) + { + const float scale = GetCurrentTransform().RetrieveScale().GetMaxElement(); + const AZ::Vector3 worldCenter = ToWorldSpacePosition(center); + const AZ::Vector3 worldAxis = ToWorldSpaceVector(axis); + m_auxGeomPtr->DrawCylinderNoEnds( + worldCenter, + worldAxis, + scale * radius, + scale * height, + m_rendState.m_color, + AZ::RPI::AuxGeomDraw::DrawStyle::Line, + m_rendState.m_depthTest, + m_rendState.m_depthWrite, + m_rendState.m_faceCullMode, + m_rendState.m_viewProjOverrideIndex + ); + } + } + + void AtomDebugDisplayViewportInterface::DrawSolidCylinderNoEnds( + const AZ::Vector3& center, + const AZ::Vector3& axis, + float radius, + float height, + bool drawShaded) + { + if (m_auxGeomPtr) + { + const float scale = GetCurrentTransform().RetrieveScale().GetMaxElement(); + const AZ::Vector3 worldCenter = ToWorldSpacePosition(center); + const AZ::Vector3 worldAxis = ToWorldSpaceVector(axis); + m_auxGeomPtr->DrawCylinderNoEnds( + worldCenter, + worldAxis, + scale * radius, + scale * height, + m_rendState.m_color, + drawShaded ? AZ::RPI::AuxGeomDraw::DrawStyle::Shaded : AZ::RPI::AuxGeomDraw::DrawStyle::Solid, + m_rendState.m_depthTest, + m_rendState.m_depthWrite, + m_rendState.m_faceCullMode, + m_rendState.m_viewProjOverrideIndex + ); + } + } + void AtomDebugDisplayViewportInterface::DrawWireCapsule( const AZ::Vector3& center, const AZ::Vector3& axis, @@ -1025,83 +1074,24 @@ namespace AZ::AtomBridge if (m_auxGeomPtr && radius > FLT_EPSILON && axis.GetLengthSq() > FLT_EPSILON) { AZ::Vector3 axisNormalized = axis.GetNormalizedEstimate(); - SingleColorStaticSizeLineHelper<(16+1) * 5> lines; // 360/22.5 = 16, 5 possible calls to CreateArbitraryAxisArc - AZ::Vector3 radiusV3 = AZ::Vector3(radius); - float stepAngle = DegToRad(22.5f); - float Deg0 = DegToRad(0.0f); + const float scale = GetCurrentTransform().RetrieveScale().GetMaxElement(); + const AZ::Vector3 worldCenter = ToWorldSpacePosition(center); + const AZ::Vector3 worldAxis = ToWorldSpaceVector(axis); - // Draw cylinder part (or just a circle around the middle) + // Draw cylinder part (if cylinder height is too small, ignore cylinder and just draw both hemispheres) if (heightStraightSection > FLT_EPSILON) { - DrawWireCylinder(center, axis, radius, heightStraightSection); - } - else - { - float Deg360 = DegToRad(360.0f); - CreateArbitraryAxisArc( - lines, - stepAngle, - Deg0, - Deg360, - center, - radiusV3, - axisNormalized - ); + DrawWireCylinderNoEnds(worldCenter, worldAxis, scale * radius, scale * heightStraightSection); } - float Deg90 = DegToRad(90.0f); - float Deg180 = DegToRad(180.0f); - - AZ::Vector3 ortho1Normalized, ortho2Normalized; - CalcBasisVectors(axisNormalized, ortho1Normalized, ortho2Normalized); AZ::Vector3 centerToTopCircleCenter = axisNormalized * heightStraightSection * 0.5f; - AZ::Vector3 topCenter = center + centerToTopCircleCenter; - AZ::Vector3 bottomCenter = center - centerToTopCircleCenter; - // Draw top cap as two criss-crossing 180deg arcs - CreateArbitraryAxisArc( - lines, - stepAngle, - Deg90, - Deg90 + Deg180, - topCenter, - radiusV3, - ortho1Normalized - ); + // Top hemisphere + DrawWireHemisphere(center + centerToTopCircleCenter, worldAxis, scale * radius); - CreateArbitraryAxisArc( - lines, - stepAngle, - Deg180, - Deg180 + Deg180, - topCenter, - radiusV3, - ortho2Normalized - ); - - // Draw bottom cap - CreateArbitraryAxisArc( - lines, - stepAngle, - -Deg90, - -Deg90 + Deg180, - bottomCenter, - radiusV3, - ortho1Normalized - ); - - CreateArbitraryAxisArc( - lines, - stepAngle, - Deg0, - Deg0 + Deg180, - bottomCenter, - radiusV3, - ortho2Normalized - ); - - lines.Draw(m_auxGeomPtr, m_rendState); + // Bottom hemisphere + DrawWireHemisphere(center - centerToTopCircleCenter, -worldAxis, scale * radius); } } @@ -1148,6 +1138,25 @@ namespace AZ::AtomBridge } } + void AtomDebugDisplayViewportInterface::DrawWireHemisphere(const AZ::Vector3& pos, const AZ::Vector3& axis, float radius) + { + if (m_auxGeomPtr) + { + const float scale = GetCurrentTransform().RetrieveScale().GetMaxElement(); + m_auxGeomPtr->DrawHemisphere( + ToWorldSpacePosition(pos), + axis, + scale * radius, + m_rendState.m_color, + AZ::RPI::AuxGeomDraw::DrawStyle::Line, + m_rendState.m_depthTest, + m_rendState.m_depthWrite, + m_rendState.m_faceCullMode, + m_rendState.m_viewProjOverrideIndex + ); + } + } + void AtomDebugDisplayViewportInterface::DrawWireDisk(const AZ::Vector3& pos, const AZ::Vector3& dir, float radius) { if (m_auxGeomPtr) @@ -1353,9 +1362,8 @@ namespace AZ::AtomBridge // if 2d draw need to project pos to screen first AzFramework::TextDrawParameters params; AZ::RPI::ViewportContextPtr viewportContext = GetViewportContext(); - const auto dpiScaleFactor = viewportContext->GetDpiScalingFactor(); params.m_drawViewportId = viewportContext->GetId(); // get the viewport ID so default viewport works - params.m_position = AZ::Vector3(x * dpiScaleFactor, y * dpiScaleFactor, 1.0f); + params.m_position = AZ::Vector3(x, y, 1.0f); params.m_color = m_rendState.m_color; params.m_scale = AZ::Vector2(size); params.m_hAlign = center ? AzFramework::TextHorizontalAlignment::Center : AzFramework::TextHorizontalAlignment::Left; //! Horizontal text alignment diff --git a/Gems/AtomLyIntegration/AtomBridge/Code/Source/AtomDebugDisplayViewportInterface.h b/Gems/AtomLyIntegration/AtomBridge/Code/Source/AtomDebugDisplayViewportInterface.h index 5f902c5884..7f7af9bbcb 100644 --- a/Gems/AtomLyIntegration/AtomBridge/Code/Source/AtomDebugDisplayViewportInterface.h +++ b/Gems/AtomLyIntegration/AtomBridge/Code/Source/AtomDebugDisplayViewportInterface.h @@ -168,9 +168,12 @@ namespace AZ::AtomBridge void DrawSolidCone(const AZ::Vector3& pos, const AZ::Vector3& dir, float radius, float height, bool drawShaded) override; void DrawWireCylinder(const AZ::Vector3& center, const AZ::Vector3& axis, float radius, float height) override; void DrawSolidCylinder(const AZ::Vector3& center, const AZ::Vector3& axis, float radius, float height, bool drawShaded) override; + void DrawWireCylinderNoEnds(const AZ::Vector3& center, const AZ::Vector3& axis, float radius, float height) override; + void DrawSolidCylinderNoEnds(const AZ::Vector3& center, const AZ::Vector3& axis, float radius, float height, bool drawShaded) override; void DrawWireCapsule(const AZ::Vector3& center, const AZ::Vector3& axis, float radius, float heightStraightSection) override; void DrawWireSphere(const AZ::Vector3& pos, float radius) override; void DrawWireSphere(const AZ::Vector3& pos, const AZ::Vector3 radius) override; + void DrawWireHemisphere(const AZ::Vector3& pos, const AZ::Vector3& axis, float radius) override; void DrawWireDisk(const AZ::Vector3& pos, const AZ::Vector3& dir, float radius) override; void DrawBall(const AZ::Vector3& pos, float radius, bool drawShaded) override; void DrawDisk(const AZ::Vector3& pos, const AZ::Vector3& dir, float radius) override; diff --git a/Gems/AtomLyIntegration/AtomBridge/Code/Source/FlyCameraInputComponent.cpp b/Gems/AtomLyIntegration/AtomBridge/Code/Source/FlyCameraInputComponent.cpp index e6439592b3..79f8d4708a 100644 --- a/Gems/AtomLyIntegration/AtomBridge/Code/Source/FlyCameraInputComponent.cpp +++ b/Gems/AtomLyIntegration/AtomBridge/Code/Source/FlyCameraInputComponent.cpp @@ -8,7 +8,6 @@ #include "FlyCameraInputComponent.h" #include -#include #include #include diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Include/AtomLyIntegration/CommonFeatures/CoreLights/AreaLightBus.h b/Gems/AtomLyIntegration/CommonFeatures/Code/Include/AtomLyIntegration/CommonFeatures/CoreLights/AreaLightBus.h index 72c4ef97a8..b9c62e6fe2 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Include/AtomLyIntegration/CommonFeatures/CoreLights/AreaLightBus.h +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Include/AtomLyIntegration/CommonFeatures/CoreLights/AreaLightBus.h @@ -132,6 +132,13 @@ namespace AZ //! Sets the Esm exponent. Higher values produce a steeper falloff between light and shadow. virtual void SetEsmExponent(float exponent) = 0; + //! Reduces acne by biasing the shadowmap lookup along the geometric normal. + //! @return Returns the amount of bias to apply. + virtual float GetNormalShadowBias() const = 0; + + //! Reduces acne by biasing the shadowmap lookup along the geometric normal. + //! @param normalShadowBias Sets the amount of normal shadow bias to apply. + virtual void SetNormalShadowBias(float normalShadowBias) = 0; }; //! The EBus for requests to for setting and getting light component properties. diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Include/AtomLyIntegration/CommonFeatures/CoreLights/AreaLightComponentConfig.h b/Gems/AtomLyIntegration/CommonFeatures/Code/Include/AtomLyIntegration/CommonFeatures/CoreLights/AreaLightComponentConfig.h index c76c922385..130e066e1a 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Include/AtomLyIntegration/CommonFeatures/CoreLights/AreaLightComponentConfig.h +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Include/AtomLyIntegration/CommonFeatures/CoreLights/AreaLightComponentConfig.h @@ -57,6 +57,7 @@ namespace AZ // Shadows (only used for supported shapes) bool m_enableShadow = false; float m_bias = 0.1f; + float m_normalShadowBias = 0.0f; ShadowmapSize m_shadowmapMaxSize = ShadowmapSize::Size256; ShadowFilterMethod m_shadowFilterMethod = ShadowFilterMethod::None; uint16_t m_filteringSampleCount = 12; diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/AreaLightComponentConfig.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/AreaLightComponentConfig.cpp index f0418a5024..91f8f1aa36 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/AreaLightComponentConfig.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/AreaLightComponentConfig.cpp @@ -34,6 +34,7 @@ namespace AZ // Shadows ->Field("Enable Shadow", &AreaLightComponentConfig::m_enableShadow) ->Field("Shadow Bias", &AreaLightComponentConfig::m_bias) + ->Field("Normal Shadow Bias", &AreaLightComponentConfig::m_normalShadowBias) ->Field("Shadowmap Max Size", &AreaLightComponentConfig::m_shadowmapMaxSize) ->Field("Shadow Filter Method", &AreaLightComponentConfig::m_shadowFilterMethod) ->Field("Filtering Sample Count", &AreaLightComponentConfig::m_filteringSampleCount) diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/AreaLightComponentController.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/AreaLightComponentController.cpp index 36cb2a7f5a..7668477690 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/AreaLightComponentController.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/AreaLightComponentController.cpp @@ -70,6 +70,8 @@ namespace AZ::Render ->Event("SetEnableShadow", &AreaLightRequestBus::Events::SetEnableShadow) ->Event("GetShadowBias", &AreaLightRequestBus::Events::GetShadowBias) ->Event("SetShadowBias", &AreaLightRequestBus::Events::SetShadowBias) + ->Event("GetNormalShadowBias", &AreaLightRequestBus::Events::GetNormalShadowBias) + ->Event("SetNormalShadowBias", &AreaLightRequestBus::Events::SetNormalShadowBias) ->Event("GetShadowmapMaxSize", &AreaLightRequestBus::Events::GetShadowmapMaxSize) ->Event("SetShadowmapMaxSize", &AreaLightRequestBus::Events::SetShadowmapMaxSize) ->Event("GetShadowFilterMethod", &AreaLightRequestBus::Events::GetShadowFilterMethod) @@ -91,6 +93,7 @@ namespace AZ::Render ->VirtualProperty("ShadowsEnabled", "GetEnableShadow", "SetEnableShadow") ->VirtualProperty("ShadowBias", "GetShadowBias", "SetShadowBias") + ->VirtualProperty("NormalShadowBias", "GetNormalShadowBias", "SetNormalShadowBias") ->VirtualProperty("ShadowmapMaxSize", "GetShadowmapMaxSize", "SetShadowmapMaxSize") ->VirtualProperty("ShadowFilterMethod", "GetShadowFilterMethod", "SetShadowFilterMethod") ->VirtualProperty("FilteringSampleCount", "GetFilteringSampleCount", "SetFilteringSampleCount") @@ -302,6 +305,7 @@ namespace AZ::Render if (m_configuration.m_enableShadow) { m_lightShapeDelegate->SetShadowBias(m_configuration.m_bias); + m_lightShapeDelegate->SetNormalShadowBias(m_configuration.m_normalShadowBias); m_lightShapeDelegate->SetShadowmapMaxSize(m_configuration.m_shadowmapMaxSize); m_lightShapeDelegate->SetShadowFilterMethod(m_configuration.m_shadowFilterMethod); m_lightShapeDelegate->SetFilteringSampleCount(m_configuration.m_filteringSampleCount); @@ -474,6 +478,20 @@ namespace AZ::Render } } + void AreaLightComponentController::SetNormalShadowBias(float bias) + { + m_configuration.m_normalShadowBias = bias; + if (m_lightShapeDelegate) + { + m_lightShapeDelegate->SetNormalShadowBias(bias); + } + } + + float AreaLightComponentController::GetNormalShadowBias() const + { + return m_configuration.m_normalShadowBias; + } + ShadowmapSize AreaLightComponentController::GetShadowmapMaxSize() const { return m_configuration.m_shadowmapMaxSize; diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/AreaLightComponentController.h b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/AreaLightComponentController.h index cc6223e7e5..81299a0372 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/AreaLightComponentController.h +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/AreaLightComponentController.h @@ -86,6 +86,8 @@ namespace AZ void SetFilteringSampleCount(uint32_t count) override; float GetEsmExponent() const override; void SetEsmExponent(float exponent) override; + float GetNormalShadowBias() const override; + void SetNormalShadowBias(float bias) override; void HandleDisplayEntityViewport( const AzFramework::ViewportInfo& viewportInfo, diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/DiskLightDelegate.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/DiskLightDelegate.cpp index dfb6cf6946..f060018099 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/DiskLightDelegate.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/DiskLightDelegate.cpp @@ -138,6 +138,14 @@ namespace AZ::Render } } + void DiskLightDelegate::SetNormalShadowBias(float bias) + { + if (GetShadowsEnabled() && GetLightHandle().IsValid()) + { + GetFeatureProcessor()->SetNormalShadowBias(GetLightHandle(), bias); + } + } + void DiskLightDelegate::SetShadowmapMaxSize(ShadowmapSize size) { if (GetShadowsEnabled() && GetLightHandle().IsValid()) diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/DiskLightDelegate.h b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/DiskLightDelegate.h index 2be782c69c..c19a8d37ae 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/DiskLightDelegate.h +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/DiskLightDelegate.h @@ -46,6 +46,7 @@ namespace AZ void SetShadowFilterMethod(ShadowFilterMethod method) override; void SetFilteringSampleCount(uint32_t count) override; void SetEsmExponent(float exponent) override; + void SetNormalShadowBias(float bias) override; private: diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/EditorAreaLightComponent.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/EditorAreaLightComponent.cpp index db46434d9a..02c9f77436 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/EditorAreaLightComponent.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/EditorAreaLightComponent.cpp @@ -136,7 +136,7 @@ namespace AZ ->Attribute(Edit::Attributes::Min, 0.0f) ->Attribute(Edit::Attributes::Max, 100.0f) ->Attribute(Edit::Attributes::SoftMin, 0.0f) - ->Attribute(Edit::Attributes::SoftMax, 2.0f) + ->Attribute(Edit::Attributes::SoftMax, 10.0f) ->Attribute(Edit::Attributes::ChangeNotify, Edit::PropertyRefreshLevels::ValuesOnly) ->Attribute(Edit::Attributes::Visibility, &AreaLightComponentConfig::SupportsShadows) ->Attribute(Edit::Attributes::ReadOnly, &AreaLightComponentConfig::ShadowsDisabled) @@ -171,7 +171,16 @@ namespace AZ ->Attribute(Edit::Attributes::ChangeNotify, Edit::PropertyRefreshLevels::ValuesOnly) ->Attribute(Edit::Attributes::Visibility, &AreaLightComponentConfig::SupportsShadows) ->Attribute(Edit::Attributes::ReadOnly, &AreaLightComponentConfig::IsEsmDisabled) - ; + ->DataElement( + Edit::UIHandlers::Slider, &AreaLightComponentConfig::m_normalShadowBias, "Normal Shadow Bias\n", + "Reduces acne by biasing the shadowmap lookup along the geometric normal.\n" + "If this is 0, no biasing is applied.") + ->Attribute(Edit::Attributes::Min, 0.f) + ->Attribute(Edit::Attributes::Max, 10.0f) + ->Attribute(Edit::Attributes::ChangeNotify, Edit::PropertyRefreshLevels::ValuesOnly) + ->Attribute(Edit::Attributes::Visibility, &AreaLightComponentConfig::SupportsShadows) + ->Attribute(Edit::Attributes::ReadOnly, &AreaLightComponentConfig::ShadowsDisabled) + ; } } diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/LightDelegateBase.h b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/LightDelegateBase.h index 336c67f55d..8b096b0367 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/LightDelegateBase.h +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/LightDelegateBase.h @@ -58,7 +58,8 @@ namespace AZ void SetShadowFilterMethod([[maybe_unused]] ShadowFilterMethod method) override {}; void SetFilteringSampleCount([[maybe_unused]] uint32_t count) override {}; void SetEsmExponent([[maybe_unused]] float esmExponent) override{}; - + void SetNormalShadowBias([[maybe_unused]] float bias) override{}; + protected: void InitBase(EntityId entityId); diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/LightDelegateInterface.h b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/LightDelegateInterface.h index 9bb8188898..40ffaf392d 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/LightDelegateInterface.h +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/LightDelegateInterface.h @@ -79,6 +79,8 @@ namespace AZ virtual void SetFilteringSampleCount(uint32_t count) = 0; //! Sets the Esm exponent to use. Higher values produce a steeper falloff between light and shadow. virtual void SetEsmExponent(float exponent) = 0; + //! Sets the normal bias. Reduces acne by biasing the shadowmap lookup along the geometric normal. + virtual void SetNormalShadowBias(float bias) = 0; }; } // namespace Render } // namespace AZ diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/SphereLightDelegate.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/SphereLightDelegate.cpp index 661b0c6b25..f2e1f41008 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/SphereLightDelegate.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/SphereLightDelegate.cpp @@ -107,4 +107,13 @@ namespace AZ::Render GetFeatureProcessor()->SetEsmExponent(GetLightHandle(), esmExponent); } } + + void SphereLightDelegate::SetNormalShadowBias(float bias) + { + if (GetShadowsEnabled() && GetLightHandle().IsValid()) + { + GetFeatureProcessor()->SetNormalShadowBias(GetLightHandle(), bias); + } + } + } // namespace AZ::Render diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/SphereLightDelegate.h b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/SphereLightDelegate.h index 8bdee2442a..bad00e597c 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/SphereLightDelegate.h +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/SphereLightDelegate.h @@ -36,6 +36,7 @@ namespace AZ void SetShadowFilterMethod(ShadowFilterMethod method) override; void SetFilteringSampleCount(uint32_t count) override; void SetEsmExponent(float esmExponent) override; + void SetNormalShadowBias(float bias) override; private: diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ImageBasedLights/ImageBasedLightComponentController.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ImageBasedLights/ImageBasedLightComponentController.cpp index 6ea7580fc6..73cfd53c21 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ImageBasedLights/ImageBasedLightComponentController.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ImageBasedLights/ImageBasedLightComponentController.cpp @@ -163,8 +163,6 @@ namespace AZ return true; } } - // If this asset didn't load or isn't a cubemap, release it. - configAsset.Release(); return false; } diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Material/EditorMaterialComponentUtil.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Material/EditorMaterialComponentUtil.cpp index 0fd7b7164d..d3e125426c 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Material/EditorMaterialComponentUtil.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Material/EditorMaterialComponentUtil.cpp @@ -134,7 +134,7 @@ namespace AZ propertyValue = AZ::RPI::MaterialPropertyValue::FromAny(propertyOverrideItr->second); } - if (!AtomToolsFramework::ConvertToExportFormat(path, propertyDefinition, propertyValue)) + if (!AtomToolsFramework::ConvertToExportFormat(path, propertyId.GetFullName(), propertyDefinition, propertyValue)) { AZ_Error("AZ::Render::EditorMaterialComponentUtil", false, "Failed to export: %s", path.c_str()); result = false; diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/EditorReflectionProbeComponent.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/EditorReflectionProbeComponent.cpp index ae5c930096..578c6e9300 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/EditorReflectionProbeComponent.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/EditorReflectionProbeComponent.cpp @@ -40,6 +40,7 @@ namespace AZ ->Field("bakedCubeMapQualityLevel", &EditorReflectionProbeComponent::m_bakedCubeMapQualityLevel) ->Field("bakedCubeMapRelativePath", &EditorReflectionProbeComponent::m_bakedCubeMapRelativePath) ->Field("authoredCubeMapAsset", &EditorReflectionProbeComponent::m_authoredCubeMapAsset) + ->Field("bakeExposure", &EditorReflectionProbeComponent::m_bakeExposure) ; if (AZ::EditContext* editContext = serializeContext->GetEditContext()) @@ -62,6 +63,13 @@ namespace AZ ->Attribute(AZ::Edit::Attributes::ButtonText, "Bake Reflection Probe") ->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorReflectionProbeComponent::BakeReflectionProbe) ->Attribute(AZ::Edit::Attributes::Visibility, &EditorReflectionProbeComponent::GetBakedCubemapVisibilitySetting) + ->DataElement(AZ::Edit::UIHandlers::Slider, &EditorReflectionProbeComponent::m_bakeExposure, "Bake Exposure", "Exposure to use when baking the cubemap") + ->Attribute(AZ::Edit::Attributes::SoftMin, -16.0f) + ->Attribute(AZ::Edit::Attributes::SoftMax, 16.0f) + ->Attribute(AZ::Edit::Attributes::Min, -20.0f) + ->Attribute(AZ::Edit::Attributes::Max, 20.0f) + ->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorReflectionProbeComponent::OnBakeExposureChanged) + ->Attribute(AZ::Edit::Attributes::Visibility, &EditorReflectionProbeComponent::GetBakedCubemapVisibilitySetting) ->ClassElement(AZ::Edit::ClassElements::Group, "Cubemap") ->Attribute(AZ::Edit::Attributes::AutoExpand, true) ->DataElement(AZ::Edit::UIHandlers::Default, &EditorReflectionProbeComponent::m_useBakedCubemap, "Use Baked Cubemap", "Selects between a cubemap that captures the environment at location in the scene or a preauthored cubemap") @@ -111,6 +119,11 @@ namespace AZ ->Attribute(AZ::Edit::Attributes::ChangeNotify, Edit::PropertyRefreshLevels::ValuesOnly) ->DataElement(AZ::Edit::UIHandlers::CheckBox, &ReflectionProbeComponentConfig::m_showVisualization, "Show Visualization", "Show the reflection probe visualization sphere") ->Attribute(AZ::Edit::Attributes::ChangeNotify, Edit::PropertyRefreshLevels::ValuesOnly) + ->DataElement(AZ::Edit::UIHandlers::Slider, &ReflectionProbeComponentConfig::m_renderExposure, "Exposure", "Exposure to use when rendering meshes with the cubemap") + ->Attribute(AZ::Edit::Attributes::SoftMin, -5.0f) + ->Attribute(AZ::Edit::Attributes::SoftMax, 5.0f) + ->Attribute(AZ::Edit::Attributes::Min, -20.0f) + ->Attribute(AZ::Edit::Attributes::Max, 20.0f) ; } } @@ -275,6 +288,13 @@ namespace AZ return AZ::Edit::PropertyRefreshLevels::None; } + AZ::u32 EditorReflectionProbeComponent::OnBakeExposureChanged() + { + m_controller.SetBakeExposure(m_bakeExposure); + + return AZ::Edit::PropertyRefreshLevels::None; + } + AZ::u32 EditorReflectionProbeComponent::GetBakedCubemapVisibilitySetting() { // controls specific to baked cubemaps call this to determine their visibility diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/EditorReflectionProbeComponent.h b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/EditorReflectionProbeComponent.h index 441da19e78..3cd017fd18 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/EditorReflectionProbeComponent.h +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/EditorReflectionProbeComponent.h @@ -55,6 +55,7 @@ namespace AZ // change notifications AZ::u32 OnUseBakedCubemapChanged(); AZ::u32 OnAuthoredCubemapChanged(); + AZ::u32 OnBakeExposureChanged(); // retrieves visibility for baked or authored cubemap controls AZ::u32 GetBakedCubemapVisibilitySetting(); @@ -77,6 +78,7 @@ namespace AZ AZStd::string m_bakedCubeMapRelativePath; Data::Asset m_bakedCubeMapAsset; Data::Asset m_authoredCubeMapAsset; + float m_bakeExposure = 0.0f; // flag indicating if a cubemap bake is currently in progress AZStd::atomic_bool m_bakeInProgress = false; diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/ReflectionProbeComponentController.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/ReflectionProbeComponentController.cpp index 4022dfda9b..017f6c9cdf 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/ReflectionProbeComponentController.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/ReflectionProbeComponentController.cpp @@ -35,7 +35,7 @@ namespace AZ if (auto* serializeContext = azrtti_cast(context)) { serializeContext->Class() - ->Version(0) + ->Version(1) ->Field("OuterHeight", &ReflectionProbeComponentConfig::m_outerHeight) ->Field("OuterLength", &ReflectionProbeComponentConfig::m_outerLength) ->Field("OuterWidth", &ReflectionProbeComponentConfig::m_outerWidth) @@ -49,7 +49,9 @@ namespace AZ ->Field("AuthoredCubeMapAsset", &ReflectionProbeComponentConfig::m_authoredCubeMapAsset) ->Field("EntityId", &ReflectionProbeComponentConfig::m_entityId) ->Field("UseParallaxCorrection", &ReflectionProbeComponentConfig::m_useParallaxCorrection) - ->Field("ShowVisualization", &ReflectionProbeComponentConfig::m_showVisualization); + ->Field("ShowVisualization", &ReflectionProbeComponentConfig::m_showVisualization) + ->Field("RenderExposure", &ReflectionProbeComponentConfig::m_renderExposure) + ->Field("BakeExposure", &ReflectionProbeComponentConfig::m_bakeExposure); } } @@ -157,6 +159,9 @@ namespace AZ cubeMapAsset.QueueLoad(); Data::AssetBus::MultiHandler::BusConnect(cubeMapAsset.GetId()); } + + // set cubemap render exposure + m_featureProcessor->SetRenderExposure(m_handle, m_configuration.m_renderExposure); } void ReflectionProbeComponentController::Deactivate() @@ -284,6 +289,16 @@ namespace AZ m_configuration.m_innerHeight = AZStd::min(m_configuration.m_innerHeight, m_configuration.m_outerHeight); } + void ReflectionProbeComponentController::SetBakeExposure(float bakeExposure) + { + if (!m_featureProcessor) + { + return; + } + + m_featureProcessor->SetBakeExposure(m_handle, bakeExposure); + } + void ReflectionProbeComponentController::BakeReflectionProbe(BuildCubeMapCallback callback, const AZStd::string& relativePath) { if (!m_featureProcessor) diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/ReflectionProbeComponentController.h b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/ReflectionProbeComponentController.h index 18e13f023b..ad7d9f7f53 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/ReflectionProbeComponentController.h +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/ReflectionProbeComponentController.h @@ -68,6 +68,9 @@ namespace AZ Data::Asset m_bakedCubeMapAsset; Data::Asset m_authoredCubeMapAsset; AZ::u64 m_entityId{ EntityId::InvalidEntityId }; + + float m_renderExposure = 0.0f; + float m_bakeExposure = 0.0f; }; class ReflectionProbeComponentController final @@ -99,6 +102,9 @@ namespace AZ // returns the outer extent Aabb for this reflection AZ::Aabb GetAabb() const; + // set the exposure to use when baking the cubemap + void SetBakeExposure(float bakeExposure); + // initiate the reflection probe bake, invokes callback when complete void BakeReflectionProbe(BuildCubeMapCallback callback, const AZStd::string& relativePath); diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedPreviewContent.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedPreviewContent.cpp index 91b6d2b02a..8bc9c5ac7d 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedPreviewContent.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedPreviewContent.cpp @@ -163,9 +163,9 @@ namespace AZ m_modelAsset->GetAabb().GetAsSphere(center, radius); } - const auto distance = radius + NearDist; - const auto cameraRotation = Quaternion::CreateFromAxisAngle(Vector3::CreateAxisZ(), CameraRotationAngle); - const auto cameraPosition = center + cameraRotation.TransformVector(Vector3(0.0f, distance, 0.0f)); + const auto distance = fabsf(radius / sinf(FieldOfView)) + NearDist; + const auto cameraRotation = Quaternion::CreateFromAxisAngle(Vector3::CreateAxisX(), -CameraRotationAngle); + const auto cameraPosition = center + cameraRotation.TransformVector(-Vector3::CreateAxisY() * distance); const auto cameraTransform = Transform::CreateLookAt(cameraPosition, center); m_view->SetCameraTransform(Matrix3x4::CreateFromTransform(cameraTransform)); } diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedPreviewContent.h b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedPreviewContent.h index 7308aa19bc..dfab7a8630 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedPreviewContent.h +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedPreviewContent.h @@ -51,7 +51,7 @@ namespace AZ static constexpr float NearDist = 0.001f; static constexpr float FarDist = 100.0f; static constexpr float FieldOfView = Constants::HalfPi; - static constexpr float CameraRotationAngle = Constants::QuarterPi / 2.0f; + static constexpr float CameraRotationAngle = Constants::QuarterPi / 3.0f; RPI::ScenePtr m_scene; RPI::ViewPtr m_view; diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedPreviewUtils.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedPreviewUtils.cpp index c2988cf53d..d0e288d239 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedPreviewUtils.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedPreviewUtils.cpp @@ -9,9 +9,11 @@ #include #include #include +#include #include #include #include +#include #include namespace AZ @@ -20,45 +22,64 @@ namespace AZ { namespace SharedPreviewUtils { - Data::AssetId GetAssetId( - AzToolsFramework::Thumbnailer::SharedThumbnailKey key, - const Data::AssetType& assetType, - const Data::AssetId& defaultAssetId) + AZStd::unordered_set GetSupportedAssetTypes() { + return { RPI::AnyAsset::RTTI_Type(), RPI::MaterialAsset::RTTI_Type(), RPI::ModelAsset::RTTI_Type() }; + } + + bool IsSupportedAssetType(AzToolsFramework::Thumbnailer::SharedThumbnailKey key) + { + return GetSupportedAssetInfo(key).m_assetId.IsValid(); + } + + AZ::Data::AssetInfo GetSupportedAssetInfo(AzToolsFramework::Thumbnailer::SharedThumbnailKey key) + { + const auto& supportedTypeIds = GetSupportedAssetTypes(); + // if it's a source thumbnail key, find first product with a matching asset type auto sourceKey = azrtti_cast(key.data()); if (sourceKey) { bool foundIt = false; - AZStd::vector productsAssetInfo; + AZStd::vector productsAssetInfo; AzToolsFramework::AssetSystemRequestBus::BroadcastResult( foundIt, &AzToolsFramework::AssetSystemRequestBus::Events::GetAssetsProducedBySourceUUID, sourceKey->GetSourceUuid(), productsAssetInfo); - if (!foundIt) - { - return defaultAssetId; - } - auto assetInfoIt = AZStd::find_if( - productsAssetInfo.begin(), productsAssetInfo.end(), - [&assetType](const Data::AssetInfo& assetInfo) - { - return assetInfo.m_assetType == assetType; - }); - if (assetInfoIt == productsAssetInfo.end()) - { - return defaultAssetId; - } - return assetInfoIt->m_assetId; + for (const auto& assetInfo : productsAssetInfo) + { + if (supportedTypeIds.find(assetInfo.m_assetType) != supportedTypeIds.end()) + { + return assetInfo; + } + } + return AZ::Data::AssetInfo(); } // if it's a product thumbnail key just return its assetId + AZ::Data::AssetInfo assetInfo; auto productKey = azrtti_cast(key.data()); - if (productKey && productKey->GetAssetType() == assetType) + if (productKey && supportedTypeIds.find(productKey->GetAssetType()) != supportedTypeIds.end()) { - return productKey->GetAssetId(); + AZ::Data::AssetCatalogRequestBus::BroadcastResult( + assetInfo, &AZ::Data::AssetCatalogRequestBus::Events::GetAssetInfoById, productKey->GetAssetId()); } - return defaultAssetId; + return assetInfo; + } + + AZ::Data::AssetId GetSupportedAssetId(AzToolsFramework::Thumbnailer::SharedThumbnailKey key, const AZ::Data::AssetId& defaultAssetId) + { + const AZ::Data::AssetInfo assetInfo = GetSupportedAssetInfo(key); + return assetInfo.m_assetId.IsValid() ? assetInfo.m_assetId : defaultAssetId; + } + + AZ::Data::AssetId GetAssetIdForProductPath(const AZStd::string_view productPath) + { + if (!productPath.empty()) + { + return AZ::RPI::AssetUtils::GetAssetIdForProductPath(productPath.data()); + } + return AZ::Data::AssetId(); } QString WordWrap(const QString& string, int maxLength) @@ -85,32 +106,6 @@ namespace AZ } return result; } - - AZStd::unordered_set GetSupportedAssetTypes() - { - return { RPI::AnyAsset::RTTI_Type(), RPI::MaterialAsset::RTTI_Type(), RPI::ModelAsset::RTTI_Type() }; - } - - bool IsSupportedAssetType(AzToolsFramework::Thumbnailer::SharedThumbnailKey key) - { - for (const AZ::Uuid& typeId : SharedPreviewUtils::GetSupportedAssetTypes()) - { - const AZ::Data::AssetId& assetId = SharedPreviewUtils::GetAssetId(key, typeId); - if (assetId.IsValid()) - { - if (typeId == RPI::AnyAsset::RTTI_Type()) - { - AZ::Data::AssetInfo assetInfo; - AZ::Data::AssetCatalogRequestBus::BroadcastResult( - assetInfo, &AZ::Data::AssetCatalogRequestBus::Events::GetAssetInfoById, assetId); - return AzFramework::StringFunc::EndsWith(assetInfo.m_relativePath.c_str(), "lightingpreset.azasset"); - } - return true; - } - } - - return false; - } } // namespace SharedPreviewUtils } // namespace LyIntegration } // namespace AZ diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedPreviewUtils.h b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedPreviewUtils.h index 6c5d83d22a..28c9809d6d 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedPreviewUtils.h +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedPreviewUtils.h @@ -8,9 +8,9 @@ #pragma once -#include - #if !defined(Q_MOC_RUN) +#include +#include #include #endif @@ -20,21 +20,25 @@ namespace AZ { namespace SharedPreviewUtils { - //! Get assetId by assetType that belongs to either source or product thumbnail key - Data::AssetId GetAssetId( - AzToolsFramework::Thumbnailer::SharedThumbnailKey key, - const Data::AssetType& assetType, - const Data::AssetId& defaultAssetId = {}); - - //! Word wrap function for previewer QLabel, since by default it does not break long words such as filenames, so manual word - //! wrap needed - QString WordWrap(const QString& string, int maxLength); - //! Get the set of all asset types supported by the shared preview AZStd::unordered_set GetSupportedAssetTypes(); //! Determine if a thumbnail key has an asset supported by the shared preview bool IsSupportedAssetType(AzToolsFramework::Thumbnailer::SharedThumbnailKey key); + + //! Get assetInfo of source or product thumbnail key if asset type is supported by the shared preview + AZ::Data::AssetInfo GetSupportedAssetInfo(AzToolsFramework::Thumbnailer::SharedThumbnailKey key); + + //! Get assetId of source or product thumbnail key if asset type is supported by the shared preview + AZ::Data::AssetId GetSupportedAssetId( + AzToolsFramework::Thumbnailer::SharedThumbnailKey key, const AZ::Data::AssetId& defaultAssetId = {}); + + //! Wraps AZ::RPI::AssetUtils::GetAssetIdForProductPath to handle empty productPath + AZ::Data::AssetId GetAssetIdForProductPath(const AZStd::string_view productPath); + + //! Inserts new line characters into a string whenever the maximum number of characters per line is exceeded + QString WordWrap(const QString& string, int maxLength); + } // namespace SharedPreviewUtils } // namespace LyIntegration } // namespace AZ diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedThumbnail.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedThumbnail.cpp index 5d82bac139..d07c4577e8 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedThumbnail.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedThumbnail.cpp @@ -22,18 +22,13 @@ namespace AZ ////////////////////////////////////////////////////////////////////////// SharedThumbnail::SharedThumbnail(AzToolsFramework::Thumbnailer::SharedThumbnailKey key) : Thumbnail(key) + , m_assetInfo(SharedPreviewUtils::GetSupportedAssetInfo(key)) { - for (const AZ::Uuid& typeId : SharedPreviewUtils::GetSupportedAssetTypes()) + if (m_assetInfo.m_assetId.IsValid()) { - const AZ::Data::AssetId& assetId = SharedPreviewUtils::GetAssetId(key, typeId); - if (assetId.IsValid()) - { - m_assetId = assetId; - m_typeId = typeId; - AzToolsFramework::Thumbnailer::ThumbnailerRendererNotificationBus::Handler::BusConnect(key); - AzFramework::AssetCatalogEventBus::Handler::BusConnect(); - return; - } + AzToolsFramework::Thumbnailer::ThumbnailerRendererNotificationBus::Handler::BusConnect(key); + AzFramework::AssetCatalogEventBus::Handler::BusConnect(); + return; } AZ_Error("SharedThumbnail", false, "Failed to find matching assetId for the thumbnailKey."); @@ -43,7 +38,9 @@ namespace AZ void SharedThumbnail::LoadThread() { AzToolsFramework::Thumbnailer::ThumbnailerRendererRequestBus::QueueEvent( - m_typeId, &AzToolsFramework::Thumbnailer::ThumbnailerRendererRequests::RenderThumbnail, m_key, SharedThumbnailSize); + m_assetInfo.m_assetType, &AzToolsFramework::Thumbnailer::ThumbnailerRendererRequests::RenderThumbnail, m_key, + SharedThumbnailSize); + // wait for response from thumbnail renderer m_renderWait.acquire(); } @@ -68,7 +65,7 @@ namespace AZ void SharedThumbnail::OnCatalogAssetChanged([[maybe_unused]] const AZ::Data::AssetId& assetId) { - if (m_assetId == assetId && m_state == State::Ready) + if (m_assetInfo.m_assetId == assetId && m_state == State::Ready) { m_state = State::Unloaded; Load(); diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedThumbnail.h b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedThumbnail.h index dee433e0bb..2d4b17a09e 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedThumbnail.h +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedThumbnail.h @@ -43,8 +43,7 @@ namespace AZ void OnCatalogAssetChanged(const AZ::Data::AssetId& assetId) override; AZStd::binary_semaphore m_renderWait; - Data::AssetId m_assetId; - AZ::Uuid m_typeId; + Data::AssetInfo m_assetInfo; }; //! Cache configuration for shared thumbnails diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedThumbnailRenderer.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedThumbnailRenderer.cpp index c43ba5f1cf..4ee75e3436 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedThumbnailRenderer.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedThumbnailRenderer.cpp @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -20,9 +21,9 @@ namespace AZ { SharedThumbnailRenderer::SharedThumbnailRenderer() { - m_defaultModelAsset.Create(DefaultModelAssetId, true); - m_defaultMaterialAsset.Create(DefaultMaterialAssetId, true); - m_defaultLightingPresetAsset.Create(DefaultLightingPresetAssetId, true); + m_defaultModelAsset.Create(SharedPreviewUtils::GetAssetIdForProductPath(DefaultModelPath), true); + m_defaultMaterialAsset.Create(SharedPreviewUtils::GetAssetIdForProductPath(DefaultMaterialPath), true); + m_defaultLightingPresetAsset.Create(SharedPreviewUtils::GetAssetIdForProductPath(DefaultLightingPresetPath), true); for (const AZ::Uuid& typeId : SharedPreviewUtils::GetSupportedAssetTypes()) { @@ -37,17 +38,66 @@ namespace AZ SystemTickBus::Handler::BusDisconnect(); } + SharedThumbnailRenderer::ThumbnailConfig SharedThumbnailRenderer::GetThumbnailConfig( + AzToolsFramework::Thumbnailer::SharedThumbnailKey thumbnailKey) + { + ThumbnailConfig thumbnailConfig; + + const auto assetInfo = SharedPreviewUtils::GetSupportedAssetInfo(thumbnailKey); + if (assetInfo.m_assetType == RPI::ModelAsset::RTTI_Type()) + { + static constexpr const char* MaterialAssetPathSetting = + "/O3DE/Atom/CommonFeature/SharedPreview/ModelAssetType/MaterialAssetPath"; + static constexpr const char* LightingAssetPathSetting = + "/O3DE/Atom/CommonFeature/SharedPreview/ModelAssetType/LightingAssetPath"; + + thumbnailConfig.m_modelId = assetInfo.m_assetId; + thumbnailConfig.m_materialId = SharedPreviewUtils::GetAssetIdForProductPath( + AtomToolsFramework::GetSettingOrDefault(MaterialAssetPathSetting, DefaultMaterialPath)); + thumbnailConfig.m_lightingId = SharedPreviewUtils::GetAssetIdForProductPath( + AtomToolsFramework::GetSettingOrDefault(LightingAssetPathSetting, DefaultLightingPresetPath)); + } + else if (assetInfo.m_assetType == RPI::MaterialAsset::RTTI_Type()) + { + static constexpr const char* ModelAssetPathSetting = + "/O3DE/Atom/CommonFeature/SharedPreview/MaterialAssetType/ModelAssetPath"; + static constexpr const char* LightingAssetPathSetting = + "/O3DE/Atom/CommonFeature/SharedPreview/MaterialAssetType/LightingAssetPath"; + + thumbnailConfig.m_modelId = SharedPreviewUtils::GetAssetIdForProductPath( + AtomToolsFramework::GetSettingOrDefault(ModelAssetPathSetting, DefaultModelPath)); + thumbnailConfig.m_materialId = assetInfo.m_assetId; + thumbnailConfig.m_lightingId = SharedPreviewUtils::GetAssetIdForProductPath( + AtomToolsFramework::GetSettingOrDefault(LightingAssetPathSetting, DefaultLightingPresetPath)); + } + else if (assetInfo.m_assetType == RPI::AnyAsset::RTTI_Type()) + { + static constexpr const char* ModelAssetPathSetting = + "/O3DE/Atom/CommonFeature/SharedPreview/LightingAssetType/ModelAssetPath"; + static constexpr const char* MaterialAssetPathSetting = + "/O3DE/Atom/CommonFeature/SharedPreview/LightingAssetType/MaterialAssetPath"; + + thumbnailConfig.m_modelId = SharedPreviewUtils::GetAssetIdForProductPath( + AtomToolsFramework::GetSettingOrDefault(ModelAssetPathSetting, DefaultModelPath)); + thumbnailConfig.m_materialId = SharedPreviewUtils::GetAssetIdForProductPath( + AtomToolsFramework::GetSettingOrDefault(MaterialAssetPathSetting, "materials/reflectionprobe/reflectionprobevisualization.azmaterial")); + thumbnailConfig.m_lightingId = assetInfo.m_assetId; + } + + return thumbnailConfig; + } + void SharedThumbnailRenderer::RenderThumbnail(AzToolsFramework::Thumbnailer::SharedThumbnailKey thumbnailKey, int thumbnailSize) { if (auto previewRenderer = AZ::Interface::Get()) { + const auto& thumbnailConfig = GetThumbnailConfig(thumbnailKey); + previewRenderer->AddCaptureRequest( { thumbnailSize, AZStd::make_shared( previewRenderer->GetScene(), previewRenderer->GetView(), previewRenderer->GetEntityContextId(), - SharedPreviewUtils::GetAssetId(thumbnailKey, RPI::ModelAsset::RTTI_Type(), DefaultModelAssetId), - SharedPreviewUtils::GetAssetId(thumbnailKey, RPI::MaterialAsset::RTTI_Type(), DefaultMaterialAssetId), - SharedPreviewUtils::GetAssetId(thumbnailKey, RPI::AnyAsset::RTTI_Type(), DefaultLightingPresetAssetId), + thumbnailConfig.m_modelId, thumbnailConfig.m_materialId, thumbnailConfig.m_lightingId, Render::MaterialPropertyOverrideMap()), [thumbnailKey]() { diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedThumbnailRenderer.h b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedThumbnailRenderer.h index 4db7728109..2166ac49e7 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedThumbnailRenderer.h +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SharedPreview/SharedThumbnailRenderer.h @@ -33,6 +33,15 @@ namespace AZ ~SharedThumbnailRenderer(); private: + struct ThumbnailConfig + { + Data::AssetId m_modelId; + Data::AssetId m_materialId; + Data::AssetId m_lightingId; + }; + + ThumbnailConfig GetThumbnailConfig(AzToolsFramework::Thumbnailer::SharedThumbnailKey thumbnailKey); + //! ThumbnailerRendererRequestsBus::Handler interface overrides... void RenderThumbnail(AzToolsFramework::Thumbnailer::SharedThumbnailKey thumbnailKey, int thumbnailSize) override; bool Installed() const override; @@ -42,15 +51,12 @@ namespace AZ // Default assets to be kept loaded and used for rendering if not overridden static constexpr const char* DefaultLightingPresetPath = "lightingpresets/thumbnail.lightingpreset.azasset"; - const Data::AssetId DefaultLightingPresetAssetId = AZ::RPI::AssetUtils::GetAssetIdForProductPath(DefaultLightingPresetPath); Data::Asset m_defaultLightingPresetAsset; static constexpr const char* DefaultModelPath = "models/sphere.azmodel"; - const Data::AssetId DefaultModelAssetId = AZ::RPI::AssetUtils::GetAssetIdForProductPath(DefaultModelPath); Data::Asset m_defaultModelAsset; static constexpr const char* DefaultMaterialPath = ""; - const Data::AssetId DefaultMaterialAssetId; Data::Asset m_defaultMaterialAsset; }; } // namespace LyIntegration diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SkyBox/HDRiSkyboxComponentController.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SkyBox/HDRiSkyboxComponentController.cpp index 171c5e417f..7bf6237c1a 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SkyBox/HDRiSkyboxComponentController.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SkyBox/HDRiSkyboxComponentController.cpp @@ -196,8 +196,6 @@ namespace AZ } else { - // If this asset didn't load or isn't a cubemap, release it. - m_configuration.m_cubemapAsset.Release(); m_featureProcessorInterface->SetCubemap(nullptr); } } diff --git a/Gems/AtomLyIntegration/EMotionFXAtom/Code/Source/AtomActorDebugDraw.cpp b/Gems/AtomLyIntegration/EMotionFXAtom/Code/Source/AtomActorDebugDraw.cpp index 50af91020a..a079cb660c 100644 --- a/Gems/AtomLyIntegration/EMotionFXAtom/Code/Source/AtomActorDebugDraw.cpp +++ b/Gems/AtomLyIntegration/EMotionFXAtom/Code/Source/AtomActorDebugDraw.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include @@ -41,6 +42,8 @@ namespace AZ::Render return; } + const RPI::Scene* scene = RPI::Scene::GetSceneForEntityId(instance->GetEntityId()); + const RPI::ViewportContextPtr viewport = AZ::Interface::Get()->GetViewportContextByScene(scene); const AZ::Render::RenderActorSettings& renderActorSettings = EMotionFX::GetRenderActorSettings(); // Render aabb @@ -49,12 +52,23 @@ namespace AZ::Render RenderAABB(instance, renderActorSettings.m_staticAABBColor); } - // Render skeleton + // Render simple line skeleton if (renderFlags[EMotionFX::ActorRenderFlag::RENDER_LINESKELETON]) + { + RenderLineSkeleton(instance, renderActorSettings.m_lineSkeletonColor); + } + + // Render advanced skeleton + if (renderFlags[EMotionFX::ActorRenderFlag::RENDER_SKELETON]) { RenderSkeleton(instance, renderActorSettings.m_skeletonColor); } + if (renderFlags[EMotionFX::ActorRenderFlag::RENDER_NODENAMES]) + { + RenderJointNames(instance, viewport, renderActorSettings.m_jointNameColor); + } + // Render internal EMFX debug lines. if (renderFlags[EMotionFX::ActorRenderFlag::RENDER_EMFX_DEBUG]) { @@ -110,6 +124,29 @@ namespace AZ::Render return aabbRadius * 0.01f; } + float AtomActorDebugDraw::CalculateBoneScale(EMotionFX::ActorInstance* actorInstance, EMotionFX::Node* node) + { + // Get the transform data + EMotionFX::TransformData* transformData = actorInstance->GetTransformData(); + const EMotionFX::Pose* pose = transformData->GetCurrentPose(); + + const size_t nodeIndex = node->GetNodeIndex(); + const size_t parentIndex = node->GetParentIndex(); + const AZ::Vector3 nodeWorldPos = pose->GetWorldSpaceTransform(nodeIndex).m_position; + + if (parentIndex != InvalidIndex) + { + const AZ::Vector3 parentWorldPos = pose->GetWorldSpaceTransform(parentIndex).m_position; + const AZ::Vector3 bone = parentWorldPos - nodeWorldPos; + const float boneLength = bone.GetLengthEstimate(); + + // 10% of the bone length is the sphere size + return boneLength * 0.1f; + } + + return 0.0f; + } + void AtomActorDebugDraw::PrepareForMesh(EMotionFX::Mesh* mesh, const AZ::Transform& worldTM) { // Check if we have already prepared for the given mesh @@ -145,7 +182,7 @@ namespace AZ::Render auxGeom->DrawAabb(aabb, aabbColor, RPI::AuxGeomDraw::DrawStyle::Line); } - void AtomActorDebugDraw::RenderSkeleton(EMotionFX::ActorInstance* instance, const AZ::Color& skeletonColor) + void AtomActorDebugDraw::RenderLineSkeleton(EMotionFX::ActorInstance* instance, const AZ::Color& skeletonColor) { RPI::AuxGeomDrawPtr auxGeom = m_auxGeomFeatureProcessor->GetDrawQueue(); @@ -189,6 +226,42 @@ namespace AZ::Render auxGeom->DrawLines(lineArgs); } + void AtomActorDebugDraw::RenderSkeleton(EMotionFX::ActorInstance* instance, const AZ::Color& skeletonColor) + { + RPI::AuxGeomDrawPtr auxGeom = m_auxGeomFeatureProcessor->GetDrawQueue(); + + const EMotionFX::TransformData* transformData = instance->GetTransformData(); + const EMotionFX::Skeleton* skeleton = instance->GetActor()->GetSkeleton(); + const EMotionFX::Pose* pose = transformData->GetCurrentPose(); + const size_t numEnabled = instance->GetNumEnabledNodes(); + for (size_t i = 0; i < numEnabled; ++i) + { + EMotionFX::Node* joint = skeleton->GetNode(instance->GetEnabledNode(i)); + const size_t jointIndex = joint->GetNodeIndex(); + const size_t parentIndex = joint->GetParentIndex(); + + // check if this node has a parent and is a bone, if not skip it + if (parentIndex == InvalidIndex) + { + continue; + } + + const AZ::Vector3 nodeWorldPos = pose->GetWorldSpaceTransform(jointIndex).m_position; + const AZ::Vector3 parentWorldPos = pose->GetWorldSpaceTransform(parentIndex).m_position; + const AZ::Vector3 bone = parentWorldPos - nodeWorldPos; + const AZ::Vector3 boneDirection = bone.GetNormalizedEstimate(); + const AZ::Vector3 centerWorldPos = bone / 2 + nodeWorldPos; + const float boneLength = bone.GetLengthEstimate(); + const float boneScale = CalculateBoneScale(instance, joint); + const float parentBoneScale = CalculateBoneScale(instance, skeleton->GetNode(parentIndex)); + const float cylinderSize = boneLength - boneScale - parentBoneScale; + + // Render the bone cylinder, the cylinder will be directed towards the node's parent and must fit between the spheres + auxGeom->DrawCylinder(centerWorldPos, boneDirection, boneScale, cylinderSize, skeletonColor); + auxGeom->DrawSphere(nodeWorldPos, boneScale, skeletonColor); + } + } + void AtomActorDebugDraw::RenderEMFXDebugDraw(EMotionFX::ActorInstance* instance) { RPI::AuxGeomDrawPtr auxGeom = m_auxGeomFeatureProcessor->GetDrawQueue(); @@ -329,15 +402,15 @@ namespace AZ::Render m_auxVertices.emplace_back(position); m_auxVertices.emplace_back(position + normal); } - } - RPI::AuxGeomDraw::AuxGeomDynamicDrawArguments lineArgs; - lineArgs.m_verts = m_auxVertices.data(); - lineArgs.m_vertCount = static_cast(m_auxVertices.size()); - lineArgs.m_colors = &vertexNormalsColor; - lineArgs.m_colorCount = 1; - lineArgs.m_depthTest = RPI::AuxGeomDraw::DepthTest::Off; - auxGeom->DrawLines(lineArgs); + RPI::AuxGeomDraw::AuxGeomDynamicDrawArguments lineArgs; + lineArgs.m_verts = m_auxVertices.data(); + lineArgs.m_vertCount = static_cast(m_auxVertices.size()); + lineArgs.m_colors = &vertexNormalsColor; + lineArgs.m_colorCount = 1; + lineArgs.m_depthTest = RPI::AuxGeomDraw::DepthTest::Off; + auxGeom->DrawLines(lineArgs); + } } } @@ -487,4 +560,54 @@ namespace AZ::Render auxGeom->DrawLines(lineArgs); } } + + void AtomActorDebugDraw::RenderJointNames(EMotionFX::ActorInstance* actorInstance, + RPI::ViewportContextPtr viewportContext, const AZ::Color& jointNameColor) + { + if (!m_fontDrawInterface) + { + auto fontQueryInterface = AZ::Interface::Get(); + if (!fontQueryInterface) + { + return; + } + m_fontDrawInterface = fontQueryInterface->GetDefaultFontDrawInterface(); + } + + if (!m_fontDrawInterface || !viewportContext || !viewportContext->GetRenderScene() || + !AZ::Interface::Get()) + { + return; + } + + const EMotionFX::Actor* actor = actorInstance->GetActor(); + const EMotionFX::Skeleton* skeleton = actor->GetSkeleton(); + const EMotionFX::TransformData* transformData = actorInstance->GetTransformData(); + const EMotionFX::Pose* pose = transformData->GetCurrentPose(); + const size_t numEnabledNodes = actorInstance->GetNumEnabledNodes(); + + m_drawParams.m_drawViewportId = viewportContext->GetId(); + AzFramework::WindowSize viewportSize = viewportContext->GetViewportSize(); + m_drawParams.m_position = AZ::Vector3(static_cast(viewportSize.m_width), 0.0f, 1.0f) + + TopRightBorderPadding * viewportContext->GetDpiScalingFactor(); + m_drawParams.m_color = jointNameColor; + m_drawParams.m_scale = AZ::Vector2(BaseFontSize); + m_drawParams.m_hAlign = AzFramework::TextHorizontalAlignment::Right; + m_drawParams.m_monospace = false; + m_drawParams.m_depthTest = false; + m_drawParams.m_virtual800x600ScreenSize = false; + m_drawParams.m_scaleWithWindow = false; + m_drawParams.m_multiline = true; + m_drawParams.m_lineSpacing = 0.5f; + + for (size_t i = 0; i < numEnabledNodes; ++i) + { + const EMotionFX::Node* joint = skeleton->GetNode(actorInstance->GetEnabledNode(i)); + const size_t jointIndex = joint->GetNodeIndex(); + const AZ::Vector3 worldPos = pose->GetWorldSpaceTransform(jointIndex).m_position; + + m_drawParams.m_position = worldPos; + m_fontDrawInterface->DrawScreenAlignedText3d(m_drawParams, joint->GetName()); + } + } } // namespace AZ::Render diff --git a/Gems/AtomLyIntegration/EMotionFXAtom/Code/Source/AtomActorDebugDraw.h b/Gems/AtomLyIntegration/EMotionFXAtom/Code/Source/AtomActorDebugDraw.h index 4178ad25f1..6289077fe2 100644 --- a/Gems/AtomLyIntegration/EMotionFXAtom/Code/Source/AtomActorDebugDraw.h +++ b/Gems/AtomLyIntegration/EMotionFXAtom/Code/Source/AtomActorDebugDraw.h @@ -10,8 +10,10 @@ #include #include +#include #include #include +#include namespace EMotionFX { @@ -37,9 +39,12 @@ namespace AZ::Render private: + float CalculateBoneScale(EMotionFX::ActorInstance* actorInstance, EMotionFX::Node* node); float CalculateScaleMultiplier(EMotionFX::ActorInstance* instance) const; void PrepareForMesh(EMotionFX::Mesh* mesh, const AZ::Transform& worldTM); + void RenderAABB(EMotionFX::ActorInstance* instance, const AZ::Color& aabbColor); + void RenderLineSkeleton(EMotionFX::ActorInstance* instance, const AZ::Color& skeletonColor); void RenderSkeleton(EMotionFX::ActorInstance* instance, const AZ::Color& skeletonColor); void RenderEMFXDebugDraw(EMotionFX::ActorInstance* instance); void RenderNormals( @@ -57,14 +62,21 @@ namespace AZ::Render const AZ::Color& tangentsColor, const AZ::Color& mirroredBitangentsColor, const AZ::Color& bitangentsColor); void RenderWireframe(EMotionFX::Mesh* mesh, const AZ::Transform& worldTM, float wireframeScale, float scaleMultiplier, const AZ::Color& wireframeColor); + void RenderJointNames(EMotionFX::ActorInstance* actorInstance, RPI::ViewportContextPtr viewportContext, const AZ::Color& jointNameColor); EMotionFX::Mesh* m_currentMesh = nullptr; /**< A pointer to the mesh whose world space positions are in the pre-calculated positions buffer. NULL in case we haven't pre-calculated any positions yet. */ AZStd::vector m_worldSpacePositions; /**< The buffer used to store world space positions for rendering normals tangents and the wireframe. */ + static constexpr float BaseFontSize = 0.7f; + const Vector3 TopRightBorderPadding = AZ::Vector3(-40.0f, 22.0f, 0.0f); + RPI::AuxGeomFeatureProcessorInterface* m_auxGeomFeatureProcessor = nullptr; AZStd::vector m_auxVertices; AZStd::vector m_auxColors; + + AzFramework::TextDrawParameters m_drawParams; + AzFramework::FontDrawInterface* m_fontDrawInterface = nullptr; }; } diff --git a/Gems/AtomLyIntegration/EMotionFXAtom/Code/Source/AtomActorInstance.cpp b/Gems/AtomLyIntegration/EMotionFXAtom/Code/Source/AtomActorInstance.cpp index 4d1b42a0eb..ce384a2155 100644 --- a/Gems/AtomLyIntegration/EMotionFXAtom/Code/Source/AtomActorInstance.cpp +++ b/Gems/AtomLyIntegration/EMotionFXAtom/Code/Source/AtomActorInstance.cpp @@ -776,12 +776,14 @@ namespace AZ { if (m_meshHandle) { - Data::Instance wrinkleMaskObjectSrg = m_meshFeatureProcessor->GetObjectSrg(*m_meshHandle); - if (wrinkleMaskObjectSrg) + const AZStd::vector>& wrinkleMaskObjectSrgs = m_meshFeatureProcessor->GetObjectSrgs(*m_meshHandle); + + for (auto& wrinkleMaskObjectSrg : wrinkleMaskObjectSrgs) { RHI::ShaderInputImageIndex wrinkleMasksIndex = wrinkleMaskObjectSrg->FindShaderInputImageIndex(Name{ "m_wrinkle_masks" }); RHI::ShaderInputConstantIndex wrinkleMaskWeightsIndex = wrinkleMaskObjectSrg->FindShaderInputConstantIndex(Name{ "m_wrinkle_mask_weights" }); RHI::ShaderInputConstantIndex wrinkleMaskCountIndex = wrinkleMaskObjectSrg->FindShaderInputConstantIndex(Name{ "m_wrinkle_mask_count" }); + if (wrinkleMasksIndex.IsValid() || wrinkleMaskWeightsIndex.IsValid() || wrinkleMaskCountIndex.IsValid()) { AZ_Error("AtomActorInstance", wrinkleMasksIndex.IsValid(), "m_wrinkle_masks not found on the ObjectSrg, but m_wrinkle_mask_weights and/or m_wrinkle_mask_count are being used."); diff --git a/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AnimViewportRenderer.cpp b/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AnimViewportRenderer.cpp index a32af31d6d..396042c9f6 100644 --- a/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AnimViewportRenderer.cpp +++ b/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AnimViewportRenderer.cpp @@ -178,20 +178,13 @@ namespace EMStudio if (!m_actorEntities.empty()) { // Find the actor instance and calculate the center from aabb. - AZ::Vector3 actorCenter = AZ::Vector3::CreateZero(); EMotionFX::Integration::ActorComponent* actorComponent = m_actorEntities[0]->FindComponent(); EMotionFX::ActorInstance* actorInstance = actorComponent->GetActorInstance(); if (actorInstance) { - actorCenter += actorInstance->GetAabb().GetCenter(); + result = actorInstance->GetAabb().GetCenter(); } - - // Just return the position of the first entity. - AZ::Transform worldTransform; - AZ::TransformBus::EventResult(worldTransform, m_actorEntities[0]->GetId(), &AZ::TransformBus::Events::GetWorldTM); - result = worldTransform.GetTranslation(); - result += actorCenter; } return result; diff --git a/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AnimViewportRequestBus.h b/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AnimViewportRequestBus.h index da4a054c53..9a0bee1fec 100644 --- a/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AnimViewportRequestBus.h +++ b/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AnimViewportRequestBus.h @@ -36,6 +36,9 @@ namespace EMStudio //! Set the camera view mode. virtual void SetCameraViewMode(CameraViewMode mode) = 0; + //! Set the camera follow up + virtual void SetFollowCharacter(bool follow) = 0; + //! Toggle render option flag virtual void ToggleRenderFlag(EMotionFX::ActorRenderFlag flag) = 0; }; diff --git a/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AnimViewportToolBar.cpp b/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AnimViewportToolBar.cpp index 3b53103537..4fb59afd1b 100644 --- a/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AnimViewportToolBar.cpp +++ b/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AnimViewportToolBar.cpp @@ -34,8 +34,9 @@ namespace EMStudio CreateViewOptionEntry(contextMenu, "Solid", EMotionFX::ActorRenderFlag::RENDER_SOLID); CreateViewOptionEntry(contextMenu, "Wireframe", EMotionFX::ActorRenderFlag::RENDER_WIREFRAME); - CreateViewOptionEntry(contextMenu, "Lighting", EMotionFX::ActorRenderFlag::RENDER_LIGHTING); - CreateViewOptionEntry(contextMenu, "Backface Culling", EMotionFX::ActorRenderFlag::RENDER_BACKFACECULLING); + // [EMFX-TODO] Add those option once implemented. + // CreateViewOptionEntry(contextMenu, "Lighting", EMotionFX::ActorRenderFlag::RENDER_LIGHTING); + // CreateViewOptionEntry(contextMenu, "Backface Culling", EMotionFX::ActorRenderFlag::RENDER_BACKFACECULLING); contextMenu->addSeparator(); CreateViewOptionEntry(contextMenu, "Vertex Normals", EMotionFX::ActorRenderFlag::RENDER_VERTEXNORMALS); CreateViewOptionEntry(contextMenu, "Face Normals", EMotionFX::ActorRenderFlag::RENDER_FACENORMALS); @@ -45,8 +46,9 @@ namespace EMStudio CreateViewOptionEntry(contextMenu, "Line Skeleton", EMotionFX::ActorRenderFlag::RENDER_LINESKELETON); CreateViewOptionEntry(contextMenu, "Solid Skeleton", EMotionFX::ActorRenderFlag::RENDER_SKELETON); CreateViewOptionEntry(contextMenu, "Joint Names", EMotionFX::ActorRenderFlag::RENDER_NODENAMES); - CreateViewOptionEntry(contextMenu, "Joint Orientations", EMotionFX::ActorRenderFlag::RENDER_NODEORIENTATION); - CreateViewOptionEntry(contextMenu, "Actor Bind Pose", EMotionFX::ActorRenderFlag::RENDER_ACTORBINDPOSE); + // [EMFX-TODO] Add those option once implemented. + // CreateViewOptionEntry(contextMenu, "Joint Orientations", EMotionFX::ActorRenderFlag::RENDER_NODEORIENTATION); + // CreateViewOptionEntry(contextMenu, "Actor Bind Pose", EMotionFX::ActorRenderFlag::RENDER_ACTORBINDPOSE); contextMenu->addSeparator(); CreateViewOptionEntry(contextMenu, "Hit Detection Colliders", EMotionFX::ActorRenderFlag::RENDER_HITDETECTION_COLLIDERS); CreateViewOptionEntry(contextMenu, "Ragdoll Colliders", EMotionFX::ActorRenderFlag::RENDER_RAGDOLL_COLLIDERS); @@ -87,6 +89,19 @@ namespace EMStudio // Send the reset camera event. AnimViewportRequestBus::Broadcast(&AnimViewportRequestBus::Events::ResetCamera); }); + + cameraMenu->addSeparator(); + m_followCharacterAction = cameraMenu->addAction("Follow Character"); + m_followCharacterAction->setCheckable(true); + m_followCharacterAction->setChecked(false); + connect(m_followCharacterAction, &QAction::triggered, this, + [this]() + { + AnimViewportRequestBus::Broadcast( + &AnimViewportRequestBus::Events::SetFollowCharacter, m_followCharacterAction->isChecked()); + ; + }); + cameraButton->setMenu(cameraMenu); cameraButton->setText("Camera Option"); cameraButton->setPopupMode(QToolButton::InstantPopup); diff --git a/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AnimViewportToolBar.h b/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AnimViewportToolBar.h index 57633e5284..1443c54ee9 100644 --- a/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AnimViewportToolBar.h +++ b/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AnimViewportToolBar.h @@ -31,5 +31,6 @@ namespace EMStudio QMenu* menu, const char* menuEntryName, uint32_t actionIndex, bool visible = true, char* iconFileName = nullptr); QAction* m_actions[EMotionFX::ActorRenderFlag::NUM_RENDERFLAGS] = { nullptr }; + QAction* m_followCharacterAction = nullptr; }; } diff --git a/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AnimViewportWidget.cpp b/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AnimViewportWidget.cpp index cd362bdaf5..86529d16ec 100644 --- a/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AnimViewportWidget.cpp +++ b/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AnimViewportWidget.cpp @@ -147,36 +147,43 @@ namespace EMStudio switch (mode) { case CameraViewMode::FRONT: - cameraPosition.Set(0.0f, CameraDistance, targetPosition.GetZ()); + cameraPosition.Set(targetPosition.GetX(), targetPosition.GetY() + CameraDistance, targetPosition.GetZ()); break; case CameraViewMode::BACK: - cameraPosition.Set(0.0f, -CameraDistance, targetPosition.GetZ()); + cameraPosition.Set(targetPosition.GetX(), targetPosition.GetY() - CameraDistance, targetPosition.GetZ()); break; case CameraViewMode::TOP: - cameraPosition.Set(0.0f, 0.0f, CameraDistance + targetPosition.GetZ()); + cameraPosition.Set(targetPosition.GetX(), targetPosition.GetY(), CameraDistance + targetPosition.GetZ()); break; case CameraViewMode::BOTTOM: - cameraPosition.Set(0.0f, 0.0f, -CameraDistance + targetPosition.GetZ()); + cameraPosition.Set(targetPosition.GetX(), targetPosition.GetY(), -CameraDistance + targetPosition.GetZ()); break; case CameraViewMode::LEFT: - cameraPosition.Set(-CameraDistance, 0.0f, targetPosition.GetZ()); + cameraPosition.Set(targetPosition.GetX() - CameraDistance, targetPosition.GetY(), targetPosition.GetZ()); break; case CameraViewMode::RIGHT: - cameraPosition.Set(CameraDistance, 0.0f, targetPosition.GetZ()); + cameraPosition.Set(targetPosition.GetX() + CameraDistance, targetPosition.GetY(), targetPosition.GetZ()); break; case CameraViewMode::DEFAULT: // The default view mode is looking from the top left of the character. - cameraPosition.Set(-CameraDistance, CameraDistance, CameraDistance + targetPosition.GetZ()); + cameraPosition.Set( + targetPosition.GetX() - CameraDistance, targetPosition.GetY() + CameraDistance, targetPosition.GetZ() + CameraDistance); break; } GetViewportContext()->SetCameraTransform(AZ::Transform::CreateLookAt(cameraPosition, targetPosition)); } + void AnimViewportWidget::SetFollowCharacter(bool follow) + { + m_followCharacter = follow; + } + void AnimViewportWidget::OnTick(float deltaTime, AZ::ScriptTimePoint time) { RenderViewportWidget::OnTick(deltaTime, time); CalculateCameraProjection(); RenderCustomPluginData(); + FollowCharacter(); } void AnimViewportWidget::CalculateCameraProjection() @@ -205,6 +212,20 @@ namespace EMStudio } } + void AnimViewportWidget::FollowCharacter() + { + if (m_followCharacter) + { + // When follow charater move is enabled, we are adding the delta of the character movement to the camera per frame. + AZ::Vector3 camPos = GetViewportContext()->GetCameraTransform().GetTranslation(); + camPos += m_renderer->GetCharacterCenter() - m_prevCharacterPos; + AZ::Transform newCamTransform = GetViewportContext()->GetCameraTransform(); + newCamTransform.SetTranslation(camPos); + GetViewportContext()->SetCameraTransform(newCamTransform); + } + m_prevCharacterPos = m_renderer->GetCharacterCenter(); + } + void AnimViewportWidget::ToggleRenderFlag(EMotionFX::ActorRenderFlag flag) { m_renderFlags[flag] = !m_renderFlags[flag]; diff --git a/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AnimViewportWidget.h b/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AnimViewportWidget.h index 069aebb73e..336564a9e0 100644 --- a/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AnimViewportWidget.h +++ b/Gems/AtomLyIntegration/EMotionFXAtom/Code/Tools/EMStudio/AnimViewportWidget.h @@ -38,6 +38,7 @@ namespace EMStudio void CalculateCameraProjection(); void RenderCustomPluginData(); + void FollowCharacter(); void SetupCameras(); void SetupCameraController(); @@ -48,6 +49,7 @@ namespace EMStudio // AnimViewportRequestBus::Handler overrides void ResetCamera(); void SetCameraViewMode(CameraViewMode mode); + void SetFollowCharacter(bool follow); void ToggleRenderFlag(EMotionFX::ActorRenderFlag flag); // ViewportPluginRequestBus::Handler overrides @@ -61,5 +63,7 @@ namespace EMStudio AZStd::shared_ptr m_translateCamera; AZStd::shared_ptr m_orbitDollyScrollCamera; EMotionFX::ActorRenderFlagBitset m_renderFlags; + bool m_followCharacter = false; + AZ::Vector3 m_prevCharacterPos; }; } diff --git a/Gems/AtomTressFX/Code/Builders/HairBuilderComponent.cpp b/Gems/AtomTressFX/Code/Builders/HairBuilderComponent.cpp index f80261f4b5..7f99e4c55f 100644 --- a/Gems/AtomTressFX/Code/Builders/HairBuilderComponent.cpp +++ b/Gems/AtomTressFX/Code/Builders/HairBuilderComponent.cpp @@ -46,14 +46,6 @@ namespace AZ { m_hairAssetBuilder.RegisterBuilder(); m_hairAssetHandler.Register(); - - // Add asset types and extensions to AssetCatalog. - auto assetCatalog = AZ::Data::AssetCatalogRequestBus::FindFirstHandler(); - if (assetCatalog) - { - assetCatalog->EnableCatalogForAsset(azrtti_typeid()); - assetCatalog->AddExtension(AMD::TFXCombinedFileExtension); - } } void HairBuilderComponent::Deactivate() diff --git a/Gems/AudioSystem/Code/Source/Editor/ImplementationManager.cpp b/Gems/AudioSystem/Code/Source/Editor/ImplementationManager.cpp index bee5c1dd51..f339ff8bb3 100644 --- a/Gems/AudioSystem/Code/Source/Editor/ImplementationManager.cpp +++ b/Gems/AudioSystem/Code/Source/Editor/ImplementationManager.cpp @@ -9,8 +9,6 @@ #include -#include - #include #include #include @@ -32,10 +30,6 @@ bool CImplementationManager::LoadImplementation() // release the loaded implementation (if any) Release(); - const char* engineRoot = nullptr; - AzFramework::ApplicationRequests::Bus::BroadcastResult(engineRoot, &AzFramework::ApplicationRequests::GetEngineRoot); - AZ_Assert(engineRoot != nullptr, "Unable to communicate with AzFramework::ApplicationRequests::Bus"); - AudioControlsEditor::EditorImplPluginEventBus::Broadcast(&AudioControlsEditor::EditorImplPluginEventBus::Events::InitializeEditorImplPlugin); } else diff --git a/Gems/Blast/Code/Source/Components/BlastSystemComponent.cpp b/Gems/Blast/Code/Source/Components/BlastSystemComponent.cpp index 4c0f15463a..945d4eafb0 100644 --- a/Gems/Blast/Code/Source/Components/BlastSystemComponent.cpp +++ b/Gems/Blast/Code/Source/Components/BlastSystemComponent.cpp @@ -151,6 +151,8 @@ namespace Blast SaveConfiguration(); DeactivatePhysics(); + m_configuration.m_materialLibrary.Release(); + m_assetHandlers.clear(); }; diff --git a/Gems/Camera/Code/Source/ViewportCameraSelectorWindow.cpp b/Gems/Camera/Code/Source/ViewportCameraSelectorWindow.cpp index dc091db9e5..eb1fd9890c 100644 --- a/Gems/Camera/Code/Source/ViewportCameraSelectorWindow.cpp +++ b/Gems/Camera/Code/Source/ViewportCameraSelectorWindow.cpp @@ -7,14 +7,14 @@ */ #include "ViewportCameraSelectorWindow.h" #include "ViewportCameraSelectorWindow_Internals.h" -#include -#include -#include -#include -#include -#include #include #include +#include +#include +#include +#include +#include +#include namespace Qt { @@ -64,12 +64,14 @@ namespace Camera CameraListModel::CameraListModel(QWidget* myParent) : QAbstractListModel(myParent) { + m_lastActiveCamera = AZ::EntityId(); m_cameraItems.push_back(AZ::EntityId()); CameraNotificationBus::Handler::BusConnect(); } CameraListModel::~CameraListModel() { + m_firstEntry = true; // set the view entity id back to Invalid, thus enabling the editor camera EditorCameraRequests::Bus::Broadcast(&EditorCameraRequests::SetViewFromEntityPerspective, AZ::EntityId()); @@ -98,11 +100,13 @@ namespace Camera { // If the camera entity is not an editor camera entity, don't add it to the list. // This occurs when we're in simulation mode. + + //We reset the m_firstEntry value so we can update m_lastActiveCamera when we remove from the cameras list + m_firstEntry = true; + bool isEditorEntity = false; AzToolsFramework::EditorEntityContextRequestBus::BroadcastResult( - isEditorEntity, - &AzToolsFramework::EditorEntityContextRequests::IsEditorEntity, - cameraId); + isEditorEntity, &AzToolsFramework::EditorEntityContextRequests::IsEditorEntity, cameraId); if (!isEditorEntity) { return; @@ -111,11 +115,25 @@ namespace Camera beginInsertRows(QModelIndex(), rowCount(), rowCount()); m_cameraItems.push_back(cameraId); endInsertRows(); + + if (m_lastActiveCamera.IsValid() && m_lastActiveCamera == cameraId) + { + Camera::CameraRequestBus::Event(cameraId, &Camera::CameraRequestBus::Events::MakeActiveView); + } } void CameraListModel::OnCameraRemoved(const AZ::EntityId& cameraId) { - auto cameraIt = AZStd::find_if(m_cameraItems.begin(), m_cameraItems.end(), + //Check it is the first time we remove a camera from the list before any other addition + //So we don't end up with the wrong camera ID. + if (m_firstEntry) + { + CameraSystemRequestBus::BroadcastResult(m_lastActiveCamera, &CameraSystemRequestBus::Events::GetActiveCamera); + m_firstEntry = false; + } + + auto cameraIt = AZStd::find_if( + m_cameraItems.begin(), m_cameraItems.end(), [&cameraId](const CameraListItem& entry) { return entry.m_cameraId == cameraId; @@ -162,7 +180,12 @@ namespace Camera // use the stylesheet for elements in a set where one item must be selected at all times setProperty("class", "SingleRequiredSelection"); - connect(m_cameraList, &CameraListModel::rowsInserted, this, [sortedProxyModel](const QModelIndex&, int, int) { sortedProxyModel->sortColumn(); }); + connect( + m_cameraList, &CameraListModel::rowsInserted, this, + [sortedProxyModel](const QModelIndex&, int, int) + { + sortedProxyModel->sortColumn(); + }); // highlight the current selected camera entity AZ::EntityId currentSelection; @@ -188,7 +211,8 @@ namespace Camera QScopedValueRollback rb(m_ignoreViewportViewEntityChanged, true); AZ::EntityId entityId = selectionModel()->currentIndex().data(Qt::CameraIdRole).value(); - EditorCameraRequests::Bus::Broadcast(&EditorCameraRequests::SetViewAndMovementLockFromEntityPerspective, entityId, lockCameraMovement); + EditorCameraRequests::Bus::Broadcast( + &EditorCameraRequests::SetViewAndMovementLockFromEntityPerspective, entityId, lockCameraMovement); } } @@ -220,7 +244,9 @@ namespace Camera } // swallow mouse move events so we can disable sloppy selection - void ViewportCameraSelectorWindow::mouseMoveEvent(QMouseEvent*) {} + void ViewportCameraSelectorWindow::mouseMoveEvent(QMouseEvent*) + { + } // double click selects the entity void ViewportCameraSelectorWindow::mouseDoubleClickEvent([[maybe_unused]] QMouseEvent* event) @@ -228,11 +254,13 @@ namespace Camera AZ::EntityId entityId = selectionModel()->currentIndex().data(Qt::CameraIdRole).value(); if (entityId.IsValid()) { - AzToolsFramework::ToolsApplicationRequestBus::Broadcast(&AzToolsFramework::ToolsApplicationRequestBus::Events::SetSelectedEntities, AzToolsFramework::EntityIdList { entityId }); + AzToolsFramework::ToolsApplicationRequestBus::Broadcast( + &AzToolsFramework::ToolsApplicationRequestBus::Events::SetSelectedEntities, AzToolsFramework::EntityIdList{ entityId }); } else { - AzToolsFramework::ToolsApplicationRequestBus::Broadcast(&AzToolsFramework::ToolsApplicationRequestBus::Events::SetSelectedEntities, AzToolsFramework::EntityIdList {}); + AzToolsFramework::ToolsApplicationRequestBus::Broadcast( + &AzToolsFramework::ToolsApplicationRequestBus::Events::SetSelectedEntities, AzToolsFramework::EntityIdList{}); } } @@ -290,7 +318,10 @@ namespace Camera : QWidget(parent) { setLayout(new QVBoxLayout(this)); - auto label = new QLabel("Select the camera you wish to view and navigate through. Closing this window will return you to the default editor camera.", this); + auto label = new QLabel( + "Select the camera you wish to view and navigate through. Closing this window will return you to the default editor " + "camera.", + this); label->setWordWrap(true); layout()->addWidget(label); layout()->addWidget(new ViewportCameraSelectorWindow(this)); @@ -309,6 +340,8 @@ namespace Camera viewOptions.isPreview = true; viewOptions.showInMenu = true; viewOptions.preferedDockingArea = Qt::DockWidgetArea::LeftDockWidgetArea; - AzToolsFramework::EditorRequestBus::Broadcast(&AzToolsFramework::EditorRequestBus::Events::RegisterViewPane, s_viewportCameraSelectorName, "Viewport", viewOptions, &Internal::CreateNewSelectionWindow); + AzToolsFramework::EditorRequestBus::Broadcast( + &AzToolsFramework::EditorRequestBus::Events::RegisterViewPane, s_viewportCameraSelectorName, "Viewport", viewOptions, + &Internal::CreateNewSelectionWindow); } } // namespace Camera diff --git a/Gems/Camera/Code/Source/ViewportCameraSelectorWindow_Internals.h b/Gems/Camera/Code/Source/ViewportCameraSelectorWindow_Internals.h index b07ae7789f..21f316b83d 100644 --- a/Gems/Camera/Code/Source/ViewportCameraSelectorWindow_Internals.h +++ b/Gems/Camera/Code/Source/ViewportCameraSelectorWindow_Internals.h @@ -58,6 +58,11 @@ namespace Camera private: AZStd::vector m_cameraItems; AZ::EntityId m_sequenceCameraEntityId; + AZ::EntityId m_lastActiveCamera; + + //Value to check that is the first time that we remove a camera before adding a new one. + //So we can update m_lastActiveCamera properly + bool m_firstEntry = true; }; struct ViewportCameraSelectorWindow diff --git a/Gems/EMotionFX/Code/EMotionFX/Source/AnimGraphReferenceNode.cpp b/Gems/EMotionFX/Code/EMotionFX/Source/AnimGraphReferenceNode.cpp index 16f192615d..00ff273187 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Source/AnimGraphReferenceNode.cpp +++ b/Gems/EMotionFX/Code/EMotionFX/Source/AnimGraphReferenceNode.cpp @@ -642,6 +642,8 @@ namespace EMotionFX void AnimGraphReferenceNode::OnAnimGraphAssetChanged() { + AnimGraphNotificationBus::Broadcast(&AnimGraphNotificationBus::Events::OnReferenceAnimGraphAboutToBeChanged, this); + ReleaseAnimGraphInstances(); AnimGraphNotificationBus::Broadcast(&AnimGraphNotificationBus::Events::OnReferenceAnimGraphChanged, this); diff --git a/Gems/EMotionFX/Code/EMotionFX/Source/MotionData/NonUniformMotionData.cpp b/Gems/EMotionFX/Code/EMotionFX/Source/MotionData/NonUniformMotionData.cpp index 6ced6152e1..50f3a1f73f 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Source/MotionData/NonUniformMotionData.cpp +++ b/Gems/EMotionFX/Code/EMotionFX/Source/MotionData/NonUniformMotionData.cpp @@ -78,7 +78,6 @@ namespace EMotionFX { const Actor* actor = settings.m_actorInstance->GetActor(); const MotionLinkData* motionLinkData = FindMotionLinkData(actor); - const Skeleton* skeleton = actor->GetSkeleton(); const size_t jointDataIndex = motionLinkData->GetJointDataLinks()[jointSkeletonIndex]; if (m_additive && jointDataIndex == InvalidIndex) @@ -88,7 +87,7 @@ namespace EMotionFX // Sample the interpolated data. Transform result; - const bool inPlace = (settings.m_inPlace && skeleton->GetNode(jointSkeletonIndex)->GetIsRootNode()); + const bool inPlace = (settings.m_inPlace && jointSkeletonIndex == actor->GetMotionExtractionNodeIndex()); if (jointDataIndex != InvalidIndex && !inPlace) { const JointData& jointData = m_jointData[jointDataIndex]; @@ -139,14 +138,13 @@ namespace EMotionFX const MotionLinkData* motionLinkData = FindMotionLinkData(actor); const ActorInstance* actorInstance = settings.m_actorInstance; - const Skeleton* skeleton = actor->GetSkeleton(); const Pose* bindPose = actorInstance->GetTransformData()->GetBindPose(); const size_t numNodes = actorInstance->GetNumEnabledNodes(); for (size_t i = 0; i < numNodes; ++i) { const uint16 jointIndex = actorInstance->GetEnabledNode(i); const size_t jointDataIndex = motionLinkData->GetJointDataLinks()[jointIndex]; - const bool inPlace = (settings.m_inPlace && skeleton->GetNode(jointIndex)->GetIsRootNode()); + const bool inPlace = (settings.m_inPlace && jointIndex == actor->GetMotionExtractionNodeIndex()); // Sample the interpolated data. Transform result; diff --git a/Gems/EMotionFX/Code/EMotionFX/Source/MotionData/UniformMotionData.cpp b/Gems/EMotionFX/Code/EMotionFX/Source/MotionData/UniformMotionData.cpp index c4451ff902..881604c7ff 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Source/MotionData/UniformMotionData.cpp +++ b/Gems/EMotionFX/Code/EMotionFX/Source/MotionData/UniformMotionData.cpp @@ -147,8 +147,7 @@ namespace EMotionFX size_t indexB; CalculateInterpolationIndicesUniform(settings.m_sampleTime, m_sampleSpacing, m_duration, m_numSamples, indexA, indexB, t); - const Skeleton* skeleton = actor->GetSkeleton(); - const bool inPlace = (settings.m_inPlace && skeleton->GetNode(jointSkeletonIndex)->GetIsRootNode()); + const bool inPlace = (settings.m_inPlace && jointSkeletonIndex == actor->GetMotionExtractionNodeIndex()); // Sample the interpolated data. Transform result; @@ -210,13 +209,12 @@ namespace EMotionFX const AZStd::vector& jointLinks = motionLinkData->GetJointDataLinks(); const ActorInstance* actorInstance = settings.m_actorInstance; - const Skeleton* skeleton = actor->GetSkeleton(); const Pose* bindPose = actorInstance->GetTransformData()->GetBindPose(); const size_t numNodes = actorInstance->GetNumEnabledNodes(); for (size_t i = 0; i < numNodes; ++i) { const size_t skeletonJointIndex = actorInstance->GetEnabledNode(i); - const bool inPlace = (settings.m_inPlace && skeleton->GetNode(skeletonJointIndex)->GetIsRootNode()); + const bool inPlace = (settings.m_inPlace && skeletonJointIndex == actor->GetMotionExtractionNodeIndex()); // Sample the interpolated data. Transform result; diff --git a/Gems/EMotionFX/Code/EMotionFX/Tools/EMotionStudio/EMStudioSDK/Source/RenderPlugin/RenderOptions.cpp b/Gems/EMotionFX/Code/EMotionFX/Tools/EMotionStudio/EMStudioSDK/Source/RenderPlugin/RenderOptions.cpp index d1e3dc5ebc..c7cdecafe0 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Tools/EMotionStudio/EMStudioSDK/Source/RenderPlugin/RenderOptions.cpp +++ b/Gems/EMotionFX/Code/EMotionFX/Tools/EMotionStudio/EMStudioSDK/Source/RenderPlugin/RenderOptions.cpp @@ -545,6 +545,7 @@ namespace EMStudio ->Attribute(AZ::Edit::Attributes::ChangeNotify, &RenderOptions::OnLineSkeletonColorChangedCallback) ->DataElement(AZ::Edit::UIHandlers::Default, &RenderOptions::m_skeletonColor, "Solid skeleton color", "Solid skeleton color.") + ->Attribute(AZ_CRC("AlphaChannel", 0xa0cab5cf), true) ->Attribute(AZ::Edit::Attributes::ChangeNotify, &RenderOptions::OnSkeletonColorChangedCallback) ->DataElement(AZ::Edit::UIHandlers::Default, &RenderOptions::m_selectionColor, "Selection gizmo color", "Selection gizmo color") @@ -1082,6 +1083,7 @@ namespace EMStudio settings.m_selectedClothColliderColor = m_selectedClothColliderColor; settings.m_simulatedObjectColliderColor = m_simulatedObjectColliderColor; settings.m_selectedSimulatedObjectColliderColor = m_selectedSimulatedObjectColliderColor; + settings.m_jointNameColor = m_nodeNameColor; } void RenderOptions::OnGridUnitSizeChangedCallback() const @@ -1268,6 +1270,7 @@ namespace EMStudio void RenderOptions::OnSkeletonColorChangedCallback() const { PluginOptionsNotificationsBus::Event(s_skeletonColorOptionName, &PluginOptionsNotificationsBus::Events::OnOptionChanged, s_skeletonColorOptionName); + CopyToRenderActorSettings(EMotionFX::GetRenderActorSettings()); } void RenderOptions::OnSelectionColorChangedCallback() const @@ -1283,6 +1286,7 @@ namespace EMStudio void RenderOptions::OnNodeNameColorChangedCallback() const { PluginOptionsNotificationsBus::Event(s_nodeNameColorOptionName, &PluginOptionsNotificationsBus::Events::OnOptionChanged, s_nodeNameColorOptionName); + CopyToRenderActorSettings(EMotionFX::GetRenderActorSettings()); } void RenderOptions::OnGridColorChangedCallback() const diff --git a/Gems/EMotionFX/Code/Source/Integration/Rendering/RenderActorSettings.h b/Gems/EMotionFX/Code/Source/Integration/Rendering/RenderActorSettings.h index c397690b16..0fa7842ded 100644 --- a/Gems/EMotionFX/Code/Source/Integration/Rendering/RenderActorSettings.h +++ b/Gems/EMotionFX/Code/Source/Integration/Rendering/RenderActorSettings.h @@ -46,5 +46,6 @@ namespace AZ::Render AZ::Color m_staticAABBColor{ 0.0f, 0.7f, 0.7f, 1.0f }; AZ::Color m_lineSkeletonColor{ 0.33333f, 1.0f, 0.0f, 1.0f }; AZ::Color m_skeletonColor{ 0.19f, 0.58f, 0.19f, 1.0f }; + AZ::Color m_jointNameColor{ 1.0f, 1.0f, 1.0f, 1.0f }; }; } // namespace AZ::Render diff --git a/Gems/EMotionFX/Code/Source/Integration/System/SystemComponent.cpp b/Gems/EMotionFX/Code/Source/Integration/System/SystemComponent.cpp index b7fa03998e..15037793f1 100644 --- a/Gems/EMotionFX/Code/Source/Integration/System/SystemComponent.cpp +++ b/Gems/EMotionFX/Code/Source/Integration/System/SystemComponent.cpp @@ -514,7 +514,6 @@ namespace EMotionFX AzToolsFramework::EditorEvents::Bus::Handler::BusConnect(); AzToolsFramework::EditorAnimationSystemRequestsBus::Handler::BusConnect(); AzToolsFramework::AssetBrowser::AssetBrowserInteractionNotificationBus::Handler::BusConnect(); - m_updateTimer.Stamp(); // Register custom property handlers for the reflected property editor. m_propertyHandlers = RegisterPropertyTypes(); @@ -604,15 +603,8 @@ namespace EMotionFX } ////////////////////////////////////////////////////////////////////////// - void SystemComponent::OnTick(float delta, AZ::ScriptTimePoint timePoint) + void SystemComponent::OnTick(float delta, [[maybe_unused]]AZ::ScriptTimePoint timePoint) { - AZ_UNUSED(timePoint); - -#if defined (EMOTIONFXANIMATION_EDITOR) - AZ_UNUSED(delta); - delta = m_updateTimer.StampAndGetDeltaTimeInSeconds(); -#endif - // Flush events prior to updating EMotion FX. ActorNotificationBus::ExecuteQueuedEvents(); diff --git a/Gems/EMotionFX/Code/Source/Integration/System/SystemComponent.h b/Gems/EMotionFX/Code/Source/Integration/System/SystemComponent.h index 5be9afbbaa..b5b990957c 100644 --- a/Gems/EMotionFX/Code/Source/Integration/System/SystemComponent.h +++ b/Gems/EMotionFX/Code/Source/Integration/System/SystemComponent.h @@ -20,7 +20,6 @@ #include #if defined (EMOTIONFXANIMATION_EDITOR) -# include # include # include # include @@ -117,7 +116,6 @@ namespace EMotionFX AzToolsFramework::AssetBrowser::SourceFileDetails GetSourceFileDetails(const char* fullSourceFileName) override; ////////////////////////////////////////////////////////////////////////////////////// - AZ::Debug::Timer m_updateTimer; AZStd::vector m_propertyHandlers; #endif // EMOTIONFXANIMATION_EDITOR diff --git a/Gems/EMotionFX/Code/Tests/AnimGraphMotionNodeTests.cpp b/Gems/EMotionFX/Code/Tests/AnimGraphMotionNodeTests.cpp index a377495d6c..efff992564 100644 --- a/Gems/EMotionFX/Code/Tests/AnimGraphMotionNodeTests.cpp +++ b/Gems/EMotionFX/Code/Tests/AnimGraphMotionNodeTests.cpp @@ -161,6 +161,8 @@ namespace EMotionFX // Make sure all nodes exist. ASSERT_TRUE(rootNode && pelvisNode && lHandNode && lLoArmNode && lLoLegNode && lAnkleNode && rHandNode && rLoArmNode && rLoLegNode && rAnkleNode) << "All nodes used should exist."; + + m_actor->SetMotionExtractionNodeIndex(m_jackRootIndex); } void SetupMirrorNodes() diff --git a/Gems/EditorPythonBindings/Code/Source/EditorPythonBindingsModule.cpp b/Gems/EditorPythonBindings/Code/Source/EditorPythonBindingsModule.cpp index cef8931722..f168cc5ab2 100644 --- a/Gems/EditorPythonBindings/Code/Source/EditorPythonBindingsModule.cpp +++ b/Gems/EditorPythonBindings/Code/Source/EditorPythonBindingsModule.cpp @@ -9,6 +9,8 @@ #include #include +#include + #include #include #include @@ -18,6 +20,7 @@ namespace EditorPythonBindings { class EditorPythonBindingsModule : public AZ::Module + , public AzToolsFramework::EmbeddedPython::PythonLoader { public: AZ_RTTI(EditorPythonBindingsModule, "{851B9E35-4FD5-49B1-8207-E40D4BBA36CC}", AZ::Module); diff --git a/Gems/EditorPythonBindings/Code/Source/PythonSystemComponent.cpp b/Gems/EditorPythonBindings/Code/Source/PythonSystemComponent.cpp index 876ef19803..fe9156013f 100644 --- a/Gems/EditorPythonBindings/Code/Source/PythonSystemComponent.cpp +++ b/Gems/EditorPythonBindings/Code/Source/PythonSystemComponent.cpp @@ -597,11 +597,10 @@ namespace EditorPythonBindings { AZStd::unordered_set pyPackageSites(pythonPathStack.begin(), pythonPathStack.end()); - const char* engineRoot = nullptr; - AzFramework::ApplicationRequests::Bus::BroadcastResult(engineRoot, &AzFramework::ApplicationRequests::GetEngineRoot); + AZ::IO::FixedMaxPath engineRoot = AZ::Utils::GetEnginePath(); // set PYTHON_HOME - AZStd::string pyBasePath = Platform::GetPythonHomePath(PY_PACKAGE, engineRoot); + AZStd::string pyBasePath = Platform::GetPythonHomePath(PY_PACKAGE, engineRoot.c_str()); if (!AZ::IO::SystemFile::Exists(pyBasePath.c_str())) { AZ_Warning("python", false, "Python home path must exist! path:%s", pyBasePath.c_str()); diff --git a/Gems/EditorPythonBindings/Code/Tests/PythonTestingUtility.h b/Gems/EditorPythonBindings/Code/Tests/PythonTestingUtility.h index 143863b4c8..e2b3d1eadd 100644 --- a/Gems/EditorPythonBindings/Code/Tests/PythonTestingUtility.h +++ b/Gems/EditorPythonBindings/Code/Tests/PythonTestingUtility.h @@ -135,10 +135,6 @@ namespace UnitTest void NormalizePath(AZStd::string& ) override {} void NormalizePathKeepCase(AZStd::string& ) override {} void CalculateBranchTokenForEngineRoot(AZStd::string& ) const override {} - // Gets the engine root path for testing - const char* GetEngineRoot() const override { return m_engineRoot.c_str(); } - // Retrieves the app root path for testing - const char* GetAppRoot() const override { return m_engineRoot.c_str(); } AZ::ComponentApplication m_app; AZStd::unique_ptr m_fileIOHelper; diff --git a/Gems/FastNoise/Code/Tests/FastNoiseTest.cpp b/Gems/FastNoise/Code/Tests/FastNoiseTest.cpp index 4e06b832e1..3fb60cdaf6 100644 --- a/Gems/FastNoise/Code/Tests/FastNoiseTest.cpp +++ b/Gems/FastNoise/Code/Tests/FastNoiseTest.cpp @@ -7,7 +7,6 @@ */ #include -#include #include #include #include @@ -106,7 +105,6 @@ struct MockGlobalEnvironment { MockGlobalEnvironment() { - m_stubEnv.pTimer = &m_stubTimer; m_stubEnv.pCryPak = &m_stubPak; m_stubEnv.pConsole = &m_stubConsole; m_stubEnv.pSystem = &m_stubSystem; @@ -120,7 +118,6 @@ struct MockGlobalEnvironment private: SSystemGlobalEnvironment m_stubEnv; - testing::NiceMock m_stubTimer; testing::NiceMock m_stubPak; testing::NiceMock m_stubConsole; testing::NiceMock m_stubSystem; diff --git a/Gems/GameStateSamples/Assets/UI/Canvases/DefaultMainMenuScreen.uicanvas b/Gems/GameStateSamples/Assets/UI/Canvases/DefaultMainMenuScreen.uicanvas index 2a0d6d476a..d87baa8aa2 100644 --- a/Gems/GameStateSamples/Assets/UI/Canvases/DefaultMainMenuScreen.uicanvas +++ b/Gems/GameStateSamples/Assets/UI/Canvases/DefaultMainMenuScreen.uicanvas @@ -753,7 +753,7 @@ - + @@ -983,7 +983,7 @@ - + diff --git a/Gems/Gestures/Code/Include/Gestures/GestureRecognizerClickOrTap.h b/Gems/Gestures/Code/Include/Gestures/GestureRecognizerClickOrTap.h index 65f4298c38..920bac6516 100644 --- a/Gems/Gestures/Code/Include/Gestures/GestureRecognizerClickOrTap.h +++ b/Gems/Gestures/Code/Include/Gestures/GestureRecognizerClickOrTap.h @@ -10,6 +10,7 @@ #include "IGestureRecognizer.h" #include +#include //////////////////////////////////////////////////////////////////////////////////////////////////// namespace Gestures @@ -83,7 +84,7 @@ namespace Gestures Config m_config; - int64 m_timeOfLastEvent; + AZ::TimeMs m_timeOfLastEvent; ScreenPosition m_positionOfFirstEvent; ScreenPosition m_positionOfLastEvent; diff --git a/Gems/Gestures/Code/Include/Gestures/GestureRecognizerClickOrTap.inl b/Gems/Gestures/Code/Include/Gestures/GestureRecognizerClickOrTap.inl index b14ef18994..8a079d7953 100644 --- a/Gems/Gestures/Code/Include/Gestures/GestureRecognizerClickOrTap.inl +++ b/Gems/Gestures/Code/Include/Gestures/GestureRecognizerClickOrTap.inl @@ -8,9 +8,8 @@ #include #include +#include #include -#include -#include //////////////////////////////////////////////////////////////////////////////////////////////////// inline void Gestures::RecognizerClickOrTap::Config::Reflect(AZ::ReflectContext* context) @@ -57,7 +56,7 @@ inline void Gestures::RecognizerClickOrTap::Config::Reflect(AZ::ReflectContext* //////////////////////////////////////////////////////////////////////////////////////////////////// inline Gestures::RecognizerClickOrTap::RecognizerClickOrTap(const Config& config) : m_config(config) - , m_timeOfLastEvent(0) + , m_timeOfLastEvent(AZ::Time::ZeroTimeMs) , m_positionOfFirstEvent() , m_positionOfLastEvent() , m_currentCount(0) @@ -77,13 +76,12 @@ inline bool Gestures::RecognizerClickOrTap::OnPressedEvent(const AZ::Vector2& sc { return false; } - - const CTimeValue currentTime = (gEnv && gEnv->pTimer) ? gEnv->pTimer->GetFrameStartTime() : CTimeValue(); + const AZ::TimeMs currentTime = AZ::GetRealElapsedTimeMs(); switch (m_currentState) { case State::Idle: { - m_timeOfLastEvent = currentTime.GetValue(); + m_timeOfLastEvent = currentTime; m_positionOfFirstEvent = screenPosition; m_positionOfLastEvent = screenPosition; m_currentCount = 0; @@ -92,7 +90,7 @@ inline bool Gestures::RecognizerClickOrTap::OnPressedEvent(const AZ::Vector2& sc break; case State::Released: { - if ((currentTime.GetDifferenceInSeconds(m_timeOfLastEvent) > m_config.maxSecondsBetweenClicksOrTaps) || + if ((AZ::TimeMsToSeconds(currentTime - m_timeOfLastEvent) > m_config.maxSecondsBetweenClicksOrTaps) || (screenPosition.GetDistance(m_positionOfFirstEvent) > m_config.maxPixelsBetweenClicksOrTaps)) { // Treat this as the start of a new tap sequence. @@ -100,7 +98,7 @@ inline bool Gestures::RecognizerClickOrTap::OnPressedEvent(const AZ::Vector2& sc m_positionOfFirstEvent = screenPosition; } - m_timeOfLastEvent = currentTime.GetValue(); + m_timeOfLastEvent = currentTime; m_positionOfLastEvent = screenPosition; m_currentState = State::Pressed; } @@ -129,8 +127,8 @@ inline bool Gestures::RecognizerClickOrTap::OnDownEvent(const AZ::Vector2& scree { case State::Pressed: { - const CTimeValue currentTime = (gEnv && gEnv->pTimer) ? gEnv->pTimer->GetFrameStartTime() : CTimeValue(); - if ((currentTime.GetDifferenceInSeconds(m_timeOfLastEvent) > m_config.maxSecondsHeld) || + const AZ::TimeMs currentTime = AZ::GetRealElapsedTimeMs(); + if ((AZ::TimeMsToSeconds(currentTime - m_timeOfLastEvent) > m_config.maxSecondsHeld) || (screenPosition.GetDistance(m_positionOfLastEvent) > m_config.maxPixelsMoved)) { // Tap recognition failed. @@ -168,8 +166,8 @@ inline bool Gestures::RecognizerClickOrTap::OnReleasedEvent(const AZ::Vector2& s { case State::Pressed: { - const CTimeValue currentTime = (gEnv && gEnv->pTimer) ? gEnv->pTimer->GetFrameStartTime() : CTimeValue(); - if ((currentTime.GetDifferenceInSeconds(m_timeOfLastEvent) > m_config.maxSecondsHeld) || + const AZ::TimeMs currentTime = AZ::GetRealElapsedTimeMs(); + if ((AZ::TimeMsToSeconds(currentTime - m_timeOfLastEvent) > m_config.maxSecondsHeld) || (screenPosition.GetDistance(m_positionOfLastEvent) > m_config.maxPixelsMoved)) { // Tap recognition failed. @@ -179,7 +177,7 @@ inline bool Gestures::RecognizerClickOrTap::OnReleasedEvent(const AZ::Vector2& s else if (++m_currentCount >= m_config.minClicksOrTaps) { // Tap recognition succeeded. - m_timeOfLastEvent = currentTime.GetValue(); + m_timeOfLastEvent = currentTime; m_positionOfLastEvent = screenPosition; OnDiscreteGestureRecognized(); @@ -190,7 +188,7 @@ inline bool Gestures::RecognizerClickOrTap::OnReleasedEvent(const AZ::Vector2& s else { // More taps are needed. - m_timeOfLastEvent = currentTime.GetValue(); + m_timeOfLastEvent = currentTime; m_positionOfLastEvent = screenPosition; m_currentState = State::Released; } diff --git a/Gems/Gestures/Code/Include/Gestures/GestureRecognizerDrag.h b/Gems/Gestures/Code/Include/Gestures/GestureRecognizerDrag.h index 97d76b1ceb..91c045b37f 100644 --- a/Gems/Gestures/Code/Include/Gestures/GestureRecognizerDrag.h +++ b/Gems/Gestures/Code/Include/Gestures/GestureRecognizerDrag.h @@ -10,6 +10,7 @@ #include "IGestureRecognizer.h" #include +#include //////////////////////////////////////////////////////////////////////////////////////////////////// namespace Gestures @@ -75,7 +76,7 @@ namespace Gestures Config m_config; - int64 m_startTime; + AZ::TimeMs m_startTime; ScreenPosition m_startPosition; ScreenPosition m_currentPosition; diff --git a/Gems/Gestures/Code/Include/Gestures/GestureRecognizerDrag.inl b/Gems/Gestures/Code/Include/Gestures/GestureRecognizerDrag.inl index 0c83893c9d..a0d0afe6f4 100644 --- a/Gems/Gestures/Code/Include/Gestures/GestureRecognizerDrag.inl +++ b/Gems/Gestures/Code/Include/Gestures/GestureRecognizerDrag.inl @@ -8,7 +8,6 @@ #include #include -#include #include //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -44,7 +43,7 @@ inline void Gestures::RecognizerDrag::Config::Reflect(AZ::ReflectContext* contex //////////////////////////////////////////////////////////////////////////////////////////////////// inline Gestures::RecognizerDrag::RecognizerDrag(const Config& config) : m_config(config) - , m_startTime(0) + , m_startTime(AZ::Time::ZeroTimeMs) , m_startPosition() , m_currentPosition() , m_currentState(State::Idle) @@ -68,7 +67,7 @@ inline bool Gestures::RecognizerDrag::OnPressedEvent(const AZ::Vector2& screenPo { case State::Idle: { - m_startTime = (gEnv && gEnv->pTimer) ? gEnv->pTimer->GetFrameStartTime().GetValue() : 0; + m_startTime = AZ::GetRealElapsedTimeMs(); m_startPosition = screenPosition; m_currentPosition = screenPosition; m_currentState = State::Pressed; @@ -101,11 +100,11 @@ inline bool Gestures::RecognizerDrag::OnDownEvent(const AZ::Vector2& screenPosit { case State::Pressed: { - const CTimeValue currentTime = (gEnv && gEnv->pTimer) ? gEnv->pTimer->GetFrameStartTime() : CTimeValue(); - if ((currentTime.GetDifferenceInSeconds(m_startTime) >= m_config.minSecondsHeld) && + const AZ::TimeMs currentTime = AZ::GetRealElapsedTimeMs(); + if ((AZ::TimeMsToSeconds(currentTime - m_startTime) >= m_config.minSecondsHeld) && (GetDistance() >= m_config.minPixelsMoved)) { - m_startTime = currentTime.GetValue(); + m_startTime = currentTime; m_startPosition = m_currentPosition; OnContinuousGestureInitiated(); m_currentState = State::Dragging; diff --git a/Gems/Gestures/Code/Include/Gestures/GestureRecognizerHold.h b/Gems/Gestures/Code/Include/Gestures/GestureRecognizerHold.h index 11bd56ff4d..a2c4a55166 100644 --- a/Gems/Gestures/Code/Include/Gestures/GestureRecognizerHold.h +++ b/Gems/Gestures/Code/Include/Gestures/GestureRecognizerHold.h @@ -10,8 +10,8 @@ #include "IGestureRecognizer.h" #include -#include #include +#include //////////////////////////////////////////////////////////////////////////////////////////////////// namespace Gestures @@ -64,7 +64,7 @@ namespace Gestures AZ::Vector2 GetStartPosition() const { return m_startPosition; } AZ::Vector2 GetCurrentPosition() const { return m_currentPosition; } - float GetDuration() const { return (gEnv && gEnv->pTimer) ? gEnv->pTimer->GetFrameStartTime().GetDifferenceInSeconds(m_startTime) : 0.0f; } + float GetDuration() const { return AZ::TimeUsToSeconds(AZ::GetLastSimulationTickTime() - m_startTime); } private: enum class State @@ -76,7 +76,7 @@ namespace Gestures Config m_config; - int64 m_startTime; + AZ::TimeUs m_startTime; ScreenPosition m_startPosition; ScreenPosition m_currentPosition; diff --git a/Gems/Gestures/Code/Include/Gestures/GestureRecognizerHold.inl b/Gems/Gestures/Code/Include/Gestures/GestureRecognizerHold.inl index 6af8a10890..75578edca1 100644 --- a/Gems/Gestures/Code/Include/Gestures/GestureRecognizerHold.inl +++ b/Gems/Gestures/Code/Include/Gestures/GestureRecognizerHold.inl @@ -8,7 +8,6 @@ #include #include -#include #include //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -44,7 +43,7 @@ inline void Gestures::RecognizerHold::Config::Reflect(AZ::ReflectContext* contex //////////////////////////////////////////////////////////////////////////////////////////////////// inline Gestures::RecognizerHold::RecognizerHold(const Config& config) : m_config(config) - , m_startTime(0) + , m_startTime(AZ::Time::ZeroTimeUs) , m_startPosition() , m_currentPosition() , m_currentState(State::Idle) @@ -68,7 +67,7 @@ inline bool Gestures::RecognizerHold::OnPressedEvent(const AZ::Vector2& screenPo { case State::Idle: { - m_startTime = (gEnv && gEnv->pTimer) ? gEnv->pTimer->GetFrameStartTime().GetValue() : 0; + m_startTime = AZ::GetLastSimulationTickTime(); m_startPosition = screenPosition; m_currentPosition = screenPosition; m_currentState = State::Pressed; @@ -101,13 +100,13 @@ inline bool Gestures::RecognizerHold::OnDownEvent(const AZ::Vector2& screenPosit { case State::Pressed: { - const CTimeValue currentTime = (gEnv && gEnv->pTimer) ? gEnv->pTimer->GetFrameStartTime() : CTimeValue(); if (screenPosition.GetDistance(m_startPosition) > m_config.maxPixelsMoved) { // Hold recognition failed. m_currentState = State::Idle; } - else if (currentTime.GetDifferenceInSeconds(m_startTime) >= m_config.minSecondsHeld) + else if (const AZ::TimeUs currentTime = AZ::GetLastSimulationTickTime(); + AZ::TimeUsToSeconds(currentTime - m_startTime) >= m_config.minSecondsHeld) { // Hold recognition succeeded. OnContinuousGestureInitiated(); diff --git a/Gems/Gestures/Code/Include/Gestures/GestureRecognizerPinch.h b/Gems/Gestures/Code/Include/Gestures/GestureRecognizerPinch.h index c5fa773339..8d5cd76e7d 100644 --- a/Gems/Gestures/Code/Include/Gestures/GestureRecognizerPinch.h +++ b/Gems/Gestures/Code/Include/Gestures/GestureRecognizerPinch.h @@ -10,6 +10,7 @@ #include "IGestureRecognizer.h" #include +#include //////////////////////////////////////////////////////////////////////////////////////////////////// namespace Gestures @@ -90,7 +91,7 @@ namespace Gestures ScreenPosition m_startPositions[2]; ScreenPosition m_currentPositions[2]; - int64_t m_lastUpdateTimes[2]; + AZ::TimeMs m_lastUpdateTimes[2]; State m_currentState; }; diff --git a/Gems/Gestures/Code/Include/Gestures/GestureRecognizerPinch.inl b/Gems/Gestures/Code/Include/Gestures/GestureRecognizerPinch.inl index 642d781c35..70231becb1 100644 --- a/Gems/Gestures/Code/Include/Gestures/GestureRecognizerPinch.inl +++ b/Gems/Gestures/Code/Include/Gestures/GestureRecognizerPinch.inl @@ -8,7 +8,6 @@ #include #include -#include #include //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -42,8 +41,8 @@ inline Gestures::RecognizerPinch::RecognizerPinch(const Config& config) : m_config(config) , m_currentState(State::Idle) { - m_lastUpdateTimes[0] = 0; - m_lastUpdateTimes[1] = 0; + m_lastUpdateTimes[0] = AZ::Time::ZeroTimeMs; + m_lastUpdateTimes[1] = AZ::Time::ZeroTimeMs; } //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -112,7 +111,7 @@ inline bool Gestures::RecognizerPinch::OnDownEvent(const AZ::Vector2& screenPosi } m_currentPositions[pointerIndex] = screenPosition; - m_lastUpdateTimes[pointerIndex] = (gEnv && gEnv->pTimer) ? gEnv->pTimer->GetFrameStartTime().GetValue() : 0; + m_lastUpdateTimes[pointerIndex] = AZ::GetRealElapsedTimeMs(); if (m_lastUpdateTimes[0] != m_lastUpdateTimes[1]) { // We need to wait until both touches have been updated this frame. diff --git a/Gems/Gestures/Code/Include/Gestures/GestureRecognizerRotate.h b/Gems/Gestures/Code/Include/Gestures/GestureRecognizerRotate.h index b2d31e3d4f..a07aad7d6a 100644 --- a/Gems/Gestures/Code/Include/Gestures/GestureRecognizerRotate.h +++ b/Gems/Gestures/Code/Include/Gestures/GestureRecognizerRotate.h @@ -10,6 +10,7 @@ #include "IGestureRecognizer.h" #include +#include //////////////////////////////////////////////////////////////////////////////////////////////////// namespace Gestures @@ -86,7 +87,7 @@ namespace Gestures ScreenPosition m_startPositions[2]; ScreenPosition m_currentPositions[2]; - int64_t m_lastUpdateTimes[2]; + AZ::TimeMs m_lastUpdateTimes[2]; State m_currentState; }; diff --git a/Gems/Gestures/Code/Include/Gestures/GestureRecognizerRotate.inl b/Gems/Gestures/Code/Include/Gestures/GestureRecognizerRotate.inl index 2ae504e309..894a2dd2e8 100644 --- a/Gems/Gestures/Code/Include/Gestures/GestureRecognizerRotate.inl +++ b/Gems/Gestures/Code/Include/Gestures/GestureRecognizerRotate.inl @@ -9,7 +9,6 @@ #include #include #include -#include //////////////////////////////////////////////////////////////////////////////////////////////////// inline void Gestures::RecognizerRotate::Config::Reflect(AZ::ReflectContext* context) @@ -42,8 +41,8 @@ inline Gestures::RecognizerRotate::RecognizerRotate(const Config& config) : m_config(config) , m_currentState(State::Idle) { - m_lastUpdateTimes[0] = 0; - m_lastUpdateTimes[1] = 0; + m_lastUpdateTimes[0] = AZ::Time::ZeroTimeMs; + m_lastUpdateTimes[1] = AZ::Time::ZeroTimeMs; } //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -101,7 +100,7 @@ inline bool Gestures::RecognizerRotate::OnDownEvent(const AZ::Vector2& screenPos } m_currentPositions[pointerIndex] = screenPosition; - m_lastUpdateTimes[pointerIndex] = (gEnv && gEnv->pTimer) ? gEnv->pTimer->GetFrameStartTime().GetValue() : 0; + m_lastUpdateTimes[pointerIndex] = AZ::GetRealElapsedTimeMs(); if (m_lastUpdateTimes[0] != m_lastUpdateTimes[1]) { // We need to wait until both touches have been updated this frame. diff --git a/Gems/Gestures/Code/Include/Gestures/GestureRecognizerSwipe.h b/Gems/Gestures/Code/Include/Gestures/GestureRecognizerSwipe.h index bf0181e2b9..ed63991b3a 100644 --- a/Gems/Gestures/Code/Include/Gestures/GestureRecognizerSwipe.h +++ b/Gems/Gestures/Code/Include/Gestures/GestureRecognizerSwipe.h @@ -8,8 +8,8 @@ #pragma once #include "IGestureRecognizer.h" -#include #include +#include //////////////////////////////////////////////////////////////////////////////////////////////////// namespace Gestures @@ -66,7 +66,7 @@ namespace Gestures AZ::Vector2 GetDirection() const { return GetDelta().GetNormalized(); } float GetDistance() const { return GetEndPosition().GetDistance(GetStartPosition()); } - float GetDuration() const { return CTimeValue(m_endTime).GetDifferenceInSeconds(m_startTime); } + float GetDuration() const { return AZ::TimeMsToSeconds(m_endTime - m_startTime); } float GetVelocity() const { return GetDistance() / GetDuration(); } private: @@ -81,8 +81,8 @@ namespace Gestures ScreenPosition m_startPosition; ScreenPosition m_endPosition; - int64 m_startTime; - int64 m_endTime; + AZ::TimeMs m_startTime; + AZ::TimeMs m_endTime; State m_currentState; }; diff --git a/Gems/Gestures/Code/Include/Gestures/GestureRecognizerSwipe.inl b/Gems/Gestures/Code/Include/Gestures/GestureRecognizerSwipe.inl index 5f879ce423..072cebcbb5 100644 --- a/Gems/Gestures/Code/Include/Gestures/GestureRecognizerSwipe.inl +++ b/Gems/Gestures/Code/Include/Gestures/GestureRecognizerSwipe.inl @@ -45,8 +45,8 @@ inline Gestures::RecognizerSwipe::RecognizerSwipe(const Config& config) : m_config(config) , m_startPosition() , m_endPosition() - , m_startTime(0) - , m_endTime(0) + , m_startTime(AZ::Time::ZeroTimeMs) + , m_endTime(AZ::Time::ZeroTimeMs) , m_currentState(State::Idle) { } @@ -68,7 +68,7 @@ inline bool Gestures::RecognizerSwipe::OnPressedEvent(const AZ::Vector2& screenP { case State::Idle: { - m_startTime = (gEnv && gEnv->pTimer) ? gEnv->pTimer->GetFrameStartTime().GetValue() : 0; + m_startTime = AZ::GetRealElapsedTimeMs(); m_startPosition = screenPosition; m_endPosition = screenPosition; m_currentState = State::Pressed; @@ -98,8 +98,8 @@ inline bool Gestures::RecognizerSwipe::OnDownEvent([[maybe_unused]] const AZ::Ve { case State::Pressed: { - const CTimeValue currentTime = (gEnv && gEnv->pTimer) ? gEnv->pTimer->GetFrameStartTime() : CTimeValue(); - if (currentTime.GetDifferenceInSeconds(m_startTime) > m_config.maxSecondsHeld) + const AZ::TimeMs currentTime = AZ::GetRealElapsedTimeMs(); + if (AZ::TimeMsToSeconds(currentTime - m_startTime) > m_config.maxSecondsHeld) { // Swipe recognition failed because we took too long. m_currentState = State::Idle; @@ -134,12 +134,12 @@ inline bool Gestures::RecognizerSwipe::OnReleasedEvent(const AZ::Vector2& screen { case State::Pressed: { - const CTimeValue currentTime = (gEnv && gEnv->pTimer) ? gEnv->pTimer->GetFrameStartTime() : CTimeValue(); - if ((currentTime.GetDifferenceInSeconds(m_startTime) <= m_config.maxSecondsHeld) && + const AZ::TimeMs currentTime = AZ::GetRealElapsedTimeMs(); + if ((AZ::TimeMsToSeconds(currentTime - m_startTime) <= m_config.maxSecondsHeld) && (screenPosition.GetDistance(m_startPosition) >= m_config.minPixelsMoved)) { // Swipe recognition succeeded. - m_endTime = currentTime.GetValue(); + m_endTime = currentTime; m_endPosition = screenPosition; OnDiscreteGestureRecognized(); m_currentState = State::Idle; diff --git a/Gems/Gestures/Code/Tests/BaseGestureTest.h b/Gems/Gestures/Code/Tests/BaseGestureTest.h index b0897e258a..56cc4b6777 100644 --- a/Gems/Gestures/Code/Tests/BaseGestureTest.h +++ b/Gems/Gestures/Code/Tests/BaseGestureTest.h @@ -6,13 +6,25 @@ * */ #pragma once -#include -#include -#include #include +#include +#include +#include -class BaseGestureTest - : public ::testing::Test +namespace GesturesTests +{ + struct StubTimer : public AZ::StubTimeSystem + { + AZ::TimeMs GetRealElapsedTimeMs() const override + { + return m_realElapsedTime; + } + + AZ::TimeMs m_realElapsedTime = AZ::Time::ZeroTimeMs; + }; +} // namespace GesturesTests + +class BaseGestureTest : public ::testing::Test { public: BaseGestureTest() @@ -24,39 +36,30 @@ public: { // global environment stubs m_env = new(AZ_OS_MALLOC(sizeof(SSystemGlobalEnvironment), alignof(SSystemGlobalEnvironment))) SSystemGlobalEnvironment(); - m_stubTimer = new StubTimer(1.0f / 30.0f); gEnv = m_env; - gEnv->pTimer = m_stubTimer; - + m_stubTimer = new GesturesTests::StubTimer(); // simulated position m_pos = AZ::Vector2(0.0f, 0.0f); } void TearDown() override { - gEnv->pTimer = nullptr; gEnv = nullptr; - if (m_stubTimer) - { - delete m_stubTimer; - m_stubTimer = nullptr; - } if (m_env) { m_env->~SSystemGlobalEnvironment(); AZ_OS_FREE(m_env); m_env = nullptr; } + delete m_stubTimer; } - protected: - // time manipulation void SetTime(float sec) { - m_stubTimer->SetTime(sec); + m_stubTimer->m_realElapsedTime = AZ::SecondsToTimeMs(sec); } // simple position caching interface @@ -97,9 +100,7 @@ protected: } private: - SSystemGlobalEnvironment* m_env; - StubTimer* m_stubTimer; + SSystemGlobalEnvironment* m_env = nullptr; + GesturesTests::StubTimer* m_stubTimer = nullptr; AZ::Vector2 m_pos; }; - - diff --git a/Gems/Gestures/Code/Tests/GestureRecognizerClickOrTapTests.cpp b/Gems/Gestures/Code/Tests/GestureRecognizerClickOrTapTests.cpp index 72fca0498d..9337ae87ed 100644 --- a/Gems/Gestures/Code/Tests/GestureRecognizerClickOrTapTests.cpp +++ b/Gems/Gestures/Code/Tests/GestureRecognizerClickOrTapTests.cpp @@ -7,7 +7,6 @@ */ #include -#include #include #include "BaseGestureTest.h" diff --git a/Gems/Gestures/Code/Tests/GestureRecognizerPinchTests.cpp b/Gems/Gestures/Code/Tests/GestureRecognizerPinchTests.cpp index bb7ac4a75a..3d39a888b5 100644 --- a/Gems/Gestures/Code/Tests/GestureRecognizerPinchTests.cpp +++ b/Gems/Gestures/Code/Tests/GestureRecognizerPinchTests.cpp @@ -7,7 +7,6 @@ */ #include -#include #include #include "BaseGestureTest.h" diff --git a/Gems/GraphCanvas/Code/Source/Components/Nodes/General/GeneralNodeTitleComponent.cpp b/Gems/GraphCanvas/Code/Source/Components/Nodes/General/GeneralNodeTitleComponent.cpp index 3ee00ddff9..dc512be8f1 100644 --- a/Gems/GraphCanvas/Code/Source/Components/Nodes/General/GeneralNodeTitleComponent.cpp +++ b/Gems/GraphCanvas/Code/Source/Components/Nodes/General/GeneralNodeTitleComponent.cpp @@ -91,17 +91,19 @@ namespace GraphCanvas } - void GeneralNodeTitleComponent::SetTitle(const AZStd::string& title) + void GeneralNodeTitleComponent::SetDetails(const AZStd::string& title, const AZStd::string& subtitle) { - m_title.SetFallback(title); + m_title = title; + m_subTitle = subtitle; if (m_generalNodeTitleWidget) { - m_generalNodeTitleWidget->SetTitle(title); + m_generalNodeTitleWidget->SetDetails(title, subtitle); } + } - void GeneralNodeTitleComponent::SetTranslationKeyedTitle(const TranslationKeyedString& title) + void GeneralNodeTitleComponent::SetTitle(const AZStd::string& title) { m_title = title; @@ -113,20 +115,10 @@ namespace GraphCanvas AZStd::string GeneralNodeTitleComponent::GetTitle() const { - return m_title.GetDisplayString(); + return m_title; } void GeneralNodeTitleComponent::SetSubTitle(const AZStd::string& subtitle) - { - m_subTitle.SetFallback(subtitle); - - if (m_generalNodeTitleWidget) - { - m_generalNodeTitleWidget->SetSubTitle(subtitle); - } - } - - void GeneralNodeTitleComponent::SetTranslationKeyedSubTitle(const TranslationKeyedString& subtitle) { m_subTitle = subtitle; @@ -138,7 +130,7 @@ namespace GraphCanvas AZStd::string GeneralNodeTitleComponent::GetSubTitle() const { - return m_subTitle.GetDisplayString(); + return m_subTitle; } QGraphicsWidget* GeneralNodeTitleComponent::GetGraphicsWidget() @@ -270,7 +262,23 @@ namespace GraphCanvas SceneNotificationBus::Handler::BusDisconnect(); } - void GeneralNodeTitleGraphicsWidget::SetTitle(const TranslationKeyedString& title) + void GeneralNodeTitleGraphicsWidget::SetDetails(const AZStd::string& title, const AZStd::string& subtitle) + { + bool updateLayout = false; + if (m_titleWidget) + { + m_titleWidget->SetLabel(title); + updateLayout = true; + } + + if (m_subTitleWidget) + { + m_subTitleWidget->SetLabel(subtitle); + updateLayout = true; + } + } + + void GeneralNodeTitleGraphicsWidget::SetTitle(const AZStd::string& title) { if (m_titleWidget) { @@ -279,7 +287,7 @@ namespace GraphCanvas } } - void GeneralNodeTitleGraphicsWidget::SetSubTitle(const TranslationKeyedString& subtitle) + void GeneralNodeTitleGraphicsWidget::SetSubTitle(const AZStd::string& subtitle) { if (m_subTitleWidget) { diff --git a/Gems/GraphCanvas/Code/Source/Components/Nodes/General/GeneralNodeTitleComponent.h b/Gems/GraphCanvas/Code/Source/Components/Nodes/General/GeneralNodeTitleComponent.h index 8fbcbc8930..84963c7997 100644 --- a/Gems/GraphCanvas/Code/Source/Components/Nodes/General/GeneralNodeTitleComponent.h +++ b/Gems/GraphCanvas/Code/Source/Components/Nodes/General/GeneralNodeTitleComponent.h @@ -68,12 +68,11 @@ namespace GraphCanvas //// // NodeTitleRequestBus + void SetDetails(const AZStd::string& title, const AZStd::string& subtitle) override; void SetTitle(const AZStd::string& title) override; - void SetTranslationKeyedTitle(const TranslationKeyedString& title) override; AZStd::string GetTitle() const override; void SetSubTitle(const AZStd::string& subtitle) override; - void SetTranslationKeyedSubTitle(const TranslationKeyedString& subtitle) override; AZStd::string GetSubTitle() const override; QGraphicsWidget* GetGraphicsWidget() override; @@ -96,8 +95,8 @@ namespace GraphCanvas private: GeneralNodeTitleComponent(const GeneralNodeTitleComponent&) = delete; - TranslationKeyedString m_title; - TranslationKeyedString m_subTitle; + AZStd::string m_title; + AZStd::string m_subTitle; AZStd::string m_basePalette; @@ -123,9 +122,10 @@ namespace GraphCanvas void Activate(); void Deactivate(); - - void SetTitle(const TranslationKeyedString& title); - void SetSubTitle(const TranslationKeyedString& subtitle); + + void SetDetails(const AZStd::string& title, const AZStd::string& subtitle); + void SetTitle(const AZStd::string& title); + void SetSubTitle(const AZStd::string& subtitle); void SetPaletteOverride(AZStd::string_view paletteOverride); void SetPaletteOverride(const AZ::Uuid& uuid); diff --git a/Gems/GraphCanvas/Code/Source/Components/Nodes/Group/CollapsedNodeGroupComponent.cpp b/Gems/GraphCanvas/Code/Source/Components/Nodes/Group/CollapsedNodeGroupComponent.cpp index 5b0169cb05..7c58377a38 100644 --- a/Gems/GraphCanvas/Code/Source/Components/Nodes/Group/CollapsedNodeGroupComponent.cpp +++ b/Gems/GraphCanvas/Code/Source/Components/Nodes/Group/CollapsedNodeGroupComponent.cpp @@ -1007,20 +1007,16 @@ namespace GraphCanvas { if (!configuration.m_name.empty()) { - cloneConfiguration->m_name.Clear(); - cloneConfiguration->m_name.SetFallback(configuration.m_name); + cloneConfiguration->m_name = configuration.m_name; } else { AZStd::string nodeTitle; NodeTitleRequestBus::EventResult(nodeTitle, configuration.m_targetEndpoint.GetNodeId(), &NodeTitleRequests::GetTitle); - AZStd::string displayName = AZStd::string::format("%s:%s", nodeTitle.c_str(), cloneConfiguration->m_name.GetDisplayString().c_str()); + AZStd::string displayName = AZStd::string::format("%s:%s", nodeTitle.c_str(), cloneConfiguration->m_name.c_str()); - // Gain some context. Lost the ability to refresh the strings. - // Should be fixable once we get an actual use case for this setup. - cloneConfiguration->m_name.Clear(); - cloneConfiguration->m_name.SetFallback(displayName); + cloneConfiguration->m_name = displayName; } AZ::Entity* slotEntity = nullptr; diff --git a/Gems/GraphCanvas/Code/Source/Components/Nodes/NodeComponent.cpp b/Gems/GraphCanvas/Code/Source/Components/Nodes/NodeComponent.cpp index f7e743c886..6d9cd8b9e8 100644 --- a/Gems/GraphCanvas/Code/Source/Components/Nodes/NodeComponent.cpp +++ b/Gems/GraphCanvas/Code/Source/Components/Nodes/NodeComponent.cpp @@ -315,12 +315,6 @@ namespace GraphCanvas NodeNotificationBus::Event(GetEntityId(), &NodeNotifications::OnTooltipChanged, m_configuration.GetTooltip()); } - void NodeComponent::SetTranslationKeyedTooltip(const TranslationKeyedString& tooltip) - { - m_configuration.SetTooltip(tooltip.GetDisplayString()); - NodeNotificationBus::Event(GetEntityId(), &NodeNotifications::OnTooltipChanged, m_configuration.GetTooltip()); - } - void NodeComponent::AddSlot(const AZ::EntityId& slotId) { AZ_Assert(slotId.IsValid(), "Slot entity (ID: %s) is not valid!", slotId.ToString().data()); diff --git a/Gems/GraphCanvas/Code/Source/Components/Nodes/NodeComponent.h b/Gems/GraphCanvas/Code/Source/Components/Nodes/NodeComponent.h index 4e2052555f..bfec0f63b9 100644 --- a/Gems/GraphCanvas/Code/Source/Components/Nodes/NodeComponent.h +++ b/Gems/GraphCanvas/Code/Source/Components/Nodes/NodeComponent.h @@ -106,7 +106,6 @@ namespace GraphCanvas // NodeRequestBus void SetTooltip(const AZStd::string& tooltip) override; - void SetTranslationKeyedTooltip(const TranslationKeyedString& tooltip) override; const AZStd::string GetTooltip() const override { return m_configuration.GetTooltip(); } void SetShowInOutliner(bool showInOutliner) override { m_configuration.SetShowInOutliner(showInOutliner); } diff --git a/Gems/GraphCanvas/Code/Source/Components/Slots/Data/DataSlotLayoutComponent.cpp b/Gems/GraphCanvas/Code/Source/Components/Slots/Data/DataSlotLayoutComponent.cpp index 78a94296ff..e199562257 100644 --- a/Gems/GraphCanvas/Code/Source/Components/Slots/Data/DataSlotLayoutComponent.cpp +++ b/Gems/GraphCanvas/Code/Source/Components/Slots/Data/DataSlotLayoutComponent.cpp @@ -337,12 +337,9 @@ namespace GraphCanvas { m_connectionType = slotRequests->GetConnectionType(); - TranslationKeyedString slotName = slotRequests->GetTranslationKeyedName(); + m_slotText->SetLabel(slotRequests->GetName()); - m_slotText->SetLabel(slotName); - - TranslationKeyedString toolTip = slotRequests->GetTranslationKeyedTooltip(); - OnTooltipChanged(toolTip); + OnTooltipChanged(slotRequests->GetTooltip()); const SlotConfiguration& configuration = slotRequests->GetSlotConfiguration(); @@ -393,12 +390,12 @@ namespace GraphCanvas AZ::SystemTickBus::Handler::BusConnect(); } - void DataSlotLayout::OnNameChanged(const TranslationKeyedString& name) + void DataSlotLayout::OnNameChanged(const AZStd::string& name) { m_slotText->SetLabel(name); } - void DataSlotLayout::OnTooltipChanged(const TranslationKeyedString& tooltip) + void DataSlotLayout::OnTooltipChanged(const AZStd::string& tooltip) { AZ::Uuid dataType; DataSlotRequestBus::EventResult(dataType, m_owner.GetEntityId(), &DataSlotRequests::GetDataTypeId); @@ -406,7 +403,7 @@ namespace GraphCanvas AZStd::string typeString; GraphModelRequestBus::EventResult(typeString, GetSceneId(), &GraphModelRequests::GetDataTypeString, dataType); - AZStd::string displayText = tooltip.GetDisplayString(); + AZStd::string displayText = tooltip; if (!typeString.empty()) { @@ -486,7 +483,7 @@ namespace GraphCanvas if (!iconPath.empty()) { m_textDecoration = new GraphCanvasLabel(); - m_textDecoration->SetLabel(iconPath, "", ""); + m_textDecoration->SetLabel(iconPath); m_textDecoration->setToolTip(toolTip.c_str()); ApplyTextStyle(m_textDecoration); diff --git a/Gems/GraphCanvas/Code/Source/Components/Slots/Data/DataSlotLayoutComponent.h b/Gems/GraphCanvas/Code/Source/Components/Slots/Data/DataSlotLayoutComponent.h index 61fd6f31db..4099fb1156 100644 --- a/Gems/GraphCanvas/Code/Source/Components/Slots/Data/DataSlotLayoutComponent.h +++ b/Gems/GraphCanvas/Code/Source/Components/Slots/Data/DataSlotLayoutComponent.h @@ -120,8 +120,8 @@ namespace GraphCanvas // SlotNotificationBus void OnRegisteredToNode(const AZ::EntityId& nodeId) override; - void OnNameChanged(const TranslationKeyedString&) override; - void OnTooltipChanged(const TranslationKeyedString&) override; + void OnNameChanged(const AZStd::string&) override; + void OnTooltipChanged(const AZStd::string&) override; //// // StyleNotificationBus diff --git a/Gems/GraphCanvas/Code/Source/Components/Slots/Execution/ExecutionSlotLayoutComponent.cpp b/Gems/GraphCanvas/Code/Source/Components/Slots/Execution/ExecutionSlotLayoutComponent.cpp index 099e99cbe6..ed48c1714f 100644 --- a/Gems/GraphCanvas/Code/Source/Components/Slots/Execution/ExecutionSlotLayoutComponent.cpp +++ b/Gems/GraphCanvas/Code/Source/Components/Slots/Execution/ExecutionSlotLayoutComponent.cpp @@ -58,13 +58,8 @@ namespace GraphCanvas { m_connectionType = slotRequests->GetConnectionType(); - TranslationKeyedString slotName = slotRequests->GetTranslationKeyedName(); - - m_slotText->SetLabel(slotName); - - TranslationKeyedString toolTip = slotRequests->GetTranslationKeyedTooltip(); - - OnTooltipChanged(toolTip); + m_slotText->SetLabel(slotRequests->GetName()); + OnTooltipChanged(slotRequests->GetTooltip()); const SlotConfiguration& configuration = slotRequests->GetSlotConfiguration(); @@ -88,17 +83,15 @@ namespace GraphCanvas OnStyleChanged(); } - void ExecutionSlotLayout::OnNameChanged(const TranslationKeyedString& name) + void ExecutionSlotLayout::OnNameChanged(const AZStd::string& name) { m_slotText->SetLabel(name); } - void ExecutionSlotLayout::OnTooltipChanged(const TranslationKeyedString& tooltip) + void ExecutionSlotLayout::OnTooltipChanged(const AZStd::string& tooltip) { - AZStd::string displayText = tooltip.GetDisplayString(); - - m_slotConnectionPin->setToolTip(displayText.c_str()); - m_slotText->setToolTip(displayText.c_str()); + m_slotConnectionPin->setToolTip(tooltip.c_str()); + m_slotText->setToolTip(tooltip.c_str()); } void ExecutionSlotLayout::OnStyleChanged() @@ -132,7 +125,7 @@ namespace GraphCanvas if (!textDecoration.empty()) { m_textDecoration = new GraphCanvasLabel(); - m_textDecoration->SetLabel(textDecoration, "", ""); + m_textDecoration->SetLabel(textDecoration); m_textDecoration->setToolTip(toolTip.c_str()); ApplyTextStyle(m_textDecoration); diff --git a/Gems/GraphCanvas/Code/Source/Components/Slots/Execution/ExecutionSlotLayoutComponent.h b/Gems/GraphCanvas/Code/Source/Components/Slots/Execution/ExecutionSlotLayoutComponent.h index 5df2b9f68c..f155aa33ee 100644 --- a/Gems/GraphCanvas/Code/Source/Components/Slots/Execution/ExecutionSlotLayoutComponent.h +++ b/Gems/GraphCanvas/Code/Source/Components/Slots/Execution/ExecutionSlotLayoutComponent.h @@ -46,8 +46,8 @@ namespace GraphCanvas // SlotNotificationBus void OnRegisteredToNode(const AZ::EntityId& nodeId) override; - void OnNameChanged(const TranslationKeyedString& name) override; - void OnTooltipChanged(const TranslationKeyedString& tooltip) override; + void OnNameChanged(const AZStd::string& name) override; + void OnTooltipChanged(const AZStd::string& tooltip) override; //// // StyleNotificationBus diff --git a/Gems/GraphCanvas/Code/Source/Components/Slots/Extender/ExtenderSlotLayoutComponent.cpp b/Gems/GraphCanvas/Code/Source/Components/Slots/Extender/ExtenderSlotLayoutComponent.cpp index 54a592bbce..bdaee6772a 100644 --- a/Gems/GraphCanvas/Code/Source/Components/Slots/Extender/ExtenderSlotLayoutComponent.cpp +++ b/Gems/GraphCanvas/Code/Source/Components/Slots/Extender/ExtenderSlotLayoutComponent.cpp @@ -119,13 +119,13 @@ namespace GraphCanvas { SlotRequestBus::EventResult(m_connectionType, m_owner.GetEntityId(), &SlotRequests::GetConnectionType); - TranslationKeyedString slotName; - SlotRequestBus::EventResult(slotName, m_owner.GetEntityId(), &SlotRequests::GetTranslationKeyedName); + AZStd::string slotName; + SlotRequestBus::EventResult(slotName, m_owner.GetEntityId(), &SlotRequests::GetName); m_slotText->SetLabel(slotName); - TranslationKeyedString toolTip; - SlotRequestBus::EventResult(toolTip, m_owner.GetEntityId(), &SlotRequests::GetTranslationKeyedTooltip); + AZStd::string toolTip; + SlotRequestBus::EventResult(toolTip, m_owner.GetEntityId(), &SlotRequests::GetTooltip); OnTooltipChanged(toolTip); @@ -151,17 +151,15 @@ namespace GraphCanvas OnStyleChanged(); } - void ExtenderSlotLayout::OnNameChanged(const TranslationKeyedString& name) + void ExtenderSlotLayout::OnNameChanged(const AZStd::string& name) { m_slotText->SetLabel(name); } - void ExtenderSlotLayout::OnTooltipChanged(const TranslationKeyedString& tooltip) + void ExtenderSlotLayout::OnTooltipChanged(const AZStd::string& tooltip) { - AZStd::string displayText = tooltip.GetDisplayString(); - - m_slotConnectionPin->setToolTip(displayText.c_str()); - m_slotText->setToolTip(displayText.c_str()); + m_slotConnectionPin->setToolTip(tooltip.c_str()); + m_slotText->setToolTip(tooltip.c_str()); } void ExtenderSlotLayout::OnStyleChanged() diff --git a/Gems/GraphCanvas/Code/Source/Components/Slots/Extender/ExtenderSlotLayoutComponent.h b/Gems/GraphCanvas/Code/Source/Components/Slots/Extender/ExtenderSlotLayoutComponent.h index ed477d40cf..e0e54b33ba 100644 --- a/Gems/GraphCanvas/Code/Source/Components/Slots/Extender/ExtenderSlotLayoutComponent.h +++ b/Gems/GraphCanvas/Code/Source/Components/Slots/Extender/ExtenderSlotLayoutComponent.h @@ -48,8 +48,8 @@ namespace GraphCanvas // SlotNotificationBus void OnRegisteredToNode(const AZ::EntityId& nodeId) override; - void OnNameChanged(const TranslationKeyedString& name) override; - void OnTooltipChanged(const TranslationKeyedString& tooltip) override; + void OnNameChanged(const AZStd::string& name) override; + void OnTooltipChanged(const AZStd::string& tooltip) override; //// // StyleNotificationBus diff --git a/Gems/GraphCanvas/Code/Source/Components/Slots/Property/PropertySlotLayoutComponent.cpp b/Gems/GraphCanvas/Code/Source/Components/Slots/Property/PropertySlotLayoutComponent.cpp index 342c1e4dd6..3020464b54 100644 --- a/Gems/GraphCanvas/Code/Source/Components/Slots/Property/PropertySlotLayoutComponent.cpp +++ b/Gems/GraphCanvas/Code/Source/Components/Slots/Property/PropertySlotLayoutComponent.cpp @@ -90,10 +90,10 @@ namespace GraphCanvas TryAndSetupSlot(); } - void PropertySlotLayout::OnTooltipChanged(const TranslationKeyedString& tooltip) + void PropertySlotLayout::OnTooltipChanged(const AZStd::string& tooltip) { - m_slotText->setToolTip(Tools::qStringFromUtf8(tooltip.GetDisplayString())); - m_nodePropertyDisplay->setToolTip(Tools::qStringFromUtf8(tooltip.GetDisplayString())); + m_slotText->setToolTip(Tools::qStringFromUtf8(tooltip)); + m_nodePropertyDisplay->setToolTip(Tools::qStringFromUtf8(tooltip)); } void PropertySlotLayout::OnStyleChanged() diff --git a/Gems/GraphCanvas/Code/Source/Components/Slots/Property/PropertySlotLayoutComponent.h b/Gems/GraphCanvas/Code/Source/Components/Slots/Property/PropertySlotLayoutComponent.h index 0891f51f06..e6439d74c4 100644 --- a/Gems/GraphCanvas/Code/Source/Components/Slots/Property/PropertySlotLayoutComponent.h +++ b/Gems/GraphCanvas/Code/Source/Components/Slots/Property/PropertySlotLayoutComponent.h @@ -49,7 +49,7 @@ namespace GraphCanvas // SlotNotificationBus void OnRegisteredToNode(const AZ::EntityId& nodeId) override; - void OnTooltipChanged(const TranslationKeyedString& tooltip) override; + void OnTooltipChanged(const AZStd::string& tooltip) override; //// // StyleNotificationBus diff --git a/Gems/GraphCanvas/Code/Source/Components/Slots/SlotComponent.cpp b/Gems/GraphCanvas/Code/Source/Components/Slots/SlotComponent.cpp index c4246ac44c..6ee4df0f20 100644 --- a/Gems/GraphCanvas/Code/Source/Components/Slots/SlotComponent.cpp +++ b/Gems/GraphCanvas/Code/Source/Components/Slots/SlotComponent.cpp @@ -91,14 +91,6 @@ namespace GraphCanvas void SlotComponent::Activate() { - SetTranslationKeyedName(m_slotConfiguration.m_name); - - // Default tooltip. - if (m_slotConfiguration.m_tooltip.empty()) - { - SetTranslationKeyedTooltip(m_slotConfiguration.m_name); - } - SlotRequestBus::Handler::BusConnect(GetEntityId()); SceneMemberRequestBus::Handler::BusConnect(GetEntityId()); } @@ -171,24 +163,6 @@ namespace GraphCanvas } void SlotComponent::SetName(const AZStd::string& name) - { - if (name == m_slotConfiguration.m_name.GetDisplayString()) - { - return; - } - - m_slotConfiguration.m_name.SetFallback(name); - - // Default tooltip. - if (m_slotConfiguration.m_tooltip.empty()) - { - m_slotConfiguration.m_tooltip = m_slotConfiguration.m_name; - } - - SlotNotificationBus::Event(GetEntityId(), &SlotNotifications::OnNameChanged, m_slotConfiguration.m_name); - } - - void SlotComponent::SetTranslationKeyedName(const TranslationKeyedString& name) { if (name == m_slotConfiguration.m_name) { @@ -206,25 +180,22 @@ namespace GraphCanvas SlotNotificationBus::Event(GetEntityId(), &SlotNotifications::OnNameChanged, m_slotConfiguration.m_name); } - void SlotComponent::SetTooltip(const AZStd::string& tooltip) + void SlotComponent::SetDetails(const AZStd::string& name, const AZStd::string& tooltip) { - if (tooltip == m_slotConfiguration.m_tooltip.GetDisplayString()) + if (name != m_slotConfiguration.m_name) { - return; + m_slotConfiguration.m_name = name; + SlotNotificationBus::Event(GetEntityId(), &SlotNotifications::OnNameChanged, m_slotConfiguration.m_name); } - m_slotConfiguration.m_tooltip.SetFallback(tooltip); - - // Default tooltip. - if (m_slotConfiguration.m_tooltip.empty()) + if (tooltip != m_slotConfiguration.m_tooltip) { - m_slotConfiguration.m_tooltip = m_slotConfiguration.m_name; + m_slotConfiguration.m_tooltip = tooltip; + SlotNotificationBus::Event(GetEntityId(), &SlotNotifications::OnTooltipChanged, m_slotConfiguration.m_tooltip); } - - SlotNotificationBus::Event(GetEntityId(), &SlotNotifications::OnTooltipChanged, m_slotConfiguration.m_tooltip); } - void SlotComponent::SetTranslationKeyedTooltip(const TranslationKeyedString& tooltip) + void SlotComponent::SetTooltip(const AZStd::string& tooltip) { if (tooltip == m_slotConfiguration.m_tooltip) { @@ -521,8 +492,8 @@ namespace GraphCanvas { slotConfiguration.m_connectionType = GetConnectionType(); - slotConfiguration.m_name = GetTranslationKeyedName(); - slotConfiguration.m_tooltip = GetTranslationKeyedTooltip(); + slotConfiguration.m_name = m_slotConfiguration.m_name; + slotConfiguration.m_tooltip = m_slotConfiguration.m_tooltip; slotConfiguration.m_slotGroup = GetSlotGroup(); } diff --git a/Gems/GraphCanvas/Code/Source/Components/Slots/SlotComponent.h b/Gems/GraphCanvas/Code/Source/Components/Slots/SlotComponent.h index 5afa3fbc14..99442cd51a 100644 --- a/Gems/GraphCanvas/Code/Source/Components/Slots/SlotComponent.h +++ b/Gems/GraphCanvas/Code/Source/Components/Slots/SlotComponent.h @@ -74,18 +74,14 @@ namespace GraphCanvas Endpoint GetEndpoint() const override; - const AZStd::string GetName() const override { return m_slotConfiguration.m_name.GetDisplayString(); } + const AZStd::string GetName() const override { return m_slotConfiguration.m_name; } void SetName(const AZStd::string& name) override; - TranslationKeyedString GetTranslationKeyedName() const override { return m_slotConfiguration.m_name; } - void SetTranslationKeyedName(const TranslationKeyedString&) override; + void SetDetails(const AZStd::string& name, const AZStd::string& tooltip) override; - const AZStd::string GetTooltip() const override { return m_slotConfiguration.m_tooltip.GetDisplayString(); } + const AZStd::string GetTooltip() const override { return m_slotConfiguration.m_tooltip; } void SetTooltip(const AZStd::string& tooltip) override; - TranslationKeyedString GetTranslationKeyedTooltip() const override { return m_slotConfiguration.m_tooltip; } - void SetTranslationKeyedTooltip(const TranslationKeyedString&) override; - void DisplayProposedConnection(const AZ::EntityId& connectionId, const Endpoint& endpoint) override; void RemoveProposedConnection(const AZ::EntityId& connectionId, const Endpoint& endpoint) override; diff --git a/Gems/GraphCanvas/Code/Source/GraphCanvas.cpp b/Gems/GraphCanvas/Code/Source/GraphCanvas.cpp index c5333152a0..f51c2c1272 100644 --- a/Gems/GraphCanvas/Code/Source/GraphCanvas.cpp +++ b/Gems/GraphCanvas/Code/Source/GraphCanvas.cpp @@ -140,7 +140,6 @@ namespace GraphCanvas Styling::DefaultSelector::Reflect(serializeContext); Styling::CompoundSelector::Reflect(serializeContext); Styling::NestedSelector::Reflect(serializeContext); - TranslationKeyedString::Reflect(serializeContext); Styling::Style::Reflect(serializeContext); AssetEditorUserSettings::Reflect(serializeContext); } @@ -218,6 +217,9 @@ namespace GraphCanvas AzToolsFramework::ToolsAssetSystemBus::Broadcast(&AzToolsFramework::ToolsAssetSystemRequests::RegisterSourceAssetType, azrtti_typeid(), TranslationAsset::GetFileFilter()); m_translationAssetWorker.Activate(); + + m_assetHandler = AZStd::make_unique(); + m_assetHandler->Register(); } } @@ -376,8 +378,7 @@ namespace GraphCanvas // Find any TranslationAsset files that may have translation database key/values AZ::Data::AssetCatalogRequests::AssetEnumerationCB collectAssetsCb = [this](const AZ::Data::AssetId assetId, const AZ::Data::AssetInfo& assetInfo) { - const auto assetType = azrtti_typeid(); - if (assetInfo.m_assetType == assetType) + if (AZ::StringFunc::EndsWith(assetInfo.m_relativePath, ".names", false)) { m_translationAssets.push_back(assetId); } @@ -405,7 +406,7 @@ namespace GraphCanvas for (const AZ::Data::AssetId& assetId : m_translationAssets) { AZ::Data::AssetBus::MultiHandler::BusConnect(assetId); - AZ::Data::AssetManager::Instance().GetAsset(assetId, AZ::Data::AssetLoadBehavior::Default); + AZ::Data::AssetManager::Instance().GetAsset(assetId, AZ::Data::AssetLoadBehavior::Default); } } } diff --git a/Gems/GraphCanvas/Code/Source/Translation/TranslationBus.h b/Gems/GraphCanvas/Code/Source/Translation/TranslationBus.h index c135ce1515..95c37b4daa 100644 --- a/Gems/GraphCanvas/Code/Source/Translation/TranslationBus.h +++ b/Gems/GraphCanvas/Code/Source/Translation/TranslationBus.h @@ -10,8 +10,10 @@ #include "TranslationAsset.h" +#include #include + namespace GraphCanvas { namespace Translation @@ -88,10 +90,16 @@ namespace GraphCanvas static AZStd::string Sanitize(const AZStd::string& text) { AZStd::string result = text; + AZ::StringFunc::Replace(result, "*", "x"); + AZ::StringFunc::Replace(result, "(", "_"); + AZ::StringFunc::Replace(result, ")", "_"); + AZ::StringFunc::Replace(result, "{", "_"); + AZ::StringFunc::Replace(result, "}", "_"); AZ::StringFunc::Replace(result, ":", "_"); AZ::StringFunc::Replace(result, "<", "_"); AZ::StringFunc::Replace(result, ",", "_"); AZ::StringFunc::Replace(result, ">", " "); + AZ::StringFunc::Replace(result, "/", ""); AZ::StringFunc::Strip(result, " "); AZ::StringFunc::Path::Normalize(result); return result; @@ -117,32 +125,32 @@ namespace GraphCanvas virtual bool HasKey(const AZStd::string& /*key*/) { return false; } //! Returns the text value for a given key - virtual const char* Get(const AZStd::string& /*key*/) { return nullptr; } + virtual bool Get(const AZStd::string& /*key*/, AZStd::string& /*value*/) { return false; } struct Details { - AZStd::string Name; - AZStd::string Tooltip; - AZStd::string Category; - AZStd::string Subtitle; + AZStd::string m_name; + AZStd::string m_tooltip; + AZStd::string m_category; + AZStd::string m_subtitle; - bool Valid = false; + bool m_valid = false; Details() = default; Details(const Details& rhs) { - Name = rhs.Name; - Tooltip = rhs.Tooltip; - Subtitle = rhs.Subtitle; - Category = rhs.Category; - Valid = rhs.Valid; + m_name = rhs.m_name; + m_tooltip = rhs.m_tooltip; + m_category = rhs.m_category; + m_subtitle = rhs.m_subtitle; + m_valid = rhs.m_valid; } Details(const char* name, const char* tooltip, const char* subtitle, const char* category) - : Name(name), Tooltip(tooltip), Subtitle(subtitle), Category(category) + : m_name(name), m_tooltip(tooltip), m_subtitle(subtitle), m_category(category) { - Valid = !Name.empty(); + m_valid = !m_name.empty(); } }; @@ -150,7 +158,7 @@ namespace GraphCanvas virtual bool Add(const TranslationFormat& /*translationFormat*/) { return false; } //! Get the details associated with a given key (assumes they are within a "details" object) - virtual Details GetDetails(const AZStd::string& /*key*/) { return Details(); } + virtual Details GetDetails(const AZStd::string& /*key*/, const Details& /*fallbackDetails*/) { return Details(); } //! Generates the source JSON assets for all reflected elements virtual void GenerateSourceAssets() {} diff --git a/Gems/GraphCanvas/Code/Source/Translation/TranslationDatabase.cpp b/Gems/GraphCanvas/Code/Source/Translation/TranslationDatabase.cpp index 17c59d17bc..0b5029de63 100644 --- a/Gems/GraphCanvas/Code/Source/Translation/TranslationDatabase.cpp +++ b/Gems/GraphCanvas/Code/Source/Translation/TranslationDatabase.cpp @@ -104,35 +104,49 @@ namespace GraphCanvas return m_database.find(key) != m_database.end(); } - GraphCanvas::TranslationRequests::Details TranslationDatabase::GetDetails(const AZStd::string& key) + GraphCanvas::TranslationRequests::Details TranslationDatabase::GetDetails(const AZStd::string& key, const Details& fallbackDetails) { - const char* name = Get(key + ".name"); - const char* tooltip = Get(key + ".tooltip"); - const char* subtitle = Get(key + ".subtitle"); - const char* category = Get(key + ".category"); - - static bool s_traceMissingItems = true; - if (s_traceMissingItems) + Details details; + if (!Get(key + ".name", details.m_name)) { - AZ_TracePrintf("GraphCanvas", AZStd::string::format("Value (name) not found for key: %s", key.c_str()).c_str()); - AZ_TracePrintf("GraphCanvas", AZStd::string::format("Value (tooltip) not found for key: %s", key.c_str()).c_str()); - AZ_TracePrintf("GraphCanvas", AZStd::string::format("Value (subtitle) not found for key: %s", key.c_str()).c_str()); - AZ_TracePrintf("GraphCanvas", AZStd::string::format("Value (category) not found for key: %s", key.c_str()).c_str()); + details.m_name = fallbackDetails.m_name; } - return Details(name ? name : "", tooltip ? tooltip : "", subtitle ? subtitle : "", category ? category : ""); + if (!Get(key + ".tooltip", details.m_tooltip)) + { + details.m_tooltip = fallbackDetails.m_tooltip; + } + + if (!Get(key + ".subtitle", details.m_subtitle)) + { + details.m_subtitle = fallbackDetails.m_subtitle; + } + + if (!Get(key + ".category", details.m_category)) + { + details.m_category = fallbackDetails.m_category; + } + + return details; } - const char* TranslationDatabase::Get(const AZStd::string& key) + bool TranslationDatabase::Get(const AZStd::string& key, AZStd::string& value) { AZStd::lock_guard lock(m_mutex); if (m_database.find(key) != m_database.end()) { - return m_database[key].c_str(); + value = m_database[key]; + return true; } - return ""; + static bool s_traceMissingItems = false; + if (s_traceMissingItems) + { + AZ_TracePrintf("GraphCanvas", AZStd::string::format("Value not found for key: %s", key.c_str()).c_str()); + } + + return false; } bool TranslationDatabase::Add(const TranslationFormat& format) diff --git a/Gems/GraphCanvas/Code/Source/Translation/TranslationDatabase.h b/Gems/GraphCanvas/Code/Source/Translation/TranslationDatabase.h index f1d20d523f..b70adfa4a5 100644 --- a/Gems/GraphCanvas/Code/Source/Translation/TranslationDatabase.h +++ b/Gems/GraphCanvas/Code/Source/Translation/TranslationDatabase.h @@ -43,9 +43,9 @@ namespace GraphCanvas bool HasKey(const AZStd::string& key) override; - TranslationRequests::Details GetDetails(const AZStd::string& key) override; + TranslationRequests::Details GetDetails(const AZStd::string& key, const Details& value) override; - const char* Get(const AZStd::string& key) override; + bool Get(const AZStd::string& key, AZStd::string& value) override; bool Add(const TranslationFormat& format) override; diff --git a/Gems/GraphCanvas/Code/Source/Translation/TranslationSerializer.cpp b/Gems/GraphCanvas/Code/Source/Translation/TranslationSerializer.cpp index 3875f76d92..bb42f77c49 100644 --- a/Gems/GraphCanvas/Code/Source/Translation/TranslationSerializer.cpp +++ b/Gems/GraphCanvas/Code/Source/Translation/TranslationSerializer.cpp @@ -35,8 +35,10 @@ namespace GraphCanvas } else { + AZStd::string existingValue = translationFormat->m_database[finalKey.c_str()]; + // There is a name collision - AZStd::string error = AZStd::string::format("Unable to store key: %s with value: %s because that key already exists", finalKey.c_str(), it.GetString()); + AZStd::string error = AZStd::string::format("Unable to store key: %s with value: %s because that key already exists with value: %s (proposed: %s)", finalKey.c_str(), it.GetString(), existingValue.c_str(), it.GetString()); AZ_Error("TranslationSerializer", false, error.c_str()); } } diff --git a/Gems/GraphCanvas/Code/Source/Widgets/GraphCanvasLabel.cpp b/Gems/GraphCanvas/Code/Source/Widgets/GraphCanvasLabel.cpp index e76487a4e8..1ff2146717 100644 --- a/Gems/GraphCanvas/Code/Source/Widgets/GraphCanvasLabel.cpp +++ b/Gems/GraphCanvas/Code/Source/Widgets/GraphCanvasLabel.cpp @@ -20,6 +20,7 @@ #include #include #include +#include namespace GraphCanvas { @@ -76,19 +77,11 @@ namespace GraphCanvas m_hasBorderOverride = false; } - void GraphCanvasLabel::SetLabel(const AZStd::string& label, const AZStd::string& translationContext, const AZStd::string& translationKey) + void GraphCanvasLabel::SetLabel(const AZStd::string& value) { - TranslationKeyedString keyedString(label, translationContext, translationKey); - SetLabel(keyedString); - } - - void GraphCanvasLabel::SetLabel(const TranslationKeyedString& value) - { - AZStd::string displayString = value.GetDisplayString(); - - if (m_labelText.compare(QString(displayString.c_str()))) + if (m_labelText.compare(QString(value.c_str()))) { - m_labelText = Tools::qStringFromUtf8(displayString); + m_labelText = Tools::qStringFromUtf8(value); UpdateDisplayText(); RefreshDisplay(); diff --git a/Gems/GraphCanvas/Code/Source/Widgets/GraphCanvasLabel.h b/Gems/GraphCanvas/Code/Source/Widgets/GraphCanvasLabel.h index 0c60857ca4..4e52218721 100644 --- a/Gems/GraphCanvas/Code/Source/Widgets/GraphCanvasLabel.h +++ b/Gems/GraphCanvas/Code/Source/Widgets/GraphCanvasLabel.h @@ -51,9 +51,8 @@ namespace GraphCanvas const QBrush& GetBorderColorOverride() const; void ClearBorderColorOverride(); - void SetLabel(const AZStd::string& label, const AZStd::string& translationContext = AZStd::string(), const AZStd::string& translationKey = AZStd::string()); - void SetLabel(const TranslationKeyedString& value); - AZStd::string GetLabel() const { return AZStd::string(m_labelText.toStdString().c_str()); } + void SetLabel(const AZStd::string& value); + AZStd::string GetLabel() const { return AZStd::string(m_labelText.toUtf8().data()); } void SetSceneStyle(const AZ::EntityId& sceneId, const char* style); void SetStyle(const AZ::EntityId& entityId, const char* styleElement); diff --git a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Components/Nodes/NodeBus.h b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Components/Nodes/NodeBus.h index 46f34ea9f8..513400b470 100644 --- a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Components/Nodes/NodeBus.h +++ b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Components/Nodes/NodeBus.h @@ -40,9 +40,6 @@ namespace GraphCanvas //! Set the tooltip for the node, which will display when the mouse is over the node but not a child item. virtual void SetTooltip(const AZStd::string&) = 0; - //! Set the translation keyed tooltip for the node, which will display when the mouse is over the node but not a child item. - virtual void SetTranslationKeyedTooltip(const TranslationKeyedString&) = 0; - //! Get the tooltip that is currently set for the node. virtual const AZStd::string GetTooltip() const = 0; diff --git a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Components/Nodes/NodeTitleBus.h b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Components/Nodes/NodeTitleBus.h index 8d298c56d6..88846739d0 100644 --- a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Components/Nodes/NodeTitleBus.h +++ b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Components/Nodes/NodeTitleBus.h @@ -38,19 +38,18 @@ namespace GraphCanvas virtual QGraphicsWidget* GetGraphicsWidget() = 0; + //! Set the node's details, title, subtitle, tooltip + virtual void SetDetails(const AZStd::string& title, const AZStd::string& subtitle) = 0; + //! Set the Node's title. virtual void SetTitle(const AZStd::string& value) = 0; - virtual void SetTranslationKeyedTitle(const TranslationKeyedString& value) = 0; - //! Get the Node's title. virtual AZStd::string GetTitle() const = 0; //! Set the Node's sub-title. virtual void SetSubTitle(const AZStd::string& value) = 0; - virtual void SetTranslationKeyedSubTitle(const TranslationKeyedString& value) = 0; - //! Get the Node's sub-title. virtual AZStd::string GetSubTitle() const = 0; diff --git a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Components/Slots/SlotBus.h b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Components/Slots/SlotBus.h index e67df2d2b6..a3f8bfb757 100644 --- a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Components/Slots/SlotBus.h +++ b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Components/Slots/SlotBus.h @@ -89,8 +89,9 @@ namespace GraphCanvas ConnectionType m_connectionType = ConnectionType::CT_Invalid; - TranslationKeyedString m_tooltip = TranslationKeyedString(); - TranslationKeyedString m_name = TranslationKeyedString(); + AZStd::string m_tooltip; + AZStd::string m_name; + SlotGroup m_slotGroup = SlotGroups::Invalid; AZStd::string m_textDecoration; @@ -209,22 +210,19 @@ namespace GraphCanvas //! Get the name, or label, of the slot. //! These generally appear as a label against \ref Input or \ref Output slots. virtual const AZStd::string GetName() const = 0; + //! Set the slot's name. virtual void SetName(const AZStd::string&) = 0; - //! Get and set the keys used for slot name translation. - virtual TranslationKeyedString GetTranslationKeyedName() const = 0; - virtual void SetTranslationKeyedName(const TranslationKeyedString&) = 0; + //! Set the slot's name & tooltip. + virtual void SetDetails(const AZStd::string& name, const AZStd::string& tooltip) = 0; //! Get the tooltip for the slot. virtual const AZStd::string GetTooltip() const = 0; + //! Set the tooltip this slot should display. virtual void SetTooltip(const AZStd::string&) = 0; - //! Get and set the keys used for slot tooltip translation. - virtual TranslationKeyedString GetTranslationKeyedTooltip() const = 0; - virtual void SetTranslationKeyedTooltip(const TranslationKeyedString&) = 0; - //! Get the group of the slot virtual SlotGroup GetSlotGroup() const = 0; @@ -370,9 +368,10 @@ namespace GraphCanvas using BusIdType = SlotId; //! When the name of the slot changes, the new name is signaled. - virtual void OnNameChanged(const TranslationKeyedString&) {} + virtual void OnNameChanged(const AZStd::string&) {} + //! When the tooltip of the slot changes, the new tooltip value is emitted. - virtual void OnTooltipChanged(const TranslationKeyedString&) {} + virtual void OnTooltipChanged(const AZStd::string&) {} virtual void OnRegisteredToNode(const AZ::EntityId&) {} diff --git a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Editor/GraphCanvasProfiler.h b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Editor/GraphCanvasProfiler.h index ae55baa681..ab54a125fd 100644 --- a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Editor/GraphCanvasProfiler.h +++ b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Editor/GraphCanvasProfiler.h @@ -10,7 +10,7 @@ #include #define GRAPH_CANVAS_PROFILE_FUNCTION() AZ_PROFILE_FUNCTION(AzToolsFramework); -#define GRAPH_CANVAS_PROFILE_SCOPE(message) AZ_PROFILE_SCOPE(AzToolsFramework, message); +#define GRAPH_CANVAS_PROFILE_SCOPE(budget, message) AZ_PROFILE_SCOPE(budget, message); #if GRAPH_CANVAS_ENABLE_DETAILED_PROFILING #define GRAPH_CANVAS_DETAILED_PROFILE_FUNCTION() AZ_PROFILE_FUNCTION(AzToolsFramework); diff --git a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Styling/StyleManager.cpp b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Styling/StyleManager.cpp index 0b4691ecf5..a2f5206012 100644 --- a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Styling/StyleManager.cpp +++ b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Styling/StyleManager.cpp @@ -6,6 +6,7 @@ * */ #include +#include AZ_PUSH_DISABLE_WARNING(4251 4800 4244, "-Wunknown-warning-option") #include @@ -141,6 +142,8 @@ namespace namespace GraphCanvas { + AZ_DEFINE_BUDGET(StyleManager); + //////////////////////// // StyleSheetComponent //////////////////////// @@ -271,6 +274,8 @@ namespace GraphCanvas : m_editorId(editorId) , m_assetPath(assetPath) { + GRAPH_CANVAS_PROFILE_SCOPE(StyleManager, "StyleManager::StyleManager"); + StyleManagerRequestBus::Handler::BusConnect(m_editorId); AZ::Data::AssetInfo assetInfo; @@ -315,8 +320,11 @@ namespace GraphCanvas } } + void StyleManager::LoadStyleSheet() { + GRAPH_CANVAS_PROFILE_SCOPE(StyleManager, "LoadStyleSheet"); + AZStd::string file = AZStd::string::format("@products@/%s", m_assetPath.c_str()); AZ::IO::FileIOBase* fileBase = AZ::IO::FileIOBase::GetInstance(); @@ -393,7 +401,7 @@ namespace GraphCanvas AZ::EntityId StyleManager::ResolveStyles(const AZ::EntityId& object) const { - GRAPH_CANVAS_DETAILED_PROFILE_FUNCTION(); + GRAPH_CANVAS_PROFILE_SCOPE(StyleManager, "ResolveStyles"); Styling::SelectorVector selectors; StyledEntityRequestBus::EventResult(selectors, object, &StyledEntityRequests::GetStyleSelectors); @@ -401,7 +409,7 @@ namespace GraphCanvas QVector matches; for (const auto& style : m_styles) { - GRAPH_CANVAS_DETAILED_PROFILE_SCOPE("StyleManager::ResolveStyles::StyleMatching"); + GRAPH_CANVAS_PROFILE_SCOPE(StyleManager, "StyleManager::ResolveStyles::StyleMatching"); int complexity = style->Matches(object); if (complexity != 0) { @@ -410,7 +418,7 @@ namespace GraphCanvas } { - GRAPH_CANVAS_DETAILED_PROFILE_SCOPE("StyleManager::ResolveStyles::Sorting"); + GRAPH_CANVAS_PROFILE_SCOPE(StyleManager, "StyleManager::ResolveStyles::Sorting"); std::stable_sort(matches.begin(), matches.end()); } Styling::StyleVector result; @@ -418,7 +426,7 @@ namespace GraphCanvas const auto& constMatches = matches; for (auto& match : constMatches) { - GRAPH_CANVAS_DETAILED_PROFILE_SCOPE("StyleManager::ResolveStyles::ResultConstruction"); + GRAPH_CANVAS_PROFILE_SCOPE(StyleManager, "StyleManager::ResolveStyles::ResultConstruction"); result.push_back(match.style); } diff --git a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.cpp b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.cpp index a1e921684f..854918ac19 100644 --- a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.cpp +++ b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.cpp @@ -119,6 +119,11 @@ namespace GraphCanvas m_nodePalette->setProperty("HasNoWindowDecorations", true); m_nodePalette->SetupNodePalette(config); + if (m_userNodePaletteWidth > 0) + { + m_nodePalette->setFixedWidth(m_userNodePaletteWidth); + } + QWidgetAction* actionWidget = new QWidgetAction(this); actionWidget->setDefaultWidget(m_nodePalette); diff --git a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.h b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.h index a942858f56..08ee8cecbf 100644 --- a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.h +++ b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/EditorContextMenu/EditorContextMenu.h @@ -63,34 +63,34 @@ namespace GraphCanvas void ResetSourceSlotFilter(); void FilterForSourceSlot(const GraphId& graphId, const AZ::EntityId& sourceSlotId); - protected slots: + protected Q_SLOTS: virtual void SetupDisplay(); virtual void HandleContextMenuSelection(); protected: + virtual void OnRefreshActions(const GraphId& graphId, const AZ::EntityId& targetMemberId); void keyPressEvent(QKeyEvent* keyEvent) override; - NodePaletteWidget* m_nodePalette = nullptr; - - private: - void ConstructMenu(); void AddUnprocessedActions(AZStd::vector& actions); - bool m_finalized; - bool m_isToolBarMenu; + NodePaletteWidget* m_nodePalette = nullptr; + + bool m_finalized; + bool m_isToolBarMenu; + AZ::u32 m_userNodePaletteWidth = 300; EditorId m_editorId; - AZStd::vector< ActionGroupId > m_actionGroupOrdering; - AZStd::unordered_set< ActionGroupId > m_actionGroups; + AZStd::vector m_actionGroupOrdering; + AZStd::unordered_set m_actionGroups; AZStd::vector m_unprocessedFrontActions; AZStd::vector m_unprocessedActions; AZStd::vector m_unprocessedBackActions; - AZStd::unordered_map< AZStd::string, QMenu* > m_subMenuMap; + AZStd::unordered_map m_subMenuMap; }; } diff --git a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/NodePalette/TreeItems/NodePaletteTreeItem.cpp b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/NodePalette/TreeItems/NodePaletteTreeItem.cpp index cbdfbfcf0c..bce17c6348 100644 --- a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/NodePalette/TreeItems/NodePaletteTreeItem.cpp +++ b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/NodePalette/TreeItems/NodePaletteTreeItem.cpp @@ -9,6 +9,10 @@ #include +AZ_PUSH_DISABLE_WARNING(4244 4251 4800, "-Wunknown-warning-option") +#include +AZ_POP_DISABLE_WARNING + namespace GraphCanvas { //////////////////////// @@ -19,7 +23,6 @@ namespace GraphCanvas NodePaletteTreeItem::NodePaletteTreeItem(AZStd::string_view name, EditorId editorId) : GraphCanvas::GraphCanvasTreeItem() - , m_errorIcon(":/GraphCanvasEditorResources/toast_error_icon.png") , m_editorId(editorId) , m_name(QString::fromUtf8(name.data(), static_cast(name.size()))) , m_selected(false) @@ -88,7 +91,7 @@ namespace GraphCanvas case Qt::DecorationRole: if (HasError()) { - return m_errorIcon; + return QIcon(":/GraphCanvasEditorResources/toast_error_icon.png"); } break; default: diff --git a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/NodePalette/TreeItems/NodePaletteTreeItem.h b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/NodePalette/TreeItems/NodePaletteTreeItem.h index fcb4d79077..4259caf69b 100644 --- a/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/NodePalette/TreeItems/NodePaletteTreeItem.h +++ b/Gems/GraphCanvas/Code/StaticLib/GraphCanvas/Widgets/NodePalette/TreeItems/NodePaletteTreeItem.h @@ -9,16 +9,13 @@ #include -AZ_PUSH_DISABLE_WARNING(4244 4251 4800, "-Wunknown-warning-option") -#include -AZ_POP_DISABLE_WARNING - #include #include #include #include #include +#include namespace GraphCanvas { @@ -86,6 +83,9 @@ namespace GraphCanvas void SetError(const AZStd::string& errorString); + virtual AZ::IO::Path GetTranslationDataPath() const { return AZ::IO::Path(); } + virtual void GenerateTranslationData() {} + protected: void PreOnChildAdded(GraphCanvasTreeItem* item) override; @@ -113,7 +113,6 @@ namespace GraphCanvas private: // Error Display - QIcon m_errorIcon; QString m_errorString; AZStd::string m_styleOverride; diff --git a/Gems/GraphModel/Code/Tests/MockGraphCanvas.cpp b/Gems/GraphModel/Code/Tests/MockGraphCanvas.cpp index 6e5a32e8e6..91a25d6a30 100644 --- a/Gems/GraphModel/Code/Tests/MockGraphCanvas.cpp +++ b/Gems/GraphModel/Code/Tests/MockGraphCanvas.cpp @@ -309,11 +309,6 @@ namespace MockGraphCanvasServices m_configuration.SetTooltip(tooltip); } - void MockNodeComponent::SetTranslationKeyedTooltip(const GraphCanvas::TranslationKeyedString& tooltip) - { - m_configuration.SetTooltip(tooltip.GetDisplayString()); - } - const AZStd::string MockNodeComponent::GetTooltip() const { return m_configuration.GetTooltip(); diff --git a/Gems/GraphModel/Code/Tests/MockGraphCanvas.h b/Gems/GraphModel/Code/Tests/MockGraphCanvas.h index 774e6aab9f..c7865e769e 100644 --- a/Gems/GraphModel/Code/Tests/MockGraphCanvas.h +++ b/Gems/GraphModel/Code/Tests/MockGraphCanvas.h @@ -175,7 +175,6 @@ namespace MockGraphCanvasServices // GraphCanvas::NodeRequestBus overrides ... void SetTooltip(const AZStd::string& tooltip) override; - void SetTranslationKeyedTooltip(const GraphCanvas::TranslationKeyedString& tooltip) override; const AZStd::string GetTooltip() const override; void SetShowInOutliner(bool showInOutliner) override; bool ShowInOutliner() const override; diff --git a/Gems/HttpRequestor/Code/Include/HttpRequestor/HttpRequestParameters.h b/Gems/HttpRequestor/Code/Include/HttpRequestor/HttpRequestParameters.h index b4428ef559..1b8c47b0ff 100644 --- a/Gems/HttpRequestor/Code/Include/HttpRequestor/HttpRequestParameters.h +++ b/Gems/HttpRequestor/Code/Include/HttpRequestor/HttpRequestParameters.h @@ -12,21 +12,35 @@ namespace HttpRequestor { - /* - ** - ** The Parameters needed to make a HTTP call and then receive the - ** returned JSON in a meaningful place. Examples of use are in the - ** HttpRequestCaller class. - ** - */ - + //! Models the parameters needed to make a HTTP call and then receive the + //! returned JSON in a meaningful place. Examples of use are in the HttpRequestCaller class. class Parameters { public: - // Initializing ctor + // Ctors + + //! @param URI A universal resource indicator representing an endpoint. + //! @param method The HTTP method to use, for example HTTP_GET. + //! @param callback The callback method to receive a HTTP call's response. Parameters(const AZStd::string& URI, Aws::Http::HttpMethod method, const Callback& callback); + + //! @param URI A universal resource indicator representing an endpoint. + //! @param method The HTTP method to use, for example HTTP_GET. + //! @param headers A map of header names and values to use. + //! @param callback The callback method to receive a HTTP call's response. Parameters(const AZStd::string& URI, Aws::Http::HttpMethod method, const Headers& headers, const Callback& callback); - Parameters(const AZStd::string& URI, Aws::Http::HttpMethod method, const Headers& headers, const AZStd::string& body, const Callback& callback); + + //! @param URI A universal resource indicator representing an endpoint. + //! @param method The HTTP method to use, for example HTTP_POST. + //! @param headers A map of header names and values to use. + //! @param body An data to associate with an HTTP call. + //! @param callback The callback method to receive a HTTP call's response. + Parameters( + const AZStd::string& URI, + Aws::Http::HttpMethod method, + const Headers& headers, + const AZStd::string& body, + const Callback& callback); // Defaults virtual ~Parameters() = default; @@ -36,30 +50,49 @@ namespace HttpRequestor Parameters(Parameters&&) = default; Parameters& operator=(Parameters&&) = default; - //returns the URI in string form as an recipient of the HTTP connection - const Aws::String& GetURI() const { return m_URI; } + //! Get the URI in string form as an recipient of the HTTP connection. + const Aws::String& GetURI() const + { + return m_URI; + } - //returns the method of which the HTTP request will take. GET, POST, DELETE, PUT, or HEAD - Aws::Http::HttpMethod GetMethod() const { return m_method; } + //! Get the HTTP method configured to use for a request. + Aws::Http::HttpMethod GetMethod() const + { + return m_method; + } - //returns the list of extra headers to include in the request - const Headers & GetHeaders() const { return m_headers; } + //! Get the list of extra headers to send as part of a request. + //! @return A map of header-value pairs. + const Headers& GetHeaders() const + { + return m_headers; + } - //returns the stream for the body of the request - const std::shared_ptr & GetBodyStream() const { return m_bodyStream; } + //! Get an input stream that can be used to send the body of a request. + //! @return A string stream representing a request body. + const std::shared_ptr& GetBodyStream() const + { + return m_bodyStream; + } - //returns the function of which to feed back the JSON that the HTTP call resulted in. The function also requires the HTTPResponseCode indicating if the call was successful or failed - const Callback & GetCallback() const { return m_callback; } + //! Get the callback function for processing JSON returned in an HTTP response. + //! Callback functions are responsible for correctly interpreting the HTTP response code, and should communicate any + //! failures. + //! @return The callback function to process endpoint responses with. + const Callback& GetCallback() const + { + return m_callback; + } private: - Aws::String m_URI; - Aws::Http::HttpMethod m_method; - Headers m_headers; - std::shared_ptr m_bodyStream; // required by Aws::Http::HttpRequest - Callback m_callback; + Aws::String m_URI; + Aws::Http::HttpMethod m_method; + Headers m_headers; + std::shared_ptr m_bodyStream; // required by Aws::Http::HttpRequest + Callback m_callback; }; - inline Parameters::Parameters(const AZStd::string& URI, Aws::Http::HttpMethod method, const Callback& callback) : m_URI(URI.c_str()) , m_method(method) @@ -75,7 +108,8 @@ namespace HttpRequestor { } - inline Parameters::Parameters(const AZStd::string& URI, Aws::Http::HttpMethod method, const Headers& headers, const AZStd::string& body, const Callback& callback) + inline Parameters::Parameters( + const AZStd::string& URI, Aws::Http::HttpMethod method, const Headers& headers, const AZStd::string& body, const Callback& callback) : m_URI(URI.c_str()) , m_method(method) , m_headers(headers) @@ -83,6 +117,5 @@ namespace HttpRequestor , m_callback(callback) { } - } diff --git a/Gems/HttpRequestor/Code/Include/HttpRequestor/HttpRequestorBus.h b/Gems/HttpRequestor/Code/Include/HttpRequestor/HttpRequestorBus.h index 5ede4109bb..39cad2c720 100644 --- a/Gems/HttpRequestor/Code/Include/HttpRequestor/HttpRequestorBus.h +++ b/Gems/HttpRequestor/Code/Include/HttpRequestor/HttpRequestorBus.h @@ -5,7 +5,6 @@ * SPDX-License-Identifier: Apache-2.0 OR MIT * */ - #pragma once #include @@ -13,24 +12,70 @@ namespace HttpRequestor { - class HttpRequestorRequests - : public AZ::EBusTraits + //! Defines request APIs for Gem. Supports making HTTP requests. + //! See [HTTP RFC](https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html) for expectations around methods, headers, and body. + class HttpRequestorRequests : public AZ::EBusTraits { - public: static const AZ::EBusHandlerPolicy HandlerPolicy = AZ::EBusHandlerPolicy::Single; static const AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::Single; - // Public functions + //! Make a RESTful call to a HTTP(s) endpoint. Receive the response, via the supplied callback as JSON. + //! @param URI The universal resource indicator representing the endpoint to make the request to. + //! @param method The HTTP method to use, for example HTTP_GET. + //! @param callback The callback method to receive the JSON response object. virtual void AddRequest(const AZStd::string& URI, Aws::Http::HttpMethod method, const Callback& callback) = 0; - virtual void AddRequestWithHeaders(const AZStd::string& URI, Aws::Http::HttpMethod method, const Headers & headers, const Callback& callback) = 0; - virtual void AddRequestWithHeadersAndBody(const AZStd::string& URI, Aws::Http::HttpMethod method, const Headers & headers, const AZStd::string& body, const Callback& callback) = 0; - + + //! Make a RESTful call to a HTTP(s) endpoint with customized headers. Receive the response, via the supplied callback as JSON. + //! @param URI The universal resource indicator representing the endpoint to make the request to. + //! @param method The HTTP method to use, for example HTTP_GET. + //! @param headers A map of header names and values to set on the request. + //! @param callback The callback method to receive the JSON response object. + virtual void AddRequestWithHeaders( + const AZStd::string& URI, Aws::Http::HttpMethod method, const Headers& headers, const Callback& callback) = 0; + + //! Make a RESTful call to a HTTP(s) endpoint with customized headers and a body. Receive the response, via the supplied callback as JSON. + //! @param URI The universal resource indicator representing the endpoint to make the request to. + //! @param method The HTTP method to use, for example HTTP_POST. + //! @param headers A map of header names and values to set on the request. + //! @param body Any HTTP request data to include in the request. Use Content-Type and Content-Length headers to specify the nature + //! of the body payload. + //! @param callback The callback method to receive the JSON response object. + virtual void AddRequestWithHeadersAndBody( + const AZStd::string& URI, + Aws::Http::HttpMethod method, + const Headers& headers, + const AZStd::string& body, + const Callback& callback) = 0; + + //! Make a RESTful call to a HTTP(s) endpoint. Receive the response, via the supplied callback as text. + //! @param URI The universal resource indicator representing the endpoint to make the request to. + //! @param method The http method to use, for example HTTP_GET. + //! @param callback The callback method to receive the JSON response object. virtual void AddTextRequest(const AZStd::string& URI, Aws::Http::HttpMethod method, const TextCallback& callback) = 0; - virtual void AddTextRequestWithHeaders(const AZStd::string& URI, Aws::Http::HttpMethod method, const Headers & headers, const TextCallback& callback) = 0; - virtual void AddTextRequestWithHeadersAndBody(const AZStd::string& URI, Aws::Http::HttpMethod method, const Headers & headers, const AZStd::string& body, const TextCallback& callback) = 0; + + //! Make a RESTful call to a HTTP(s) endpoint with customized headers. Receive the response, via the supplied callback as text. + //! @param URI The universal resource indicator representing the endpoint to make the request to. + //! @param method The HTTP method to use, for example HTTP_GET. + //! @param headers A map of header names and values to set on the request. + //! @param callback The callback method to receive the JSON response object. + virtual void AddTextRequestWithHeaders( + const AZStd::string& URI, Aws::Http::HttpMethod method, const Headers& headers, const TextCallback& callback) = 0; + + //! Make a RESTful call to a HTTP(s) endpoint with customized headers and a body. Receive the response, via the supplied callback as text. + //! @param URI The universal resource indicator representing the endpoint to make the request to. + //! @param method The HTTP method to use, for example HTTP_POST. + //! @param headers A map of header names and values to set on the request. + //! @param body Any HTTP request data to include in the request. Use Content-Type and Content-Length headers to specify the nature of the body payload. + //! @param callback The callback method to receive the JSON response object. + virtual void AddTextRequestWithHeadersAndBody( + const AZStd::string& URI, + Aws::Http::HttpMethod method, + const Headers& headers, + const AZStd::string& body, + const TextCallback& callback) = 0; }; using HttpRequestorRequestBus = AZ::EBus; -} // namespace HttpRequestor +} // namespace HttpRequestor diff --git a/Gems/HttpRequestor/Code/Include/HttpRequestor/HttpTextRequestParameters.h b/Gems/HttpRequestor/Code/Include/HttpRequestor/HttpTextRequestParameters.h index 97c9150f42..0eafdad866 100644 --- a/Gems/HttpRequestor/Code/Include/HttpRequestor/HttpTextRequestParameters.h +++ b/Gems/HttpRequestor/Code/Include/HttpRequestor/HttpTextRequestParameters.h @@ -11,20 +11,35 @@ namespace HttpRequestor { - /* - ** - ** The Parameters needed to make a HTTP call and then receive the - ** returned TEXT from the web request without parsing it. - ** - */ - + //! Models the parameters needed to make a HTTP call and then receive the + //! returned TEXT from the web request without parsing it. class TextParameters { public: // Initializing ctor + + //! @param URI A universal resource indicator representing an endpoint. + //! @param method The HTTP method to configure. + //! @param callback The callback method to receive a HTTP call's response. TextParameters(const AZStd::string& URI, Aws::Http::HttpMethod method, const TextCallback& callback); + + //! @param URI A universal resource indicator representing an endpoint. + //! @param method The HTTP method to configure. + //! @param headers A map of header names and values to use. + //! @param callback The callback method to receive a HTTP call's response. TextParameters(const AZStd::string& URI, Aws::Http::HttpMethod method, const Headers& headers, const TextCallback& callback); - TextParameters(const AZStd::string& URI, Aws::Http::HttpMethod method, const Headers& headers, const AZStd::string& body, const TextCallback& callback); + + //! @param URI A universal resource indicator representing an endpoint. + //! @param method The HTTP method to configure. + //! @param headers A map of header names and values to use. + //! @param body An data to associate with an HTTP call. + //! @param callback The callback method to receive a HTTP call's response. + TextParameters( + const AZStd::string& URI, + Aws::Http::HttpMethod method, + const Headers& headers, + const AZStd::string& body, + const TextCallback& callback); // Defaults ~TextParameters() = default; @@ -34,29 +49,49 @@ namespace HttpRequestor TextParameters(TextParameters&&) = default; TextParameters& operator=(TextParameters&&) = default; - //returns the URI in string form as an recipient of the HTTP connection - const Aws::String& GetURI() const { return m_URI; } + //! Get the URI in string form as an recipient of the HTTP connection. + const Aws::String& GetURI() const + { + return m_URI; + } - //returns the method of which the HTTP request will take. GET, POST, DELETE, PUT, or HEAD - Aws::Http::HttpMethod GetMethod() const { return m_method; } + //! Get the HTTP method configured to use for a request. + Aws::Http::HttpMethod GetMethod() const + { + return m_method; + } - //returns the list of extra headers to include in the request - const Headers & GetHeaders() const { return m_headers; } + //! Get the list of extra headers to send as part of a request. + //! @return A map of header-value pairs. + const Headers& GetHeaders() const + { + return m_headers; + } - //returns the stream for the body of the request - const std::shared_ptr & GetBodyStream() const { return m_bodyStream; } + //! Get an input stream that can be used to send the body of a request. + //! @return A string stream representing a request body. + const std::shared_ptr& GetBodyStream() const + { + return m_bodyStream; + } - //returns the function of which to feed back the TEXT that the HTTP call resulted in. The function also requires the HTTPResponseCode indicating if the call was successful or failed - const TextCallback & GetCallback() const { return m_callback; } + //! Get the callback function for processing text returned in an HTTP response. + //! Callback functions are responsible for correctly interpreting the HTTP response code, and should communicate any + //! failures. + //! @return The callback function to process endpoint responses with. + const TextCallback& GetCallback() const + { + return m_callback; + } private: - Aws::String m_URI; - Aws::Http::HttpMethod m_method; - Headers m_headers; - std::shared_ptr m_bodyStream; - TextCallback m_callback; + Aws::String m_URI; + Aws::Http::HttpMethod m_method; + Headers m_headers; + std::shared_ptr m_bodyStream; + TextCallback m_callback; }; - + inline TextParameters::TextParameters(const AZStd::string& URI, Aws::Http::HttpMethod method, const TextCallback& callback) : m_URI(URI.c_str()) , m_method(method) @@ -64,7 +99,8 @@ namespace HttpRequestor { } - inline TextParameters::TextParameters(const AZStd::string& URI, Aws::Http::HttpMethod method, const Headers& headers, const TextCallback& callback) + inline TextParameters::TextParameters( + const AZStd::string& URI, Aws::Http::HttpMethod method, const Headers& headers, const TextCallback& callback) : m_URI(URI.c_str()) , m_method(method) , m_headers(headers) @@ -72,12 +108,17 @@ namespace HttpRequestor { } - inline TextParameters::TextParameters(const AZStd::string& URI, Aws::Http::HttpMethod method, const Headers& headers, const AZStd::string& body, const TextCallback& callback) + inline TextParameters::TextParameters( + const AZStd::string& URI, + Aws::Http::HttpMethod method, + const Headers& headers, + const AZStd::string& body, + const TextCallback& callback) : m_URI(URI.c_str()) , m_method(method) , m_headers(headers) - , m_bodyStream( std::make_shared(body.c_str()) ) + , m_bodyStream(std::make_shared(body.c_str())) , m_callback(callback) { } -} +} // namespace HttpRequestor diff --git a/Gems/HttpRequestor/Code/Include/HttpRequestor/HttpTypes.h b/Gems/HttpRequestor/Code/Include/HttpRequestor/HttpTypes.h index a13f2f5645..42efa169dd 100644 --- a/Gems/HttpRequestor/Code/Include/HttpRequestor/HttpTypes.h +++ b/Gems/HttpRequestor/Code/Include/HttpRequestor/HttpTypes.h @@ -23,20 +23,16 @@ AZ_POP_DISABLE_WARNING namespace HttpRequestor { - // - // the call back function for http requests. - // + // A callback function for processing JSON return values from an HTTP request. This callback is responsible for correctly interpreting + // the HTTP response code and setting any internal information from the returned JSON object. using Callback = AZStd::function; - - // - // the call back function for any http text requests. - // + // A callback function for processing HTTP response as raw text. This callback is responsible for correctly interpreting the HTTP + // response code and setting any internal information from the returned data. If the data includes a JSON fragment, the callback is + // responsible for parsing it. using TextCallback = AZStd::function; - - // - // a map of REST headers. - // + // A map of REST headers. using Headers = AZStd::map; -} + +} // namespace HttpRequestor diff --git a/Gems/ImGui/Code/Source/ImGuiManager.cpp b/Gems/ImGui/Code/Source/ImGuiManager.cpp index d631e2f83e..b30eda8825 100644 --- a/Gems/ImGui/Code/Source/ImGuiManager.cpp +++ b/Gems/ImGui/Code/Source/ImGuiManager.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -23,7 +24,6 @@ #include #include #include -#include #include #include #include @@ -333,7 +333,8 @@ void ImGuiManager::Render() } // Advance ImGui by Elapsed Frame Time - io.DeltaTime = gEnv->pTimer->GetFrameTime(); + const AZ::TimeUs gameTickTimeUs = AZ::GetSimulationTickDeltaTimeUs(); + io.DeltaTime = AZ::TimeUsToSeconds(gameTickTimeUs); //// END FROM PREUPDATE AZ::u32 backBufferWidth = m_windowSize.m_width; diff --git a/Gems/ImGui/Code/Source/LYCommonMenu/ImGuiLYAssetExplorer.cpp b/Gems/ImGui/Code/Source/LYCommonMenu/ImGuiLYAssetExplorer.cpp index 055537a8bb..6a4d4bc6f9 100644 --- a/Gems/ImGui/Code/Source/LYCommonMenu/ImGuiLYAssetExplorer.cpp +++ b/Gems/ImGui/Code/Source/LYCommonMenu/ImGuiLYAssetExplorer.cpp @@ -17,7 +17,6 @@ #include #include #include -#include #include #include "ImGuiColorDefines.h" diff --git a/Gems/ImGui/Code/Source/LYCommonMenu/ImGuiLYCommonMenu.cpp b/Gems/ImGui/Code/Source/LYCommonMenu/ImGuiLYCommonMenu.cpp index d2f86a65cd..ecc97682de 100644 --- a/Gems/ImGui/Code/Source/LYCommonMenu/ImGuiLYCommonMenu.cpp +++ b/Gems/ImGui/Code/Source/LYCommonMenu/ImGuiLYCommonMenu.cpp @@ -44,11 +44,15 @@ namespace ImGui m_assetExplorer.Initialize(); m_cameraMonitor.Initialize(); m_entityOutliner.Initialize(); + + m_deltaTimeHistogram.Init("onTick Delta Time (Milliseconds)", 250, LYImGuiUtils::HistogramContainer::ViewType::Histogram, true, 0.0f, 60.0f); + AZ::TickBus::Handler::BusConnect(); } void ImGuiLYCommonMenu::Shutdown() { // Disconnect EBusses + AZ::TickBus::Handler::BusDisconnect(); ImGuiUpdateListenerBus::Handler::BusDisconnect(); // shutdown sub menu objects @@ -187,6 +191,10 @@ namespace ImGui // Main Open 3D Engine menu if (ImGui::BeginMenu("O3DE")) { + if (ImGui::MenuItem("Delta Time Graph")) + { + m_showDeltaTimeGraphs = !m_showDeltaTimeGraphs; + } // Asset Explorer if (ImGui::MenuItem("Asset Explorer")) { @@ -628,6 +636,17 @@ namespace ImGui m_assetExplorer.ImGuiUpdate(); m_cameraMonitor.ImGuiUpdate(); m_entityOutliner.ImGuiUpdate(); + if (m_showDeltaTimeGraphs) + { + ImGui::SetNextWindowSize({ 500, 200 }, ImGuiCond_Once); + if (ImGui::Begin( + "Delta Time Graphs", &m_showDeltaTimeGraphs, + ImGuiWindowFlags_MenuBar | ImGuiWindowFlags_HorizontalScrollbar | ImGuiWindowFlags_NoSavedSettings)) + { + m_deltaTimeHistogram.Draw(ImGui::GetColumnWidth(), 100.0f); + } + ImGui::End(); + } } void ImGuiLYCommonMenu::OnImGuiUpdate_DrawControllerLegend() @@ -754,7 +773,6 @@ namespace ImGui // Set the timer and connect to tick bus to count down. m_telemetryCaptureTimeRemaining = m_telemetryCaptureTime; - AZ::TickBus::Handler::BusConnect(); // Get the current ImGui Display state to restore it later. ImGuiManagerBus::BroadcastResult(m_telemetryCapturePreCaptureState, &IImGuiManager::GetClientMenuBarState); @@ -774,16 +792,20 @@ namespace ImGui // Reset timer and disconnect tick bus m_telemetryCaptureTimeRemaining = 0.0f; - AZ::TickBus::Handler::BusDisconnect(); } // OnTick just used for telemetry captures. void ImGuiLYCommonMenu::OnTick(float deltaTime, [[maybe_unused]] AZ::ScriptTimePoint time) { - m_telemetryCaptureTimeRemaining -= deltaTime; - if (m_telemetryCaptureTimeRemaining <= 0.0f) + m_deltaTimeHistogram.PushValue(deltaTime*1000.0f); // convert to milliseconds + + if (m_telemetryCaptureTimeRemaining > 0.0f) { - StopTelemetryCapture(); + m_telemetryCaptureTimeRemaining -= deltaTime; + if (m_telemetryCaptureTimeRemaining <= 0.0f) + { + StopTelemetryCapture(); + } } } } // namespace ImGui diff --git a/Gems/ImGui/Code/Source/LYCommonMenu/ImGuiLYCommonMenu.h b/Gems/ImGui/Code/Source/LYCommonMenu/ImGuiLYCommonMenu.h index fae892b4a2..a63d2fd844 100644 --- a/Gems/ImGui/Code/Source/LYCommonMenu/ImGuiLYCommonMenu.h +++ b/Gems/ImGui/Code/Source/LYCommonMenu/ImGuiLYCommonMenu.h @@ -50,6 +50,8 @@ namespace ImGui ImGuiLYAssetExplorer m_assetExplorer; ImGuiLYCameraMonitor m_cameraMonitor; ImGuiLYEntityOutliner m_entityOutliner; + bool m_showDeltaTimeGraphs = false; + ImGui::LYImGuiUtils::HistogramContainer m_deltaTimeHistogram; }; } diff --git a/Gems/LandscapeCanvas/Code/Source/Editor/MainWindow.cpp b/Gems/LandscapeCanvas/Code/Source/Editor/MainWindow.cpp index 4574b938f6..ce9eab5f7e 100644 --- a/Gems/LandscapeCanvas/Code/Source/Editor/MainWindow.cpp +++ b/Gems/LandscapeCanvas/Code/Source/Editor/MainWindow.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -448,6 +449,9 @@ namespace LandscapeCanvasEditor AZ::ComponentApplicationBus::BroadcastResult(m_serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); AZ_Assert(m_serializeContext, "Failed to acquire application serialize context."); + m_prefabFocusPublicInterface = AZ::Interface::Get(); + AZ_Assert(m_prefabFocusPublicInterface, "LandscapeCanvas - could not get PrefabFocusPublicInterface on construction."); + const GraphCanvas::EditorId& editorId = GetEditorId(); // Register unique color palettes for our connections (data types) @@ -459,6 +463,7 @@ namespace LandscapeCanvasEditor AzToolsFramework::EditorPickModeNotificationBus::Handler::BusConnect(AzToolsFramework::GetEntityContextId()); AzToolsFramework::EntityCompositionNotificationBus::Handler::BusConnect(); AzToolsFramework::ToolsApplicationNotificationBus::Handler::BusConnect(); + AzToolsFramework::Prefab::PrefabFocusNotificationBus::Handler::BusConnect(AzToolsFramework::GetEntityContextId()); AzToolsFramework::Prefab::PrefabPublicNotificationBus::Handler::BusConnect(); CrySystemEventBus::Handler::BusConnect(); AZ::EntitySystemBus::Handler::BusConnect(); @@ -484,6 +489,7 @@ namespace LandscapeCanvasEditor AZ::EntitySystemBus::Handler::BusDisconnect(); CrySystemEventBus::Handler::BusDisconnect(); AzToolsFramework::Prefab::PrefabPublicNotificationBus::Handler::BusDisconnect(); + AzToolsFramework::Prefab::PrefabFocusNotificationBus::Handler::BusDisconnect(); AzToolsFramework::ToolsApplicationNotificationBus::Handler::BusDisconnect(); AzToolsFramework::EditorPickModeNotificationBus::Handler::BusDisconnect(); AzToolsFramework::EditorEntityContextNotificationBus::Handler::BusDisconnect(); @@ -2500,6 +2506,24 @@ namespace LandscapeCanvasEditor } } + void MainWindow::OnPrefabFocusChanged() + { + // Make sure to close any open graphs that aren't currently in prefab focus + // to prevent the user from making modifications outside of the allowed focus scope + AZStd::vector dockWidgetsToClose; + for (auto [entityId, dockWidgetId] : m_dockWidgetsByEntity) + { + if (!m_prefabFocusPublicInterface->IsOwningPrefabBeingFocused(entityId)) + { + dockWidgetsToClose.push_back(dockWidgetId); + } + } + for (auto dockWidgetId : dockWidgetsToClose) + { + CloseEditor(dockWidgetId); + } + } + void MainWindow::OnPrefabInstancePropagationBegin() { // Ignore graph updates during prefab propagation because the entities will be diff --git a/Gems/LandscapeCanvas/Code/Source/Editor/MainWindow.h b/Gems/LandscapeCanvas/Code/Source/Editor/MainWindow.h index e0fb2d8e10..de6b10529d 100644 --- a/Gems/LandscapeCanvas/Code/Source/Editor/MainWindow.h +++ b/Gems/LandscapeCanvas/Code/Source/Editor/MainWindow.h @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -31,6 +32,14 @@ #include #endif +namespace AzToolsFramework +{ + namespace Prefab + { + class PrefabFocusPublicInterface; + } +} + namespace LandscapeCanvasEditor { //////////////////////////////////////////////////////////////////////// @@ -81,6 +90,7 @@ namespace LandscapeCanvasEditor , private AzToolsFramework::EntityCompositionNotificationBus::Handler , private AzToolsFramework::PropertyEditorEntityChangeNotificationBus::MultiHandler , private AzToolsFramework::ToolsApplicationNotificationBus::Handler + , private AzToolsFramework::Prefab::PrefabFocusNotificationBus::Handler , private AzToolsFramework::Prefab::PrefabPublicNotificationBus::Handler , private CrySystemEventBus::Handler { @@ -181,6 +191,9 @@ namespace LandscapeCanvasEditor void EntityParentChanged(AZ::EntityId entityId, AZ::EntityId newParentId, AZ::EntityId oldParentId) override; //////////////////////////////////////////////////////////////////////// + //! PrefabFocusNotificationBus overrides + void OnPrefabFocusChanged() override; + //! PrefabPublicNotificationBus overrides void OnPrefabInstancePropagationBegin() override; void OnPrefabInstancePropagationEnd() override; @@ -248,6 +261,8 @@ namespace LandscapeCanvasEditor AZ::SerializeContext* m_serializeContext = nullptr; + AzToolsFramework::Prefab::PrefabFocusPublicInterface* m_prefabFocusPublicInterface = nullptr; + bool m_ignoreGraphUpdates = false; bool m_prefabPropagationInProgress = false; bool m_inObjectPickMode = false; diff --git a/Gems/LmbrCentral/Assets/Editor/Icons/Components/AxisAlignedBoxShape.svg b/Gems/LmbrCentral/Assets/Editor/Icons/Components/AxisAlignedBoxShape.svg new file mode 100644 index 0000000000..0f3982d713 --- /dev/null +++ b/Gems/LmbrCentral/Assets/Editor/Icons/Components/AxisAlignedBoxShape.svg @@ -0,0 +1,3 @@ + + + diff --git a/Gems/LmbrCentral/Assets/Editor/Icons/Components/Viewport/AxisAlignedBoxShape.svg b/Gems/LmbrCentral/Assets/Editor/Icons/Components/Viewport/AxisAlignedBoxShape.svg new file mode 100644 index 0000000000..51f0be0572 --- /dev/null +++ b/Gems/LmbrCentral/Assets/Editor/Icons/Components/Viewport/AxisAlignedBoxShape.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/Gems/LmbrCentral/Assets/seedList.seed b/Gems/LmbrCentral/Assets/seedList.seed deleted file mode 100644 index 54c12c9faa..0000000000 --- a/Gems/LmbrCentral/Assets/seedList.seed +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Gems/LmbrCentral/Code/Source/Ai/EditorNavigationAreaComponent.cpp b/Gems/LmbrCentral/Code/Source/Ai/EditorNavigationAreaComponent.cpp index f723918cf3..ed707ee9b3 100644 --- a/Gems/LmbrCentral/Code/Source/Ai/EditorNavigationAreaComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Ai/EditorNavigationAreaComponent.cpp @@ -47,6 +47,7 @@ namespace LmbrCentral { editContext->Class("Navigation Area", "Navigation Area configuration") ->ClassElement(AZ::Edit::ClassElements::EditorData, "") + ->Attribute(AZ::Edit::Attributes::AddableByUser, false) ->Attribute(AZ::Edit::Attributes::Category, "AI") ->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/NavigationArea.svg") ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/NavigationArea.svg") diff --git a/Gems/LmbrCentral/Code/Source/Ai/EditorNavigationSeedComponent.cpp b/Gems/LmbrCentral/Code/Source/Ai/EditorNavigationSeedComponent.cpp index 47999dbd4b..8d8727e314 100644 --- a/Gems/LmbrCentral/Code/Source/Ai/EditorNavigationSeedComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Ai/EditorNavigationSeedComponent.cpp @@ -32,6 +32,7 @@ namespace LmbrCentral editContext->Class("Navigation Seed", "Determines reachable navigation nodes") ->ClassElement(AZ::Edit::ClassElements::EditorData, "") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) + ->Attribute(AZ::Edit::Attributes::AddableByUser, false) ->Attribute(AZ::Edit::Attributes::Category, "AI") ->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/NavigationSeed.svg") ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/NavigationSeed.svg") diff --git a/Gems/LmbrCentral/Code/Source/Ai/NavigationComponent.cpp b/Gems/LmbrCentral/Code/Source/Ai/NavigationComponent.cpp index 500d5c17da..9798307d51 100644 --- a/Gems/LmbrCentral/Code/Source/Ai/NavigationComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Ai/NavigationComponent.cpp @@ -120,6 +120,7 @@ namespace LmbrCentral editContext->Class( "Navigation", "The Navigation component provides basic pathfinding and pathfollowing services to an entity") ->ClassElement(AZ::Edit::ClassElements::EditorData, "") + ->Attribute(AZ::Edit::Attributes::AddableByUser, false) ->Attribute(AZ::Edit::Attributes::Category, "AI") ->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Navigation.svg") ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Navigation.svg") diff --git a/Gems/LmbrCentral/Code/Source/Builders/MaterialBuilder/MaterialBuilderComponent.cpp b/Gems/LmbrCentral/Code/Source/Builders/MaterialBuilder/MaterialBuilderComponent.cpp deleted file mode 100644 index 48973b2779..0000000000 --- a/Gems/LmbrCentral/Code/Source/Builders/MaterialBuilder/MaterialBuilderComponent.cpp +++ /dev/null @@ -1,612 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#include "MaterialBuilderComponent.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace MaterialBuilder -{ - [[maybe_unused]] const char s_materialBuilder[] = "MaterialBuilder"; - - namespace Internal - { - const char g_nodeNameMaterial[] = "Material"; - const char g_nodeNameSubmaterial[] = "SubMaterials"; - const char g_nodeNameTexture[] = "Texture"; - const char g_nodeNameTextures[] = "Textures"; - const char g_attributeFileName[] = "File"; - - const int g_numSourceImageFormats = 9; - const char* g_sourceImageFormats[g_numSourceImageFormats] = { ".tif", ".tiff", ".bmp", ".gif", ".jpg", ".jpeg", ".tga", ".png", ".dds" }; - bool IsSupportedImageExtension(const AZStd::string& extension) - { - for (const char* format : g_sourceImageFormats) - { - if (extension == format) - { - return true; - } - } - return false; - } - - // Cleans up legacy pathing from older materials - const char* CleanLegacyPathingFromTexturePath(const char* texturePath) - { - // Copied from MaterialHelpers::SetTexturesFromXml, line 459 - // legacy. Some textures used to be referenced using "engine\\" or "engine/" - this is no longer valid - if ( - (strlen(texturePath) > 7) && - (azstrnicmp(texturePath, "engine", 6) == 0) && - ((texturePath[6] == '\\') || (texturePath[6] == '/')) - ) - { - texturePath = texturePath + 7; - } - - // legacy: Files were saved into a mtl with many leading forward or back slashes, we eat them all here. We want it to start with a relative path. - const char* actualFileName = texturePath; - while ((actualFileName[0]) && ((actualFileName[0] == '\\') || (actualFileName[0] == '/'))) - { - ++actualFileName; - } - return actualFileName; - } - - // Parses the material XML for all texture paths - AZ::Outcome GetTexturePathsFromMaterial(AZ::rapidxml::xml_node* materialNode, AZStd::vector& paths) - { - AZ::Outcome resultOutcome = AZ::Failure(AZStd::string("")); - AZStd::string success_with_warning_message; - - // check if this material has a set of textures defined, and if so, grab all the paths from the textures - AZ::rapidxml::xml_node* texturesNode = materialNode->first_node(g_nodeNameTextures); - if (texturesNode) - { - AZ::rapidxml::xml_node* textureNode = texturesNode->first_node(g_nodeNameTexture); - // it is possible for an empty node to exist for things like collision materials, so check - // to make sure that there is at least one child node before starting to iterate. - if (textureNode) - { - do - { - AZ::rapidxml::xml_attribute* fileAttribute = textureNode->first_attribute(g_attributeFileName); - if (!fileAttribute) - { - success_with_warning_message = "Texture node exists but does not have a file attribute defined"; - } - else - { - const char* rawTexturePath = fileAttribute->value(); - // do an initial clean-up of the path taken from the file, similar to MaterialHelpers::SetTexturesFromXml - AZStd::string texturePath = CleanLegacyPathingFromTexturePath(rawTexturePath); - paths.emplace_back(AZStd::move(texturePath)); - } - - textureNode = textureNode->next_sibling(g_nodeNameTexture); - } while (textureNode); - } - } - - // check to see if this material has sub materials defined. If so, recurse into this function for each sub material - AZ::rapidxml::xml_node* subMaterialsNode = materialNode->first_node(g_nodeNameSubmaterial); - if (subMaterialsNode) - { - AZ::rapidxml::xml_node* subMaterialNode = subMaterialsNode->first_node(g_nodeNameMaterial); - if (subMaterialNode == nullptr) - { - // this is a malformed material as there is no material node child in the SubMaterials node, so error out - return AZ::Failure(AZStd::string("SubMaterials node exists but does not have any child Material nodes.")); - } - - do - { - // grab the texture paths from the submaterial, or error out if necessary - AZ::Outcome subMaterialTexturePathsResult = GetTexturePathsFromMaterial(subMaterialNode, paths); - if (!subMaterialTexturePathsResult.IsSuccess()) - { - return subMaterialTexturePathsResult; - } - else if (!subMaterialTexturePathsResult.GetValue().empty()) - { - success_with_warning_message = subMaterialTexturePathsResult.GetValue(); - } - - subMaterialNode = subMaterialNode->next_sibling(g_nodeNameMaterial); - } while (subMaterialNode); - } - - if (texturesNode == nullptr && subMaterialsNode == nullptr) - { - return AZ::Failure(AZStd::string("Failed to find a Textures node or SubMaterials node in this material. At least one of these must exist to be able to gather texture dependencies.")); - } - - if (!success_with_warning_message.empty()) - { - return AZ::Success(success_with_warning_message); - } - return AZ::Success(AZStd::string()); - } - - // find a sequence of digits with a string starting from lastDigitIndex, and try to parse that sequence to and int - // and store it in outAnimIndex. - bool ParseFilePathForCompleteNumber(const AZStd::string& filePath, int& lastDigitIndex, int& outAnimIndex) - { - int firstAnimIndexDigit = lastDigitIndex; - while (isdigit(static_cast(filePath[lastDigitIndex]))) - { - ++lastDigitIndex; - } - if (!AzFramework::StringFunc::LooksLikeInt(filePath.substr(firstAnimIndexDigit, lastDigitIndex - firstAnimIndexDigit).c_str(), &outAnimIndex)) - { - return false; - } - return true; - } - - // Parse the texture path for a texture animation to determine the actual names of the textures to resolve that - // make up the entire sequence. - AZ::Outcome GetAllTexturesInTextureSequence(const AZStd::string& path, AZStd::vector& texturesInSequence) - { - // Taken from CShaderMan::mfReadTexSequence - // All comments next to variable declarations in this function are the original variable names in - // CShaderMan::mfReadTexSequence, to help keep track of how these variables relate to the original function - AZStd::string prefix; - AZStd::string postfix; - - AZStd::string filePath = path; // name - AZStd::string extension; // ext - AzFramework::StringFunc::Path::GetExtension(filePath.c_str(), extension); - AzFramework::StringFunc::Path::StripExtension(filePath); - - // unsure if it is actually possible to enter here or the original version with '$' as the indicator - // for texture sequences, but they check for both just in case, so this will match the behavior. - char separator = '#'; // chSep - int firstSeparatorIndex = static_cast(filePath.find(separator)); - if (firstSeparatorIndex == AZStd::string::npos) - { - firstSeparatorIndex = static_cast(filePath.find('$')); - if (firstSeparatorIndex == AZStd::string::npos) - { - return AZ::Failure(AZStd::string("Failed to find separator '#' or '$' in texture path.")); - } - separator = '$'; - } - - // we don't actually care about getting the speed of the animation, so just remove everything from the - // end of the string starting with the last open parenthesis - size_t speedStartIndex = filePath.find_last_of('('); - if (speedStartIndex != AZStd::string::npos) - { - AzFramework::StringFunc::LKeep(filePath, speedStartIndex); - AzFramework::StringFunc::Append(filePath, '\0'); - } - - // try to find where the digits start after the separator (there can be any number of separators - // between the texture name prefix and where the digit range starts) - int firstAnimIndexDigit = -1; // m - int numSeparators = 0; // j - for (int stringIndex = firstSeparatorIndex; stringIndex < filePath.length(); ++stringIndex) - { - if (filePath[stringIndex] == separator) - { - ++numSeparators; - if (firstSeparatorIndex == -1) - { - firstSeparatorIndex = stringIndex; - } - } - else if (firstSeparatorIndex > 0 && firstAnimIndexDigit < 0) - { - firstAnimIndexDigit = stringIndex; - break; - } - } - if (numSeparators == 0) - { - return AZ::Failure(AZStd::string("Failed to find separator '#' or '$' in texture path.")); - } - - // store off everything before the separator - prefix = AZStd::move(filePath.substr(0, firstSeparatorIndex)); - - int startAnimIndex = 0; // startn - int endAnimIndex = 0; // endn - // we only found the separator, but no indexes, so just assume its 0 - 999 - if (firstAnimIndexDigit < 0) - { - startAnimIndex = 0; - endAnimIndex = 999; - } - else - { - // find the length of the first index, then parse that to an int - int lastDigitIndex = firstAnimIndexDigit; - if (!ParseFilePathForCompleteNumber(filePath, lastDigitIndex, startAnimIndex)) - { - return AZ::Failure(AZStd::string("Failed to determine first index of the sequence after the separators in texture path.")); - } - - // reset to the start of the next index - ++lastDigitIndex; - - // find the length of the end index, then parse that to an int - if (!ParseFilePathForCompleteNumber(filePath, lastDigitIndex, endAnimIndex)) - { - return AZ::Failure(AZStd::string("Failed to determine last index of the sequence after the first index of the sequence in texture path.")); - } - - // save off the rest of the string - postfix = AZStd::move(filePath.substr(lastDigitIndex)); - } - - int numTextures = endAnimIndex - startAnimIndex + 1; - const char* textureNameFormat = "%s%.*d%s%s"; // prefix, num separators (number of digits), sequence index, postfix, extension) - for (int sequenceIndex = 0; sequenceIndex < numTextures; ++sequenceIndex) - { - texturesInSequence.emplace_back(AZStd::move(AZStd::string::format(textureNameFormat, prefix.c_str(), numSeparators, startAnimIndex + sequenceIndex, postfix.c_str(), extension.c_str()))); - } - - return AZ::Success(); - } - - // Determine which product path to use based on the path stored in the texture, and make it relative to - // the cache. - bool ResolveMaterialTexturePath(const AZStd::string& path, AZStd::string& outPath) - { - AZStd::string aliasedPath = path; - - //if its a source image format try to load the dds - AZStd::string extension; - bool hasExtension = AzFramework::StringFunc::Path::GetExtension(path.c_str(), extension); - - // Replace all supported extensions with DDS if it has an extension. If the extension exists but is not supported, fail out. - if (hasExtension && IsSupportedImageExtension(extension)) - { - AzFramework::StringFunc::Path::ReplaceExtension(aliasedPath, ".dds"); - } - else if (hasExtension) - { - AZ_Warning(s_materialBuilder, false, "Failed to resolve texture path %s as the path is not to a supported texture format. Please make sure that textures in materials are formats supported by Open 3D Engine.", aliasedPath.c_str()); - return false; - } - - AZStd::to_lower(aliasedPath.begin(), aliasedPath.end()); - AzFramework::StringFunc::Path::Normalize(aliasedPath); - - AZStd::string currentFolderSpecifier = AZStd::string::format(".%c", AZ_CORRECT_FILESYSTEM_SEPARATOR); - if (AzFramework::StringFunc::StartsWith(aliasedPath, currentFolderSpecifier)) - { - AzFramework::StringFunc::Strip(aliasedPath, currentFolderSpecifier.c_str(), false, true); - } - - AZStd::string resolvedPath; - char fullPathBuffer[AZ_MAX_PATH_LEN] = {}; - // if there is an alias already at the front of the path, resolve it, and try to make it relative to the - // cache (@products@). If it can't, then error out. - // This case handles the possibility of aliases existing in texture paths in materials that is still supported - // by the legacy loading code, however it is not currently used, so the else path is always taken. - if (aliasedPath[0] == '@') - { - if (!AZ::IO::FileIOBase::GetDirectInstance()->ResolvePath(aliasedPath.c_str(), fullPathBuffer, AZ_MAX_PATH_LEN)) - { - AZ_Warning(s_materialBuilder, false, "Failed to resolve the alias in texture path %s. Please make sure all aliases are registered with the engine.", aliasedPath.c_str()); - return false; - } - resolvedPath = fullPathBuffer; - AzFramework::StringFunc::Path::Normalize(resolvedPath); - if (!AzFramework::StringFunc::Replace(resolvedPath, AZ::IO::FileIOBase::GetDirectInstance()->GetAlias("@products@"), "")) - { - AZ_Warning(s_materialBuilder, false, "Failed to resolve aliased texture path %s to be relative to the asset cache. Please make sure this alias resolves to a path within the asset cache.", aliasedPath.c_str()); - return false; - } - } - else - { - resolvedPath = AZStd::move(aliasedPath); - } - - // AP deferred path resolution requires UNIX separators and no leading separators, so clean up and convert here - if (AzFramework::StringFunc::StartsWith(resolvedPath, AZ_CORRECT_FILESYSTEM_SEPARATOR_STRING)) - { - AzFramework::StringFunc::Strip(resolvedPath, AZ_CORRECT_FILESYSTEM_SEPARATOR, false, true); - } - AzFramework::StringFunc::Replace(resolvedPath, AZ_CORRECT_FILESYSTEM_SEPARATOR_STRING, "/"); - - outPath = AZStd::move(resolvedPath); - return true; - } - - } - - BuilderPluginComponent::BuilderPluginComponent() - { - } - - BuilderPluginComponent::~BuilderPluginComponent() - { - } - - void BuilderPluginComponent::Init() - { - } - - void BuilderPluginComponent::Activate() - { - // Register material builder - AssetBuilderSDK::AssetBuilderDesc builderDescriptor; - builderDescriptor.m_name = "MaterialBuilderWorker"; - builderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern("*.mtl", AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard)); - builderDescriptor.m_busId = MaterialBuilderWorker::GetUUID(); - builderDescriptor.m_version = 5; - builderDescriptor.m_createJobFunction = AZStd::bind(&MaterialBuilderWorker::CreateJobs, &m_materialBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2); - builderDescriptor.m_processJobFunction = AZStd::bind(&MaterialBuilderWorker::ProcessJob, &m_materialBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2); - - // (optimization) this builder does not emit source dependencies: - builderDescriptor.m_flags |= AssetBuilderSDK::AssetBuilderDesc::BF_EmitsNoDependencies; - - m_materialBuilder.BusConnect(builderDescriptor.m_busId); - - EBUS_EVENT(AssetBuilderSDK::AssetBuilderBus, RegisterBuilderInformation, builderDescriptor); - } - - void BuilderPluginComponent::Deactivate() - { - m_materialBuilder.BusDisconnect(); - } - - void BuilderPluginComponent::Reflect([[maybe_unused]] AZ::ReflectContext* context) - { - if (AZ::SerializeContext* serializeContext = azrtti_cast(context)) - { - serializeContext->Class() - ->Version(1) - ->Attribute(AZ::Edit::Attributes::SystemComponentTags, AZStd::vector({ AssetBuilderSDK::ComponentTags::AssetBuilder })); - } - } - - MaterialBuilderWorker::MaterialBuilderWorker() - { - } - MaterialBuilderWorker::~MaterialBuilderWorker() - { - } - - void MaterialBuilderWorker::ShutDown() - { - // This will be called on a different thread than the process job thread - m_isShuttingDown = true; - } - - // This happens early on in the file scanning pass. - // This function should always create the same jobs and not do any checking whether the job is up to date. - void MaterialBuilderWorker::CreateJobs(const AssetBuilderSDK::CreateJobsRequest& request, AssetBuilderSDK::CreateJobsResponse& response) - { - if (m_isShuttingDown) - { - response.m_result = AssetBuilderSDK::CreateJobsResultCode::ShuttingDown; - return; - } - - for (const AssetBuilderSDK::PlatformInfo& info : request.m_enabledPlatforms) - { - AssetBuilderSDK::JobDescriptor descriptor; - descriptor.m_jobKey = "Material Builder Job"; - descriptor.SetPlatformIdentifier(info.m_identifier.c_str()); - descriptor.m_priority = 8; // meshes are more important (at 10) but mats are still pretty important. - response.m_createJobOutputs.push_back(descriptor); - } - - response.m_result = AssetBuilderSDK::CreateJobsResultCode::Success; - } - - // The request will contain the CreateJobResponse you constructed earlier, including any keys and - // values you placed into the hash table - void MaterialBuilderWorker::ProcessJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) - { - AZ_TracePrintf(AssetBuilderSDK::InfoWindow, "Starting Job.\n"); - AZStd::string fileName; - AzFramework::StringFunc::Path::GetFullFileName(request.m_fullPath.c_str(), fileName); - AZStd::string destPath; - - // Do all work inside the tempDirPath. - AzFramework::StringFunc::Path::ConstructFull(request.m_tempDirPath.c_str(), fileName.c_str(), destPath, true); - - AZ::IO::LocalFileIO fileIO; - if (!m_isShuttingDown && fileIO.Copy(request.m_fullPath.c_str(), destPath.c_str()) == AZ::IO::ResultCode::Success) - { - // Push assets back into the response's product list - // Assets you created in your temp path can be specified using paths relative to the temp path - // since that is assumed where you're writing stuff. - AZStd::string relPath = destPath; - AssetBuilderSDK::ProductPathDependencySet dependencyPaths; - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - AssetBuilderSDK::JobProduct jobProduct(fileName); - - bool dependencyResult = GatherProductDependencies(request.m_fullPath, dependencyPaths); - if (dependencyResult) - { - jobProduct.m_pathDependencies = AZStd::move(dependencyPaths); - jobProduct.m_dependenciesHandled = true; // We've output the dependencies immediately above so it's OK to tell the AP we've handled dependencies - } - else - { - AZ_Error(s_materialBuilder, false, "Dependency gathering for %s failed.", request.m_fullPath.c_str()); - } - response.m_outputProducts.push_back(jobProduct); - } - else - { - if (m_isShuttingDown) - { - AZ_TracePrintf(AssetBuilderSDK::ErrorWindow, "Cancelled job %s because shutdown was requested.\n", request.m_fullPath.c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Cancelled; - } - else - { - AZ_TracePrintf(AssetBuilderSDK::ErrorWindow, "Error during processing job %s.\n", request.m_fullPath.c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - } - } - } - - bool MaterialBuilderWorker::GetResolvedTexturePathsFromMaterial(const AZStd::string& path, AZStd::vector& resolvedPaths) - { - if (!AZ::IO::SystemFile::Exists(path.c_str())) - { - AZ_Error(s_materialBuilder, false, "Failed to find material at path %s. Please make sure this material exists on disk.", path.c_str()); - return false; - } - - uint64_t fileSize = AZ::IO::SystemFile::Length(path.c_str()); - if (fileSize == 0) - { - AZ_Error(s_materialBuilder, false, "Material at path %s is an empty file. Please make sure this material was properly saved to disk.", path.c_str()); - return false; - } - - AZStd::vector buffer(fileSize + 1); - buffer[fileSize] = 0; - if (!AZ::IO::SystemFile::Read(path.c_str(), buffer.data())) - { - AZ_Error(s_materialBuilder, false, "Failed to read material at path %s. Please make sure the file is not open or being edited by another program.", path.c_str()); - return false; - } - - AZ::rapidxml::xml_document* xmlDoc = azcreate(AZ::rapidxml::xml_document, (), AZ::SystemAllocator, "Mtl builder temp XML Reader"); - if (!xmlDoc->parse(buffer.data())) - { - azdestroy(xmlDoc, AZ::SystemAllocator, AZ::rapidxml::xml_document); - AZ_Error(s_materialBuilder, false, "Failed to parse material at path %s into XML. Please make sure that the material was properly saved to disk.", path.c_str()); - return false; - } - - // if the first node in this file isn't a material, this must not actually be a material so it can't have deps - AZ::rapidxml::xml_node* rootNode = xmlDoc->first_node(Internal::g_nodeNameMaterial); - if (!rootNode) - { - azdestroy(xmlDoc, AZ::SystemAllocator, AZ::rapidxml::xml_document); - AZ_Error(s_materialBuilder, false, "Failed to find root material node for material at path %s. Please make sure that the material was properly saved to disk.", path.c_str()); - return false; - } - - AZStd::vector texturePaths; - // gather all textures in the material file - AZ::Outcome texturePathsResult = Internal::GetTexturePathsFromMaterial(rootNode, texturePaths); - if (!texturePathsResult.IsSuccess()) - { - azdestroy(xmlDoc, AZ::SystemAllocator, AZ::rapidxml::xml_document); - AZ_Error(s_materialBuilder, false, "Failed to gather dependencies for %s as the material file is malformed. %s", path.c_str(), texturePathsResult.GetError().c_str()); - return false; - } - else if (!texturePathsResult.GetValue().empty()) - { - AZ_Warning(s_materialBuilder, false, "Some nodes in material %s could not be read as the material is malformed. %s. Some dependencies might not be reported correctly. Please make sure that the material was properly saved to disk.", path.c_str(), texturePathsResult.GetValue().c_str()); - } - azdestroy(xmlDoc, AZ::SystemAllocator, AZ::rapidxml::xml_document); - - // fail this if there are absolute paths. - for (const AZStd::string& texPath : texturePaths) - { - if (AZ::IO::PathView(texPath).IsAbsolute()) - { - AZ_Warning(s_materialBuilder, false, "Skipping resolving of texture path %s in material %s as the texture path is an absolute path. Please update the texture path to be relative to the asset cache.", texPath.c_str(), path.c_str()); - texturePaths.erase(AZStd::find(texturePaths.begin(), texturePaths.end(), texPath)); - } - } - - // for each path in the array, split any texture animation entry up into the individual files and add each to the list. - for (const AZStd::string& texPath : texturePaths) - { - if (texPath.find('#') != AZStd::string::npos) - { - AZStd::vector actualTexturePaths; - AZ::Outcome parseTextureSequenceResult = Internal::GetAllTexturesInTextureSequence(texPath, actualTexturePaths); - if (parseTextureSequenceResult.IsSuccess()) - { - texturePaths.erase(AZStd::find(texturePaths.begin(), texturePaths.end(), texPath)); - texturePaths.insert(texturePaths.end(), actualTexturePaths.begin(), actualTexturePaths.end()); - } - else - { - texturePaths.erase(AZStd::find(texturePaths.begin(), texturePaths.end(), texPath)); - AZ_Warning(s_materialBuilder, false, "Failed to parse texture sequence %s when trying to gather dependencies for %s. %s Please make sure the texture sequence path is formatted correctly. Registering dependencies for the texture sequence will be skipped.", texPath.c_str(), path.c_str(), parseTextureSequenceResult.GetError().c_str()); - } - } - } - - // for each texture in the file - for (const AZStd::string& texPath : texturePaths) - { - // if the texture path starts with a '$' then it is a special runtime defined texture, so it it doesn't have - // an actual asset on disk to depend on. If the texture path doesn't have an extension, then it is a texture - // that is determined at runtime (such as 'nearest_cubemap'), so also ignore those, as other things pull in - // those dependencies. - if (AzFramework::StringFunc::StartsWith(texPath, "$") || !AzFramework::StringFunc::Path::HasExtension(texPath.c_str())) - { - continue; - } - - // resolve the path in the file. - AZStd::string resolvedPath; - if (!Internal::ResolveMaterialTexturePath(texPath, resolvedPath)) - { - AZ_Warning(s_materialBuilder, false, "Failed to resolve texture path %s to a product path when gathering dependencies for %s. Registering dependencies on this texture path will be skipped.", texPath.c_str(), path.c_str()); - continue; - } - - resolvedPaths.emplace_back(AZStd::move(resolvedPath)); - } - - return true; - } - - bool MaterialBuilderWorker::PopulateProductDependencyList(AZStd::vector& resolvedPaths, AssetBuilderSDK::ProductPathDependencySet& dependencies) - { - for (const AZStd::string& texturePath : resolvedPaths) - { - if (texturePath.empty()) - { - AZ_Warning(s_materialBuilder, false, "Resolved path is empty.\n"); - return false; - } - - dependencies.emplace(texturePath, AssetBuilderSDK::ProductPathDependencyType::ProductFile); - } - return true; - } - - bool MaterialBuilderWorker::GatherProductDependencies(const AZStd::string& path, AssetBuilderSDK::ProductPathDependencySet& dependencies) - { - AZStd::vector resolvedTexturePaths; - if (!GetResolvedTexturePathsFromMaterial(path, resolvedTexturePaths)) - { - return false; - } - - if (!PopulateProductDependencyList(resolvedTexturePaths, dependencies)) - { - AZ_Warning(s_materialBuilder, false, "Failed to populate dependency list for material %s with possible variants for textures.", path.c_str()); - } - - return true; - } - - AZ::Uuid MaterialBuilderWorker::GetUUID() - { - return AZ::Uuid::CreateString("{258D34AC-12F8-4196-B535-3206D8E7287B}"); - } -} diff --git a/Gems/LmbrCentral/Code/Source/Builders/MaterialBuilder/MaterialBuilderComponent.h b/Gems/LmbrCentral/Code/Source/Builders/MaterialBuilder/MaterialBuilderComponent.h deleted file mode 100644 index a7813cf0bd..0000000000 --- a/Gems/LmbrCentral/Code/Source/Builders/MaterialBuilder/MaterialBuilderComponent.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#pragma once - -#include -#include -#include - -namespace MaterialBuilder -{ - //! Material builder is responsible for building material files - class MaterialBuilderWorker - : public AssetBuilderSDK::AssetBuilderCommandBus::Handler - { - public: - MaterialBuilderWorker(); - ~MaterialBuilderWorker(); - - //! Asset Builder Callback Functions - void CreateJobs(const AssetBuilderSDK::CreateJobsRequest& request, AssetBuilderSDK::CreateJobsResponse& response); - void ProcessJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response); - - //!AssetBuilderSDK::AssetBuilderCommandBus interface - void ShutDown() override; - - //! Returns the UUID for this builder - static AZ::Uuid GetUUID(); - - bool GetResolvedTexturePathsFromMaterial(const AZStd::string& path, AZStd::vector& resolvedPaths); - bool PopulateProductDependencyList(AZStd::vector& resolvedPaths, AssetBuilderSDK::ProductPathDependencySet& dependencies); - - private: - bool GatherProductDependencies(const AZStd::string& path, AssetBuilderSDK::ProductPathDependencySet& dependencies); - - bool m_isShuttingDown = false; - }; - - class BuilderPluginComponent - : public AZ::Component - { - public: - AZ_COMPONENT(BuilderPluginComponent, "{4D1A4B0C-54CE-4397-B8AE-ADD08898C2CD}") - static void Reflect(AZ::ReflectContext* context); - - BuilderPluginComponent(); - - ////////////////////////////////////////////////////////////////////////// - // AZ::Component - virtual void Init(); // create objects, allocate memory and initialize yourself without reaching out to the outside world - virtual void Activate(); // reach out to the outside world and connect up to what you need to, register things, etc. - virtual void Deactivate(); // unregister things, disconnect from the outside world - ////////////////////////////////////////////////////////////////////////// - - virtual ~BuilderPluginComponent(); // free memory an uninitialize yourself. - - private: - MaterialBuilderWorker m_materialBuilder; - }; -} diff --git a/Gems/LmbrCentral/Code/Source/LmbrCentral.cpp b/Gems/LmbrCentral/Code/Source/LmbrCentral.cpp index 027d19fdef..ad90c16f43 100644 --- a/Gems/LmbrCentral/Code/Source/LmbrCentral.cpp +++ b/Gems/LmbrCentral/Code/Source/LmbrCentral.cpp @@ -38,9 +38,6 @@ #include "Geometry/GeometrySystemComponent.h" #include -// Unhandled asset types -// Material -#include "Unhandled/Material/MaterialAssetTypeInfo.h" // Other #include "Unhandled/Other/AudioAssetTypeInfo.h" #include "Unhandled/Other/CharacterPhysicsAssetTypeInfo.h" @@ -353,8 +350,6 @@ namespace LmbrCentral // Add asset types and extensions to AssetCatalog. Uses "AssetCatalogService". if (auto assetCatalog = AZ::Data::AssetCatalogRequestBus::FindFirstHandler(); assetCatalog) { - assetCatalog->EnableCatalogForAsset(AZ::AzTypeInfo::Uuid()); - assetCatalog->EnableCatalogForAsset(AZ::AzTypeInfo::Uuid()); assetCatalog->EnableCatalogForAsset(AZ::AzTypeInfo::Uuid()); assetCatalog->EnableCatalogForAsset(AZ::AzTypeInfo::Uuid()); @@ -364,24 +359,12 @@ namespace LmbrCentral assetCatalog->AddExtension("dds"); assetCatalog->AddExtension("caf"); assetCatalog->AddExtension("xml"); - assetCatalog->AddExtension("mtl"); - assetCatalog->AddExtension("dccmtl"); assetCatalog->AddExtension("sprite"); assetCatalog->AddExtension("cax"); } AZ::Data::AssetManagerNotificationBus::Handler::BusConnect(); - - // Register unhandled asset type info - // Material - auto materialAssetTypeInfo = aznew MaterialAssetTypeInfo(); - materialAssetTypeInfo->Register(); - m_unhandledAssetInfo.emplace_back(materialAssetTypeInfo); - // DCC Material - auto dccMaterialAssetTypeInfo = aznew DccMaterialAssetTypeInfo(); - dccMaterialAssetTypeInfo->Register(); - m_unhandledAssetInfo.emplace_back(dccMaterialAssetTypeInfo); // Other auto audioAssetTypeInfo = aznew AudioAssetTypeInfo(); audioAssetTypeInfo->Register(); diff --git a/Gems/LmbrCentral/Code/Source/LmbrCentralEditor.cpp b/Gems/LmbrCentral/Code/Source/LmbrCentralEditor.cpp index 511bf98582..61b8c8f73d 100644 --- a/Gems/LmbrCentral/Code/Source/LmbrCentralEditor.cpp +++ b/Gems/LmbrCentral/Code/Source/LmbrCentralEditor.cpp @@ -43,7 +43,6 @@ #include #include #include -#include #include #include #include "Builders/CopyDependencyBuilder/CopyDependencyBuilderComponent.h" @@ -84,7 +83,6 @@ namespace LmbrCentral CopyDependencyBuilder::CopyDependencyBuilderComponent::CreateDescriptor(), DependencyBuilder::DependencyBuilderComponent::CreateDescriptor(), LevelBuilder::LevelBuilderComponent::CreateDescriptor(), - MaterialBuilder::BuilderPluginComponent::CreateDescriptor(), SliceBuilder::BuilderPluginComponent::CreateDescriptor(), TranslationBuilder::BuilderPluginComponent::CreateDescriptor(), LuaBuilder::BuilderPluginComponent::CreateDescriptor(), diff --git a/Gems/LmbrCentral/Code/Source/Scripting/RandomTimedSpawnerComponent.cpp b/Gems/LmbrCentral/Code/Source/Scripting/RandomTimedSpawnerComponent.cpp index 275a50c13b..f426bc6075 100644 --- a/Gems/LmbrCentral/Code/Source/Scripting/RandomTimedSpawnerComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Scripting/RandomTimedSpawnerComponent.cpp @@ -13,6 +13,7 @@ #include #include +#include namespace LmbrCentral { @@ -88,8 +89,8 @@ namespace LmbrCentral void RandomTimedSpawnerComponent::Activate() { - AZStd::chrono::system_clock::time_point now = AZStd::chrono::system_clock::now(); - m_currentTime = AZ::ScriptTimePoint(now).GetSeconds(); + const AZ::TimeUs elapsedTimeUs = AZ::GetElapsedTimeUs(); + m_currentTime = AZ::TimeUsToSecondsDouble(elapsedTimeUs); RandomTimedSpawnerComponentRequestBus::Handler::BusConnect(GetEntityId()); CalculateNextSpawnTime(); diff --git a/Gems/LmbrCentral/Code/Source/Scripting/TagComponent.cpp b/Gems/LmbrCentral/Code/Source/Scripting/TagComponent.cpp index f2701473f3..7eb3c62b5d 100644 --- a/Gems/LmbrCentral/Code/Source/Scripting/TagComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Scripting/TagComponent.cpp @@ -92,7 +92,7 @@ namespace LmbrCentral ; behaviorContext->EBus("TagGlobalRequestBus") - ->Event("RequestTaggedEntities", &TagGlobalRequestBus::Events::RequestTaggedEntities) + ->Event("Get Entity By Tag", &TagGlobalRequestBus::Events::RequestTaggedEntities, "RequestTaggedEntities") ; behaviorContext->EBus("TagComponentNotificationsBus") diff --git a/Gems/LmbrCentral/Code/Source/Shape/EditorAxisAlignedBoxShapeComponent.cpp b/Gems/LmbrCentral/Code/Source/Shape/EditorAxisAlignedBoxShapeComponent.cpp index c833677b1d..f78f2f048d 100644 --- a/Gems/LmbrCentral/Code/Source/Shape/EditorAxisAlignedBoxShapeComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Shape/EditorAxisAlignedBoxShapeComponent.cpp @@ -36,8 +36,8 @@ namespace LmbrCentral "Axis Aligned Box Shape", "The Axis Aligned Box Shape component creates a box around the associated entity") ->ClassElement(AZ::Edit::ClassElements::EditorData, "") ->Attribute(AZ::Edit::Attributes::Category, "Shape") - ->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Box_Shape.svg") - ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Box_Shape.svg") + ->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/AxisAlignedBoxShape.svg") + ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Editor/Icons/Components/Viewport/AxisAlignedBoxShape.svg") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC_CE("Game")) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/shape/axis-aligned-box-shape/") diff --git a/Gems/LmbrCentral/Code/Source/Unhandled/Material/MaterialAssetTypeInfo.cpp b/Gems/LmbrCentral/Code/Source/Unhandled/Material/MaterialAssetTypeInfo.cpp deleted file mode 100644 index 24bc43740d..0000000000 --- a/Gems/LmbrCentral/Code/Source/Unhandled/Material/MaterialAssetTypeInfo.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#include "MaterialAssetTypeInfo.h" - -#include - -namespace LmbrCentral -{ - // MaterialAssetTypeInfo - - MaterialAssetTypeInfo::~MaterialAssetTypeInfo() - { - Unregister(); - } - - void MaterialAssetTypeInfo::Register() - { - AZ::AssetTypeInfoBus::Handler::BusConnect(AZ::AzTypeInfo::Uuid()); - } - - void MaterialAssetTypeInfo::Unregister() - { - AZ::AssetTypeInfoBus::Handler::BusDisconnect(AZ::AzTypeInfo::Uuid()); - } - - AZ::Data::AssetType MaterialAssetTypeInfo::GetAssetType() const - { - return AZ::AzTypeInfo::Uuid(); - } - - const char* MaterialAssetTypeInfo::GetAssetTypeDisplayName() const - { - return "Material"; - } - - const char* MaterialAssetTypeInfo::GetGroup() const - { - return "Material"; - } - - const char* MaterialAssetTypeInfo::GetBrowserIcon() const - { - return "Icons/Components/Decal.svg"; - } - - // DccMaterialAssetTypeInfo - - DccMaterialAssetTypeInfo::~DccMaterialAssetTypeInfo() - { - Unregister(); - } - - void DccMaterialAssetTypeInfo::Register() - { - AZ::AssetTypeInfoBus::Handler::BusConnect(AZ::AzTypeInfo::Uuid()); - } - - void DccMaterialAssetTypeInfo::Unregister() - { - AZ::AssetTypeInfoBus::Handler::BusDisconnect(AZ::AzTypeInfo::Uuid()); - } - - AZ::Data::AssetType DccMaterialAssetTypeInfo::GetAssetType() const - { - return AZ::AzTypeInfo::Uuid(); - } - - const char* DccMaterialAssetTypeInfo::GetAssetTypeDisplayName() const - { - return "DccMaterial"; - } - - const char* DccMaterialAssetTypeInfo::GetGroup() const - { - return "DccMaterial"; - } - - const char* DccMaterialAssetTypeInfo::GetBrowserIcon() const - { - return "Icons/Components/Decal.svg"; - } -} // namespace LmbrCentral diff --git a/Gems/LmbrCentral/Code/Source/Unhandled/Material/MaterialAssetTypeInfo.h b/Gems/LmbrCentral/Code/Source/Unhandled/Material/MaterialAssetTypeInfo.h deleted file mode 100644 index 2eafa31b41..0000000000 --- a/Gems/LmbrCentral/Code/Source/Unhandled/Material/MaterialAssetTypeInfo.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -#pragma once - -#include - -namespace LmbrCentral -{ - class MaterialAssetTypeInfo - : public AZ::AssetTypeInfoBus::Handler - { - public: - - AZ_CLASS_ALLOCATOR(MaterialAssetTypeInfo, AZ::SystemAllocator, 0); - - ~MaterialAssetTypeInfo() override; - - ////////////////////////////////////////////////////////////////////////////////////////////// - // AZ::AssetTypeInfoBus::Handler - AZ::Data::AssetType GetAssetType() const override; - const char* GetAssetTypeDisplayName() const override; - const char* GetGroup() const override; - const char* GetBrowserIcon() const override; - ////////////////////////////////////////////////////////////////////////////////////////////// - - void Register(); - void Unregister(); - }; - - class DccMaterialAssetTypeInfo - : public AZ::AssetTypeInfoBus::Handler - { - public: - - AZ_CLASS_ALLOCATOR(DccMaterialAssetTypeInfo, AZ::SystemAllocator, 0); - - ~DccMaterialAssetTypeInfo() override; - - ////////////////////////////////////////////////////////////////////////////////////////////// - // AZ::AssetTypeInfoBus::Handler - AZ::Data::AssetType GetAssetType() const override; - const char* GetAssetTypeDisplayName() const override; - const char* GetGroup() const override; - const char* GetBrowserIcon() const override; - ////////////////////////////////////////////////////////////////////////////////////////////// - - void Register(); - void Unregister(); - }; -} // namespace LmbrCentral diff --git a/Gems/LmbrCentral/Code/Tests/Builders/MaterialBuilderTests.cpp b/Gems/LmbrCentral/Code/Tests/Builders/MaterialBuilderTests.cpp deleted file mode 100644 index 3786ef7565..0000000000 --- a/Gems/LmbrCentral/Code/Tests/Builders/MaterialBuilderTests.cpp +++ /dev/null @@ -1,261 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace UnitTest -{ - using namespace MaterialBuilder; - using namespace AZ; - - class MaterialBuilderTests - : public UnitTest::AllocatorsTestFixture - , public UnitTest::TraceBusRedirector - { - protected: - void SetUp() override - { - UnitTest::AllocatorsTestFixture::SetUp(); - - m_app.reset(aznew AzToolsFramework::ToolsApplication); - m_app->Start(AZ::ComponentApplication::Descriptor()); - // Without this, the user settings component would attempt to save on finalize/shutdown. Since the file is - // shared across the whole engine, if multiple tests are run in parallel, the saving could cause a crash - // in the unit tests. - AZ::UserSettingsComponentRequestBus::Broadcast(&AZ::UserSettingsComponentRequests::DisableSaveOnFinalize); - AZ::Debug::TraceMessageBus::Handler::BusConnect(); - - const AZStd::string engineRoot = AZ::Test::GetEngineRootPath(); - AZ::IO::FileIOBase::GetInstance()->SetAlias("@engroot@", engineRoot.c_str()); - - AZ::IO::Path assetRoot(AZ::Utils::GetProjectPath()); - assetRoot /= "Cache"; - AZ::IO::FileIOBase::GetInstance()->SetAlias("@products@", assetRoot.c_str()); - } - - void TearDown() override - { - AZ::Debug::TraceMessageBus::Handler::BusDisconnect(); - m_app->Stop(); - m_app.reset(); - - UnitTest::AllocatorsTestFixture::TearDown(); - } - - AZStd::string GetTestFileAliasedPath(AZStd::string_view fileName) - { - constexpr char testFileFolder[] = "@engroot@/Gems/LmbrCentral/Code/Tests/Materials/"; - return AZStd::string::format("%s%.*s", testFileFolder, aznumeric_cast(fileName.size()), fileName.data()); - } - - AZStd::string GetTestFileFullPath(AZStd::string_view fileName) - { - AZStd::string aliasedPath = GetTestFileAliasedPath(fileName); - char resolvedPath[AZ_MAX_PATH_LEN]; - AZ::IO::FileIOBase::GetInstance()->ResolvePath(aliasedPath.c_str(), resolvedPath, AZ_MAX_PATH_LEN); - return AZStd::string(resolvedPath); - } - - void TestFailureCase(AZStd::string_view fileName, [[maybe_unused]] int expectedErrorCount) - { - MaterialBuilderWorker worker; - AZStd::vector resolvedPaths; - - AZStd::string absoluteMatPath = GetTestFileFullPath(fileName); - - AZ_TEST_START_ASSERTTEST; - ASSERT_FALSE(worker.GetResolvedTexturePathsFromMaterial(absoluteMatPath, resolvedPaths)); - AZ_TEST_STOP_ASSERTTEST(expectedErrorCount * 2); // The assert tests double count AZ errors, so just multiply expected count by 2 - ASSERT_EQ(resolvedPaths.size(), 0); - } - - void TestSuccessCase(AZStd::string_view fileName, AZStd::vector& expectedTextures) - { - MaterialBuilderWorker worker; - AZStd::vector resolvedPaths; - size_t texturesInMaterialFile = expectedTextures.size(); - - AZStd::string absoluteMatPath = GetTestFileFullPath(fileName); - ASSERT_TRUE(worker.GetResolvedTexturePathsFromMaterial(absoluteMatPath, resolvedPaths)); - ASSERT_EQ(resolvedPaths.size(), texturesInMaterialFile); - if (texturesInMaterialFile > 0) - { - ASSERT_THAT(resolvedPaths, testing::ElementsAreArray(expectedTextures)); - - AssetBuilderSDK::ProductPathDependencySet dependencies; - ASSERT_TRUE(worker.PopulateProductDependencyList(resolvedPaths, dependencies)); - ASSERT_EQ(dependencies.size(), texturesInMaterialFile); - } - } - - void TestSuccessCase(AZStd::string_view fileName, const char* expectedTexture) - { - AZStd::vector expectedTextures; - expectedTextures.push_back(expectedTexture); - TestSuccessCase(fileName, expectedTextures); - } - - void TestSuccessCaseNoDependencies(AZStd::string_view fileName) - { - AZStd::vector expectedTextures; - TestSuccessCase(fileName, expectedTextures); - } - - AZStd::unique_ptr m_app; - }; - - TEST_F(MaterialBuilderTests, MaterialBuilder_EmptyFile_ExpectFailure) - { - // Should fail in MaterialBuilderWorker::GetResolvedTexturePathsFromMaterial, when checking for the size of the file. - TestFailureCase("test_mat1.mtl", 1); - } - - TEST_F(MaterialBuilderTests, MaterialBuilder_MalformedMaterial_NoChildren_ExpectFailure) - { - // Should fail in MaterialBuilderWorker::GetResolvedTexturePathsFromMaterial after calling - // Internal::GetTexturePathsFromMaterial, which should return an AZ::Failure when both a Textures node and a - // SubMaterials node are not found. No other AZ_Errors should be generated. - TestFailureCase("test_mat2.mtl", 1); - } - - TEST_F(MaterialBuilderTests, MaterialBuilder_MalformedMaterial_EmptyTexturesNode_NoDependencies) - { - TestSuccessCaseNoDependencies("test_mat3.mtl"); - } - - TEST_F(MaterialBuilderTests, MaterialBuilder_MalformedMaterial_EmptySubMaterialNode_ExpectFailure) - { - // Should fail in MaterialBuilderWorker::GetResolvedTexturePathsFromMaterial after calling - // Internal::GetTexturePathsFromMaterial, which should return an AZ::Failure when a SubMaterials node is present, - // but has no children Material node. No other AZ_Errors should be generated. - TestFailureCase("test_mat4.mtl", 1); - } - - TEST_F(MaterialBuilderTests, MaterialBuilder_MalformedMaterial_EmptyTextureNode_NoDependencies) - { - TestSuccessCaseNoDependencies("test_mat5.mtl"); - } - - TEST_F(MaterialBuilderTests, MaterialBuilder_MalformedMaterial_EmptyMaterialInSubMaterial_ExpectFailure) - { - // Should fail in MaterialBuilderWorker::GetResolvedTexturePathsFromMaterial after calling - // Internal::GetTexturePathsFromMaterial, which should return an AZ::Failure when a SubMaterials node is present, - // but a child Material node has no child Textures node and no child SubMaterials node. No other AZ_Errors should - // be generated. - TestFailureCase("test_mat6.mtl", 1); - } - - TEST_F(MaterialBuilderTests, MaterialBuilder_MalformedMaterial_EmptyTextureNodeInSubMaterial_NoDependencies) - { - TestSuccessCaseNoDependencies("test_mat7.mtl"); - } - -#if AZ_TRAIT_OS_USE_WINDOWS_FILE_PATHS // The following test file 'test_mat8.mtl' has a windows-specific absolute path, so this test is only valid on windows - TEST_F(MaterialBuilderTests, MaterialBuilder_TextureAbsolutePath_NoDependencies) - { - TestSuccessCaseNoDependencies("test_mat8.mtl"); - } -#endif - - TEST_F(MaterialBuilderTests, MaterialBuilder_TextureRuntimeAlias_NoDependencies) - { - TestSuccessCaseNoDependencies("test_mat9.mtl"); - } - - TEST_F(MaterialBuilderTests, MaterialBuilder_TextureRuntimeTexture_NoDependencies) - { - TestSuccessCaseNoDependencies("test_mat10.mtl"); - } - - TEST_F(MaterialBuilderTests, MaterialBuilder_SingleMaterialSingleTexture_ValidSourceFormat) - { - // texture referenced is textures/natural/terrain/am_floor_tile_ddn.png - const char* expectedPath = "textures/natural/terrain/am_floor_tile_ddn.dds"; - TestSuccessCase("test_mat11.mtl", expectedPath); - } - - TEST_F(MaterialBuilderTests, MaterialBuilder_SingleMaterialSingleTexture_ValidProductFormat) - { - // texture referenced is textures/natural/terrain/am_floor_tile_ddn.dds - const char* expectedPath = "textures/natural/terrain/am_floor_tile_ddn.dds"; - TestSuccessCase("test_mat12.mtl", expectedPath); - } - - TEST_F(MaterialBuilderTests, MaterialBuilder_SingleMaterialSingleTexture_InvalidSourceFormat_NoDependenices) - { - // texture referenced is textures/natural/terrain/am_floor_tile_ddn.txt - TestSuccessCaseNoDependencies("test_mat13.mtl"); - } - - TEST_F(MaterialBuilderTests, MaterialBuilder_TextureAnimSequence) - { - AZStd::vector expectedPaths = { - "path/to/my/textures/test_anim_sequence_01_texture000.dds", - "path/to/my/textures/test_anim_sequence_01_texture001.dds", - "path/to/my/textures/test_anim_sequence_01_texture002.dds", - "path/to/my/textures/test_anim_sequence_01_texture003.dds", - "path/to/my/textures/test_anim_sequence_01_texture004.dds", - "path/to/my/textures/test_anim_sequence_01_texture005.dds" - }; - TestSuccessCase("test_mat14.mtl", expectedPaths); - } - - TEST_F(MaterialBuilderTests, MaterialBuilder_SingleMaterialMultipleTexture) - { - AZStd::vector expectedPaths = { - "engineassets/textures/hex.dds", - "engineassets/textures/hex_ddn.dds" - }; - TestSuccessCase("test_mat15.mtl", expectedPaths); - } - - TEST_F(MaterialBuilderTests, MaterialBuilder_MalformedMaterial_MultipleTextures_OneEmptyTexture) - { - TestSuccessCase("test_mat16.mtl", "engineassets/textures/hex_ddn.dds"); - } - - TEST_F(MaterialBuilderTests, MaterialBuilder_SingleMaterialMultipleTexture_ResolveLeadingSeparatorsAndAliases) - { - AZStd::vector expectedPaths = { - "engineassets/textures/hex.dds", // resolved from "/engineassets/textures/hex.dds" - "engineassets/textures/hex_ddn.dds", // resolved from "./engineassets/textures/hex_ddn.dds" - "engineassets/textures/hex_spec.dds" // resolved from "@products@/engineassets/textures/hex_spec.dds" - }; - TestSuccessCase("test_mat17.mtl", expectedPaths); - } - - TEST_F(MaterialBuilderTests, MaterialBuilder_SubMaterialSingleTexture) - { - AZStd::vector expectedPaths = { - "engineassets/textures/scratch.dds", - "engineassets/textures/perlinnoise2d.dds" - }; - TestSuccessCase("test_mat18.mtl", expectedPaths); - } - - TEST_F(MaterialBuilderTests, MaterialBuilder_SubMaterialMultipleTexture) - { - AZStd::vector expectedPaths = { - "engineassets/textures/scratch.dds", - "engineassets/textures/scratch_ddn.dds", - "engineassets/textures/perlinnoise2d.dds", - "engineassets/textures/perlinnoisenormal_ddn.dds" - }; - TestSuccessCase("test_mat19.mtl", expectedPaths); - } -} diff --git a/Gems/LmbrCentral/Code/Tests/Builders/SliceBuilderTests.cpp b/Gems/LmbrCentral/Code/Tests/Builders/SliceBuilderTests.cpp index 73ef7143c8..0965991dfa 100644 --- a/Gems/LmbrCentral/Code/Tests/Builders/SliceBuilderTests.cpp +++ b/Gems/LmbrCentral/Code/Tests/Builders/SliceBuilderTests.cpp @@ -311,7 +311,6 @@ namespace UnitTest SerializeContext* GetSerializeContext() override { return m_serializeContext; } BehaviorContext* GetBehaviorContext() override { return nullptr; } JsonRegistrationContext* GetJsonRegistrationContext() override { return nullptr; } - const char* GetAppRoot() const override { return nullptr; } const char* GetEngineRoot() const override { return nullptr; } const char* GetExecutableFolder() const override { return nullptr; } void EnumerateEntities(const EntityCallback& /*callback*/) override {} diff --git a/Gems/LmbrCentral/Code/lmbrcentral_editor_files.cmake b/Gems/LmbrCentral/Code/lmbrcentral_editor_files.cmake index 5c77888922..aea2f493c7 100644 --- a/Gems/LmbrCentral/Code/lmbrcentral_editor_files.cmake +++ b/Gems/LmbrCentral/Code/lmbrcentral_editor_files.cmake @@ -116,8 +116,6 @@ set(FILES Source/Builders/LevelBuilder/LevelBuilderComponent.h Source/Builders/LevelBuilder/LevelBuilderWorker.cpp Source/Builders/LevelBuilder/LevelBuilderWorker.h - Source/Builders/MaterialBuilder/MaterialBuilderComponent.cpp - Source/Builders/MaterialBuilder/MaterialBuilderComponent.h Source/Builders/SliceBuilder/SliceBuilderComponent.cpp Source/Builders/SliceBuilder/SliceBuilderComponent.h Source/Builders/SliceBuilder/SliceBuilderWorker.cpp diff --git a/Gems/LmbrCentral/Code/lmbrcentral_editor_tests_files.cmake b/Gems/LmbrCentral/Code/lmbrcentral_editor_tests_files.cmake index 0f0cf484d1..afba79e566 100644 --- a/Gems/LmbrCentral/Code/lmbrcentral_editor_tests_files.cmake +++ b/Gems/LmbrCentral/Code/lmbrcentral_editor_tests_files.cmake @@ -21,7 +21,6 @@ set(FILES Tests/Builders/CopyDependencyBuilderTest.cpp Tests/Builders/SliceBuilderTests.cpp Tests/Builders/LevelBuilderTest.cpp - Tests/Builders/MaterialBuilderTests.cpp Tests/Builders/LuaBuilderTests.cpp Tests/Builders/SeedBuilderTests.cpp Source/LmbrCentral.cpp diff --git a/Gems/LmbrCentral/Code/lmbrcentral_files.cmake b/Gems/LmbrCentral/Code/lmbrcentral_files.cmake index 18412e2a38..20a366b5f7 100644 --- a/Gems/LmbrCentral/Code/lmbrcentral_files.cmake +++ b/Gems/LmbrCentral/Code/lmbrcentral_files.cmake @@ -145,8 +145,6 @@ set(FILES Source/Shape/ShapeComponentConverters.inl Source/Shape/ShapeGeometryUtil.h Source/Shape/ShapeGeometryUtil.cpp - Source/Unhandled/Material/MaterialAssetTypeInfo.cpp - Source/Unhandled/Material/MaterialAssetTypeInfo.h Source/Unhandled/Other/AudioAssetTypeInfo.cpp Source/Unhandled/Other/AudioAssetTypeInfo.h Source/Unhandled/Other/CharacterPhysicsAssetTypeInfo.cpp diff --git a/Gems/LyShine/Assets/seedList.seed b/Gems/LyShine/Assets/seedList.seed index b19aa77191..6b53200c4a 100644 --- a/Gems/LyShine/Assets/seedList.seed +++ b/Gems/LyShine/Assets/seedList.seed @@ -2,8 +2,8 @@ - - + + diff --git a/Gems/LyShine/Code/Editor/Animation/AnimationContext.cpp b/Gems/LyShine/Code/Editor/Animation/AnimationContext.cpp index 8f8864106b..1e81f2e179 100644 --- a/Gems/LyShine/Code/Editor/Animation/AnimationContext.cpp +++ b/Gems/LyShine/Code/Editor/Animation/AnimationContext.cpp @@ -13,7 +13,6 @@ #include "AnimationContext.h" #include -#include "ITimer.h" #include "GameEngine.h" #include "Objects/SelectionGroup.h" @@ -29,6 +28,27 @@ #include "IPostRenderer.h" #include "UiEditorAnimationBus.h" +#include + +namespace Internal +{ + float GetFrameDeltaTime() + { + const AZ::TimeUs frameDeltaTimeMs = AZ::GetSimulationTickDeltaTimeUs(); + return AZ::TimeUsToSeconds(frameDeltaTimeMs); + } + + float GetFrameRate() + { + const float deltaTime = GetFrameDeltaTime(); + if (AZ::IsClose(deltaTime, 0.0f)) + { + return 0.0f; + } + return 1.0f / deltaTime; + } +} + ////////////////////////////////////////////////////////////////////////// // Animation Callback. ////////////////////////////////////////////////////////////////////////// @@ -380,17 +400,15 @@ void CUiAnimationContext::Update() return; } - ITimer* pTimer = GetIEditor()->GetSystem()->GetITimer(); - AnimateActiveSequence(); - float dt = pTimer->GetFrameTime(); - m_currTime += dt * m_fTimeScale; + const float frameDeltaTime = Internal::GetFrameDeltaTime(); + m_currTime += frameDeltaTime * m_fTimeScale; if (!m_recording) { - GetUiAnimationSystem()->PreUpdate(dt); - GetUiAnimationSystem()->PostUpdate(dt); + GetUiAnimationSystem()->PreUpdate(frameDeltaTime); + GetUiAnimationSystem()->PostUpdate(frameDeltaTime); } if (m_currTime > m_timeMarker.end) @@ -444,7 +462,7 @@ void CUiAnimationContext::OnPostRender() { SUiAnimContext ac; ac.dt = 0; - ac.fps = GetIEditor()->GetSystem()->GetITimer()->GetFrameRate(); + ac.fps = Internal::GetFrameRate(); ac.time = m_currTime; ac.bSingleFrame = true; ac.bForcePlay = true; @@ -586,7 +604,7 @@ void CUiAnimationContext::AnimateActiveSequence() SUiAnimContext ac; ac.dt = 0; - ac.fps = GetIEditor()->GetSystem()->GetITimer()->GetFrameRate(); + ac.fps = Internal::GetFrameRate(); ac.time = m_currTime; ac.bSingleFrame = true; ac.bForcePlay = true; diff --git a/Gems/LyShine/Code/Editor/Animation/UiAnimViewDialog.cpp b/Gems/LyShine/Code/Editor/Animation/UiAnimViewDialog.cpp index e6c2dda74c..9ad9a50aa5 100644 --- a/Gems/LyShine/Code/Editor/Animation/UiAnimViewDialog.cpp +++ b/Gems/LyShine/Code/Editor/Animation/UiAnimViewDialog.cpp @@ -257,6 +257,7 @@ BOOL CUiAnimViewDialog::OnInitDialog() m_wndSplitter->addWidget(m_wndDopeSheet); m_wndSplitter->setStretchFactor(0, 1); m_wndSplitter->setStretchFactor(1, 10); + m_wndSplitter->setChildrenCollapsible(false); l->addWidget(m_wndSplitter); w->setLayout(l); setCentralWidget(w); @@ -283,6 +284,11 @@ BOOL CUiAnimViewDialog::OnInitDialog() m_wndCurveEditorDock->setVisible(false); m_wndCurveEditorDock->setEnabled(false); + // In order to prevent the track editor view from collapsing and becoming invisible, we use the + // minimum size of the curve editor for the track editor as well. Since both editors use the same + // view widget in the UI animation editor when not in 'Both' mode, the sizes can be identical. + m_wndDopeSheet->setMinimumSize(m_wndCurveEditor->minimumSizeHint()); + InitSequences(); m_lazyInitDone = false; diff --git a/Gems/LyShine/Code/Editor/EditorWindow.cpp b/Gems/LyShine/Code/Editor/EditorWindow.cpp index a4ad4d7043..7b60474ed5 100644 --- a/Gems/LyShine/Code/Editor/EditorWindow.cpp +++ b/Gems/LyShine/Code/Editor/EditorWindow.cpp @@ -8,6 +8,7 @@ #include "EditorCommon.h" #include "CanvasHelpers.h" #include "AssetDropHelpers.h" +#include #include #include #include @@ -697,15 +698,36 @@ bool EditorWindow::SaveCanvasToXml(UiCanvasMetadata& canvasMetadata, bool forceA else if (recentFiles.size() > 0) { dir = Path::GetPath(recentFiles.front()); - dir.append(canvasMetadata.m_canvasDisplayName.c_str()); } // Else go to the default canvas directory else { dir = FileHelpers::GetAbsoluteDir(UICANVASEDITOR_CANVAS_DIRECTORY); - dir.append(canvasMetadata.m_canvasDisplayName.c_str()); } + // Make sure the directory exists. If not, walk up the directory path until we find one that does + // so that we will have a consistent 'starting folder' in the 'AzQtComponents::FileDialog::GetSaveFileName' call + // across different platforms. + AZ::IO::FixedMaxPath dirPath(dir.toUtf8().constData()); + + while (!AZ::IO::SystemFile::IsDirectory(dirPath.c_str())) + { + AZ::IO::PathView parentPath = dirPath.ParentPath(); + if (parentPath == dirPath) + { + // We've reach the root path, need to break out whether or not + // the root path exists + break; + } + else + { + dirPath = parentPath; + } + } + // Append the default filename + dirPath /= canvasMetadata.m_canvasDisplayName; + dir = QString::fromUtf8(dirPath.c_str(), static_cast(dirPath.Native().size())); + QString filename = AzQtComponents::FileDialog::GetSaveFileName(nullptr, QString(), dir, diff --git a/Gems/LyShine/Code/Source/Animation/AzEntityNode.cpp b/Gems/LyShine/Code/Source/Animation/AzEntityNode.cpp index 2b31726d3e..48035af9cc 100644 --- a/Gems/LyShine/Code/Source/Animation/AzEntityNode.cpp +++ b/Gems/LyShine/Code/Source/Animation/AzEntityNode.cpp @@ -16,8 +16,6 @@ #include "PNoise3.h" #include "AnimSequence.h" -#include - #include #include #include diff --git a/Gems/LyShine/Code/Source/Animation/UiAnimationSystem.cpp b/Gems/LyShine/Code/Source/Animation/UiAnimationSystem.cpp index ab45042b4c..d904be02b1 100644 --- a/Gems/LyShine/Code/Source/Animation/UiAnimationSystem.cpp +++ b/Gems/LyShine/Code/Source/Animation/UiAnimationSystem.cpp @@ -22,9 +22,7 @@ #include #include #include -#include #include -#include ////////////////////////////////////////////////////////////////////////// namespace @@ -98,7 +96,7 @@ UiAnimationSystem::UiAnimationSystem() m_pCallback = NULL; m_bPaused = false; m_sequenceStopBehavior = eSSB_GotoEndTime; - m_lastUpdateTime.SetValue(0); + m_lastUpdateTime = AZ::Time::ZeroTimeUs; m_nextSequenceId = 1; } @@ -615,20 +613,6 @@ bool UiAnimationSystem::InternalStopSequence(IUiAnimSequence* pSequence, bool bA ////////////////////////////////////////////////////////////////////////// bool UiAnimationSystem::AbortSequence(IUiAnimSequence* pSequence, bool bLeaveTime) { - assert(pSequence); - - // to avoid any camera blending after aborting a cut scene - IViewSystem* pViewSystem = gEnv->pSystem->GetIViewSystem(); - if (pViewSystem) - { - pViewSystem->SetBlendParams(0, 0, 0); - IView* pView = pViewSystem->GetActiveView(); - if (pView) - { - pView->ResetBlending(); - } - } - return InternalStopSequence(pSequence, true, !bLeaveTime); } @@ -808,7 +792,7 @@ void UiAnimationSystem::UpdateInternal(const float deltaTime, const bool bPreUpd } // don't update more than once if dt==0.0 - CTimeValue curTime = gEnv->pTimer->GetFrameStartTime(); + const AZ::TimeUs curTime = AZ::GetElapsedTimeUs(); if (deltaTime == 0.0f && curTime == m_lastUpdateTime && !gEnv->IsEditor()) { return; diff --git a/Gems/LyShine/Code/Source/Animation/UiAnimationSystem.h b/Gems/LyShine/Code/Source/Animation/UiAnimationSystem.h index c270d9ca60..cd51cd51d0 100644 --- a/Gems/LyShine/Code/Source/Animation/UiAnimationSystem.h +++ b/Gems/LyShine/Code/Source/Animation/UiAnimationSystem.h @@ -12,6 +12,7 @@ #include #include #include +#include struct PlayingUIAnimSequence { @@ -164,7 +165,7 @@ private: IUiAnimationCallback* m_pCallback; - CTimeValue m_lastUpdateTime; + AZ::TimeUs m_lastUpdateTime; using Sequences = AZStd::vector >; Sequences m_sequences; diff --git a/Gems/LyShine/Code/Source/Sprite.cpp b/Gems/LyShine/Code/Source/Sprite.cpp index 5c7adae481..d9a0775cc1 100644 --- a/Gems/LyShine/Code/Source/Sprite.cpp +++ b/Gems/LyShine/Code/Source/Sprite.cpp @@ -855,7 +855,8 @@ bool CSprite::LoadImage(const AZStd::string& nameTex, AZ::Data::Instance().c_str()); return false; } diff --git a/Gems/LyShine/Code/Source/UiFaderComponent.cpp b/Gems/LyShine/Code/Source/UiFaderComponent.cpp index d9309a7505..cfca774612 100644 --- a/Gems/LyShine/Code/Source/UiFaderComponent.cpp +++ b/Gems/LyShine/Code/Source/UiFaderComponent.cpp @@ -23,8 +23,6 @@ #include #include -#include - #include "UiSerialize.h" #include "RenderToTextureBus.h" diff --git a/Gems/LyShine/Code/Source/UiFlipbookAnimationComponent.cpp b/Gems/LyShine/Code/Source/UiFlipbookAnimationComponent.cpp index 9b09630957..b68f92c0fc 100644 --- a/Gems/LyShine/Code/Source/UiFlipbookAnimationComponent.cpp +++ b/Gems/LyShine/Code/Source/UiFlipbookAnimationComponent.cpp @@ -19,7 +19,6 @@ #include #include #include -#include namespace { diff --git a/Gems/LyShine/Code/Source/UiParticleEmitterComponent.cpp b/Gems/LyShine/Code/Source/UiParticleEmitterComponent.cpp index c6fd144d3a..25498fc316 100644 --- a/Gems/LyShine/Code/Source/UiParticleEmitterComponent.cpp +++ b/Gems/LyShine/Code/Source/UiParticleEmitterComponent.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include @@ -73,7 +74,7 @@ void UiParticleEmitterComponent::SetIsEmitting(bool emitParticles) { m_nextEmitTime = (m_isHitParticleCountOnActivate ? -m_particleLifetime : 0.0f); m_emitterAge = 0.0f; - m_random.SetSeed(m_isRandomSeedFixed ? m_randomSeed : gEnv->pTimer->GetAsyncTime().GetMilliSecondsAsInt64()); + m_random.SetSeed(m_isRandomSeedFixed ? m_randomSeed : aznumeric_cast(AZ::GetElapsedTimeMs())); } m_isEmitting = emitParticles; } diff --git a/Gems/LyShine/Code/Source/UiScrollBarComponent.cpp b/Gems/LyShine/Code/Source/UiScrollBarComponent.cpp index f4ea3f5e2c..b1a3530bd8 100644 --- a/Gems/LyShine/Code/Source/UiScrollBarComponent.cpp +++ b/Gems/LyShine/Code/Source/UiScrollBarComponent.cpp @@ -18,7 +18,7 @@ #include #include -#include +#include //////////////////////////////////////////////////////////////////////////////////////////////////// //! UiScrollerNotificationBus Behavior context handler class @@ -436,7 +436,8 @@ bool UiScrollBarComponent::HandlePressed(AZ::Vector2 point, bool& shouldStayActi else { // Move handle - m_lastMoveTime = gEnv->pTimer->GetCurrTime(ITimer::ETIMER_UI); + const AZ::TimeMs realTimeMs = AZ::GetRealElapsedTimeMs(); + m_lastMoveTime = AZ::TimeMsToSeconds(realTimeMs); m_moveDelayTime = 0.45f; MoveHandle(pointLoc); @@ -617,7 +618,8 @@ void UiScrollBarComponent::InputPositionUpdate(AZ::Vector2 point) LocRelativeToHandle pointLoc = GetLocationRelativeToHandle(point); if (pointLoc != LocRelativeToHandle::OnHandle) { - const float currentTime = gEnv->pTimer->GetCurrTime(ITimer::ETIMER_UI); + const AZ::TimeMs realTimeMs = AZ::GetRealElapsedTimeMs(); + const float currentTime = AZ::TimeMsToSeconds(realTimeMs); if (currentTime - m_lastMoveTime > m_moveDelayTime) { m_lastMoveTime = currentTime; diff --git a/Gems/LyShine/Code/Source/UiTextInputComponent.cpp b/Gems/LyShine/Code/Source/UiTextInputComponent.cpp index e789301572..9a55a3feeb 100644 --- a/Gems/LyShine/Code/Source/UiTextInputComponent.cpp +++ b/Gems/LyShine/Code/Source/UiTextInputComponent.cpp @@ -13,11 +13,11 @@ #include #include #include +#include #include #include -#include #include #include #include @@ -745,19 +745,17 @@ void UiTextInputComponent::Update(float deltaTime) // update cursor blinking, only if: this component is active, and blink interval set, and there is no text selection if (m_isEditing && m_cursorBlinkInterval > 0.0f && m_textSelectionStartPos == m_textCursorPos) { + const AZ::TimeMs realTimeMs = AZ::GetRealElapsedTimeMs(); + const float currentTime = AZ::TimeMsToSeconds(realTimeMs); if (m_cursorBlinkStartTime == 0.0f) { - m_cursorBlinkStartTime = gEnv->pTimer->GetCurrTime(ITimer::ETIMER_UI); + m_cursorBlinkStartTime = currentTime; } - else + else if (currentTime - m_cursorBlinkStartTime > m_cursorBlinkInterval * 0.5f) { - const float currentTime = gEnv->pTimer->GetCurrTime(ITimer::ETIMER_UI); - if (currentTime - m_cursorBlinkStartTime > m_cursorBlinkInterval * 0.5f) - { - m_textCursorColor.SetA(m_textCursorColor.GetA() ? 0.0f : 1.0f); - m_cursorBlinkStartTime = currentTime; - EBUS_EVENT_ID(m_textEntity, UiTextBus, SetSelectionRange, m_textSelectionStartPos, m_textCursorPos, m_textCursorColor); - } + m_textCursorColor.SetA(m_textCursorColor.GetA() ? 0.0f : 1.0f); + m_cursorBlinkStartTime = currentTime; + EBUS_EVENT_ID(m_textEntity, UiTextBus, SetSelectionRange, m_textSelectionStartPos, m_textCursorPos, m_textCursorColor); } } } diff --git a/Gems/LyShine/Code/Source/UiTooltipDisplayComponent.cpp b/Gems/LyShine/Code/Source/UiTooltipDisplayComponent.cpp index b1adfb6157..cad2dc2b5f 100644 --- a/Gems/LyShine/Code/Source/UiTooltipDisplayComponent.cpp +++ b/Gems/LyShine/Code/Source/UiTooltipDisplayComponent.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -19,8 +20,6 @@ #include #include -#include - //////////////////////////////////////////////////////////////////////////////////////////////////// // PUBLIC MEMBER FUNCTIONS //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -173,8 +172,8 @@ void UiTooltipDisplayComponent::Hide() { // Since sequences can't have keys that represent current values, // only play the hide animation if the show animation has completed. - - m_timeSinceLastShown = gEnv->pTimer->GetCurrTime(ITimer::ETIMER_UI); + const AZ::TimeMs realTimeMs = AZ::GetRealElapsedTimeMs(); + m_timeSinceLastShown = AZ::TimeMsToSeconds(realTimeMs); EndTransitionState(); @@ -184,7 +183,8 @@ void UiTooltipDisplayComponent::Hide() case State::Shown: { - m_timeSinceLastShown = gEnv->pTimer->GetCurrTime(ITimer::ETIMER_UI); + const AZ::TimeMs realTimeMs = AZ::GetRealElapsedTimeMs(); + m_timeSinceLastShown = AZ::TimeMsToSeconds(realTimeMs); // Check if there is a hide animation to play IUiAnimationSystem* animSystem = nullptr; @@ -220,7 +220,9 @@ void UiTooltipDisplayComponent::Update() if (m_state == State::DelayBeforeShow) { // Check if it's time to show the tooltip - if ((gEnv->pTimer->GetCurrTime(ITimer::ETIMER_UI) - m_stateStartTime) >= m_curDelayTime) + const AZ::TimeMs realTimeMs = AZ::GetRealElapsedTimeMs(); + const float currentTime = AZ::TimeMsToSeconds(realTimeMs); + if ((currentTime - m_stateStartTime) >= m_curDelayTime) { // Make sure nothing has changed with the hover interactable if (m_tooltipElement.IsValid() && UiTooltipDataPopulatorBus::FindFirstHandler(m_tooltipElement)) @@ -238,7 +240,9 @@ void UiTooltipDisplayComponent::Update() // Check if it's time to hide the tooltip if (m_displayTime >= 0.0f) { - if ((gEnv->pTimer->GetCurrTime(ITimer::ETIMER_UI) - m_stateStartTime) >= m_displayTime) + const AZ::TimeMs realTimeMs = AZ::GetRealElapsedTimeMs(); + const float currentTime = AZ::TimeMsToSeconds(realTimeMs); + if ((currentTime - m_stateStartTime) >= m_displayTime) { // Hide tooltip Hide(); @@ -425,7 +429,8 @@ void UiTooltipDisplayComponent::Deactivate() void UiTooltipDisplayComponent::SetState(State state) { m_state = state; - m_stateStartTime = gEnv->pTimer->GetCurrTime(ITimer::ETIMER_UI); + const AZ::TimeMs realTimeMs = AZ::GetRealElapsedTimeMs(); + m_stateStartTime = AZ::TimeMsToSeconds(realTimeMs); switch (m_state) { diff --git a/Gems/LyShine/Code/Tests/AnimationTest.cpp b/Gems/LyShine/Code/Tests/AnimationTest.cpp index 1fc662413f..92762d02ed 100644 --- a/Gems/LyShine/Code/Tests/AnimationTest.cpp +++ b/Gems/LyShine/Code/Tests/AnimationTest.cpp @@ -8,7 +8,8 @@ #include "LyShineTest.h" #include -#include +#include +#include #include #include @@ -17,21 +18,26 @@ namespace UnitTest { - class FrameTimerMock - : public TimerMock + struct AnimationTestStubTimer : public AZ::StubTimeSystem { - public: - const CTimeValue& GetFrameStartTime([[maybe_unused]] ITimer::ETimer which = ITimer::ETIMER_GAME) const override + AZ_RTTI(UnitTest::AnimationTestStubTimer, "{541EBC6C-E793-4433-9402-4CAD2F6770E3}", AZ::StubTimeSystem); + + AZ::TimeMs GetElapsedTimeMs() const override { - return m_frameStartTime; - } - void AddFrameStartTime(float seconds) - { - m_frameStartTime += CTimeValue(seconds); + return AZ::TimeUsToMs(m_timeUs); } - private: - CTimeValue m_frameStartTime = CTimeValue(); + AZ::TimeUs GetElapsedTimeUs() const override + { + return m_timeUs; + } + + void AddFrameTime(float sec) + { + m_timeUs += AZ::SecondsToTimeUs(sec); + } + + AZ::TimeUs m_timeUs = AZ::Time::ZeroTimeUs; }; class TrackEventHandler @@ -65,6 +71,22 @@ namespace UnitTest AZStd::vector m_recievedEvents; }; + class LyShineAnimationTestApplication : public AzFramework::Application + { + public: + LyShineAnimationTestApplication() + : AzFramework::Application() + { + m_timeSystem.reset(); + m_timeSystem = AZStd::make_unique(); + } + + UnitTest::AnimationTestStubTimer* GetTimer() + { + return azdynamic_cast(m_timeSystem.get()); + } + }; + class LyShineAnimationTest : public LyShineTest { @@ -74,31 +96,38 @@ namespace UnitTest { } + void SetupApplication() override + { + AZ::ComponentApplication::Descriptor appDesc; + appDesc.m_memoryBlocksByteSize = 10 * 1024 * 1024; + appDesc.m_recordingMode = AZ::Debug::AllocationRecords::RECORD_FULL; + appDesc.m_stackRecordLevels = 20; + + m_application = aznew LyShineAnimationTestApplication(); + m_systemEntity = m_application->Create(appDesc); + m_systemEntity->Init(); + m_systemEntity->Activate(); + } + void SetupEnvironment() override { LyShineTest::SetupEnvironment(); - m_data = AZStd::make_unique(); - m_env->m_stubEnv.pTimer = &m_data->m_timer; - m_canvasComponent = aznew UiCanvasComponent; } void TearDown() override { delete m_canvasComponent; - m_data.reset(); UiAnimationNotificationBus::ClearQueuedEvents(); LyShineTest::TearDown(); } - struct Data + UnitTest::AnimationTestStubTimer* GetTimer() { - testing::NiceMock m_timer; - }; - - AZStd::unique_ptr m_data; + return static_cast(m_application)->GetTimer(); + } UiCanvasComponent* m_canvasComponent; }; @@ -126,13 +155,14 @@ namespace UnitTest eventHandler.Connect(m_canvasComponent->GetEntityId()); animSys->PlaySequence(sequence, nullptr, true, true); + UnitTest::AnimationTestStubTimer* timer = GetTimer(); for (int frame = 0; frame < 2; ++frame) { static float deltaTime = 1.0f / 60.0f; animSys->PreUpdate(deltaTime); animSys->PostUpdate(deltaTime); - m_data->m_timer.AddFrameStartTime(deltaTime); + timer->AddFrameTime(deltaTime); } UiAnimationNotificationBus::ExecuteQueuedEvents(); diff --git a/Gems/LyShine/Code/Tests/LyShineTest.h b/Gems/LyShine/Code/Tests/LyShineTest.h index 250b53ee40..a2383f87cc 100644 --- a/Gems/LyShine/Code/Tests/LyShineTest.h +++ b/Gems/LyShine/Code/Tests/LyShineTest.h @@ -37,7 +37,7 @@ namespace UnitTest appDesc.m_recordingMode = AZ::Debug::AllocationRecords::RECORD_FULL; appDesc.m_stackRecordLevels = 20; - m_systemEntity = m_application.Create(appDesc); + m_systemEntity = m_application->Create(appDesc); m_systemEntity->Init(); m_systemEntity->Activate(); } @@ -54,7 +54,9 @@ namespace UnitTest { m_env.reset(); gEnv = m_priorEnv; - m_application.Destroy(); + m_application->Destroy(); + delete m_application; + m_application = nullptr; } struct StubEnv @@ -62,8 +64,8 @@ namespace UnitTest SSystemGlobalEnvironment m_stubEnv; }; - AZ::ComponentApplication m_application; - AZ::Entity* m_systemEntity; + AZ::ComponentApplication* m_application = nullptr; + AZ::Entity* m_systemEntity = nullptr; AZStd::unique_ptr m_env; SSystemGlobalEnvironment* m_priorEnv = nullptr; diff --git a/Gems/LyShine/Code/Tests/SerializationTest.cpp b/Gems/LyShine/Code/Tests/SerializationTest.cpp index 70ae590358..61d39294f8 100644 --- a/Gems/LyShine/Code/Tests/SerializationTest.cpp +++ b/Gems/LyShine/Code/Tests/SerializationTest.cpp @@ -30,7 +30,8 @@ namespace UnitTest modules.emplace_back(new LyShine::LyShineModule); }; - m_systemEntity = m_application.Create(appDesc, appStartup); + m_application = aznew AZ::ComponentApplication(); + m_systemEntity = m_application->Create(appDesc, appStartup); m_systemEntity->Init(); m_systemEntity->Activate(); } diff --git a/Gems/LyShine/Code/Tests/SpriteTest.cpp b/Gems/LyShine/Code/Tests/SpriteTest.cpp index ff9095a7d9..2fc82546be 100644 --- a/Gems/LyShine/Code/Tests/SpriteTest.cpp +++ b/Gems/LyShine/Code/Tests/SpriteTest.cpp @@ -8,7 +8,6 @@ #include "LyShineTest.h" #include -#include #include namespace UnitTest @@ -32,7 +31,8 @@ namespace UnitTest modules.emplace_back(new LyShine::LyShineModule); }; - m_systemEntity = m_application.Create(appDesc, appStartup); + m_application = aznew AZ::ComponentApplication(); + m_systemEntity = m_application->Create(appDesc, appStartup); m_systemEntity->Init(); m_systemEntity->Activate(); } diff --git a/Gems/LyShine/Code/Tests/UiTooltipComponentTest.cpp b/Gems/LyShine/Code/Tests/UiTooltipComponentTest.cpp index 65ca1ec280..8a3d9f2af6 100644 --- a/Gems/LyShine/Code/Tests/UiTooltipComponentTest.cpp +++ b/Gems/LyShine/Code/Tests/UiTooltipComponentTest.cpp @@ -24,54 +24,38 @@ #include #include #include +#include namespace UnitTest { - class MockTimer : public ITimer + struct UiTooltipTestStubTimer : public AZ::StubTimeSystem { - public: - mutable float m_timer_count = 1.0f; - MOCK_METHOD0(ResetTimer, void()); - MOCK_METHOD0(UpdateOnFrameStart, void()); - float GetCurrTime([[maybe_unused]] ETimer which) const - { - m_timer_count += 1.0f; - return m_timer_count; - } - MOCK_CONST_METHOD1(GetFrameStartTime, CTimeValue&(ETimer)); - MOCK_CONST_METHOD0(GetAsyncTime, CTimeValue()); - MOCK_METHOD0(GetAsyncCurTime, float()); - MOCK_CONST_METHOD1(GetFrameTime, float(ETimer)); - MOCK_CONST_METHOD0(GetRealFrameTime, float()); - MOCK_CONST_METHOD0(GetTimeScale, float()); - MOCK_CONST_METHOD1(GetTimeScale, float(uint32)); - MOCK_METHOD0(ClearTimeScales, void()); - MOCK_METHOD2(SetTimeScale, void(float, uint32)); - MOCK_METHOD1(EnableTimer, void(bool)); - MOCK_CONST_METHOD0(IsTimerEnabled, bool()); - MOCK_METHOD0(GetFrameRate, float()); - MOCK_METHOD2(GetProfileFrameBlending, float(float*, int*)); - MOCK_METHOD1(Serialize, void(TSerialize)); - MOCK_METHOD2(PauseTimer, bool(ETimer, bool)); - MOCK_METHOD1(IsTimerPaused, bool(ETimer)); - MOCK_METHOD2(SetTimer, bool(ETimer, float)); - MOCK_METHOD2(SecondsToDateUTC, void(time_t, struct tm&)); - MOCK_METHOD1(DateToSecondsUTC, time_t(struct tm&)); - MOCK_METHOD1(TicksToSeconds, float(int64)); - MOCK_METHOD0(GetTicksPerSecond, int64()); - MOCK_METHOD0(CreateNewTimer, ITimer*()); - MOCK_METHOD2(EnableFixedTimeMode, void(bool, float)); + AZ::TimeMs GetRealElapsedTimeMs() const override + { + m_time += AZ::TimeMs{ 1000 }; + return m_time; + } + mutable AZ::TimeMs m_time = AZ::Time::ZeroTimeMs; }; class UiTooltipTestApplication : public AzFramework::Application { + public: + UiTooltipTestApplication() + : AzFramework::Application() + { + m_timeSystem.reset(); + m_timeSystem = AZStd::make_unique(); + } + void Reflect(AZ::ReflectContext* context) override { AzFramework::Application::Reflect(context); UiSerialize::ReflectUiTypes(context); //< needed to serialize ui Anchor and Offset } + private: // override and only include system components required for tests. AZ::ComponentTypeList GetRequiredSystemComponents() const override { @@ -153,16 +137,13 @@ namespace UnitTest return AZStd::make_tuple(uiCanvasComponent, uiTooltipDisplayComponent, uiTooltipComponent); } - }; TEST_F(UiTooltipComponentTest, UiTooltipComponent_WillAppearOnHover) { - MockTimer m_timer = MockTimer(); SSystemGlobalEnvironment env; SSystemGlobalEnvironment* prevEnv = gEnv; gEnv = &env; - gEnv->pTimer = &m_timer; gEnv->pLyShine = nullptr; auto [uiCanvasComponent, uiTooltipDisplayComponent, uiTooltipComponent] = CreateUiCanvasWithTooltip(); @@ -186,11 +167,9 @@ namespace UnitTest TEST_F(UiTooltipComponentTest, UiTooltipComponent_HoverTooltipDisappearsOnPress) { - MockTimer m_timer = MockTimer(); SSystemGlobalEnvironment env; SSystemGlobalEnvironment* prevEnv = gEnv; gEnv = &env; - gEnv->pTimer = &m_timer; gEnv->pLyShine = nullptr; auto [uiCanvasComponent, uiTooltipDisplayComponent, uiTooltipComponent] = CreateUiCanvasWithTooltip(); @@ -212,11 +191,9 @@ namespace UnitTest TEST_F(UiTooltipComponentTest, UiTooltipComponent_TooltipAppearsOnPress) { - MockTimer m_timer = MockTimer(); SSystemGlobalEnvironment env; SSystemGlobalEnvironment* prevEnv = gEnv; gEnv = &env; - gEnv->pTimer = &m_timer; gEnv->pLyShine = nullptr; auto [uiCanvasComponent, uiTooltipDisplayComponent, uiTooltipComponent] = CreateUiCanvasWithTooltip(); @@ -238,11 +215,9 @@ namespace UnitTest TEST_F(UiTooltipComponentTest, UiTooltipComponent_TooltipDisappearsOnCanvasPrimaryRelease) { - MockTimer m_timer = MockTimer(); SSystemGlobalEnvironment env; SSystemGlobalEnvironment* prevEnv = gEnv; gEnv = &env; - gEnv->pTimer = &m_timer; gEnv->pLyShine = nullptr; auto [uiCanvasComponent, uiTooltipDisplayComponent, uiTooltipComponent] = CreateUiCanvasWithTooltip(); @@ -264,11 +239,9 @@ namespace UnitTest TEST_F(UiTooltipComponentTest, UiTooltipComponent_TooltipAppearsOnClick) { - MockTimer m_timer = MockTimer(); SSystemGlobalEnvironment env; SSystemGlobalEnvironment* prevEnv = gEnv; gEnv = &env; - gEnv->pTimer = &m_timer; gEnv->pLyShine = nullptr; auto [uiCanvasComponent, uiTooltipDisplayComponent, uiTooltipComponent] = CreateUiCanvasWithTooltip(); diff --git a/Gems/LyShineExamples/Assets/UI/Canvases/LyShineExamples/Comp/Button/Styles.uicanvas b/Gems/LyShineExamples/Assets/UI/Canvases/LyShineExamples/Comp/Button/Styles.uicanvas index 386df81e5c..6a41034bd2 100644 --- a/Gems/LyShineExamples/Assets/UI/Canvases/LyShineExamples/Comp/Button/Styles.uicanvas +++ b/Gems/LyShineExamples/Assets/UI/Canvases/LyShineExamples/Comp/Button/Styles.uicanvas @@ -569,7 +569,7 @@ - + @@ -591,7 +591,7 @@ - + @@ -626,7 +626,7 @@ - + @@ -650,7 +650,7 @@ - + @@ -1161,7 +1161,7 @@ - + @@ -1209,7 +1209,7 @@ - + @@ -1227,7 +1227,7 @@ - + @@ -1368,7 +1368,7 @@ - + @@ -1438,7 +1438,7 @@ - + @@ -1498,7 +1498,7 @@ - + @@ -1516,7 +1516,7 @@ - + @@ -1657,7 +1657,7 @@ - + @@ -1714,7 +1714,7 @@ - + @@ -1771,7 +1771,7 @@ - + diff --git a/Gems/LyShineExamples/Assets/UI/Canvases/LyShineExamples/Comp/Image/ImageTypes.uicanvas b/Gems/LyShineExamples/Assets/UI/Canvases/LyShineExamples/Comp/Image/ImageTypes.uicanvas index a0fbcbc0ce..0fb5e390d3 100644 --- a/Gems/LyShineExamples/Assets/UI/Canvases/LyShineExamples/Comp/Image/ImageTypes.uicanvas +++ b/Gems/LyShineExamples/Assets/UI/Canvases/LyShineExamples/Comp/Image/ImageTypes.uicanvas @@ -370,7 +370,7 @@ - + @@ -475,7 +475,7 @@ - + @@ -616,7 +616,7 @@ - + @@ -757,7 +757,7 @@ - + @@ -898,7 +898,7 @@ - + @@ -1118,7 +1118,7 @@ - + diff --git a/Gems/LyShineExamples/Assets/UI/Canvases/LyShineExamples/Comp/Mask/MaskingInteractables.uicanvas b/Gems/LyShineExamples/Assets/UI/Canvases/LyShineExamples/Comp/Mask/MaskingInteractables.uicanvas index a99a40c6be..e627fafd54 100644 --- a/Gems/LyShineExamples/Assets/UI/Canvases/LyShineExamples/Comp/Mask/MaskingInteractables.uicanvas +++ b/Gems/LyShineExamples/Assets/UI/Canvases/LyShineExamples/Comp/Mask/MaskingInteractables.uicanvas @@ -215,7 +215,7 @@ - + @@ -240,7 +240,7 @@ - + @@ -265,7 +265,7 @@ - + @@ -301,7 +301,7 @@ - + @@ -378,7 +378,7 @@ - + @@ -455,7 +455,7 @@ - + @@ -645,7 +645,7 @@ - + @@ -716,7 +716,7 @@ - + @@ -975,7 +975,7 @@ - + @@ -1000,7 +1000,7 @@ - + @@ -1052,7 +1052,7 @@ - + @@ -1129,7 +1129,7 @@ - + @@ -1206,7 +1206,7 @@ - + @@ -1296,7 +1296,7 @@ - + @@ -1399,7 +1399,7 @@ - + @@ -1425,7 +1425,7 @@ - + @@ -1475,7 +1475,7 @@ - + @@ -1658,7 +1658,7 @@ - + diff --git a/Gems/LyShineExamples/Assets/UI/Canvases/LyShineExamples/Comp/Text/ImageMarkup.uicanvas b/Gems/LyShineExamples/Assets/UI/Canvases/LyShineExamples/Comp/Text/ImageMarkup.uicanvas index 3bcd4f3db3..efa2e79b50 100644 --- a/Gems/LyShineExamples/Assets/UI/Canvases/LyShineExamples/Comp/Text/ImageMarkup.uicanvas +++ b/Gems/LyShineExamples/Assets/UI/Canvases/LyShineExamples/Comp/Text/ImageMarkup.uicanvas @@ -475,7 +475,7 @@ - + @@ -854,7 +854,7 @@ - + diff --git a/Gems/LyShineExamples/Assets/UI/Canvases/LyShineExamples/Performance/DrawCallsControl.uicanvas b/Gems/LyShineExamples/Assets/UI/Canvases/LyShineExamples/Performance/DrawCallsControl.uicanvas index 9b89289dd4..4d3f08a1cd 100644 --- a/Gems/LyShineExamples/Assets/UI/Canvases/LyShineExamples/Performance/DrawCallsControl.uicanvas +++ b/Gems/LyShineExamples/Assets/UI/Canvases/LyShineExamples/Performance/DrawCallsControl.uicanvas @@ -1910,7 +1910,7 @@ - + diff --git a/Gems/LyShineExamples/Assets/UI/Slices/LyShineExamples/DragAndDrop/ChildDropTargets/ChildDropTargets_Draggable.slice b/Gems/LyShineExamples/Assets/UI/Slices/LyShineExamples/DragAndDrop/ChildDropTargets/ChildDropTargets_Draggable.slice index 4c857ecb60..9e5c72b9ee 100644 --- a/Gems/LyShineExamples/Assets/UI/Slices/LyShineExamples/DragAndDrop/ChildDropTargets/ChildDropTargets_Draggable.slice +++ b/Gems/LyShineExamples/Assets/UI/Slices/LyShineExamples/DragAndDrop/ChildDropTargets/ChildDropTargets_Draggable.slice @@ -64,7 +64,7 @@ - + @@ -102,7 +102,7 @@ - + @@ -422,7 +422,7 @@ - + diff --git a/Gems/LyShineExamples/Assets/UI/Slices/LyShineExamples/DragAndDrop/ChildDropTargets/ChildDropTargets_EndDropTarget.slice b/Gems/LyShineExamples/Assets/UI/Slices/LyShineExamples/DragAndDrop/ChildDropTargets/ChildDropTargets_EndDropTarget.slice index cb6f6749d4..6f00a98399 100644 --- a/Gems/LyShineExamples/Assets/UI/Slices/LyShineExamples/DragAndDrop/ChildDropTargets/ChildDropTargets_EndDropTarget.slice +++ b/Gems/LyShineExamples/Assets/UI/Slices/LyShineExamples/DragAndDrop/ChildDropTargets/ChildDropTargets_EndDropTarget.slice @@ -174,7 +174,7 @@ - + diff --git a/Gems/LyShineExamples/Assets/UI/Slices/LyShineExamples/DragAndDrop/DraggableElement.slice b/Gems/LyShineExamples/Assets/UI/Slices/LyShineExamples/DragAndDrop/DraggableElement.slice index 8781688a94..3249e61b53 100644 --- a/Gems/LyShineExamples/Assets/UI/Slices/LyShineExamples/DragAndDrop/DraggableElement.slice +++ b/Gems/LyShineExamples/Assets/UI/Slices/LyShineExamples/DragAndDrop/DraggableElement.slice @@ -61,7 +61,7 @@ - + @@ -99,7 +99,7 @@ - + diff --git a/Gems/LyShineExamples/Assets/UI/Slices/LyShineExamples/NextButton.slice b/Gems/LyShineExamples/Assets/UI/Slices/LyShineExamples/NextButton.slice index 85046d4d1b..661fa6ccf3 100644 --- a/Gems/LyShineExamples/Assets/UI/Slices/LyShineExamples/NextButton.slice +++ b/Gems/LyShineExamples/Assets/UI/Slices/LyShineExamples/NextButton.slice @@ -63,7 +63,7 @@ - + @@ -118,7 +118,7 @@ - + diff --git a/Gems/LyShineExamples/Assets/seedList.seed b/Gems/LyShineExamples/Assets/seedList.seed index 777269ee7a..d730765515 100644 --- a/Gems/LyShineExamples/Assets/seedList.seed +++ b/Gems/LyShineExamples/Assets/seedList.seed @@ -11,10 +11,10 @@ - + - + @@ -27,10 +27,10 @@ - + - + @@ -43,10 +43,10 @@ - + - + @@ -59,10 +59,10 @@ - + - + @@ -75,10 +75,10 @@ - + - + @@ -91,26 +91,26 @@ - + - + - + - + - + - + diff --git a/Gems/Maestro/Code/Source/Cinematics/Movie.cpp b/Gems/Maestro/Code/Source/Cinematics/Movie.cpp index 2a9a231177..9663d3cf56 100644 --- a/Gems/Maestro/Code/Source/Cinematics/Movie.cpp +++ b/Gems/Maestro/Code/Source/Cinematics/Movie.cpp @@ -6,11 +6,11 @@ * */ - #include #include #include #include +#include #include #include #include "Movie.h" @@ -35,9 +35,7 @@ #include #include #include -#include #include -#include #include #include #include @@ -208,6 +206,22 @@ namespace } } +namespace Internal +{ + float ApplyDeltaTimeOverrideIfEnabled(float deltaTime) + { + if (auto* timeSystem = AZ::Interface::Get()) + { + const AZ::TimeMs deltatimeOverride = timeSystem->GetSimulationTickDeltaOverride(); + if (deltatimeOverride != AZ::Time::ZeroTimeMs) + { + deltaTime = AZ::TimeMsToSeconds(deltatimeOverride); + } + } + return deltaTime; + } +} // namespace Internal + ////////////////////////////////////////////////////////////////////////// CMovieSystem::CMovieSystem(ISystem* pSystem) { @@ -219,18 +233,13 @@ CMovieSystem::CMovieSystem(ISystem* pSystem) m_bEnableCameraShake = true; m_bCutscenesPausedInEditor = true; m_sequenceStopBehavior = eSSB_GotoEndTime; - m_lastUpdateTime.SetValue(0); + m_lastUpdateTime = AZ::Time::ZeroTimeUs; m_bStartCapture = false; m_captureFrame = -1; m_bEndCapture = false; - m_fixedTimeStepBackUp = 0; - m_maxStepBackUp = 0; - m_smoothingBackUp = 0; + m_fixedTimeStepBackUp = AZ::Time::ZeroTimeMs; m_cvar_capture_frame_once = nullptr; m_cvar_capture_folder = nullptr; - m_cvar_t_FixedStep = nullptr; - m_cvar_t_MaxStep = nullptr; - m_cvar_t_Smoothing = nullptr; m_cvar_sys_maxTimeStepForMovieSystem = nullptr; m_cvar_capture_frames = nullptr; m_cvar_capture_file_prefix = nullptr; @@ -835,20 +844,6 @@ bool CMovieSystem::InternalStopSequence(IAnimSequence* sequence, bool bAbort, bo ////////////////////////////////////////////////////////////////////////// bool CMovieSystem::AbortSequence(IAnimSequence* sequence, bool bLeaveTime) { - assert(sequence); - - // to avoid any camera blending after aborting a cut scene - IViewSystem* pViewSystem = gEnv->pSystem->GetIViewSystem(); - if (pViewSystem) - { - pViewSystem->SetBlendParams(0, 0, 0); - IView* pView = pViewSystem->GetActiveView(); - if (pView) - { - pView->ResetBlending(); - } - } - return InternalStopSequence(sequence, true, !bLeaveTime); } @@ -1041,13 +1036,13 @@ void CMovieSystem::PreUpdate(float deltaTime) } m_newlyActivatedSequences.clear(); - UpdateInternal(m_cvar_t_FixedStep ? m_cvar_t_FixedStep->GetFVal() : deltaTime, true); + UpdateInternal(Internal::ApplyDeltaTimeOverrideIfEnabled(deltaTime), true); } ////////////////////////////////////////////////////////////////////////// void CMovieSystem::PostUpdate(float deltaTime) { - UpdateInternal(m_cvar_t_FixedStep ? m_cvar_t_FixedStep->GetFVal() : deltaTime, false); + UpdateInternal(Internal::ApplyDeltaTimeOverrideIfEnabled(deltaTime), false); } ////////////////////////////////////////////////////////////////////////// @@ -1061,7 +1056,7 @@ void CMovieSystem::UpdateInternal(const float deltaTime, const bool bPreUpdate) } // don't update more than once if dt==0.0 - CTimeValue curTime = gEnv->pTimer->GetFrameStartTime(); + const AZ::TimeUs curTime = AZ::GetLastSimulationTickTime(); if (deltaTime == 0.0f && curTime == m_lastUpdateTime && !gEnv->IsEditor()) { return; @@ -1513,35 +1508,12 @@ void CMovieSystem::GoToFrame(const char* seqName, float targetFrame) void CMovieSystem::EnableFixedStepForCapture(float step) { - if (nullptr == m_cvar_t_FixedStep) + if (auto* timeSystem = AZ::Interface::Get()) { - m_cvar_t_FixedStep = gEnv->pConsole->GetCVar("t_FixedStep"); + m_fixedTimeStepBackUp = timeSystem->GetSimulationTickDeltaOverride(); + timeSystem->SetSimulationTickDeltaOverride(AZ::SecondsToTimeMs(step)); } - m_fixedTimeStepBackUp = m_cvar_t_FixedStep->GetFVal(); - m_cvar_t_FixedStep->Set(step); - - if (nullptr == m_cvar_t_MaxStep) - { - m_cvar_t_MaxStep = gEnv->pConsole->GetCVar("t_MaxStep"); - } - - // Make sure to make the max step large enough - m_maxStepBackUp = m_cvar_t_MaxStep->GetFVal(); - if (step > m_maxStepBackUp) - { - m_cvar_t_MaxStep->Set(step); - } - - if (nullptr == m_cvar_t_Smoothing) - { - m_cvar_t_Smoothing = gEnv->pConsole->GetCVar("t_Smoothing"); - } - - // Turn off framerate smoothing - m_smoothingBackUp = m_cvar_t_Smoothing->GetFVal(); - m_cvar_t_Smoothing->Set(0); - if (nullptr == m_cvar_sys_maxTimeStepForMovieSystem) { m_cvar_sys_maxTimeStepForMovieSystem = gEnv->pConsole->GetCVar("sys_maxTimeStepForMovieSystem"); @@ -1557,9 +1529,10 @@ void CMovieSystem::EnableFixedStepForCapture(float step) void CMovieSystem::DisableFixedStepForCapture() { - m_cvar_t_FixedStep->Set(m_fixedTimeStepBackUp); - m_cvar_t_MaxStep->Set(m_maxStepBackUp); - m_cvar_t_Smoothing->Set(m_smoothingBackUp); + if (auto* timeSystem = AZ::Interface::Get()) + { + timeSystem->SetSimulationTickDeltaOverride(m_fixedTimeStepBackUp); + } m_cvar_sys_maxTimeStepForMovieSystem->Set(m_maxTimeStepForMovieSystemBackUp); } diff --git a/Gems/Maestro/Code/Source/Cinematics/Movie.h b/Gems/Maestro/Code/Source/Cinematics/Movie.h index 15295da353..ab2c2e649b 100644 --- a/Gems/Maestro/Code/Source/Cinematics/Movie.h +++ b/Gems/Maestro/Code/Source/Cinematics/Movie.h @@ -14,6 +14,7 @@ #pragma once #include +#include #include #include @@ -235,7 +236,7 @@ private: IMovieUser* m_pUser; IMovieCallback* m_pCallback; - CTimeValue m_lastUpdateTime; + AZ::TimeUs m_lastUpdateTime; typedef AZStd::vector > Sequences; Sequences m_sequences; @@ -268,15 +269,10 @@ private: int m_captureFrame; bool m_bEndCapture; ICaptureKey m_captureKey; - float m_fixedTimeStepBackUp; - float m_maxStepBackUp; - float m_smoothingBackUp; + AZ::TimeMs m_fixedTimeStepBackUp; float m_maxTimeStepForMovieSystemBackUp; ICVar* m_cvar_capture_frame_once; ICVar* m_cvar_capture_folder; - ICVar* m_cvar_t_FixedStep; - ICVar* m_cvar_t_MaxStep; - ICVar* m_cvar_t_Smoothing; ICVar* m_cvar_sys_maxTimeStepForMovieSystem; ICVar* m_cvar_capture_frames; ICVar* m_cvar_capture_file_prefix; diff --git a/Gems/Maestro/Code/Source/Cinematics/SceneNode.cpp b/Gems/Maestro/Code/Source/Cinematics/SceneNode.cpp index b93215d397..33c08b0960 100644 --- a/Gems/Maestro/Code/Source/Cinematics/SceneNode.cpp +++ b/Gems/Maestro/Code/Source/Cinematics/SceneNode.cpp @@ -6,12 +6,12 @@ * */ - #include #include #include #include #include +#include #include #include "MathConversion.h" @@ -24,7 +24,6 @@ #include "GotoTrack.h" #include "CaptureTrack.h" #include "ISystem.h" -#include "ITimer.h" #include "AnimAZEntityNode.h" #include "AnimComponentNode.h" #include "Movie.h" @@ -36,7 +35,6 @@ #include #include -#include #define s_nodeParamsInitialized s_nodeParamsInitializedScene #define s_nodeParams s_nodeParamsSene @@ -199,7 +197,6 @@ CAnimSceneNode::CAnimSceneNode(const int id) m_lastCaptureKey = -1; m_bLastCapturingEnded = true; m_captureFrameCount = 0; - m_cvar_t_FixedStep = NULL; m_pCamNodeOnHoldForInterp = 0; m_CurrentSelectTrack = 0; m_CurrentSelectTrackKeyNumber = 0; @@ -304,7 +301,6 @@ void CAnimSceneNode::Activate(bool bActivate) pSequenceTrack->GetKey(currKey, &key); IAnimSequence* pSequence = GetSequenceFromSequenceKey(key); - if (pSequence) { if (bActivate) @@ -329,11 +325,6 @@ void CAnimSceneNode::Activate(bool bActivate) } } } - - if (m_cvar_t_FixedStep == NULL) - { - m_cvar_t_FixedStep = gEnv->pConsole->GetCVar("t_FixedStep"); - } } ////////////////////////////////////////////////////////////////////////// @@ -422,14 +413,15 @@ void CAnimSceneNode::Animate(SAnimContext& ec) timeScale = .0f; } - // if set, disable fixed time step cvar so timewarping will have an affect. We never set it back though - that is - // likely a bug! - if (m_cvar_t_FixedStep && m_cvar_t_FixedStep->GetFVal() != .0f) + if (auto* timeSystem = AZ::Interface::Get()) { - m_cvar_t_FixedStep->Set(.0f); + m_simulationTickOverrideBackup = timeSystem->GetSimulationTickDeltaOverride(); + // if set, disable fixed time step cvar so timewarping will have an affect. + timeSystem->SetSimulationTickDeltaOverride(AZ::Time::ZeroTimeMs); + + m_timeScaleBackup = timeSystem->GetSimulationTickScale(); + timeSystem->SetSimulationTickScale(timeScale); } - gEnv->pTimer->SetTimeScale(timeScale, ITimer::eTSC_Trackview); - } break; case AnimParamType::FixedTimeStep: @@ -440,9 +432,12 @@ void CAnimSceneNode::Animate(SAnimContext& ec) { timeStep = 0; } - if (m_cvar_t_FixedStep) + + if (auto* timeSystem = AZ::Interface::Get()) { - m_cvar_t_FixedStep->Set(timeStep); + m_simulationTickOverrideBackup = timeSystem->GetSimulationTickDeltaOverride(); + // if set, disable fixed time step cvar so timewarping will have an affect. + timeSystem->SetSimulationTickDeltaOverride(AZ::SecondsToTimeMs(timeStep)); } } break; @@ -622,17 +617,18 @@ void CAnimSceneNode::OnReset() m_bLastCapturingEnded = true; m_captureFrameCount = 0; - if (GetTrackForParameter(AnimParamType::TimeWarp)) + if (auto* timeSystem = AZ::Interface::Get()) { - gEnv->pTimer->SetTimeScale(1.0f, ITimer::eTSC_Trackview); - if (m_cvar_t_FixedStep) + if (GetTrackForParameter(AnimParamType::TimeWarp)) { - m_cvar_t_FixedStep->Set(0); + timeSystem->SetSimulationTickScale(m_timeScaleBackup); + timeSystem->SetSimulationTickDeltaOverride(m_simulationTickOverrideBackup); + } + + if (GetTrackForParameter(AnimParamType::FixedTimeStep)) + { + timeSystem->SetSimulationTickDeltaOverride(m_simulationTickOverrideBackup); } - } - if (GetTrackForParameter(AnimParamType::FixedTimeStep) && m_cvar_t_FixedStep) - { - m_cvar_t_FixedStep->Set(0); } } @@ -796,22 +792,9 @@ void CAnimSceneNode::ApplyCameraKey(ISelectKey& key, SAnimContext& ec) cameraParams.fov = 0; cameraParams.justActivated = true; - // Init the defaults with the current view settings. // With component entities, the fov and near plane may be animated on an // entity with a Camera component. Don't stomp the values if this update happens // after those properties are animated. - AZ_Assert(gEnv && gEnv->pSystem, "Expected valid gEnv->pSystem"); - IViewSystem* viewSystem = gEnv->pSystem->GetIViewSystem(); - if (viewSystem) - { - IView* view = viewSystem->GetActiveView(); - if (view) - { - SViewParams params = *view->GetCurrentParams(); - cameraParams.fov = params.fov; - cameraParams.nearZ = params.nearplane; - } - } /////////////////////////////////////////////////////////////////// // find the Scene Camera (Camera Component Camera) diff --git a/Gems/Maestro/Code/Source/Cinematics/SceneNode.h b/Gems/Maestro/Code/Source/Cinematics/SceneNode.h index c577839fce..6435b48953 100644 --- a/Gems/Maestro/Code/Source/Cinematics/SceneNode.h +++ b/Gems/Maestro/Code/Source/Cinematics/SceneNode.h @@ -13,6 +13,7 @@ #pragma once #include +#include #include "AnimNode.h" #include "SoundTrack.h" @@ -149,7 +150,8 @@ private: std::vector m_SoundInfo; - ICVar* m_cvar_t_FixedStep; + AZ::TimeMs m_simulationTickOverrideBackup = AZ::Time::ZeroTimeMs; + float m_timeScaleBackup = 1.0f; }; #endif // CRYINCLUDE_CRYMOVIE_SCENENODE_H diff --git a/Gems/Maestro/Code/Tests/MaestroTest.cpp b/Gems/Maestro/Code/Tests/MaestroTest.cpp index 1607d35296..1724e090aa 100644 --- a/Gems/Maestro/Code/Tests/MaestroTest.cpp +++ b/Gems/Maestro/Code/Tests/MaestroTest.cpp @@ -8,7 +8,6 @@ #include #include -#include #include #include #include @@ -33,7 +32,6 @@ protected: { AZ_TEST_CLASS_ALLOCATOR(MockHolder); - NiceMock timer; NiceMock pak; NiceMock console; }; @@ -51,7 +49,6 @@ protected: // manage their lifetime, so this solution manages the lifetime // and ordering via the heap. m_mocks = new MockHolder(); - m_stubEnv.pTimer = &m_mocks->timer; m_stubEnv.pCryPak = &m_mocks->pak; m_stubEnv.pConsole = &m_mocks->console; gEnv = &m_stubEnv; diff --git a/Gems/Multiplayer/Code/CMakeLists.txt b/Gems/Multiplayer/Code/CMakeLists.txt index 559fa23553..afe40408ab 100644 --- a/Gems/Multiplayer/Code/CMakeLists.txt +++ b/Gems/Multiplayer/Code/CMakeLists.txt @@ -86,44 +86,24 @@ ly_create_alias(NAME Multiplayer.Servers NAMESPACE Gem TARGETS Gem::Multiplayer if (PAL_TRAIT_BUILD_HOST_TOOLS) ly_add_target( - NAME Multiplayer.Builders.Static STATIC + NAME Multiplayer.Tools.Static STATIC NAMESPACE Gem FILES_CMAKE multiplayer_tools_files.cmake - COMPILE_DEFINITIONS - PUBLIC - MULTIPLAYER_TOOLS INCLUDE_DIRECTORIES PRIVATE - . - Source ${pal_source_dir} - PUBLIC - Include - BUILD_DEPENDENCIES - PUBLIC - AZ::AzToolsFramework - Gem::Multiplayer.Static - ) - - # by naming this target Multiplayer.Builders it ensures that it is loaded - # in any pipeline tools (Like Asset Processor, AssetBuilder, etc) - ly_add_target( - NAME Multiplayer.Builders GEM_MODULE - NAMESPACE Gem - FILES_CMAKE - multiplayer_tools_files.cmake - INCLUDE_DIRECTORIES - PRIVATE + AZ::AzNetworking Source . PUBLIC Include BUILD_DEPENDENCIES - PRIVATE - Gem::Multiplayer.Builders.Static - RUNTIME_DEPENDENCIES - Gem::Multiplayer.Editor + PUBLIC + AZ::AzCore + AZ::AzFramework + AZ::AzNetworking + AZ::AzToolsFramework ) ly_add_target( @@ -152,11 +132,12 @@ if (PAL_TRAIT_BUILD_HOST_TOOLS) Gem::Atom_RPI.Public Gem::Atom_RHI.Reflect Gem::Multiplayer.Static - Gem::Multiplayer.Builders + Gem::Multiplayer.Tools.Static ) - + + ly_create_alias(NAME Multiplayer.Builders NAMESPACE Gem TARGETS Gem::Multiplayer.Editor) # use the Multiplayer.Editor module in tools like the Editor: Such tools also get the visual debug view: - ly_create_alias(NAME Multiplayer.Tools NAMESPACE Gem TARGETS Gem::Multiplayer.Editor Gem::Multiplayer.Debug Gem::Multiplayer.Builders) + ly_create_alias(NAME Multiplayer.Tools NAMESPACE Gem TARGETS Gem::Multiplayer.Debug Gem::Multiplayer.Builders) endif() if (PAL_TRAIT_BUILD_TESTS_SUPPORTED) @@ -207,7 +188,8 @@ if (PAL_TRAIT_BUILD_TESTS_SUPPORTED) AZ::AzTest AZ::AzTestShared AZ::AzToolsFrameworkTestCommon - Gem::Multiplayer.Builders.Static + Gem::Multiplayer.Static + Gem::Multiplayer.Tools.Static ) ly_add_googletest( NAME Gem::Multiplayer.Builders.Tests diff --git a/Gems/Multiplayer/Code/Include/Multiplayer/AutoGen/AutoComponent_Header.jinja b/Gems/Multiplayer/Code/Include/Multiplayer/AutoGen/AutoComponent_Header.jinja index 5cfeb250fa..58a47b336f 100644 --- a/Gems/Multiplayer/Code/Include/Multiplayer/AutoGen/AutoComponent_Header.jinja +++ b/Gems/Multiplayer/Code/Include/Multiplayer/AutoGen/AutoComponent_Header.jinja @@ -443,35 +443,31 @@ namespace {{ Component.attrib['Namespace'] }} {{ DeclareNetworkPropertyAccessors(Component, 'Autonomous', 'Authority', false)|indent(8) -}} {{ DeclareNetworkPropertyAccessors(Component, 'Autonomous', 'Authority', true)|indent(8) -}} {{ DeclareArchetypePropertyGetters(Component)|indent(8) -}} - {{ DeclareRpcInvocations(Component, 'Client', 'Authority', false)|indent(8) -}} - {{ DeclareRpcInvocations(Component, 'Client', 'Authority', true)|indent(8) -}} {{ DeclareRpcInvocations(Component, 'Autonomous', 'Authority', false)|indent(8) -}} {{ DeclareRpcInvocations(Component, 'Autonomous', 'Authority', true)|indent(8) -}} {{ DeclareRpcInvocations(Component, 'Authority', 'Autonomous', false)|indent(8) -}} {{ DeclareRpcInvocations(Component, 'Authority', 'Autonomous', true)|indent(8) -}} {{ DeclareRpcInvocations(Component, 'Authority', 'Client', false)|indent(8) -}} {{ DeclareRpcInvocations(Component, 'Authority', 'Client', true)|indent(8) -}} + + //! RPC Handlers: Override handlers in order to implement what happens after receiving an RPC {{ AutoComponentMacros.DeclareRpcHandlers(Component, 'Server', 'Authority', false)|indent(8) -}} - {{ AutoComponentMacros.DeclareRpcHandlers(Component, 'Client', 'Authority', false)|indent(8) -}} {{ AutoComponentMacros.DeclareRpcHandlers(Component, 'Autonomous', 'Authority', false)|indent(8) -}} {{ AutoComponentMacros.DeclareRpcHandlers(Component, 'Authority', 'Autonomous', false)|indent(8) -}} - {{ AutoComponentMacros.DeclareRpcSignals(Component, 'Server', 'Authority')|indent(8) -}} - {{ AutoComponentMacros.DeclareRpcSignals(Component, 'Client', 'Authority')|indent(8) -}} - {{ AutoComponentMacros.DeclareRpcSignals(Component, 'Autonomous', 'Authority')|indent(8) -}} - {{ AutoComponentMacros.DeclareRpcSignals(Component, 'Authority', 'Autonomous')|indent(8) -}} + + //! RPC Event Getters: Subscribe to these events and get notified when an RPC is received {{ AutoComponentMacros.DeclareRpcEventGetters(Component, 'Server', 'Authority')|indent(8) -}} - {{ AutoComponentMacros.DeclareRpcEventGetters(Component, 'Client', 'Authority')|indent(8) -}} {{ AutoComponentMacros.DeclareRpcEventGetters(Component, 'Autonomous', 'Authority')|indent(8) -}} - {{ AutoComponentMacros.DeclareRpcEventGetters(Component, 'Authority', 'Autonomous')|indent(8) }} + {{ AutoComponentMacros.DeclareRpcEventGetters(Component, 'Authority', 'Autonomous')|indent(8) -}} + {% for Service in Component.iter('ComponentRelation') %} {% if (Service.attrib['HasController']|booleanTrue) and (Service.attrib['Constraint'] != 'Incompatible') %} {{ Service.attrib['Namespace'] }}::{{ Service.attrib['Name'] }}Controller* Get{{ Service.attrib['Name'] }}Controller(); {% endif %} {% endfor %} - + protected: {{ AutoComponentMacros.DeclareRpcEvents(Component, 'Server', 'Authority')|indent(8) -}} - {{ AutoComponentMacros.DeclareRpcEvents(Component, 'Client', 'Authority')|indent(8) -}} {{ AutoComponentMacros.DeclareRpcEvents(Component, 'Autonomous', 'Authority')|indent(8) -}} {{ AutoComponentMacros.DeclareRpcEvents(Component, 'Authority', 'Autonomous')|indent(8) }} }; @@ -517,6 +513,8 @@ namespace {{ Component.attrib['Namespace'] }} {{ DeclareNetworkPropertyGetters(Component, 'Autonomous', 'Authority', false)|indent(8) -}} {{ DeclareArchetypePropertyGetters(Component)|indent(8) -}} {{ DeclareRpcInvocations(Component, 'Server', 'Authority', false)|indent(8) -}} + + //! RPC Event Getters: Subscribe to these events and get notified when this component receives an RPC {{ AutoComponentMacros.DeclareRpcEventGetters(Component, 'Authority', 'Client')|indent(8) -}} //! MultiplayerComponent interface @@ -541,9 +539,13 @@ namespace {{ Component.attrib['Namespace'] }} {{ DeclareNetworkPropertyGetters(Component, 'Authority', 'Client', true)|indent(8) -}} {{ DeclareNetworkPropertyGetters(Component, 'Autonomous', 'Authority', true)|indent(8) -}} {{ DeclareRpcInvocations(Component, 'Server', 'Authority', true)|indent(8) -}} + + //! RPC Handlers: Override handlers in order to implement what happens after receiving an RPC {{ AutoComponentMacros.DeclareRpcHandlers(Component, 'Authority', 'Client', false)|indent(8) -}} - {{ AutoComponentMacros.DeclareRpcSignals(Component, 'Authority', 'Client')|indent(8) -}} - {{ AutoComponentMacros.DeclareRpcEvents(Component, 'Authority', 'Client')|indent(8) }} + + //! RPC Events: Subscribe to these events and get notified when an RPC is received + {{ AutoComponentMacros.DeclareRpcEvents(Component, 'Authority', 'Client')|indent(8) -}} + {% for Service in Component.iter('ComponentRelation') %} {% if Service.attrib['Constraint'] != 'Incompatible' %} const {{ Service.attrib['Namespace'] }}::{{ Service.attrib['Name'] }}* Get{{ Service.attrib['Name'] }}() const; diff --git a/Gems/Multiplayer/Code/Include/Multiplayer/AutoGen/AutoComponent_Source.jinja b/Gems/Multiplayer/Code/Include/Multiplayer/AutoGen/AutoComponent_Source.jinja index cf62f6f901..d0b77159f8 100644 --- a/Gems/Multiplayer/Code/Include/Multiplayer/AutoGen/AutoComponent_Source.jinja +++ b/Gems/Multiplayer/Code/Include/Multiplayer/AutoGen/AutoComponent_Source.jinja @@ -308,13 +308,21 @@ void {{ ClassName }}::Set{{ UpperFirst(Property.attrib['Name']) }}(const {{ Prop {% endmacro %} {# +#} +{% macro PrintRpcParameters(printPrefix, paramDefines) %} +{% if paramDefines|count > 0 %} +{{ printPrefix }}{{ ', '.join(paramDefines) }} +{% endif %} +{% endmacro %} +{# + #} {% macro DefineRpcInvocation(Component, ClassName, Property, InvokeFrom, HandleOn) %} {% set paramNames = [] %} {% set paramTypes = [] %} {% set paramDefines = [] %} {{ AutoComponentMacros.ParseRpcParams(Property, paramNames, paramTypes, paramDefines) }} -void {{ ClassName }}::{{ UpperFirst(Property.attrib['Name']) }}({{ ', '.join(paramDefines) }}) +void {{ ClassName }}::{{ UpperFirst(Property.attrib['Name']) }}({{ PrintRpcParameters('', paramDefines) }}) { constexpr Multiplayer::RpcIndex rpcId = static_cast({{ UpperFirst(Component.attrib['Name']) }}Internal::RemoteProcedure::{{ UpperFirst(Property.attrib['Name']) }}); {% if Property.attrib['IsReliable']|booleanTrue %} @@ -340,27 +348,11 @@ void {{ ClassName }}::{{ UpperFirst(Property.attrib['Name']) }}({{ ', '.join(par {% endmacro %} {# -#} -{% macro DefineRpcSignal(Component, ClassName, Property, InvokeFrom) %} -{% set paramNames = [] %} -{% set paramTypes = [] %} -{% set paramDefines = [] %} -{{ AutoComponentMacros.ParseRpcParams(Property, paramNames, paramTypes, paramDefines) }} -void {{ ClassName }}::Signal{{ UpperFirst(Property.attrib['Name']) }}({{ ', '.join(paramDefines) }}) -{ - m_{{ UpperFirst(Property.attrib['Name']) }}Event.Signal({{ ', '.join(paramNames) }}); -} -{% endmacro %} -{# - #} {% macro DefineRpcInvocations(Component, ClassName, InvokeFrom, HandleOn, IsProtected) %} {% call(Property) AutoComponentMacros.ParseRemoteProcedures(Component, InvokeFrom, HandleOn) %} {% if Property.attrib['IsPublic']|booleanTrue != IsProtected %} {{ DefineRpcInvocation(Component, ClassName, Property, InvokeFrom, HandleOn) -}} -{% if Property.attrib['GenerateEventBindings']|booleanTrue == true %} -{{ DefineRpcSignal(Component, ClassName, Property, InvokeFrom) -}} -{% endif %} {% endif %} {% endcall %} {% endmacro %} @@ -374,33 +366,46 @@ void {{ ClassName }}::Signal{{ UpperFirst(Property.attrib['Name']) }}({{ ', '.jo {% set paramTypes = [] %} {% set paramDefines = [] %} {{ AutoComponentMacros.ParseRpcParams(Property, paramNames, paramTypes, paramDefines) }} - ->Method("{{ UpperFirst(Property.attrib['Name']) }}", [](const {{ ClassName }}* self, {{ ', '.join(paramDefines) }}) { - self->m_controller->{{ UpperFirst(Property.attrib['Name']) }}({{ ', '.join(paramNames) }}); + ->Method("{{ UpperFirst(Property.attrib['Name']) }}", []({{ ClassName }}* self{{ PrintRpcParameters(', ', paramDefines) }}) { +{% if (InvokeFrom == 'Server') %} + self->{{ UpperFirst(Property.attrib['Name']) }}({{ ', '.join(paramNames) }}); +{% elif (InvokeFrom == 'Authority') or (InvokeFrom == 'Autonomous') %} + if (self->m_controller) + { + self->m_controller->{{ UpperFirst(Property.attrib['Name']) }}({{ ', '.join(paramNames) }}); + } + else + { + AZ_Warning("Network RPC", false, "{{ ClassName }} {{ UpperFirst(Property.attrib['Name']) }} method failed. Entity '%s' (id: %s) {{ ClassName }} is missing the network controller. This remote-procedure can only be invoked from {{InvokeFrom}} network entities, because this entity doesn't have a controller, it must not be a {{InvokeFrom}} entity. Please check your network context before attempting to call {{ UpperFirst(Property.attrib['Name']) }}.", self->GetEntity()->GetName().c_str(), self->GetEntityId().ToString().c_str()) + } +{% endif %} }) - ->Method("{{ UpperFirst(Property.attrib['Name']) }}ByEntityId", [](AZ::EntityId id, {{ ', '.join(paramDefines) }}) { + ->Method("{{ UpperFirst(Property.attrib['Name']) }}ByEntityId", [](AZ::EntityId id{{ PrintRpcParameters(', ', paramDefines) }}) { AZ::Entity* entity = AZ::Interface::Get()->FindEntity(id); if (!entity) { - AZ_Warning("Network Property", false, "{{ ClassName }} {{ UpperFirst(Property.attrib['Name']) }}ByEntityId failed. The entity with id %s doesn't exist, please provide a valid entity id.", id.ToString().c_str()) + AZ_Warning("Network RPC", false, "{{ ClassName }} {{ UpperFirst(Property.attrib['Name']) }}ByEntityId failed. The entity with id %s doesn't exist, please provide a valid entity id.", id.ToString().c_str()) return; } {{ ClassName }}* networkComponent = entity->FindComponent<{{ ClassName }}>(); if (!networkComponent) { - AZ_Warning("Network Property", false, "{{ ClassName }} {{ UpperFirst(Property.attrib['Name']) }}ByEntityId failed. Entity '%s' (id: %s) is missing {{ ClassName }}, be sure to add {{ ClassName }} to this entity.", entity->GetName().c_str(), id.ToString().c_str()) + AZ_Warning("Network RPC", false, "{{ ClassName }} {{ UpperFirst(Property.attrib['Name']) }}ByEntityId failed. Entity '%s' (id: %s) is missing {{ ClassName }}, be sure to add {{ ClassName }} to this entity.", entity->GetName().c_str(), id.ToString().c_str()) return; } - +{% if (InvokeFrom == 'Server') %} + networkComponent->{{ UpperFirst(Property.attrib['Name']) }}({{ ', '.join(paramNames) }}); +{% elif (InvokeFrom == 'Authority') or (InvokeFrom == 'Autonomous') %} {{ ClassName }}Controller* controller = static_cast<{{ ClassName }}Controller*>(networkComponent->GetController()); if (!controller) { - AZ_Warning("Network Property", false, "{{ ClassName }} {{ UpperFirst(Property.attrib['Name']) }}ByEntityId method failed. Entity '%s' (id: %s) {{ ClassName }} is missing the network controller. This RemoteProcedure can only be invoked from {{InvokeFrom}} network entities, because this entity doesn't have a controller, it must not be a {{InvokeFrom}} entity. Please check your network context before attempting to call {{ UpperFirst(Property.attrib['Name']) }}.", entity->GetName().c_str(), id.ToString().c_str()) + AZ_Warning("Network RPC", false, "{{ ClassName }} {{ UpperFirst(Property.attrib['Name']) }}ByEntityId method failed. Entity '%s' (id: %s) {{ ClassName }} is missing the network controller. This RemoteProcedure can only be invoked from {{InvokeFrom}} network entities, because this entity doesn't have a controller, it must not be a {{InvokeFrom}} entity. Please check your network context before attempting to call {{ UpperFirst(Property.attrib['Name']) }}.", entity->GetName().c_str(), id.ToString().c_str()) return; } - controller->{{ UpperFirst(Property.attrib['Name']) }}({{ ', '.join(paramNames) }}); +{% endif %} }, { { { "Source", "The Source containing the {{ ClassName }}Controller" }{% for paramName in paramNames %}, {"{{ paramName }}"}{% endfor %}}}) ->Attribute(AZ::Script::Attributes::ToolTip, "{{Property.attrib['Description']}}") {% endif %} @@ -436,9 +441,13 @@ void {{ ClassName }}::Signal{{ UpperFirst(Property.attrib['Name']) }}({{ ', '.jo {% set paramTypes = [] %} {% set paramDefines = [] %} {{ AutoComponentMacros.ParseRpcParams(Property, paramNames, paramTypes, paramDefines) }} - ->Method("Get{{ UpperFirst(Property.attrib['Name']) }}Event", [](const {{ ClassName }}* self) -> AZ::Event<{{ ', '.join(paramTypes) }}>& + ->Method("Get{{ UpperFirst(Property.attrib['Name']) }}Event", []({{ ClassName }}* self) -> AZ::Event<{{ ', '.join(paramTypes) }}>& { +{% if HandleOn == 'Client' %} + return self->Get{{ UpperFirst(Property.attrib['Name']) }}Event(); +{% elif (HandleOn == 'Authority') or (HandleOn == 'Autonomous') %} return self->m_controller->Get{{ UpperFirst(Property.attrib['Name']) }}Event(); +{% endif %} }) ->Attribute(AZ::Script::Attributes::AzEventDescription, {{ LowerFirst(Property.attrib['Name']) }}EventDesc) ->Method("Get{{ UpperFirst(Property.attrib['Name']) }}EventByEntityId", [](AZ::EntityId id) -> AZ::Event<{{ ', '.join(paramTypes) }}>* @@ -456,7 +465,9 @@ void {{ ClassName }}::Signal{{ UpperFirst(Property.attrib['Name']) }}({{ ', '.jo AZ_Warning("Network Property", false, "{{ ClassName }} Get{{ UpperFirst(Property.attrib['Name']) }}EventByEntityId failed. Entity '%s' (id: %s) is missing {{ ClassName }}, be sure to add {{ ClassName }} to this entity.", entity->GetName().c_str(), id.ToString().c_str()) return nullptr; } - +{% if HandleOn == 'Client' %} + return &networkComponent->Get{{ UpperFirst(Property.attrib['Name']) }}Event(); +{% elif (HandleOn == 'Authority') or (HandleOn == 'Autonomous') %} {{ ClassName }}Controller* controller = static_cast<{{ ClassName }}Controller*>(networkComponent->GetController()); if (!controller) { @@ -465,6 +476,7 @@ void {{ ClassName }}::Signal{{ UpperFirst(Property.attrib['Name']) }}({{ ', '.jo } return &controller->Get{{ UpperFirst(Property.attrib['Name']) }}Event(); +{% endif %} }) ->Attribute(AZ::Script::Attributes::AzEventDescription, AZStd::move({{ LowerFirst(Property.attrib['Name']) }}EventDesc)) {% endif %} @@ -493,30 +505,32 @@ case {{ UpperFirst(Component.attrib['Name']) }}Internal::RemoteProcedure::{{ Upp if (m_controller) { AZ_Assert(GetNetBindComponent()->GetNetEntityRole() == Multiplayer::NetEntityRole::Authority, "Entity proxy does not have authority"); - m_controller->Handle{{ UpperFirst(Property.attrib['Name']) }}(invokingConnection, {{ ', '.join(rpcParamList) }}); -{% if Property.attrib['GenerateEventBindings']|booleanTrue == true %} - m_controller->Signal{{ UpperFirst(Property.attrib['Name']) }}({{ ', '.join(rpcParamList) }}); -{% endif %} + m_controller->Handle{{ UpperFirst(Property.attrib['Name']) }}(invokingConnection{{ PrintRpcParameters(', ', rpcParamList) }}); +{% if (Property.attrib['GenerateEventBindings']|booleanTrue == true) %} + m_controller->Get{{ UpperFirst(Property.attrib['Name']) }}Event().Signal({{ PrintRpcParameters('', rpcParamList) }}); +{% endif %} } -{% if Property.attrib['IsReliable']|booleanTrue %} -{# if the rpc is not reliable we can simply drop it, also note message reliability type is default reliable in EntityRpcMessage #} else // Note that this rpc is marked reliable, trigger the appropriate rpc event so it can be forwarded { +{% if Property.attrib['IsReliable']|booleanTrue %} +{# if the rpc is not reliable we can simply drop it, also note message reliability type is default reliable in EntityRpcMessage #} m_netBindComponent->{{ "GetSend" + InvokeFrom + "To" + HandleOn + "RpcEvent" }}().Signal(message); +{% endif %} } - -{% endif %} {% elif HandleOn == 'Autonomous' %} if (m_controller) { AZ_Assert(GetNetBindComponent()->GetNetEntityRole() == Multiplayer::NetEntityRole::Autonomous, "Entity proxy does not have autonomy"); - m_controller->Handle{{ UpperFirst(Property.attrib['Name']) }}(invokingConnection, {{ ', '.join(rpcParamList) }}); -{% if Property.attrib['GenerateEventBindings']|booleanTrue == true %} - m_controller->Signal{{ UpperFirst(Property.attrib['Name']) }}({{ ', '.join(rpcParamList) }}); -{% endif %} + m_controller->Handle{{ UpperFirst(Property.attrib['Name']) }}(invokingConnection{{ PrintRpcParameters(', ', rpcParamList) }}); +{% if Property.attrib['GenerateEventBindings']|booleanTrue == true %} + m_controller->Get{{ UpperFirst(Property.attrib['Name']) }}Event().Signal({{ PrintRpcParameters('', rpcParamList) }}); +{% endif %} } -{% else %} - Handle{{ UpperFirst(Property.attrib['Name']) }}(invokingConnection, {{ ', '.join(rpcParamList) }}); +{% elif HandleOn == 'Client' %} + Handle{{ UpperFirst(Property.attrib['Name']) }}(invokingConnection{{ PrintRpcParameters(', ', rpcParamList) }}); +{% if Property.attrib['GenerateEventBindings']|booleanTrue == true %} + m_{{ UpperFirst(Property.attrib['Name']) }}Event.Signal({{ PrintRpcParameters('', rpcParamList) }}); +{% endif %} {% endif %} } else if (paramsSerialized) diff --git a/Gems/Multiplayer/Code/Include/Multiplayer/Components/LocalPredictionPlayerInputComponent.h b/Gems/Multiplayer/Code/Include/Multiplayer/Components/LocalPredictionPlayerInputComponent.h index 678ec2d6fd..08ba541a1b 100644 --- a/Gems/Multiplayer/Code/Include/Multiplayer/Components/LocalPredictionPlayerInputComponent.h +++ b/Gems/Multiplayer/Code/Include/Multiplayer/Components/LocalPredictionPlayerInputComponent.h @@ -99,8 +99,8 @@ namespace Multiplayer double m_moveAccumulator = 0.0; double m_clientBankedTime = 0.0; - AZ::TimeMs m_lastInputReceivedTimeMs = AZ::TimeMs{ 0 }; - AZ::TimeMs m_lastCorrectionSentTimeMs = AZ::TimeMs{ 0 }; + AZ::TimeMs m_lastInputReceivedTimeMs = AZ::Time::ZeroTimeMs; + AZ::TimeMs m_lastCorrectionSentTimeMs = AZ::Time::ZeroTimeMs; ClientInputId m_clientInputId = ClientInputId{ 0 }; // Clients incrementing inputId ClientInputId m_lastClientInputId = ClientInputId{ 0 }; // Last inputId processed by the server diff --git a/Gems/Multiplayer/Code/Include/Multiplayer/IMultiplayer.h b/Gems/Multiplayer/Code/Include/Multiplayer/IMultiplayer.h index 7245dbde9b..3c1dd370cd 100644 --- a/Gems/Multiplayer/Code/Include/Multiplayer/IMultiplayer.h +++ b/Gems/Multiplayer/Code/Include/Multiplayer/IMultiplayer.h @@ -265,7 +265,7 @@ namespace Multiplayer } private: HostFrameId m_previousHostFrameId = InvalidHostFrameId; - AZ::TimeMs m_previousHostTimeMs = AZ::TimeMs{ 0 }; + AZ::TimeMs m_previousHostTimeMs = AZ::Time::ZeroTimeMs; AzNetworking::ConnectionId m_previousRewindConnectionId = AzNetworking::InvalidConnectionId; float m_previousBlendFactor = DefaultBlendFactor; }; diff --git a/Gems/Multiplayer/Code/Include/Multiplayer/MultiplayerStats.h b/Gems/Multiplayer/Code/Include/Multiplayer/MultiplayerStats.h index 98a7b165f8..7bd0e9f527 100644 --- a/Gems/Multiplayer/Code/Include/Multiplayer/MultiplayerStats.h +++ b/Gems/Multiplayer/Code/Include/Multiplayer/MultiplayerStats.h @@ -27,7 +27,7 @@ namespace Multiplayer uint64_t m_serverConnectionCount = 0; uint64_t m_recordMetricIndex = 0; - AZ::TimeMs m_totalHistoryTimeMs = AZ::TimeMs{ 0 }; + AZ::TimeMs m_totalHistoryTimeMs = AZ::Time::ZeroTimeMs; static const uint32_t RingbufferSamples = 32; using MetricRingbuffer = AZStd::array; diff --git a/Gems/Multiplayer/Code/Include/Multiplayer/NetworkEntity/EntityReplication/EntityReplicationManager.h b/Gems/Multiplayer/Code/Include/Multiplayer/NetworkEntity/EntityReplication/EntityReplicationManager.h index 74935d5746..6bd22b39a1 100644 --- a/Gems/Multiplayer/Code/Include/Multiplayer/NetworkEntity/EntityReplication/EntityReplicationManager.h +++ b/Gems/Multiplayer/Code/Include/Multiplayer/NetworkEntity/EntityReplication/EntityReplicationManager.h @@ -201,9 +201,9 @@ namespace Multiplayer AZStd::unique_ptr m_replicationWindow; AZStd::unique_ptr m_remoteEntityDomain; - AZ::TimeMs m_entityActivationTimeSliceMs = AZ::TimeMs{ 0 }; - AZ::TimeMs m_entityPendingRemovalMs = AZ::TimeMs{ 0 }; - AZ::TimeMs m_frameTimeMs = AZ::TimeMs{ 0 }; + AZ::TimeMs m_entityActivationTimeSliceMs = AZ::Time::ZeroTimeMs; + AZ::TimeMs m_entityPendingRemovalMs = AZ::Time::ZeroTimeMs; + AZ::TimeMs m_frameTimeMs = AZ::Time::ZeroTimeMs; HostId m_remoteHostId = InvalidHostId; uint32_t m_maxRemoteEntitiesPendingCreationCount = AZStd::numeric_limits::max(); uint32_t m_maxPayloadSize = 0; diff --git a/Gems/Multiplayer/Code/Include/Multiplayer/NetworkInput/NetworkInput.h b/Gems/Multiplayer/Code/Include/Multiplayer/NetworkInput/NetworkInput.h index 1e02d6bf56..8e2e809e72 100644 --- a/Gems/Multiplayer/Code/Include/Multiplayer/NetworkInput/NetworkInput.h +++ b/Gems/Multiplayer/Code/Include/Multiplayer/NetworkInput/NetworkInput.h @@ -75,7 +75,7 @@ namespace Multiplayer MultiplayerComponentInputVector m_componentInputs; ClientInputId m_inputId = ClientInputId{ 0 }; HostFrameId m_hostFrameId = InvalidHostFrameId; - AZ::TimeMs m_hostTimeMs = AZ::TimeMs{ 0 }; + AZ::TimeMs m_hostTimeMs = AZ::Time::ZeroTimeMs; float m_hostBlendFactor = 0.f; ConstNetworkEntityHandle m_owner; bool m_wasAttached = false; diff --git a/Gems/Multiplayer/Code/Source/Components/LocalPredictionPlayerInputComponent.cpp b/Gems/Multiplayer/Code/Source/Components/LocalPredictionPlayerInputComponent.cpp index 96d6a5e31e..262f9d524f 100644 --- a/Gems/Multiplayer/Code/Source/Components/LocalPredictionPlayerInputComponent.cpp +++ b/Gems/Multiplayer/Code/Source/Components/LocalPredictionPlayerInputComponent.cpp @@ -66,11 +66,6 @@ namespace Multiplayer } } - inline double ConvertTimeMsToSeconds(AZ::TimeMs value) - { - return static_cast(static_cast(value)) / 1000.0; - } - void LocalPredictionPlayerInputComponent::LocalPredictionPlayerInputComponent::Reflect(AZ::ReflectContext* context) { AZ::SerializeContext* serializeContext = azrtti_cast(context); @@ -162,7 +157,7 @@ namespace Multiplayer } const AZ::TimeMs currentTimeMs = AZ::GetElapsedTimeMs(); - const double clientInputRateSec = ConvertTimeMsToSeconds(cl_InputRateMs); + const double clientInputRateSec = AZ::TimeMsToSecondsDouble(cl_InputRateMs); m_lastInputReceivedTimeMs = currentTimeMs; // Keep track of last inputs received, also allows us to update frame ids @@ -267,7 +262,7 @@ namespace Multiplayer return; } - const double clientInputRateSec = ConvertTimeMsToSeconds(cl_InputRateMs); + const double clientInputRateSec = AZ::TimeMsToSecondsDouble(cl_InputRateMs); // Copy array so we can modify input ids NetworkInputMigrationVector inputArrayCopy = inputArray; @@ -342,7 +337,7 @@ namespace Multiplayer // If this correction is for a move outside our input history window, just start replaying from the oldest move we have available const uint32_t startReplayIndex = (inputHistorySize > historicalDelta) ? (inputHistorySize - historicalDelta) : 0; - const double clientInputRateSec = ConvertTimeMsToSeconds(cl_InputRateMs); + const double clientInputRateSec = AZ::TimeMsToSecondsDouble(cl_InputRateMs); for (uint32_t replayIndex = startReplayIndex; replayIndex < inputHistorySize; ++replayIndex) { // Reprocess the input for this frame @@ -423,9 +418,9 @@ namespace Multiplayer void LocalPredictionPlayerInputComponentController::UpdateAutonomous(AZ::TimeMs deltaTimeMs) { - const double deltaTime = ConvertTimeMsToSeconds(deltaTimeMs); - const double clientInputRateSec = ConvertTimeMsToSeconds(cl_InputRateMs); - const double maxRewindHistory = ConvertTimeMsToSeconds(cl_MaxRewindHistoryMs); + const double deltaTime = AZ::TimeMsToSecondsDouble(deltaTimeMs); + const double clientInputRateSec = AZ::TimeMsToSecondsDouble(cl_InputRateMs); + const double maxRewindHistory = AZ::TimeMsToSecondsDouble(cl_MaxRewindHistoryMs); #ifndef AZ_RELEASE_BUILD m_moveAccumulator += deltaTime * cl_DebugHackTimeMultiplier; diff --git a/Gems/Multiplayer/Code/Source/ConnectionData/ClientToServerConnectionData.cpp b/Gems/Multiplayer/Code/Source/ConnectionData/ClientToServerConnectionData.cpp index 392b020748..2989b7629e 100644 --- a/Gems/Multiplayer/Code/Source/ConnectionData/ClientToServerConnectionData.cpp +++ b/Gems/Multiplayer/Code/Source/ConnectionData/ClientToServerConnectionData.cpp @@ -13,7 +13,7 @@ namespace Multiplayer // This can be used to help mitigate client side performance when large numbers of entities are created off the network AZ_CVAR(uint32_t, cl_ClientMaxRemoteEntitiesPendingCreationCount, AZStd::numeric_limits::max(), nullptr, AZ::ConsoleFunctorFlags::DontReplicate, "Maximum number of entities that we have sent to the client, but have not had a confirmation back from the client"); AZ_CVAR(AZ::TimeMs, cl_ClientEntityReplicatorPendingRemovalTimeMs, AZ::TimeMs{ 10000 }, nullptr, AZ::ConsoleFunctorFlags::DontReplicate, "How long should wait prior to removing an entity for the client through a change in the replication window, entity deletes are still immediate"); - AZ_CVAR(AZ::TimeMs, cl_DefaultNetworkEntityActivationTimeSliceMs, AZ::TimeMs{ 0 }, nullptr, AZ::ConsoleFunctorFlags::DontReplicate, "Max Ms to use to activate entities coming from the network, 0 means instantiate everything"); + AZ_CVAR(AZ::TimeMs, cl_DefaultNetworkEntityActivationTimeSliceMs, AZ::Time::ZeroTimeMs, nullptr, AZ::ConsoleFunctorFlags::DontReplicate, "Max Ms to use to activate entities coming from the network, 0 means instantiate everything"); ClientToServerConnectionData::ClientToServerConnectionData ( diff --git a/Gems/Multiplayer/Code/Source/Debug/MultiplayerDebugHierarchyReporter.cpp b/Gems/Multiplayer/Code/Source/Debug/MultiplayerDebugHierarchyReporter.cpp index ad28307204..78963439ed 100644 --- a/Gems/Multiplayer/Code/Source/Debug/MultiplayerDebugHierarchyReporter.cpp +++ b/Gems/Multiplayer/Code/Source/Debug/MultiplayerDebugHierarchyReporter.cpp @@ -27,7 +27,7 @@ namespace Multiplayer CollectHierarchyRoots(); AZ::EntitySystemBus::Handler::BusConnect(); - m_updateDebugOverlay.Enqueue(AZ::TimeMs{ 0 }, true); + m_updateDebugOverlay.Enqueue(AZ::Time::ZeroTimeMs, true); } MultiplayerDebugHierarchyReporter::~MultiplayerDebugHierarchyReporter() diff --git a/Gems/Multiplayer/Code/Source/Debug/MultiplayerDebugPerEntityReporter.cpp b/Gems/Multiplayer/Code/Source/Debug/MultiplayerDebugPerEntityReporter.cpp index adfef397b6..a53420da84 100644 --- a/Gems/Multiplayer/Code/Source/Debug/MultiplayerDebugPerEntityReporter.cpp +++ b/Gems/Multiplayer/Code/Source/Debug/MultiplayerDebugPerEntityReporter.cpp @@ -127,7 +127,7 @@ namespace Multiplayer MultiplayerDebugPerEntityReporter::MultiplayerDebugPerEntityReporter() : m_updateDebugOverlay([this]() { UpdateDebugOverlay(); }, AZ::Name("UpdateDebugPerEntityOverlay")) { - m_updateDebugOverlay.Enqueue(AZ::TimeMs{ 0 }, true); + m_updateDebugOverlay.Enqueue(AZ::Time::ZeroTimeMs, true); m_eventHandlers.m_entitySerializeStart = decltype(m_eventHandlers.m_entitySerializeStart)([this](AzNetworking::SerializerMode mode, AZ::EntityId entityId, const char* entityName) { diff --git a/Gems/Multiplayer/Code/Source/Editor/MultiplayerEditorConnection.cpp b/Gems/Multiplayer/Code/Source/Editor/MultiplayerEditorConnection.cpp index 59446e9889..b896f35b71 100644 --- a/Gems/Multiplayer/Code/Source/Editor/MultiplayerEditorConnection.cpp +++ b/Gems/Multiplayer/Code/Source/Editor/MultiplayerEditorConnection.cpp @@ -35,7 +35,7 @@ namespace Multiplayer { m_networkEditorInterface = AZ::Interface::Get()->CreateNetworkInterface( AZ::Name(MpEditorInterfaceName), ProtocolType::Tcp, TrustZone::ExternalClientToServer, *this); - m_networkEditorInterface->SetTimeoutMs(AZ::TimeMs{ 0 }); // Disable timeouts on this network interface + m_networkEditorInterface->SetTimeoutMs(AZ::Time::ZeroTimeMs); // Disable timeouts on this network interface // Wait to activate the editor-server until LegacySystemInterfaceCreated so that the logging system is ready // Automated testing listens for these logs diff --git a/Gems/Multiplayer/Code/Source/MultiplayerGem.cpp b/Gems/Multiplayer/Code/Source/MultiplayerGem.cpp index 030964d81c..830f0e2ef4 100644 --- a/Gems/Multiplayer/Code/Source/MultiplayerGem.cpp +++ b/Gems/Multiplayer/Code/Source/MultiplayerGem.cpp @@ -6,10 +6,9 @@ * */ +#include #include #include -#include -#include #include #include #include @@ -20,25 +19,32 @@ namespace Multiplayer MultiplayerModule::MultiplayerModule() : AZ::Module() { - m_descriptors.insert(m_descriptors.end(), { - AzNetworking::NetworkingSystemComponent::CreateDescriptor(), - MultiplayerSystemComponent::CreateDescriptor(), - NetBindComponent::CreateDescriptor(), - NetworkSpawnableHolderComponent::CreateDescriptor(), - }); + m_descriptors.insert( + m_descriptors.end(), + { + AzNetworking::NetworkingSystemComponent::CreateDescriptor(), + MultiplayerSystemComponent::CreateDescriptor(), + NetBindComponent::CreateDescriptor(), + NetworkSpawnableHolderComponent::CreateDescriptor(), +#ifdef MULTIPLAYER_EDITOR + MultiplayerToolsSystemComponent::CreateDescriptor(), +#endif + }); CreateComponentDescriptors(m_descriptors); } AZ::ComponentTypeList MultiplayerModule::GetRequiredSystemComponents() const { - return AZ::ComponentTypeList - { + return AZ::ComponentTypeList{ azrtti_typeid(), azrtti_typeid(), +#ifdef MULTIPLAYER_EDITOR + azrtti_typeid(), +#endif }; } -} +} // namespace Multiplayer #if !defined(MULTIPLAYER_EDITOR) AZ_DECLARE_MODULE_CLASS(Gem_Multiplayer, Multiplayer::MultiplayerModule); diff --git a/Gems/Multiplayer/Code/Source/MultiplayerSystemComponent.h b/Gems/Multiplayer/Code/Source/MultiplayerSystemComponent.h index e0d738aa57..dd2e7956ca 100644 --- a/Gems/Multiplayer/Code/Source/MultiplayerSystemComponent.h +++ b/Gems/Multiplayer/Code/Source/MultiplayerSystemComponent.h @@ -176,7 +176,7 @@ namespace Multiplayer AZStd::queue m_pendingConnectionTickets; AZStd::unordered_map m_playerRejoinData; - AZ::TimeMs m_lastReplicatedHostTimeMs = AZ::TimeMs{ 0 }; + AZ::TimeMs m_lastReplicatedHostTimeMs = AZ::Time::ZeroTimeMs; HostFrameId m_lastReplicatedHostFrameId = HostFrameId(0); uint64_t m_temporaryUserIdentifier = 0; // Used in the event of a migration or rejoin diff --git a/Gems/Multiplayer/Code/Source/MultiplayerToolsModule.cpp b/Gems/Multiplayer/Code/Source/MultiplayerToolsSystemComponent.cpp similarity index 66% rename from Gems/Multiplayer/Code/Source/MultiplayerToolsModule.cpp rename to Gems/Multiplayer/Code/Source/MultiplayerToolsSystemComponent.cpp index ecda82a31b..058517d5dc 100644 --- a/Gems/Multiplayer/Code/Source/MultiplayerToolsModule.cpp +++ b/Gems/Multiplayer/Code/Source/MultiplayerToolsSystemComponent.cpp @@ -6,7 +6,7 @@ * */ -#include +#include #include #include @@ -39,22 +39,4 @@ namespace Multiplayer { m_didProcessNetPrefabs = didProcessNetPrefabs; } - - MultiplayerToolsModule::MultiplayerToolsModule() - : AZ::Module() - { - m_descriptors.insert(m_descriptors.end(), { - MultiplayerToolsSystemComponent::CreateDescriptor(), - }); - } - - AZ::ComponentTypeList MultiplayerToolsModule::GetRequiredSystemComponents() const - { - return AZ::ComponentTypeList - { - azrtti_typeid(), - }; - } } // namespace Multiplayer - -AZ_DECLARE_MODULE_CLASS(Gem_Multiplayer_Tools, Multiplayer::MultiplayerToolsModule); diff --git a/Gems/Multiplayer/Code/Source/MultiplayerToolsModule.h b/Gems/Multiplayer/Code/Source/MultiplayerToolsSystemComponent.h similarity index 72% rename from Gems/Multiplayer/Code/Source/MultiplayerToolsModule.h rename to Gems/Multiplayer/Code/Source/MultiplayerToolsSystemComponent.h index d0a6a81afb..3c4f8ea7a3 100644 --- a/Gems/Multiplayer/Code/Source/MultiplayerToolsModule.h +++ b/Gems/Multiplayer/Code/Source/MultiplayerToolsSystemComponent.h @@ -37,19 +37,5 @@ namespace Multiplayer bool m_didProcessNetPrefabs = false; }; - - class MultiplayerToolsModule - : public AZ::Module - { - public: - - AZ_RTTI(MultiplayerToolsModule, "{3F726172-21FC-48FA-8CFA-7D87EBA07E55}", AZ::Module); - AZ_CLASS_ALLOCATOR(MultiplayerToolsModule, AZ::SystemAllocator, 0); - - MultiplayerToolsModule(); - ~MultiplayerToolsModule() override = default; - - AZ::ComponentTypeList GetRequiredSystemComponents() const override; - }; } // namespace Multiplayer diff --git a/Gems/Multiplayer/Code/Source/NetworkEntity/EntityReplication/EntityReplicationManager.cpp b/Gems/Multiplayer/Code/Source/NetworkEntity/EntityReplication/EntityReplicationManager.cpp index 583671d1f3..e095af4ae7 100644 --- a/Gems/Multiplayer/Code/Source/NetworkEntity/EntityReplication/EntityReplicationManager.cpp +++ b/Gems/Multiplayer/Code/Source/NetworkEntity/EntityReplication/EntityReplicationManager.cpp @@ -54,10 +54,10 @@ namespace Multiplayer m_maxPayloadSize = connection.GetConnectionMtu() - UdpPacketHeaderSerializeSize - ReplicationManagerPacketOverhead; // Schedule ClearRemovedReplicators() - m_clearRemovedReplicators.Enqueue(AZ::TimeMs{ 0 }, true); + m_clearRemovedReplicators.Enqueue(AZ::Time::ZeroTimeMs, true); // Start window update events - m_updateWindow.Enqueue(AZ::TimeMs{ 0 }, true); + m_updateWindow.Enqueue(AZ::Time::ZeroTimeMs, true); INetworkEntityManager* networkEntityManager = GetNetworkEntityManager(); if (networkEntityManager != nullptr) @@ -97,7 +97,7 @@ namespace Multiplayer notReadyEntities.push_back(entityId); } } - if (m_entityActivationTimeSliceMs > AZ::TimeMs{ 0 } && AZ::GetElapsedTimeMs() > endTimeMs) + if (m_entityActivationTimeSliceMs > AZ::Time::ZeroTimeMs && AZ::GetElapsedTimeMs() > endTimeMs) { // If we go over our timeslice, break out the loop break; diff --git a/Gems/Multiplayer/Code/Source/NetworkEntity/EntityReplication/EntityReplicator.cpp b/Gems/Multiplayer/Code/Source/NetworkEntity/EntityReplication/EntityReplicator.cpp index 67527bf962..935850a795 100644 --- a/Gems/Multiplayer/Code/Source/NetworkEntity/EntityReplication/EntityReplicator.cpp +++ b/Gems/Multiplayer/Code/Source/NetworkEntity/EntityReplication/EntityReplicator.cpp @@ -344,7 +344,7 @@ namespace Multiplayer void EntityReplicator::SetPendingRemoval(AZ::TimeMs pendingRemovalTimeMs) { AZ_Assert(m_propertyPublisher, "Only valid if we are publishing updates"); - if (pendingRemovalTimeMs > AZ::TimeMs{ 0 }) + if (pendingRemovalTimeMs > AZ::Time::ZeroTimeMs) { if (!IsPendingRemoval()) { diff --git a/Gems/Multiplayer/Code/Source/NetworkEntity/EntityReplication/PropertySubscriber.cpp b/Gems/Multiplayer/Code/Source/NetworkEntity/EntityReplication/PropertySubscriber.cpp index c0e5c09c7b..8cbe542568 100644 --- a/Gems/Multiplayer/Code/Source/NetworkEntity/EntityReplication/PropertySubscriber.cpp +++ b/Gems/Multiplayer/Code/Source/NetworkEntity/EntityReplication/PropertySubscriber.cpp @@ -26,7 +26,7 @@ namespace Multiplayer bool PropertySubscriber::IsDeleting() const { - return m_markForRemovalTimeMs > AZ::TimeMs{ 0 }; + return m_markForRemovalTimeMs > AZ::Time::ZeroTimeMs; } bool PropertySubscriber::IsDeleted() const diff --git a/Gems/Multiplayer/Code/Source/NetworkEntity/EntityReplication/PropertySubscriber.h b/Gems/Multiplayer/Code/Source/NetworkEntity/EntityReplication/PropertySubscriber.h index 286509b798..7f1a43a743 100644 --- a/Gems/Multiplayer/Code/Source/NetworkEntity/EntityReplication/PropertySubscriber.h +++ b/Gems/Multiplayer/Code/Source/NetworkEntity/EntityReplication/PropertySubscriber.h @@ -40,6 +40,6 @@ namespace Multiplayer // The last packet to have been received about this entity AzNetworking::PacketId m_lastReceivedPacketId = AzNetworking::InvalidPacketId; - AZ::TimeMs m_markForRemovalTimeMs = AZ::TimeMs{ 0 }; + AZ::TimeMs m_markForRemovalTimeMs = AZ::Time::ZeroTimeMs; }; } diff --git a/Gems/Multiplayer/Code/Source/NetworkEntity/NetworkEntityManager.cpp b/Gems/Multiplayer/Code/Source/NetworkEntity/NetworkEntityManager.cpp index 6885d78075..fa524d464a 100644 --- a/Gems/Multiplayer/Code/Source/NetworkEntity/NetworkEntityManager.cpp +++ b/Gems/Multiplayer/Code/Source/NetworkEntity/NetworkEntityManager.cpp @@ -123,7 +123,7 @@ namespace Multiplayer AZ_Assert(entityHandle.GetNetBindComponent(), "No NetBindComponent found on networked entity"); } m_removeList.push_back(entityHandle.GetNetEntityId()); - m_removeEntitiesEvent.Enqueue(AZ::TimeMs{ 0 }); + m_removeEntitiesEvent.Enqueue(AZ::Time::ZeroTimeMs); } } diff --git a/Gems/Multiplayer/Code/Source/NetworkTime/NetworkTime.h b/Gems/Multiplayer/Code/Source/NetworkTime/NetworkTime.h index 2bcf019623..5e865d801c 100644 --- a/Gems/Multiplayer/Code/Source/NetworkTime/NetworkTime.h +++ b/Gems/Multiplayer/Code/Source/NetworkTime/NetworkTime.h @@ -44,7 +44,7 @@ namespace Multiplayer HostFrameId m_hostFrameId = HostFrameId{ 0 }; HostFrameId m_unalteredFrameId = HostFrameId{ 0 }; - AZ::TimeMs m_hostTimeMs = AZ::TimeMs{ 0 }; + AZ::TimeMs m_hostTimeMs = AZ::Time::ZeroTimeMs; float m_hostBlendFactor = DefaultBlendFactor; AzNetworking::ConnectionId m_rewindingConnectionId = AzNetworking::InvalidConnectionId; }; diff --git a/Gems/Multiplayer/Code/Source/Pipeline/NetworkPrefabProcessor.cpp b/Gems/Multiplayer/Code/Source/Pipeline/NetworkPrefabProcessor.cpp index bec659180c..2a6baed411 100644 --- a/Gems/Multiplayer/Code/Source/Pipeline/NetworkPrefabProcessor.cpp +++ b/Gems/Multiplayer/Code/Source/Pipeline/NetworkPrefabProcessor.cpp @@ -53,7 +53,7 @@ namespace Multiplayer ; serializeContext->Class() - ->Version(3) + ->Version(4) ->Field("SerializationFormat", &NetworkPrefabProcessor::m_serializationFormat) ; } @@ -146,6 +146,8 @@ namespace Multiplayer networkSpawnableAsset.Create(networkSpawnable->GetId()); networkSpawnableAsset.SetAutoLoadBehavior(AZ::Data::AssetLoadBehavior::PreLoad); + AZStd::unordered_set prefabNetEntityIds; + for (auto* prefabEntity : prefabNetEntities) { Instance* instance = netEntityToInstanceMap[prefabEntity]; @@ -158,6 +160,22 @@ namespace Multiplayer netEntity->InvalidateDependencies(); netEntity->EvaluateDependencies(); + auto* transformComponent = netEntity->FindComponent(); + if (transformComponent) + { + AZ::EntityId parentId = transformComponent->GetParentId(); + if (parentId.IsValid() && !prefabNetEntityIds.contains(parentId)) + { + // Clear parent ID for net entities parented to a non-net entity. + // To be addressed by the spawnable aliases system where non-net entities + // will be spawned together with the networked ones in which case we'll keep + // the cross-spawnable references. + transformComponent->SetParent(AZ::EntityId()); + } + } + + prefabNetEntityIds.insert(netEntity->GetId()); + // Insert the entity into the target net spawnable netSpawnableEntities.emplace_back(netEntity); } diff --git a/Gems/Multiplayer/Code/Tests/CommonBenchmarkSetup.h b/Gems/Multiplayer/Code/Tests/CommonBenchmarkSetup.h index 3e4a33290a..c352dc2bbf 100644 --- a/Gems/Multiplayer/Code/Tests/CommonBenchmarkSetup.h +++ b/Gems/Multiplayer/Code/Tests/CommonBenchmarkSetup.h @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -41,7 +42,6 @@ namespace Multiplayer AZ::SerializeContext* GetSerializeContext() override { return {}; } AZ::BehaviorContext* GetBehaviorContext() override { return {}; } AZ::JsonRegistrationContext* GetJsonRegistrationContext() override { return {}; } - const char* GetAppRoot() const override { return {}; } const char* GetEngineRoot() const override { return {}; } const char* GetExecutableFolder() const override { return {}; } void QueryApplicationType([[maybe_unused]] AZ::ApplicationTypeQuery& appType) const override {} @@ -93,20 +93,6 @@ namespace Multiplayer } }; - class BenchmarkTime : public AZ::ITime - { - public: - AZ::TimeMs GetElapsedTimeMs() const override - { - return {}; - } - - AZ::TimeUs GetElapsedTimeUs() const override - { - return {}; - } - }; - class BenchmarkNetworkTime : public Multiplayer::INetworkTime { public: @@ -350,8 +336,7 @@ namespace Multiplayer // Without Multiplayer::RegisterMultiplayerComponents() the stats go to invalid id, which is fine for unit tests GetMultiplayer()->GetStats().ReserveComponentStats(Multiplayer::InvalidNetComponentId, 50, 0); - m_Time = AZStd::make_unique(); - AZ::Interface::Register(m_Time.get()); + m_Time = AZStd::make_unique(); m_NetworkTime = AZStd::make_unique(); AZ::Interface::Register(m_NetworkTime.get()); @@ -382,7 +367,6 @@ namespace Multiplayer m_ConnectionListener.reset(); AZ::Interface::Unregister(m_NetworkTime.get()); - AZ::Interface::Unregister(m_Time.get()); AZ::Interface::Unregister(m_Multiplayer.get()); AZ::Interface::Unregister(m_ComponentApplicationRequests.get()); @@ -415,7 +399,7 @@ namespace Multiplayer AZStd::unique_ptr m_Multiplayer; AZStd::unique_ptr m_NetworkEntityManager; - AZStd::unique_ptr m_Time; + AZStd::unique_ptr m_Time; AZStd::unique_ptr m_NetworkTime; AZStd::unique_ptr m_Connection; diff --git a/Gems/Multiplayer/Code/Tests/CommonHierarchySetup.h b/Gems/Multiplayer/Code/Tests/CommonHierarchySetup.h index 1b64efc5e2..cdc4724c70 100644 --- a/Gems/Multiplayer/Code/Tests/CommonHierarchySetup.h +++ b/Gems/Multiplayer/Code/Tests/CommonHierarchySetup.h @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -117,8 +118,7 @@ namespace Multiplayer ON_CALL(*m_mockNetworkEntityManager, GetEntity(_)).WillByDefault(Invoke(this, &HierarchyTests::GetEntity)); ON_CALL(*m_mockNetworkEntityManager, GetNetEntityIdById(_)).WillByDefault(Invoke(this, &HierarchyTests::GetNetEntityIdById)); - m_mockTime = AZStd::make_unique>(); - AZ::Interface::Register(m_mockTime.get()); + m_mockTime = AZStd::make_unique(); m_eventScheduler = AZStd::make_unique(); @@ -168,7 +168,6 @@ namespace Multiplayer m_networkEntityAuthorityTracker.reset(); AZ::Interface::Unregister(m_mockNetworkTime.get()); - AZ::Interface::Unregister(m_mockTime.get()); AZ::Interface::Unregister(m_mockNetworkEntityManager.get()); AZ::Interface::Unregister(m_mockMultiplayer.get()); AZ::Interface::Unregister(m_mockComponentApplicationRequests.get()); @@ -207,8 +206,8 @@ namespace Multiplayer AZStd::unique_ptr> m_mockMultiplayer; AZStd::unique_ptr m_mockNetworkEntityManager; - AZStd::unique_ptr> m_mockTime; AZStd::unique_ptr m_eventScheduler; + AZStd::unique_ptr m_mockTime; AZStd::unique_ptr> m_mockNetworkTime; AZStd::unique_ptr> m_mockConnection; diff --git a/Gems/Multiplayer/Code/Tests/MockInterfaces.h b/Gems/Multiplayer/Code/Tests/MockInterfaces.h index f5207d94c8..1060006169 100644 --- a/Gems/Multiplayer/Code/Tests/MockInterfaces.h +++ b/Gems/Multiplayer/Code/Tests/MockInterfaces.h @@ -103,13 +103,6 @@ namespace UnitTest MOCK_METHOD3(OnDisconnect, void(IConnection*, DisconnectReason, TerminationEndpoint)); }; - class MockTime : public AZ::ITime - { - public: - MOCK_CONST_METHOD0(GetElapsedTimeUs, AZ::TimeUs()); - MOCK_CONST_METHOD0(GetElapsedTimeMs, AZ::TimeMs()); - }; - class MockNetworkTime : public Multiplayer::INetworkTime { public: @@ -149,7 +142,6 @@ namespace UnitTest MOCK_METHOD0(GetSerializeContext, AZ::SerializeContext* ()); MOCK_METHOD0(GetBehaviorContext, AZ::BehaviorContext* ()); MOCK_METHOD0(GetJsonRegistrationContext, AZ::JsonRegistrationContext* ()); - MOCK_CONST_METHOD0(GetAppRoot, const char* ()); MOCK_CONST_METHOD0(GetEngineRoot, const char* ()); MOCK_CONST_METHOD0(GetExecutableFolder, const char* ()); MOCK_METHOD0(GetDrillerManager, AZ::Debug::DrillerManager* ()); diff --git a/Gems/Multiplayer/Code/Tests/RewindableContainerTests.cpp b/Gems/Multiplayer/Code/Tests/RewindableContainerTests.cpp index f6e5d82703..ec6b30ca15 100644 --- a/Gems/Multiplayer/Code/Tests/RewindableContainerTests.cpp +++ b/Gems/Multiplayer/Code/Tests/RewindableContainerTests.cpp @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include namespace UnitTest @@ -23,7 +23,7 @@ namespace UnitTest public: Multiplayer::NetworkTime m_networkTime; AZ::LoggerSystemComponent m_loggerComponent; - AZ::TimeSystemComponent m_timeComponent; + AZ::TimeSystem m_timeSystem; }; static constexpr uint32_t RewindableContainerSize = 7; @@ -43,7 +43,7 @@ namespace UnitTest // Test rewind for all pushed values and overall size for (uint32_t idx = 0; idx < RewindableContainerSize; ++idx) { - Multiplayer::ScopedAlterTime time(static_cast(idx), AZ::TimeMs{ 0 }, 1.f, AzNetworking::InvalidConnectionId); + Multiplayer::ScopedAlterTime time(static_cast(idx), AZ::Time::ZeroTimeMs, 1.f, AzNetworking::InvalidConnectionId); EXPECT_EQ(idx + 1, test.size()); EXPECT_EQ(idx, test.back()); } @@ -70,9 +70,9 @@ namespace UnitTest EXPECT_TRUE(test.empty()); // Test rewind for pop_back and clear - Multiplayer::ScopedAlterTime pop_time(static_cast(RewindableContainerSize), AZ::TimeMs{ 0 }, 1.f, AzNetworking::InvalidConnectionId); + Multiplayer::ScopedAlterTime pop_time(static_cast(RewindableContainerSize), AZ::Time::ZeroTimeMs, 1.f, AzNetworking::InvalidConnectionId); EXPECT_EQ(RewindableContainerSize - 1, test.size()); - Multiplayer::ScopedAlterTime clear_time(static_cast(RewindableContainerSize + 1), AZ::TimeMs{ 0 }, 1.f, AzNetworking::InvalidConnectionId); + Multiplayer::ScopedAlterTime clear_time(static_cast(RewindableContainerSize + 1), AZ::Time::ZeroTimeMs, 1.f, AzNetworking::InvalidConnectionId); EXPECT_EQ(0, test.size()); // Test copy_values and resize_no_construct @@ -100,7 +100,7 @@ namespace UnitTest // Test rewind for all values and overall size for (uint32_t idx = 1; idx <= RewindableContainerSize; ++idx) { - Multiplayer::ScopedAlterTime time(static_cast(idx), AZ::TimeMs{ 0 }, 1.f, AzNetworking::InvalidConnectionId); + Multiplayer::ScopedAlterTime time(static_cast(idx), AZ::Time::ZeroTimeMs, 1.f, AzNetworking::InvalidConnectionId); for (uint32_t testIdx = 0; testIdx < RewindableContainerSize; ++testIdx) { if (testIdx < idx) diff --git a/Gems/Multiplayer/Code/Tests/RewindableObjectTests.cpp b/Gems/Multiplayer/Code/Tests/RewindableObjectTests.cpp index 04de971f0d..0ff2c977d0 100644 --- a/Gems/Multiplayer/Code/Tests/RewindableObjectTests.cpp +++ b/Gems/Multiplayer/Code/Tests/RewindableObjectTests.cpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include #include namespace UnitTest @@ -21,7 +21,7 @@ namespace UnitTest public: Multiplayer::NetworkTime m_networkTime; AZ::LoggerSystemComponent m_loggerComponent; - AZ::TimeSystemComponent m_timeComponent; + AZ::TimeSystem m_timeSystem; }; static constexpr uint32_t RewindableBufferFrames = 32; @@ -39,7 +39,7 @@ namespace UnitTest for (uint32_t i = 0; i < 16; ++i) { - Multiplayer::ScopedAlterTime time(static_cast(i), AZ::TimeMs{ 0 }, 1.f, AzNetworking::InvalidConnectionId); + Multiplayer::ScopedAlterTime time(static_cast(i), AZ::Time::ZeroTimeMs, 1.f, AzNetworking::InvalidConnectionId); EXPECT_EQ(i, test); } @@ -52,7 +52,7 @@ namespace UnitTest for (uint32_t i = 16; i < 48; ++i) { - Multiplayer::ScopedAlterTime time(static_cast(i), AZ::TimeMs{ 0 }, 1.f, AzNetworking::InvalidConnectionId); + Multiplayer::ScopedAlterTime time(static_cast(i), AZ::Time::ZeroTimeMs, 1.f, AzNetworking::InvalidConnectionId); EXPECT_EQ(i, test); } } @@ -70,15 +70,15 @@ namespace UnitTest { // Test that Get/GetPrevious return different value when not on the owning connection - Multiplayer::ScopedAlterTime time(static_cast(RewindableBufferFrames - 1), AZ::TimeMs{ 0 }, 1.f, AzNetworking::InvalidConnectionId); + Multiplayer::ScopedAlterTime time(static_cast(RewindableBufferFrames - 1), AZ::Time::ZeroTimeMs, 1.f, AzNetworking::InvalidConnectionId); EXPECT_EQ(RewindableBufferFrames - 1, test.Get()); EXPECT_EQ(RewindableBufferFrames - 2, test.GetPrevious()); } // Test that Get/GetPrevious return the unaltered frame on the owning conection - Multiplayer::GetNetworkTime()->AlterTime(static_cast(RewindableBufferFrames - 1), AZ::TimeMs{ 0 }, 1.f, AzNetworking::ConnectionId(0)); + Multiplayer::GetNetworkTime()->AlterTime(static_cast(RewindableBufferFrames - 1), AZ::Time::ZeroTimeMs, 1.f, AzNetworking::ConnectionId(0)); { - Multiplayer::ScopedAlterTime time(static_cast(RewindableBufferFrames - 1), AZ::TimeMs{ 0 }, 1.f, AzNetworking::ConnectionId(0)); + Multiplayer::ScopedAlterTime time(static_cast(RewindableBufferFrames - 1), AZ::Time::ZeroTimeMs, 1.f, AzNetworking::ConnectionId(0)); test.SetOwningConnectionId(AzNetworking::ConnectionId(0)); EXPECT_EQ(RewindableBufferFrames - 1, test.Get()); EXPECT_EQ(RewindableBufferFrames - 1, test.GetPrevious()); @@ -99,7 +99,7 @@ namespace UnitTest { // Note that we didn't actually set any value for time rewindableBufferFrames, so we're testing fetching a value past the last time set - Multiplayer::ScopedAlterTime time(static_cast(RewindableBufferFrames), AZ::TimeMs{ 0 }, 1.f, AzNetworking::InvalidConnectionId); + Multiplayer::ScopedAlterTime time(static_cast(RewindableBufferFrames), AZ::Time::ZeroTimeMs, 1.f, AzNetworking::InvalidConnectionId); EXPECT_EQ(RewindableBufferFrames - 1, test); } } @@ -122,7 +122,7 @@ namespace UnitTest for (uint32_t i = 0; i < RewindableBufferFrames; ++i) { - Multiplayer::ScopedAlterTime time(static_cast(i), AZ::TimeMs{ 0 }, 1.f, AzNetworking::InvalidConnectionId); + Multiplayer::ScopedAlterTime time(static_cast(i), AZ::Time::ZeroTimeMs, 1.f, AzNetworking::InvalidConnectionId); const Object& value = test; EXPECT_EQ(value.value, i); } @@ -131,19 +131,19 @@ namespace UnitTest TEST_F(RewindableObjectTests, TestBackfillOnLargeTimestep) { Multiplayer::RewindableObject test(0); - Multiplayer::ScopedAlterTime time1(static_cast(0), AZ::TimeMs{ 0 }, 1.f, AzNetworking::InvalidConnectionId); + Multiplayer::ScopedAlterTime time1(static_cast(0), AZ::Time::ZeroTimeMs, 1.f, AzNetworking::InvalidConnectionId); test = 1; - Multiplayer::ScopedAlterTime time2(static_cast(31), AZ::TimeMs{ 0 }, 1.f, AzNetworking::InvalidConnectionId); + Multiplayer::ScopedAlterTime time2(static_cast(31), AZ::Time::ZeroTimeMs, 1.f, AzNetworking::InvalidConnectionId); test = 2; for (uint32_t i = 0; i < 31; ++i) { - Multiplayer::ScopedAlterTime time(static_cast(i), AZ::TimeMs{ 0 }, 1.f, AzNetworking::InvalidConnectionId); + Multiplayer::ScopedAlterTime time(static_cast(i), AZ::Time::ZeroTimeMs, 1.f, AzNetworking::InvalidConnectionId); EXPECT_EQ(1, test); } - Multiplayer::ScopedAlterTime time3(static_cast(31), AZ::TimeMs{ 0 }, 1.f, AzNetworking::InvalidConnectionId); + Multiplayer::ScopedAlterTime time3(static_cast(31), AZ::Time::ZeroTimeMs, 1.f, AzNetworking::InvalidConnectionId); EXPECT_EQ(2, test); } @@ -159,7 +159,7 @@ namespace UnitTest for (uint32_t i = 0; i < 1000; ++i) { - Multiplayer::ScopedAlterTime time(static_cast(1000 - i), AZ::TimeMs{ 0 }, 1.f, AzNetworking::InvalidConnectionId); + Multiplayer::ScopedAlterTime time(static_cast(1000 - i), AZ::Time::ZeroTimeMs, 1.f, AzNetworking::InvalidConnectionId); EXPECT_EQ(1000, test); } } diff --git a/Gems/Multiplayer/Code/multiplayer_tools_files.cmake b/Gems/Multiplayer/Code/multiplayer_tools_files.cmake index aa948f4e75..b180e239a2 100644 --- a/Gems/Multiplayer/Code/multiplayer_tools_files.cmake +++ b/Gems/Multiplayer/Code/multiplayer_tools_files.cmake @@ -10,6 +10,6 @@ set(FILES Include/Multiplayer/IMultiplayerTools.h Source/Pipeline/NetworkPrefabProcessor.cpp Source/Pipeline/NetworkPrefabProcessor.h - Source/MultiplayerToolsModule.h - Source/MultiplayerToolsModule.cpp + Source/MultiplayerToolsSystemComponent.cpp + Source/MultiplayerToolsSystemComponent.h ) diff --git a/Gems/PhysX/Assets/Editor/Icons/Components/PhysXHeightfieldCollider.svg b/Gems/PhysX/Assets/Editor/Icons/Components/PhysXHeightfieldCollider.svg new file mode 100644 index 0000000000..f616a26381 --- /dev/null +++ b/Gems/PhysX/Assets/Editor/Icons/Components/PhysXHeightfieldCollider.svg @@ -0,0 +1,3 @@ + + + diff --git a/Gems/PhysX/Assets/Editor/Icons/Components/Viewport/PhysXHeightfieldCollider.svg b/Gems/PhysX/Assets/Editor/Icons/Components/Viewport/PhysXHeightfieldCollider.svg new file mode 100644 index 0000000000..fbfed18e46 --- /dev/null +++ b/Gems/PhysX/Assets/Editor/Icons/Components/Viewport/PhysXHeightfieldCollider.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/Gems/PhysX/Code/Editor/EditorJointConfiguration.cpp b/Gems/PhysX/Code/Editor/EditorJointConfiguration.cpp index 02e684de63..166c44de22 100644 --- a/Gems/PhysX/Code/Editor/EditorJointConfiguration.cpp +++ b/Gems/PhysX/Code/Editor/EditorJointConfiguration.cpp @@ -11,6 +11,7 @@ #include #include #include +#include namespace { @@ -213,7 +214,7 @@ namespace PhysX if (auto* serializeContext = azrtti_cast(context)) { serializeContext->Class() - ->Version(4, &EditorJointConfig::VersionConverter) + ->Version(5, &EditorJointConfig::VersionConverter) ->Field("Local Position", &EditorJointConfig::m_localPosition) ->Field("Local Rotation", &EditorJointConfig::m_localRotation) ->Field("Parent Entity", &EditorJointConfig::m_leadEntity) @@ -228,6 +229,12 @@ namespace PhysX if (auto* editContext = serializeContext->GetEditContext()) { + editContext->Enum("Joint Display Setup State", "Options for displaying joint setup.") + ->Value("Never", EditorJointConfig::DisplaySetupState::Never) + ->Value("Selected", EditorJointConfig::DisplaySetupState::Selected) + ->Value("Always", EditorJointConfig::DisplaySetupState::Always) + ; + editContext->Class( "PhysX Joint Configuration", "") ->ClassElement(AZ::Edit::ClassElements::EditorData, "") @@ -244,8 +251,11 @@ namespace PhysX ->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorJointConfig::ValidateLeadEntityId) ->DataElement(0, &PhysX::EditorJointConfig::m_selfCollide, "Lead-Follower Collide" , "When active, the lead and follower pair will collide with each other.") - ->DataElement(0, &PhysX::EditorJointConfig::m_displayJointSetup, "Display Setup in Viewport" - , "Display joint setup in the viewport.") + ->DataElement( + AZ::Edit::UIHandlers::ComboBox, &PhysX::EditorJointConfig::m_displayJointSetup, "Display Setup in Viewport" + , "Never = Not shown." + "Select = Show setup display when entity is selected." + "Always = Always show setup display.") ->Attribute(AZ::Edit::Attributes::ReadOnly, &EditorJointConfig::IsInComponentMode) ->DataElement(0, &PhysX::EditorJointConfig::m_selectLeadOnSnap, "Select Lead on Snap" , "Select lead entity on snap to position in component mode.") @@ -306,6 +316,23 @@ namespace PhysX m_followerEntity); } + bool EditorJointConfig::ShowSetupDisplay() const + { + switch(m_displayJointSetup) + { + case DisplaySetupState::Always: + return true; + case DisplaySetupState::Selected: + { + bool showSetup = false; + AzToolsFramework::EditorEntityInfoRequestBus::EventResult( + showSetup, m_followerEntity, &AzToolsFramework::EditorEntityInfoRequests::IsSelected); + return showSetup; + } + } + return false; + } + bool EditorJointConfig::IsInComponentMode() const { return m_inComponentMode; @@ -343,6 +370,31 @@ namespace PhysX } } + // convert m_displayJointSetup from a bool to the enum with the option Never,Selected,Always show joint setup helpers. + if (classElement.GetVersion() <= 4) + { + // get the current bool setting and remove it. + bool oldSetting = false; + const int displayJointSetupIndex = classElement.FindElement(AZ_CRC_CE("Display Debug")); + if (displayJointSetupIndex >= 0) + { + AZ::SerializeContext::DataElementNode& elementNode = classElement.GetSubElement(displayJointSetupIndex); + elementNode.GetData(oldSetting); + classElement.RemoveElement(displayJointSetupIndex); + } + + //if the old setting was on set it to 'Selected'. otherwise 'Never' + if (oldSetting) + { + classElement.AddElementWithData(context, "Display Debug", EditorJointConfig::DisplaySetupState::Selected); + } + else + { + classElement.AddElementWithData(context, "Display Debug", EditorJointConfig::DisplaySetupState::Never); + } + } + + return result; } diff --git a/Gems/PhysX/Code/Editor/EditorJointConfiguration.h b/Gems/PhysX/Code/Editor/EditorJointConfiguration.h index 89ab31e4a7..f3dcd4afed 100644 --- a/Gems/PhysX/Code/Editor/EditorJointConfiguration.h +++ b/Gems/PhysX/Code/Editor/EditorJointConfiguration.h @@ -100,12 +100,21 @@ namespace PhysX AZ_TYPE_INFO(EditorJointConfig, "{8A966D65-CA97-4786-A13C-ACAA519D97EA}"); static void Reflect(AZ::ReflectContext* context); + enum class DisplaySetupState : AZ::u8 + { + Never = 0, + Selected, + Always + }; + void SetLeadEntityId(AZ::EntityId leadEntityId); JointGenericProperties ToGenericProperties() const; JointComponentConfiguration ToGameTimeConfig() const; + bool ShowSetupDisplay() const; + bool m_breakable = false; - bool m_displayJointSetup = false; + DisplaySetupState m_displayJointSetup = DisplaySetupState::Selected; bool m_inComponentMode = false; bool m_selectLeadOnSnap = true; bool m_selfCollide = false; @@ -129,3 +138,8 @@ namespace PhysX }; } // namespace PhysX + +namespace AZ +{ + AZ_TYPE_INFO_SPECIALIZE(PhysX::EditorJointConfig::DisplaySetupState, "{17EBE6BD-289A-4326-8A24-DCE3B7FEC51E}"); +} // namespace AZ diff --git a/Gems/PhysX/Code/Editor/Source/ComponentModes/Joints/JointsComponentMode.cpp b/Gems/PhysX/Code/Editor/Source/ComponentModes/Joints/JointsComponentMode.cpp index ce95e27db3..08e31a89f0 100644 --- a/Gems/PhysX/Code/Editor/Source/ComponentModes/Joints/JointsComponentMode.cpp +++ b/Gems/PhysX/Code/Editor/Source/ComponentModes/Joints/JointsComponentMode.cpp @@ -307,7 +307,16 @@ namespace PhysX AZStd::vector JointsComponentMode::PopulateViewportUiImpl() { - return AZStd::vector(m_modeSelectionClusterIds.begin(), m_modeSelectionClusterIds.end()); + AZStd::vector ids; + ids.reserve(m_modeSelectionClusterIds.size()); + for (auto clusterid : m_modeSelectionClusterIds) + { + if (clusterid != AzToolsFramework::ViewportUi::InvalidClusterId) + { + ids.emplace_back(clusterid); + } + } + return ids; } void JointsComponentMode::SetCurrentMode(JointsComponentModeCommon::SubComponentModes::ModeType newMode, ButtonData& buttonData) @@ -353,31 +362,64 @@ namespace PhysX void JointsComponentMode::SetupSubModes(const AZ::EntityComponentIdPair& entityComponentIdPair) { - //create the 3 cluster groups - for (auto& clusterId : m_modeSelectionClusterIds) - { - AzToolsFramework::ViewportUi::ViewportUiRequestBus::EventResult( - clusterId, AzToolsFramework::ViewportUi::DefaultViewportId, - &AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::CreateCluster, - AzToolsFramework::ViewportUi::Alignment::TopLeft); - } - //retrieve the enabled sub components from the entity AZStd::vector subModesState; EditorJointRequestBus::EventResult(subModesState, entityComponentIdPair, &EditorJointRequests::GetSubComponentModesState); + //group 1 is always available so create it + AzToolsFramework::ViewportUi::ViewportUiRequestBus::EventResult( + m_modeSelectionClusterIds[static_cast(ClusterGroups::Group1)], AzToolsFramework::ViewportUi::DefaultViewportId, + &AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::CreateCluster, AzToolsFramework::ViewportUi::Alignment::TopLeft); + + //check if groups 2 and/or 3 need to be created + for (auto [modeType, _] : subModesState) + { + const AzToolsFramework::ViewportUi::ClusterId group2Id = GetClusterId(ClusterGroups::Group2); + const AzToolsFramework::ViewportUi::ClusterId group3Id = GetClusterId(ClusterGroups::Group3); + switch (modeType) + { + case JointsComponentModeCommon::SubComponentModes::ModeType::Damping: + case JointsComponentModeCommon::SubComponentModes::ModeType::Stiffness: + case JointsComponentModeCommon::SubComponentModes::ModeType::TwistLimits: + case JointsComponentModeCommon::SubComponentModes::ModeType::SwingLimits: + { + if (group2Id == AzToolsFramework::ViewportUi::InvalidClusterId) + { + AzToolsFramework::ViewportUi::ViewportUiRequestBus::EventResult( + m_modeSelectionClusterIds[static_cast(ClusterGroups::Group2)], + AzToolsFramework::ViewportUi::DefaultViewportId, + &AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::CreateCluster, + AzToolsFramework::ViewportUi::Alignment::TopLeft); + } + } + break; + case JointsComponentModeCommon::SubComponentModes::ModeType::MaxForce: + case JointsComponentModeCommon::SubComponentModes::ModeType::MaxTorque: + { + if (group3Id == AzToolsFramework::ViewportUi::InvalidClusterId) + { + AzToolsFramework::ViewportUi::ViewportUiRequestBus::EventResult( + m_modeSelectionClusterIds[static_cast(ClusterGroups::Group3)], + AzToolsFramework::ViewportUi::DefaultViewportId, + &AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::CreateCluster, + AzToolsFramework::ViewportUi::Alignment::TopLeft); + } + } + break; + default: + AZ_Error("Joints", false, "Joints component mode cluster UI setup found unknown sub mode."); + break; + } + //if both are created - break; + if (group2Id != AzToolsFramework::ViewportUi::InvalidClusterId && group3Id != AzToolsFramework::ViewportUi::InvalidClusterId) + { + break; + } + } + const AzToolsFramework::ViewportUi::ClusterId group1ClusterId = GetClusterId(ClusterGroups::Group1); const AzToolsFramework::ViewportUi::ClusterId group2ClusterId = GetClusterId(ClusterGroups::Group2); - //hide cluster 2, if something is added to it. it will make is visible - AzToolsFramework::ViewportUi::ViewportUiRequestBus::Event( - AzToolsFramework::ViewportUi::DefaultViewportId, &AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::SetClusterVisible, - group2ClusterId, false); - const AzToolsFramework::ViewportUi::ClusterId group3ClusterId = GetClusterId(ClusterGroups::Group3); - // hide cluster 3, if something is added to it. it will make is visible - AzToolsFramework::ViewportUi::ViewportUiRequestBus::Event( - AzToolsFramework::ViewportUi::DefaultViewportId, &AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::SetClusterVisible, - group3ClusterId, false); //translation and rotation are enabled for all joints in group 1 m_subModes[JointsComponentModeCommon::SubComponentModes::ModeType::Translation] = @@ -408,10 +450,6 @@ namespace PhysX Internal::RegisterClusterButton(group3ClusterId, "joints/MaxForce", SubModeData::MaxForceToolTip); m_buttonData[JointsComponentModeCommon::SubComponentModes::ModeType::MaxForce] = ButtonData{ group3ClusterId, buttonId }; - - AzToolsFramework::ViewportUi::ViewportUiRequestBus::Event( - AzToolsFramework::ViewportUi::DefaultViewportId, - &AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::SetClusterVisible, group3ClusterId, true); } break; case JointsComponentModeCommon::SubComponentModes::ModeType::MaxTorque: @@ -424,10 +462,6 @@ namespace PhysX Internal::RegisterClusterButton(group3ClusterId, "joints/MaxTorque", SubModeData::MaxTorqueToolTip); m_buttonData[JointsComponentModeCommon::SubComponentModes::ModeType::MaxTorque] = ButtonData{ group3ClusterId, buttonId }; - - AzToolsFramework::ViewportUi::ViewportUiRequestBus::Event( - AzToolsFramework::ViewportUi::DefaultViewportId, - &AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::SetClusterVisible, group3ClusterId, true); } break; case JointsComponentModeCommon::SubComponentModes::ModeType::Damping: @@ -439,10 +473,6 @@ namespace PhysX const AzToolsFramework::ViewportUi::ButtonId buttonId = Internal::RegisterClusterButton(group2ClusterId, "joints/Damping", SubModeData::DampingToolTip); m_buttonData[JointsComponentModeCommon::SubComponentModes::ModeType::Damping] = ButtonData{ group2ClusterId, buttonId }; - - AzToolsFramework::ViewportUi::ViewportUiRequestBus::Event( - AzToolsFramework::ViewportUi::DefaultViewportId, - &AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::SetClusterVisible, group2ClusterId, true); } break; case JointsComponentModeCommon::SubComponentModes::ModeType::Stiffness: @@ -455,10 +485,6 @@ namespace PhysX Internal::RegisterClusterButton(group2ClusterId, "joints/Stiffness", SubModeData::StiffnessToolTip); m_buttonData[JointsComponentModeCommon::SubComponentModes::ModeType::Stiffness] = ButtonData{ group2ClusterId, buttonId }; - - AzToolsFramework::ViewportUi::ViewportUiRequestBus::Event( - AzToolsFramework::ViewportUi::DefaultViewportId, - &AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::SetClusterVisible, group2ClusterId, true); } break; case JointsComponentModeCommon::SubComponentModes::ModeType::TwistLimits: @@ -473,10 +499,6 @@ namespace PhysX Internal::RegisterClusterButton(group2ClusterId, "joints/TwistLimits", SubModeData::TwistLimitsToolTip); m_buttonData[JointsComponentModeCommon::SubComponentModes::ModeType::TwistLimits] = ButtonData{ group2ClusterId, buttonId }; - - AzToolsFramework::ViewportUi::ViewportUiRequestBus::Event( - AzToolsFramework::ViewportUi::DefaultViewportId, - &AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::SetClusterVisible, group2ClusterId, true); } break; case JointsComponentModeCommon::SubComponentModes::ModeType::SwingLimits: @@ -489,10 +511,6 @@ namespace PhysX Internal::RegisterClusterButton(group2ClusterId, "joints/SwingLimits", SubModeData::SwingLimitsToolTip); m_buttonData[JointsComponentModeCommon::SubComponentModes::ModeType::SwingLimits] = ButtonData{ group2ClusterId, buttonId }; - - AzToolsFramework::ViewportUi::ViewportUiRequestBus::Event( - AzToolsFramework::ViewportUi::DefaultViewportId, - &AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::SetClusterVisible, group2ClusterId, true); } break; case JointsComponentModeCommon::SubComponentModes::ModeType::SnapPosition: @@ -517,6 +535,9 @@ namespace PhysX ButtonData{ group1ClusterId, buttonId }; } break; + default: + AZ_Error("Joints", false, "Joints component mode cluster button setup found unknown sub mode."); + break; } } @@ -560,10 +581,13 @@ namespace PhysX for (int i = 0; i < static_cast(ClusterGroups::GroupCount); i++) { - AzToolsFramework::ViewportUi::ViewportUiRequestBus::Event( - AzToolsFramework::ViewportUi::DefaultViewportId, - &AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::RegisterClusterEventHandler, m_modeSelectionClusterIds[i], - m_modeSelectionHandlers[i]); + if (m_modeSelectionClusterIds[i] != AzToolsFramework::ViewportUi::InvalidClusterId) + { + AzToolsFramework::ViewportUi::ViewportUiRequestBus::Event( + AzToolsFramework::ViewportUi::DefaultViewportId, + &AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::RegisterClusterEventHandler, + m_modeSelectionClusterIds[i], m_modeSelectionHandlers[i]); + } } // set the translate as enabled by default. @@ -588,10 +612,14 @@ namespace PhysX { for (auto clusterid : m_modeSelectionClusterIds) { - AzToolsFramework::ViewportUi::ViewportUiRequestBus::Event( - AzToolsFramework::ViewportUi::DefaultViewportId, &AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::RemoveCluster, - clusterid); + if (clusterid != AzToolsFramework::ViewportUi::InvalidClusterId) + { + AzToolsFramework::ViewportUi::ViewportUiRequestBus::Event( + AzToolsFramework::ViewportUi::DefaultViewportId, + &AzToolsFramework::ViewportUi::ViewportUiRequestBus::Events::RemoveCluster, clusterid); + } } + m_modeSelectionClusterIds.assign(static_cast(ClusterGroups::GroupCount), AzToolsFramework::ViewportUi::InvalidClusterId); } AzToolsFramework::ViewportUi::ClusterId JointsComponentMode::GetClusterId(ClusterGroups group) diff --git a/Gems/PhysX/Code/Mocks/PhysX/MockPhysXHeightfieldProviderComponent.h b/Gems/PhysX/Code/Mocks/PhysX/MockPhysXHeightfieldProviderComponent.h index 7e500881c0..d462c30158 100644 --- a/Gems/PhysX/Code/Mocks/PhysX/MockPhysXHeightfieldProviderComponent.h +++ b/Gems/PhysX/Code/Mocks/PhysX/MockPhysXHeightfieldProviderComponent.h @@ -69,6 +69,10 @@ namespace UnitTest MOCK_CONST_METHOD1(UpdateHeights, AZStd::vector(const AZ::Aabb& dirtyRegion)); MOCK_CONST_METHOD1(UpdateHeightsAndMaterials, AZStd::vector(const AZ::Aabb& dirtyRegion)); MOCK_CONST_METHOD0(GetHeightfieldAabb, AZ::Aabb()); + MOCK_CONST_METHOD0(GetHeightfieldMinHeight, float()); + MOCK_CONST_METHOD0(GetHeightfieldMaxHeight, float()); + MOCK_CONST_METHOD0(GetHeightfieldGridColumns, int32_t()); + MOCK_CONST_METHOD0(GetHeightfieldGridRows, int32_t()); }; } // namespace UnitTest diff --git a/Gems/PhysX/Code/Source/Debug/PhysXDebug.cpp b/Gems/PhysX/Code/Source/Debug/PhysXDebug.cpp index bc9265a92a..fb8e61289d 100644 --- a/Gems/PhysX/Code/Source/Debug/PhysXDebug.cpp +++ b/Gems/PhysX/Code/Source/Debug/PhysXDebug.cpp @@ -13,7 +13,7 @@ #include #include #include -#include +#include namespace PhysX { @@ -108,8 +108,7 @@ namespace PhysX AzFramework::StringFunc::Append(filename, m_config.m_pvdConfigurationData.m_fileName.c_str()); AzFramework::StringFunc::Append(filename, ".pxd2"); - AZStd::string rootDirectory; - AZ::ComponentApplicationBus::BroadcastResult(rootDirectory, &AZ::ComponentApplicationRequests::GetAppRoot); + AZStd::string rootDirectory{ AZStd::string_view(AZ::Utils::GetEnginePath()) }; // Create the full filepath. AZStd::string safeFilePath; diff --git a/Gems/PhysX/Code/Source/EditorBallJointComponent.cpp b/Gems/PhysX/Code/Source/EditorBallJointComponent.cpp index fa71fa0061..d7065a869d 100644 --- a/Gems/PhysX/Code/Source/EditorBallJointComponent.cpp +++ b/Gems/PhysX/Code/Source/EditorBallJointComponent.cpp @@ -215,7 +215,7 @@ namespace PhysX { EditorJointComponent::DisplayEntityViewport(viewportInfo, debugDisplay); - if (!m_config.m_displayJointSetup && + if (!m_config.ShowSetupDisplay() && !m_config.m_inComponentMode) { return; diff --git a/Gems/PhysX/Code/Source/EditorHeightfieldColliderComponent.cpp b/Gems/PhysX/Code/Source/EditorHeightfieldColliderComponent.cpp index 0f09258524..fb0a38fa18 100644 --- a/Gems/PhysX/Code/Source/EditorHeightfieldColliderComponent.cpp +++ b/Gems/PhysX/Code/Source/EditorHeightfieldColliderComponent.cpp @@ -34,8 +34,8 @@ namespace PhysX "PhysX Heightfield Collider", "Creates geometry in the PhysX simulation based on an attached heightfield component") ->ClassElement(AZ::Edit::ClassElements::EditorData, "") ->Attribute(AZ::Edit::Attributes::Category, "PhysX") - ->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/PhysXCollider.svg") - ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/PhysXCollider.svg") + ->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/PhysXHeightfieldCollider.svg") + ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Editor/Icons/Components/Viewport/PhysXHeightfieldCollider.svg") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC_CE("Game")) ->Attribute( AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/physx/heightfield-collider/") diff --git a/Gems/PhysX/Code/Source/EditorHingeJointComponent.cpp b/Gems/PhysX/Code/Source/EditorHingeJointComponent.cpp index 1b575074e2..f009c990b4 100644 --- a/Gems/PhysX/Code/Source/EditorHingeJointComponent.cpp +++ b/Gems/PhysX/Code/Source/EditorHingeJointComponent.cpp @@ -211,7 +211,7 @@ namespace PhysX { EditorJointComponent::DisplayEntityViewport(viewportInfo, debugDisplay); - if (!m_config.m_displayJointSetup && + if (!m_config.ShowSetupDisplay() && !m_config.m_inComponentMode) { return; diff --git a/Gems/PhysX/Code/Source/Joint/PhysXJointUtils.cpp b/Gems/PhysX/Code/Source/Joint/PhysXJointUtils.cpp index 3558c9fb56..107bced7f2 100644 --- a/Gems/PhysX/Code/Source/Joint/PhysXJointUtils.cpp +++ b/Gems/PhysX/Code/Source/Joint/PhysXJointUtils.cpp @@ -224,8 +224,22 @@ namespace PhysX { physx::PxJointLimitCone limitCone(swingLimitY, swingLimitZ); joint->setSwingLimit(limitCone); - const float twistLower = AZ::DegToRad(AZStd::GetMin(configuration.m_twistLimitLower, configuration.m_twistLimitUpper)); - const float twistUpper = AZ::DegToRad(AZStd::GetMax(configuration.m_twistLimitLower, configuration.m_twistLimitUpper)); + float twistLower = AZ::DegToRad(AZStd::GetMin(configuration.m_twistLimitLower, configuration.m_twistLimitUpper)); + float twistUpper = AZ::DegToRad(AZStd::GetMax(configuration.m_twistLimitLower, configuration.m_twistLimitUpper)); + // make sure there is at least a small difference between the lower and upper limits to avoid problems in PhysX + const float minTwistLimitRangeRadians = AZ::DegToRad(JointConstants::MinTwistLimitRangeDegrees); + if (const float twistLimitRange = twistUpper - twistLower; + twistLimitRange < minTwistLimitRangeRadians) + { + if (twistUpper > 0.0f) + { + twistLower -= (minTwistLimitRangeRadians - twistLimitRange); + } + else + { + twistUpper += (minTwistLimitRangeRadians - twistLimitRange); + } + } physx::PxJointAngularLimitPair twistLimitPair(twistLower, twistUpper); joint->setTwistLimit(twistLimitPair); diff --git a/Gems/PhysX/Code/Source/Joint/PhysXJointUtils.h b/Gems/PhysX/Code/Source/Joint/PhysXJointUtils.h index 7a30473dac..a99eb7aacb 100644 --- a/Gems/PhysX/Code/Source/Joint/PhysXJointUtils.h +++ b/Gems/PhysX/Code/Source/Joint/PhysXJointUtils.h @@ -18,9 +18,11 @@ namespace PhysX { namespace JointConstants { - // Setting swing limits to very small values can cause extreme stability problems, so clamp above a small + // Setting joint limits to very small values can cause extreme stability problems, so clamp above a small // threshold. static const float MinSwingLimitDegrees = 1.0f; + // Minimum range between lower and upper twist limits. + static const float MinTwistLimitRangeDegrees = 1.0f; } // namespace JointConstants namespace Utils diff --git a/Gems/PhysX/Code/Source/PhysXCharacters/API/CharacterUtils.cpp b/Gems/PhysX/Code/Source/PhysXCharacters/API/CharacterUtils.cpp index 4ed2825cc2..46f4c04880 100644 --- a/Gems/PhysX/Code/Source/PhysXCharacters/API/CharacterUtils.cpp +++ b/Gems/PhysX/Code/Source/PhysXCharacters/API/CharacterUtils.cpp @@ -344,6 +344,55 @@ namespace PhysX bool isAcceleration = true; return physx::PxD6JointDrive(stiffness, damping, forceLimit, isAcceleration); } + + AZStd::vector ComputeHierarchyDepths(const AZStd::vector& parentIndices) + { + const size_t numNodes = parentIndices.size(); + AZStd::vector nodeDepths(numNodes); + for (size_t nodeIndex = 0; nodeIndex < numNodes; nodeIndex++) + { + nodeDepths[nodeIndex] = { -1, nodeIndex }; + } + + for (size_t nodeIndex = 0; nodeIndex < numNodes; nodeIndex++) + { + if (nodeDepths[nodeIndex].m_depth != -1) + { + continue; + } + int depth = -1; // initial depth value for this node + int ancestorDepth = 0; // the depth of the first ancestor we find when iteratively visiting parents + bool ancestorFound = false; // whether we have found either an ancestor which already has a depth value, or the root + size_t currentIndex = nodeIndex; + while (!ancestorFound) + { + depth++; + if (depth > numNodes) + { + AZ_Error("PhysX Ragdoll", false, "Loop detected in hierarchy depth computation."); + return nodeDepths; + } + const size_t parentIndex = parentIndices[currentIndex]; + + if (parentIndex >= numNodes || nodeDepths[currentIndex].m_depth != -1) + { + ancestorFound = true; + ancestorDepth = (nodeDepths[currentIndex].m_depth != -1) ? nodeDepths[currentIndex].m_depth : 0; + } + + currentIndex = parentIndex; + } + + currentIndex = nodeIndex; + for (int i = depth; i >= 0; i--) + { + nodeDepths[currentIndex] = { ancestorDepth + i, currentIndex }; + currentIndex = parentIndices[currentIndex]; + } + } + + return nodeDepths; + } } // namespace Characters } // namespace Utils } // namespace PhysX diff --git a/Gems/PhysX/Code/Source/PhysXCharacters/API/CharacterUtils.h b/Gems/PhysX/Code/Source/PhysXCharacters/API/CharacterUtils.h index 0f51a5d9b9..245dc01abd 100644 --- a/Gems/PhysX/Code/Source/PhysXCharacters/API/CharacterUtils.h +++ b/Gems/PhysX/Code/Source/PhysXCharacters/API/CharacterUtils.h @@ -49,6 +49,18 @@ namespace PhysX //! @param forceLimit The upper limit on the force the joint can apply to reach its target. //! @return The created joint drive. physx::PxD6JointDrive CreateD6JointDrive(float strength, float dampingRatio, float forceLimit); + + //! Contains information about a node in a hierarchy and how deep it is in the hierarchy relative to the root. + struct DepthData + { + int m_depth = -1; //!< Depth of the joint in the hierarchy. The root has depth 0, its children depth 1, and so on. + size_t m_index = 0; // ComputeHierarchyDepths(const AZStd::vector& parentIndices); } // namespace Characters } // namespace Utils } // namespace PhysX diff --git a/Gems/PhysX/Code/Source/PhysXCharacters/Components/RagdollComponent.cpp b/Gems/PhysX/Code/Source/PhysXCharacters/Components/RagdollComponent.cpp index 57972fea3e..7615a175d1 100644 --- a/Gems/PhysX/Code/Source/PhysXCharacters/Components/RagdollComponent.cpp +++ b/Gems/PhysX/Code/Source/PhysXCharacters/Components/RagdollComponent.cpp @@ -7,20 +7,20 @@ */ #include -#include #include -#include #include +#include +#include #include +#include #include #include -#include +#include #include namespace PhysX { - bool RagdollComponent::VersionConverter(AZ::SerializeContext& context, - AZ::SerializeContext::DataElementNode& classElement) + bool RagdollComponent::VersionConverter(AZ::SerializeContext& context, AZ::SerializeContext::DataElementNode& classElement) { // The element "PhysXRagdoll" was changed from a shared pointer to a unique pointer, but a version converter was // not added at the time. This means there may be serialized data with either the shared or unique pointer, but @@ -76,13 +76,13 @@ namespace PhysX ->Field("EnableJointProjection", &RagdollComponent::m_enableJointProjection) ->Field("ProjectionLinearTol", &RagdollComponent::m_jointProjectionLinearTolerance) ->Field("ProjectionAngularTol", &RagdollComponent::m_jointProjectionAngularToleranceDegrees) - ; + ->Field("EnableMassRatioClamping", &RagdollComponent::m_enableMassRatioClamping) + ->Field("MaxMassRatio", &RagdollComponent::m_maxMassRatio); AZ::EditContext* editContext = serializeContext->GetEditContext(); if (editContext) { - editContext->Class( - "PhysX Ragdoll", "Creates a PhysX ragdoll simulation for an animation actor.") + editContext->Class("PhysX Ragdoll", "Creates a PhysX ragdoll simulation for an animation actor.") ->ClassElement(AZ::Edit::ClassElements::EditorData, "") ->Attribute(AZ::Edit::Attributes::Category, "PhysX") ->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/PhysXRagdoll.svg") @@ -90,34 +90,49 @@ namespace PhysX ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/physx/ragdoll/") ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->DataElement(AZ::Edit::UIHandlers::Default, &RagdollComponent::m_positionIterations, "Position Iteration Count", + ->DataElement( + AZ::Edit::UIHandlers::Default, &RagdollComponent::m_positionIterations, "Position Iteration Count", "The frequency at which ragdoll collider positions are resolved. Higher values can increase fidelity but decrease " "performance. Very high values might introduce instability.") ->Attribute(AZ::Edit::Attributes::Min, 1) ->Attribute(AZ::Edit::Attributes::Max, 255) - ->DataElement(AZ::Edit::UIHandlers::Default, &RagdollComponent::m_velocityIterations, "Velocity Iteration Count", + ->DataElement( + AZ::Edit::UIHandlers::Default, &RagdollComponent::m_velocityIterations, "Velocity Iteration Count", "The frequency at which ragdoll collider velocities are resolved. Higher values can increase fidelity but decrease " "performance. Very high values might introduce instability.") ->Attribute(AZ::Edit::Attributes::Min, 1) ->Attribute(AZ::Edit::Attributes::Max, 255) - ->DataElement(AZ::Edit::UIHandlers::Default, &RagdollComponent::m_enableJointProjection, - "Enable Joint Projection", "When active, preserves joint constraints in volatile simulations. " + ->DataElement( + AZ::Edit::UIHandlers::Default, &RagdollComponent::m_enableJointProjection, "Enable Joint Projection", + "When active, preserves joint constraints in volatile simulations. " "Might not be physically correct in all simulations.") ->Attribute(AZ::Edit::Attributes::ChangeNotify, AZ::Edit::PropertyRefreshLevels::EntireTree) - ->DataElement(AZ::Edit::UIHandlers::Default, &RagdollComponent::m_jointProjectionLinearTolerance, + ->DataElement( + AZ::Edit::UIHandlers::Default, &RagdollComponent::m_jointProjectionLinearTolerance, "Joint Projection Linear Tolerance", "Maximum linear joint error. Projection is applied to linear joint errors above this value.") ->Attribute(AZ::Edit::Attributes::Min, 0.0f) ->Attribute(AZ::Edit::Attributes::Step, 1e-3f) ->Attribute(AZ::Edit::Attributes::Visibility, &RagdollComponent::IsJointProjectionVisible) - ->DataElement(AZ::Edit::UIHandlers::Default, &RagdollComponent::m_jointProjectionAngularToleranceDegrees, + ->DataElement( + AZ::Edit::UIHandlers::Default, &RagdollComponent::m_jointProjectionAngularToleranceDegrees, "Joint Projection Angular Tolerance", "Maximum angular joint error. Projection is applied to angular joint errors above this value.") ->Attribute(AZ::Edit::Attributes::Min, 0.0f) ->Attribute(AZ::Edit::Attributes::Step, 0.1f) ->Attribute(AZ::Edit::Attributes::Suffix, " degrees") ->Attribute(AZ::Edit::Attributes::Visibility, &RagdollComponent::IsJointProjectionVisible) - ; + ->DataElement( + AZ::Edit::UIHandlers::Default, &RagdollComponent::m_enableMassRatioClamping, "Enable Mass Ratio Clamping", + "When active, ragdoll node mass values may be overridden to avoid unstable mass ratios.") + ->Attribute(AZ::Edit::Attributes::ChangeNotify, AZ::Edit::PropertyRefreshLevels::EntireTree) + ->DataElement( + AZ::Edit::UIHandlers::Default, &RagdollComponent::m_maxMassRatio, "Maximum Mass Ratio", + "The mass of the child body of a joint may be clamped to avoid its ratio with the parent " + "body mass exceeding this threshold.") + ->Attribute(AZ::Edit::Attributes::Min, 1.0f) + ->Attribute(AZ::Edit::Attributes::Step, 0.1f) + ->Attribute(AZ::Edit::Attributes::Visibility, &RagdollComponent::IsMaxMassRatioVisible); } } @@ -126,11 +141,16 @@ namespace PhysX } } - bool RagdollComponent::IsJointProjectionVisible() + bool RagdollComponent::IsJointProjectionVisible() const { return m_enableJointProjection; } + bool RagdollComponent::IsMaxMassRatioVisible() const + { + return m_enableMassRatioClamping; + } + // AZ::Component void RagdollComponent::Init() { @@ -272,7 +292,6 @@ namespace PhysX return ragdoll->IsSimulated(); } return false; - } AZ::Aabb RagdollComponent::GetAabb() const @@ -318,20 +337,19 @@ namespace PhysX if (numNodes == 0) { - AZ_Error("PhysX Ragdoll Component", false, - "Ragdoll configuration has 0 nodes, ragdoll will not be created for entity \"%s\".", + AZ_Error( + "PhysX Ragdoll Component", false, "Ragdoll configuration has 0 nodes, ragdoll will not be created for entity \"%s\".", GetEntity()->GetName().c_str()); return; } - ragdollConfiguration.m_parentIndices.resize(numNodes); for (size_t nodeIndex = 0; nodeIndex < numNodes; nodeIndex++) { AZStd::string parentName; AZStd::string nodeName = ragdollConfiguration.m_nodes[nodeIndex].m_debugName; - AzFramework::CharacterPhysicsDataRequestBus::EventResult(parentName, GetEntityId(), - &AzFramework::CharacterPhysicsDataRequests::GetParentNodeName, nodeName); + AzFramework::CharacterPhysicsDataRequestBus::EventResult( + parentName, GetEntityId(), &AzFramework::CharacterPhysicsDataRequests::GetParentNodeName, nodeName); AZ::Outcome parentIndex = Utils::Characters::GetNodeIndex(ragdollConfiguration, parentName); ragdollConfiguration.m_parentIndices[nodeIndex] = parentIndex ? parentIndex.GetValue() : SIZE_MAX; @@ -339,8 +357,8 @@ namespace PhysX } Physics::RagdollState bindPose; - AzFramework::CharacterPhysicsDataRequestBus::EventResult(bindPose, GetEntityId(), - &AzFramework::CharacterPhysicsDataRequests::GetBindPose, ragdollConfiguration); + AzFramework::CharacterPhysicsDataRequestBus::EventResult( + bindPose, GetEntityId(), &AzFramework::CharacterPhysicsDataRequests::GetBindPose, ragdollConfiguration); AZ::Transform entityTransform = AZ::Transform::CreateIdentity(); AZ::TransformBus::EventResult(entityTransform, GetEntityId(), &AZ::TransformBus::Events::GetWorldTM); @@ -354,13 +372,12 @@ namespace PhysX m_ragdollHandle = sceneInterface->AddSimulatedBody(m_attachedSceneHandle, &ragdollConfiguration); } auto* ragdoll = GetPhysXRagdoll(); - if (ragdoll == nullptr || - m_ragdollHandle == AzPhysics::InvalidSimulatedBodyHandle) + if (ragdoll == nullptr || m_ragdollHandle == AzPhysics::InvalidSimulatedBodyHandle) { AZ_Error("PhysX Ragdoll Component", false, "Failed to create ragdoll."); return; } - + for (size_t nodeIndex = 0; nodeIndex < numNodes; nodeIndex++) { if (physx::PxRigidDynamic* pxRigidBody = ragdoll->GetPxRigidDynamic(nodeIndex)) @@ -389,17 +406,63 @@ namespace PhysX } } + // If mass ratio clamping is enabled, iterate out from the root and clamp mass values + if (m_enableMassRatioClamping) + { + const float maxMassRatio = AZStd::GetMax(1.0f + AZ::Constants::FloatEpsilon, m_maxMassRatio); + + // figure out the depth of each node in the tree, so that nodes can be visited from the root outwards + AZStd::vector nodeDepths = + Utils::Characters::ComputeHierarchyDepths(ragdollConfiguration.m_parentIndices); + + AZStd::sort( + nodeDepths.begin(), nodeDepths.end(), + [](const Utils::Characters::DepthData& d1, const Utils::Characters::DepthData& d2) + { + return d1.m_depth < d2.m_depth; + }); + + bool massesClamped = false; + for (const auto& nodeDepth : nodeDepths) + { + const size_t nodeIndex = nodeDepth.m_index; + const size_t parentIndex = ragdollConfiguration.m_parentIndices[nodeIndex]; + if (parentIndex < numNodes) + { + AzPhysics::RigidBody& nodeRigidBody = ragdoll->GetNode(nodeIndex)->GetRigidBody(); + const float originalMass = nodeRigidBody.GetMass(); + const float parentMass = ragdoll->GetNode(parentIndex)->GetRigidBody().GetMass(); + const float minMass = parentMass / maxMassRatio; + const float maxMass = parentMass; + if (originalMass < minMass || originalMass > maxMass) + { + const float clampedMass = AZStd::clamp(originalMass, minMass, maxMass); + nodeRigidBody.SetMass(clampedMass); + massesClamped = true; + if (!AZ::IsClose(originalMass, 0.0f)) + { + // scale the inertia proportionally to how the mass was modified + auto pxRigidBody = static_cast(nodeRigidBody.GetNativePointer()); + pxRigidBody->setMassSpaceInertiaTensor(clampedMass / originalMass * pxRigidBody->getMassSpaceInertiaTensor()); + } + } + } + } + + AZ_WarningOnce("PhysX Ragdoll", !massesClamped, + "Mass values for ragdoll on entity \"%s\" were modified based on max mass ratio setting to avoid instability.", + GetEntity()->GetName().c_str()); + } + AzFramework::RagdollPhysicsRequestBus::Handler::BusConnect(GetEntityId()); AzPhysics::SimulatedBodyComponentRequestsBus::Handler::BusConnect(GetEntityId()); - AzFramework::RagdollPhysicsNotificationBus::Event(GetEntityId(), - &AzFramework::RagdollPhysicsNotifications::OnRagdollActivated); + AzFramework::RagdollPhysicsNotificationBus::Event(GetEntityId(), &AzFramework::RagdollPhysicsNotifications::OnRagdollActivated); } void RagdollComponent::DestroyRagdoll() { - if (m_ragdollHandle != AzPhysics::InvalidSimulatedBodyHandle && - m_attachedSceneHandle != AzPhysics::InvalidSceneHandle) + if (m_ragdollHandle != AzPhysics::InvalidSimulatedBodyHandle && m_attachedSceneHandle != AzPhysics::InvalidSceneHandle) { AzFramework::RagdollPhysicsRequestBus::Handler::BusDisconnect(); AzFramework::RagdollPhysicsNotificationBus::Event( @@ -421,8 +484,7 @@ namespace PhysX const Ragdoll* RagdollComponent::GetPhysXRagdollConst() const { - if (m_ragdollHandle == AzPhysics::InvalidSimulatedBodyHandle || - m_attachedSceneHandle == AzPhysics::InvalidSceneHandle) + if (m_ragdollHandle == AzPhysics::InvalidSimulatedBodyHandle || m_attachedSceneHandle == AzPhysics::InvalidSceneHandle) { return nullptr; } diff --git a/Gems/PhysX/Code/Source/PhysXCharacters/Components/RagdollComponent.h b/Gems/PhysX/Code/Source/PhysXCharacters/Components/RagdollComponent.h index 63dd1354dd..3ef59bf623 100644 --- a/Gems/PhysX/Code/Source/PhysXCharacters/Components/RagdollComponent.h +++ b/Gems/PhysX/Code/Source/PhysXCharacters/Components/RagdollComponent.h @@ -103,7 +103,8 @@ namespace PhysX Ragdoll* GetPhysXRagdoll(); const Ragdoll* GetPhysXRagdollConst() const; - bool IsJointProjectionVisible(); + bool IsJointProjectionVisible() const; + bool IsMaxMassRatioVisible() const; AzPhysics::SimulatedBodyHandle m_ragdollHandle = AzPhysics::InvalidSimulatedBodyHandle; AzPhysics::SceneHandle m_attachedSceneHandle = AzPhysics::InvalidSceneHandle; @@ -119,5 +120,9 @@ namespace PhysX float m_jointProjectionLinearTolerance = 1e-3f; /// Angular joint error (in degrees) above which projection will be applied. float m_jointProjectionAngularToleranceDegrees = 1.0f; + /// Allows ragdoll node mass values to be overridden to avoid unstable mass ratios. + bool m_enableMassRatioClamping = false; + /// If mass ratio clamping is enabled, masses will be clamped to within this ratio. + float m_maxMassRatio = 2.0f; }; } // namespace PhysX diff --git a/Gems/PhysX/Code/Tests/RagdollTests.cpp b/Gems/PhysX/Code/Tests/RagdollTests.cpp index 30e9400790..ff4637fd6e 100644 --- a/Gems/PhysX/Code/Tests/RagdollTests.cpp +++ b/Gems/PhysX/Code/Tests/RagdollTests.cpp @@ -367,4 +367,19 @@ namespace PhysX float minZ = ragdoll->GetAabb().GetMin().GetZ(); EXPECT_NEAR(minZ, 0.0f, 0.05f); } + + TEST(ComputeHierarchyDepthsTest, DepthValuesCorrect) + { + AZStd::vector parentIndices = + { 3, 5, AZStd::numeric_limits::max(), 1, 2, 9, 7, 4, 0, 6, 11, 12, 5, 14, 15, 16, 5, 18, 19, 4, 21, 22, 4 }; + + const AZStd::vector nodeDepths = Utils::Characters::ComputeHierarchyDepths(parentIndices); + + std::vector expectedDepths = { 8, 6, 0, 7, 1, 5, 3, 2, 9, 4, 8, 7, 6, 9, 8, 7, 6, 4, 3, 2, 4, 3, 2 }; + + for (size_t i = 0; i < parentIndices.size(); i++) + { + EXPECT_EQ(nodeDepths[i].m_depth, expectedDepths[i]); + } + } } // namespace PhysX diff --git a/Gems/PhysXDebug/Code/Source/SystemComponent.h b/Gems/PhysXDebug/Code/Source/SystemComponent.h index 83756f20f9..34c8142bac 100644 --- a/Gems/PhysXDebug/Code/Source/SystemComponent.h +++ b/Gems/PhysXDebug/Code/Source/SystemComponent.h @@ -16,7 +16,6 @@ #include #include -#include #include #include diff --git a/Gems/Profiler/Code/Source/CpuProfilerImpl.cpp b/Gems/Profiler/Code/Source/CpuProfilerImpl.cpp index f0d39d48e4..23a3bbbea4 100644 --- a/Gems/Profiler/Code/Source/CpuProfilerImpl.cpp +++ b/Gems/Profiler/Code/Source/CpuProfilerImpl.cpp @@ -8,7 +8,6 @@ #include -#include #include #include #include diff --git a/Gems/PythonAssetBuilder/Code/Source/PythonAssetBuilderModule.cpp b/Gems/PythonAssetBuilder/Code/Source/PythonAssetBuilderModule.cpp index d7143a159a..1d330c90df 100644 --- a/Gems/PythonAssetBuilder/Code/Source/PythonAssetBuilderModule.cpp +++ b/Gems/PythonAssetBuilder/Code/Source/PythonAssetBuilderModule.cpp @@ -9,12 +9,15 @@ #include #include +#include + #include namespace PythonAssetBuilder { class PythonAssetBuilderModule : public AZ::Module + , public AzToolsFramework::EmbeddedPython::PythonLoader { public: AZ_RTTI(PythonAssetBuilderModule, "{35C9457E-54C2-474C-AEBE-5A70CC1D435D}", AZ::Module); diff --git a/Gems/QtForPython/Code/CMakeLists.txt b/Gems/QtForPython/Code/CMakeLists.txt index 48ce5c02d3..da763978a6 100644 --- a/Gems/QtForPython/Code/CMakeLists.txt +++ b/Gems/QtForPython/Code/CMakeLists.txt @@ -21,7 +21,8 @@ ly_add_target( NAME QtForPython.Editor.Static STATIC NAMESPACE Gem FILES_CMAKE - qtforpython_editor_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake + qtforpython_editor_files.cmake + ${CMAKE_CURRENT_SOURCE_DIR}/Source/Platform/${PAL_PLATFORM_NAME}/qtforpython_editor_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake PLATFORM_INCLUDE_FILES ${common_source_dir}/${PAL_TRAIT_COMPILER_ID}/qtforpython_${PAL_TRAIT_COMPILER_ID_LOWERCASE}.cmake INCLUDE_DIRECTORIES @@ -45,6 +46,9 @@ ly_add_target( NAMESPACE Gem FILES_CMAKE qtforpython_shared_files.cmake + INCLUDE_DIRECTORIES + PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/Source/Platform/${PAL_PLATFORM_NAME} BUILD_DEPENDENCIES PRIVATE Gem::QtForPython.Editor.Static diff --git a/Gems/QtForPython/Code/Source/Platform/Linux/InitializeEmbeddedPyside2.h b/Gems/QtForPython/Code/Source/Platform/Linux/InitializeEmbeddedPyside2.h new file mode 100644 index 0000000000..f27b54810f --- /dev/null +++ b/Gems/QtForPython/Code/Source/Platform/Linux/InitializeEmbeddedPyside2.h @@ -0,0 +1,60 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ +#pragma once + +#include +#include + +namespace QtForPython +{ + const char* s_libPythonLibraryFile = "libpython3.7m.so.1.0"; + const char* s_libPyside2LibraryFile = "libpyside2.abi3.so.5.14"; + const char* s_libShibokenLibraryFile = "libshiboken2.abi3.so.5.14"; + + class InitializeEmbeddedPyside2 + { + public: + InitializeEmbeddedPyside2() + { + m_libPythonLibraryFile = InitializeEmbeddedPyside2::LoadModule(s_libPythonLibraryFile); + m_libPyside2LibraryFile = InitializeEmbeddedPyside2::LoadModule(s_libPyside2LibraryFile); + m_libShibokenLibraryFile = InitializeEmbeddedPyside2::LoadModule(s_libShibokenLibraryFile); + } + virtual ~InitializeEmbeddedPyside2() + { + InitializeEmbeddedPyside2::UnloadModule(m_libShibokenLibraryFile); + InitializeEmbeddedPyside2::UnloadModule(m_libPyside2LibraryFile); + InitializeEmbeddedPyside2::UnloadModule(m_libPythonLibraryFile); + } + + private: + static void* LoadModule(const char* moduleToLoad) + { + void* moduleHandle = dlopen(moduleToLoad, RTLD_NOW | RTLD_GLOBAL); + if (!moduleHandle) + { + const char* loadError = dlerror(); + AZ_Error("QtForPython", false, "Unable to load python library %s for Pyside2: %s", moduleToLoad, + loadError ? loadError : "Unknown Error"); + } + return moduleHandle; + } + + static void UnloadModule(void* moduleHandle) + { + if (moduleHandle) + { + dlclose(moduleHandle); + } + } + + void* m_libPythonLibraryFile; + void* m_libPyside2LibraryFile; + void* m_libShibokenLibraryFile; + }; +} // namespace QtForPython diff --git a/Gems/QtForPython/Code/Source/Platform/Linux/PAL_linux.cmake b/Gems/QtForPython/Code/Source/Platform/Linux/PAL_linux.cmake index 236043e893..789d2afae2 100644 --- a/Gems/QtForPython/Code/Source/Platform/Linux/PAL_linux.cmake +++ b/Gems/QtForPython/Code/Source/Platform/Linux/PAL_linux.cmake @@ -6,4 +6,4 @@ # # -set(PAL_TRAIT_BUILD_QTFORPYTHON_SUPPORTED FALSE) +set(PAL_TRAIT_BUILD_QTFORPYTHON_SUPPORTED TRUE) diff --git a/Gems/QtForPython/Code/Source/Platform/Linux/qtforpython_editor_linux_files.cmake b/Gems/QtForPython/Code/Source/Platform/Linux/qtforpython_editor_linux_files.cmake new file mode 100644 index 0000000000..54c588a247 --- /dev/null +++ b/Gems/QtForPython/Code/Source/Platform/Linux/qtforpython_editor_linux_files.cmake @@ -0,0 +1,11 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +set(FILES + InitializeEmbeddedPyside2.h +) diff --git a/Gems/QtForPython/Code/Source/Platform/Mac/InitializeEmbeddedPyside2.h b/Gems/QtForPython/Code/Source/Platform/Mac/InitializeEmbeddedPyside2.h new file mode 100644 index 0000000000..819764620b --- /dev/null +++ b/Gems/QtForPython/Code/Source/Platform/Mac/InitializeEmbeddedPyside2.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ +#pragma once + +namespace QtForPython +{ + class InitializeEmbeddedPyside2 + { + public: + InitializeEmbeddedPyside2() = default; + virtual ~InitializeEmbeddedPyside2() = default; + }; +} // namespace QtForPython diff --git a/Gems/QtForPython/Code/Source/Platform/Mac/qtforpython_editor_macos_files.cmake b/Gems/QtForPython/Code/Source/Platform/Mac/qtforpython_editor_macos_files.cmake new file mode 100644 index 0000000000..54c588a247 --- /dev/null +++ b/Gems/QtForPython/Code/Source/Platform/Mac/qtforpython_editor_macos_files.cmake @@ -0,0 +1,11 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +set(FILES + InitializeEmbeddedPyside2.h +) diff --git a/Gems/QtForPython/Code/Source/Platform/Windows/InitializeEmbeddedPyside2.h b/Gems/QtForPython/Code/Source/Platform/Windows/InitializeEmbeddedPyside2.h new file mode 100644 index 0000000000..819764620b --- /dev/null +++ b/Gems/QtForPython/Code/Source/Platform/Windows/InitializeEmbeddedPyside2.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ +#pragma once + +namespace QtForPython +{ + class InitializeEmbeddedPyside2 + { + public: + InitializeEmbeddedPyside2() = default; + virtual ~InitializeEmbeddedPyside2() = default; + }; +} // namespace QtForPython diff --git a/Gems/QtForPython/Code/Source/Platform/Windows/qtforpython_editor_windows_files.cmake b/Gems/QtForPython/Code/Source/Platform/Windows/qtforpython_editor_windows_files.cmake new file mode 100644 index 0000000000..54c588a247 --- /dev/null +++ b/Gems/QtForPython/Code/Source/Platform/Windows/qtforpython_editor_windows_files.cmake @@ -0,0 +1,11 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +set(FILES + InitializeEmbeddedPyside2.h +) diff --git a/Gems/QtForPython/Code/Source/QtForPythonModule.cpp b/Gems/QtForPython/Code/Source/QtForPythonModule.cpp index 1ed79310b4..ad39d0b82c 100644 --- a/Gems/QtForPython/Code/Source/QtForPythonModule.cpp +++ b/Gems/QtForPython/Code/Source/QtForPythonModule.cpp @@ -8,13 +8,17 @@ #include #include +#include #include +#include "InitializeEmbeddedPyside2.h" + namespace QtForPython { class QtForPythonModule : public AZ::Module + , private InitializeEmbeddedPyside2 { public: AZ_RTTI(QtForPythonModule, "{81545CD5-79FA-47CE-96F2-1A9C5D59B4B9}", AZ::Module); @@ -22,11 +26,13 @@ namespace QtForPython QtForPythonModule() : AZ::Module() + , InitializeEmbeddedPyside2() { m_descriptors.insert(m_descriptors.end(), { QtForPythonSystemComponent::CreateDescriptor(), }); } + ~QtForPythonModule() override = default; /** * Add required SystemComponents to the SystemEntity. diff --git a/Gems/QtForPython/Code/Source/QtForPythonSystemComponent.cpp b/Gems/QtForPython/Code/Source/QtForPythonSystemComponent.cpp index 83a158dd18..240beff78e 100644 --- a/Gems/QtForPython/Code/Source/QtForPythonSystemComponent.cpp +++ b/Gems/QtForPython/Code/Source/QtForPythonSystemComponent.cpp @@ -203,10 +203,6 @@ namespace QtForPython { QtBootstrapParameters params; -#if !defined(Q_OS_WIN) -#error Unsupported OS platform for this QtForPython gem -#endif - params.m_mainWindowId = 0; using namespace AzToolsFramework; QWidget* activeWindow = nullptr; diff --git a/Gems/QtForPython/Code/qtforpython_editor_macos_files.cmake b/Gems/QtForPython/Code/Source/qtforpython_editor_files.cmake similarity index 100% rename from Gems/QtForPython/Code/qtforpython_editor_macos_files.cmake rename to Gems/QtForPython/Code/Source/qtforpython_editor_files.cmake diff --git a/Gems/QtForPython/Code/qtforpython_editor_windows_files.cmake b/Gems/QtForPython/Code/qtforpython_editor_files.cmake similarity index 100% rename from Gems/QtForPython/Code/qtforpython_editor_windows_files.cmake rename to Gems/QtForPython/Code/qtforpython_editor_files.cmake diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/OnCollisionBeginevent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/OnCollisionBeginevent.names new file mode 100644 index 0000000000..98a2d3f85b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/OnCollisionBeginevent.names @@ -0,0 +1,62 @@ +{ + "entries": [ + { + "key": "On Collision Begin event", + "context": "AZEventHandler", + "variant": "", + "details": { + "name": "On Collision Begin event" + }, + "slots": [ + { + "key": "Simulated Body Handle", + "details": { + "name": "Simulated Body Handle" + } + }, + { + "key": "Collision Event", + "details": { + "name": "Collision Event" + } + }, + { + "key": "On Collision Begin event", + "details": { + "name": "On Collision Begin event" + } + }, + { + "key": "Connect", + "details": { + "name": "Connect" + } + }, + { + "key": "Disconnect", + "details": { + "name": "Disconnect" + } + }, + { + "key": "On Connected", + "details": { + "name": "On Connected" + } + }, + { + "key": "On Disconnected", + "details": { + "name": "On Disconnected" + } + }, + { + "key": "OnEvent", + "details": { + "name": "OnEvent" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/OnCollisionEndevent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/OnCollisionEndevent.names new file mode 100644 index 0000000000..4844732dd4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/OnCollisionEndevent.names @@ -0,0 +1,62 @@ +{ + "entries": [ + { + "key": "On Collision End event", + "context": "AZEventHandler", + "variant": "", + "details": { + "name": "On Collision End event" + }, + "slots": [ + { + "key": "Simulated Body Handle", + "details": { + "name": "Simulated Body Handle" + } + }, + { + "key": "Collision Event", + "details": { + "name": "Collision Event" + } + }, + { + "key": "On Collision End event", + "details": { + "name": "On Collision End event" + } + }, + { + "key": "Connect", + "details": { + "name": "Connect" + } + }, + { + "key": "Disconnect", + "details": { + "name": "Disconnect" + } + }, + { + "key": "On Connected", + "details": { + "name": "On Connected" + } + }, + { + "key": "On Disconnected", + "details": { + "name": "On Disconnected" + } + }, + { + "key": "OnEvent", + "details": { + "name": "OnEvent" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/OnCollisionPersistevent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/OnCollisionPersistevent.names new file mode 100644 index 0000000000..7ee4cd8f5c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/OnCollisionPersistevent.names @@ -0,0 +1,62 @@ +{ + "entries": [ + { + "key": "On Collision Persist event", + "context": "AZEventHandler", + "variant": "", + "details": { + "name": "On Collision Persist event" + }, + "slots": [ + { + "key": "Simulated Body Handle", + "details": { + "name": "Simulated Body Handle" + } + }, + { + "key": "Collision Event", + "details": { + "name": "Collision Event" + } + }, + { + "key": "On Collision Persist event", + "details": { + "name": "On Collision Persist event" + } + }, + { + "key": "Connect", + "details": { + "name": "Connect" + } + }, + { + "key": "Disconnect", + "details": { + "name": "Disconnect" + } + }, + { + "key": "On Connected", + "details": { + "name": "On Connected" + } + }, + { + "key": "On Disconnected", + "details": { + "name": "On Disconnected" + } + }, + { + "key": "OnEvent", + "details": { + "name": "OnEvent" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/OnGravityChangedevent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/OnGravityChangedevent.names new file mode 100644 index 0000000000..7841a0bc78 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/OnGravityChangedevent.names @@ -0,0 +1,62 @@ +{ + "entries": [ + { + "key": "On Gravity Changed event", + "context": "AZEventHandler", + "variant": "", + "details": { + "name": "On Gravity Changed event" + }, + "slots": [ + { + "key": "Scene Handle", + "details": { + "name": "Scene Handle" + } + }, + { + "key": "Gravity Vector", + "details": { + "name": "Gravity Vector" + } + }, + { + "key": "On Gravity Changed event", + "details": { + "name": "On Gravity Changed event" + } + }, + { + "key": "Connect", + "details": { + "name": "Connect" + } + }, + { + "key": "Disconnect", + "details": { + "name": "Disconnect" + } + }, + { + "key": "On Connected", + "details": { + "name": "On Connected" + } + }, + { + "key": "On Disconnected", + "details": { + "name": "On Disconnected" + } + }, + { + "key": "OnEvent", + "details": { + "name": "OnEvent" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/OnTriggerEnterevent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/OnTriggerEnterevent.names new file mode 100644 index 0000000000..b1adfeb30b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/OnTriggerEnterevent.names @@ -0,0 +1,62 @@ +{ + "entries": [ + { + "key": "On Trigger Enter event", + "context": "AZEventHandler", + "variant": "", + "details": { + "name": "On Trigger Enter event" + }, + "slots": [ + { + "key": "Simulated Body Handle", + "details": { + "name": "Simulated Body Handle" + } + }, + { + "key": "Trigger Event", + "details": { + "name": "Trigger Event" + } + }, + { + "key": "On Trigger Enter event", + "details": { + "name": "On Trigger Enter event" + } + }, + { + "key": "Connect", + "details": { + "name": "Connect" + } + }, + { + "key": "Disconnect", + "details": { + "name": "Disconnect" + } + }, + { + "key": "On Connected", + "details": { + "name": "On Connected" + } + }, + { + "key": "On Disconnected", + "details": { + "name": "On Disconnected" + } + }, + { + "key": "OnEvent", + "details": { + "name": "OnEvent" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/OnTriggerExitevent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/OnTriggerExitevent.names new file mode 100644 index 0000000000..0c70ada73d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/OnTriggerExitevent.names @@ -0,0 +1,62 @@ +{ + "entries": [ + { + "key": "On Trigger Exit event", + "context": "AZEventHandler", + "variant": "", + "details": { + "name": "On Trigger Exit event" + }, + "slots": [ + { + "key": "Simulated Body Handle", + "details": { + "name": "Simulated Body Handle" + } + }, + { + "key": "Trigger Event", + "details": { + "name": "Trigger Event" + } + }, + { + "key": "On Trigger Exit event", + "details": { + "name": "On Trigger Exit event" + } + }, + { + "key": "Connect", + "details": { + "name": "Connect" + } + }, + { + "key": "Disconnect", + "details": { + "name": "Disconnect" + } + }, + { + "key": "On Connected", + "details": { + "name": "On Connected" + } + }, + { + "key": "On Disconnected", + "details": { + "name": "On Disconnected" + } + }, + { + "key": "OnEvent", + "details": { + "name": "OnEvent" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/Postsimulateevent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/Postsimulateevent.names new file mode 100644 index 0000000000..3cbbe32b4d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/Postsimulateevent.names @@ -0,0 +1,56 @@ +{ + "entries": [ + { + "key": "Postsimulate event", + "context": "AZEventHandler", + "variant": "", + "details": { + "name": "Postsimulate event" + }, + "slots": [ + { + "key": "Tick time", + "details": { + "name": "Tick time" + } + }, + { + "key": "Postsimulate event", + "details": { + "name": "Postsimulate event" + } + }, + { + "key": "Connect", + "details": { + "name": "Connect" + } + }, + { + "key": "Disconnect", + "details": { + "name": "Disconnect" + } + }, + { + "key": "On Connected", + "details": { + "name": "On Connected" + } + }, + { + "key": "On Disconnected", + "details": { + "name": "On Disconnected" + } + }, + { + "key": "OnEvent", + "details": { + "name": "OnEvent" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/Presimulateevent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/Presimulateevent.names new file mode 100644 index 0000000000..d3fb8cca6e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/Presimulateevent.names @@ -0,0 +1,56 @@ +{ + "entries": [ + { + "key": "Presimulate event", + "context": "AZEventHandler", + "variant": "", + "details": { + "name": "Presimulate event" + }, + "slots": [ + { + "key": "Tick time", + "details": { + "name": "Tick time" + } + }, + { + "key": "Presimulate event", + "details": { + "name": "Presimulate event" + } + }, + { + "key": "Connect", + "details": { + "name": "Connect" + } + }, + { + "key": "Disconnect", + "details": { + "name": "Disconnect" + } + }, + { + "key": "On Connected", + "details": { + "name": "On Connected" + } + }, + { + "key": "On Disconnected", + "details": { + "name": "On Disconnected" + } + }, + { + "key": "OnEvent", + "details": { + "name": "OnEvent" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/SettingsRegistryNotifyEvent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/SettingsRegistryNotifyEvent.names new file mode 100644 index 0000000000..09ec65d790 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/AZEvents/SettingsRegistryNotifyEvent.names @@ -0,0 +1,56 @@ +{ + "entries": [ + { + "key": "SettingsRegistry Notify Event", + "context": "AZEventHandler", + "variant": "", + "details": { + "name": "SettingsRegistry Notify Event" + }, + "slots": [ + { + "key": "Json Path", + "details": { + "name": "Json Path" + } + }, + { + "key": "SettingsRegistry Notify Event", + "details": { + "name": "SettingsRegistry Notify Event" + } + }, + { + "key": "Connect", + "details": { + "name": "Connect" + } + }, + { + "key": "Disconnect", + "details": { + "name": "Disconnect" + } + }, + { + "key": "On Connected", + "details": { + "name": "On Connected" + } + }, + { + "key": "On Disconnected", + "details": { + "name": "On Disconnected" + } + }, + { + "key": "OnEvent", + "details": { + "name": "OnEvent" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AWSMetrics_AttributesSubmissionList.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AWSMetrics_AttributesSubmissionList.names new file mode 100644 index 0000000000..e0c9852e54 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AWSMetrics_AttributesSubmissionList.names @@ -0,0 +1,57 @@ +{ + "entries": [ + { + "key": "AWSMetrics_AttributesSubmissionList", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Attributes Submission List", + "category": "AWS Metrics" + }, + "methods": [ + { + "key": "Getattributes", + "details": { + "name": "Get Attributes" + }, + "params": [ + { + "typeid": "{B1106C14-D22B-482F-B33E-B6E154A53798}", + "details": { + "name": "Attribute Submission List" + } + } + ], + "results": [ + { + "typeid": "{1C1ABE6D-94D2-5CFD-A502-8813300FEC8D}", + "details": { + "name": "Metrics Attribute" + } + } + ] + }, + { + "key": "Setattributes", + "details": { + "name": "Set Attributes" + }, + "params": [ + { + "typeid": "{B1106C14-D22B-482F-B33E-B6E154A53798}", + "details": { + "name": "Attribute Submission List" + } + }, + { + "typeid": "{1C1ABE6D-94D2-5CFD-A502-8813300FEC8D}", + "details": { + "name": "Metrics Attribute" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AWSMetrics_MetricsAttribute.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AWSMetrics_MetricsAttribute.names new file mode 100644 index 0000000000..57a94769b0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AWSMetrics_MetricsAttribute.names @@ -0,0 +1,131 @@ +{ + "entries": [ + { + "key": "AWSMetrics_MetricsAttribute", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Metrics Attribute", + "category": "AWS Metrics" + }, + "methods": [ + { + "key": "SetName", + "context": "AWSMetrics_MetricsAttribute", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetName" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetName is invoked" + }, + "details": { + "name": "Set Name" + }, + "params": [ + { + "typeid": "{6483F481-0C18-4171-8B59-A44F2F28EAE5}", + "details": { + "name": "Metrics Attribute" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name" + } + } + ] + }, + { + "key": "SetStrValue", + "context": "AWSMetrics_MetricsAttribute", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetStrValue" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetStrValue is invoked" + }, + "details": { + "name": "Set String Value" + }, + "params": [ + { + "typeid": "{6483F481-0C18-4171-8B59-A44F2F28EAE5}", + "details": { + "name": "Metrics Attribute" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name" + } + } + ] + }, + { + "key": "SetIntValue", + "context": "AWSMetrics_MetricsAttribute", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetIntValue" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetIntValue is invoked" + }, + "details": { + "name": "Set Int Value" + }, + "params": [ + { + "typeid": "{6483F481-0C18-4171-8B59-A44F2F28EAE5}", + "details": { + "name": "Metrics Attribute" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "SetDoubleValue", + "context": "AWSMetrics_MetricsAttribute", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetDoubleValue" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetDoubleValue is invoked" + }, + "details": { + "name": "Set Double Value" + }, + "params": [ + { + "typeid": "{6483F481-0C18-4171-8B59-A44F2F28EAE5}", + "details": { + "name": "Metrics Attribute" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "Value" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AWSScriptBehaviorDynamoDB.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AWSScriptBehaviorDynamoDB.names new file mode 100644 index 0000000000..3d9e963484 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AWSScriptBehaviorDynamoDB.names @@ -0,0 +1,81 @@ +{ + "entries": [ + { + "key": "AWSScriptBehaviorDynamoDB", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "AWS Dynamo DB", + "category": "AWS Core" + }, + "methods": [ + { + "key": "GetItem", + "context": "AWSScriptBehaviorDynamoDB", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetItem" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetItem is invoked" + }, + "details": { + "name": "Get Item", + "category": "Other" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Table Resource Key" + } + }, + { + "typeid": "{F8A7460C-2CC2-5755-AFDA-49B1109A751E}", + "details": { + "name": "Key Map" + } + } + ] + }, + { + "key": "GetItemRaw", + "context": "AWSScriptBehaviorDynamoDB", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetItemRaw" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetItemRaw is invoked" + }, + "details": { + "name": "Get Item Raw", + "category": "Other" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Table" + } + }, + { + "typeid": "{F8A7460C-2CC2-5755-AFDA-49B1109A751E}", + "details": { + "name": "Key Map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Region" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AWSScriptBehaviorLambda.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AWSScriptBehaviorLambda.names new file mode 100644 index 0000000000..9ee4a606b9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AWSScriptBehaviorLambda.names @@ -0,0 +1,79 @@ +{ + "entries": [ + { + "key": "AWSScriptBehaviorLambda", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "AWS Lambda", + "category": "AWS Core" + }, + "methods": [ + { + "key": "Invoke", + "context": "AWSScriptBehaviorLambda", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Invoke" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Invoke is invoked" + }, + "details": { + "name": "Invoke" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Function Resource Key" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Payload" + } + } + ] + }, + { + "key": "InvokeRaw", + "context": "AWSScriptBehaviorLambda", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke InvokeRaw" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after InvokeRaw is invoked" + }, + "details": { + "name": "Invoke Raw" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Function Name" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Payload" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Region" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AWSScriptBehaviorS3.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AWSScriptBehaviorS3.names new file mode 100644 index 0000000000..7630385d28 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AWSScriptBehaviorS3.names @@ -0,0 +1,155 @@ +{ + "entries": [ + { + "key": "AWSScriptBehaviorS3", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "AWS S3", + "category": "AWS Core" + }, + "methods": [ + { + "key": "GetObject", + "context": "AWSScriptBehaviorS3", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetObject" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetObject is invoked" + }, + "details": { + "name": "Get Object" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Bucket Resource Key" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Object Key" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "File" + } + } + ] + }, + { + "key": "GetObjectRaw", + "context": "AWSScriptBehaviorS3", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetObjectRaw" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetObjectRaw is invoked" + }, + "details": { + "name": "Get Object Raw" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Bucket" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Object Key" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Region" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "File" + } + } + ] + }, + { + "key": "HeadObject", + "context": "AWSScriptBehaviorS3", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke HeadObject" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after HeadObject is invoked" + }, + "details": { + "name": "Head Object" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Bucket Resource Key" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "OBject Key" + } + } + ] + }, + { + "key": "HeadObjectRaw", + "context": "AWSScriptBehaviorS3", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke HeadObjectRaw" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after HeadObjectRaw is invoked" + }, + "details": { + "name": "Head Object Raw" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Bucket" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Object Key" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Region" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AcesParameterOverrides.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AcesParameterOverrides.names new file mode 100644 index 0000000000..50a563d9c4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AcesParameterOverrides.names @@ -0,0 +1,38 @@ +{ + "entries": [ + { + "key": "AcesParameterOverrides", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "AcesParameterOverrides" + }, + "methods": [ + { + "key": "LoadPreset", + "context": "AcesParameterOverrides", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke LoadPreset" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after LoadPreset is invoked" + }, + "details": { + "name": "AcesParameterOverrides::LoadPreset", + "category": "Other" + }, + "params": [ + { + "typeid": "{3EE8C0D4-3792-46C0-B91C-B89A81C36B91}", + "details": { + "name": "AcesParameterOverrides*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ActorComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ActorComponent.names new file mode 100644 index 0000000000..a87e636a17 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ActorComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "ActorComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ActorComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AnimationData.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AnimationData.names new file mode 100644 index 0000000000..54155ecbde --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AnimationData.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "AnimationData", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "AnimationData" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AssetData.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AssetData.names new file mode 100644 index 0000000000..c7fd08013f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AssetData.names @@ -0,0 +1,177 @@ +{ + "entries": [ + { + "key": "AssetData", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Asset Data", + "category": "Asset" + }, + "methods": [ + { + "key": "GetUseCount", + "context": "AssetData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Use Count" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Use Count is invoked" + }, + "details": { + "name": "Get Use Count" + }, + "params": [ + { + "typeid": "{AF3F7D32-1536-422A-89F3-A11E1F5B5A9C}", + "details": { + "name": "Asset Data" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Use Count" + } + } + ] + }, + { + "key": "IsLoading", + "context": "AssetData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Loading" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Loading is invoked" + }, + "details": { + "name": "Is Loading", + "category": "Other" + }, + "params": [ + { + "typeid": "{AF3F7D32-1536-422A-89F3-A11E1F5B5A9C}", + "details": { + "name": "Asset Data" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Include Queued" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Loading" + } + } + ] + }, + { + "key": "IsError", + "context": "AssetData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Error" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Error is invoked" + }, + "details": { + "name": "Is Error" + }, + "params": [ + { + "typeid": "{AF3F7D32-1536-422A-89F3-A11E1F5B5A9C}", + "details": { + "name": "Asset Data" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Error" + } + } + ] + }, + { + "key": "IsReady", + "context": "AssetData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Ready" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Ready is invoked" + }, + "details": { + "name": "Is Ready" + }, + "params": [ + { + "typeid": "{AF3F7D32-1536-422A-89F3-A11E1F5B5A9C}", + "details": { + "name": "Asset Data" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Ready" + } + } + ] + }, + { + "key": "GetId", + "context": "AssetData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Id" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Id is invoked" + }, + "details": { + "name": "Get Id" + }, + "params": [ + { + "typeid": "{AF3F7D32-1536-422A-89F3-A11E1F5B5A9C}", + "details": { + "name": "Asset Data" + } + } + ], + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "Asset Id" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AssetId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AssetId.names new file mode 100644 index 0000000000..0cebae5057 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AssetId.names @@ -0,0 +1,145 @@ +{ + "entries": [ + { + "key": "AssetId", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Asset Id", + "category": "Asset" + }, + "methods": [ + { + "key": "CreateString", + "context": "AssetId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CreateString" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CreateString is invoked" + }, + "details": { + "name": "Create String" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "String" + } + } + ], + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "Asset Id" + } + } + ] + }, + { + "key": "IsValid", + "context": "AssetId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsValid" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsValid is invoked" + }, + "details": { + "name": "Is Valid" + }, + "params": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "Asset Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Valid" + } + } + ] + }, + { + "key": "ToString", + "context": "AssetId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToString" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToString is invoked" + }, + "details": { + "name": "To String" + }, + "params": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "Asset Id" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "String" + } + } + ] + }, + { + "key": "IsEqual", + "context": "AssetId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsEqual" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsEqual is invoked" + }, + "details": { + "name": "Is Equal" + }, + "params": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "Asset Id" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "Asset Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Equal" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AssetInfo.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AssetInfo.names new file mode 100644 index 0000000000..3c14063340 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AssetInfo.names @@ -0,0 +1,102 @@ +{ + "entries": [ + { + "key": "AssetInfo", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Asset Info" + }, + "methods": [ + { + "key": "assetId", + "details": { + "name": "Get Asset Id" + }, + "params": [ + { + "typeid": "{E6D8372B-8419-4287-B478-1353709A972F}", + "details": { + "name": "Asset Info" + } + } + ], + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "Asset Id" + } + } + ] + }, + { + "key": "assetType", + "details": { + "name": "Get Asset Type" + }, + "params": [ + { + "typeid": "{E6D8372B-8419-4287-B478-1353709A972F}", + "details": { + "name": "Asset Info" + } + } + ], + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Type" + } + } + ] + }, + { + "key": "sizeBytes", + "details": { + "name": "Get Size (Bytes)" + }, + "params": [ + { + "typeid": "{E6D8372B-8419-4287-B478-1353709A972F}", + "details": { + "name": "Asset Info" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Size (Bytes)" + } + } + ] + }, + { + "key": "relativePath", + "details": { + "name": "Get Relative Path" + }, + "params": [ + { + "typeid": "{E6D8372B-8419-4287-B478-1353709A972F}", + "details": { + "name": "Asset Info" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Relative Path" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AtomToolsDocumentSystemSettings.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AtomToolsDocumentSystemSettings.names new file mode 100644 index 0000000000..8cb330e91d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AtomToolsDocumentSystemSettings.names @@ -0,0 +1,57 @@ +{ + "entries": [ + { + "key": "AtomToolsDocumentSystemSettings", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Document System Settings", + "category": "Atom Tools" + }, + "methods": [ + { + "key": "GetshowReloadDocumentPrompt", + "details": { + "name": "Get Show Reload Document Prompt" + }, + "params": [ + { + "typeid": "{9E576D4F-A74A-4326-9135-C07284D0A3B9}", + "details": { + "name": "Document System Settings" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enabled" + } + } + ] + }, + { + "key": "SetshowReloadDocumentPrompt", + "details": { + "name": "Set Show Reload Document Prompt" + }, + "params": [ + { + "typeid": "{9E576D4F-A74A-4326-9135-C07284D0A3B9}", + "details": { + "name": "Document System Settings" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enabled" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AuthenticationTokens.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AuthenticationTokens.names new file mode 100644 index 0000000000..fde350b776 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AuthenticationTokens.names @@ -0,0 +1,145 @@ +{ + "entries": [ + { + "key": "AuthenticationTokens", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Authentication Tokens", + "category": "AWS Client Auth" + }, + "methods": [ + { + "key": "GetAccessToken", + "details": { + "name": "Get Access Token" + }, + "params": [ + { + "typeid": "{F965D1B2-9DE3-4900-B44B-E58D9F083ACB}", + "details": { + "name": "Authentication Tokens" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Access Token" + } + } + ] + }, + { + "key": "SetAccessToken", + "details": { + "name": "Set Access Token" + }, + "params": [ + { + "typeid": "{F965D1B2-9DE3-4900-B44B-E58D9F083ACB}", + "details": { + "name": "Authentication Tokens" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Access Token" + } + } + ] + }, + { + "key": "GetOpenIdToken", + "context": "getter", + "details": { + "name": "Get OpenId Token" + }, + "params": [ + { + "typeid": "{F965D1B2-9DE3-4900-B44B-E58D9F083ACB}", + "details": { + "name": "Authentication Token" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "OpenId Token" + } + } + ] + }, + { + "key": "SetOpenIdToken", + "context": "setter", + "details": { + "name": "Set OpenId Token" + }, + "params": [ + { + "typeid": "{F965D1B2-9DE3-4900-B44B-E58D9F083ACB}", + "details": { + "name": "Authentication Token" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "OpenId Token" + } + } + ] + }, + { + "key": "GetRefreshToken", + "context": "getter", + "details": { + "name": "Get Refresh Token" + }, + "params": [ + { + "typeid": "{F965D1B2-9DE3-4900-B44B-E58D9F083ACB}", + "details": { + "name": "Authentication Token" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Refresh Token" + } + } + ] + }, + { + "key": "SetRefreshToken", + "context": "setter", + "details": { + "name": "Set Refresh Token" + }, + "params": [ + { + "typeid": "{F965D1B2-9DE3-4900-B44B-E58D9F083ACB}", + "details": { + "name": "Authentication Token" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Refresh Token" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AxisType.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AxisType.names new file mode 100644 index 0000000000..005a2d564e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AxisType.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "AxisType", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "AxisType" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AzFramework__SurfaceData__SurfacePoint.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AzFramework__SurfaceData__SurfacePoint.names new file mode 100644 index 0000000000..dfcbac7dad --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/AzFramework__SurfaceData__SurfacePoint.names @@ -0,0 +1,141 @@ +{ + "entries": [ + { + "key": "AzFramework::SurfaceData::SurfacePoint", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Surface Point", + "category": "Surface Data" + }, + "methods": [ + { + "key": "Getposition", + "details": { + "name": "Get Position" + }, + "params": [ + { + "typeid": "{331A3D0E-BB1D-47BF-96A2-249FAA0D720D}", + "details": { + "name": "Surface Point" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position" + } + } + ] + }, + { + "key": "Setposition", + "details": { + "name": "Set Position" + }, + "params": [ + { + "typeid": "{331A3D0E-BB1D-47BF-96A2-249FAA0D720D}", + "details": { + "name": "Surface Point" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position" + } + } + ] + }, + { + "key": "Getnormal", + "details": { + "name": "Get Normal" + }, + "params": [ + { + "typeid": "{331A3D0E-BB1D-47BF-96A2-249FAA0D720D}", + "details": { + "name": "Surface Point" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Normal" + } + } + ] + }, + { + "key": "Setnormal", + "details": { + "name": "Set Normal" + }, + "params": [ + { + "typeid": "{331A3D0E-BB1D-47BF-96A2-249FAA0D720D}", + "details": { + "name": "Surface Point" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Normal" + } + } + ] + }, + { + "key": "GetsurfaceTags", + "details": { + "name": "Get Surface Tags" + }, + "params": [ + { + "typeid": "{331A3D0E-BB1D-47BF-96A2-249FAA0D720D}", + "details": { + "name": "Surface Point" + } + } + ], + "results": [ + { + "typeid": "{8F60B4D4-06F0-577C-AFB9-ECBFA7B66D4E}", + "details": { + "name": "Surface Tags" + } + } + ] + }, + { + "key": "SetsurfaceTags", + "details": { + "name": "Set Surface Tags" + }, + "params": [ + { + "typeid": "{331A3D0E-BB1D-47BF-96A2-249FAA0D720D}", + "details": { + "name": "Surface Point" + } + }, + { + "typeid": "{8F60B4D4-06F0-577C-AFB9-ECBFA7B66D4E}", + "details": { + "name": "Surface Tags" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/BlendShapeAnimationData.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/BlendShapeAnimationData.names new file mode 100644 index 0000000000..640613b7b0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/BlendShapeAnimationData.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "BlendShapeAnimationData", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "BlendShapeAnimationData" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/BlendShapeData.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/BlendShapeData.names new file mode 100644 index 0000000000..f450864610 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/BlendShapeData.names @@ -0,0 +1,178 @@ +{ + "entries": [ + { + "key": "BlendShapeData", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "BlendShapeData" + }, + "methods": [ + { + "key": "GetUV", + "context": "BlendShapeData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetUV" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetUV is invoked" + }, + "details": { + "name": "BlendShapeData::GetUV", + "category": "Other" + }, + "params": [ + { + "typeid": "{FF875C22-2E4F-4CE3-BA49-09BF78C70A09}", + "details": { + "name": "BlendShapeData*" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "const Vector2&" + } + } + ] + }, + { + "key": "GetTangent", + "context": "BlendShapeData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTangent" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTangent is invoked" + }, + "details": { + "name": "BlendShapeData::GetTangent", + "category": "Other" + }, + "params": [ + { + "typeid": "{FF875C22-2E4F-4CE3-BA49-09BF78C70A09}", + "details": { + "name": "const BlendShapeData&" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "GetBitangent", + "context": "BlendShapeData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetBitangent" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetBitangent is invoked" + }, + "details": { + "name": "BlendShapeData::GetBitangent", + "category": "Other" + }, + "params": [ + { + "typeid": "{FF875C22-2E4F-4CE3-BA49-09BF78C70A09}", + "details": { + "name": "const BlendShapeData&" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetColor", + "context": "BlendShapeData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetColor is invoked" + }, + "details": { + "name": "BlendShapeData::GetColor", + "category": "Other" + }, + "params": [ + { + "typeid": "{FF875C22-2E4F-4CE3-BA49-09BF78C70A09}", + "details": { + "name": "const BlendShapeData&" + } + }, + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "unsigned char" + } + }, + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "unsigned char" + } + } + ], + "results": [ + { + "typeid": "{937E3BF8-5204-4D40-A8DA-C8F083C89F9F}", + "details": { + "name": "SceneAPI::DataTypes::Color" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/BlendShapeDataFace.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/BlendShapeDataFace.names new file mode 100644 index 0000000000..2d4d4c2f92 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/BlendShapeDataFace.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "BlendShapeDataFace", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "BlendShapeDataFace" + }, + "methods": [ + { + "key": "GetVertexIndex", + "context": "BlendShapeDataFace", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetVertexIndex" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetVertexIndex is invoked" + }, + "details": { + "name": "BlendShapeDataFace::GetVertexIndex", + "category": "Other" + }, + "params": [ + { + "typeid": "{C972EC9A-3A5C-47CD-9A92-ECB4C0C0451C}", + "details": { + "name": "const SceneAPI::DataTypes::IBlendShapeData::Face&" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ], + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/BoxShapeConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/BoxShapeConfig.names new file mode 100644 index 0000000000..b5cad7c12d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/BoxShapeConfig.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "BoxShapeConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "BoxShapeConfig" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/CameraComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/CameraComponent.names new file mode 100644 index 0000000000..1b0a02f28e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/CameraComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "CameraComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "CameraComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/CapsuleShapeConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/CapsuleShapeConfig.names new file mode 100644 index 0000000000..5172f2b9b9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/CapsuleShapeConfig.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "CapsuleShapeConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "CapsuleShapeConfig" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ClientAuthAWSCredentials.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ClientAuthAWSCredentials.names new file mode 100644 index 0000000000..3d1fc2e80e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ClientAuthAWSCredentials.names @@ -0,0 +1,141 @@ +{ + "entries": [ + { + "key": "ClientAuthAWSCredentials", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "AWS Client Auth Credentials", + "category": "AWS Client Auth" + }, + "methods": [ + { + "key": "GetAWSAccessKeyId", + "details": { + "name": "Get AWS Access Key Id" + }, + "params": [ + { + "typeid": "{02FB32C4-B94E-4084-9049-3DF32F87BD76}", + "details": { + "name": "AWS ClientAuth Credentials" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AWS Access Key Id" + } + } + ] + }, + { + "key": "SetAWSAccessKeyId", + "details": { + "name": "Set AWS Access Key Id" + }, + "params": [ + { + "typeid": "{02FB32C4-B94E-4084-9049-3DF32F87BD76}", + "details": { + "name": "AWS ClientAuth Credentials" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AWS Access Key Id" + } + } + ] + }, + { + "key": "GetAWSSecretKey", + "details": { + "name": "Get AWS Secret Key" + }, + "params": [ + { + "typeid": "{02FB32C4-B94E-4084-9049-3DF32F87BD76}", + "details": { + "name": "AWS ClientAuth Credentials" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AWS Secret Key" + } + } + ] + }, + { + "key": "SetAWSSecretKey", + "details": { + "name": "Set AWS Secret Key" + }, + "params": [ + { + "typeid": "{02FB32C4-B94E-4084-9049-3DF32F87BD76}", + "details": { + "name": "AWS ClientAuth Credentials" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AWS Secret Key" + } + } + ] + }, + { + "key": "GetAWSSessionToken", + "details": { + "name": "Get AWS Session Token" + }, + "params": [ + { + "typeid": "{02FB32C4-B94E-4084-9049-3DF32F87BD76}", + "details": { + "name": "AWS ClientAuth Credentials" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AWS Session Token" + } + } + ] + }, + { + "key": "SetAWSSessionToken", + "details": { + "name": "Set AWS Session Token" + }, + "params": [ + { + "typeid": "{02FB32C4-B94E-4084-9049-3DF32F87BD76}", + "details": { + "name": "AWS ClientAuth Credentials" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AWS Session Token" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/CollisionEvent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/CollisionEvent.names new file mode 100644 index 0000000000..335200a350 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/CollisionEvent.names @@ -0,0 +1,100 @@ +{ + "entries": [ + { + "key": "CollisionEvent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Collision Event" + }, + "methods": [ + { + "key": "GetBody1EntityId", + "context": "CollisionEvent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Body 1 Entity Id" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Body 1 Entity Id is invoked" + }, + "details": { + "name": "Get Body 1 Entity Id" + }, + "params": [ + { + "typeid": "{7602AA36-792C-4BDC-BDF8-AA16792151A3}", + "details": { + "name": "Collision Event" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetBody2EntityId", + "context": "CollisionEvent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Body 2 Entity Id" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Body 2 Entity Id is invoked" + }, + "details": { + "name": "Get Body 2 Entity Id" + }, + "params": [ + { + "typeid": "{7602AA36-792C-4BDC-BDF8-AA16792151A3}", + "details": { + "name": "Collision Event" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetContacts", + "details": { + "name": "Get Contacts" + }, + "params": [ + { + "typeid": "{7602AA36-792C-4BDC-BDF8-AA16792151A3}", + "details": { + "name": "Collision Event" + } + } + ], + "results": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "Contacts" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/CollisionGroup.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/CollisionGroup.names new file mode 100644 index 0000000000..ba4a63ebe2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/CollisionGroup.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "CollisionGroup", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "CollisionGroup" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ComponentId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ComponentId.names new file mode 100644 index 0000000000..edc87d77f7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ComponentId.names @@ -0,0 +1,114 @@ +{ + "entries": [ + { + "key": "ComponentId", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Component Id", + "category": "Entity" + }, + "methods": [ + { + "key": "IsValid", + "context": "ComponentId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Valid" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Valid is invoked" + }, + "details": { + "name": "Is Valid" + }, + "params": [ + { + "typeid": "{60A9A069-9C3D-465A-B7AD-0D6CC803990A}", + "details": { + "name": "Behavior Component Id*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Valid" + } + } + ] + }, + { + "key": "Equal", + "context": "ComponentId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Equal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Equal is invoked" + }, + "details": { + "name": "Equal" + }, + "params": [ + { + "typeid": "{60A9A069-9C3D-465A-B7AD-0D6CC803990A}", + "details": { + "name": "Behavior Component Id" + } + }, + { + "typeid": "{60A9A069-9C3D-465A-B7AD-0D6CC803990A}", + "details": { + "name": "Behavior Component Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Equal" + } + } + ] + }, + { + "key": "ToString", + "context": "ComponentId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke To String" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after To String is invoked" + }, + "details": { + "name": "To String" + }, + "params": [ + { + "typeid": "{60A9A069-9C3D-465A-B7AD-0D6CC803990A}", + "details": { + "name": "Behavior Component Id*" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "String" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ConstantGradientComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ConstantGradientComponent.names new file mode 100644 index 0000000000..0e0fdad150 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ConstantGradientComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "ConstantGradientComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ConstantGradientComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ConstantGradientConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ConstantGradientConfig.names new file mode 100644 index 0000000000..ed5c46c4fa --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ConstantGradientConfig.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "ConstantGradientConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ConstantGradientConfig" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Contact.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Contact.names new file mode 100644 index 0000000000..068759089b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Contact.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "Contact", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Contact" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/CryRange.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/CryRange.names new file mode 100644 index 0000000000..39791a3b8b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/CryRange.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "CryRange", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "CryRange" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/CylinderShapeConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/CylinderShapeConfig.names new file mode 100644 index 0000000000..633933e188 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/CylinderShapeConfig.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "CylinderShapeConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "CylinderShapeConfig" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/DiskShapeConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/DiskShapeConfig.names new file mode 100644 index 0000000000..82cd174850 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/DiskShapeConfig.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "DiskShapeConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "DiskShapeConfig" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/DisplaySettingsState.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/DisplaySettingsState.names new file mode 100644 index 0000000000..6911c3d15e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/DisplaySettingsState.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "DisplaySettingsState", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "DisplaySettingsState" + }, + "methods": [ + { + "key": "ToString", + "context": "DisplaySettingsState", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToString" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToString is invoked" + }, + "details": { + "name": "DisplaySettingsState::ToString", + "category": "Other" + }, + "params": [ + { + "typeid": "{EBEDA5EC-29D3-4F23-ABCC-C7C4EE48FA36}", + "details": { + "name": "DisplaySettingsState*" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/DitherGradientComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/DitherGradientComponent.names new file mode 100644 index 0000000000..36d4024bce --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/DitherGradientComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "DitherGradientComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "DitherGradientComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/DitherGradientConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/DitherGradientConfig.names new file mode 100644 index 0000000000..bdbf4d34e4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/DitherGradientConfig.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "DitherGradientConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "DitherGradientConfig" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EditorActorComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EditorActorComponent.names new file mode 100644 index 0000000000..9ff8e9933c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EditorActorComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "EditorActorComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "EditorActorComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EditorCameraComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EditorCameraComponent.names new file mode 100644 index 0000000000..ad933a1918 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EditorCameraComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "EditorCameraComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "EditorCameraComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EditorLayerComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EditorLayerComponent.names new file mode 100644 index 0000000000..f8cdb2e825 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EditorLayerComponent.names @@ -0,0 +1,71 @@ +{ + "entries": [ + { + "key": "EditorLayerComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "EditorLayerComponent" + }, + "methods": [ + { + "key": "CreateLayerEntityFromName", + "context": "EditorLayerComponent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CreateLayerEntityFromName" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CreateLayerEntityFromName is invoked" + }, + "details": { + "name": "EditorLayerComponent::CreateLayerEntityFromName", + "category": "Other" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "RecoverLayer", + "context": "EditorLayerComponent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RecoverLayer" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RecoverLayer is invoked" + }, + "details": { + "name": "EditorLayerComponent::RecoverLayer", + "category": "Other" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EditorMaterialComponentSlot.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EditorMaterialComponentSlot.names new file mode 100644 index 0000000000..fbb74f130d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EditorMaterialComponentSlot.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "EditorMaterialComponentSlot", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "EditorMaterialComponentSlot" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EditorSequenceComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EditorSequenceComponent.names new file mode 100644 index 0000000000..32e5072aa2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EditorSequenceComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "EditorSequenceComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "EditorSequenceComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EditorSimpleMotionComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EditorSimpleMotionComponent.names new file mode 100644 index 0000000000..8ae6402242 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EditorSimpleMotionComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "EditorSimpleMotionComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "EditorSimpleMotionComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EditorTransformBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EditorTransformBus.names new file mode 100644 index 0000000000..11b6390631 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EditorTransformBus.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "EditorTransformBus", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "EditorTransformBus" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Entity Transform.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Entity Transform.names new file mode 100644 index 0000000000..86c3415b37 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Entity Transform.names @@ -0,0 +1,45 @@ +{ + "entries": [ + { + "key": "Entity Transform", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Entity Transform" + }, + "methods": [ + { + "key": "Rotate", + "context": "Entity Transform", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Rotate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Rotate is invoked" + }, + "details": { + "name": "Entity Transform::Rotate", + "category": "Other" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "const EntityId&", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Entity.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Entity.names new file mode 100644 index 0000000000..a6d6ac1f03 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Entity.names @@ -0,0 +1,657 @@ +{ + "entries": [ + { + "key": "Entity", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Behavior Entity", + "category": "Entity" + }, + "methods": [ + { + "key": "GetComponentName", + "context": "Entity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Component Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Component Name is invoked" + }, + "details": { + "name": "Get Component Name", + "category": "Other" + }, + "params": [ + { + "typeid": "{41CC88A4-FE07-48E6-943D-998DE68AFF5C}", + "details": { + "name": "Behavior Entity", + "tooltip": "Entity" + } + }, + { + "typeid": "{60A9A069-9C3D-465A-B7AD-0D6CC803990A}", + "details": { + "name": "Behavior Component Id" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Component Name" + } + } + ] + }, + { + "key": "GetComponentType", + "context": "Entity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Component Type" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Component Type is invoked" + }, + "details": { + "name": "Get Component Type", + "category": "Other" + }, + "params": [ + { + "typeid": "{41CC88A4-FE07-48E6-943D-998DE68AFF5C}", + "details": { + "name": "Behavior Entity", + "tooltip": "Entity" + } + }, + { + "typeid": "{60A9A069-9C3D-465A-B7AD-0D6CC803990A}", + "details": { + "name": "Behavior Component Id" + } + } + ], + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Type" + } + } + ] + }, + { + "key": "CreateComponent", + "context": "Entity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create Component" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create Component is invoked" + }, + "details": { + "name": "Create Component", + "category": "Other" + }, + "params": [ + { + "typeid": "{41CC88A4-FE07-48E6-943D-998DE68AFF5C}", + "details": { + "name": "Behavior Entity", + "tooltip": "Entity" + } + }, + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Component Type" + } + }, + { + "typeid": "{0A7929DF-2932-40EA-B2B3-79BC1C3490D0}", + "details": { + "name": "Component Config*" + } + } + ], + "results": [ + { + "typeid": "{60A9A069-9C3D-465A-B7AD-0D6CC803990A}", + "details": { + "name": "Behavior Component Id" + } + } + ] + }, + { + "key": "DestroyComponent", + "context": "Entity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Destroy Component" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Destroy Component is invoked" + }, + "details": { + "name": "Destroy Component", + "category": "Other" + }, + "params": [ + { + "typeid": "{41CC88A4-FE07-48E6-943D-998DE68AFF5C}", + "details": { + "name": "Behavior Entity", + "tooltip": "Entity" + } + }, + { + "typeid": "{60A9A069-9C3D-465A-B7AD-0D6CC803990A}", + "details": { + "name": "Behavior Component Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "FindComponentOfType", + "context": "Entity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Find Component Of Type" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Find Component Of Type is invoked" + }, + "details": { + "name": "Find Component Of Type", + "category": "Other" + }, + "params": [ + { + "typeid": "{41CC88A4-FE07-48E6-943D-998DE68AFF5C}", + "details": { + "name": "Behavior Entity", + "tooltip": "Entity" + } + }, + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Component Type" + } + } + ], + "results": [ + { + "typeid": "{60A9A069-9C3D-465A-B7AD-0D6CC803990A}", + "details": { + "name": "Behavior Component Id" + } + } + ] + }, + { + "key": "SetComponentConfiguration", + "context": "Entity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Component Configuration" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Component Configuration is invoked" + }, + "details": { + "name": "Set Component Configuration", + "category": "Other" + }, + "params": [ + { + "typeid": "{41CC88A4-FE07-48E6-943D-998DE68AFF5C}", + "details": { + "name": "Behavior Entity", + "tooltip": "Entity" + } + }, + { + "typeid": "{60A9A069-9C3D-465A-B7AD-0D6CC803990A}", + "details": { + "name": "Behavior Component Id" + } + }, + { + "typeid": "{0A7929DF-2932-40EA-B2B3-79BC1C3490D0}", + "details": { + "name": "Component Config" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "IsValid", + "context": "Entity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Valid" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Valid is invoked" + }, + "details": { + "name": "Is Valid", + "category": "Other" + }, + "params": [ + { + "typeid": "{41CC88A4-FE07-48E6-943D-998DE68AFF5C}", + "details": { + "name": "Behavior Entity", + "tooltip": "Entity" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Valid" + } + } + ] + }, + { + "key": "GetId", + "context": "Entity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetId is invoked" + }, + "details": { + "name": "Get Id", + "category": "Other" + }, + "params": [ + { + "typeid": "{41CC88A4-FE07-48E6-943D-998DE68AFF5C}", + "details": { + "name": "Behavior Entity", + "tooltip": "Entity" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetOwningContextId", + "context": "Entity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetOwningContextId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetOwningContextId is invoked" + }, + "details": { + "name": "Get Owning Context Id" + }, + "params": [ + { + "typeid": "{41CC88A4-FE07-48E6-943D-998DE68AFF5C}", + "details": { + "name": "Behavior Entity", + "tooltip": "Entity" + } + } + ], + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Context Id" + } + } + ] + }, + { + "key": "GetComponents", + "context": "Entity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Components" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Components is invoked" + }, + "details": { + "name": "Get Components", + "category": "Other" + }, + "params": [ + { + "typeid": "{41CC88A4-FE07-48E6-943D-998DE68AFF5C}", + "details": { + "name": "Behavior Entity", + "tooltip": "Entity" + } + } + ], + "results": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "Components" + } + } + ] + }, + { + "key": "FindAllComponentsOfType", + "context": "Entity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Find All Components Of Type" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Find All Components Of Type is invoked" + }, + "details": { + "name": "Find All Components Of Type", + "category": "Other" + }, + "params": [ + { + "typeid": "{41CC88A4-FE07-48E6-943D-998DE68AFF5C}", + "details": { + "name": "Behavior Entity", + "tooltip": "Entity" + } + }, + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Component Type" + } + } + ], + "results": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "Components" + } + } + ] + }, + { + "key": "GetComponentConfiguration", + "context": "Entity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Component Configuration" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Component Configuration is invoked" + }, + "details": { + "name": "Get Component Configuration", + "category": "Other" + }, + "params": [ + { + "typeid": "{41CC88A4-FE07-48E6-943D-998DE68AFF5C}", + "details": { + "name": "Behavior Entity", + "tooltip": "Entity" + } + }, + { + "typeid": "{60A9A069-9C3D-465A-B7AD-0D6CC803990A}", + "details": { + "name": "Behavior Component Id" + } + }, + { + "typeid": "{0A7929DF-2932-40EA-B2B3-79BC1C3490D0}", + "details": { + "name": "Component Config" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "SetName", + "context": "Entity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Name is invoked" + }, + "details": { + "name": "Set Name", + "category": "Other" + }, + "params": [ + { + "typeid": "{41CC88A4-FE07-48E6-943D-998DE68AFF5C}", + "details": { + "name": "Behavior Entity", + "tooltip": "Entity" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Name" + } + } + ] + }, + { + "key": "IsActivated", + "context": "Entity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Activated" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Activated is invoked" + }, + "details": { + "name": "Is Activated", + "category": "Other" + }, + "params": [ + { + "typeid": "{41CC88A4-FE07-48E6-943D-998DE68AFF5C}", + "details": { + "name": "Behavior Entity", + "tooltip": "Entity" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Activated" + } + } + ] + }, + { + "key": "Activate", + "context": "Entity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Activate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Activate is invoked" + }, + "details": { + "name": "Activate", + "category": "Other" + }, + "params": [ + { + "typeid": "{41CC88A4-FE07-48E6-943D-998DE68AFF5C}", + "details": { + "name": "Behavior Entity", + "tooltip": "Entity" + } + } + ] + }, + { + "key": "Deactivate", + "context": "Entity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Deactivate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Deactivate is invoked" + }, + "details": { + "name": "Deactivate", + "category": "Other" + }, + "params": [ + { + "typeid": "{41CC88A4-FE07-48E6-943D-998DE68AFF5C}", + "details": { + "name": "Behavior Entity", + "tooltip": "Entity" + } + } + ] + }, + { + "key": "GetName", + "context": "Entity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Name is invoked" + }, + "details": { + "name": "GetName", + "category": "Other" + }, + "params": [ + { + "typeid": "{41CC88A4-FE07-48E6-943D-998DE68AFF5C}", + "details": { + "name": "Behavior Entity", + "tooltip": "Entity" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name" + } + } + ] + }, + { + "key": "Exists", + "context": "Entity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Exists" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Exists is invoked" + }, + "details": { + "name": "Exists", + "category": "Other" + }, + "params": [ + { + "typeid": "{41CC88A4-FE07-48E6-943D-998DE68AFF5C}", + "details": { + "name": "Behavior Entity", + "tooltip": "Entity" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Exists" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EntityComponentIdPair.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EntityComponentIdPair.names new file mode 100644 index 0000000000..65f9f52bd9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EntityComponentIdPair.names @@ -0,0 +1,117 @@ +{ + "entries": [ + { + "key": "EntityComponentIdPair", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "EntityComponentIdPair" + }, + "methods": [ + { + "key": "GetEntityId", + "context": "EntityComponentIdPair", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEntityId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEntityId is invoked" + }, + "details": { + "name": "EntityComponentIdPair::GetEntityId", + "category": "Other" + }, + "params": [ + { + "typeid": "{C845E5EC-5580-4E12-A9B2-9AE7E5B7826F}", + "details": { + "name": "EntityComponentIdPair*" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "Equal", + "context": "EntityComponentIdPair", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Equal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Equal is invoked" + }, + "details": { + "name": "EntityComponentIdPair::Equal", + "category": "Other" + }, + "params": [ + { + "typeid": "{C845E5EC-5580-4E12-A9B2-9AE7E5B7826F}", + "details": { + "name": "EntityComponentIdPair*" + } + }, + { + "typeid": "{C845E5EC-5580-4E12-A9B2-9AE7E5B7826F}", + "details": { + "name": "const EntityComponentIdPair&" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "ToString", + "context": "EntityComponentIdPair", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToString" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToString is invoked" + }, + "details": { + "name": "EntityComponentIdPair::ToString", + "category": "Other" + }, + "params": [ + { + "typeid": "{C845E5EC-5580-4E12-A9B2-9AE7E5B7826F}", + "details": { + "name": "const EntityComponentIdPair*" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EntityEntity_VM.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EntityEntity_VM.names new file mode 100644 index 0000000000..fe98c15e8c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EntityEntity_VM.names @@ -0,0 +1,230 @@ +{ + "entries": [ + { + "key": "EntityEntity_VM", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "EntityEntity_VM" + }, + "methods": [ + { + "key": "ToString", + "context": "EntityEntity_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToString" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToString is invoked" + }, + "details": { + "name": "EntityEntity_VM::ToString", + "category": "Other" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "const EntityId&", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + }, + { + "key": "IsValid", + "context": "EntityEntity_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsValid" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsValid is invoked" + }, + "details": { + "name": "EntityEntity_VM::IsValid", + "category": "Other" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "const EntityId&", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetEntityForward", + "context": "EntityEntity_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEntityForward" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEntityForward is invoked" + }, + "details": { + "name": "EntityEntity_VM::GetEntityForward", + "category": "Other" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "IsActive", + "context": "EntityEntity_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsActive" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsActive is invoked" + }, + "details": { + "name": "EntityEntity_VM::IsActive", + "category": "Other" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "const EntityId&", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetEntityRight", + "context": "EntityEntity_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEntityRight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEntityRight is invoked" + }, + "details": { + "name": "EntityEntity_VM::GetEntityRight", + "category": "Other" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetEntityUp", + "context": "EntityEntity_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEntityUp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEntityUp is invoked" + }, + "details": { + "name": "EntityEntity_VM::GetEntityUp", + "category": "Other" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EntityType.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EntityType.names new file mode 100644 index 0000000000..c536170171 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/EntityType.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "EntityType", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "EntityType" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ExecutionStateInterpretedPerActivation.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ExecutionStateInterpretedPerActivation.names new file mode 100644 index 0000000000..121cf63347 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ExecutionStateInterpretedPerActivation.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "ExecutionStateInterpretedPerActivation", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ExecutionStateInterpretedPerActivation" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ExecutionStateInterpretedPerActivationOnGraphStart.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ExecutionStateInterpretedPerActivationOnGraphStart.names new file mode 100644 index 0000000000..f0138954e0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ExecutionStateInterpretedPerActivationOnGraphStart.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "ExecutionStateInterpretedPerActivationOnGraphStart", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ExecutionStateInterpretedPerActivationOnGraphStart" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ExecutionStateInterpretedPure.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ExecutionStateInterpretedPure.names new file mode 100644 index 0000000000..fdd633d126 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ExecutionStateInterpretedPure.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "ExecutionStateInterpretedPure", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ExecutionStateInterpretedPure" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ExecutionStateInterpretedPureOnGraphStart.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ExecutionStateInterpretedPureOnGraphStart.names new file mode 100644 index 0000000000..c979b46dbd --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ExecutionStateInterpretedPureOnGraphStart.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "ExecutionStateInterpretedPureOnGraphStart", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ExecutionStateInterpretedPureOnGraphStart" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ExecutionStateInterpretedSingleton.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ExecutionStateInterpretedSingleton.names new file mode 100644 index 0000000000..3fa218a880 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ExecutionStateInterpretedSingleton.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "ExecutionStateInterpretedSingleton", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ExecutionStateInterpretedSingleton" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ExportProduct.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ExportProduct.names new file mode 100644 index 0000000000..a8035016f6 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ExportProduct.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "ExportProduct", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ExportProduct" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ExportProductList.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ExportProductList.names new file mode 100644 index 0000000000..e2dac48874 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ExportProductList.names @@ -0,0 +1,112 @@ +{ + "entries": [ + { + "key": "ExportProductList", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ExportProductList" + }, + "methods": [ + { + "key": "AddProduct", + "context": "ExportProductList", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddProduct" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddProduct is invoked" + }, + "details": { + "name": "ExportProductList::AddProduct", + "category": "Other" + }, + "params": [ + { + "typeid": "{1C76A51F-431B-4987-B653-CFCC940D0D0F}", + "details": { + "name": "SceneAPI::Events::ExportProductList&" + } + }, + { + "typeid": "{6054EDCB-4C04-4D96-BF26-704999FFB725}", + "details": { + "name": "SceneAPI::Events::ExportProduct&" + } + } + ] + }, + { + "key": "GetProducts", + "context": "ExportProductList", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetProducts" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetProducts is invoked" + }, + "details": { + "name": "ExportProductList::GetProducts", + "category": "Other" + }, + "params": [ + { + "typeid": "{1C76A51F-431B-4987-B653-CFCC940D0D0F}", + "details": { + "name": "SceneAPI::Events::ExportProductList*" + } + } + ], + "results": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "const AZStd::vector" + } + } + ] + }, + { + "key": "AddDependencyToProduct", + "context": "ExportProductList", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddDependencyToProduct" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddDependencyToProduct is invoked" + }, + "details": { + "name": "ExportProductList::AddDependencyToProduct", + "category": "Other" + }, + "params": [ + { + "typeid": "{1C76A51F-431B-4987-B653-CFCC940D0D0F}", + "details": { + "name": "SceneAPI::Events::ExportProductList*" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + }, + { + "typeid": "{6054EDCB-4C04-4D96-BF26-704999FFB725}", + "details": { + "name": "SceneAPI::Events::ExportProduct&" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ExposureControlConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ExposureControlConfig.names new file mode 100644 index 0000000000..b58c7ff990 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ExposureControlConfig.names @@ -0,0 +1,266 @@ +{ + "entries": [ + { + "key": "ExposureControlConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Exposure Control Config" + }, + "methods": [ + { + "key": "GetautoExposureSpeedUp", + "details": { + "name": "Get Auto Exposure Speed Up" + }, + "params": [ + { + "typeid": "{C6FD75F7-58BA-46CE-8FBA-2D64CB4ECFF9}", + "details": { + "name": "Exposure Control Config" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Auto Exposure Speed Up" + } + } + ] + }, + { + "key": "SetautoExposureSpeedUp", + "details": { + "name": "Set Auto Exposure Speed Up" + }, + "params": [ + { + "typeid": "{C6FD75F7-58BA-46CE-8FBA-2D64CB4ECFF9}", + "details": { + "name": "Exposure Control Config" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Auto Exposure Speed Up" + } + } + ] + }, + { + "key": "GetautoExposureSpeedDown", + "details": { + "name": "Get Auto Exposure Speed Down" + }, + "params": [ + { + "typeid": "{C6FD75F7-58BA-46CE-8FBA-2D64CB4ECFF9}", + "details": { + "name": "Exposure Control Config" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Auto Exposure Speed Down" + } + } + ] + }, + { + "key": "SetautoExposureSpeedDown", + "details": { + "name": "Setauto Exposure Speed Down" + }, + "params": [ + { + "typeid": "{C6FD75F7-58BA-46CE-8FBA-2D64CB4ECFF9}", + "details": { + "name": "Exposure Control Config" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Exposure Speed Down" + } + } + ] + }, + { + "key": "GetautoExposureMax", + "details": { + "name": "Get Auto Exposure Max" + }, + "params": [ + { + "typeid": "{C6FD75F7-58BA-46CE-8FBA-2D64CB4ECFF9}", + "details": { + "name": "Exposure Control Config" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Auto Exposure Max" + } + } + ] + }, + { + "key": "SetautoExposureMax", + "details": { + "name": "Set Auto Exposure Max" + }, + "params": [ + { + "typeid": "{C6FD75F7-58BA-46CE-8FBA-2D64CB4ECFF9}", + "details": { + "name": "Exposure Control Config" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Auto Exposure Max" + } + } + ] + }, + { + "key": "GetautoExposureMin", + "details": { + "name": "Get Auto Exposure Min" + }, + "params": [ + { + "typeid": "{C6FD75F7-58BA-46CE-8FBA-2D64CB4ECFF9}", + "details": { + "name": "Exposure Control Config" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Auto Exposure Min" + } + } + ] + }, + { + "key": "SetautoExposureMin", + "details": { + "name": "Set Auto Exposure Min" + }, + "params": [ + { + "typeid": "{C6FD75F7-58BA-46CE-8FBA-2D64CB4ECFF9}", + "details": { + "name": "Exposure Control Config" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Auto Exposure Min" + } + } + ] + }, + { + "key": "GetexposureControlType", + "details": { + "name": "Get Exposure Control Type" + }, + "params": [ + { + "typeid": "{C6FD75F7-58BA-46CE-8FBA-2D64CB4ECFF9}", + "details": { + "name": "Exposure Control Config" + } + } + ], + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Exposure Control Type" + } + } + ] + }, + { + "key": "SetexposureControlType", + "details": { + "name": "Set Exposure Control Type" + }, + "params": [ + { + "typeid": "{C6FD75F7-58BA-46CE-8FBA-2D64CB4ECFF9}", + "details": { + "name": "Exposure Control Config" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Exposure Control Type" + } + } + ] + }, + { + "key": "GetcompensateValue", + "details": { + "name": "Get Compensate Value" + }, + "params": [ + { + "typeid": "{C6FD75F7-58BA-46CE-8FBA-2D64CB4ECFF9}", + "details": { + "name": "Exposure Control Config" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Compensate Value" + } + } + ] + }, + { + "key": "SetcompensateValue", + "details": { + "name": "Set Compensate Value" + }, + "params": [ + { + "typeid": "{C6FD75F7-58BA-46CE-8FBA-2D64CB4ECFF9}", + "details": { + "name": "Exposure Control Config" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Compensate Value" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/GameplayNotificationId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/GameplayNotificationId.names new file mode 100644 index 0000000000..686f40b859 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/GameplayNotificationId.names @@ -0,0 +1,117 @@ +{ + "entries": [ + { + "key": "GameplayNotificationId", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Gameplay Notification ID", + "category": "Gameplay" + }, + "methods": [ + { + "key": "ToString", + "context": "GameplayNotificationId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToString" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToString is invoked" + }, + "details": { + "name": "GameplayNotificationId::ToString", + "category": "Gameplay" + }, + "params": [ + { + "typeid": "{C5225D36-7068-412D-A46E-DDF79CA1D7FF}", + "details": { + "name": "GameplayNotificationId*" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "String" + } + } + ] + }, + { + "key": "Equal", + "context": "GameplayNotificationId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Equal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Equal is invoked" + }, + "details": { + "name": "GameplayNotificationId::Equal", + "category": "Gameplay" + }, + "params": [ + { + "typeid": "{C5225D36-7068-412D-A46E-DDF79CA1D7FF}", + "details": { + "name": "GameplayNotificationId*" + } + }, + { + "typeid": "{C5225D36-7068-412D-A46E-DDF79CA1D7FF}", + "details": { + "name": "const GameplayNotificationId&" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Boolean" + } + } + ] + }, + { + "key": "Clone", + "context": "GameplayNotificationId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clone" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clone is invoked" + }, + "details": { + "name": "GameplayNotificationId::Clone", + "category": "Gameplay" + }, + "params": [ + { + "typeid": "{C5225D36-7068-412D-A46E-DDF79CA1D7FF}", + "details": { + "name": "GameplayNotificationId*" + } + } + ], + "results": [ + { + "typeid": "{C5225D36-7068-412D-A46E-DDF79CA1D7FF}", + "details": { + "name": "GameplayNotificationID" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/GradientSampleParams.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/GradientSampleParams.names new file mode 100644 index 0000000000..233f8b4ba9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/GradientSampleParams.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "GradientSampleParams", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "GradientSampleParams" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/GradientSampler.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/GradientSampler.names new file mode 100644 index 0000000000..ebf2a37da5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/GradientSampler.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "GradientSampler", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "GradientSampler" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/GradientSurfaceDataComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/GradientSurfaceDataComponent.names new file mode 100644 index 0000000000..16b8c9437d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/GradientSurfaceDataComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "GradientSurfaceDataComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "GradientSurfaceDataComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/GradientSurfaceDataConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/GradientSurfaceDataConfig.names new file mode 100644 index 0000000000..c176bcd603 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/GradientSurfaceDataConfig.names @@ -0,0 +1,144 @@ +{ + "entries": [ + { + "key": "GradientSurfaceDataConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "GradientSurfaceDataConfig" + }, + "methods": [ + { + "key": "GetNumTags", + "context": "GradientSurfaceDataConfig", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNumTags" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNumTags is invoked" + }, + "details": { + "name": "GradientSurfaceDataConfig::GetNumTags", + "category": "Other" + }, + "params": [ + { + "typeid": "{34516BA4-2B13-4A84-A46B-01E1980CA778}", + "details": { + "name": "GradientSurfaceDataConfig*" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetTag", + "context": "GradientSurfaceDataConfig", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTag is invoked" + }, + "details": { + "name": "GradientSurfaceDataConfig::GetTag", + "category": "Other" + }, + "params": [ + { + "typeid": "{34516BA4-2B13-4A84-A46B-01E1980CA778}", + "details": { + "name": "GradientSurfaceDataConfig*" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ], + "results": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + }, + { + "key": "RemoveTag", + "context": "GradientSurfaceDataConfig", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RemoveTag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RemoveTag is invoked" + }, + "details": { + "name": "GradientSurfaceDataConfig::RemoveTag", + "category": "Other" + }, + "params": [ + { + "typeid": "{34516BA4-2B13-4A84-A46B-01E1980CA778}", + "details": { + "name": "GradientSurfaceDataConfig*" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "AddTag", + "context": "GradientSurfaceDataConfig", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddTag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddTag is invoked" + }, + "details": { + "name": "GradientSurfaceDataConfig::AddTag", + "category": "Other" + }, + "params": [ + { + "typeid": "{34516BA4-2B13-4A84-A46B-01E1980CA778}", + "details": { + "name": "GradientSurfaceDataConfig*" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/GradientTransformComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/GradientTransformComponent.names new file mode 100644 index 0000000000..007c0f28a3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/GradientTransformComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "GradientTransformComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "GradientTransformComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/GradientTransformConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/GradientTransformConfig.names new file mode 100644 index 0000000000..8686f131d6 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/GradientTransformConfig.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "GradientTransformConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "GradientTransformConfig" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/GraphModelSlotId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/GraphModelSlotId.names new file mode 100644 index 0000000000..67c5edb8e7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/GraphModelSlotId.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "GraphModelSlotId", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "GraphModelSlotId" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/IAnimationData.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/IAnimationData.names new file mode 100644 index 0000000000..2dc1fd3ce8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/IAnimationData.names @@ -0,0 +1,116 @@ +{ + "entries": [ + { + "key": "IAnimationData", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "IAnimationData" + }, + "methods": [ + { + "key": "GetKeyFrameCount", + "context": "IAnimationData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeyFrameCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeyFrameCount is invoked" + }, + "details": { + "name": "IAnimationData::GetKeyFrameCount", + "category": "Other" + }, + "params": [ + { + "typeid": "{62B0571C-6EFF-42FA-902A-85AC744E04F2}", + "details": { + "name": "IAnimationData*" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetKeyFrame", + "context": "IAnimationData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeyFrame" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeyFrame is invoked" + }, + "details": { + "name": "IAnimationData::GetKeyFrame", + "category": "Other" + }, + "params": [ + { + "typeid": "{62B0571C-6EFF-42FA-902A-85AC744E04F2}", + "details": { + "name": "IAnimationData*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "const Matrix3x4&" + } + } + ] + }, + { + "key": "GetTimeStepBetweenFrames", + "context": "IAnimationData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTimeStepBetweenFrames" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTimeStepBetweenFrames is invoked" + }, + "details": { + "name": "IAnimationData::GetTimeStepBetweenFrames", + "category": "Other" + }, + "params": [ + { + "typeid": "{62B0571C-6EFF-42FA-902A-85AC744E04F2}", + "details": { + "name": "IAnimationData*" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/IBlendShapeAnimationData.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/IBlendShapeAnimationData.names new file mode 100644 index 0000000000..a326b0b586 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/IBlendShapeAnimationData.names @@ -0,0 +1,148 @@ +{ + "entries": [ + { + "key": "IBlendShapeAnimationData", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "IBlendShapeAnimationData" + }, + "methods": [ + { + "key": "GetBlendShapeName", + "context": "IBlendShapeAnimationData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetBlendShapeName" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetBlendShapeName is invoked" + }, + "details": { + "name": "IBlendShapeAnimationData::GetBlendShapeName", + "category": "Other" + }, + "params": [ + { + "typeid": "{CD2004EB-8B88-42B2-A539-079A557C98C9}", + "details": { + "name": "IBlendShapeAnimationData*" + } + } + ], + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + }, + { + "key": "GetKeyFrameCount", + "context": "IBlendShapeAnimationData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeyFrameCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeyFrameCount is invoked" + }, + "details": { + "name": "IBlendShapeAnimationData::GetKeyFrameCount", + "category": "Other" + }, + "params": [ + { + "typeid": "{CD2004EB-8B88-42B2-A539-079A557C98C9}", + "details": { + "name": "IBlendShapeAnimationData*" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetKeyFrame", + "context": "IBlendShapeAnimationData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeyFrame" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeyFrame is invoked" + }, + "details": { + "name": "IBlendShapeAnimationData::GetKeyFrame", + "category": "Other" + }, + "params": [ + { + "typeid": "{CD2004EB-8B88-42B2-A539-079A557C98C9}", + "details": { + "name": "IBlendShapeAnimationData*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "GetTimeStepBetweenFrames", + "context": "IBlendShapeAnimationData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTimeStepBetweenFrames" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTimeStepBetweenFrames is invoked" + }, + "details": { + "name": "IBlendShapeAnimationData::GetTimeStepBetweenFrames", + "category": "Other" + }, + "params": [ + { + "typeid": "{CD2004EB-8B88-42B2-A539-079A557C98C9}", + "details": { + "name": "IBlendShapeAnimationData*" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/IBlendShapeData.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/IBlendShapeData.names new file mode 100644 index 0000000000..5c4f91be1a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/IBlendShapeData.names @@ -0,0 +1,344 @@ +{ + "entries": [ + { + "key": "IBlendShapeData", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "IBlendShapeData" + }, + "methods": [ + { + "key": "GetNormal", + "context": "IBlendShapeData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNormal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNormal is invoked" + }, + "details": { + "name": "IBlendShapeData::GetNormal", + "category": "Other" + }, + "params": [ + { + "typeid": "{55E7384D-9333-4C51-BC91-E90CAC2C30E2}", + "details": { + "name": "IBlendShapeData*" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + } + ] + }, + { + "key": "GetFaceVertexIndex", + "context": "IBlendShapeData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetFaceVertexIndex" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetFaceVertexIndex is invoked" + }, + "details": { + "name": "IBlendShapeData::GetFaceVertexIndex", + "category": "Other" + }, + "params": [ + { + "typeid": "{55E7384D-9333-4C51-BC91-E90CAC2C30E2}", + "details": { + "name": "IBlendShapeData*" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ], + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "GetFaceInfo", + "context": "IBlendShapeData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetFaceInfo" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetFaceInfo is invoked" + }, + "details": { + "name": "IBlendShapeData::GetFaceInfo", + "category": "Other" + }, + "params": [ + { + "typeid": "{55E7384D-9333-4C51-BC91-E90CAC2C30E2}", + "details": { + "name": "IBlendShapeData*" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ], + "results": [ + { + "typeid": "{C972EC9A-3A5C-47CD-9A92-ECB4C0C0451C}", + "details": { + "name": "const SceneAPI::DataTypes::IBlendShapeData::Face&" + } + } + ] + }, + { + "key": "GetPosition", + "context": "IBlendShapeData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPosition" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPosition is invoked" + }, + "details": { + "name": "IBlendShapeData::GetPosition", + "category": "Other" + }, + "params": [ + { + "typeid": "{55E7384D-9333-4C51-BC91-E90CAC2C30E2}", + "details": { + "name": "IBlendShapeData*" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + } + ] + }, + { + "key": "GetUsedPointIndexForControlPoint", + "context": "IBlendShapeData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetUsedPointIndexForControlPoint" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetUsedPointIndexForControlPoint is invoked" + }, + "details": { + "name": "IBlendShapeData::GetUsedPointIndexForControlPoint", + "category": "Other" + }, + "params": [ + { + "typeid": "{55E7384D-9333-4C51-BC91-E90CAC2C30E2}", + "details": { + "name": "IBlendShapeData*" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetVertexCount", + "context": "IBlendShapeData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetVertexCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetVertexCount is invoked" + }, + "details": { + "name": "IBlendShapeData::GetVertexCount", + "category": "Other" + }, + "params": [ + { + "typeid": "{55E7384D-9333-4C51-BC91-E90CAC2C30E2}", + "details": { + "name": "IBlendShapeData*" + } + } + ], + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "GetFaceCount", + "context": "IBlendShapeData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetFaceCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetFaceCount is invoked" + }, + "details": { + "name": "IBlendShapeData::GetFaceCount", + "category": "Other" + }, + "params": [ + { + "typeid": "{55E7384D-9333-4C51-BC91-E90CAC2C30E2}", + "details": { + "name": "IBlendShapeData*" + } + } + ], + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "GetControlPointIndex", + "context": "IBlendShapeData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetControlPointIndex" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetControlPointIndex is invoked" + }, + "details": { + "name": "IBlendShapeData::GetControlPointIndex", + "category": "Other" + }, + "params": [ + { + "typeid": "{55E7384D-9333-4C51-BC91-E90CAC2C30E2}", + "details": { + "name": "IBlendShapeData*" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetUsedControlPointCount", + "context": "IBlendShapeData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetUsedControlPointCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetUsedControlPointCount is invoked" + }, + "details": { + "name": "IBlendShapeData::GetUsedControlPointCount", + "category": "Other" + }, + "params": [ + { + "typeid": "{55E7384D-9333-4C51-BC91-E90CAC2C30E2}", + "details": { + "name": "IBlendShapeData*" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/IGraphObject.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/IGraphObject.names new file mode 100644 index 0000000000..a330f6bdae --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/IGraphObject.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "IGraphObject", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "IGraphObject" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/IMeshData.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/IMeshData.names new file mode 100644 index 0000000000..608c225f3d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/IMeshData.names @@ -0,0 +1,78 @@ +{ + "entries": [ + { + "key": "IMeshData", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "IMeshData" + }, + "methods": [ + { + "key": "GetUnitSizeInMeters", + "context": "IMeshData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetUnitSizeInMeters" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetUnitSizeInMeters is invoked" + }, + "details": { + "name": "IMeshData::GetUnitSizeInMeters", + "category": "Other" + }, + "params": [ + { + "typeid": "{B94A59C0-F3A5-40A0-B541-7E36B6576C4A}", + "details": { + "name": "IMeshData*" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetOriginalUnitSizeInMeters", + "context": "IMeshData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetOriginalUnitSizeInMeters" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetOriginalUnitSizeInMeters is invoked" + }, + "details": { + "name": "IMeshData::GetOriginalUnitSizeInMeters", + "category": "Other" + }, + "params": [ + { + "typeid": "{B94A59C0-F3A5-40A0-B541-7E36B6576C4A}", + "details": { + "name": "IMeshData*" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ImageGradientComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ImageGradientComponent.names new file mode 100644 index 0000000000..186eee8f38 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ImageGradientComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "ImageGradientComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ImageGradientComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ImageGradientConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ImageGradientConfig.names new file mode 100644 index 0000000000..d774b0d054 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ImageGradientConfig.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "ImageGradientConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ImageGradientConfig" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InputDeviceGamepad.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InputDeviceGamepad.names new file mode 100644 index 0000000000..69ce4ef1ce --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InputDeviceGamepad.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "InputDeviceGamepad", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "InputDeviceGamepad" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InputDeviceKeyboard.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InputDeviceKeyboard.names new file mode 100644 index 0000000000..f041229250 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InputDeviceKeyboard.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "InputDeviceKeyboard", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "InputDeviceKeyboard" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InputDeviceMotion.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InputDeviceMotion.names new file mode 100644 index 0000000000..92421945e7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InputDeviceMotion.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "InputDeviceMotion", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "InputDeviceMotion" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InputDeviceMouse.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InputDeviceMouse.names new file mode 100644 index 0000000000..762d2fe576 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InputDeviceMouse.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "InputDeviceMouse", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "InputDeviceMouse" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InputDeviceTouch.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InputDeviceTouch.names new file mode 100644 index 0000000000..082e6e65cf --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InputDeviceTouch.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "InputDeviceTouch", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "InputDeviceTouch" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InputDeviceVirtualKeyboard.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InputDeviceVirtualKeyboard.names new file mode 100644 index 0000000000..770640e7f7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InputDeviceVirtualKeyboard.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "InputDeviceVirtualKeyboard", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "InputDeviceVirtualKeyboard" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InputEventNotificationId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InputEventNotificationId.names new file mode 100644 index 0000000000..e964bd2518 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InputEventNotificationId.names @@ -0,0 +1,157 @@ +{ + "entries": [ + { + "key": "InputEventNotificationId", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Input Event Notification ID", + "category": "Gameplay/Input" + }, + "methods": [ + { + "key": "ToString", + "context": "InputEventNotificationId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToString" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToString is invoked" + }, + "details": { + "name": "InputEventNotificationId::ToString", + "category": "Gameplay/Input" + }, + "params": [ + { + "typeid": "{9E0F0801-348B-4FF9-AF9B-858D59404968}", + "details": { + "name": "InputEventNotificationId*" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "String" + } + } + ] + }, + { + "key": "Equal", + "context": "InputEventNotificationId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Equal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Equal is invoked" + }, + "details": { + "name": "InputEventNotificationId::Equal", + "category": "Gameplay/Input" + }, + "params": [ + { + "typeid": "{9E0F0801-348B-4FF9-AF9B-858D59404968}", + "details": { + "name": "InputEventNotificationId*" + } + }, + { + "typeid": "{9E0F0801-348B-4FF9-AF9B-858D59404968}", + "details": { + "name": "const InputEventNotificationId&" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Boolean" + } + } + ] + }, + { + "key": "Clone", + "context": "InputEventNotificationId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clone" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clone is invoked" + }, + "details": { + "name": "InputEventNotificationId::Clone", + "category": "Gameplay/Input" + }, + "params": [ + { + "typeid": "{9E0F0801-348B-4FF9-AF9B-858D59404968}", + "details": { + "name": "InputEventNotificationId*" + } + } + ], + "results": [ + { + "typeid": "{9E0F0801-348B-4FF9-AF9B-858D59404968}", + "details": { + "name": "InputEventNotificationID" + } + } + ] + }, + { + "key": "CreateInputEventNotificationId", + "context": "InputEventNotificationId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CreateInputEventNotificationId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CreateInputEventNotificationId is invoked" + }, + "details": { + "name": "InputEventNotificationId::CreateInputEventNotificationId", + "category": "Gameplay/Input" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "localUserId", + "tooltip": "Local user ID (0-3, or -1 for all users)" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "actionName", + "tooltip": "The name of the Input event action" + } + } + ], + "results": [ + { + "typeid": "{9E0F0801-348B-4FF9-AF9B-858D59404968}", + "details": { + "name": "InputEventNotificationID" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InvertGradientComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InvertGradientComponent.names new file mode 100644 index 0000000000..8e72ef70d6 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InvertGradientComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "InvertGradientComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "InvertGradientComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InvertGradientConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InvertGradientConfig.names new file mode 100644 index 0000000000..21840537c4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/InvertGradientConfig.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "InvertGradientConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "InvertGradientConfig" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/LevelsGradientComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/LevelsGradientComponent.names new file mode 100644 index 0000000000..08c34aea98 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/LevelsGradientComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "LevelsGradientComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "LevelsGradientComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/LevelsGradientConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/LevelsGradientConfig.names new file mode 100644 index 0000000000..badb39ba8e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/LevelsGradientConfig.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "LevelsGradientConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "LevelsGradientConfig" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/LightConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/LightConfig.names new file mode 100644 index 0000000000..a0e6ba654c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/LightConfig.names @@ -0,0 +1,350 @@ +{ + "entries": [ + { + "key": "LightConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Light Config" + }, + "methods": [ + { + "key": "GetshadowmapSize", + "details": { + "name": "Get Shadowmap Size" + }, + "params": [ + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "Light Config" + } + } + ], + "results": [ + { + "typeid": "{3EC1CE83-483D-41FD-9909-D22B03E56F4E}", + "details": { + "name": "Shadowmap Size" + } + } + ] + }, + { + "key": "SetshadowmapSize", + "details": { + "name": "Set Shadowmap Size" + }, + "params": [ + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "Light Config" + } + }, + { + "typeid": "{3EC1CE83-483D-41FD-9909-D22B03E56F4E}", + "details": { + "name": "Shadowmap Size" + } + } + ] + }, + { + "key": "GetshadowCascadeCount", + "details": { + "name": "Get Shadow Cascade Count" + }, + "params": [ + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "Light Config" + } + } + ], + "results": [ + { + "typeid": "{ECA0B403-C4F8-4B86-95FC-81688D046E40}", + "details": { + "name": "Shadow Cascade Count" + } + } + ] + }, + { + "key": "SetshadowCascadeCount", + "details": { + "name": "Set Shadow Cascade Count" + }, + "params": [ + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "Light Config" + } + }, + { + "typeid": "{ECA0B403-C4F8-4B86-95FC-81688D046E40}", + "details": { + "name": "Shadow Cascade Count" + } + } + ] + }, + { + "key": "GetenableShadowDebugColoring", + "details": { + "name": "Get Enable Shadow Debug Coloring" + }, + "params": [ + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "Light Config" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enable" + } + } + ] + }, + { + "key": "SetenableShadowDebugColoring", + "details": { + "name": "Set Enable Shadow Debug Coloring" + }, + "params": [ + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "Light Config" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enable" + } + } + ] + }, + { + "key": "Getintensity", + "details": { + "name": "Get Intensity" + }, + "params": [ + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "Light Config" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Intensity" + } + } + ] + }, + { + "key": "Setintensity", + "details": { + "name": "Set Intensity" + }, + "params": [ + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "Light Config" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Intensity" + } + } + ] + }, + { + "key": "GetshadowRatioLogarithmUniform", + "details": { + "name": "Get Shadow Ratio Logarithm Uniform" + }, + "params": [ + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "Light Config" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Shadow Ratio Logarithm Uniform" + } + } + ] + }, + { + "key": "SetshadowRatioLogarithmUniform", + "details": { + "name": "Set Shadow Ratio Logarithm Uniform" + }, + "params": [ + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "Light Config" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Shadow Ratio Logarithm Uniform" + } + } + ] + }, + { + "key": "Getcolor", + "details": { + "name": "Get Color" + }, + "params": [ + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "Light Config" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "Setcolor", + "details": { + "name": "Set Color" + }, + "params": [ + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "Light Config" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "Getdirection", + "details": { + "name": "Get Direction" + }, + "params": [ + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "Light Config" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Direction" + } + } + ] + }, + { + "key": "Setdirection", + "details": { + "name": "Set Direction" + }, + "params": [ + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "Light Config" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Direction" + } + } + ] + }, + { + "key": "GetshadowFarClipDistance", + "details": { + "name": "Get Shadow Far Clip Distance" + }, + "params": [ + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "Light Config" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Shadow Far Clip Distance" + } + } + ] + }, + { + "key": "SetshadowFarClipDistance", + "details": { + "name": "Set Shadow Far Clip Distance" + }, + "params": [ + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "Light Config" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Shadow Far Clip Distance" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/LightingPreset.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/LightingPreset.names new file mode 100644 index 0000000000..880ca19784 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/LightingPreset.names @@ -0,0 +1,434 @@ +{ + "entries": [ + { + "key": "LightingPreset", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Lighting Preset" + }, + "methods": [ + { + "key": "GetshadowCatcherOpacity", + "details": { + "name": "Get Shadow Catcher Opacity" + }, + "params": [ + { + "typeid": "{6EEACBC0-2D97-414C-8E87-088E7BA231A9}", + "details": { + "name": "Lighting Preset" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Shadow Catcher Opacity" + } + } + ] + }, + { + "key": "SetshadowCatcherOpacity", + "details": { + "name": "Set Shadow Catcher Opacity" + }, + "params": [ + { + "typeid": "{6EEACBC0-2D97-414C-8E87-088E7BA231A9}", + "details": { + "name": "Lighting Preset" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Shadow Catcher Opacity" + } + } + ] + }, + { + "key": "GetskyboxExposure", + "details": { + "name": "Get Skybox Exposure" + }, + "params": [ + { + "typeid": "{6EEACBC0-2D97-414C-8E87-088E7BA231A9}", + "details": { + "name": "Lighting Preset" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Skybox Exposure" + } + } + ] + }, + { + "key": "SetskyboxExposure", + "details": { + "name": "Set Skybox Exposure" + }, + "params": [ + { + "typeid": "{6EEACBC0-2D97-414C-8E87-088E7BA231A9}", + "details": { + "name": "Lighting Preset" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Skybox Exposure" + } + } + ] + }, + { + "key": "Getlights", + "details": { + "name": "Get Lights" + }, + "params": [ + { + "typeid": "{6EEACBC0-2D97-414C-8E87-088E7BA231A9}", + "details": { + "name": "Lighting Preset" + } + } + ], + "results": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "Light Configs" + } + } + ] + }, + { + "key": "Setlights", + "details": { + "name": "Set Lights" + }, + "params": [ + { + "typeid": "{6EEACBC0-2D97-414C-8E87-088E7BA231A9}", + "details": { + "name": "Lighting Preset" + } + }, + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "Light Configs" + } + } + ] + }, + { + "key": "GetiblExposure", + "details": { + "name": "Get IBL Exposure" + }, + "params": [ + { + "typeid": "{6EEACBC0-2D97-414C-8E87-088E7BA231A9}", + "details": { + "name": "Lighting Preset" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "IBL Exposure" + } + } + ] + }, + { + "key": "SetiblExposure", + "details": { + "name": "Set IBL Exposure" + }, + "params": [ + { + "typeid": "{6EEACBC0-2D97-414C-8E87-088E7BA231A9}", + "details": { + "name": "Lighting Preset" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "IBL Exposure" + } + } + ] + }, + { + "key": "GetskyboxImageAsset", + "details": { + "name": "Get Skybox Image Asset" + }, + "params": [ + { + "typeid": "{6EEACBC0-2D97-414C-8E87-088E7BA231A9}", + "details": { + "name": "Lighting Preset" + } + } + ], + "results": [ + { + "typeid": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "details": { + "name": "Skybox Image Asset" + } + } + ] + }, + { + "key": "SetskyboxImageAsset", + "details": { + "name": "Set Skybox Image Asset" + }, + "params": [ + { + "typeid": "{6EEACBC0-2D97-414C-8E87-088E7BA231A9}", + "details": { + "name": "Lighting Preset" + } + }, + { + "typeid": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "details": { + "name": "Skybox Image Asset" + } + } + ] + }, + { + "key": "GetiblSpecularImageAsset", + "details": { + "name": "Get IBL Specular Image Asset" + }, + "params": [ + { + "typeid": "{6EEACBC0-2D97-414C-8E87-088E7BA231A9}", + "details": { + "name": "Lighting Preset" + } + } + ], + "results": [ + { + "typeid": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "details": { + "name": "IBL Specular Image Asset" + } + } + ] + }, + { + "key": "SetiblSpecularImageAsset", + "details": { + "name": "Set IBL Specular Image Asset" + }, + "params": [ + { + "typeid": "{6EEACBC0-2D97-414C-8E87-088E7BA231A9}", + "details": { + "name": "Lighting Preset" + } + }, + { + "typeid": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "details": { + "name": "IBL Specular Image Asset" + } + } + ] + }, + { + "key": "GetdisplayName", + "details": { + "name": "Get Display Name" + }, + "params": [ + { + "typeid": "{6EEACBC0-2D97-414C-8E87-088E7BA231A9}", + "details": { + "name": "Lighting Preset" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Display Name" + } + } + ] + }, + { + "key": "SetdisplayName", + "details": { + "name": "Set Display Name" + }, + "params": [ + { + "typeid": "{6EEACBC0-2D97-414C-8E87-088E7BA231A9}", + "details": { + "name": "Lighting Preset" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Display Name" + } + } + ] + }, + { + "key": "GetalternateSkyboxImageAsset", + "details": { + "name": "Get Alternate Skybox Image Asset" + }, + "params": [ + { + "typeid": "{6EEACBC0-2D97-414C-8E87-088E7BA231A9}", + "details": { + "name": "Lighting Preset" + } + } + ], + "results": [ + { + "typeid": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "details": { + "name": "Alternate Skybox Image Asset" + } + } + ] + }, + { + "key": "SetalternateSkyboxImageAsset", + "details": { + "name": "Set Alternate Skybox Image Asset" + }, + "params": [ + { + "typeid": "{6EEACBC0-2D97-414C-8E87-088E7BA231A9}", + "details": { + "name": "Lighting Preset" + } + }, + { + "typeid": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "details": { + "name": "Alternate Skybox Image Asset" + } + } + ] + }, + { + "key": "GetiblDiffuseImageAsset", + "details": { + "name": "Get IBL Diffuse Image Asset" + }, + "params": [ + { + "typeid": "{6EEACBC0-2D97-414C-8E87-088E7BA231A9}", + "details": { + "name": "Lighting Preset" + } + } + ], + "results": [ + { + "typeid": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "details": { + "name": "IBL Diffuse Image Asset" + } + } + ] + }, + { + "key": "SetiblDiffuseImageAsset", + "details": { + "name": "Set IBL Diffuse Image Asset" + }, + "params": [ + { + "typeid": "{6EEACBC0-2D97-414C-8E87-088E7BA231A9}", + "details": { + "name": "Lighting Preset" + } + }, + { + "typeid": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "details": { + "name": "IBL Diffuse Image Asset" + } + } + ] + }, + { + "key": "Getexposure", + "details": { + "name": "Get Exposure" + }, + "params": [ + { + "typeid": "{6EEACBC0-2D97-414C-8E87-088E7BA231A9}", + "details": { + "name": "Lighting Preset" + } + } + ], + "results": [ + { + "typeid": "{C6FD75F7-58BA-46CE-8FBA-2D64CB4ECFF9}", + "details": { + "name": "Exposure Control Config" + } + } + ] + }, + { + "key": "Setexposure", + "details": { + "name": "Set Exposure" + }, + "params": [ + { + "typeid": "{6EEACBC0-2D97-414C-8E87-088E7BA231A9}", + "details": { + "name": "Lighting Preset" + } + }, + { + "typeid": "{C6FD75F7-58BA-46CE-8FBA-2D64CB4ECFF9}", + "details": { + "name": "Exposure Control Config" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MaterialAssignment.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MaterialAssignment.names new file mode 100644 index 0000000000..a77e2615b8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MaterialAssignment.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "MaterialAssignment", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MaterialAssignment" + }, + "methods": [ + { + "key": "ToString", + "context": "MaterialAssignment", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToString" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToString is invoked" + }, + "details": { + "name": "MaterialAssignment::ToString", + "category": "Other" + }, + "params": [ + { + "typeid": "{C66E5214-A24B-4722-B7F0-5991E6F8F163}", + "details": { + "name": "AZ::Render::MaterialAssignment*" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MaterialAssignmentId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MaterialAssignmentId.names new file mode 100644 index 0000000000..6a5c0d5b60 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MaterialAssignmentId.names @@ -0,0 +1,206 @@ +{ + "entries": [ + { + "key": "MaterialAssignmentId", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MaterialAssignmentId" + }, + "methods": [ + { + "key": "ToString", + "context": "MaterialAssignmentId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToString" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToString is invoked" + }, + "details": { + "name": "MaterialAssignmentId::ToString", + "category": "Other" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId*" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + }, + { + "key": "IsAssetOnly", + "context": "MaterialAssignmentId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsAssetOnly" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsAssetOnly is invoked" + }, + "details": { + "name": "MaterialAssignmentId::IsAssetOnly", + "category": "Other" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "IsSlotIdOnly", + "context": "MaterialAssignmentId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsSlotIdOnly" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsSlotIdOnly is invoked" + }, + "details": { + "name": "MaterialAssignmentId::IsSlotIdOnly", + "category": "Other" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "IsLodAndSlotId", + "context": "MaterialAssignmentId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsLodAndSlotId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsLodAndSlotId is invoked" + }, + "details": { + "name": "MaterialAssignmentId::IsLodAndSlotId", + "category": "Other" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "IsDefault", + "context": "MaterialAssignmentId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsDefault" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsDefault is invoked" + }, + "details": { + "name": "MaterialAssignmentId::IsDefault", + "category": "Other" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "IsLodAndAsset", + "context": "MaterialAssignmentId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsLodAndAsset" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsLodAndAsset is invoked" + }, + "details": { + "name": "MaterialAssignmentId::IsLodAndAsset", + "category": "Other" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MaterialComponentConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MaterialComponentConfig.names new file mode 100644 index 0000000000..66798ef901 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MaterialComponentConfig.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "MaterialComponentConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MaterialComponentConfig" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MaterialData.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MaterialData.names new file mode 100644 index 0000000000..fc1aaa0e0b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MaterialData.names @@ -0,0 +1,614 @@ +{ + "entries": [ + { + "key": "MaterialData", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MaterialData" + }, + "methods": [ + { + "key": "GetBaseColor", + "context": "MaterialData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetBaseColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetBaseColor is invoked" + }, + "details": { + "name": "MaterialData::GetBaseColor", + "category": "Other" + }, + "params": [ + { + "typeid": "{F2EE1768-183B-483E-9778-CB3D3D0DA68A}", + "details": { + "name": "const MaterialData&", + "tooltip": "Material configuration for the parent." + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetUseRoughnessMap", + "context": "MaterialData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetUseRoughnessMap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetUseRoughnessMap is invoked" + }, + "details": { + "name": "MaterialData::GetUseRoughnessMap", + "category": "Other" + }, + "params": [ + { + "typeid": "{F2EE1768-183B-483E-9778-CB3D3D0DA68A}", + "details": { + "name": "const MaterialData&", + "tooltip": "Material configuration for the parent." + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetShininess", + "context": "MaterialData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetShininess" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetShininess is invoked" + }, + "details": { + "name": "MaterialData::GetShininess", + "category": "Other" + }, + "params": [ + { + "typeid": "{F2EE1768-183B-483E-9778-CB3D3D0DA68A}", + "details": { + "name": "MaterialData*", + "tooltip": "Material configuration for the parent." + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetUseEmissiveMap", + "context": "MaterialData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetUseEmissiveMap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetUseEmissiveMap is invoked" + }, + "details": { + "name": "MaterialData::GetUseEmissiveMap", + "category": "Other" + }, + "params": [ + { + "typeid": "{F2EE1768-183B-483E-9778-CB3D3D0DA68A}", + "details": { + "name": "const MaterialData&", + "tooltip": "Material configuration for the parent." + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetEmissiveColor", + "context": "MaterialData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEmissiveColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEmissiveColor is invoked" + }, + "details": { + "name": "MaterialData::GetEmissiveColor", + "category": "Other" + }, + "params": [ + { + "typeid": "{F2EE1768-183B-483E-9778-CB3D3D0DA68A}", + "details": { + "name": "MaterialData*", + "tooltip": "Material configuration for the parent." + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + } + ] + }, + { + "key": "GetSpecularColor", + "context": "MaterialData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSpecularColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSpecularColor is invoked" + }, + "details": { + "name": "MaterialData::GetSpecularColor", + "category": "Other" + }, + "params": [ + { + "typeid": "{F2EE1768-183B-483E-9778-CB3D3D0DA68A}", + "details": { + "name": "MaterialData*", + "tooltip": "Material configuration for the parent." + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + } + ] + }, + { + "key": "GetUniqueId", + "context": "MaterialData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetUniqueId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetUniqueId is invoked" + }, + "details": { + "name": "MaterialData::GetUniqueId", + "category": "Other" + }, + "params": [ + { + "typeid": "{F2EE1768-183B-483E-9778-CB3D3D0DA68A}", + "details": { + "name": "MaterialData*", + "tooltip": "Material configuration for the parent." + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetDiffuseColor", + "context": "MaterialData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetDiffuseColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetDiffuseColor is invoked" + }, + "details": { + "name": "MaterialData::GetDiffuseColor", + "category": "Other" + }, + "params": [ + { + "typeid": "{F2EE1768-183B-483E-9778-CB3D3D0DA68A}", + "details": { + "name": "MaterialData*", + "tooltip": "Material configuration for the parent." + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + } + ] + }, + { + "key": "GetEmissiveIntensity", + "context": "MaterialData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEmissiveIntensity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEmissiveIntensity is invoked" + }, + "details": { + "name": "MaterialData::GetEmissiveIntensity", + "category": "Other" + }, + "params": [ + { + "typeid": "{F2EE1768-183B-483E-9778-CB3D3D0DA68A}", + "details": { + "name": "const MaterialData&", + "tooltip": "Material configuration for the parent." + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetMaterialName", + "context": "MaterialData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetMaterialName" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetMaterialName is invoked" + }, + "details": { + "name": "MaterialData::GetMaterialName", + "category": "Other" + }, + "params": [ + { + "typeid": "{F2EE1768-183B-483E-9778-CB3D3D0DA68A}", + "details": { + "name": "MaterialData*", + "tooltip": "Material configuration for the parent." + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + } + ] + }, + { + "key": "GetUseMetallicMap", + "context": "MaterialData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetUseMetallicMap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetUseMetallicMap is invoked" + }, + "details": { + "name": "MaterialData::GetUseMetallicMap", + "category": "Other" + }, + "params": [ + { + "typeid": "{F2EE1768-183B-483E-9778-CB3D3D0DA68A}", + "details": { + "name": "const MaterialData&", + "tooltip": "Material configuration for the parent." + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetMetallicFactor", + "context": "MaterialData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetMetallicFactor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetMetallicFactor is invoked" + }, + "details": { + "name": "MaterialData::GetMetallicFactor", + "category": "Other" + }, + "params": [ + { + "typeid": "{F2EE1768-183B-483E-9778-CB3D3D0DA68A}", + "details": { + "name": "const MaterialData&", + "tooltip": "Material configuration for the parent." + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetRoughnessFactor", + "context": "MaterialData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetRoughnessFactor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetRoughnessFactor is invoked" + }, + "details": { + "name": "MaterialData::GetRoughnessFactor", + "category": "Other" + }, + "params": [ + { + "typeid": "{F2EE1768-183B-483E-9778-CB3D3D0DA68A}", + "details": { + "name": "const MaterialData&", + "tooltip": "Material configuration for the parent." + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetUseAOMap", + "context": "MaterialData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetUseAOMap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetUseAOMap is invoked" + }, + "details": { + "name": "MaterialData::GetUseAOMap", + "category": "Other" + }, + "params": [ + { + "typeid": "{F2EE1768-183B-483E-9778-CB3D3D0DA68A}", + "details": { + "name": "const MaterialData&", + "tooltip": "Material configuration for the parent." + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetTexture", + "context": "MaterialData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTexture" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTexture is invoked" + }, + "details": { + "name": "MaterialData::GetTexture", + "category": "Other" + }, + "params": [ + { + "typeid": "{F2EE1768-183B-483E-9778-CB3D3D0DA68A}", + "details": { + "name": "MaterialData*", + "tooltip": "Material configuration for the parent." + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + } + ] + }, + { + "key": "IsNoDraw", + "context": "MaterialData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsNoDraw" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsNoDraw is invoked" + }, + "details": { + "name": "MaterialData::IsNoDraw", + "category": "Other" + }, + "params": [ + { + "typeid": "{F2EE1768-183B-483E-9778-CB3D3D0DA68A}", + "details": { + "name": "MaterialData*", + "tooltip": "Material configuration for the parent." + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetOpacity", + "context": "MaterialData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetOpacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetOpacity is invoked" + }, + "details": { + "name": "MaterialData::GetOpacity", + "category": "Other" + }, + "params": [ + { + "typeid": "{F2EE1768-183B-483E-9778-CB3D3D0DA68A}", + "details": { + "name": "MaterialData*", + "tooltip": "Material configuration for the parent." + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetUseColorMap", + "context": "MaterialData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetUseColorMap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetUseColorMap is invoked" + }, + "details": { + "name": "MaterialData::GetUseColorMap", + "category": "Other" + }, + "params": [ + { + "typeid": "{F2EE1768-183B-483E-9778-CB3D3D0DA68A}", + "details": { + "name": "const MaterialData&", + "tooltip": "Material configuration for the parent." + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Math.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Math.names new file mode 100644 index 0000000000..546608f0b0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Math.names @@ -0,0 +1,966 @@ +{ + "entries": [ + { + "key": "Math", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Functions", + "category": "Math" + }, + "methods": [ + { + "key": "DivideByNumber", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DivideByNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DivideByNumber is invoked" + }, + "details": { + "name": "Divide By Number", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "X" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Y" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "Round", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Round" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Round is invoked" + }, + "details": { + "name": "Round", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "Sqrt", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Sqrt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Sqrt is invoked" + }, + "details": { + "name": "Sqrt", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "Mod", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Mod" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Mod is invoked" + }, + "details": { + "name": "Mod", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "A" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "B" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "Ceil", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Ceil" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Ceil is invoked" + }, + "details": { + "name": "Ceil", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "IsEven", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsEven" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsEven is invoked" + }, + "details": { + "name": "Is Even", + "category": "Other" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Value" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Event" + } + } + ] + }, + { + "key": "IsClose", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsClose" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsClose is invoked" + }, + "details": { + "name": "Is Close", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "A" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "B" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "Tolerance" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Close" + } + } + ] + }, + { + "key": "ArcSin", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ArcSin" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ArcSin is invoked" + }, + "details": { + "name": "Arc Sin", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "ArcTan", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ArcTan" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ArcTan is invoked" + }, + "details": { + "name": "Arc Tan", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "Max", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Max" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Max is invoked" + }, + "details": { + "name": "Max", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "A" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "B" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "Tan", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Tan" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Tan is invoked" + }, + "details": { + "name": "Tan", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "ArcTan2", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ArcTan2" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ArcTan2 is invoked" + }, + "details": { + "name": "Arc Tan 2", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "A" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "B" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "Floor", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Floor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Floor is invoked" + }, + "details": { + "name": "Floor", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "Min", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Min" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Min is invoked" + }, + "details": { + "name": "Min", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "A" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "B" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "Lerp", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Lerp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Lerp is invoked" + }, + "details": { + "name": "Lerp", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "A" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "B" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Time" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "LerpInverse", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke LerpInverse" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after LerpInverse is invoked" + }, + "details": { + "name": "LerpInverse", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "A" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "B" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Time" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "IsOdd", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsOdd" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsOdd is invoked" + }, + "details": { + "name": "Is Odd", + "category": "Other" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Value" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Odd" + } + } + ] + }, + { + "key": "Abs", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Abs" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Abs is invoked" + }, + "details": { + "name": "Abs" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "RadToDeg", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RadToDeg" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RadToDeg is invoked" + }, + "details": { + "name": "Radians To Degrees", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Radians" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Degrees" + } + } + ] + }, + { + "key": "Sin", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Sin" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Sin is invoked" + }, + "details": { + "name": "Sin", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "Cos", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Cos" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Cos is invoked" + }, + "details": { + "name": "Cos", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "ArcCos", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ArcCos" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ArcCos is invoked" + }, + "details": { + "name": "Arc Cos", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "Sign", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Sign" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Sign is invoked" + }, + "details": { + "name": "Sign", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "Clamp", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clamp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clamp is invoked" + }, + "details": { + "name": "Clamp", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Minimum" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Maximum" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "GetSinCos", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSinCos" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSinCos is invoked" + }, + "details": { + "name": "Get Sin Cos", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Sin" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Cos" + } + } + ] + }, + { + "key": "DegToRad", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DegToRad" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DegToRad is invoked" + }, + "details": { + "name": "Degrees To Radians", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Degrees" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Radians" + } + } + ] + }, + { + "key": "Pow", + "context": "Math", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Pow" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Pow is invoked" + }, + "details": { + "name": "Pow", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Exponent" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Result" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathAABB_VM.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathAABB_VM.names new file mode 100644 index 0000000000..b8a8e84eea --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathAABB_VM.names @@ -0,0 +1,948 @@ +{ + "entries": [ + { + "key": "MathAABB_VM", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MathAABB_VM" + }, + "methods": [ + { + "key": "Overlaps", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Overlaps" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Overlaps is invoked" + }, + "details": { + "name": "MathAABB_VM::Overlaps", + "category": "Other" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "const Aabb&" + } + }, + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "const Aabb&" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SurfaceArea", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SurfaceArea" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SurfaceArea is invoked" + }, + "details": { + "name": "MathAABB_VM::SurfaceArea", + "category": "Other" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "const Aabb&" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "ToSphere", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToSphere" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToSphere is invoked" + }, + "details": { + "name": "MathAABB_VM::ToSphere", + "category": "Other" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "const Aabb&" + } + } + ], + "results": [ + { + "typeid": "{CD6328B1-6CC4-54CE-97F4-9D91F5A242F4}", + "details": { + "name": "tuple" + } + } + ] + }, + { + "key": "FromOBB", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromOBB" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromOBB is invoked" + }, + "details": { + "name": "MathAABB_VM::FromOBB", + "category": "Other" + }, + "params": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "const Obb&" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "Translate", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Translate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Translate is invoked" + }, + "details": { + "name": "MathAABB_VM::Translate", + "category": "Other" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "const Aabb&" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "ContainsVector3", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ContainsVector3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ContainsVector3 is invoked" + }, + "details": { + "name": "MathAABB_VM::ContainsVector3", + "category": "Other" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "const Aabb&" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Distance", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Distance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Distance is invoked" + }, + "details": { + "name": "MathAABB_VM::Distance", + "category": "Other" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "const Aabb&" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "FromPoint", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromPoint" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromPoint is invoked" + }, + "details": { + "name": "MathAABB_VM::FromPoint", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "Null", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Null" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Null is invoked" + }, + "details": { + "name": "MathAABB_VM::Null", + "category": "Other" + }, + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "YExtent", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke YExtent" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after YExtent is invoked" + }, + "details": { + "name": "MathAABB_VM::YExtent", + "category": "Other" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "const Aabb&" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Clamp", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clamp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clamp is invoked" + }, + "details": { + "name": "MathAABB_VM::Clamp", + "category": "Other" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "const Aabb&" + } + }, + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "const Aabb&" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "ContainsAABB", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ContainsAABB" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ContainsAABB is invoked" + }, + "details": { + "name": "MathAABB_VM::ContainsAABB", + "category": "Other" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "const Aabb&" + } + }, + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "const Aabb&" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Expand", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Expand" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Expand is invoked" + }, + "details": { + "name": "MathAABB_VM::Expand", + "category": "Other" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "const Aabb&" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "Extents", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Extents" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Extents is invoked" + }, + "details": { + "name": "MathAABB_VM::Extents", + "category": "Other" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "const Aabb&" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "FromCenterHalfExtents", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromCenterHalfExtents" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromCenterHalfExtents is invoked" + }, + "details": { + "name": "MathAABB_VM::FromCenterHalfExtents", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "GetMin", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetMin" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetMin is invoked" + }, + "details": { + "name": "MathAABB_VM::GetMin", + "category": "Other" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "const Aabb&" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "ApplyTransform", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ApplyTransform" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ApplyTransform is invoked" + }, + "details": { + "name": "MathAABB_VM::ApplyTransform", + "category": "Other" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "Center", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Center" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Center is invoked" + }, + "details": { + "name": "MathAABB_VM::Center", + "category": "Other" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "const Aabb&" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "FromMinMax", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromMinMax" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromMinMax is invoked" + }, + "details": { + "name": "MathAABB_VM::FromMinMax", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "IsFinite", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsFinite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsFinite is invoked" + }, + "details": { + "name": "MathAABB_VM::IsFinite", + "category": "Other" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "const Aabb&" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "IsValid", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsValid" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsValid is invoked" + }, + "details": { + "name": "MathAABB_VM::IsValid", + "category": "Other" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "const Aabb&" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetMax", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetMax" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetMax is invoked" + }, + "details": { + "name": "MathAABB_VM::GetMax", + "category": "Other" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "const Aabb&" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "XExtent", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke XExtent" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after XExtent is invoked" + }, + "details": { + "name": "MathAABB_VM::XExtent", + "category": "Other" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "const Aabb&" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "AddPoint", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddPoint" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddPoint is invoked" + }, + "details": { + "name": "MathAABB_VM::AddPoint", + "category": "Other" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "AddAABB", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddAABB" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddAABB is invoked" + }, + "details": { + "name": "MathAABB_VM::AddAABB", + "category": "Other" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + }, + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "const Aabb&" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "FromCenterRadius", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromCenterRadius" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromCenterRadius is invoked" + }, + "details": { + "name": "MathAABB_VM::FromCenterRadius", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "ZExtent", + "context": "MathAABB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ZExtent" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ZExtent is invoked" + }, + "details": { + "name": "MathAABB_VM::ZExtent", + "category": "Other" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "const Aabb&" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathColor_VM.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathColor_VM.names new file mode 100644 index 0000000000..d63799df8b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathColor_VM.names @@ -0,0 +1,602 @@ +{ + "entries": [ + { + "key": "MathColor_VM", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MathColor_VM" + }, + "methods": [ + { + "key": "One", + "context": "MathColor_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke One" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after One is invoked" + }, + "details": { + "name": "MathColor_VM::One", + "category": "Other" + }, + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "LinearToGamma", + "context": "MathColor_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke LinearToGamma" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after LinearToGamma is invoked" + }, + "details": { + "name": "MathColor_VM::LinearToGamma", + "category": "Other" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "FromVector3", + "context": "MathColor_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromVector3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromVector3 is invoked" + }, + "details": { + "name": "MathColor_VM::FromVector3", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "MultiplyByNumber", + "context": "MathColor_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByNumber is invoked" + }, + "details": { + "name": "MathColor_VM::MultiplyByNumber", + "category": "Other" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "Negate", + "context": "MathColor_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Negate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Negate is invoked" + }, + "details": { + "name": "MathColor_VM::Negate", + "category": "Other" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "Dot3", + "context": "MathColor_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Dot3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Dot3 is invoked" + }, + "details": { + "name": "MathColor_VM::Dot3", + "category": "Other" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Dot", + "context": "MathColor_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Dot" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Dot is invoked" + }, + "details": { + "name": "MathColor_VM::Dot", + "category": "Other" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "FromValues", + "context": "MathColor_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromValues" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromValues is invoked" + }, + "details": { + "name": "MathColor_VM::FromValues", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "DivideByNumber", + "context": "MathColor_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DivideByNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DivideByNumber is invoked" + }, + "details": { + "name": "MathColor_VM::DivideByNumber", + "category": "Other" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "FromVector3AndNumber", + "context": "MathColor_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromVector3AndNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromVector3AndNumber is invoked" + }, + "details": { + "name": "MathColor_VM::FromVector3AndNumber", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "GammaToLinear", + "context": "MathColor_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GammaToLinear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GammaToLinear is invoked" + }, + "details": { + "name": "MathColor_VM::GammaToLinear", + "category": "Other" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "IsClose", + "context": "MathColor_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsClose" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsClose is invoked" + }, + "details": { + "name": "MathColor_VM::IsClose", + "category": "Other" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "IsZero", + "context": "MathColor_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsZero" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsZero is invoked" + }, + "details": { + "name": "MathColor_VM::IsZero", + "category": "Other" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "MultiplyByColor", + "context": "MathColor_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByColor is invoked" + }, + "details": { + "name": "MathColor_VM::MultiplyByColor", + "category": "Other" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "Add", + "context": "MathColor_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Add" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Add is invoked" + }, + "details": { + "name": "MathColor_VM::Add", + "category": "Other" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "Subtract", + "context": "MathColor_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Subtract" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Subtract is invoked" + }, + "details": { + "name": "MathColor_VM::Subtract", + "category": "Other" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathCrc32_VM.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathCrc32_VM.names new file mode 100644 index 0000000000..1b2b5a4e7d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathCrc32_VM.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "MathCrc32_VM", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MathCrc32_VM" + }, + "methods": [ + { + "key": "FromString", + "context": "MathCrc32_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromString" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromString is invoked" + }, + "details": { + "name": "MathCrc32_VM::FromString", + "category": "Other" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ], + "results": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathMatrix3x3_VM.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathMatrix3x3_VM.names new file mode 100644 index 0000000000..a66332a5fa --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathMatrix3x3_VM.names @@ -0,0 +1,1158 @@ +{ + "entries": [ + { + "key": "MathMatrix3x3_VM", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MathMatrix3x3_VM" + }, + "methods": [ + { + "key": "Transpose", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Transpose" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Transpose is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::Transpose", + "category": "Other" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "Zero", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Zero" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Zero is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::Zero", + "category": "Other" + }, + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "Subtract", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Subtract" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Subtract is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::Subtract", + "category": "Other" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + }, + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "GetElement", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetElement" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetElement is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::GetElement", + "category": "Other" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Invert", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Invert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Invert is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::Invert", + "category": "Other" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "GetDiagonal", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetDiagonal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetDiagonal is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::GetDiagonal", + "category": "Other" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetColumn", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetColumn" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetColumn is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::GetColumn", + "category": "Other" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "MultiplyByVector", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByVector" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByVector is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::MultiplyByVector", + "category": "Other" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Add", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Add" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Add is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::Add", + "category": "Other" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + }, + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "IsFinite", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsFinite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsFinite is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::IsFinite", + "category": "Other" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "DivideByNumber", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DivideByNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DivideByNumber is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::DivideByNumber", + "category": "Other" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "ToAdjugate", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToAdjugate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToAdjugate is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::ToAdjugate", + "category": "Other" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "IsClose", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsClose" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsClose is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::IsClose", + "category": "Other" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + }, + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "MultiplyByMatrix", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByMatrix" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByMatrix is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::MultiplyByMatrix", + "category": "Other" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + }, + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "IsOrthogonal", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsOrthogonal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsOrthogonal is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::IsOrthogonal", + "category": "Other" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Orthogonalize", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Orthogonalize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Orthogonalize is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::Orthogonalize", + "category": "Other" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "GetRows", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetRows" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetRows is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::GetRows", + "category": "Other" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + } + ], + "results": [ + { + "typeid": "{93942742-473F-5EE3-8420-D8F22C612221}", + "details": { + "name": "tuple" + } + } + ] + }, + { + "key": "FromCrossProduct", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromCrossProduct" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromCrossProduct is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::FromCrossProduct", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "GetColumns", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetColumns" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetColumns is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::GetColumns", + "category": "Other" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + } + ], + "results": [ + { + "typeid": "{93942742-473F-5EE3-8420-D8F22C612221}", + "details": { + "name": "tuple" + } + } + ] + }, + { + "key": "FromTransform", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromTransform" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromTransform is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::FromTransform", + "category": "Other" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "FromScale", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromScale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromScale is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::FromScale", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "ToScale", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToScale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToScale is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::ToScale", + "category": "Other" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "FromQuaternion", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromQuaternion" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromQuaternion is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::FromQuaternion", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "const Quaternion&" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "MultiplyByNumber", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByNumber is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::MultiplyByNumber", + "category": "Other" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "GetRow", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetRow" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetRow is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::GetRow", + "category": "Other" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "FromRotationYDegrees", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromRotationYDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromRotationYDegrees is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::FromRotationYDegrees", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "FromRows", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromRows" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromRows is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::FromRows", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "FromDiagonal", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromDiagonal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromDiagonal is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::FromDiagonal", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "FromRotationZDegrees", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromRotationZDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromRotationZDegrees is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::FromRotationZDegrees", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "FromMatrix4x4", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromMatrix4x4" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromMatrix4x4 is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::FromMatrix4x4", + "category": "Other" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "const Matrix4x4&" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "FromColumns", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromColumns" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromColumns is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::FromColumns", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "FromRotationXDegrees", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromRotationXDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromRotationXDegrees is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::FromRotationXDegrees", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "ToDeterminant", + "context": "MathMatrix3x3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToDeterminant" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToDeterminant is invoked" + }, + "details": { + "name": "MathMatrix3x3_VM::ToDeterminant", + "category": "Other" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathMatrix4x4_VM.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathMatrix4x4_VM.names new file mode 100644 index 0000000000..ec8549b966 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathMatrix4x4_VM.names @@ -0,0 +1,960 @@ +{ + "entries": [ + { + "key": "MathMatrix4x4_VM", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MathMatrix4x4_VM" + }, + "methods": [ + { + "key": "GetRow", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetRow" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetRow is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::GetRow", + "category": "Other" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "const Matrix4x4&" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "FromRotationXDegrees", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromRotationXDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromRotationXDegrees is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::FromRotationXDegrees", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "FromRotationZDegrees", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromRotationZDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromRotationZDegrees is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::FromRotationZDegrees", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "FromRows", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromRows" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromRows is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::FromRows", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "const Vector4&" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "const Vector4&" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "const Vector4&" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "const Vector4&" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "ToScale", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToScale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToScale is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::ToScale", + "category": "Other" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "const Matrix4x4&" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "FromQuaternion", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromQuaternion" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromQuaternion is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::FromQuaternion", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "const Quaternion&" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "FromScale", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromScale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromScale is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::FromScale", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "FromTransform", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromTransform" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromTransform is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::FromTransform", + "category": "Other" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "GetTranslation", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTranslation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTranslation is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::GetTranslation", + "category": "Other" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "const Matrix4x4&" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "FromQuaternionAndTranslation", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromQuaternionAndTranslation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromQuaternionAndTranslation is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::FromQuaternionAndTranslation", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "const Quaternion&" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "GetColumn", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetColumn" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetColumn is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::GetColumn", + "category": "Other" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "const Matrix4x4&" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "GetDiagonal", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetDiagonal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetDiagonal is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::GetDiagonal", + "category": "Other" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "const Matrix4x4&" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "Invert", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Invert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Invert is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::Invert", + "category": "Other" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "const Matrix4x4&" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "IsClose", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsClose" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsClose is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::IsClose", + "category": "Other" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "const Matrix4x4&" + } + }, + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "const Matrix4x4&" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "FromMatrix3x3", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromMatrix3x3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromMatrix3x3 is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::FromMatrix3x3", + "category": "Other" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "GetColumns", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetColumns" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetColumns is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::GetColumns", + "category": "Other" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "const Matrix4x4&" + } + } + ], + "results": [ + { + "typeid": "{3750867E-BD2D-52A2-B93B-51032E86C4D4}", + "details": { + "name": "tuple" + } + } + ] + }, + { + "key": "GetRows", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetRows" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetRows is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::GetRows", + "category": "Other" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "const Matrix4x4&" + } + } + ], + "results": [ + { + "typeid": "{3750867E-BD2D-52A2-B93B-51032E86C4D4}", + "details": { + "name": "tuple" + } + } + ] + }, + { + "key": "MultiplyByMatrix", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByMatrix" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByMatrix is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::MultiplyByMatrix", + "category": "Other" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "const Matrix4x4&" + } + }, + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "const Matrix4x4&" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "FromDiagonal", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromDiagonal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromDiagonal is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::FromDiagonal", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "const Vector4&" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "FromRotationYDegrees", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromRotationYDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromRotationYDegrees is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::FromRotationYDegrees", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "GetElement", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetElement" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetElement is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::GetElement", + "category": "Other" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "const Matrix4x4&" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Transpose", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Transpose" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Transpose is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::Transpose", + "category": "Other" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "const Matrix4x4&" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "FromColumns", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromColumns" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromColumns is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::FromColumns", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "const Vector4&" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "const Vector4&" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "const Vector4&" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "const Vector4&" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "FromTranslation", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromTranslation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromTranslation is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::FromTranslation", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "IsFinite", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsFinite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsFinite is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::IsFinite", + "category": "Other" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "const Matrix4x4&" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "MultiplyByVector", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByVector" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByVector is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::MultiplyByVector", + "category": "Other" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "const Matrix4x4&" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "const Vector4&" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "Zero", + "context": "MathMatrix4x4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Zero" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Zero is invoked" + }, + "details": { + "name": "MathMatrix4x4_VM::Zero", + "category": "Other" + }, + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathOBB_VM.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathOBB_VM.names new file mode 100644 index 0000000000..4776bbbd8a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathOBB_VM.names @@ -0,0 +1,250 @@ +{ + "entries": [ + { + "key": "MathOBB_VM", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MathOBB_VM" + }, + "methods": [ + { + "key": "GetPosition", + "context": "MathOBB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPosition" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPosition is invoked" + }, + "details": { + "name": "MathOBB_VM::GetPosition", + "category": "Other" + }, + "params": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "const Obb&" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetAxisY", + "context": "MathOBB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAxisY" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAxisY is invoked" + }, + "details": { + "name": "MathOBB_VM::GetAxisY", + "category": "Other" + }, + "params": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "const Obb&" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetAxisX", + "context": "MathOBB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAxisX" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAxisX is invoked" + }, + "details": { + "name": "MathOBB_VM::GetAxisX", + "category": "Other" + }, + "params": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "const Obb&" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "FromAabb", + "context": "MathOBB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromAabb" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromAabb is invoked" + }, + "details": { + "name": "MathOBB_VM::FromAabb", + "category": "Other" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "const Aabb&" + } + } + ], + "results": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ] + }, + { + "key": "FromPositionRotationAndHalfLengths", + "context": "MathOBB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromPositionRotationAndHalfLengths" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromPositionRotationAndHalfLengths is invoked" + }, + "details": { + "name": "MathOBB_VM::FromPositionRotationAndHalfLengths", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ] + }, + { + "key": "GetAxisZ", + "context": "MathOBB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAxisZ" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAxisZ is invoked" + }, + "details": { + "name": "MathOBB_VM::GetAxisZ", + "category": "Other" + }, + "params": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "const Obb&" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "IsFinite", + "context": "MathOBB_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsFinite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsFinite is invoked" + }, + "details": { + "name": "MathOBB_VM::IsFinite", + "category": "Other" + }, + "params": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "const Obb&" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathPlane_VM.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathPlane_VM.names new file mode 100644 index 0000000000..adea5df187 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathPlane_VM.names @@ -0,0 +1,382 @@ +{ + "entries": [ + { + "key": "MathPlane_VM", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MathPlane_VM" + }, + "methods": [ + { + "key": "GetPlaneEquationCoefficients", + "context": "MathPlane_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPlaneEquationCoefficients" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPlaneEquationCoefficients is invoked" + }, + "details": { + "name": "MathPlane_VM::GetPlaneEquationCoefficients", + "category": "Other" + }, + "params": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ], + "results": [ + { + "typeid": "{7352CD6D-91DA-536F-BFCC-BC513FB48B2D}", + "details": { + "name": "tuple" + } + } + ] + }, + { + "key": "GetDistance", + "context": "MathPlane_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetDistance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetDistance is invoked" + }, + "details": { + "name": "MathPlane_VM::GetDistance", + "category": "Other" + }, + "params": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Project", + "context": "MathPlane_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Project" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Project is invoked" + }, + "details": { + "name": "MathPlane_VM::Project", + "category": "Other" + }, + "params": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "FromNormalAndPoint", + "context": "MathPlane_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromNormalAndPoint" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromNormalAndPoint is invoked" + }, + "details": { + "name": "MathPlane_VM::FromNormalAndPoint", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ] + }, + { + "key": "IsFinite", + "context": "MathPlane_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsFinite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsFinite is invoked" + }, + "details": { + "name": "MathPlane_VM::IsFinite", + "category": "Other" + }, + "params": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Transform", + "context": "MathPlane_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Transform" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Transform is invoked" + }, + "details": { + "name": "MathPlane_VM::Transform", + "category": "Other" + }, + "params": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + } + ], + "results": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ] + }, + { + "key": "DistanceToPoint", + "context": "MathPlane_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DistanceToPoint" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DistanceToPoint is invoked" + }, + "details": { + "name": "MathPlane_VM::DistanceToPoint", + "category": "Other" + }, + "params": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "FromCoefficients", + "context": "MathPlane_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromCoefficients" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromCoefficients is invoked" + }, + "details": { + "name": "MathPlane_VM::FromCoefficients", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ] + }, + { + "key": "FromNormalAndDistance", + "context": "MathPlane_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromNormalAndDistance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromNormalAndDistance is invoked" + }, + "details": { + "name": "MathPlane_VM::FromNormalAndDistance", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ] + }, + { + "key": "GetNormal", + "context": "MathPlane_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNormal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNormal is invoked" + }, + "details": { + "name": "MathPlane_VM::GetNormal", + "category": "Other" + }, + "params": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathQuaternion_VM.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathQuaternion_VM.names new file mode 100644 index 0000000000..4fc4390979 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathQuaternion_VM.names @@ -0,0 +1,1176 @@ +{ + "entries": [ + { + "key": "MathQuaternion_VM", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MathQuaternion_VM" + }, + "methods": [ + { + "key": "Subtract", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Subtract" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Subtract is invoked" + }, + "details": { + "name": "MathQuaternion_VM::Subtract", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "RotationYDegrees", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RotationYDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RotationYDegrees is invoked" + }, + "details": { + "name": "MathQuaternion_VM::RotationYDegrees", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "Normalize", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Normalize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Normalize is invoked" + }, + "details": { + "name": "MathQuaternion_VM::Normalize", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "LengthReciprocal", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke LengthReciprocal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after LengthReciprocal is invoked" + }, + "details": { + "name": "MathQuaternion_VM::LengthReciprocal", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "CreateFromEulerAngles", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CreateFromEulerAngles" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CreateFromEulerAngles is invoked" + }, + "details": { + "name": "MathQuaternion_VM::CreateFromEulerAngles", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "IsIdentity", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsIdentity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsIdentity is invoked" + }, + "details": { + "name": "MathQuaternion_VM::IsIdentity", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "FromTransform", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromTransform" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromTransform is invoked" + }, + "details": { + "name": "MathQuaternion_VM::FromTransform", + "category": "Other" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "Lerp", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Lerp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Lerp is invoked" + }, + "details": { + "name": "MathQuaternion_VM::Lerp", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "RotationZDegrees", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RotationZDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RotationZDegrees is invoked" + }, + "details": { + "name": "MathQuaternion_VM::RotationZDegrees", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "ConvertTransformToRotation", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ConvertTransformToRotation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ConvertTransformToRotation is invoked" + }, + "details": { + "name": "MathQuaternion_VM::ConvertTransformToRotation", + "category": "Other" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "ShortestArc", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ShortestArc" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ShortestArc is invoked" + }, + "details": { + "name": "MathQuaternion_VM::ShortestArc", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "RotationXDegrees", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RotationXDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RotationXDegrees is invoked" + }, + "details": { + "name": "MathQuaternion_VM::RotationXDegrees", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "IsZero", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsZero" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsZero is invoked" + }, + "details": { + "name": "MathQuaternion_VM::IsZero", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "IsClose", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsClose" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsClose is invoked" + }, + "details": { + "name": "MathQuaternion_VM::IsClose", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Length", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Length" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Length is invoked" + }, + "details": { + "name": "MathQuaternion_VM::Length", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Conjugate", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Conjugate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Conjugate is invoked" + }, + "details": { + "name": "MathQuaternion_VM::Conjugate", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "ToAngleDegrees", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToAngleDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToAngleDegrees is invoked" + }, + "details": { + "name": "MathQuaternion_VM::ToAngleDegrees", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Dot", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Dot" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Dot is invoked" + }, + "details": { + "name": "MathQuaternion_VM::Dot", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Negate", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Negate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Negate is invoked" + }, + "details": { + "name": "MathQuaternion_VM::Negate", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "Add", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Add" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Add is invoked" + }, + "details": { + "name": "MathQuaternion_VM::Add", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "MultiplyByNumber", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByNumber is invoked" + }, + "details": { + "name": "MathQuaternion_VM::MultiplyByNumber", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "Slerp", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Slerp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Slerp is invoked" + }, + "details": { + "name": "MathQuaternion_VM::Slerp", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "InvertFull", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke InvertFull" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after InvertFull is invoked" + }, + "details": { + "name": "MathQuaternion_VM::InvertFull", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "FromMatrix4x4", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromMatrix4x4" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromMatrix4x4 is invoked" + }, + "details": { + "name": "MathQuaternion_VM::FromMatrix4x4", + "category": "Other" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "const Matrix4x4&" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "RotateVector3", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RotateVector3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RotateVector3 is invoked" + }, + "details": { + "name": "MathQuaternion_VM::RotateVector3", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "FromMatrix3x3", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromMatrix3x3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromMatrix3x3 is invoked" + }, + "details": { + "name": "MathQuaternion_VM::FromMatrix3x3", + "category": "Other" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "const Matrix3x3&" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "Squad", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Squad" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Squad is invoked" + }, + "details": { + "name": "MathQuaternion_VM::Squad", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "FromAxisAngleDegrees", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromAxisAngleDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromAxisAngleDegrees is invoked" + }, + "details": { + "name": "MathQuaternion_VM::FromAxisAngleDegrees", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "LengthSquared", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke LengthSquared" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after LengthSquared is invoked" + }, + "details": { + "name": "MathQuaternion_VM::LengthSquared", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "IsFinite", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsFinite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsFinite is invoked" + }, + "details": { + "name": "MathQuaternion_VM::IsFinite", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "DivideByNumber", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DivideByNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DivideByNumber is invoked" + }, + "details": { + "name": "MathQuaternion_VM::DivideByNumber", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "MultiplyByRotation", + "context": "MathQuaternion_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByRotation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByRotation is invoked" + }, + "details": { + "name": "MathQuaternion_VM::MultiplyByRotation", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathRandom_VM.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathRandom_VM.names new file mode 100644 index 0000000000..0ac7a5b5a0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathRandom_VM.names @@ -0,0 +1,784 @@ +{ + "entries": [ + { + "key": "MathRandom_VM", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MathRandom_VM" + }, + "methods": [ + { + "key": "RandomPointOnSphere", + "context": "MathRandom_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomPointOnSphere" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomPointOnSphere is invoked" + }, + "details": { + "name": "MathRandom_VM::RandomPointOnSphere", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "RandomPointInCircle", + "context": "MathRandom_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomPointInCircle" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomPointInCircle is invoked" + }, + "details": { + "name": "MathRandom_VM::RandomPointInCircle", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "RandomPointInSquare", + "context": "MathRandom_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomPointInSquare" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomPointInSquare is invoked" + }, + "details": { + "name": "MathRandom_VM::RandomPointInSquare", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "RandomUnitVector2", + "context": "MathRandom_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomUnitVector2" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomUnitVector2 is invoked" + }, + "details": { + "name": "MathRandom_VM::RandomUnitVector2", + "category": "Other" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "RandomVector2", + "context": "MathRandom_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomVector2" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomVector2 is invoked" + }, + "details": { + "name": "MathRandom_VM::RandomVector2", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "RandomPointInCylinder", + "context": "MathRandom_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomPointInCylinder" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomPointInCylinder is invoked" + }, + "details": { + "name": "MathRandom_VM::RandomPointInCylinder", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "RandomQuaternion", + "context": "MathRandom_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomQuaternion" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomQuaternion is invoked" + }, + "details": { + "name": "MathRandom_VM::RandomQuaternion", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "RandomVector4", + "context": "MathRandom_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomVector4" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomVector4 is invoked" + }, + "details": { + "name": "MathRandom_VM::RandomVector4", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "RandomPointInBox", + "context": "MathRandom_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomPointInBox" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomPointInBox is invoked" + }, + "details": { + "name": "MathRandom_VM::RandomPointInBox", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "RandomPointOnCircle", + "context": "MathRandom_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomPointOnCircle" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomPointOnCircle is invoked" + }, + "details": { + "name": "MathRandom_VM::RandomPointOnCircle", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "RandomPointInEllipsoid", + "context": "MathRandom_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomPointInEllipsoid" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomPointInEllipsoid is invoked" + }, + "details": { + "name": "MathRandom_VM::RandomPointInEllipsoid", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "RandomInteger", + "context": "MathRandom_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomInteger" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomInteger is invoked" + }, + "details": { + "name": "MathRandom_VM::RandomInteger", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "RandomPointInWedge", + "context": "MathRandom_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomPointInWedge" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomPointInWedge is invoked" + }, + "details": { + "name": "MathRandom_VM::RandomPointInWedge", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "RandomGrayscale", + "context": "MathRandom_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomGrayscale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomGrayscale is invoked" + }, + "details": { + "name": "MathRandom_VM::RandomGrayscale", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "RandomPointInCone", + "context": "MathRandom_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomPointInCone" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomPointInCone is invoked" + }, + "details": { + "name": "MathRandom_VM::RandomPointInCone", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "RandomColor", + "context": "MathRandom_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomColor is invoked" + }, + "details": { + "name": "MathRandom_VM::RandomColor", + "category": "Other" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "RandomNumber", + "context": "MathRandom_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomNumber is invoked" + }, + "details": { + "name": "MathRandom_VM::RandomNumber", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "RandomPointInSphere", + "context": "MathRandom_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomPointInSphere" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomPointInSphere is invoked" + }, + "details": { + "name": "MathRandom_VM::RandomPointInSphere", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "RandomUnitVector3", + "context": "MathRandom_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomUnitVector3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomUnitVector3 is invoked" + }, + "details": { + "name": "MathRandom_VM::RandomUnitVector3", + "category": "Other" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "RandomVector3", + "context": "MathRandom_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomVector3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomVector3 is invoked" + }, + "details": { + "name": "MathRandom_VM::RandomVector3", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "RandomPointInArc", + "context": "MathRandom_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomPointInArc" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomPointInArc is invoked" + }, + "details": { + "name": "MathRandom_VM::RandomPointInArc", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathTransform_VM.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathTransform_VM.names new file mode 100644 index 0000000000..da20b78d90 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathTransform_VM.names @@ -0,0 +1,790 @@ +{ + "entries": [ + { + "key": "MathTransform_VM", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MathTransform_VM" + }, + "methods": [ + { + "key": "RotationZDegrees", + "context": "MathTransform_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RotationZDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RotationZDegrees is invoked" + }, + "details": { + "name": "MathTransform_VM::RotationZDegrees", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "GetUp", + "context": "MathTransform_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetUp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetUp is invoked" + }, + "details": { + "name": "MathTransform_VM::GetUp", + "category": "Other" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetForward", + "context": "MathTransform_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetForward" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetForward is invoked" + }, + "details": { + "name": "MathTransform_VM::GetForward", + "category": "Other" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "IsClose", + "context": "MathTransform_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsClose" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsClose is invoked" + }, + "details": { + "name": "MathTransform_VM::IsClose", + "category": "Other" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "RotationXDegrees", + "context": "MathTransform_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RotationXDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RotationXDegrees is invoked" + }, + "details": { + "name": "MathTransform_VM::RotationXDegrees", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "FromTranslation", + "context": "MathTransform_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromTranslation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromTranslation is invoked" + }, + "details": { + "name": "MathTransform_VM::FromTranslation", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "IsFinite", + "context": "MathTransform_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsFinite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsFinite is invoked" + }, + "details": { + "name": "MathTransform_VM::IsFinite", + "category": "Other" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "MultiplyByUniformScale", + "context": "MathTransform_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByUniformScale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByUniformScale is invoked" + }, + "details": { + "name": "MathTransform_VM::MultiplyByUniformScale", + "category": "Other" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "MultiplyByTransform", + "context": "MathTransform_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByTransform" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByTransform is invoked" + }, + "details": { + "name": "MathTransform_VM::MultiplyByTransform", + "category": "Other" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "FromRotation", + "context": "MathTransform_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromRotation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromRotation is invoked" + }, + "details": { + "name": "MathTransform_VM::FromRotation", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "RotationYDegrees", + "context": "MathTransform_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RotationYDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RotationYDegrees is invoked" + }, + "details": { + "name": "MathTransform_VM::RotationYDegrees", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "FromRotationAndTranslation", + "context": "MathTransform_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromRotationAndTranslation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromRotationAndTranslation is invoked" + }, + "details": { + "name": "MathTransform_VM::FromRotationAndTranslation", + "category": "Other" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "MultiplyByVector3", + "context": "MathTransform_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByVector3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByVector3 is invoked" + }, + "details": { + "name": "MathTransform_VM::MultiplyByVector3", + "category": "Other" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "MultiplyByVector4", + "context": "MathTransform_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByVector4" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByVector4 is invoked" + }, + "details": { + "name": "MathTransform_VM::MultiplyByVector4", + "category": "Other" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "ToScale", + "context": "MathTransform_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToScale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToScale is invoked" + }, + "details": { + "name": "MathTransform_VM::ToScale", + "category": "Other" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "FromMatrix3x3", + "context": "MathTransform_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromMatrix3x3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromMatrix3x3 is invoked" + }, + "details": { + "name": "MathTransform_VM::FromMatrix3x3", + "category": "Other" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "GetRight", + "context": "MathTransform_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetRight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetRight is invoked" + }, + "details": { + "name": "MathTransform_VM::GetRight", + "category": "Other" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "IsOrthogonal", + "context": "MathTransform_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsOrthogonal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsOrthogonal is invoked" + }, + "details": { + "name": "MathTransform_VM::IsOrthogonal", + "category": "Other" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Orthogonalize", + "context": "MathTransform_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Orthogonalize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Orthogonalize is invoked" + }, + "details": { + "name": "MathTransform_VM::Orthogonalize", + "category": "Other" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "FromMatrix3x3AndTranslation", + "context": "MathTransform_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromMatrix3x3AndTranslation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromMatrix3x3AndTranslation is invoked" + }, + "details": { + "name": "MathTransform_VM::FromMatrix3x3AndTranslation", + "category": "Other" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "FromScale", + "context": "MathTransform_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromScale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromScale is invoked" + }, + "details": { + "name": "MathTransform_VM::FromScale", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "GetTranslation", + "context": "MathTransform_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTranslation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTranslation is invoked" + }, + "details": { + "name": "MathTransform_VM::GetTranslation", + "category": "Other" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathUtils.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathUtils.names new file mode 100644 index 0000000000..20232e4b0a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathUtils.names @@ -0,0 +1,308 @@ +{ + "entries": [ + { + "key": "MathUtils", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Utilities", + "category": "Math" + }, + "methods": [ + { + "key": "ConvertEulerDegreesToQuaternion", + "context": "MathUtils", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Convert Euler Angles To Quaternion" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Convert Euler Angles To Quaternion is invoked" + }, + "details": { + "name": "Convert Euler Angles To Quaternion" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Angles (Degrees)" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "ConvertEulerDegreesToTransformPrecise", + "context": "MathUtils", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Convert Euler Angles To Transform (Precise)" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Convert Euler Angles To Transform (Precise) is invoked" + }, + "details": { + "name": "Convert Euler Angles To Transform (Precise)", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Angles (Degrees)" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "ConvertEulerDegreesToTransform", + "context": "MathUtils", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Convert Euler Angles To Transform" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Convert Euler Angles To Transform is invoked" + }, + "details": { + "name": "Convert Euler Angles To Transform" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Angles (Degrees)" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "ConvertQuaternionToEulerRadians", + "context": "MathUtils", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Convert Quaternion To Euler Angles (Radians)" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Convert Quaternion To Euler Angles (Radians) is invoked" + }, + "details": { + "name": "Convert Quaternion To Euler Angles (Radians)" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Angles (Radians)" + } + } + ] + }, + { + "key": "CreateLookAt", + "context": "MathUtils", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create Look At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create Look At is invoked" + }, + "details": { + "name": "Create Look At" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "From" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "To" + } + }, + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "Axis", + "tooltip": "0: X+, 1: X-, 2: Y+, 3: Y-, 4: Z+, 5: Z-" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "ConvertTransformToEulerRadians", + "context": "MathUtils", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Convert Transform To Euler Angles (Radians)" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Convert Transform To Euler Angles (Radians) is invoked" + }, + "details": { + "name": "Convert Transform To Euler Angles (Radians)" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Angles (Radians)" + } + } + ] + }, + { + "key": "ConvertQuaternionToEulerDegrees", + "context": "MathUtils", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Convert Quaternion To Euler Angles (Degrees)" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Convert Quaternion To Euler Angles (Degrees) is invoked" + }, + "details": { + "name": "Convert Quaternion To Euler Angles (Degrees)" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Angles (Degrees)" + } + } + ] + }, + { + "key": "ConvertTransformToEulerDegrees", + "context": "MathUtils", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Convert Transform To Euler Angles (Degrees)" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Convert Transform To Euler Angles (Degrees) is invoked" + }, + "details": { + "name": "Convert Transform To Euler Angles (Degrees)" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Angles (Degrees)" + } + } + ] + }, + { + "key": "ConvertEulerRadiansToQuaternion", + "context": "MathUtils", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Convert Euler Angles (Radians) To Quaternion" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Convert Euler Angles (Radians) To Quaternion is invoked" + }, + "details": { + "name": "Convert Euler Angles (Radians) To Quaternion" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Angles (Radians)" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathVector2_VM.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathVector2_VM.names new file mode 100644 index 0000000000..aefb8a3b4b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathVector2_VM.names @@ -0,0 +1,1174 @@ +{ + "entries": [ + { + "key": "MathVector2_VM", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MathVector2_VM" + }, + "methods": [ + { + "key": "DirectionTo", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DirectionTo" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DirectionTo is invoked" + }, + "details": { + "name": "MathVector2_VM::DirectionTo", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{3A98C3C6-91C4-5B49-8559-1C4C9EA9BCB8}", + "details": { + "name": "tuple" + } + } + ] + }, + { + "key": "Subtract", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Subtract" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Subtract is invoked" + }, + "details": { + "name": "MathVector2_VM::Subtract", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "const Vector2&" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "const Vector2&" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "Project", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Project" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Project is invoked" + }, + "details": { + "name": "MathVector2_VM::Project", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "Distance", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Distance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Distance is invoked" + }, + "details": { + "name": "MathVector2_VM::Distance", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "FromValues", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromValues" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromValues is invoked" + }, + "details": { + "name": "MathVector2_VM::FromValues", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "Dot", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Dot" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Dot is invoked" + }, + "details": { + "name": "MathVector2_VM::Dot", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Angle", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Angle" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Angle is invoked" + }, + "details": { + "name": "MathVector2_VM::Angle", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "Negate", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Negate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Negate is invoked" + }, + "details": { + "name": "MathVector2_VM::Negate", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "MultiplyByVector", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByVector" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByVector is invoked" + }, + "details": { + "name": "MathVector2_VM::MultiplyByVector", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "Add", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Add" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Add is invoked" + }, + "details": { + "name": "MathVector2_VM::Add", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "Clamp", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clamp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clamp is invoked" + }, + "details": { + "name": "MathVector2_VM::Clamp", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "MultiplyByNumber", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByNumber is invoked" + }, + "details": { + "name": "MathVector2_VM::MultiplyByNumber", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "Slerp", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Slerp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Slerp is invoked" + }, + "details": { + "name": "MathVector2_VM::Slerp", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "IsZero", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsZero" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsZero is invoked" + }, + "details": { + "name": "MathVector2_VM::IsZero", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetY", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetY" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetY is invoked" + }, + "details": { + "name": "MathVector2_VM::SetY", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "IsClose", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsClose" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsClose is invoked" + }, + "details": { + "name": "MathVector2_VM::IsClose", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "DivideByNumber", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DivideByNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DivideByNumber is invoked" + }, + "details": { + "name": "MathVector2_VM::DivideByNumber", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "IsNormalized", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsNormalized" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsNormalized is invoked" + }, + "details": { + "name": "MathVector2_VM::IsNormalized", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "LengthSquared", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke LengthSquared" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after LengthSquared is invoked" + }, + "details": { + "name": "MathVector2_VM::LengthSquared", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "IsFinite", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsFinite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsFinite is invoked" + }, + "details": { + "name": "MathVector2_VM::IsFinite", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "ToPerpendicular", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToPerpendicular" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToPerpendicular is invoked" + }, + "details": { + "name": "MathVector2_VM::ToPerpendicular", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "Normalize", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Normalize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Normalize is invoked" + }, + "details": { + "name": "MathVector2_VM::Normalize", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "Max", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Max" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Max is invoked" + }, + "details": { + "name": "MathVector2_VM::Max", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "GetElement", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetElement" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetElement is invoked" + }, + "details": { + "name": "MathVector2_VM::GetElement", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Absolute", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Absolute" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Absolute is invoked" + }, + "details": { + "name": "MathVector2_VM::Absolute", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "SetX", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetX" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetX is invoked" + }, + "details": { + "name": "MathVector2_VM::SetX", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "Min", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Min" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Min is invoked" + }, + "details": { + "name": "MathVector2_VM::Min", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "DivideByVector", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DivideByVector" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DivideByVector is invoked" + }, + "details": { + "name": "MathVector2_VM::DivideByVector", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "DistanceSquared", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DistanceSquared" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DistanceSquared is invoked" + }, + "details": { + "name": "MathVector2_VM::DistanceSquared", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Length", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Length" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Length is invoked" + }, + "details": { + "name": "MathVector2_VM::Length", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Lerp", + "context": "MathVector2_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Lerp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Lerp is invoked" + }, + "details": { + "name": "MathVector2_VM::Lerp", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "const Vector2&" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "const Vector2&" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathVector3_VM.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathVector3_VM.names new file mode 100644 index 0000000000..001fc94f4d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathVector3_VM.names @@ -0,0 +1,1332 @@ +{ + "entries": [ + { + "key": "MathVector3_VM", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MathVector3_VM" + }, + "methods": [ + { + "key": "Reciprocal", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reciprocal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reciprocal is invoked" + }, + "details": { + "name": "MathVector3_VM::Reciprocal", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Subtract", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Subtract" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Subtract is invoked" + }, + "details": { + "name": "MathVector3_VM::Subtract", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Project", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Project" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Project is invoked" + }, + "details": { + "name": "MathVector3_VM::Project", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Normalize", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Normalize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Normalize is invoked" + }, + "details": { + "name": "MathVector3_VM::Normalize", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Distance", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Distance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Distance is invoked" + }, + "details": { + "name": "MathVector3_VM::Distance", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "SetZ", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetZ" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetZ is invoked" + }, + "details": { + "name": "MathVector3_VM::SetZ", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Max", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Max" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Max is invoked" + }, + "details": { + "name": "MathVector3_VM::Max", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetElement", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetElement" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetElement is invoked" + }, + "details": { + "name": "MathVector3_VM::GetElement", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Absolute", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Absolute" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Absolute is invoked" + }, + "details": { + "name": "MathVector3_VM::Absolute", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "BuildTangentBasis", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BuildTangentBasis" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BuildTangentBasis is invoked" + }, + "details": { + "name": "MathVector3_VM::BuildTangentBasis", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{1F24C807-BE2F-54C7-8F2B-498727236DF5}", + "details": { + "name": "tuple" + } + } + ] + }, + { + "key": "Clamp", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clamp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clamp is invoked" + }, + "details": { + "name": "MathVector3_VM::Clamp", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "MultiplyByNumber", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByNumber is invoked" + }, + "details": { + "name": "MathVector3_VM::MultiplyByNumber", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Slerp", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Slerp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Slerp is invoked" + }, + "details": { + "name": "MathVector3_VM::Slerp", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "IsZero", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsZero" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsZero is invoked" + }, + "details": { + "name": "MathVector3_VM::IsZero", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetY", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetY" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetY is invoked" + }, + "details": { + "name": "MathVector3_VM::SetY", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "IsClose", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsClose" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsClose is invoked" + }, + "details": { + "name": "MathVector3_VM::IsClose", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Cross", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Cross" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Cross is invoked" + }, + "details": { + "name": "MathVector3_VM::Cross", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "DirectionTo", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DirectionTo" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DirectionTo is invoked" + }, + "details": { + "name": "MathVector3_VM::DirectionTo", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{CD6328B1-6CC4-54CE-97F4-9D91F5A242F4}", + "details": { + "name": "tuple" + } + } + ] + }, + { + "key": "MultiplyByVector", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByVector" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByVector is invoked" + }, + "details": { + "name": "MathVector3_VM::MultiplyByVector", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Negate", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Negate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Negate is invoked" + }, + "details": { + "name": "MathVector3_VM::Negate", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Add", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Add" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Add is invoked" + }, + "details": { + "name": "MathVector3_VM::Add", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "IsPerpendicular", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsPerpendicular" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsPerpendicular is invoked" + }, + "details": { + "name": "MathVector3_VM::IsPerpendicular", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "IsFinite", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsFinite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsFinite is invoked" + }, + "details": { + "name": "MathVector3_VM::IsFinite", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "DivideByNumber", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DivideByNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DivideByNumber is invoked" + }, + "details": { + "name": "MathVector3_VM::DivideByNumber", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "IsNormalized", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsNormalized" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsNormalized is invoked" + }, + "details": { + "name": "MathVector3_VM::IsNormalized", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "LengthSquared", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke LengthSquared" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after LengthSquared is invoked" + }, + "details": { + "name": "MathVector3_VM::LengthSquared", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "FromValues", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromValues" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromValues is invoked" + }, + "details": { + "name": "MathVector3_VM::FromValues", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Dot", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Dot" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Dot is invoked" + }, + "details": { + "name": "MathVector3_VM::Dot", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "SetX", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetX" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetX is invoked" + }, + "details": { + "name": "MathVector3_VM::SetX", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "LengthReciprocal", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke LengthReciprocal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after LengthReciprocal is invoked" + }, + "details": { + "name": "MathVector3_VM::LengthReciprocal", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Min", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Min" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Min is invoked" + }, + "details": { + "name": "MathVector3_VM::Min", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "DistanceSquared", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DistanceSquared" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DistanceSquared is invoked" + }, + "details": { + "name": "MathVector3_VM::DistanceSquared", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Length", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Length" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Length is invoked" + }, + "details": { + "name": "MathVector3_VM::Length", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "DivideByVector", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DivideByVector" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DivideByVector is invoked" + }, + "details": { + "name": "MathVector3_VM::DivideByVector", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Lerp", + "context": "MathVector3_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Lerp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Lerp is invoked" + }, + "details": { + "name": "MathVector3_VM::Lerp", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathVector4_VM.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathVector4_VM.names new file mode 100644 index 0000000000..87654cb3f9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MathVector4_VM.names @@ -0,0 +1,940 @@ +{ + "entries": [ + { + "key": "MathVector4_VM", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MathVector4_VM" + }, + "methods": [ + { + "key": "SetW", + "context": "MathVector4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetW" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetW is invoked" + }, + "details": { + "name": "MathVector4_VM::SetW", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "SetX", + "context": "MathVector4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetX" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetX is invoked" + }, + "details": { + "name": "MathVector4_VM::SetX", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "IsNormalized", + "context": "MathVector4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsNormalized" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsNormalized is invoked" + }, + "details": { + "name": "MathVector4_VM::IsNormalized", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "LengthSquared", + "context": "MathVector4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke LengthSquared" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after LengthSquared is invoked" + }, + "details": { + "name": "MathVector4_VM::LengthSquared", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "MultiplyByNumber", + "context": "MathVector4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByNumber is invoked" + }, + "details": { + "name": "MathVector4_VM::MultiplyByNumber", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "Negate", + "context": "MathVector4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Negate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Negate is invoked" + }, + "details": { + "name": "MathVector4_VM::Negate", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "Dot", + "context": "MathVector4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Dot" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Dot is invoked" + }, + "details": { + "name": "MathVector4_VM::Dot", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "FromValues", + "context": "MathVector4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromValues" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromValues is invoked" + }, + "details": { + "name": "MathVector4_VM::FromValues", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "IsFinite", + "context": "MathVector4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsFinite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsFinite is invoked" + }, + "details": { + "name": "MathVector4_VM::IsFinite", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Length", + "context": "MathVector4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Length" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Length is invoked" + }, + "details": { + "name": "MathVector4_VM::Length", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "MultiplyByVector", + "context": "MathVector4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByVector" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByVector is invoked" + }, + "details": { + "name": "MathVector4_VM::MultiplyByVector", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "DirectionTo", + "context": "MathVector4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DirectionTo" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DirectionTo is invoked" + }, + "details": { + "name": "MathVector4_VM::DirectionTo", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{F31AA4C4-5A73-510B-BFD3-20ACE0D9CE67}", + "details": { + "name": "tuple" + } + } + ] + }, + { + "key": "DivideByVector", + "context": "MathVector4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DivideByVector" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DivideByVector is invoked" + }, + "details": { + "name": "MathVector4_VM::DivideByVector", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "LengthReciprocal", + "context": "MathVector4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke LengthReciprocal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after LengthReciprocal is invoked" + }, + "details": { + "name": "MathVector4_VM::LengthReciprocal", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "SetZ", + "context": "MathVector4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetZ" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetZ is invoked" + }, + "details": { + "name": "MathVector4_VM::SetZ", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "Normalize", + "context": "MathVector4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Normalize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Normalize is invoked" + }, + "details": { + "name": "MathVector4_VM::Normalize", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "DivideByNumber", + "context": "MathVector4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DivideByNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DivideByNumber is invoked" + }, + "details": { + "name": "MathVector4_VM::DivideByNumber", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "IsClose", + "context": "MathVector4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsClose" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsClose is invoked" + }, + "details": { + "name": "MathVector4_VM::IsClose", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "IsZero", + "context": "MathVector4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsZero" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsZero is invoked" + }, + "details": { + "name": "MathVector4_VM::IsZero", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Add", + "context": "MathVector4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Add" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Add is invoked" + }, + "details": { + "name": "MathVector4_VM::Add", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "GetElement", + "context": "MathVector4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetElement" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetElement is invoked" + }, + "details": { + "name": "MathVector4_VM::GetElement", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Reciprocal", + "context": "MathVector4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reciprocal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reciprocal is invoked" + }, + "details": { + "name": "MathVector4_VM::Reciprocal", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "Subtract", + "context": "MathVector4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Subtract" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Subtract is invoked" + }, + "details": { + "name": "MathVector4_VM::Subtract", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "const Vector4&" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "const Vector4&" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "Absolute", + "context": "MathVector4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Absolute" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Absolute is invoked" + }, + "details": { + "name": "MathVector4_VM::Absolute", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "SetY", + "context": "MathVector4_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetY" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetY is invoked" + }, + "details": { + "name": "MathVector4_VM::SetY", + "category": "Other" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Math_VM.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Math_VM.names new file mode 100644 index 0000000000..d3b492ff31 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Math_VM.names @@ -0,0 +1,134 @@ +{ + "entries": [ + { + "key": "Math_VM", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Math_VM" + }, + "methods": [ + { + "key": "ThreeGeneric", + "context": "Math_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ThreeGeneric" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ThreeGeneric is invoked" + }, + "details": { + "name": "Math_VM::ThreeGeneric", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "const bool&" + } + } + ], + "results": [ + { + "typeid": "{5BAFAD11-D6AF-5946-B09B-6E0B72E1209C}", + "details": { + "name": "tuple, allocator> bool >" + } + } + ] + }, + { + "key": "MultiplyAndAdd", + "context": "Math_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyAndAdd" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyAndAdd is invoked" + }, + "details": { + "name": "Math_VM::MultiplyAndAdd", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "StringToNumber", + "context": "Math_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke StringToNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after StringToNumber is invoked" + }, + "details": { + "name": "Math_VM::StringToNumber", + "category": "Other" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Matrix3x4.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Matrix3x4.names new file mode 100644 index 0000000000..a2f2bed3f9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Matrix3x4.names @@ -0,0 +1,2116 @@ +{ + "entries": [ + { + "key": "Matrix3x4", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Matrix3x4" + }, + "methods": [ + { + "key": "CreateZero", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CreateZero" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CreateZero is invoked" + }, + "details": { + "name": "Create Zero", + "tooltip": "Creates a Matrix3x4 with all values zero" + }, + "results": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "SetRotationPartFromQuaternion", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Rotation Part From Quaternion" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Rotation Part From Quaternion is invoked" + }, + "details": { + "name": "Set Rotation Part From Quaternion", + "tooltip": "Sets the 3x3 part of the matrix from a quaternion" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "CreateFromColumns", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create From Columns" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create From Columns is invoked" + }, + "details": { + "name": "Create From Columns", + "tooltip": "Constructs from individual columns" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Column 1" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Column 2" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Column 3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Column 4" + } + } + ], + "results": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "IsClose", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Close" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Close is invoked" + }, + "details": { + "name": "Is Close", + "tooltip": "Tests element-wise whether this matrix is close to another matrix, within the specified tolerance" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "A" + } + }, + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "B" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Tolerance" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Close" + } + } + ] + }, + { + "key": "IsOrthogonal", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Orthogonal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Orthogonal is invoked" + }, + "details": { + "name": "Is Orthogonal", + "tooltip": "Tests if the 3x3 part of the matrix is orthogonal" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Tolerance" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Orthogonal" + } + } + ] + }, + { + "key": "Orthogonalize", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Orthogonalize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Orthogonalize is invoked" + }, + "details": { + "name": "Orthogonalize", + "tooltip": "Modifies the basis vectors of the matrix to be orthogonal and unit length" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + } + ] + }, + { + "key": "CreateFromMatrix3x3", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create From Matrix3x3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create From Matrix3x3 is invoked" + }, + "details": { + "name": "Create From Matrix3x3", + "tooltip": "Constructs from a Matrix3x3, with translation set to zero" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "RetrieveScale", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Retrieve Scale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Retrieve Scale is invoked" + }, + "details": { + "name": "Retrieve Scale", + "tooltip": "Gets the scale part of the transformation (the length of the basis vectors)" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Scale" + } + } + ] + }, + { + "key": "CreateRotationX", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create Rotation X" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create Rotation X is invoked" + }, + "details": { + "name": "Create Rotation X", + "tooltip": "Sets the matrix to be a rotation around the X-axis, specified in radians" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Angle (Radians)" + } + } + ], + "results": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "CreateFromMatrix3x3AndTranslation", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create From Matrix3x3 And Translation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create From Matrix3x3 And Translation is invoked" + }, + "details": { + "name": "Create From Matrix3x3 And Translation" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Translation" + } + } + ], + "results": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "ToString", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToString" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToString is invoked" + }, + "details": { + "name": "To String" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "String" + } + } + ] + }, + { + "key": "ExtractScale", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Extract Scale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Extract Scale is invoked" + }, + "details": { + "name": "Extract Scale", + "tooltip": "Gets the scale part of the transformation as in RetrieveScale, and also removes this scaling from the matrix" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Scale" + } + } + ] + }, + { + "key": "GetTranspose", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Transpose" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Transpose is invoked" + }, + "details": { + "name": "Get Transpose" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + } + ], + "results": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Transpose" + } + } + ] + }, + { + "key": "InvertFast", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Invert Fast" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Invert Fast is invoked" + }, + "details": { + "name": "Invert Fast", + "tooltip": "Inverts the transformation represented by the matrix, assuming the 3x3 part is orthogonal" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Inverted" + } + } + ] + }, + { + "key": "CreateFromRows", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create From Rows" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create From Rows is invoked" + }, + "details": { + "name": "Create From Rows", + "tooltip": "Constructs from individual rows" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Row 1" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Row 2" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Row 3" + } + } + ], + "results": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "CreateTranslation", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create Translation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create Translation is invoked" + }, + "details": { + "name": "Create Translation", + "tooltip": "Sets the matrix to be a translation matrix, with 3x3 part set to the identity" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Translation" + } + } + ], + "results": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "GetTranspose3x3", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTranspose3x3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTranspose3x3 is invoked" + }, + "details": { + "name": "Get Transpose 3x3", + "tooltip": "Gets the matrix obtained by transposing the 3x3 part of the matrix, leaving the translation untouched" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + } + ], + "results": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Transpose" + } + } + ] + }, + { + "key": "SetColumn", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Column" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Column is invoked" + }, + "details": { + "name": "Set Column", + "tooltip": "Sets the specified column" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Column Index" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetRow", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Row" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Row is invoked" + }, + "details": { + "name": "Get Row", + "tooltip": "Gets the specified row" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Row Index" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "GetInverseFast", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetInverseFast" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetInverseFast is invoked" + }, + "details": { + "name": "GetInverseFast", + "tooltip": "Gets the inverse of the transformation represented by the matrix.\nThis function works for any matrix, even if they have scaling or skew.\nIf the 3x3 part of the matrix is orthogonal then \ref GetInverseFast is much faster" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + } + ], + "results": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Inverse" + } + } + ] + }, + { + "key": "GetOrthogonalized", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Orthogonalized" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Orthogonalized is invoked" + }, + "details": { + "name": "Get Orthogonalized", + "tooltip": "Returns an orthogonal matrix based on this matrix" + + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + } + ], + "results": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Orthogonalized" + } + } + ] + }, + { + "key": "Multiply3x3", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Multiply3x3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Multiply3x3 is invoked" + }, + "details": { + "name": "Multiply 3x3", + "tooltip": "Post-multiplies the matrix by a vector, using only the 3x3 part of the matrix" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "IsFinite", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Finite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Finite is invoked" + }, + "details": { + "name": "Is Finite", + "tooltip": "Checks whether the elements of the matrix are all finite" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Finite" + } + } + ] + }, + { + "key": "CreateFromQuaternion", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create From Quaternion" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create From Quaternion is invoked" + }, + "details": { + "name": "Create From Quaternion", + "tooltip": "Sets the matrix from a quaternion, with translation set to zero" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "SetBasisAndTranslation", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Basis And Translation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Basis And Translation is invoked" + }, + "details": { + "name": "Set Basis And Translation", + "tooltip": "Sets the three basis vectors and the translation" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Basis X" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Basis Y" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Basis Z" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Translation" + } + } + ] + }, + { + "key": "MultiplyVector4", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Multiply Vector4" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Multiply Vector4 is invoked" + }, + "details": { + "name": "Multiply Vector4", + "tooltip": "Operator for transforming a Vector4" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "CreateScale", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create Scale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create Scale is invoked" + }, + "details": { + "name": "Create Scale", + "tooltip": "Sets the matrix to be a scale matrix, with translation set to zero" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Scale" + } + } + ], + "results": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "CreateDiagonal", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create Diagonal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create Diagonal is invoked" + }, + "details": { + "name": "Create Diagonal", + "tooltip": "Sets the matrix to be a diagonal matrix, with translation set to zero" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Diagonal" + } + } + ], + "results": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "GetTranslation", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Translation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Translation is invoked" + }, + "details": { + "name": "Get Translation", + "tooltip": "Gets the translation" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Translation" + } + } + ] + }, + { + "key": "InvertFull", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Invert Full" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Invert Full is invoked" + }, + "details": { + "name": "Invert Full", + "tooltip": "Inverts the transformation represented by the matrix\nThis function works for any matrix, even if they have scaling or skew\nIf the 3x3 part of the matrix is orthogonal then \ref InvertFast is much faster" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Inverted" + } + } + ] + }, + { + "key": "SetColumns", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Columns" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Columns is invoked" + }, + "details": { + "name": "Set Columns", + "tooltip": "Sets all the columns of the matrix" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Column 1" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Column 2" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Column 3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Column 4" + } + } + ] + }, + { + "key": "SetElement", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Element" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Element is invoked" + }, + "details": { + "name": "Set Element", + "tooltip": "Sets the element in the specified row and column\nAccessing individual elements can be slower than working with entire rows" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Row" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Column" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "Equal", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Equal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Equal is invoked" + }, + "details": { + "name": "Equal", + "tooltip": "Compares if two Matrix3x4 are equal" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "A" + } + }, + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "B" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Equal" + } + } + ] + }, + { + "key": "GetDeterminant3x3", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Determinant 3x3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Determinant 3x3 is invoked" + }, + "details": { + "name": "Get Determinant 3x3", + "tooltip": "Calculates the determinant of the 3x3 part of the matrix" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Determinant" + } + } + ] + }, + { + "key": "GetColumns", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Columns" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Columns is invoked" + }, + "details": { + "name": "Get Columns", + "tooltip": "Gets all the columns of the matrix" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Column 1" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Column 2" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Column 3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Column 4" + } + } + ] + }, + { + "key": "SetRows", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetRows" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetRows is invoked" + }, + "details": { + "name": "SetRows", + "tooltip": "Sets all rows of the matrix" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Row 1" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Row 2" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Row 3" + } + } + ] + }, + { + "key": "GetMultipliedByScale", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Multiplied By Scale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Multiplied By Scale is invoked" + }, + "details": { + "name": "Get Multiplied By Scale", + "tooltip": "Gets a copy of the Matrix3x4 and multiplies it by the specified scale" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Scale" + } + } + ], + "results": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "CreateRotationZ", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create Rotation Z" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create Rotation Z is invoked" + }, + "details": { + "name": "CreateRotationZ", + "tooltip": "Sets the matrix to be a rotation around the Z-axis, specified in radians" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Angle (Radians)" + } + } + ], + "results": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "CreateFromQuaternionAndTranslation", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create From Quaternion And Translation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create From Quaternion And Translation is invoked" + }, + "details": { + "name": "Create From Quaternion And Translation", + "tooltip": "Sets the matrix from a quaternion and a translation" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Translation" + } + } + ], + "results": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "GetRowAsVector3", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Row As Vector3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Row As Vector3 is invoked" + }, + "details": { + "name": "Get Row As Vector3", + "tooltip": "Gets the specified row as a Vector3" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Row" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "MultiplyMatrix3x4", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Multiply Matrix3x4" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Multiply Matrix3x4 is invoked" + }, + "details": { + "name": "Multiply Matrix3x4", + "tooltip": "Operator for matrix-matrix multiplication" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + }, + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Multiplicand" + } + } + ], + "results": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "GetRows", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Rows" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Rows is invoked" + }, + "details": { + "name": "GetRows", + "tooltip": "Gets all rows of the matrix" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Row 1" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Row 2" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Row 3" + } + } + ] + }, + { + "key": "Clone", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clone" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clone is invoked" + }, + "details": { + "name": "Clone", + "tooltip": "Returns a deep copy of the provided Matrix3x4" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + } + ], + "results": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Clone" + } + } + ] + }, + { + "key": "MultiplyVector3", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Multiply Vector3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Multiply Vector3 is invoked" + }, + "details": { + "name": "Multiply Vector3", + "tooltip": "perator for transforming a Vector3" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "CreateIdentity", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create Identity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create Identity is invoked" + }, + "details": { + "name": "Create Identity", + "tooltip": "Creates an identity Matrix3x4" + }, + "results": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "GetBasisAndTranslation", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetBasisAndTranslation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetBasisAndTranslation is invoked" + }, + "details": { + "name": "GetBasisAndTranslation", + "tooltip": "Gets the three basis vectors and the translation" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Basis X" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Basis Y" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Basis Z" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Translation" + } + } + ] + }, + { + "key": "CreateFromValue", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create From Value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create From Value is invoked" + }, + "details": { + "name": "Create From Value", + "tooltip": "Constructs a matrix with all components set to the specified value" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + } + ], + "results": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "GetElement", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Element" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Element is invoked" + }, + "details": { + "name": "Get Element", + "tooltip": "Gets the element in the specified row and column\nAccessing individual elements can be slower than working with entire rows" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Row" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Column" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "Transpose3x3", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Transpose 3x3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Transpose 3x3 is invoked" + }, + "details": { + "name": "Transpose 3x3", + "tooltip": "Gets the matrix obtained by transposing the 3x3 part of the matrix, leaving the translation untouched" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + } + ] + }, + { + "key": "Transpose", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Transpose" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Transpose is invoked" + }, + "details": { + "name": "Transpose", + "tooltip": "Transposes the 3x3 part of the matrix, and sets the translation part to zero" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + } + ] + }, + { + "key": "CreateRotationY", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create Rotation Y" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create Rotation Y is invoked" + }, + "details": { + "name": "Create Rotation Y", + "tooltip": "Sets the matrix to be a rotation around the Y-axis, specified in radians" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Angle (Radians)" + } + } + ], + "results": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "SetRow", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetRow" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetRow is invoked" + }, + "details": { + "name": "Set Row", + "tooltip": "Sets the specified row" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Row Index" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "GetInverseFull", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Inverse Full" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Inverse Full is invoked" + }, + "details": { + "name": "Get Inverse Full", + "tooltip": "Gets the inverse of the transformation represented by the matrix\nThis function works for any matrix, even if they have scaling or skew\nIf the 3x3 part of the matrix is orthogonal then \ref GetInverseFast is much faster" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + } + ], + "results": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "GetColumn", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Column" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Column is invoked" + }, + "details": { + "name": "Get Column", + "tooltip": "Gets the specified column" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Column Index" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Column" + } + } + ] + }, + { + "key": "SetTranslation", + "context": "Matrix3x4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Translation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Translation is invoked" + }, + "details": { + "name": "Set Translation", + "tooltip": "Sets the translation" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Translation" + } + } + ] + }, + { + "key": "basisX", + "context": "Getter", + "details": { + "name": "Get Basis X" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Basis X" + } + } + ] + }, + { + "key": "basisX", + "context": "Setter", + "details": { + "name": "Set Basis X" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Basis X" + } + } + ] + }, + { + "key": "basisY", + "context": "Getter", + "details": { + "name": "Get Basis Y" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Basis Y" + } + } + ] + }, + { + "key": "basisY", + "context": "Setter", + "details": { + "name": "Set Basis Y" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Basis Y" + } + } + ] + }, + { + "key": "basisZ", + "context": "Getter", + "details": { + "name": "Get Basis Z" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Basis Z" + } + } + ] + }, + { + "key": "basisZ", + "context": "Setter", + "details": { + "name": "Set Basis Z" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Basis Z" + } + } + ] + }, + { + "key": "translation", + "context": "Getter", + "details": { + "name": "Get Translation" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Translation" + } + } + ] + }, + { + "key": "translation", + "context": "Setter", + "details": { + "name": "Set Translation" + }, + "params": [ + { + "typeid": "{1906D8A5-7DEC-4DE3-A606-9E53BB3459E7}", + "details": { + "name": "Source" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Translation" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MeshData.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MeshData.names new file mode 100644 index 0000000000..9e6b60edbb --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MeshData.names @@ -0,0 +1,414 @@ +{ + "entries": [ + { + "key": "MeshData", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MeshData" + }, + "methods": [ + { + "key": "GetVertexIndex", + "context": "MeshData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetVertexIndex" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetVertexIndex is invoked" + }, + "details": { + "name": "MeshData::GetVertexIndex", + "category": "Other" + }, + "params": [ + { + "typeid": "{A2589BD4-42FB-40BA-A38D-CFCD6E9EA169}", + "details": { + "name": "MeshData*" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ], + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "GetPosition", + "context": "MeshData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPosition" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPosition is invoked" + }, + "details": { + "name": "MeshData::GetPosition", + "category": "Other" + }, + "params": [ + { + "typeid": "{A2589BD4-42FB-40BA-A38D-CFCD6E9EA169}", + "details": { + "name": "MeshData*" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + } + ] + }, + { + "key": "GetFaceInfo", + "context": "MeshData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetFaceInfo" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetFaceInfo is invoked" + }, + "details": { + "name": "MeshData::GetFaceInfo", + "category": "Other" + }, + "params": [ + { + "typeid": "{A2589BD4-42FB-40BA-A38D-CFCD6E9EA169}", + "details": { + "name": "MeshData*" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ], + "results": [ + { + "typeid": "{F9F49C1A-014F-46F5-A46F-B56D8CB46C2B}", + "details": { + "name": "const AZ::SceneAPI::DataTypes::IMeshData::Face&" + } + } + ] + }, + { + "key": "HasNormalData", + "context": "MeshData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke HasNormalData" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after HasNormalData is invoked" + }, + "details": { + "name": "MeshData::HasNormalData", + "category": "Other" + }, + "params": [ + { + "typeid": "{A2589BD4-42FB-40BA-A38D-CFCD6E9EA169}", + "details": { + "name": "MeshData*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetNormal", + "context": "MeshData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNormal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNormal is invoked" + }, + "details": { + "name": "MeshData::GetNormal", + "category": "Other" + }, + "params": [ + { + "typeid": "{A2589BD4-42FB-40BA-A38D-CFCD6E9EA169}", + "details": { + "name": "MeshData*" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + } + ] + }, + { + "key": "GetUsedPointIndexForControlPoint", + "context": "MeshData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetUsedPointIndexForControlPoint" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetUsedPointIndexForControlPoint is invoked" + }, + "details": { + "name": "MeshData::GetUsedPointIndexForControlPoint", + "category": "Other" + }, + "params": [ + { + "typeid": "{A2589BD4-42FB-40BA-A38D-CFCD6E9EA169}", + "details": { + "name": "MeshData*" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetVertexCount", + "context": "MeshData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetVertexCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetVertexCount is invoked" + }, + "details": { + "name": "MeshData::GetVertexCount", + "category": "Other" + }, + "params": [ + { + "typeid": "{A2589BD4-42FB-40BA-A38D-CFCD6E9EA169}", + "details": { + "name": "MeshData*" + } + } + ], + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "GetFaceCount", + "context": "MeshData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetFaceCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetFaceCount is invoked" + }, + "details": { + "name": "MeshData::GetFaceCount", + "category": "Other" + }, + "params": [ + { + "typeid": "{A2589BD4-42FB-40BA-A38D-CFCD6E9EA169}", + "details": { + "name": "MeshData*" + } + } + ], + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "GetUsedControlPointCount", + "context": "MeshData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetUsedControlPointCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetUsedControlPointCount is invoked" + }, + "details": { + "name": "MeshData::GetUsedControlPointCount", + "category": "Other" + }, + "params": [ + { + "typeid": "{A2589BD4-42FB-40BA-A38D-CFCD6E9EA169}", + "details": { + "name": "MeshData*" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetFaceMaterialId", + "context": "MeshData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetFaceMaterialId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetFaceMaterialId is invoked" + }, + "details": { + "name": "MeshData::GetFaceMaterialId", + "category": "Other" + }, + "params": [ + { + "typeid": "{A2589BD4-42FB-40BA-A38D-CFCD6E9EA169}", + "details": { + "name": "MeshData*" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ], + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "GetControlPointIndex", + "context": "MeshData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetControlPointIndex" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetControlPointIndex is invoked" + }, + "details": { + "name": "MeshData::GetControlPointIndex", + "category": "Other" + }, + "params": [ + { + "typeid": "{A2589BD4-42FB-40BA-A38D-CFCD6E9EA169}", + "details": { + "name": "MeshData*" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MeshVertexBitangentData.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MeshVertexBitangentData.names new file mode 100644 index 0000000000..e46faa5cfa --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MeshVertexBitangentData.names @@ -0,0 +1,148 @@ +{ + "entries": [ + { + "key": "MeshVertexBitangentData", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MeshVertexBitangentData" + }, + "methods": [ + { + "key": "GetCount", + "context": "MeshVertexBitangentData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCount is invoked" + }, + "details": { + "name": "MeshVertexBitangentData::GetCount", + "category": "Other" + }, + "params": [ + { + "typeid": "{F56FB088-4C92-4453-AFE9-4E820F03FA90}", + "details": { + "name": "MeshVertexBitangentData*" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetBitangent", + "context": "MeshVertexBitangentData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetBitangent" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetBitangent is invoked" + }, + "details": { + "name": "MeshVertexBitangentData::GetBitangent", + "category": "Other" + }, + "params": [ + { + "typeid": "{F56FB088-4C92-4453-AFE9-4E820F03FA90}", + "details": { + "name": "MeshVertexBitangentData*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + } + ] + }, + { + "key": "GetBitangentSetIndex", + "context": "MeshVertexBitangentData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetBitangentSetIndex" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetBitangentSetIndex is invoked" + }, + "details": { + "name": "MeshVertexBitangentData::GetBitangentSetIndex", + "category": "Other" + }, + "params": [ + { + "typeid": "{F56FB088-4C92-4453-AFE9-4E820F03FA90}", + "details": { + "name": "MeshVertexBitangentData*" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetGenerationMethod", + "context": "MeshVertexBitangentData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetGenerationMethod" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetGenerationMethod is invoked" + }, + "details": { + "name": "MeshVertexBitangentData::GetGenerationMethod", + "category": "Other" + }, + "params": [ + { + "typeid": "{F56FB088-4C92-4453-AFE9-4E820F03FA90}", + "details": { + "name": "MeshVertexBitangentData*" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MeshVertexColorData.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MeshVertexColorData.names new file mode 100644 index 0000000000..961508f944 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MeshVertexColorData.names @@ -0,0 +1,116 @@ +{ + "entries": [ + { + "key": "MeshVertexColorData", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MeshVertexColorData" + }, + "methods": [ + { + "key": "GetCustomName", + "context": "MeshVertexColorData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCustomName" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCustomName is invoked" + }, + "details": { + "name": "MeshVertexColorData::GetCustomName", + "category": "Other" + }, + "params": [ + { + "typeid": "{17477B86-B163-4574-8FB2-4916BC218B3D}", + "details": { + "name": "const MeshVertexColorData&" + } + } + ], + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + }, + { + "key": "GetCount", + "context": "MeshVertexColorData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCount is invoked" + }, + "details": { + "name": "MeshVertexColorData::GetCount", + "category": "Other" + }, + "params": [ + { + "typeid": "{17477B86-B163-4574-8FB2-4916BC218B3D}", + "details": { + "name": "MeshVertexColorData*" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetColor", + "context": "MeshVertexColorData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetColor is invoked" + }, + "details": { + "name": "MeshVertexColorData::GetColor", + "category": "Other" + }, + "params": [ + { + "typeid": "{17477B86-B163-4574-8FB2-4916BC218B3D}", + "details": { + "name": "MeshVertexColorData*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{937E3BF8-5204-4D40-A8DA-C8F083C89F9F}", + "details": { + "name": "const SceneAPI::DataTypes::Color&" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MeshVertexTangentData.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MeshVertexTangentData.names new file mode 100644 index 0000000000..6866276dca --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MeshVertexTangentData.names @@ -0,0 +1,148 @@ +{ + "entries": [ + { + "key": "MeshVertexTangentData", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MeshVertexTangentData" + }, + "methods": [ + { + "key": "GetCount", + "context": "MeshVertexTangentData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCount is invoked" + }, + "details": { + "name": "MeshVertexTangentData::GetCount", + "category": "Other" + }, + "params": [ + { + "typeid": "{C16F0F38-8F8F-45A2-A33B-F2758922A7C4}", + "details": { + "name": "MeshVertexTangentData*" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetTangent", + "context": "MeshVertexTangentData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTangent" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTangent is invoked" + }, + "details": { + "name": "MeshVertexTangentData::GetTangent", + "category": "Other" + }, + "params": [ + { + "typeid": "{C16F0F38-8F8F-45A2-A33B-F2758922A7C4}", + "details": { + "name": "MeshVertexTangentData*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "const Vector4&" + } + } + ] + }, + { + "key": "GetTangentSetIndex", + "context": "MeshVertexTangentData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTangentSetIndex" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTangentSetIndex is invoked" + }, + "details": { + "name": "MeshVertexTangentData::GetTangentSetIndex", + "category": "Other" + }, + "params": [ + { + "typeid": "{C16F0F38-8F8F-45A2-A33B-F2758922A7C4}", + "details": { + "name": "MeshVertexTangentData*" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetGenerationMethod", + "context": "MeshVertexTangentData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetGenerationMethod" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetGenerationMethod is invoked" + }, + "details": { + "name": "MeshVertexTangentData::GetGenerationMethod", + "category": "Other" + }, + "params": [ + { + "typeid": "{C16F0F38-8F8F-45A2-A33B-F2758922A7C4}", + "details": { + "name": "MeshVertexTangentData*" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MeshVertexUVData.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MeshVertexUVData.names new file mode 100644 index 0000000000..474a4b91b3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MeshVertexUVData.names @@ -0,0 +1,116 @@ +{ + "entries": [ + { + "key": "MeshVertexUVData", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MeshVertexUVData" + }, + "methods": [ + { + "key": "GetCustomName", + "context": "MeshVertexUVData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCustomName" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCustomName is invoked" + }, + "details": { + "name": "MeshVertexUVData::GetCustomName", + "category": "Other" + }, + "params": [ + { + "typeid": "{B435C091-482C-4EB9-B1F4-FA5B480796DA}", + "details": { + "name": "const MeshVertexUVData&" + } + } + ], + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + }, + { + "key": "GetCount", + "context": "MeshVertexUVData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCount is invoked" + }, + "details": { + "name": "MeshVertexUVData::GetCount", + "category": "Other" + }, + "params": [ + { + "typeid": "{B435C091-482C-4EB9-B1F4-FA5B480796DA}", + "details": { + "name": "MeshVertexUVData*" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetUV", + "context": "MeshVertexUVData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetUV" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetUV is invoked" + }, + "details": { + "name": "MeshVertexUVData::GetUV", + "category": "Other" + }, + "params": [ + { + "typeid": "{B435C091-482C-4EB9-B1F4-FA5B480796DA}", + "details": { + "name": "MeshVertexUVData*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "const Vector2&" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MixedGradientComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MixedGradientComponent.names new file mode 100644 index 0000000000..f0aa39575a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MixedGradientComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "MixedGradientComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MixedGradientComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MixedGradientConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MixedGradientConfig.names new file mode 100644 index 0000000000..c603845990 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MixedGradientConfig.names @@ -0,0 +1,138 @@ +{ + "entries": [ + { + "key": "MixedGradientConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MixedGradientConfig" + }, + "methods": [ + { + "key": "GetNumLayers", + "context": "MixedGradientConfig", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNumLayers" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNumLayers is invoked" + }, + "details": { + "name": "MixedGradientConfig::GetNumLayers", + "category": "Other" + }, + "params": [ + { + "typeid": "{40403A44-31FE-4D1D-941C-6593759CCCBD}", + "details": { + "name": "MixedGradientConfig*" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "AddLayer", + "context": "MixedGradientConfig", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddLayer" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddLayer is invoked" + }, + "details": { + "name": "MixedGradientConfig::AddLayer", + "category": "Other" + }, + "params": [ + { + "typeid": "{40403A44-31FE-4D1D-941C-6593759CCCBD}", + "details": { + "name": "MixedGradientConfig*" + } + } + ] + }, + { + "key": "RemoveLayer", + "context": "MixedGradientConfig", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RemoveLayer" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RemoveLayer is invoked" + }, + "details": { + "name": "MixedGradientConfig::RemoveLayer", + "category": "Other" + }, + "params": [ + { + "typeid": "{40403A44-31FE-4D1D-941C-6593759CCCBD}", + "details": { + "name": "MixedGradientConfig*" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetLayer", + "context": "MixedGradientConfig", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetLayer" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetLayer is invoked" + }, + "details": { + "name": "MixedGradientConfig::GetLayer", + "category": "Other" + }, + "params": [ + { + "typeid": "{40403A44-31FE-4D1D-941C-6593759CCCBD}", + "details": { + "name": "MixedGradientConfig*" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ], + "results": [ + { + "typeid": "{957264F7-A169-4D47-B94C-659B078026D4}", + "details": { + "name": "MixedGradientLayer*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MixedGradientLayer.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MixedGradientLayer.names new file mode 100644 index 0000000000..b8588fa56c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MixedGradientLayer.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "MixedGradientLayer", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MixedGradientLayer" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ModelPreset.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ModelPreset.names new file mode 100644 index 0000000000..ca6c97b051 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ModelPreset.names @@ -0,0 +1,140 @@ +{ + "entries": [ + { + "key": "ModelPreset", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Model Preset" + }, + "methods": [ + { + "key": "GetdisplayName", + "details": { + "name": "Get Display Name" + }, + "params": [ + { + "typeid": "{A7304AE2-EC26-44A4-8C00-89D9731CCB13}", + "details": { + "name": "Model Preset" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Display Name" + } + } + ] + }, + { + "key": "SetdisplayName", + "details": { + "name": "Set Display Name" + }, + "params": [ + { + "typeid": "{A7304AE2-EC26-44A4-8C00-89D9731CCB13}", + "details": { + "name": "Model Preset" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Display Name" + } + } + ] + }, + { + "key": "GetmodelAsset", + "details": { + "name": "Get Model Asset" + }, + "params": [ + { + "typeid": "{A7304AE2-EC26-44A4-8C00-89D9731CCB13}", + "details": { + "name": "Model Preset" + } + } + ], + "results": [ + { + "typeid": "{A1F6761B-B5CA-59E6-89FF-EB0ABDF6BD68}", + "details": { + "name": "Model Asset" + } + } + ] + }, + { + "key": "SetmodelAsset", + "details": { + "name": "Set Model Asset" + }, + "params": [ + { + "typeid": "{A7304AE2-EC26-44A4-8C00-89D9731CCB13}", + "details": { + "name": "Model Preset" + } + }, + { + "typeid": "{A1F6761B-B5CA-59E6-89FF-EB0ABDF6BD68}", + "details": { + "name": "Model Asset" + } + } + ] + }, + { + "key": "GetpreviewImageAsset", + "details": { + "name": "Get Preview Image Asset" + }, + "params": [ + { + "typeid": "{A7304AE2-EC26-44A4-8C00-89D9731CCB13}", + "details": { + "name": "Model Preset" + } + } + ], + "results": [ + { + "typeid": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "details": { + "name": "Preview Image Asset" + } + } + ] + }, + { + "key": "SetpreviewImageAsset", + "details": { + "name": "Set Preview Image Asset" + }, + "params": [ + { + "typeid": "{A7304AE2-EC26-44A4-8C00-89D9731CCB13}", + "details": { + "name": "Model Preset" + } + }, + { + "typeid": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "details": { + "name": "Preview Image Asset" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MotionEvent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MotionEvent.names new file mode 100644 index 0000000000..b75bf1286a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MotionEvent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "MotionEvent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "MotionEvent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MultiplayerSystemComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MultiplayerSystemComponent.names new file mode 100644 index 0000000000..cfa35a377f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/MultiplayerSystemComponent.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "MultiplayerSystemComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Multiplayer" + }, + "methods": [ + { + "key": "GetOnClientDisconnectedEvent", + "context": "MultiplayerSystemComponent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get On Client Disconnected Event" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get On Client Disconnected Event is invoked" + }, + "details": { + "name": "Get On Client Disconnected Event", + "category": "Other" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{F429F985-AF00-529B-8449-16E56694E5F9}", + "details": { + "name": "Event" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Name.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Name.names new file mode 100644 index 0000000000..1104d336a2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Name.names @@ -0,0 +1,146 @@ +{ + "entries": [ + { + "key": "Name", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Name" + }, + "methods": [ + { + "key": "ToString", + "context": "Name", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToString" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToString is invoked" + }, + "details": { + "name": "Name::ToString", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", + "details": { + "name": "Name*" + } + } + ], + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + }, + { + "key": "Set", + "context": "Name", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set is invoked" + }, + "details": { + "name": "Name::Set", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", + "details": { + "name": "Name*" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>" + } + } + ] + }, + { + "key": "IsEmpty", + "context": "Name", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsEmpty is invoked" + }, + "details": { + "name": "Name::IsEmpty", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", + "details": { + "name": "Name*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Equal", + "context": "Name", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Equal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Equal is invoked" + }, + "details": { + "name": "Name::Equal", + "category": "Other" + }, + "params": [ + { + "typeid": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", + "details": { + "name": "Name*" + } + }, + { + "typeid": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", + "details": { + "name": "const Name&" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/NetBindComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/NetBindComponent.names new file mode 100644 index 0000000000..5fe51e3a68 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/NetBindComponent.names @@ -0,0 +1,147 @@ +{ + "entries": [ + { + "key": "NetBindComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Net Entity", + "category": "Multiplayer" + }, + "methods": [ + { + "key": "IsNetEntityRoleAuthority", + "context": "NetBindComponent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Net Entity Role Authority" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Net Entity Role Authority is invoked" + }, + "details": { + "name": "Is Role Authority", + "category": "Other" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Role Authority" + } + } + ] + }, + { + "key": "IsNetEntityRoleAutonomous", + "context": "NetBindComponent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsNetEntityRoleAutonomous" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Net Entity Role Autonomous is invoked" + }, + "details": { + "name": "Is Role Autonomous", + "category": "Other" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Role Autonomous" + } + } + ] + }, + { + "key": "IsNetEntityRoleClient", + "context": "NetBindComponent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Role Client" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Role Client is invoked" + }, + "details": { + "name": "Is Role Client", + "category": "Other" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Role Client" + } + } + ] + }, + { + "key": "IsNetEntityRoleServer", + "context": "NetBindComponent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Role Server" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Role Server is invoked" + }, + "details": { + "name": "Is Role Server", + "category": "Other" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Role Server" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/NetworkTestPlayerComponentNetworkInput.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/NetworkTestPlayerComponentNetworkInput.names new file mode 100644 index 0000000000..0a6c5db61f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/NetworkTestPlayerComponentNetworkInput.names @@ -0,0 +1,136 @@ +{ + "entries": [ + { + "key": "NetworkTestPlayerComponentNetworkInput", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Network Test Player Component Network Input", + "category": "Automated Testing" + }, + "methods": [ + { + "key": "CreateFromValues", + "context": "NetworkTestPlayerComponentNetworkInput", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create From Values" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create From Values is invoked" + }, + "details": { + "name": "Create From Values" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Forward Back" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Left Right" + } + } + ], + "results": [ + { + "typeid": "{12A1776B-61F6-4E5F-356A-AD718A62051F}", + "details": { + "name": "Network Test Player Component Network Input" + } + } + ] + }, + { + "key": "FwdBack", + "details": { + "name": "Get Forward Back" + }, + "params": [ + { + "typeid": "{12A1776B-61F6-4E5F-356A-AD718A62051F}", + "details": { + "name": "Network Test Player Component Network Input" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Forward Back" + } + } + ] + }, + { + "key": "FwdBack", + "details": { + "name": "Set Forward Back" + }, + "params": [ + { + "typeid": "{12A1776B-61F6-4E5F-356A-AD718A62051F}", + "details": { + "name": "Network Test Player Component Network Input" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Forward Back" + } + } + ] + }, + { + "key": "LeftRight", + "details": { + "name": "Get Left Right" + }, + "params": [ + { + "typeid": "{12A1776B-61F6-4E5F-356A-AD718A62051F}", + "details": { + "name": "Network Test Player Component Network Input" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Left Right" + } + } + ] + }, + { + "key": "LeftRight", + "details": { + "name": "Set Left Right" + }, + "params": [ + { + "typeid": "{12A1776B-61F6-4E5F-356A-AD718A62051F}", + "details": { + "name": "Network Test Player Component Network Input" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Left Right" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/NodeIndex.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/NodeIndex.names new file mode 100644 index 0000000000..2cfbfb6ff8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/NodeIndex.names @@ -0,0 +1,186 @@ +{ + "entries": [ + { + "key": "NodeIndex", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "NodeIndex" + }, + "methods": [ + { + "key": "Equal", + "context": "NodeIndex", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Equal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Equal is invoked" + }, + "details": { + "name": "NodeIndex::Equal", + "category": "Other" + }, + "params": [ + { + "typeid": "{4AD18037-E629-480D-8165-997A137327FD}", + "details": { + "name": "AZ::SceneAPI::Containers::SceneGraph::NodeIndex*" + } + }, + { + "typeid": "{4AD18037-E629-480D-8165-997A137327FD}", + "details": { + "name": "AZ::SceneAPI::Containers::SceneGraph::NodeIndex" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "ToString", + "context": "NodeIndex", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToString" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToString is invoked" + }, + "details": { + "name": "NodeIndex::ToString", + "category": "Other" + }, + "params": [ + { + "typeid": "{4AD18037-E629-480D-8165-997A137327FD}", + "details": { + "name": "const AZ::SceneAPI::Containers::SceneGraph::NodeIndex&" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + }, + { + "key": "IsValid", + "context": "NodeIndex", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsValid" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsValid is invoked" + }, + "details": { + "name": "NodeIndex::IsValid", + "category": "Other" + }, + "params": [ + { + "typeid": "{4AD18037-E629-480D-8165-997A137327FD}", + "details": { + "name": "AZ::SceneAPI::Containers::SceneGraph::NodeIndex*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Distance", + "context": "NodeIndex", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Distance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Distance is invoked" + }, + "details": { + "name": "NodeIndex::Distance", + "category": "Other" + }, + "params": [ + { + "typeid": "{4AD18037-E629-480D-8165-997A137327FD}", + "details": { + "name": "AZ::SceneAPI::Containers::SceneGraph::NodeIndex*" + } + }, + { + "typeid": "{4AD18037-E629-480D-8165-997A137327FD}", + "details": { + "name": "AZ::SceneAPI::Containers::SceneGraph::NodeIndex" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "AsNumber", + "context": "NodeIndex", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AsNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AsNumber is invoked" + }, + "details": { + "name": "NodeIndex::AsNumber", + "category": "Other" + }, + "params": [ + { + "typeid": "{4AD18037-E629-480D-8165-997A137327FD}", + "details": { + "name": "AZ::SceneAPI::Containers::SceneGraph::NodeIndex*" + } + } + ], + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/OutputDeviceTransformType.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/OutputDeviceTransformType.names new file mode 100644 index 0000000000..eefbac6a0b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/OutputDeviceTransformType.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "OutputDeviceTransformType", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "OutputDeviceTransformType" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PerlinGradientComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PerlinGradientComponent.names new file mode 100644 index 0000000000..6acda4e4e1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PerlinGradientComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "PerlinGradientComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "PerlinGradientComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PerlinGradientConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PerlinGradientConfig.names new file mode 100644 index 0000000000..3f36153bb8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PerlinGradientConfig.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "PerlinGradientConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "PerlinGradientConfig" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PhysicsScene.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PhysicsScene.names new file mode 100644 index 0000000000..3c1ef2eaaa --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PhysicsScene.names @@ -0,0 +1,83 @@ +{ + "entries": [ + { + "key": "PhysicsScene", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Physics Scene" + }, + "methods": [ + { + "key": "GetOnGravityChangeEvent", + "context": "PhysicsScene", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get On Gravity Change Event" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get On Gravity Change Event is invoked" + }, + "details": { + "name": "Get On Gravity Change Event" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Scene Name" + } + } + ], + "results": [ + { + "typeid": "{4985DFB0-7CD9-5B28-980B-BA2C701BE3D6}", + "details": { + "name": "Gravity Change Event" + } + } + ] + }, + { + "key": "QueryScene", + "context": "PhysicsScene", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Query Scene" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Query Scene is invoked" + }, + "details": { + "name": "Query Scene" + }, + "params": [ + { + "typeid": "{52BD8163-BDC4-4B09-ABB2-11DD1F601FFD}", + "details": { + "name": "Scene" + } + }, + { + "typeid": "{76ECAB7D-42BA-461F-82E6-DCED8E1BDCB9}", + "details": { + "name": "const SceneQueryRequest*", + "tooltip": "Parameters for scene queries" + } + } + ], + "results": [ + { + "typeid": "{BAFCC4E7-A06B-4909-B2AE-C89D9E84FE4E}", + "details": { + "name": "Scene Query Hits" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PhysicsSystemInterface.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PhysicsSystemInterface.names new file mode 100644 index 0000000000..84b24aa2b2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PhysicsSystemInterface.names @@ -0,0 +1,135 @@ +{ + "entries": [ + { + "key": "PhysicsSystemInterface", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Physics System", + "category": "PhysX" + }, + "methods": [ + { + "key": "GetOnPresimulateEvent", + "context": "PhysicsSystemInterface", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get On Presimulate Event" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get On Presimulate Event is invoked" + }, + "details": { + "name": "Get On Presimulate Event" + }, + "results": [ + { + "typeid": "{F0A3166F-115C-5C3E-8D65-28FBA4420028}", + "details": { + "name": "Event" + } + } + ] + }, + { + "key": "GetOnPostsimulateEvent", + "context": "PhysicsSystemInterface", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get On Postsimulate Event" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get On Postsimulate Event is invoked" + }, + "details": { + "name": "Get On Postsimulate Event" + }, + "results": [ + { + "typeid": "{F0A3166F-115C-5C3E-8D65-28FBA4420028}", + "details": { + "name": "Event" + } + } + ] + }, + { + "key": "GetSceneHandle", + "context": "PhysicsSystemInterface", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Scene Handle" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Scene Handle is invoked" + }, + "details": { + "name": "Get Scene Handle" + }, + "params": [ + { + "typeid": "{B6F4D92A-061B-4CB3-AAB5-984B599A53AE}", + "details": { + "name": "Interface" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Scene Name" + } + } + ], + "results": [ + { + "typeid": "{36669095-4036-5479-B116-41A32E4E16EA}", + "details": { + "name": "Scene Handle" + } + } + ] + }, + { + "key": "GetScene", + "context": "PhysicsSystemInterface", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Scene" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Scene is invoked" + }, + "details": { + "name": "Get Scene" + }, + "params": [ + { + "typeid": "{B6F4D92A-061B-4CB3-AAB5-984B599A53AE}", + "details": { + "name": "Interface" + } + }, + { + "typeid": "{36669095-4036-5479-B116-41A32E4E16EA}", + "details": { + "name": "Scene Handle" + } + } + ], + "results": [ + { + "typeid": "{52BD8163-BDC4-4B09-ABB2-11DD1F601FFD}", + "details": { + "name": "Scene" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Platform.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Platform.names new file mode 100644 index 0000000000..cc41ff44a3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Platform.names @@ -0,0 +1,130 @@ +{ + "entries": [ + { + "key": "Platform", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Platform", + "category": "Utilities" + }, + "methods": [ + { + "key": "GetName", + "context": "Platform", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Name is invoked" + }, + "details": { + "name": "Get Name" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Id" + } + } + ], + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Name" + } + } + ] + }, + { + "key": "GetMac", + "details": { + "name": "Get Mac" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Id" + } + } + ] + }, + { + "key": "GetLinux", + "details": { + "name": "Get Linux" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Id" + } + } + ] + }, + { + "key": "GetiOS", + "details": { + "name": "Get iOS" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Id" + } + } + ] + }, + { + "key": "GetWindows64", + "details": { + "name": "Get Windows64" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Id" + } + } + ] + }, + { + "key": "GetAndroid64", + "details": { + "name": "Get Android64" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Id" + } + } + ] + }, + { + "key": "GetCurrent", + "details": { + "name": "Get Current" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Id" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PolygonPrism.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PolygonPrism.names new file mode 100644 index 0000000000..193f0e94c9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PolygonPrism.names @@ -0,0 +1,62 @@ +{ + "entries": [ + { + "key": "PolygonPrism", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Polygon Prism", + "category": "Shape" + }, + "methods": [ + { + "key": "height", + "details": { + "name": "Get Height" + }, + "params": [ + { + "typeid": "{F01C8BDD-6F24-4344-8945-521A8750B30B}", + "details": { + "name": "Polygon Prism", + "tooltip": "Polygon prism shape" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Height" + } + } + ] + }, + { + "key": "vertexContainer", + "details": { + "name": "Get Vertex Container" + }, + "params": [ + { + "typeid": "{F01C8BDD-6F24-4344-8945-521A8750B30B}", + "details": { + "name": "Polygon Prism", + "tooltip": "Polygon prism shape" + } + } + ], + "results": [ + { + "typeid": "{EBE98B36-0783-5226-9739-064BD41EBB52}", + "details": { + "name": "Vertex Container", + "tooltip": "Vertex data" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PositionSplineQueryResult.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PositionSplineQueryResult.names new file mode 100644 index 0000000000..6a778c30a2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PositionSplineQueryResult.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "PositionSplineQueryResult", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "PositionSplineQueryResult" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PosterizeGradientComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PosterizeGradientComponent.names new file mode 100644 index 0000000000..5768ce41f2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PosterizeGradientComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "PosterizeGradientComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "PosterizeGradientComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PosterizeGradientConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PosterizeGradientConfig.names new file mode 100644 index 0000000000..bea4631714 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PosterizeGradientConfig.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "PosterizeGradientConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "PosterizeGradientConfig" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PropertyTreeEditor.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PropertyTreeEditor.names new file mode 100644 index 0000000000..a4da66e5fd --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PropertyTreeEditor.names @@ -0,0 +1,624 @@ +{ + "entries": [ + { + "key": "PropertyTreeEditor", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "PropertyTreeEditor" + }, + "methods": [ + { + "key": "ResetContainer", + "context": "PropertyTreeEditor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ResetContainer" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ResetContainer is invoked" + }, + "details": { + "name": "PropertyTreeEditor::ResetContainer", + "category": "Other" + }, + "params": [ + { + "typeid": "{704E727E-E941-47EE-9C70-065BC3AD66F3}", + "details": { + "name": "PropertyTreeEditor*" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>" + } + } + ], + "results": [ + { + "typeid": "{B57176AF-63A1-5531-B77E-BD7337E66127}", + "details": { + "name": "Outcome, allocator>>" + } + } + ] + }, + { + "key": "CompareProperty", + "context": "PropertyTreeEditor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CompareProperty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CompareProperty is invoked" + }, + "details": { + "name": "PropertyTreeEditor::CompareProperty", + "category": "Other" + }, + "params": [ + { + "typeid": "{704E727E-E941-47EE-9C70-065BC3AD66F3}", + "details": { + "name": "PropertyTreeEditor*" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>" + } + }, + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "const any&" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "IsContainer", + "context": "PropertyTreeEditor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsContainer" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsContainer is invoked" + }, + "details": { + "name": "PropertyTreeEditor::IsContainer", + "category": "Other" + }, + "params": [ + { + "typeid": "{704E727E-E941-47EE-9C70-065BC3AD66F3}", + "details": { + "name": "PropertyTreeEditor*" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetContainerCount", + "context": "PropertyTreeEditor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetContainerCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetContainerCount is invoked" + }, + "details": { + "name": "PropertyTreeEditor::GetContainerCount", + "category": "Other" + }, + "params": [ + { + "typeid": "{704E727E-E941-47EE-9C70-065BC3AD66F3}", + "details": { + "name": "PropertyTreeEditor*" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>" + } + } + ], + "results": [ + { + "typeid": "{B57176AF-63A1-5531-B77E-BD7337E66127}", + "details": { + "name": "Outcome, allocator>>" + } + } + ] + }, + { + "key": "SetProperty", + "context": "PropertyTreeEditor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetProperty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetProperty is invoked" + }, + "details": { + "name": "PropertyTreeEditor::SetProperty", + "category": "Other" + }, + "params": [ + { + "typeid": "{704E727E-E941-47EE-9C70-065BC3AD66F3}", + "details": { + "name": "PropertyTreeEditor*" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>" + } + }, + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "const any&" + } + } + ], + "results": [ + { + "typeid": "{B57176AF-63A1-5531-B77E-BD7337E66127}", + "details": { + "name": "Outcome, allocator>>" + } + } + ] + }, + { + "key": "AppendContainerItem", + "context": "PropertyTreeEditor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AppendContainerItem" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AppendContainerItem is invoked" + }, + "details": { + "name": "PropertyTreeEditor::AppendContainerItem", + "category": "Other" + }, + "params": [ + { + "typeid": "{704E727E-E941-47EE-9C70-065BC3AD66F3}", + "details": { + "name": "PropertyTreeEditor*" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>" + } + }, + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "const any&" + } + } + ], + "results": [ + { + "typeid": "{B57176AF-63A1-5531-B77E-BD7337E66127}", + "details": { + "name": "Outcome, allocator>>" + } + } + ] + }, + { + "key": "GetProperty", + "context": "PropertyTreeEditor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetProperty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetProperty is invoked" + }, + "details": { + "name": "PropertyTreeEditor::GetProperty", + "category": "Other" + }, + "params": [ + { + "typeid": "{704E727E-E941-47EE-9C70-065BC3AD66F3}", + "details": { + "name": "PropertyTreeEditor*" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>" + } + } + ], + "results": [ + { + "typeid": "{B57176AF-63A1-5531-B77E-BD7337E66127}", + "details": { + "name": "Outcome, allocator>>" + } + } + ] + }, + { + "key": "AddContainerItem", + "context": "PropertyTreeEditor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddContainerItem" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddContainerItem is invoked" + }, + "details": { + "name": "PropertyTreeEditor::AddContainerItem", + "category": "Other" + }, + "params": [ + { + "typeid": "{704E727E-E941-47EE-9C70-065BC3AD66F3}", + "details": { + "name": "PropertyTreeEditor*" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>" + } + }, + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "const any&" + } + }, + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "const any&" + } + } + ], + "results": [ + { + "typeid": "{B57176AF-63A1-5531-B77E-BD7337E66127}", + "details": { + "name": "Outcome, allocator>>" + } + } + ] + }, + { + "key": "RemoveContainerItem", + "context": "PropertyTreeEditor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RemoveContainerItem" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RemoveContainerItem is invoked" + }, + "details": { + "name": "PropertyTreeEditor::RemoveContainerItem", + "category": "Other" + }, + "params": [ + { + "typeid": "{704E727E-E941-47EE-9C70-065BC3AD66F3}", + "details": { + "name": "PropertyTreeEditor*" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>" + } + }, + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "const any&" + } + } + ], + "results": [ + { + "typeid": "{B57176AF-63A1-5531-B77E-BD7337E66127}", + "details": { + "name": "Outcome, allocator>>" + } + } + ] + }, + { + "key": "BuildPathsListWithTypes", + "context": "PropertyTreeEditor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BuildPathsListWithTypes" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BuildPathsListWithTypes is invoked" + }, + "details": { + "name": "PropertyTreeEditor::BuildPathsListWithTypes", + "category": "Other" + }, + "params": [ + { + "typeid": "{704E727E-E941-47EE-9C70-065BC3AD66F3}", + "details": { + "name": "PropertyTreeEditor*" + } + } + ], + "results": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "const AZStd::vector>" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "BuildPathsList", + "context": "PropertyTreeEditor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BuildPathsList" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BuildPathsList is invoked" + }, + "details": { + "name": "PropertyTreeEditor::BuildPathsList", + "category": "Other" + }, + "params": [ + { + "typeid": "{704E727E-E941-47EE-9C70-065BC3AD66F3}", + "details": { + "name": "PropertyTreeEditor*" + } + } + ], + "results": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "const AZStd::vector>" + } + }, + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "const any&" + } + }, + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "const any&" + } + } + ], + "results": [ + { + "typeid": "{B57176AF-63A1-5531-B77E-BD7337E66127}", + "details": { + "name": "Outcome, allocator>>" + } + } + ] + }, + { + "key": "GetContainerItem", + "context": "PropertyTreeEditor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetContainerItem" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetContainerItem is invoked" + }, + "details": { + "name": "PropertyTreeEditor::GetContainerItem", + "category": "Other" + }, + "params": [ + { + "typeid": "{704E727E-E941-47EE-9C70-065BC3AD66F3}", + "details": { + "name": "PropertyTreeEditor*" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>" + } + }, + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "const any&" + } + } + ], + "results": [ + { + "typeid": "{B57176AF-63A1-5531-B77E-BD7337E66127}", + "details": { + "name": "Outcome, allocator>>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PythonBehaviorInfo.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PythonBehaviorInfo.names new file mode 100644 index 0000000000..44d606200e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/PythonBehaviorInfo.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "PythonBehaviorInfo", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "PythonBehaviorInfo" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/RandomGradientComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/RandomGradientComponent.names new file mode 100644 index 0000000000..39484e12ca --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/RandomGradientComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "RandomGradientComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "RandomGradientComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/RandomGradientConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/RandomGradientConfig.names new file mode 100644 index 0000000000..437018b5ee --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/RandomGradientConfig.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "RandomGradientConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "RandomGradientConfig" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/RandomTimedSpawnerComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/RandomTimedSpawnerComponent.names new file mode 100644 index 0000000000..580b4b9b73 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/RandomTimedSpawnerComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "RandomTimedSpawnerComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "RandomTimedSpawnerComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/RaySplineQueryResult.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/RaySplineQueryResult.names new file mode 100644 index 0000000000..d8bae42895 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/RaySplineQueryResult.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "RaySplineQueryResult", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "RaySplineQueryResult" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ReferenceGradientComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ReferenceGradientComponent.names new file mode 100644 index 0000000000..f8e307243e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ReferenceGradientComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "ReferenceGradientComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ReferenceGradientComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ReferenceGradientConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ReferenceGradientConfig.names new file mode 100644 index 0000000000..f54a665d2d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ReferenceGradientConfig.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "ReferenceGradientConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ReferenceGradientConfig" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ReferenceShapeConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ReferenceShapeConfig.names new file mode 100644 index 0000000000..ba88940ef2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ReferenceShapeConfig.names @@ -0,0 +1,58 @@ +{ + "entries": [ + { + "key": "ReferenceShapeConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ReferenceShapeConfig" + }, + "methods": [ + { + "key": "shapeEntityId", + "details": { + "name": "ReferenceShapeConfig::shapeEntityId::Getter" + }, + "params": [ + { + "typeid": "{3E49974D-2EE0-4AF9-92B9-229A22B515C3}", + "details": { + "name": "ReferenceShapeConfig*" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId&", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "shapeEntityId", + "details": { + "name": "ReferenceShapeConfig::shapeEntityId::Setter" + }, + "params": [ + { + "typeid": "{3E49974D-2EE0-4AF9-92B9-229A22B515C3}", + "details": { + "name": "ReferenceShapeConfig*" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "const EntityId&", + "tooltip": "Entity Unique Id" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/RuntimeData.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/RuntimeData.names new file mode 100644 index 0000000000..d0b45d418a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/RuntimeData.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "RuntimeData", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "RuntimeData" + }, + "methods": [ + { + "key": "GetRequiredAssets", + "context": "RuntimeData", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetRequiredAssets" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetRequiredAssets is invoked" + }, + "details": { + "name": "RuntimeData::GetRequiredAssets", + "category": "Other" + }, + "params": [ + { + "typeid": "{A935EBBC-D167-4C59-927C-5D98C6337B9C}", + "details": { + "name": "const RuntimeData&" + } + } + ], + "results": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector, allocator>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Scene.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Scene.names new file mode 100644 index 0000000000..38c123e0cf --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Scene.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "Scene", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Scene" + }, + "methods": [ + { + "key": "GetOriginalSceneOrientation", + "context": "Scene", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetOriginalSceneOrientation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetOriginalSceneOrientation is invoked" + }, + "details": { + "name": "Scene::GetOriginalSceneOrientation", + "category": "Other" + }, + "params": [ + { + "typeid": "{1F2E6142-B0D8-42C6-A6E5-CD726DAA9EF0}", + "details": { + "name": "Scene*" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SceneGraphName.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SceneGraphName.names new file mode 100644 index 0000000000..f3bb103ae3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SceneGraphName.names @@ -0,0 +1,110 @@ +{ + "entries": [ + { + "key": "SceneGraphName", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "SceneGraphName" + }, + "methods": [ + { + "key": "GetPath", + "context": "SceneGraphName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPath" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPath is invoked" + }, + "details": { + "name": "SceneGraphName::GetPath", + "category": "Other" + }, + "params": [ + { + "typeid": "{4077AC3C-B301-4F5A-BEA7-54D6511AEC2E}", + "details": { + "name": "AZ::SceneAPI::Containers::SceneGraph::Name*" + } + } + ], + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + }, + { + "key": "GetName", + "context": "SceneGraphName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetName" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetName is invoked" + }, + "details": { + "name": "SceneGraphName::GetName", + "category": "Other" + }, + "params": [ + { + "typeid": "{4077AC3C-B301-4F5A-BEA7-54D6511AEC2E}", + "details": { + "name": "AZ::SceneAPI::Containers::SceneGraph::Name*" + } + } + ], + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + }, + { + "key": "ToString", + "context": "SceneGraphName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToString" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToString is invoked" + }, + "details": { + "name": "SceneGraphName::ToString", + "category": "Other" + }, + "params": [ + { + "typeid": "{4077AC3C-B301-4F5A-BEA7-54D6511AEC2E}", + "details": { + "name": "const AZ::SceneAPI::Containers::SceneGraph::Name&" + } + } + ], + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SceneManifest.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SceneManifest.names new file mode 100644 index 0000000000..ede7f6ea12 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SceneManifest.names @@ -0,0 +1,84 @@ +{ + "entries": [ + { + "key": "SceneManifest", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "SceneManifest" + }, + "methods": [ + { + "key": "ImportFromJson", + "context": "SceneManifest", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ImportFromJson" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ImportFromJson is invoked" + }, + "details": { + "name": "SceneManifest::ImportFromJson", + "category": "Other" + }, + "params": [ + { + "typeid": "{9274AD17-3212-4651-9F3B-7DCCB080E467}", + "details": { + "name": "SceneManifest&" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "ExportToJson", + "context": "SceneManifest", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ExportToJson" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ExportToJson is invoked" + }, + "details": { + "name": "SceneManifest::ExportToJson", + "category": "Other" + }, + "params": [ + { + "typeid": "{9274AD17-3212-4651-9F3B-7DCCB080E467}", + "details": { + "name": "SceneManifest&" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SceneQueries.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SceneQueries.names new file mode 100644 index 0000000000..731a41bac1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SceneQueries.names @@ -0,0 +1,69 @@ +{ + "entries": [ + { + "key": "SceneQueries", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Scene Queries" + }, + "methods": [ + { + "key": "CreateRayCastRequest", + "context": "SceneQueries", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CreateRayCastRequest" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CreateRayCastRequest is invoked" + }, + "details": { + "name": "SceneQueries::CreateRayCastRequest", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Start", + "tooltip": "The position from which the raycast starts" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Direction", + "tooltip": "The (normalized) direction in which to fire the raycast" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Distance", + "tooltip": "The length of the raycast" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Collision Group", + "tooltip": "Allows filtering of objects intersecting the raycast based on their collision layers" + } + } + ], + "results": [ + { + "typeid": "{53EAD088-A391-48F1-8370-2A1DBA31512F}", + "details": { + "name": "RayCastRequest", + "tooltip": "Parameters for raycast" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ScriptTimePoint.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ScriptTimePoint.names new file mode 100644 index 0000000000..b43f891c4c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ScriptTimePoint.names @@ -0,0 +1,107 @@ +{ + "entries": [ + { + "key": "ScriptTimePoint", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Script Time Point" + }, + "methods": [ + { + "key": "ToString", + "context": "ScriptTimePoint", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke To String" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after To String is invoked" + }, + "details": { + "name": "To String" + }, + "params": [ + { + "typeid": "{4C0F6AD4-0D4F-4354-AD4A-0C01E948245C}", + "details": { + "name": "Script Time Point" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "String" + } + } + ] + }, + { + "key": "GetSeconds", + "context": "ScriptTimePoint", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Seconds" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Seconds is invoked" + }, + "details": { + "name": "Get Seconds" + }, + "params": [ + { + "typeid": "{4C0F6AD4-0D4F-4354-AD4A-0C01E948245C}", + "details": { + "name": "Script Time Point" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "Seconds" + } + } + ] + }, + { + "key": "GetMilliseconds", + "context": "ScriptTimePoint", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Milliseconds" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Milliseconds is invoked" + }, + "details": { + "name": "Get Milliseconds" + }, + "params": [ + { + "typeid": "{4C0F6AD4-0D4F-4354-AD4A-0C01E948245C}", + "details": { + "name": "Script Time Point" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "Milliseconds" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SearchFilter.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SearchFilter.names new file mode 100644 index 0000000000..851aef1fda --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SearchFilter.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "SearchFilter", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "SearchFilter" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SequenceComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SequenceComponent.names new file mode 100644 index 0000000000..59c9be78f7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SequenceComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "SequenceComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "SequenceComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SettingsRegistryInterface.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SettingsRegistryInterface.names new file mode 100644 index 0000000000..8500946948 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SettingsRegistryInterface.names @@ -0,0 +1,694 @@ +{ + "entries": [ + { + "key": "SettingsRegistryInterface", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Settings Registry", + "category": "Registry" + }, + "methods": [ + { + "key": "GetFloat", + "context": "SettingsRegistryInterface", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Float" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Float is invoked" + }, + "details": { + "name": "Get Float" + }, + "params": [ + { + "typeid": "{795C80A0-D243-473B-972A-C32CA487BAA5}", + "details": { + "name": "Settings Registry Proxy" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "JSON Path" + } + } + ], + "results": [ + { + "typeid": "{8FE8A00F-5FE8-54A1-A314-346843AD21B6}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "SetFloat", + "context": "SettingsRegistryInterface", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Float" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Float is invoked" + }, + "details": { + "name": "Set Float" + }, + "params": [ + { + "typeid": "{795C80A0-D243-473B-972A-C32CA487BAA5}", + "details": { + "name": "Settings Registry Proxy" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "JSON Path" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "Value" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "RemoveKey", + "context": "SettingsRegistryInterface", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Remove Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Remove Key is invoked" + }, + "details": { + "name": "Remove Key" + }, + "params": [ + { + "typeid": "{795C80A0-D243-473B-972A-C32CA487BAA5}", + "details": { + "name": "Settings Registry Proxy" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "JSON Path" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "SetInt", + "context": "SettingsRegistryInterface", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Int" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Int is invoked" + }, + "details": { + "name": "Set Int" + }, + "params": [ + { + "typeid": "{795C80A0-D243-473B-972A-C32CA487BAA5}", + "details": { + "name": "Settings Registry Proxy" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "JSON Path" + } + }, + { + "typeid": "{70D8A282-A1EA-462D-9D04-51EDE81FAC2F}", + "details": { + "name": "Value" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "SetUInt", + "context": "SettingsRegistryInterface", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set UInt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set UInt is invoked" + }, + "details": { + "name": "Set UInt" + }, + "params": [ + { + "typeid": "{795C80A0-D243-473B-972A-C32CA487BAA5}", + "details": { + "name": "Settings Registry Proxy" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "JSON Path" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Value" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "GetBool", + "context": "SettingsRegistryInterface", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Bool" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Bool is invoked" + }, + "details": { + "name": "Get Bool" + }, + "params": [ + { + "typeid": "{795C80A0-D243-473B-972A-C32CA487BAA5}", + "details": { + "name": "Settings Registry Proxy" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "JSON Path" + } + } + ], + "results": [ + { + "typeid": "{0170062C-2E7E-5CEB-BAB8-F7663BEF7B3E}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "GetInt", + "context": "SettingsRegistryInterface", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Int" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Int is invoked" + }, + "details": { + "name": "Get Int" + }, + "params": [ + { + "typeid": "{795C80A0-D243-473B-972A-C32CA487BAA5}", + "details": { + "name": "Settings Registry Proxy" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "JSON Path" + } + } + ], + "results": [ + { + "typeid": "{8E0A7AC1-C649-56B4-99CF-8BE08EEFC47B}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "GetUInt", + "context": "SettingsRegistryInterface", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get UInt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get UInt is invoked" + }, + "details": { + "name": "Get UInt" + }, + "params": [ + { + "typeid": "{795C80A0-D243-473B-972A-C32CA487BAA5}", + "details": { + "name": "Settings Registry Proxy" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "JSON Path" + } + } + ], + "results": [ + { + "typeid": "{858A22B8-1B5E-5016-BF33-B2469DD9CAD3}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "GetNotifyEvent", + "context": "SettingsRegistryInterface", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Notify Event" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Notify Event is invoked" + }, + "details": { + "name": "Get Notify Event" + }, + "params": [ + { + "typeid": "{795C80A0-D243-473B-972A-C32CA487BAA5}", + "details": { + "name": "Settings Registry Proxy" + } + } + ], + "results": [ + { + "typeid": "{84290CFC-1335-5341-AD8B-0A3FE9FE46D0}", + "details": { + "name": "Script Notify Event" + } + } + ] + }, + { + "key": "MergeSettings", + "context": "SettingsRegistryInterface", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Merge Settings" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Merge Settings is invoked" + }, + "details": { + "name": "Merge Settings" + }, + "params": [ + { + "typeid": "{795C80A0-D243-473B-972A-C32CA487BAA5}", + "details": { + "name": "Settings Registry Proxy" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "JSON Path" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Format", + "tooltip": "0: Json Path, 1: Json Merge Patch" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "MergeSettingsFile", + "context": "SettingsRegistryInterface", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Merge Settings File" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Merge Settings File is invoked" + }, + "details": { + "name": "Merge Settings File" + }, + "params": [ + { + "typeid": "{795C80A0-D243-473B-972A-C32CA487BAA5}", + "details": { + "name": "Settings Registry Proxy" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "JSON Path" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "Root Key" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Format", + "tooltip": "0: Json Path, 1: Json Merge Patch" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "GetString", + "context": "SettingsRegistryInterface", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get String" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get String is invoked" + }, + "details": { + "name": "Get String" + }, + "params": [ + { + "typeid": "{795C80A0-D243-473B-972A-C32CA487BAA5}", + "details": { + "name": "Settings Registry Proxy" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "JSON Path" + } + } + ], + "results": [ + { + "typeid": "{B0D91084-263A-54B9-A4F3-7C5F4240E248}", + "details": { + "name": "Output" + } + } + ] + }, + { + "key": "IsValid", + "context": "SettingsRegistryInterface", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Valid" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Valid is invoked" + }, + "details": { + "name": "Is Valid" + }, + "params": [ + { + "typeid": "{795C80A0-D243-473B-972A-C32CA487BAA5}", + "details": { + "name": "Settings Registry Proxy" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "MergeSettingsFolder", + "context": "SettingsRegistryInterface", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Merge Settings Folder" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Merge Settings Folder is invoked" + }, + "details": { + "name": "Merge Settings Folder" + }, + "params": [ + { + "typeid": "{795C80A0-D243-473B-972A-C32CA487BAA5}", + "details": { + "name": "Settings Registry Proxy" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "JSON Path" + } + }, + { + "typeid": "{EB6B8ADF-ABAA-4D22-B596-127F9C611740}", + "details": { + "name": "Specializations Proxy" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "JSON Path" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "SetBool", + "context": "SettingsRegistryInterface", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Bool" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Bool is invoked" + }, + "details": { + "name": "Set Bool" + }, + "params": [ + { + "typeid": "{795C80A0-D243-473B-972A-C32CA487BAA5}", + "details": { + "name": "Settings Registry Proxy" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "JSON Path" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "SetString", + "context": "SettingsRegistryInterface", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set String" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set String is invoked" + }, + "details": { + "name": "Set String" + }, + "params": [ + { + "typeid": "{795C80A0-D243-473B-972A-C32CA487BAA5}", + "details": { + "name": "Settings Registry Proxy" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "JSON Path" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "JSON Path" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "DumpSettings", + "context": "SettingsRegistryInterface", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Dump Settings" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Dump Settings is invoked" + }, + "details": { + "name": "Dump Settings" + }, + "params": [ + { + "typeid": "{795C80A0-D243-473B-972A-C32CA487BAA5}", + "details": { + "name": "Settings Registry Proxy" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "JSON Path" + } + } + ], + "results": [ + { + "typeid": "{B0D91084-263A-54B9-A4F3-7C5F4240E248}", + "details": { + "name": "Output" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ShaderCollectionItem.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ShaderCollectionItem.names new file mode 100644 index 0000000000..94fe0bb982 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ShaderCollectionItem.names @@ -0,0 +1,142 @@ +{ + "entries": [ + { + "key": "ShaderCollectionItem", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ShaderCollectionItem" + }, + "methods": [ + { + "key": "GetShaderAsset", + "context": "ShaderCollectionItem", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetShaderAsset" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetShaderAsset is invoked" + }, + "details": { + "name": "ShaderCollectionItem::GetShaderAsset", + "category": "Other" + }, + "params": [ + { + "typeid": "{64C7F381-3313-46E8-B23B-D7AA9A915F35}", + "details": { + "name": "Item*" + } + } + ], + "results": [ + { + "typeid": "{C3B16018-28FB-5CFE-B871-25B6E2F0B110}", + "details": { + "name": "const Asset&" + } + } + ] + }, + { + "key": "GetShaderAssetId", + "context": "ShaderCollectionItem", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetShaderAssetId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetShaderAssetId is invoked" + }, + "details": { + "name": "ShaderCollectionItem::GetShaderAssetId", + "category": "Other" + }, + "params": [ + { + "typeid": "{64C7F381-3313-46E8-B23B-D7AA9A915F35}", + "details": { + "name": "Item*" + } + } + ], + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "const AssetId&" + } + } + ] + }, + { + "key": "GetShaderVariantId", + "context": "ShaderCollectionItem", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetShaderVariantId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetShaderVariantId is invoked" + }, + "details": { + "name": "ShaderCollectionItem::GetShaderVariantId", + "category": "Other" + }, + "params": [ + { + "typeid": "{64C7F381-3313-46E8-B23B-D7AA9A915F35}", + "details": { + "name": "Item*" + } + } + ], + "results": [ + { + "typeid": "{27B1FEC2-8C8A-47D7-A034-6609FA092B34}", + "details": { + "name": "const ShaderVariantId&" + } + } + ] + }, + { + "key": "GetShaderOptionGroup", + "context": "ShaderCollectionItem", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetShaderOptionGroup" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetShaderOptionGroup is invoked" + }, + "details": { + "name": "ShaderCollectionItem::GetShaderOptionGroup", + "category": "Other" + }, + "params": [ + { + "typeid": "{64C7F381-3313-46E8-B23B-D7AA9A915F35}", + "details": { + "name": "Item*" + } + } + ], + "results": [ + { + "typeid": "{906F69F5-52F0-4095-9562-0E91DDDE6E2F}", + "details": { + "name": "const ShaderOptionGroup&" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ShaderOptionGroup.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ShaderOptionGroup.names new file mode 100644 index 0000000000..59c02d8c6d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ShaderOptionGroup.names @@ -0,0 +1,116 @@ +{ + "entries": [ + { + "key": "ShaderOptionGroup", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ShaderOptionGroup" + }, + "methods": [ + { + "key": "GetValueByOptionName", + "context": "ShaderOptionGroup", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetValueByOptionName" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetValueByOptionName is invoked" + }, + "details": { + "name": "ShaderOptionGroup::GetValueByOptionName", + "category": "Other" + }, + "params": [ + { + "typeid": "{906F69F5-52F0-4095-9562-0E91DDDE6E2F}", + "details": { + "name": "ShaderOptionGroup*" + } + }, + { + "typeid": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", + "details": { + "name": "const Name&" + } + } + ], + "results": [ + { + "typeid": "{C10E7B12-BCB6-5872-810D-D597F123DB61}", + "details": { + "name": "AZ::RHI::Handle" + } + } + ] + }, + { + "key": "GetShaderOptionDescriptors", + "context": "ShaderOptionGroup", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetShaderOptionDescriptors" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetShaderOptionDescriptors is invoked" + }, + "details": { + "name": "ShaderOptionGroup::GetShaderOptionDescriptors", + "category": "Other" + }, + "params": [ + { + "typeid": "{906F69F5-52F0-4095-9562-0E91DDDE6E2F}", + "details": { + "name": "ShaderOptionGroup*" + } + } + ], + "results": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "const AZStd::vector" + } + } + ] + }, + { + "key": "GetShaderVariantId", + "context": "ShaderOptionGroup", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetShaderVariantId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetShaderVariantId is invoked" + }, + "details": { + "name": "ShaderOptionGroup::GetShaderVariantId", + "category": "Other" + }, + "params": [ + { + "typeid": "{906F69F5-52F0-4095-9562-0E91DDDE6E2F}", + "details": { + "name": "ShaderOptionGroup*" + } + } + ], + "results": [ + { + "typeid": "{27B1FEC2-8C8A-47D7-A034-6609FA092B34}", + "details": { + "name": "const ShaderVariantId&" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ShaderSemantic.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ShaderSemantic.names new file mode 100644 index 0000000000..011619c1e3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ShaderSemantic.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "ShaderSemantic", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ShaderSemantic" + }, + "methods": [ + { + "key": "ToString", + "context": "ShaderSemantic", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToString" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToString is invoked" + }, + "details": { + "name": "ShaderSemantic::ToString", + "category": "Other" + }, + "params": [ + { + "typeid": "{C6FFF25F-FE52-4D08-8D96-D04C14048816}", + "details": { + "name": "ShaderSemantic*" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ShaderVariantId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ShaderVariantId.names new file mode 100644 index 0000000000..c6aa37ec83 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ShaderVariantId.names @@ -0,0 +1,84 @@ +{ + "entries": [ + { + "key": "ShaderVariantId", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ShaderVariantId" + }, + "methods": [ + { + "key": "Equal", + "context": "ShaderVariantId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Equal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Equal is invoked" + }, + "details": { + "name": "ShaderVariantId::Equal", + "category": "Other" + }, + "params": [ + { + "typeid": "{27B1FEC2-8C8A-47D7-A034-6609FA092B34}", + "details": { + "name": "ShaderVariantId*" + } + }, + { + "typeid": "{27B1FEC2-8C8A-47D7-A034-6609FA092B34}", + "details": { + "name": "const ShaderVariantId&" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "IsEmpty", + "context": "ShaderVariantId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsEmpty is invoked" + }, + "details": { + "name": "ShaderVariantId::IsEmpty", + "category": "Other" + }, + "params": [ + { + "typeid": "{27B1FEC2-8C8A-47D7-A034-6609FA092B34}", + "details": { + "name": "ShaderVariantId*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ShaderVariantInfo.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ShaderVariantInfo.names new file mode 100644 index 0000000000..215b56ccee --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ShaderVariantInfo.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "ShaderVariantInfo", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ShaderVariantInfo" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ShaderVariantListSourceData.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ShaderVariantListSourceData.names new file mode 100644 index 0000000000..d8ff471af0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ShaderVariantListSourceData.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "ShaderVariantListSourceData", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ShaderVariantListSourceData" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ShapeAreaFalloffGradientComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ShapeAreaFalloffGradientComponent.names new file mode 100644 index 0000000000..1935304451 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ShapeAreaFalloffGradientComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "ShapeAreaFalloffGradientComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ShapeAreaFalloffGradientComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ShapeAreaFalloffGradientConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ShapeAreaFalloffGradientConfig.names new file mode 100644 index 0000000000..03da764cf9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ShapeAreaFalloffGradientConfig.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "ShapeAreaFalloffGradientConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ShapeAreaFalloffGradientConfig" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SimpleAssetReferenceBase.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SimpleAssetReferenceBase.names new file mode 100644 index 0000000000..67c99ad82e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SimpleAssetReferenceBase.names @@ -0,0 +1,113 @@ +{ + "entries": [ + { + "key": "SimpleAssetReferenceBase", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Asset Reference" + }, + "methods": [ + { + "key": "SetAssetPath", + "context": "SimpleAssetReferenceBase", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Asset Path" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Asset Path is invoked" + }, + "details": { + "name": "Set Asset Path" + }, + "params": [ + { + "typeid": "{E16CA6C5-5C78-4AD9-8E9B-F8C1FB4D1DB8}", + "details": { + "name": "Asset Reference", + "tooltip": "Asset reference as a project-relative path" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Path" + } + } + ] + }, + { + "key": "assetPath", + "details": { + "name": "Get Asset Path" + }, + "params": [ + { + "typeid": "{E16CA6C5-5C78-4AD9-8E9B-F8C1FB4D1DB8}", + "details": { + "name": "Asset Reference", + "tooltip": "Asset reference as a project-relative path" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Path" + } + } + ] + }, + { + "key": "assetType", + "details": { + "name": "Get Asset Type" + }, + "params": [ + { + "typeid": "{E16CA6C5-5C78-4AD9-8E9B-F8C1FB4D1DB8}", + "details": { + "name": "Asset Reference", + "tooltip": "Asset reference as a project-relative path" + } + } + ], + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Type" + } + } + ] + }, + { + "key": "fileFilter", + "details": { + "name": "Get File Filter" + }, + "params": [ + { + "typeid": "{E16CA6C5-5C78-4AD9-8E9B-F8C1FB4D1DB8}", + "details": { + "name": "Asset Reference", + "tooltip": "Asset reference as a project-relative path" + } + } + ], + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Filter" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SimpleMotionComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SimpleMotionComponent.names new file mode 100644 index 0000000000..9867741842 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SimpleMotionComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "SimpleMotionComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "SimpleMotionComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SimulatedBody.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SimulatedBody.names new file mode 100644 index 0000000000..ec697bbb71 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SimulatedBody.names @@ -0,0 +1,175 @@ +{ + "entries": [ + { + "key": "SimulatedBody", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Simulated Body" + }, + "methods": [ + { + "key": "GetOnCollisionEndEvent", + "context": "SimulatedBody", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get On Collision End Event" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get On Collision End Event is invoked" + }, + "details": { + "name": "Get On Collision End Event" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{4C19E257-F929-524E-80E3-C910C5F3E2D9}", + "details": { + "name": "Collision Event" + } + } + ] + }, + { + "key": "GetOnCollisionPersistEvent", + "context": "SimulatedBody", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get On Collision Persist Event" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get On Collision Persist Event is invoked" + }, + "details": { + "name": "Get On Collision Persist Event" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{4C19E257-F929-524E-80E3-C910C5F3E2D9}", + "details": { + "name": "Collision Event" + } + } + ] + }, + { + "key": "GetOnTriggerEnterEvent", + "context": "SimulatedBody", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get On Trigger Enter Event" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get On Trigger Enter Event is invoked" + }, + "details": { + "name": "Get On Trigger Enter Event" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{C00D2478-E0F3-57A3-AB60-A04DFC515016}", + "details": { + "name": "Trigger Event" + } + } + ] + }, + { + "key": "GetOnCollisionBeginEvent", + "context": "SimulatedBody", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get On Collision Begin Event" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get On Collision Begin Event is invoked" + }, + "details": { + "name": "Get On Collision Begin Event" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{4C19E257-F929-524E-80E3-C910C5F3E2D9}", + "details": { + "name": "Collision Event" + } + } + ] + }, + { + "key": "GetOnTriggerExitEvent", + "context": "SimulatedBody", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get On Trigger Exit Event" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get On Trigger Exit Event is invoked" + }, + "details": { + "name": "Get On Trigger Exit Event", + "category": "Other" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{C00D2478-E0F3-57A3-AB60-A04DFC515016}", + "details": { + "name": "Trigger Event" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SliceInstanceAddress.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SliceInstanceAddress.names new file mode 100644 index 0000000000..003b833a1d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SliceInstanceAddress.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "SliceInstanceAddress", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "SliceInstanceAddress" + }, + "methods": [ + { + "key": "IsValid", + "context": "SliceInstanceAddress", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsValid" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsValid is invoked" + }, + "details": { + "name": "SliceInstanceAddress::IsValid", + "category": "Other" + }, + "params": [ + { + "typeid": "{94142EA2-1319-44D5-82C8-A6D9D34A63BC}", + "details": { + "name": "SliceInstanceAddress*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SliceInstantiationTicket.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SliceInstantiationTicket.names new file mode 100644 index 0000000000..b9edb1cfa1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SliceInstantiationTicket.names @@ -0,0 +1,117 @@ +{ + "entries": [ + { + "key": "SliceInstantiationTicket", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Slice Instantiation Ticket", + "category": "Gameplay" + }, + "methods": [ + { + "key": "Equal", + "context": "SliceInstantiationTicket", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Equal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Equal is invoked" + }, + "details": { + "name": "SliceInstantiationTicket::Equal", + "category": "Gameplay" + }, + "params": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "SliceInstantiationTicket*" + } + }, + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "const SliceInstantiationTicket&" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Boolean" + } + } + ] + }, + { + "key": "ToString", + "context": "SliceInstantiationTicket", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToString" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToString is invoked" + }, + "details": { + "name": "SliceInstantiationTicket::ToString", + "category": "Gameplay" + }, + "params": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "SliceInstantiationTicket*" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + }, + { + "key": "IsValid", + "context": "SliceInstantiationTicket", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsValid" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsValid is invoked" + }, + "details": { + "name": "SliceInstantiationTicket::IsValid", + "category": "Gameplay" + }, + "params": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "SliceInstantiationTicket*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Boolean" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SmoothStep.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SmoothStep.names new file mode 100644 index 0000000000..2fff9e6f59 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SmoothStep.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "SmoothStep", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "SmoothStep" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SmoothStepGradientComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SmoothStepGradientComponent.names new file mode 100644 index 0000000000..42374f5c08 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SmoothStepGradientComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "SmoothStepGradientComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "SmoothStepGradientComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SmoothStepGradientConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SmoothStepGradientConfig.names new file mode 100644 index 0000000000..d9d27df79b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SmoothStepGradientConfig.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "SmoothStepGradientConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "SmoothStepGradientConfig" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SpawnerConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SpawnerConfig.names new file mode 100644 index 0000000000..f78e690f18 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SpawnerConfig.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "SpawnerConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "SpawnerConfig" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Specializations.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Specializations.names new file mode 100644 index 0000000000..a9f36b42d3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Specializations.names @@ -0,0 +1,195 @@ +{ + "entries": [ + { + "key": "Specializations", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Specializations", + "category": "Registry" + }, + "methods": [ + { + "key": "GetPriority", + "context": "Specializations", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Priority" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Priority is invoked" + }, + "details": { + "name": "Get Priority", + "category": "Other" + }, + "params": [ + { + "typeid": "{EB6B8ADF-ABAA-4D22-B596-127F9C611740}", + "details": { + "name": "Specializations Proxy" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "Specialization" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Priority" + } + } + ] + }, + { + "key": "GetCount", + "context": "Specializations", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Count" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Count is invoked" + }, + "details": { + "name": "Get Count" + }, + "params": [ + { + "typeid": "{EB6B8ADF-ABAA-4D22-B596-127F9C611740}", + "details": { + "name": "Specializations Proxy" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Count" + } + } + ] + }, + { + "key": "Contains", + "context": "Specializations", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Contains is invoked" + }, + "details": { + "name": "Contains" + }, + "params": [ + { + "typeid": "{EB6B8ADF-ABAA-4D22-B596-127F9C611740}", + "details": { + "name": "Specializations Proxy" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "Specialization" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Contains" + } + } + ] + }, + { + "key": "Append", + "context": "Specializations", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Append" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Append is invoked" + }, + "details": { + "name": "Append" + }, + "params": [ + { + "typeid": "{EB6B8ADF-ABAA-4D22-B596-127F9C611740}", + "details": { + "name": "Specializations Proxy" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "Specialization" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "GetSpecialization", + "context": "Specializations", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Specialization" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Specialization is invoked" + }, + "details": { + "name": "Get Specialization" + }, + "params": [ + { + "typeid": "{EB6B8ADF-ABAA-4D22-B596-127F9C611740}", + "details": { + "name": "Specializations Proxy" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Index" + } + } + ], + "results": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "Specialization" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SphereShapeConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SphereShapeConfig.names new file mode 100644 index 0000000000..be4d2dbdb2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SphereShapeConfig.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "SphereShapeConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "SphereShapeConfig" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/String.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/String.names new file mode 100644 index 0000000000..3bee4fbec1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/String.names @@ -0,0 +1,310 @@ +{ + "entries": [ + { + "key": "String", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "String" + }, + "methods": [ + { + "key": "ReplaceString", + "context": "String", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ReplaceString" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ReplaceString is invoked" + }, + "details": { + "name": "String::Replace String", + "category": "Other" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>&" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + }, + { + "key": "Join", + "context": "String", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Join" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Join is invoked" + }, + "details": { + "name": "String::Join", + "category": "Other" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "const AZStd::vector, alloc" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + }, + { + "key": "StartsWith", + "context": "String", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke StartsWith" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after StartsWith is invoked" + }, + "details": { + "name": "String::Starts With", + "category": "Other" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "ContainsString", + "context": "String", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ContainsString" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ContainsString is invoked" + }, + "details": { + "name": "String::Contains String", + "category": "Other" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Split", + "context": "String", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Split" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Split is invoked" + }, + "details": { + "name": "String::Split", + "category": "Other" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + } + ], + "results": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector, allocator>, allocator>" + } + } + ] + }, + { + "key": "IsValidFindPosition", + "context": "String", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsValidFindPosition" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsValidFindPosition is invoked" + }, + "details": { + "name": "String::Is Valid Find Position", + "category": "Other" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "EndsWith", + "context": "String", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EndsWith" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EndsWith is invoked" + }, + "details": { + "name": "String::Ends With", + "category": "Other" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/String_VM.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/String_VM.names new file mode 100644 index 0000000000..38a203d02f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/String_VM.names @@ -0,0 +1,122 @@ +{ + "entries": [ + { + "key": "String_VM", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "String_VM" + }, + "methods": [ + { + "key": "ToLower", + "context": "String_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToLower" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToLower is invoked" + }, + "details": { + "name": "String_VM::ToLower", + "category": "Other" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + }, + { + "key": "ToUpper", + "context": "String_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToUpper" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToUpper is invoked" + }, + "details": { + "name": "String_VM::ToUpper", + "category": "Other" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + }, + { + "key": "Substring", + "context": "String_VM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Substring" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Substring is invoked" + }, + "details": { + "name": "String_VM::Substring", + "category": "Other" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SurfaceAltitudeGradientComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SurfaceAltitudeGradientComponent.names new file mode 100644 index 0000000000..c42e70fd88 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SurfaceAltitudeGradientComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "SurfaceAltitudeGradientComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "SurfaceAltitudeGradientComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SurfaceAltitudeGradientConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SurfaceAltitudeGradientConfig.names new file mode 100644 index 0000000000..2886505974 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SurfaceAltitudeGradientConfig.names @@ -0,0 +1,148 @@ +{ + "entries": [ + { + "key": "SurfaceAltitudeGradientConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "SurfaceAltitudeGradientConfig" + }, + "methods": [ + { + "key": "GetNumTags", + "context": "SurfaceAltitudeGradientConfig", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNumTags" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNumTags is invoked" + }, + "details": { + "name": "SurfaceAltitudeGradientConfig::GetNumTags", + "category": "Other" + }, + "params": [ + { + "typeid": "{3CB05FC9-6E0F-435E-B420-F027B6716804}", + "details": { + "name": "SurfaceAltitudeGradientConfig*", + "tooltip": "altitude Gradient" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetTag", + "context": "SurfaceAltitudeGradientConfig", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTag is invoked" + }, + "details": { + "name": "SurfaceAltitudeGradientConfig::GetTag", + "category": "Other" + }, + "params": [ + { + "typeid": "{3CB05FC9-6E0F-435E-B420-F027B6716804}", + "details": { + "name": "SurfaceAltitudeGradientConfig*", + "tooltip": "altitude Gradient" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ], + "results": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + }, + { + "key": "RemoveTag", + "context": "SurfaceAltitudeGradientConfig", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RemoveTag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RemoveTag is invoked" + }, + "details": { + "name": "SurfaceAltitudeGradientConfig::RemoveTag", + "category": "Other" + }, + "params": [ + { + "typeid": "{3CB05FC9-6E0F-435E-B420-F027B6716804}", + "details": { + "name": "SurfaceAltitudeGradientConfig*", + "tooltip": "altitude Gradient" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "AddTag", + "context": "SurfaceAltitudeGradientConfig", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddTag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddTag is invoked" + }, + "details": { + "name": "SurfaceAltitudeGradientConfig::AddTag", + "category": "Other" + }, + "params": [ + { + "typeid": "{3CB05FC9-6E0F-435E-B420-F027B6716804}", + "details": { + "name": "SurfaceAltitudeGradientConfig*", + "tooltip": "altitude Gradient" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SurfaceMaskGradientComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SurfaceMaskGradientComponent.names new file mode 100644 index 0000000000..e82633638e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SurfaceMaskGradientComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "SurfaceMaskGradientComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "SurfaceMaskGradientComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SurfaceMaskGradientConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SurfaceMaskGradientConfig.names new file mode 100644 index 0000000000..126e5cb118 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SurfaceMaskGradientConfig.names @@ -0,0 +1,144 @@ +{ + "entries": [ + { + "key": "SurfaceMaskGradientConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "SurfaceMaskGradientConfig" + }, + "methods": [ + { + "key": "GetNumTags", + "context": "SurfaceMaskGradientConfig", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNumTags" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNumTags is invoked" + }, + "details": { + "name": "SurfaceMaskGradientConfig::GetNumTags", + "category": "Other" + }, + "params": [ + { + "typeid": "{E59D0A4C-BA3D-4288-B409-A00B7D5566AA}", + "details": { + "name": "SurfaceMaskGradientConfig*" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetTag", + "context": "SurfaceMaskGradientConfig", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTag is invoked" + }, + "details": { + "name": "SurfaceMaskGradientConfig::GetTag", + "category": "Other" + }, + "params": [ + { + "typeid": "{E59D0A4C-BA3D-4288-B409-A00B7D5566AA}", + "details": { + "name": "SurfaceMaskGradientConfig*" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ], + "results": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + }, + { + "key": "RemoveTag", + "context": "SurfaceMaskGradientConfig", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RemoveTag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RemoveTag is invoked" + }, + "details": { + "name": "SurfaceMaskGradientConfig::RemoveTag", + "category": "Other" + }, + "params": [ + { + "typeid": "{E59D0A4C-BA3D-4288-B409-A00B7D5566AA}", + "details": { + "name": "SurfaceMaskGradientConfig*" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "AddTag", + "context": "SurfaceMaskGradientConfig", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddTag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddTag is invoked" + }, + "details": { + "name": "SurfaceMaskGradientConfig::AddTag", + "category": "Other" + }, + "params": [ + { + "typeid": "{E59D0A4C-BA3D-4288-B409-A00B7D5566AA}", + "details": { + "name": "SurfaceMaskGradientConfig*" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SurfaceSlopeGradientComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SurfaceSlopeGradientComponent.names new file mode 100644 index 0000000000..94dbbf61a6 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SurfaceSlopeGradientComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "SurfaceSlopeGradientComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "SurfaceSlopeGradientComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SurfaceSlopeGradientConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SurfaceSlopeGradientConfig.names new file mode 100644 index 0000000000..c57eb21d4b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SurfaceSlopeGradientConfig.names @@ -0,0 +1,144 @@ +{ + "entries": [ + { + "key": "SurfaceSlopeGradientConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "SurfaceSlopeGradientConfig" + }, + "methods": [ + { + "key": "GetNumTags", + "context": "SurfaceSlopeGradientConfig", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNumTags" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNumTags is invoked" + }, + "details": { + "name": "SurfaceSlopeGradientConfig::GetNumTags", + "category": "Other" + }, + "params": [ + { + "typeid": "{691E0F23-37E9-434F-A1D1-E8DE5B4A3405}", + "details": { + "name": "SurfaceSlopeGradientConfig*" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetTag", + "context": "SurfaceSlopeGradientConfig", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTag is invoked" + }, + "details": { + "name": "SurfaceSlopeGradientConfig::GetTag", + "category": "Other" + }, + "params": [ + { + "typeid": "{691E0F23-37E9-434F-A1D1-E8DE5B4A3405}", + "details": { + "name": "SurfaceSlopeGradientConfig*" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ], + "results": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + }, + { + "key": "RemoveTag", + "context": "SurfaceSlopeGradientConfig", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RemoveTag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RemoveTag is invoked" + }, + "details": { + "name": "SurfaceSlopeGradientConfig::RemoveTag", + "category": "Other" + }, + "params": [ + { + "typeid": "{691E0F23-37E9-434F-A1D1-E8DE5B4A3405}", + "details": { + "name": "SurfaceSlopeGradientConfig*" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "AddTag", + "context": "SurfaceSlopeGradientConfig", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddTag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddTag is invoked" + }, + "details": { + "name": "SurfaceSlopeGradientConfig::AddTag", + "category": "Other" + }, + "params": [ + { + "typeid": "{691E0F23-37E9-434F-A1D1-E8DE5B4A3405}", + "details": { + "name": "SurfaceSlopeGradientConfig*" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SurfaceTagWeight.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SurfaceTagWeight.names new file mode 100644 index 0000000000..0c1b3b7e1d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/SurfaceTagWeight.names @@ -0,0 +1,99 @@ +{ + "entries": [ + { + "key": "SurfaceTagWeight", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Surface Tag Weight", + "category": "Surface Data" + }, + "methods": [ + { + "key": "GetsurfaceType", + "details": { + "name": "Get Surface Type" + }, + "params": [ + { + "typeid": "{EA14018E-E853-4BF5-8E13-D83BB99A54CC}", + "details": { + "name": "Surface Tag Weight" + } + } + ], + "results": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Tag" + } + } + ] + }, + { + "key": "SetsurfaceType", + "details": { + "name": "Set Surface Type" + }, + "params": [ + { + "typeid": "{EA14018E-E853-4BF5-8E13-D83BB99A54CC}", + "details": { + "name": "Surface Tag Weight" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Tag" + } + } + ] + }, + { + "key": "Getweight", + "details": { + "name": "Get Weight" + }, + "params": [ + { + "typeid": "{EA14018E-E853-4BF5-8E13-D83BB99A54CC}", + "details": { + "name": "Surface Tag Weight" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Weight" + } + } + ] + }, + { + "key": "Setweight", + "details": { + "name": "Set Weight" + }, + "params": [ + { + "typeid": "{EA14018E-E853-4BF5-8E13-D83BB99A54CC}", + "details": { + "name": "Surface Tag Weight" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Weight" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Tag Helper.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Tag Helper.names new file mode 100644 index 0000000000..32e587c80f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Tag Helper.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "Tag Helper", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Tag Helper" + }, + "methods": [ + { + "key": "GetEntitiesbyTag", + "context": "Tag Helper", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEntitiesbyTag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEntitiesbyTag is invoked" + }, + "details": { + "name": "Tag Helper::Get Entities by Tag", + "category": "Gameplay/Tag" + }, + "params": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "const Crc32&" + } + } + ], + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/TestTupleMethods.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/TestTupleMethods.names new file mode 100644 index 0000000000..dd5a04064c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/TestTupleMethods.names @@ -0,0 +1,58 @@ +{ + "entries": [ + { + "key": "TestTupleMethods", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "TestTupleMethods" + }, + "methods": [ + { + "key": "Three", + "context": "TestTupleMethods", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Three" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Three is invoked" + }, + "details": { + "name": "TestTupleMethods::Three", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "const bool&" + } + } + ], + "results": [ + { + "typeid": "{5BAFAD11-D6AF-5946-B09B-6E0B72E1209C}", + "details": { + "name": "tuple, allocator> bool >" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ThresholdGradientComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ThresholdGradientComponent.names new file mode 100644 index 0000000000..ea113281c7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ThresholdGradientComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "ThresholdGradientComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ThresholdGradientComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ThresholdGradientConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ThresholdGradientConfig.names new file mode 100644 index 0000000000..9fc1ac28ca --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ThresholdGradientConfig.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "ThresholdGradientConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ThresholdGradientConfig" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/TickOrder.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/TickOrder.names new file mode 100644 index 0000000000..db75d9c39b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/TickOrder.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "TickOrder", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "TickOrder" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/TransformComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/TransformComponent.names new file mode 100644 index 0000000000..5c7d439587 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/TransformComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "TransformComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "TransformComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/TransformConfig.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/TransformConfig.names new file mode 100644 index 0000000000..d9acd8a6cc --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/TransformConfig.names @@ -0,0 +1,321 @@ +{ + "entries": [ + { + "key": "TransformConfig", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Transform Config", + "category": "Entity" + }, + "methods": [ + { + "key": "SetTransform", + "context": "TransformConfig", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Transform" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Transform is invoked" + }, + "details": { + "name": "Set Transform" + }, + "params": [ + { + "typeid": "{B3AAB26D-D075-4E2B-9653-9527EE363DF8}", + "details": { + "name": "Transform Config" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "SetLocalAndWorldTransform", + "context": "TransformConfig", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Local And World Transform" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Local And World Transform is invoked" + }, + "details": { + "name": "Set Local And World Transform" + }, + "params": [ + { + "typeid": "{B3AAB26D-D075-4E2B-9653-9527EE363DF8}", + "details": { + "name": "Transform Config" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Local" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "World" + } + } + ] + }, + { + "key": "GetparentActivationTransformMode", + "details": { + "name": "Get Parent Activation Transform Mode" + }, + "params": [ + { + "typeid": "{B3AAB26D-D075-4E2B-9653-9527EE363DF8}", + "details": { + "name": "Transform Config" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Mode", + "tooltip": "0: Maintain Original Relative Transform\n1: Maintain Current World Transform" + } + } + ] + }, + { + "key": "SetparentActivationTransformMode", + "details": { + "name": "Set Parent Activation Transform Mode" + }, + "params": [ + { + "typeid": "{B3AAB26D-D075-4E2B-9653-9527EE363DF8}", + "details": { + "name": "Transform Config" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Mode", + "tooltip": "0: Maintain Original Relative Transform\n1: Maintain Current World Transform" + } + } + ] + }, + { + "key": "GetparentId", + "details": { + "name": "Get Parent Id" + }, + "params": [ + { + "typeid": "{B3AAB26D-D075-4E2B-9653-9527EE363DF8}", + "details": { + "name": "Transform Config" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Parent Id", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetparentId", + "details": { + "name": "Set Parent Id" + }, + "params": [ + { + "typeid": "{B3AAB26D-D075-4E2B-9653-9527EE363DF8}", + "details": { + "name": "Transform Config" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Parent Id", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetworldTransform", + "details": { + "name": "Get World Transform" + }, + "params": [ + { + "typeid": "{B3AAB26D-D075-4E2B-9653-9527EE363DF8}", + "details": { + "name": "Transform Config" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "World" + } + } + ] + }, + { + "key": "SetworldTransform", + "details": { + "name": "Set World Transform" + }, + "params": [ + { + "typeid": "{B3AAB26D-D075-4E2B-9653-9527EE363DF8}", + "details": { + "name": "Transform Config" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "World" + } + } + ] + }, + { + "key": "GetMaintainCurrentWorldTransform", + "details": { + "name": "Get Maintain Current World Transform" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "GetisStatic", + "details": { + "name": "Get Is Static" + }, + "params": [ + { + "typeid": "{B3AAB26D-D075-4E2B-9653-9527EE363DF8}", + "details": { + "name": "Transform Config" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Static" + } + } + ] + }, + { + "key": "SetisStatic", + "details": { + "name": "Set Is Static" + }, + "params": [ + { + "typeid": "{B3AAB26D-D075-4E2B-9653-9527EE363DF8}", + "details": { + "name": "Transform Config" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Static" + } + } + ] + }, + { + "key": "GetMaintainOriginalRelativeTransform", + "details": { + "name": "Get Maintain Original Relative Transform" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "GetlocalTransform", + "details": { + "name": "Get Local Transform" + }, + "params": [ + { + "typeid": "{B3AAB26D-D075-4E2B-9653-9527EE363DF8}", + "details": { + "name": "Transform Config" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Local" + } + } + ] + }, + { + "key": "SetlocalTransform", + "details": { + "name": "Set Local Transform" + }, + "params": [ + { + "typeid": "{B3AAB26D-D075-4E2B-9653-9527EE363DF8}", + "details": { + "name": "Transform Config" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Local" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/TriggerEvent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/TriggerEvent.names new file mode 100644 index 0000000000..a0da73d31c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/TriggerEvent.names @@ -0,0 +1,80 @@ +{ + "entries": [ + { + "key": "TriggerEvent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Trigger Event" + }, + "methods": [ + { + "key": "GetTriggerEntityId", + "context": "TriggerEvent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Trigger Entity Id" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Trigger Entity Id is invoked" + }, + "details": { + "name": "Get Trigger Entity Id", + "category": "Other" + }, + "params": [ + { + "typeid": "{7A0851A3-2CBD-4A03-85D5-1C40221E7F61}", + "details": { + "name": "Trigger Event" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetOtherEntityId", + "context": "TriggerEvent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Other Entity Id" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Other Entity Id is invoked" + }, + "details": { + "name": "Get Other Entity Id", + "category": "Other" + }, + "params": [ + { + "typeid": "{7A0851A3-2CBD-4A03-85D5-1C40221E7F61}", + "details": { + "name": "Trigger Event" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/TypeExposition.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/TypeExposition.names new file mode 100644 index 0000000000..4157b33300 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/TypeExposition.names @@ -0,0 +1,78 @@ +{ + "entries": [ + { + "key": "TypeExposition", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "TypeExposition" + }, + "methods": [ + { + "key": "Reflect_AZStd__array_AZ__Vector3_2", + "context": "TypeExposition", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reflect_AZStd__array_AZ__Vector3_2" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reflect_AZStd__array_AZ__Vector3_2 is invoked" + }, + "details": { + "name": "TypeExposition::Reflect_AZStd::array", + "category": "Other" + }, + "params": [ + { + "typeid": "{E65D74A8-908B-51B4-94CC-7226AC363DD5}", + "details": { + "name": "AZStd::array&" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Reflect_AZ__Outcome_AZ__Vector3_void", + "context": "TypeExposition", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reflect_AZ__Outcome_AZ__Vector3_void" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reflect_AZ__Outcome_AZ__Vector3_void is invoked" + }, + "details": { + "name": "TypeExposition::Reflect_AZ::Outcome", + "category": "Other" + }, + "params": [ + { + "typeid": "{D1FEE25B-F252-5625-863C-1312E1F822A0}", + "details": { + "name": "Outcome&" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UVCoords.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UVCoords.names new file mode 100644 index 0000000000..57abfbff4b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UVCoords.names @@ -0,0 +1,196 @@ +{ + "entries": [ + { + "key": "UVCoords", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "UV Coords", + "category": "UI/LyShine Examples" + }, + "methods": [ + { + "key": "SetUVCoords", + "context": "UVCoords", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetUVCoords" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetUVCoords is invoked" + }, + "details": { + "name": "UVCoords::SetUVCoords", + "category": "UI/LyShine Examples" + }, + "params": [ + { + "typeid": "{E134EAE8-52A1-4E43-847B-09E546CC5B95}", + "details": { + "name": "UV Coords", + "tooltip": "The UV coordinates to set" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Left", + "tooltip": "The lower X UV coordinate [0-1]" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Top", + "tooltip": "The higher Y UV coordinate [0-1]" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Right", + "tooltip": "The higher X UV coordinate [0-1]" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Bottom", + "tooltip": "The lower Y UV coordinate [0-1]" + } + } + ] + }, + { + "key": "SetBottom", + "context": "UVCoords", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetBottom" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetBottom is invoked" + }, + "details": { + "name": "UVCoords::SetBottom", + "category": "UI/LyShine Examples" + }, + "params": [ + { + "typeid": "{E134EAE8-52A1-4E43-847B-09E546CC5B95}", + "details": { + "name": "UV Coords", + "tooltip": "The UV coordinates to set" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Bottom", + "tooltip": "The lower Y UV coordinate [0-1]" + } + } + ] + }, + { + "key": "SetRight", + "context": "UVCoords", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetRight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetRight is invoked" + }, + "details": { + "name": "UVCoords::SetRight", + "category": "UI/LyShine Examples" + }, + "params": [ + { + "typeid": "{E134EAE8-52A1-4E43-847B-09E546CC5B95}", + "details": { + "name": "UV Coords", + "tooltip": "The UV coordinates to set" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Right", + "tooltip": "The higher X UV coordinate [0-1]" + } + } + ] + }, + { + "key": "SetTop", + "context": "UVCoords", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetTop" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetTop is invoked" + }, + "details": { + "name": "UVCoords::SetTop", + "category": "UI/LyShine Examples" + }, + "params": [ + { + "typeid": "{E134EAE8-52A1-4E43-847B-09E546CC5B95}", + "details": { + "name": "UV Coords", + "tooltip": "The UV coordinates to set" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Top", + "tooltip": "The higher Y UV coordinate [0-1]" + } + } + ] + }, + { + "key": "SetLeft", + "context": "UVCoords", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetLeft" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetLeft is invoked" + }, + "details": { + "name": "UVCoords::SetLeft", + "category": "UI/LyShine Examples" + }, + "params": [ + { + "typeid": "{E134EAE8-52A1-4E43-847B-09E546CC5B95}", + "details": { + "name": "UV Coords", + "tooltip": "The UV coordinates to set" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Left", + "tooltip": "Sets the lower X UV coordinate [0-1]" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiAnchors.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiAnchors.names new file mode 100644 index 0000000000..9adfa70b6e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiAnchors.names @@ -0,0 +1,350 @@ +{ + "entries": [ + { + "key": "UiAnchors", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "UiAnchors" + }, + "methods": [ + { + "key": "SetBottom", + "context": "UiAnchors", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetBottom" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetBottom is invoked" + }, + "details": { + "name": "UiAnchors::SetBottom", + "category": "Other" + }, + "params": [ + { + "typeid": "{65D4346C-FB16-4CB0-9BDC-1185B122C4A9}", + "details": { + "name": "Anchors*" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetRight", + "context": "UiAnchors", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetRight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetRight is invoked" + }, + "details": { + "name": "UiAnchors::SetRight", + "category": "Other" + }, + "params": [ + { + "typeid": "{65D4346C-FB16-4CB0-9BDC-1185B122C4A9}", + "details": { + "name": "Anchors*" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetTop", + "context": "UiAnchors", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetTop" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetTop is invoked" + }, + "details": { + "name": "UiAnchors::SetTop", + "category": "Other" + }, + "params": [ + { + "typeid": "{65D4346C-FB16-4CB0-9BDC-1185B122C4A9}", + "details": { + "name": "Anchors*" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetLeft", + "context": "UiAnchors", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetLeft" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetLeft is invoked" + }, + "details": { + "name": "UiAnchors::SetLeft", + "category": "Other" + }, + "params": [ + { + "typeid": "{65D4346C-FB16-4CB0-9BDC-1185B122C4A9}", + "details": { + "name": "Anchors*" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetAnchors", + "context": "UiAnchors", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetAnchors" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetAnchors is invoked" + }, + "details": { + "name": "UiAnchors::SetAnchors", + "category": "Other" + }, + "params": [ + { + "typeid": "{65D4346C-FB16-4CB0-9BDC-1185B122C4A9}", + "details": { + "name": "Anchors*" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "left", + "details": { + "name": "UiAnchors::left::Getter" + }, + "params": [ + { + "typeid": "{65D4346C-FB16-4CB0-9BDC-1185B122C4A9}", + "details": { + "name": "Anchors*" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float&" + } + } + ] + }, + { + "key": "left", + "details": { + "name": "UiAnchors::left::Setter" + }, + "params": [ + { + "typeid": "{65D4346C-FB16-4CB0-9BDC-1185B122C4A9}", + "details": { + "name": "Anchors*" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "const float&" + } + } + ] + }, + { + "key": "top", + "details": { + "name": "UiAnchors::top::Getter" + }, + "params": [ + { + "typeid": "{65D4346C-FB16-4CB0-9BDC-1185B122C4A9}", + "details": { + "name": "Anchors*" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float&" + } + } + ] + }, + { + "key": "top", + "details": { + "name": "UiAnchors::top::Setter" + }, + "params": [ + { + "typeid": "{65D4346C-FB16-4CB0-9BDC-1185B122C4A9}", + "details": { + "name": "Anchors*" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "const float&" + } + } + ] + }, + { + "key": "right", + "details": { + "name": "UiAnchors::right::Getter" + }, + "params": [ + { + "typeid": "{65D4346C-FB16-4CB0-9BDC-1185B122C4A9}", + "details": { + "name": "Anchors*" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float&" + } + } + ] + }, + { + "key": "right", + "details": { + "name": "UiAnchors::right::Setter" + }, + "params": [ + { + "typeid": "{65D4346C-FB16-4CB0-9BDC-1185B122C4A9}", + "details": { + "name": "Anchors*" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "const float&" + } + } + ] + }, + { + "key": "bottom", + "details": { + "name": "UiAnchors::bottom::Getter" + }, + "params": [ + { + "typeid": "{65D4346C-FB16-4CB0-9BDC-1185B122C4A9}", + "details": { + "name": "Anchors*" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float&" + } + } + ] + }, + { + "key": "bottom", + "details": { + "name": "UiAnchors::bottom::Setter" + }, + "params": [ + { + "typeid": "{65D4346C-FB16-4CB0-9BDC-1185B122C4A9}", + "details": { + "name": "Anchors*" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "const float&" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiFaderComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiFaderComponent.names new file mode 100644 index 0000000000..6266f8234c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiFaderComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "UiFaderComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "UiFaderComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiImageComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiImageComponent.names new file mode 100644 index 0000000000..66935473be --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiImageComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "UiImageComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "UiImageComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiImageSequenceComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiImageSequenceComponent.names new file mode 100644 index 0000000000..e0f2292b8d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiImageSequenceComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "UiImageSequenceComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "UiImageSequenceComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiLayoutCellComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiLayoutCellComponent.names new file mode 100644 index 0000000000..123be9bca5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiLayoutCellComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "UiLayoutCellComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "UiLayoutCellComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiLayoutColumnComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiLayoutColumnComponent.names new file mode 100644 index 0000000000..7962c9e48b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiLayoutColumnComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "UiLayoutColumnComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "UiLayoutColumnComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiLayoutRowComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiLayoutRowComponent.names new file mode 100644 index 0000000000..7617b10f9c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiLayoutRowComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "UiLayoutRowComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "UiLayoutRowComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiOffsets.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiOffsets.names new file mode 100644 index 0000000000..dcf4704ca1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiOffsets.names @@ -0,0 +1,196 @@ +{ + "entries": [ + { + "key": "UiOffsets", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "UI Offsets", + "category": "UI" + }, + "methods": [ + { + "key": "SetBottom", + "context": "UiOffsets", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetBottom" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetBottom is invoked" + }, + "details": { + "name": "UiOffsets::SetBottom", + "category": "UI" + }, + "params": [ + { + "typeid": "{F681BA9D-245C-4630-B20E-05DD752FAD57}", + "details": { + "name": "Offsets", + "tooltip": "The Offsets for which to set the bottom offset" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Bottom", + "tooltip": "The offset from the anchors to the bottom edge of the element" + } + } + ] + }, + { + "key": "SetRight", + "context": "UiOffsets", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetRight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetRight is invoked" + }, + "details": { + "name": "UiOffsets::SetRight", + "category": "UI" + }, + "params": [ + { + "typeid": "{F681BA9D-245C-4630-B20E-05DD752FAD57}", + "details": { + "name": "Offsets", + "tooltip": "The offsets for which to set the right offset" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Right", + "tooltip": "The offset from the anchors to the right edge of the element" + } + } + ] + }, + { + "key": "SetOffsets", + "context": "UiOffsets", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetOffsets" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetOffsets is invoked" + }, + "details": { + "name": "UiOffsets::SetOffsets", + "category": "UI" + }, + "params": [ + { + "typeid": "{F681BA9D-245C-4630-B20E-05DD752FAD57}", + "details": { + "name": "Offsets", + "tooltip": "The offsets to set" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Left", + "tooltip": "The offset from the anchors to the left edge of the element" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Top", + "tooltip": "The offset from the anchors to the top edge of the element" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Right", + "tooltip": "The offset from the anchors to the right edge of the element" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Bottom", + "tooltip": "The offset from the anchors to the bottom edge of the element" + } + } + ] + }, + { + "key": "SetTop", + "context": "UiOffsets", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetTop" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetTop is invoked" + }, + "details": { + "name": "UiOffsets::SetTop", + "category": "UI" + }, + "params": [ + { + "typeid": "{F681BA9D-245C-4630-B20E-05DD752FAD57}", + "details": { + "name": "Offsets", + "tooltip": "The offsets for which to set the top offset" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Top", + "tooltip": "The offset from the anchors to the top edge of the element" + } + } + ] + }, + { + "key": "SetLeft", + "context": "UiOffsets", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetLeft" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetLeft is invoked" + }, + "details": { + "name": "UiOffsets::SetLeft", + "category": "UI" + }, + "params": [ + { + "typeid": "{F681BA9D-245C-4630-B20E-05DD752FAD57}", + "details": { + "name": "Offsets", + "tooltip": "The offsets for which to set the left offset" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Left", + "tooltip": "The offset from the anchors to the left edge of the element" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiPadding.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiPadding.names new file mode 100644 index 0000000000..296735cd1d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiPadding.names @@ -0,0 +1,196 @@ +{ + "entries": [ + { + "key": "UiPadding", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "UI Padding", + "category": "UI" + }, + "methods": [ + { + "key": "SetPadding", + "context": "UiPadding", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetPadding" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetPadding is invoked" + }, + "details": { + "name": "UiPadding::SetPadding", + "category": "UI" + }, + "params": [ + { + "typeid": "{DE5C18B0-4214-4A37-B590-8D45CC450A96}", + "details": { + "name": "Padding", + "tooltip": "The padding to set" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Left", + "tooltip": "The padding inside the left edge of the element" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Top", + "tooltip": "The padding inside the top edge of the element" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Right", + "tooltip": "The padding inside the right edge of the element" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Bottom", + "tooltip": "The padding inside the bottom edge of the element" + } + } + ] + }, + { + "key": "SetBottom", + "context": "UiPadding", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetBottom" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetBottom is invoked" + }, + "details": { + "name": "UiPadding::SetBottom", + "category": "UI" + }, + "params": [ + { + "typeid": "{DE5C18B0-4214-4A37-B590-8D45CC450A96}", + "details": { + "name": "Padding", + "tooltip": "The padding for which to set the bottom padding" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Bottom", + "tooltip": "The padding inside the bottom edge of the element" + } + } + ] + }, + { + "key": "SetRight", + "context": "UiPadding", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetRight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetRight is invoked" + }, + "details": { + "name": "UiPadding::SetRight", + "category": "UI" + }, + "params": [ + { + "typeid": "{DE5C18B0-4214-4A37-B590-8D45CC450A96}", + "details": { + "name": "Padding", + "tooltip": "The padding for which to set the right padding" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Right", + "tooltip": "The padding inside the right edge of the element" + } + } + ] + }, + { + "key": "SetTop", + "context": "UiPadding", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetTop" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetTop is invoked" + }, + "details": { + "name": "UiPadding::SetTop", + "category": "UI" + }, + "params": [ + { + "typeid": "{DE5C18B0-4214-4A37-B590-8D45CC450A96}", + "details": { + "name": "Padding", + "tooltip": "The padding for which to set the top padding" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Top", + "tooltip": "The padding inside the top edge of the element" + } + } + ] + }, + { + "key": "SetLeft", + "context": "UiPadding", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetLeft" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetLeft is invoked" + }, + "details": { + "name": "UiPadding::SetLeft", + "category": "UI" + }, + "params": [ + { + "typeid": "{DE5C18B0-4214-4A37-B590-8D45CC450A96}", + "details": { + "name": "Padding", + "tooltip": "The padding for which to set the left padding" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Left", + "tooltip": "The padding inside the left edge of the element" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiParticleEmitterComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiParticleEmitterComponent.names new file mode 100644 index 0000000000..ba5463b7a0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiParticleEmitterComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "UiParticleEmitterComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "UiParticleEmitterComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiScrollBarComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiScrollBarComponent.names new file mode 100644 index 0000000000..81a27fcdf1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiScrollBarComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "UiScrollBarComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "UiScrollBarComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiSliderComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiSliderComponent.names new file mode 100644 index 0000000000..269ae95c1c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiSliderComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "UiSliderComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "UiSliderComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiTextComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiTextComponent.names new file mode 100644 index 0000000000..ffed23d747 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiTextComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "UiTextComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "UiTextComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiTextInputComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiTextInputComponent.names new file mode 100644 index 0000000000..ca2bd78b61 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiTextInputComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "UiTextInputComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "UiTextInputComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiTooltipDisplayComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiTooltipDisplayComponent.names new file mode 100644 index 0000000000..b39c29cf97 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiTooltipDisplayComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "UiTooltipDisplayComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "UiTooltipDisplayComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiTransform2dComponent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiTransform2dComponent.names new file mode 100644 index 0000000000..4f0a04958a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/UiTransform2dComponent.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "UiTransform2dComponent", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "UiTransform2dComponent" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Unit Testing.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Unit Testing.names new file mode 100644 index 0000000000..c5eefda46c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Unit Testing.names @@ -0,0 +1,470 @@ +{ + "entries": [ + { + "key": "Unit Testing", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Unit Testing" + }, + "methods": [ + { + "key": "ExpectLessThanEqual", + "context": "Unit Testing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ExpectLessThanEqual" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ExpectLessThanEqual is invoked" + }, + "details": { + "name": "Unit Testing::Expect Less Than Equal", + "category": "Other" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "const EntityId&", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + } + ] + }, + { + "key": "ExpectGreaterThanEqual", + "context": "Unit Testing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ExpectGreaterThanEqual" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ExpectGreaterThanEqual is invoked" + }, + "details": { + "name": "Unit Testing::Expect Greater Than Equal", + "category": "Other" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "const EntityId&", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + } + ] + }, + { + "key": "MarkComplete", + "context": "Unit Testing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MarkComplete" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MarkComplete is invoked" + }, + "details": { + "name": "Unit Testing::Mark Complete", + "category": "Other" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "const EntityId&", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + } + ] + }, + { + "key": "ExpectTrue", + "context": "Unit Testing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ExpectTrue" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ExpectTrue is invoked" + }, + "details": { + "name": "Unit Testing::Expect True", + "category": "Other" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "const EntityId&", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + } + ] + }, + { + "key": "Checkpoint", + "context": "Unit Testing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Checkpoint" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Checkpoint is invoked" + }, + "details": { + "name": "Unit Testing::Checkpoint", + "category": "Other" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "const EntityId&", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + } + ] + }, + { + "key": "ExpectFalse", + "context": "Unit Testing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ExpectFalse" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ExpectFalse is invoked" + }, + "details": { + "name": "Unit Testing::Expect False", + "category": "Other" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "const EntityId&", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + } + ] + }, + { + "key": "ExpectEqual", + "context": "Unit Testing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ExpectEqual" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ExpectEqual is invoked" + }, + "details": { + "name": "Unit Testing::Expect Equal", + "category": "Other" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "const EntityId&", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + }, + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + } + ] + }, + { + "key": "ExpectLessThan", + "context": "Unit Testing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ExpectLessThan" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ExpectLessThan is invoked" + }, + "details": { + "name": "Unit Testing::Expect Less Than", + "category": "Other" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "const EntityId&", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + } + ] + }, + { + "key": "AddSuccess", + "context": "Unit Testing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddSuccess" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddSuccess is invoked" + }, + "details": { + "name": "Unit Testing::Add Success", + "category": "Other" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "const EntityId&", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + } + ] + }, + { + "key": "ExpectNotEqual", + "context": "Unit Testing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ExpectNotEqual" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ExpectNotEqual is invoked" + }, + "details": { + "name": "Unit Testing::Expect Not Equal", + "category": "Other" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "const EntityId&", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + }, + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + } + ] + }, + { + "key": "ExpectGreaterThan", + "context": "Unit Testing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ExpectGreaterThan" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ExpectGreaterThan is invoked" + }, + "details": { + "name": "Unit Testing::Expect Greater Than", + "category": "Other" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "const EntityId&", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + } + ] + }, + { + "key": "AddFailure", + "context": "Unit Testing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddFailure" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddFailure is invoked" + }, + "details": { + "name": "Unit Testing::Add Failure", + "category": "Other" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "const EntityId&", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Uuid.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Uuid.names new file mode 100644 index 0000000000..1ba15fce9f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/Uuid.names @@ -0,0 +1,318 @@ +{ + "entries": [ + { + "key": "Uuid", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "Uuid" + }, + "methods": [ + { + "key": "CreateRandom", + "context": "Uuid", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create Random" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create Random is invoked" + }, + "details": { + "name": "Create Random" + }, + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Uuid" + } + } + ] + }, + { + "key": "CreateNull", + "context": "Uuid", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create Null" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create Null is invoked" + }, + "details": { + "name": "Create Null" + }, + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Uuid" + } + } + ] + }, + { + "key": "Create", + "context": "Uuid", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create is invoked" + }, + "details": { + "name": "Create" + }, + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Uuid" + } + } + ] + }, + { + "key": "CreateName", + "context": "Uuid", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create Name is invoked" + }, + "details": { + "name": "Create Name" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Name" + } + } + ], + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Uuid" + } + } + ] + }, + { + "key": "Clone", + "context": "Uuid", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clone" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clone is invoked" + }, + "details": { + "name": "Clone" + }, + "params": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Uuid" + } + } + ], + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Uuid" + } + } + ] + }, + { + "key": "LessThan", + "context": "Uuid", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Less Than" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Less Than is invoked" + }, + "details": { + "name": "Less Than" + }, + "params": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Uuid" + } + }, + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Uuid" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Less Than" + } + } + ] + }, + { + "key": "IsNull", + "context": "Uuid", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Null" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Null is invoked" + }, + "details": { + "name": "Is Null" + }, + "params": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Uuid" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Null" + } + } + ] + }, + { + "key": "CreateString", + "context": "Uuid", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create String" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create String is invoked" + }, + "details": { + "name": "Create String" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Name" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Size" + } + } + ], + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Uuid" + } + } + ] + }, + { + "key": "ToString", + "context": "Uuid", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke To String" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after To String is invoked" + }, + "details": { + "name": "To String" + }, + "params": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Uuid" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "String" + } + } + ] + }, + { + "key": "Equal", + "context": "Uuid", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Equal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Equal is invoked" + }, + "details": { + "name": "Equal" + }, + "params": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Uuid" + } + }, + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Uuid" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Equal" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/VertexColor.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/VertexColor.names new file mode 100644 index 0000000000..e7636f6353 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/VertexColor.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "VertexColor", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "VertexColor" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ViewPaneOptions.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ViewPaneOptions.names new file mode 100644 index 0000000000..7a5a2c6d09 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Classes/ViewPaneOptions.names @@ -0,0 +1,12 @@ +{ + "entries": [ + { + "key": "ViewPaneOptions", + "context": "BehaviorClass", + "variant": "", + "details": { + "name": "ViewPaneOptions" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AWSCognitoAuthorizationNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AWSCognitoAuthorizationNotificationBus.names new file mode 100644 index 0000000000..b96ab2fb37 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AWSCognitoAuthorizationNotificationBus.names @@ -0,0 +1,43 @@ +{ + "entries": [ + { + "key": "AWSCognitoAuthorizationNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "AWS Cognito Authorization", + "category": "AWS Core" + }, + "methods": [ + { + "key": "OnRequestAWSCredentialsSuccess", + "details": { + "name": "On Request AWS Credentials Success" + }, + "params": [ + { + "typeid": "{02FB32C4-B94E-4084-9049-3DF32F87BD76}", + "details": { + "name": "AWS Client Auth Credentials" + } + } + ] + }, + { + "key": "OnRequestAWSCredentialsFail", + "details": { + "name": "On Request AWS Credentials Fail" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Error" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AWSCognitoUserManagementNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AWSCognitoUserManagementNotificationBus.names new file mode 100644 index 0000000000..a796ec0f48 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AWSCognitoUserManagementNotificationBus.names @@ -0,0 +1,151 @@ +{ + "entries": [ + { + "key": "AWSCognitoUserManagementNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "AWS Cognito User Management", + "category": "AWS Client Auth" + }, + "methods": [ + { + "key": "OnEmailSignUpSuccess", + "details": { + "name": "On Email Sign Up Success" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Unique Id" + } + } + ] + }, + { + "key": "OnEmailSignUpFail", + "details": { + "name": "On Email Sign Up Fail" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Error" + } + } + ] + }, + { + "key": "OnPhoneSignUpSuccess", + "details": { + "name": "On Phone Sign Up Success" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Unique Id" + } + } + ] + }, + { + "key": "OnPhoneSignUpFail", + "details": { + "name": "On Phone Sign Up Fail" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Error" + } + } + ] + }, + { + "key": "OnConfirmSignUpSuccess", + "details": { + "name": "On Confirm Sign Up Success" + } + }, + { + "key": "OnConfirmSignUpFail", + "details": { + "name": "On Confirm Sign Up Fail" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Error" + } + } + ] + }, + { + "key": "OnForgotPasswordSuccess", + "details": { + "name": "On Forgot Password Success" + } + }, + { + "key": "OnForgotPasswordFail", + "details": { + "name": "On Forgot Password Fail" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Error" + } + } + ] + }, + { + "key": "OnConfirmForgotPasswordSuccess", + "details": { + "name": "On Confirm Forgot Password Success" + } + }, + { + "key": "OnConfirmForgotPasswordFail", + "details": { + "name": "On Confirm Forgot Password Fail" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Error" + } + } + ] + }, + { + "key": "OnEnableMFASuccess", + "details": { + "name": "On Enable MFA Success" + } + }, + { + "key": "OnEnableMFAFail", + "details": { + "name": "On Enable MFA Fail" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Error" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AWSDynamoDBBehaviorNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AWSDynamoDBBehaviorNotificationBus.names new file mode 100644 index 0000000000..c5840d7bdb --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AWSDynamoDBBehaviorNotificationBus.names @@ -0,0 +1,43 @@ +{ + "entries": [ + { + "key": "AWSDynamoDBBehaviorNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "AWS Dynamo DB", + "category": "AWS Core" + }, + "methods": [ + { + "key": "OnGetItemSuccess", + "details": { + "name": "On Get Item Success" + }, + "params": [ + { + "typeid": "{F8A7460C-2CC2-5755-AFDA-49B1109A751E}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "OnGetItemError", + "details": { + "name": "On Get Item Error" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Error" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AWSLambdaBehaviorNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AWSLambdaBehaviorNotificationBus.names new file mode 100644 index 0000000000..713ece5219 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AWSLambdaBehaviorNotificationBus.names @@ -0,0 +1,43 @@ +{ + "entries": [ + { + "key": "AWSLambdaBehaviorNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "AWS Lambda", + "category": "AWS Core" + }, + "methods": [ + { + "key": "OnInvokeSuccess", + "details": { + "name": "On Invoke Success" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "OnInvokeError", + "details": { + "name": "On Invoke Error" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Error" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AWSMetricsNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AWSMetricsNotificationBus.names new file mode 100644 index 0000000000..64920f9444 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AWSMetricsNotificationBus.names @@ -0,0 +1,49 @@ +{ + "entries": [ + { + "key": "AWSMetricsNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "AWS Metrics", + "category": "AWS Core" + }, + "methods": [ + { + "key": "OnSendMetricsSuccess", + "details": { + "name": "On Send Metrics Success" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Request Id" + } + } + ] + }, + { + "key": "OnSendMetricsFailure", + "details": { + "name": "On Send Metrics Failure" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Request Id" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Error" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AWSS3BehaviorNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AWSS3BehaviorNotificationBus.names new file mode 100644 index 0000000000..55b093d348 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AWSS3BehaviorNotificationBus.names @@ -0,0 +1,71 @@ +{ + "entries": [ + { + "key": "AWSS3BehaviorNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "AWS S3", + "category": "AWS Core" + }, + "methods": [ + { + "key": "OnHeadObjectSuccess", + "details": { + "name": "On Head Object Success" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "OnHeadObjectError", + "details": { + "name": "On Head Object Error" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Error" + } + } + ] + }, + { + "key": "OnGetObjectSuccess", + "details": { + "name": "On Get Object Success" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Result" + } + } + ] + }, + { + "key": "OnGetObjectError", + "details": { + "name": "On Get Object Error" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Error" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/ActorComponentNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/ActorComponentNotificationBus.names new file mode 100644 index 0000000000..5b61508119 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/ActorComponentNotificationBus.names @@ -0,0 +1,43 @@ +{ + "entries": [ + { + "key": "ActorComponentNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "Actor", + "category": "Animation" + }, + "methods": [ + { + "key": "OnActorInstanceCreated", + "details": { + "name": "On Actor Instance Created" + }, + "params": [ + { + "typeid": "{280A0170-EB6A-4E90-B2F1-E18D8EAEFB36}", + "details": { + "name": "Actor Instance" + } + } + ] + }, + { + "key": "OnActorInstanceDestroyed", + "details": { + "name": "On Actor Instance Destroyed" + }, + "params": [ + { + "typeid": "{280A0170-EB6A-4E90-B2F1-E18D8EAEFB36}", + "details": { + "name": "Actor Instance" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/ActorNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/ActorNotificationBus.names new file mode 100644 index 0000000000..77cb8b59c5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/ActorNotificationBus.names @@ -0,0 +1,139 @@ +{ + "entries": [ + { + "key": "ActorNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "Actor", + "category": "Animation" + }, + "methods": [ + { + "key": "OnMotionEvent", + "details": { + "name": "On Motion Event" + }, + "params": [ + { + "typeid": "{0C899DAC-6B19-4BDD-AD8C-8A11EF2A6729}", + "details": { + "name": "Motion Event" + } + } + ] + }, + { + "key": "OnMotionLoop", + "details": { + "name": "On Motion Loop" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Motion Name" + } + } + ] + }, + { + "key": "OnStateEntering", + "details": { + "name": "On State Entering" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "State Name" + } + } + ] + }, + { + "key": "OnStateEntered", + "details": { + "name": "On State Entered" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "State Name" + } + } + ] + }, + { + "key": "OnStateExiting", + "details": { + "name": "On State Exiting" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "State Name" + } + } + ] + }, + { + "key": "OnStateExited", + "details": { + "name": "On State Exited" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "State Name" + } + } + ] + }, + { + "key": "OnStateTransitionStart", + "details": { + "name": "On State Transition Start" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "From State" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "To State" + } + } + ] + }, + { + "key": "OnStateTransitionEnd", + "details": { + "name": "On State Transition End" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "From State" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "To State" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AnimGraphComponentNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AnimGraphComponentNotificationBus.names new file mode 100644 index 0000000000..ec8d9fa193 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AnimGraphComponentNotificationBus.names @@ -0,0 +1,235 @@ +{ + "entries": [ + { + "key": "AnimGraphComponentNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "Anim Graph", + "category": "Animation" + }, + "methods": [ + { + "key": "OnAnimGraphInstanceCreated", + "details": { + "name": "On Anim Graph Instance Created" + }, + "params": [ + { + "typeid": "{2CC86AA2-AFC0-434B-A317-B102FD02E76D}", + "details": { + "name": "Anim Graph Instance" + } + } + ] + }, + { + "key": "OnAnimGraphInstanceDestroyed", + "details": { + "name": "On Anim Graph Instance Destroyed" + }, + "params": [ + { + "typeid": "{2CC86AA2-AFC0-434B-A317-B102FD02E76D}", + "details": { + "name": "Anim Graph Instance" + } + } + ] + }, + { + "key": "OnAnimGraphFloatParameterChanged", + "details": { + "name": "On Anim Graph Float Parameter Changed" + }, + "params": [ + { + "typeid": "{2CC86AA2-AFC0-434B-A317-B102FD02E76D}", + "details": { + "name": "Anim Graph Instance" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Parameter Index" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Previous Value" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Current Value" + } + } + ] + }, + { + "key": "OnAnimGraphBoolParameterChanged", + "details": { + "name": "On Anim Graph Bool Parameter Changed" + }, + "params": [ + { + "typeid": "{2CC86AA2-AFC0-434B-A317-B102FD02E76D}", + "details": { + "name": "Anim Graph Instance" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Parameter Index" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Previous Value" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Current Value" + } + } + ] + }, + { + "key": "OnAnimGraphStringParameterChanged", + "details": { + "name": "On Anim Graph String Parameter Changed" + }, + "params": [ + { + "typeid": "{2CC86AA2-AFC0-434B-A317-B102FD02E76D}", + "details": { + "name": "Anim Graph Instance" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Parameter Index" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Previous Value" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Current Value" + } + } + ] + }, + { + "key": "OnAnimGraphVector2ParameterChanged", + "details": { + "name": "On Anim Graph Vector2 Parameter Changed" + }, + "params": [ + { + "typeid": "{2CC86AA2-AFC0-434B-A317-B102FD02E76D}", + "details": { + "name": "Anim Graph Instance" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Parameter Index" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Previous Value" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Current Value" + } + } + ] + }, + { + "key": "OnAnimGraphVector3ParameterChanged", + "details": { + "name": "On Anim Graph Vector3 Parameter Changed" + }, + "params": [ + { + "typeid": "{2CC86AA2-AFC0-434B-A317-B102FD02E76D}", + "details": { + "name": "Anim Graph Instance" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Parameter Index" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Previous Value" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Current Value" + } + } + ] + }, + { + "key": "OnAnimGraphRotationParameterChanged", + "details": { + "name": "On Anim Graph Rotation Parameter Changed" + }, + "params": [ + { + "typeid": "{2CC86AA2-AFC0-434B-A317-B102FD02E76D}", + "details": { + "name": "Anim Graph Instance" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Parameter Index" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Previous Value" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Current Value" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AttachmentComponentNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AttachmentComponentNotificationBus.names new file mode 100644 index 0000000000..64f2f4c204 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AttachmentComponentNotificationBus.names @@ -0,0 +1,45 @@ +{ + "entries": [ + { + "key": "AttachmentComponentNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "Attachment", + "category": "Animation" + }, + "methods": [ + { + "key": "OnAttached", + "details": { + "name": "On Attached" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "OnDetached", + "details": { + "name": "On Detached" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/Audio System Component Notifications.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/Audio System Component Notifications.names new file mode 100644 index 0000000000..adf505b728 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/Audio System Component Notifications.names @@ -0,0 +1,26 @@ +{ + "entries": [ + { + "key": "Audio System Component Notifications", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "Audio System Component Notifications" + }, + "methods": [ + { + "key": "OnGamePaused", + "details": { + "name": "OnGamePaused" + } + }, + { + "key": "OnGameUnpaused", + "details": { + "name": "OnGameUnpaused" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AudioTriggerComponentNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AudioTriggerComponentNotificationBus.names new file mode 100644 index 0000000000..d134f20f74 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AudioTriggerComponentNotificationBus.names @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "key": "AudioTriggerComponentNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "Audio Trigger", + "category": "Audio" + }, + "methods": [ + { + "key": "OnTriggerFinished", + "details": { + "name": "On Trigger Finished", + "tooltip": "Executes when an audio trigger has finished playing (the sound has ended)." + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Trigger ID", + "tooltip": "The ID of the trigger that was successfully executed" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AuthenticationProviderNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AuthenticationProviderNotificationBus.names new file mode 100644 index 0000000000..f90336780e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/AuthenticationProviderNotificationBus.names @@ -0,0 +1,187 @@ +{ + "entries": [ + { + "key": "AuthenticationProviderNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "AWS Authentication Provider", + "category": "AWS Client Auth" + }, + "methods": [ + { + "key": "OnPasswordGrantSingleFactorSignInSuccess", + "details": { + "name": "On Password Grant Single Factor Sign In Success" + }, + "params": [ + { + "typeid": "{F965D1B2-9DE3-4900-B44B-E58D9F083ACB}", + "details": { + "name": "Authentication Tokens" + } + } + ] + }, + { + "key": "OnPasswordGrantSingleFactorSignInFail", + "details": { + "name": "On Password Grant Single Factor Sign In Fail" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Error" + } + } + ] + }, + { + "key": "OnPasswordGrantMultiFactorSignInSuccess", + "details": { + "name": "On Password Grant Multi Factor Sign In Success" + } + }, + { + "key": "OnPasswordGrantMultiFactorSignInFail", + "details": { + "name": "On Password Grant Multi Factor Sign In Fail" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Error" + } + } + ] + }, + { + "key": "OnPasswordGrantMultiFactorConfirmSignInSuccess", + "details": { + "name": "On Password Grant Multi Factor Confirm Sign In Success" + }, + "params": [ + { + "typeid": "{F965D1B2-9DE3-4900-B44B-E58D9F083ACB}", + "details": { + "name": "AuthenticationTokens" + } + } + ] + }, + { + "key": "OnPasswordGrantMultiFactorConfirmSignInFail", + "details": { + "name": "On Password Grant Multi Factor Confirm Sign In Fail" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Error" + } + } + ] + }, + { + "key": "OnDeviceCodeGrantSignInSuccess", + "details": { + "name": "On Device Code Grant Sign In Success" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "User Code" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Verification URL" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Code Expiration (Seconds)" + } + } + ] + }, + { + "key": "OnDeviceCodeGrantSignInFail", + "details": { + "name": "On Device Code Grant Sign In Fail" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Error" + } + } + ] + }, + { + "key": "OnDeviceCodeGrantConfirmSignInSuccess", + "details": { + "name": "On Device Code Grant Confirm Sign In Success" + }, + "params": [ + { + "typeid": "{F965D1B2-9DE3-4900-B44B-E58D9F083ACB}", + "details": { + "name": "Authentication Tokens" + } + } + ] + }, + { + "key": "OnDeviceCodeGrantConfirmSignInFail", + "details": { + "name": "On Device Code Grant Confirm Sign In Fail" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Error" + } + } + ] + }, + { + "key": "OnRefreshTokensSuccess", + "details": { + "name": "On Refresh Tokens Success" + }, + "params": [ + { + "typeid": "{F965D1B2-9DE3-4900-B44B-E58D9F083ACB}", + "details": { + "name": "Authentication Tokens" + } + } + ] + }, + { + "key": "OnRefreshTokensFail", + "details": { + "name": "On Refresh Tokens Fail" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Error" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/BlastFamilyComponentNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/BlastFamilyComponentNotificationBus.names new file mode 100644 index 0000000000..c8722bf36f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/BlastFamilyComponentNotificationBus.names @@ -0,0 +1,45 @@ +{ + "entries": [ + { + "key": "BlastFamilyComponentNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "Blast Family", + "category": "Blast" + }, + "methods": [ + { + "key": "OnActorCreated", + "details": { + "name": "On Actor Created" + }, + "params": [ + { + "typeid": "{A23453D5-79A8-49C8-B9F0-9CC35D711DD4}", + "details": { + "name": "Blast Actor Data", + "tooltip": "Represents Blast Actor in a Script Canvas friendly format." + } + } + ] + }, + { + "key": "OnActorDestroyed", + "details": { + "name": "On Actor Destroyed" + }, + "params": [ + { + "typeid": "{A23453D5-79A8-49C8-B9F0-9CC35D711DD4}", + "details": { + "name": "Blast Actor Data", + "tooltip": "Represents Blast Actor in a Script Canvas friendly format." + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/CameraNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/CameraNotificationBus.names new file mode 100644 index 0000000000..3c12c9643e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/CameraNotificationBus.names @@ -0,0 +1,60 @@ +{ + "entries": [ + { + "key": "CameraNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "Camera", + "category": "Camera" + }, + "methods": [ + { + "key": "OnCameraAdded", + "details": { + "name": "On Camera Added" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "OnCameraRemoved", + "details": { + "name": "On Camera Removed" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "OnActiveViewChanged", + "details": { + "name": "On Active View Changed" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/CollisionNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/CollisionNotificationBus.names new file mode 100644 index 0000000000..bf835079c8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/CollisionNotificationBus.names @@ -0,0 +1,74 @@ +{ + "entries": [ + { + "key": "CollisionNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "Collision", + "category": "PhysX" + }, + "methods": [ + { + "key": "OnCollisionBegin", + "details": { + "name": "On Collision Begin" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "OnCollisionPersist", + "details": { + "name": "On Collision Persist", + "tooltip": "Raised while this collider is in contact with another collider" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "OnCollisionEnd", + "details": { + "name": "On Collision End", + "tooltip": "Raised when a collider loses contact with another collider" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/ConsoleNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/ConsoleNotificationBus.names new file mode 100644 index 0000000000..9bd1bfbbb1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/ConsoleNotificationBus.names @@ -0,0 +1,29 @@ +{ + "entries": [ + { + "key": "ConsoleNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "Console", + "category": "Utilities" + }, + "methods": [ + { + "key": "OnConsoleCommandExecuted", + "details": { + "name": "On Console Command Executed" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Command" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/EditorComponentModeNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/EditorComponentModeNotificationBus.names new file mode 100644 index 0000000000..2dfae7ace9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/EditorComponentModeNotificationBus.names @@ -0,0 +1,28 @@ +{ + "entries": [ + { + "key": "EditorComponentModeNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "EditorComponentModeNotificationBus" + }, + "methods": [ + { + "key": "ActiveComponentModeChanged", + "details": { + "name": "ActiveComponentModeChanged" + }, + "params": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/EditorEntityContextNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/EditorEntityContextNotificationBus.names new file mode 100644 index 0000000000..699b59c46c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/EditorEntityContextNotificationBus.names @@ -0,0 +1,44 @@ +{ + "entries": [ + { + "key": "EditorEntityContextNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "EditorEntityContextNotificationBus" + }, + "methods": [ + { + "key": "OnEditorEntityCreated", + "details": { + "name": "OnEditorEntityCreated" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "OnEditorEntityDeleted", + "details": { + "name": "OnEditorEntityDeleted" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/EditorEventBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/EditorEventBus.names new file mode 100644 index 0000000000..7aa15f1009 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/EditorEventBus.names @@ -0,0 +1,20 @@ +{ + "entries": [ + { + "key": "EditorEventBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "EditorEventBus" + }, + "methods": [ + { + "key": "NotifyRegisterViews", + "details": { + "name": "NotifyRegisterViews" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/EntityBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/EntityBus.names new file mode 100644 index 0000000000..b72951159e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/EntityBus.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "EntityBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "Game Entity", + "category": "Entity" + }, + "methods": [ + { + "key": "OnEntityActivated", + "details": { + "name": "On Entity Activated", + "tooltip": "Signals that an entity was activated" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity", + "tooltip": "The ID of the entity that was activated" + } + } + ] + }, + { + "key": "OnEntityDeactivated", + "details": { + "name": "On Entity Deactivated", + "tooltip": "Signals that an entity is being deactivated" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity", + "tooltip": "The ID of the entity that is being deactivated" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/FrameCaptureNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/FrameCaptureNotificationBus.names new file mode 100644 index 0000000000..a3067cb11a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/FrameCaptureNotificationBus.names @@ -0,0 +1,34 @@ +{ + "entries": [ + { + "key": "FrameCaptureNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "FrameCaptureNotificationBus" + }, + "methods": [ + { + "key": "OnCaptureFinished", + "details": { + "name": "OnCaptureFinished" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/GlobalScriptEvents.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/GlobalScriptEvents.names new file mode 100644 index 0000000000..7a62831c76 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/GlobalScriptEvents.names @@ -0,0 +1,64 @@ +{ + "entries": [ + { + "key": "GlobalScriptEvents", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "GlobalScriptEvents" + }, + "methods": [ + { + "key": "Void", + "details": { + "name": "Void" + } + }, + { + "key": "Not", + "details": { + "name": "Not" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Not" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Not" + } + } + ] + }, + { + "key": "Increment", + "details": { + "name": "Increment" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "Increment" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "Increment" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/InputSystemNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/InputSystemNotificationBus.names new file mode 100644 index 0000000000..5aea1ad6b7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/InputSystemNotificationBus.names @@ -0,0 +1,26 @@ +{ + "entries": [ + { + "key": "InputSystemNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "InputSystemNotificationBus" + }, + "methods": [ + { + "key": "OnPreInputUpdate", + "details": { + "name": "OnPreInputUpdate" + } + }, + { + "key": "OnPostInputUpdate", + "details": { + "name": "OnPostInputUpdate" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/LocalScriptEvents.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/LocalScriptEvents.names new file mode 100644 index 0000000000..bb23219646 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/LocalScriptEvents.names @@ -0,0 +1,64 @@ +{ + "entries": [ + { + "key": "LocalScriptEvents", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "LocalScriptEvents" + }, + "methods": [ + { + "key": "Void", + "details": { + "name": "Void" + } + }, + { + "key": "Not", + "details": { + "name": "Not" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Not" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Not" + } + } + ] + }, + { + "key": "Increment", + "details": { + "name": "Increment" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "Increment" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "Increment" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/LookAtNotification.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/LookAtNotification.names new file mode 100644 index 0000000000..6d1ff93ed4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/LookAtNotification.names @@ -0,0 +1,30 @@ +{ + "entries": [ + { + "key": "LookAtNotification", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "LookAtNotification", + "tooltip": "Notifications for the Look At Component" + }, + "methods": [ + { + "key": "OnTargetChanged", + "details": { + "name": "OnTargetChanged" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/MeshComponentNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/MeshComponentNotificationBus.names new file mode 100644 index 0000000000..a62652ba47 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/MeshComponentNotificationBus.names @@ -0,0 +1,34 @@ +{ + "entries": [ + { + "key": "MeshComponentNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "MeshComponentNotificationBus" + }, + "methods": [ + { + "key": "OnModelReady", + "details": { + "name": "OnModelReady" + }, + "params": [ + { + "typeid": "{A1F6761B-B5CA-59E6-89FF-EB0ABDF6BD68}", + "details": { + "name": "Asset" + } + }, + { + "typeid": "{2B7F6107-B177-5C17-9408-823396E6D8B8}", + "details": { + "name": "" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/NavigationComponentNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/NavigationComponentNotificationBus.names new file mode 100644 index 0000000000..b7549119c5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/NavigationComponentNotificationBus.names @@ -0,0 +1,126 @@ +{ + "entries": [ + { + "key": "NavigationComponentNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "Movement", + "category": "Navigation" + }, + "methods": [ + { + "key": "OnSearchingForPath", + "details": { + "name": "On Searching For Path" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Request Id", + "tooltip": "Navigation request Id" + } + } + ] + }, + { + "key": "OnTraversalStarted", + "details": { + "name": "On Traversal Started" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Request Id", + "tooltip": "Navigation request Id" + } + } + ] + }, + { + "key": "OnTraversalPathUpdate", + "details": { + "name": "On Traversal Path Update" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Request Id", + "tooltip": "Navigation request Id" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Next Path Position", + "tooltip": "Next path position" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Inflection Position", + "tooltip": "Next inflection position" + } + } + ] + }, + { + "key": "OnTraversalInProgress", + "details": { + "name": "On Traversal In Progress" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Request Id", + "tooltip": "Navigation request Id" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Distance", + "tooltip": "Distance remaining" + } + } + ] + }, + { + "key": "OnTraversalComplete", + "details": { + "name": "On Traversal Complete" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Request Id", + "tooltip": "Navigation request Id" + } + } + ] + }, + { + "key": "OnTraversalCancelled", + "details": { + "name": "On Traversal Cancelled" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Request Id", + "tooltip": "Navigation request Id" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/NetworkTestPlayerComponentBusHandler.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/NetworkTestPlayerComponentBusHandler.names new file mode 100644 index 0000000000..9d69acdc02 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/NetworkTestPlayerComponentBusHandler.names @@ -0,0 +1,57 @@ +{ + "entries": [ + { + "key": "NetworkTestPlayerComponentBusHandler", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "Network Test Player", + "category": "Automated Testing" + }, + "methods": [ + { + "key": "CreateInput", + "details": { + "name": "Create Input" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Delta Time" + } + } + ], + "results": [ + { + "typeid": "{12A1776B-61F6-4E5F-356A-AD718A62051F}", + "details": { + "name": "Network Test Player Component Network Input" + } + } + ] + }, + { + "key": "ProcessInput", + "details": { + "name": "Process Input" + }, + "params": [ + { + "typeid": "{12A1776B-61F6-4E5F-356A-AD718A62051F}", + "details": { + "name": "Network Test Player Component Network Input" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Delta Time" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/ProfilingCaptureNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/ProfilingCaptureNotificationBus.names new file mode 100644 index 0000000000..d1e76ba23a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/ProfilingCaptureNotificationBus.names @@ -0,0 +1,94 @@ +{ + "entries": [ + { + "key": "ProfilingCaptureNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "ProfilingCaptureNotificationBus" + }, + "methods": [ + { + "key": "OnCaptureQueryTimestampFinished", + "details": { + "name": "OnCaptureQueryTimestampFinished" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "OnCaptureCpuFrameTimeFinished", + "details": { + "name": "OnCaptureCpuFrameTimeFinished" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "OnCaptureQueryPipelineStatisticsFinished", + "details": { + "name": "OnCaptureQueryPipelineStatisticsFinished" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "OnCaptureBenchmarkMetadataFinished", + "details": { + "name": "OnCaptureBenchmarkMetadataFinished" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/ScriptBuildingNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/ScriptBuildingNotificationBus.names new file mode 100644 index 0000000000..08af710bc3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/ScriptBuildingNotificationBus.names @@ -0,0 +1,76 @@ +{ + "entries": [ + { + "key": "ScriptBuildingNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "ScriptBuildingNotificationBus" + }, + "methods": [ + { + "key": "OnUpdateManifest", + "details": { + "name": "OnUpdateManifest" + }, + "params": [ + { + "typeid": "{1F2E6142-B0D8-42C6-A6E5-CD726DAA9EF0}", + "details": { + "name": "" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "OnPrepareForExport", + "details": { + "name": "OnPrepareForExport" + }, + "params": [ + { + "typeid": "{1F2E6142-B0D8-42C6-A6E5-CD726DAA9EF0}", + "details": { + "name": "" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "" + } + }, + { + "typeid": "{1C76A51F-431B-4987-B653-CFCC940D0D0F}", + "details": { + "name": "" + } + } + ], + "results": [ + { + "typeid": "{1C76A51F-431B-4987-B653-CFCC940D0D0F}", + "details": { + "name": "" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/SequenceComponentNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/SequenceComponentNotificationBus.names new file mode 100644 index 0000000000..cadb4ef7f1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/SequenceComponentNotificationBus.names @@ -0,0 +1,110 @@ +{ + "entries": [ + { + "key": "SequenceComponentNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "Sequence", + "category": "Animation" + }, + "methods": [ + { + "key": "OnStart", + "details": { + "name": "On Start", + "tooltip": "Called when Sequence starts" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Start Time" + } + } + ] + }, + { + "key": "OnStop", + "details": { + "name": "On Stop", + "tooltip": "Called when Sequence stops" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Stop Time" + } + } + ] + }, + { + "key": "OnPause", + "details": { + "name": "On Pause", + "tooltip": "Called when Sequence pauses" + } + }, + { + "key": "OnResume", + "details": { + "name": "On Resume", + "tooltip": "Called when Sequence resumes" + } + }, + { + "key": "OnAbort", + "details": { + "name": "On Abort", + "tooltip": "Called when Sequence is aborted" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Abort Time" + } + } + ] + }, + { + "key": "OnUpdate", + "details": { + "name": "On Update", + "tooltip": "Called when Sequence is updated. That is, when the current play time changes, or the playback speed changes" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Update Time" + } + } + ] + }, + { + "key": "OnTrackEventTriggered", + "details": { + "name": "On Track Event Triggered", + "tooltip": "Called when Sequence Event is triggered" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Event Name" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Event Value" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/ShapeComponentNotificationsBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/ShapeComponentNotificationsBus.names new file mode 100644 index 0000000000..8041830dff --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/ShapeComponentNotificationsBus.names @@ -0,0 +1,29 @@ +{ + "entries": [ + { + "key": "ShapeComponentNotificationsBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "Shape Component", + "category": "Shape" + }, + "methods": [ + { + "key": "OnShapeChanged", + "details": { + "name": "On Shape Changed" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/SimpleStateComponentNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/SimpleStateComponentNotificationBus.names new file mode 100644 index 0000000000..2fe77025c7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/SimpleStateComponentNotificationBus.names @@ -0,0 +1,38 @@ +{ + "entries": [ + { + "key": "SimpleStateComponentNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "Simple State", + "category": "Gameplay" + }, + "methods": [ + { + "key": "OnStateChanged", + "details": { + "name": "On State Changed", + "tooltip": "Notifies that the state has changed from state oldName to state newName" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Old State", + "tooltip": "Name of the old state" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "New State", + "tooltip": "Name of the new state" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/SpawnerComponentNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/SpawnerComponentNotificationBus.names new file mode 100644 index 0000000000..39c8a095af --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/SpawnerComponentNotificationBus.names @@ -0,0 +1,104 @@ +{ + "entries": [ + { + "key": "SpawnerComponentNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "Spawner", + "category": "Gameplay" + }, + "methods": [ + { + "key": "OnSpawnBegin", + "details": { + "name": "On Spawn Begin", + "tooltip": "Notifies when the spawn starts" + }, + "params": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "Slice", + "tooltip": "Slice instance from the spawn event" + } + } + ] + }, + { + "key": "OnSpawnEnd", + "details": { + "name": "On Spawn End", + "tooltip": "Notifies when the spawn completes" + }, + "params": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "Slice", + "tooltip": "Slice instance from the spawn event" + } + } + ] + }, + { + "key": "OnEntitySpawned", + "details": { + "name": "On Entity Spawned", + "tooltip": "Notify that an entity has spawned, will be called once for each entity spawned in a slice" + }, + "params": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "Slice", + "tooltip": "Slice instance from the spawn event" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity", + "tooltip": "EntityID of the spawned entity, for each spawned entity" + } + } + ] + }, + { + "key": "OnSpawnedSliceDestroyed", + "details": { + "name": "OnSpawnedSliceDestroyed" + }, + "params": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "SliceInstantiationTicket" + } + } + ] + }, + { + "key": "OnEntitiesSpawned", + "details": { + "name": "OnEntitiesSpawned" + }, + "params": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "SliceInstantiationTicket" + } + }, + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/SubmarineEvents.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/SubmarineEvents.names new file mode 100644 index 0000000000..a2e75129cf --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/SubmarineEvents.names @@ -0,0 +1,28 @@ +{ + "entries": [ + { + "key": "SubmarineEvents", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "SubmarineEvents" + }, + "methods": [ + { + "key": "SetSpeed", + "details": { + "name": "SetSpeed" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "SetSpeed" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/TagComponentNotificationsBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/TagComponentNotificationsBus.names new file mode 100644 index 0000000000..1fc8a7cdab --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/TagComponentNotificationsBus.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "TagComponentNotificationsBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "Tag", + "category": "Gameplay" + }, + "methods": [ + { + "key": "OnTagAdded", + "details": { + "name": "On Tag Added", + "tooltip": "Executes when a tag is added to the source entity" + }, + "params": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Tag", + "tooltip": "The tag that was added to the source entity" + } + } + ] + }, + { + "key": "OnTagRemoved", + "details": { + "name": "On Tag Removed", + "tooltip": "Executes when a tag is removed from the source entity" + }, + "params": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Tag", + "tooltip": "The tag that was removed from the source entity" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/TagGlobalNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/TagGlobalNotificationBus.names new file mode 100644 index 0000000000..e5b8179b69 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/TagGlobalNotificationBus.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "TagGlobalNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "Tag", + "category": "Gameplay" + }, + "methods": [ + { + "key": "OnEntityTagAdded", + "details": { + "name": "On Entity Tag Added", + "tooltip": "Executes when the specified source tag is added to any entity" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity", + "tooltip": "The ID of the entity that the tag was added to" + } + } + ] + }, + { + "key": "OnEntityTagRemoved", + "details": { + "name": "On Entity Tag Removed", + "tooltip": "Executes when the specified source tag is removed from any entity" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity", + "tooltip": "The ID of the entity that the tag was removed from" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/TickBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/TickBus.names new file mode 100644 index 0000000000..5144e771d3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/TickBus.names @@ -0,0 +1,54 @@ +{ + "entries": [ + { + "key": "TickBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "Tick", + "category": "Timing" + }, + "methods": [ + { + "key": "OnTick", + "details": { + "name": "On Tick", + "tooltip": "Signals that the application has issued a tick" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Delta", + "tooltip": "The delta (in seconds) from the previous tick and the current time" + } + }, + { + "typeid": "{4C0F6AD4-0D4F-4354-AD4A-0C01E948245C}", + "details": { + "name": "Time", + "tooltip": "The current time relatve to the epoch (January 1, 1970)" + } + } + ] + }, + { + "key": "GetTickOrder", + "details": { + "name": "Get Tick Order", + "tooltip": "Specifies the order in which a handler receives tick events relative to other handlers" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Order", + "tooltip": "A value specifying this handler's relative order" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/ToolsApplicationNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/ToolsApplicationNotificationBus.names new file mode 100644 index 0000000000..9572139c16 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/ToolsApplicationNotificationBus.names @@ -0,0 +1,44 @@ +{ + "entries": [ + { + "key": "ToolsApplicationNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "ToolsApplicationNotificationBus" + }, + "methods": [ + { + "key": "EntityRegistered", + "details": { + "name": "EntityRegistered" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "EntityDeregistered", + "details": { + "name": "EntityDeregistered" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/TraceMessageBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/TraceMessageBus.names new file mode 100644 index 0000000000..0d01423428 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/TraceMessageBus.names @@ -0,0 +1,302 @@ +{ + "entries": [ + { + "key": "TraceMessageBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "TraceMessageBus" + }, + "methods": [ + { + "key": "OnPreAssert", + "details": { + "name": "OnPreAssert" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "OnPreError", + "details": { + "name": "OnPreError" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "OnPreWarning", + "details": { + "name": "OnPreWarning" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "OnAssert", + "details": { + "name": "OnAssert" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "OnError", + "details": { + "name": "OnError" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "OnWarning", + "details": { + "name": "OnWarning" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "OnException", + "details": { + "name": "OnException" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "OnPrintf", + "details": { + "name": "OnPrintf" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "OnOutput", + "details": { + "name": "OnOutput" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/TransformNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/TransformNotificationBus.names new file mode 100644 index 0000000000..88090b8a30 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/TransformNotificationBus.names @@ -0,0 +1,93 @@ +{ + "entries": [ + { + "key": "TransformNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "Transform", + "category": "Entity" + }, + "methods": [ + { + "key": "OnTransformChanged", + "details": { + "name": "On Transform Changed", + "tooltip": "Signals that the local or world transform of the entity changed" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Local Transform", + "tooltip": "A reference to the new local transform of the entity" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "World Transform", + "tooltip": "A reference to the new world transform of the entity" + } + } + ] + }, + { + "key": "OnParentChanged", + "details": { + "name": "On Parent Changed", + "tooltip": "Signals that the parent of the entity changed" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Old Parent", + "tooltip": "The EntityID of the old parent. The EntityID is invalid if there was no old parent" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "New Parent", + "tooltip": "The EntityID of the new parent. The EntityID is invalid if there is no new parent" + } + } + ] + }, + { + "key": "OnChildAdded", + "details": { + "name": "On Child Added", + "tooltip": "Signals that a child was added to the entity" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Child", + "tooltip": "The EntityID of the added child" + } + } + ] + }, + { + "key": "OnChildRemoved", + "details": { + "name": "On Child Removed", + "tooltip": "Signals that a child was removed from the entity" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Child", + "tooltip": "The EntityID of the removed child" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/TriggerNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/TriggerNotificationBus.names new file mode 100644 index 0000000000..726763e12e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/TriggerNotificationBus.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "TriggerNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "Trigger", + "category": "PhysX" + }, + "methods": [ + { + "key": "OnTriggerEnter", + "details": { + "name": "On Trigger Enter", + "tooltip": "Triggered when another collider enters this trigger" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "OnTriggerExit", + "details": { + "name": "On Trigger Exit", + "tooltip": "Triggered when another collider exits this trigger" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiAnimationNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiAnimationNotificationBus.names new file mode 100644 index 0000000000..cb4411af2f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiAnimationNotificationBus.names @@ -0,0 +1,64 @@ +{ + "entries": [ + { + "key": "UiAnimationNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Animation", + "category": "UI" + }, + "methods": [ + { + "key": "OnUiAnimationEvent", + "details": { + "name": "On Animation Event", + "tooltip": "Executes when an animation event occurs" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Event Type", + "tooltip": "The type of animation event that occurred (0=Started, 1=Stopped, 2=Aborted, 3=Updated)" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Sequence Name", + "tooltip": "The name of the sequence that triggered the event" + } + } + ] + }, + { + "key": "OnUiTrackEvent", + "details": { + "name": "OnUiTrackEvent" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiButtonNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiButtonNotificationBus.names new file mode 100644 index 0000000000..3e4f19f235 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiButtonNotificationBus.names @@ -0,0 +1,22 @@ +{ + "entries": [ + { + "key": "UiButtonNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Button", + "category": "UI" + }, + "methods": [ + { + "key": "OnButtonClick", + "details": { + "name": "On Button Click", + "tooltip": "Executes when the button has been clicked" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiCanvasAssetRefNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiCanvasAssetRefNotificationBus.names new file mode 100644 index 0000000000..de65b7363a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiCanvasAssetRefNotificationBus.names @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "key": "UiCanvasAssetRefNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Canvas Asset Ref", + "category": "UI" + }, + "methods": [ + { + "key": "OnCanvasLoadedIntoEntity", + "details": { + "name": "On Canvas Loaded Into Entity", + "tooltip": "Executes when the canvas asset reference loads a canvas" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Canvas EntityID", + "tooltip": "The canvas that was loaded" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiCanvasInputNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiCanvasInputNotificationBus.names new file mode 100644 index 0000000000..597f57c4f2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiCanvasInputNotificationBus.names @@ -0,0 +1,157 @@ +{ + "entries": [ + { + "key": "UiCanvasInputNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Canvas Input", + "category": "UI" + }, + "methods": [ + { + "key": "OnCanvasPrimaryPressed", + "details": { + "name": "On Canvas Primary Pressed", + "tooltip": "Executes on a positional input press" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Pressed EntityID", + "tooltip": "The element that was pressed or an invalid entityID if no element was pressed" + } + } + ] + }, + { + "key": "OnCanvasPrimaryReleased", + "details": { + "name": "On Canvas Primary Released", + "tooltip": "Executes on a positional input release" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Released EntityID", + "tooltip": "The element that was released or an invalid EntityID if no element was released" + } + } + ] + }, + { + "key": "OnCanvasMultiTouchPressed", + "details": { + "name": "On Canvas Multi-touch Pressed", + "tooltip": "Executes on a positional input press" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Pressed EntityID", + "tooltip": "The element that was pressed or an invalid entityID if no element was pressed" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Multi-touch Index", + "tooltip": "The multi-touch index" + } + } + ] + }, + { + "key": "OnCanvasMultiTouchReleased", + "details": { + "name": "On Canvas Multi-touch Released", + "tooltip": "Executes on a positional input release" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Released EntityID", + "tooltip": "The element that was released or an invalid EntityID if no element was released" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Multi-touch Index", + "tooltip": "The multi-touch index" + } + } + ] + }, + { + "key": "OnCanvasHoverStart", + "details": { + "name": "On Canvas Hover Start", + "tooltip": "Executes when an element starts being hovered" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityID", + "tooltip": "The element that has started being hovered" + } + } + ] + }, + { + "key": "OnCanvasHoverEnd", + "details": { + "name": "On Canvas Hover End", + "tooltip": "Executes when an element ends being hovered" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityID", + "tooltip": "The element that ended being hovered" + } + } + ] + }, + { + "key": "OnCanvasEnterPressed", + "details": { + "name": "On Canvas Enter Pressed", + "tooltip": "Executes when the “enter” key is pressed" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Pressed EntityID", + "tooltip": "The element that was pressed or an invalid entityID if no element was pressed" + } + } + ] + }, + { + "key": "OnCanvasEnterReleased", + "details": { + "name": "On Canvas Enter Released", + "tooltip": "Executes when the enter key is released" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Released EntityID", + "tooltip": "The element that was released or an invalid entityID if no element was released" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiCanvasNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiCanvasNotificationBus.names new file mode 100644 index 0000000000..662890e4d3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiCanvasNotificationBus.names @@ -0,0 +1,38 @@ +{ + "entries": [ + { + "key": "UiCanvasNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Canvas", + "category": "UI" + }, + "methods": [ + { + "key": "OnAction", + "details": { + "name": "On Action", + "tooltip": "Executes when the canvas sends an action" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityID", + "tooltip": "The element that triggered the action" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Action Name", + "tooltip": "The name of the action" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiCanvasRefNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiCanvasRefNotificationBus.names new file mode 100644 index 0000000000..79b4773d25 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiCanvasRefNotificationBus.names @@ -0,0 +1,38 @@ +{ + "entries": [ + { + "key": "UiCanvasRefNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Canvas Ref", + "category": "UI" + }, + "methods": [ + { + "key": "OnCanvasRefChanged", + "details": { + "name": "On Canvas Ref Changed", + "tooltip": "Executes when the canvas referenced by a UiCanvasAssetRefComponent has changed. This can happen when \"Load Canvas\", \"Unload Canvas\", or \"Set Canvas Ref Entity\" is called" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Canvas Ref EntityID", + "tooltip": "The entity associated with the canvas" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Canvas EntityID", + "tooltip": "The canvas" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiCheckboxNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiCheckboxNotificationBus.names new file mode 100644 index 0000000000..f7c17fcac3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiCheckboxNotificationBus.names @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "key": "UiCheckboxNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Checkbox", + "category": "UI" + }, + "methods": [ + { + "key": "OnCheckboxStateChange", + "details": { + "name": "On Checkbox State Change", + "tooltip": "Executes when the checkbox state has changed" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Checked", + "tooltip": "Indicates whether the checkbox is checked" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiDraggableNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiDraggableNotificationBus.names new file mode 100644 index 0000000000..e4460fb79c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiDraggableNotificationBus.names @@ -0,0 +1,63 @@ +{ + "entries": [ + { + "key": "UiDraggableNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Draggable", + "category": "UI" + }, + "methods": [ + { + "key": "OnDragStart", + "details": { + "name": "On Drag Start", + "tooltip": "Executes when dragging is detected on the draggable component. For mouse or touch input, this occurs when movement has been detected after the press or touch" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Position", + "tooltip": "The position of the start of the drag" + } + } + ] + }, + { + "key": "OnDrag", + "details": { + "name": "On Drag", + "tooltip": "Executes each time the drag position changes during dragging. \"On Drag\" events happen only between \"On Drag Start\" and \"On Drag End\" events" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Position", + "tooltip": "The position of the drag" + } + } + ] + }, + { + "key": "OnDragEnd", + "details": { + "name": "On Drag End", + "tooltip": "Executes at the end of dragging when the release input event occurs. The \"On Drag End\" notification is sent before the \"On Drop\" drop target notification" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Position", + "tooltip": "The position of the end of the drag" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiDropTargetNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiDropTargetNotificationBus.names new file mode 100644 index 0000000000..efd1277d08 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiDropTargetNotificationBus.names @@ -0,0 +1,63 @@ +{ + "entries": [ + { + "key": "UiDropTargetNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Drop Target", + "category": "UI" + }, + "methods": [ + { + "key": "OnDropHoverStart", + "details": { + "name": "On Drop Hover Start", + "tooltip": "Executes when the focus starts to be on the drop target during dragging" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Dragged EntityID", + "tooltip": "The draggable element that is being dragged" + } + } + ] + }, + { + "key": "OnDropHoverEnd", + "details": { + "name": "On Drop Hover End", + "tooltip": "Executes when the focus stops being on the drop target during dragging" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Dragged EntityID", + "tooltip": "The draggable element that is being dragged" + } + } + ] + }, + { + "key": "OnDrop", + "details": { + "name": "On Drop", + "tooltip": "Executes when a draggable element is dropped on the drop target. Implement the game logic of what should happen on drag and drop here" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Dropped EntityID", + "tooltip": "The draggable element that was dropped" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiDropdownNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiDropdownNotificationBus.names new file mode 100644 index 0000000000..2bf6ab7674 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiDropdownNotificationBus.names @@ -0,0 +1,45 @@ +{ + "entries": [ + { + "key": "UiDropdownNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Dropdown", + "category": "UI" + }, + "methods": [ + { + "key": "OnDropdownExpanded", + "details": { + "name": "On Dropdown Expanded", + "tooltip": "Executes when the dropdown is expanded" + } + }, + { + "key": "OnDropdownCollapsed", + "details": { + "name": "On Dropdown Collapsed", + "tooltip": "Executes when the dropdown is collapsed" + } + }, + { + "key": "OnDropdownValueChanged", + "details": { + "name": "On Dropdown Value Changed", + "tooltip": "Executes when an option is selected" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Option EntityID", + "tooltip": "The option element that was selected" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiDropdownOptionNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiDropdownOptionNotificationBus.names new file mode 100644 index 0000000000..ae0dfa4c70 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiDropdownOptionNotificationBus.names @@ -0,0 +1,22 @@ +{ + "entries": [ + { + "key": "UiDropdownOptionNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Dropdown Option", + "category": "UI" + }, + "methods": [ + { + "key": "OnDropdownOptionSelected", + "details": { + "name": "On Dropdown Option Selected", + "tooltip": "Executes when the dropdown option was selected" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiDynamicScrollBoxDataBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiDynamicScrollBoxDataBus.names new file mode 100644 index 0000000000..2f3c04119f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiDynamicScrollBoxDataBus.names @@ -0,0 +1,235 @@ +{ + "entries": [ + { + "key": "UiDynamicScrollBoxDataBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Dynamic Scroll Box Data", + "category": "UI", + "tooltip": "Provides a dynamic scrollbox with the information it needs to build the list" + }, + "methods": [ + { + "key": "GetNumElements", + "details": { + "name": "Get Number Of Elements", + "tooltip": "Gets the number of elements in the list. Called when the list is being constructed (in the component's InGamePostActivate or when RefreshContent is being called explicitly). Used with lists that are not divided into sections" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetElementWidth", + "details": { + "name": "Get Element Width", + "tooltip": "Gets the width of an element at the specified index. Called when an element’s size is needed by a horizontal list of variable element sizes, and the “auto calculate size” option is disabled. Used with lists that are not divided into sections" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Element Index", + "tooltip": "The index of the element" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Element Index", + "tooltip": "The index of the element" + } + } + ] + }, + { + "key": "GetElementHeight", + "details": { + "name": "Get Element Height", + "tooltip": "Gets the height of an element at the specified index. Called when an element’s size is needed by a vertical list of variable element sizes, and the “auto calculate size” option is disabled. Used with lists that are not divided into sections" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Element Index", + "tooltip": "The index of the element" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Element Index", + "tooltip": "The index of the element" + } + } + ] + }, + { + "key": "GetNumSections", + "details": { + "name": "Get Number Of Sections", + "tooltip": "Gets the number of sections in the list. Called when the list is being constructed (in the component's InGamePostActivate or when RefreshContent is being called explicitly). Used with lists that are divided into section" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetNumElementsInSection", + "details": { + "name": "Get Num Elements in Section", + "tooltip": "Gets the number of elements in the specified section. Called when the list is being constructed (in the component's InGamePostActivate or when RefreshContent is being called explicitly). Used with lists that are divided into sections" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Section Index", + "tooltip": "The index of the section" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Section Index", + "tooltip": "The index of the section" + } + } + ] + }, + { + "key": "GetElementInSectionWidth", + "details": { + "name": "Get Element In Section Width", + "tooltip": "Gets the width of an element at the specified section and element index. Called when an element’s size is needed by a horizontal list of variable element sizes, and the “auto calculate size” option is disabled. Used with lists that are divided into sections" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Section Index", + "tooltip": "The index of the section" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Element Index", + "tooltip": "The index of the element in the specified section" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Section Index", + "tooltip": "The index of the section" + } + } + ] + }, + { + "key": "GetElementInSectionHeight", + "details": { + "name": "Get Element In Section Height", + "tooltip": "Gets the height of an element at the specified section and element index. Called when an element’s size is needed by a vertical list of variable element sizes, and the “auto calculate size” option is disabled. Used with lists that are divided into sections" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Section Index", + "tooltip": "The index of the section" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Element Index", + "tooltip": "The index of the element in the specified section" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Section Index", + "tooltip": "The index of the section" + } + } + ] + }, + { + "key": "GetSectionHeaderWidth", + "details": { + "name": "Get Section Header Width", + "tooltip": "Gets the width of a header at the specified section. Called when a header’s size is needed by a horizontal list of variable header sizes, and the “auto calculate size” option is disabled. Used with lists that are divided into sections" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Section Index", + "tooltip": "The index of the section" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Section Index", + "tooltip": "The index of the section" + } + } + ] + }, + { + "key": "GetSectionHeaderHeight", + "details": { + "name": "Get Section Header Height", + "tooltip": "Gets the height of a header at the specified section. Called when a header's size is needed by a vertical list of variable header sizes, and the “auto calculate size” option is disabled. Used with lists that are divided into sections" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Section Index", + "tooltip": "The index of the section" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Section Index", + "tooltip": "The index of the section" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiDynamicScrollBoxElementNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiDynamicScrollBoxElementNotificationBus.names new file mode 100644 index 0000000000..5c0f5a4c26 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiDynamicScrollBoxElementNotificationBus.names @@ -0,0 +1,168 @@ +{ + "entries": [ + { + "key": "UiDynamicScrollBoxElementNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Dynamic Scroll Box Element Changes", + "category": "UI", + "tooltip": "Create this handler to receive notifications of dynamic scrollbox element state changes, such as when an element is about to scroll into view" + }, + "methods": [ + { + "key": "OnElementBecomingVisible", + "details": { + "name": "On Element Becoming Visible", + "tooltip": "Executes when a child of the scroll box is about to become visible. Use this event to populate the child with data for display" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityID", + "tooltip": "The child that is about to become visible" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Element Index", + "tooltip": "The index of the child that is about to become visible" + } + } + ] + }, + { + "key": "OnPrepareElementForSizeCalculation", + "details": { + "name": "On Prepare Element For Size Calculation", + "tooltip": "Executes when elements have variable sizes and are set to auto calculate. Used with lists that are not divided into sections" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityID", + "tooltip": "The element being prepared" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Element Index", + "tooltip": "The index of the child that is being prepared" + } + } + ] + }, + { + "key": "OnElementInSectionBecomingVisible", + "details": { + "name": "On Element In Section Becoming Visible", + "tooltip": "Executes when an element in a section is about to become visible. Used to populate the element with data for display. Used with lists that are divided into sections" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityID", + "tooltip": "The element becoming visible" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Section Index", + "tooltip": "The index of the section that contains the element" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Element Index", + "tooltip": "The index of the child that is becoming visible" + } + } + ] + }, + { + "key": "OnPrepareElementInSectionForSizeCalculation", + "details": { + "name": "On Prepare Element In Section For Size Calculation", + "tooltip": "Executes when elements in sections have variable sizes and are set to auto calculate. Used with lists that are divided into sections" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityID", + "tooltip": "The element being prepared" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Section Index", + "tooltip": "The index of the section that is being prepared" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Element Index", + "tooltip": "The index of the child that is being prepared" + } + } + ] + }, + { + "key": "OnSectionHeaderBecomingVisible", + "details": { + "name": "On Section Header Becoming Visible", + "tooltip": "Executes when a header is about to become visible. Used to populate the header with data for display. Used with lists that are divided into sections" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityID", + "tooltip": "The header element becoming visible" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Section Index", + "tooltip": "The index of the section that contains the header" + } + } + ] + }, + { + "key": "OnPrepareSectionHeaderForSizeCalculation", + "details": { + "name": "On Prepare Section Header For Size Calculation", + "tooltip": "Executes when headers have variable sizes and are set to auto calculate. Used with lists that are divided into sections" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityID", + "tooltip": "The element being prepared" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Section Index", + "tooltip": "The index of the section that is being prepared" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiFaderNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiFaderNotificationBus.names new file mode 100644 index 0000000000..b400fcc52b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiFaderNotificationBus.names @@ -0,0 +1,36 @@ +{ + "entries": [ + { + "key": "UiFaderNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Fader", + "category": "UI" + }, + "methods": [ + { + "key": "OnFadeComplete", + "details": { + "name": "On Fade Complete", + "tooltip": "Executes when the fade is done" + } + }, + { + "key": "OnFadeInterrupted", + "details": { + "name": "On Fade Interrupted", + "tooltip": "Executes when the fade has been interrupted" + } + }, + { + "key": "OnFaderDestroyed", + "details": { + "name": "On Fader Destroyed", + "tooltip": "Executes when the fader component has been destroyed" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiFlipbookAnimationNotificationsBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiFlipbookAnimationNotificationsBus.names new file mode 100644 index 0000000000..674ccb7ff5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiFlipbookAnimationNotificationsBus.names @@ -0,0 +1,36 @@ +{ + "entries": [ + { + "key": "UiFlipbookAnimationNotificationsBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Flipbook Animation", + "category": "UI" + }, + "methods": [ + { + "key": "OnAnimationStarted", + "details": { + "name": "On Animation Started", + "tooltip": "Executes when the flipbook animation has begun playing" + } + }, + { + "key": "OnAnimationStopped", + "details": { + "name": "On Animation Stopped", + "tooltip": "Executes when the flipbook animation has stopped playing" + } + }, + { + "key": "OnLoopSequenceCompleted", + "details": { + "name": "On Loop Sequence Completed", + "tooltip": "Executes when the flipbook animation has completed one loop iteration. This triggers only when the \"Loop Type\" of the flipbook animation is configured to anything other than \"None\".\n\nFor \"Linear\" loops, this triggers when \"End Frame\" is displayed.\n\nFor \"Ping Pong\" loops, this triggers when either \"Start Frame\" or \"End Frame\" is displayed (depending on the current loop direction of the loop)" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiInitializationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiInitializationBus.names new file mode 100644 index 0000000000..7231f093d9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiInitializationBus.names @@ -0,0 +1,22 @@ +{ + "entries": [ + { + "key": "UiInitializationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Initialization", + "category": "UI" + }, + "methods": [ + { + "key": "InGamePostActivate", + "details": { + "name": "In-game Post-activate", + "tooltip": "Executes after all loaded UI elements have been activated and their parent and canvas references fixed-up" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiInteractableNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiInteractableNotificationBus.names new file mode 100644 index 0000000000..07aec6b83a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiInteractableNotificationBus.names @@ -0,0 +1,59 @@ +{ + "entries": [ + { + "key": "UiInteractableNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Interactable", + "category": "UI" + }, + "methods": [ + { + "key": "OnHoverStart", + "details": { + "name": "On Hover Start", + "tooltip": "Executes when the interactive element starts being hovered" + } + }, + { + "key": "OnHoverEnd", + "details": { + "name": "On Hover End", + "tooltip": "Executes when the interactive element ends being hovered" + } + }, + { + "key": "OnPressed", + "details": { + "name": "On Pressed", + "tooltip": "Executes when the interactive element has been pressed" + } + }, + { + "key": "OnReleased", + "details": { + "name": "On Released", + "tooltip": "Executes when the interactive element has been released" + } + }, + { + "key": "OnReceivedHoverByNavigatingFromDescendant", + "details": { + "name": "On Received Hover By Navigating From Descendant", + "tooltip": "Executes when the interactive element receives the hover by being navigated to from a descendant" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Descendant EntityID", + "tooltip": "The descendant element" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiMarkupButtonNotificationsBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiMarkupButtonNotificationsBus.names new file mode 100644 index 0000000000..435af88d0a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiMarkupButtonNotificationsBus.names @@ -0,0 +1,165 @@ +{ + "entries": [ + { + "key": "UiMarkupButtonNotificationsBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Markup Button", + "category": "UI" + }, + "methods": [ + { + "key": "OnHoverStart", + "details": { + "name": "On Hover Start", + "tooltip": "Executes when the button has become hovered" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "ID", + "tooltip": "The markup ID of the clickable text" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Action", + "tooltip": "The action string of the clickable text" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Data", + "tooltip": "The data string of the clickable text" + } + } + ] + }, + { + "key": "OnHoverEnd", + "details": { + "name": "On Hover End", + "tooltip": "Executes when the button is no longer hovered" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "ID", + "tooltip": "The markup ID of the clickable text" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Action", + "tooltip": "The action string of the clickable text" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Data", + "tooltip": "The data string of the clickable text" + } + } + ] + }, + { + "key": "OnPressed", + "details": { + "name": "On Pressed", + "tooltip": "Executes when the button receives a press event" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "ID", + "tooltip": "The markup ID of the clickable text" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Action", + "tooltip": "The action string of the clickable text" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Data", + "tooltip": "The data string of the clickable text" + } + } + ] + }, + { + "key": "OnReleased", + "details": { + "name": "On Released", + "tooltip": "Executes when the button receives a release event" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "ID", + "tooltip": "The markup ID of the clickable text" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Action", + "tooltip": "The action string of the clickable text" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Data", + "tooltip": "The data string of the clickable text" + } + } + ] + }, + { + "key": "OnClick", + "details": { + "name": "On Click", + "tooltip": "Executes when the button is clicked (a release on the button following a press on the button)" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "ID", + "tooltip": "The markup ID of the clickable text" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Action", + "tooltip": "The action string of the clickable text" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Data", + "tooltip": "The data string of the clickable text" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiRadioButtonGroupNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiRadioButtonGroupNotificationBus.names new file mode 100644 index 0000000000..bf3f1b1bc1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiRadioButtonGroupNotificationBus.names @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "key": "UiRadioButtonGroupNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Radio Button Group", + "category": "UI" + }, + "methods": [ + { + "key": "OnRadioButtonGroupStateChange", + "details": { + "name": "On Radio Button Group State Change", + "tooltip": "Executes when the radio button group state has changed" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Radio Button EntityID", + "tooltip": "The radio button that is checked" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiRadioButtonNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiRadioButtonNotificationBus.names new file mode 100644 index 0000000000..4c15af7a33 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiRadioButtonNotificationBus.names @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "key": "UiRadioButtonNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Radio Button", + "category": "UI" + }, + "methods": [ + { + "key": "OnRadioButtonStateChange", + "details": { + "name": "On RadioButton State Change", + "tooltip": "Executes when the radio button state has changed" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Checked", + "tooltip": "Indicates whether the radio button is checked" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiScrollBoxNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiScrollBoxNotificationBus.names new file mode 100644 index 0000000000..acad307dbb --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiScrollBoxNotificationBus.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "UiScrollBoxNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Scroll Box", + "category": "UI" + }, + "methods": [ + { + "key": "OnScrollOffsetChanging", + "details": { + "name": "On Scroll Offset Changing", + "tooltip": "Executes when the scroll offset is changing" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Scroll Offset", + "tooltip": "The new scroll offset" + } + } + ] + }, + { + "key": "OnScrollOffsetChanged", + "details": { + "name": "On Scroll Offset Changed", + "tooltip": "Executes when the scroll offset has changed" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Scroll Offset", + "tooltip": "The new scroll offset" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiScrollableNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiScrollableNotificationBus.names new file mode 100644 index 0000000000..5de1e45ad6 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiScrollableNotificationBus.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "UiScrollableNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Scrollable", + "category": "UI" + }, + "methods": [ + { + "key": "OnScrollableValueChanging", + "details": { + "name": "On Scrollable Value Changing", + "tooltip": "Executes when the scroll value is changing" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Scroll Value", + "tooltip": "The new scroll value [0-1]" + } + } + ] + }, + { + "key": "OnScrollableValueChanged", + "details": { + "name": "On Scrollable Value Changed", + "tooltip": "Executes when the scroll value has changed" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Scroll Value", + "tooltip": "The new scroll value [0-1]" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiScrollerNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiScrollerNotificationBus.names new file mode 100644 index 0000000000..a12b67ac57 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiScrollerNotificationBus.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "UiScrollerNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Scroller", + "category": "UI" + }, + "methods": [ + { + "key": "OnScrollerValueChanging", + "details": { + "name": "On Scroller Value Changing", + "tooltip": "Executes when the scroller value is changing" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Scroller Value", + "tooltip": "The new scroller value [0-1]" + } + } + ] + }, + { + "key": "OnScrollerValueChanged", + "details": { + "name": "On Scroller Value Changed", + "tooltip": "Executes when the scroller value has changed" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Scroller Value", + "tooltip": "The new scroller value [0-1]" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiSliderNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiSliderNotificationBus.names new file mode 100644 index 0000000000..76c9fde12a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiSliderNotificationBus.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "UiSliderNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Slider", + "category": "UI" + }, + "methods": [ + { + "key": "OnSliderValueChanging", + "details": { + "name": "On Slider Value Changing", + "tooltip": "Executes when the slider value is changing" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Slider Value", + "tooltip": "The new slider value" + } + } + ] + }, + { + "key": "OnSliderValueChanged", + "details": { + "name": "On Slider Value Changed", + "tooltip": "Executes when the slider value has finished changing" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Slider Value", + "tooltip": "The new slider value" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiSpawnerNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiSpawnerNotificationBus.names new file mode 100644 index 0000000000..9c3bb637ec --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiSpawnerNotificationBus.names @@ -0,0 +1,132 @@ +{ + "entries": [ + { + "key": "UiSpawnerNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Spawner", + "category": "UI" + }, + "methods": [ + { + "key": "OnSpawnBegin", + "details": { + "name": "On Spawn Begin", + "tooltip": "Executes when the slice has been spawned, but entities have not yet been activated. \"On Entity Spawned\" events are about to be dispatched" + }, + "params": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "Slice Instantiation Ticket", + "tooltip": "The slice instantiation ticket. These can be compared in order to know which spawn request it relates to" + } + } + ] + }, + { + "key": "OnEntitySpawned", + "details": { + "name": "On Entity Spawned", + "tooltip": "Executes when an entity has been created during a spawn. Called once for each entity created while spawning a slice" + }, + "params": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "Slice Instantiation Ticket", + "tooltip": "The slice instantiation ticket. These can be compared in order to know which spawn request it relates to" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Spawned EntityID", + "tooltip": "The spawned entity" + } + } + ] + }, + { + "key": "OnEntitiesSpawned", + "details": { + "name": "On Entities Spawned", + "tooltip": "Executes when all entities have been created during a spawn.\n\nCalled only once for each spawn request. Called after the \"On Entity Spawned\" calls and before the \"On Spawn End\" call" + }, + "params": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "Slice Instantiation Ticket", + "tooltip": "The slice instantiation ticket. These can be compared in order to know which spawn request it relates to" + } + }, + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "Spawned EntityIDs", + "tooltip": "A list of all entities that were created during the spawn" + } + } + ] + }, + { + "key": "OnTopLevelEntitiesSpawned", + "details": { + "name": "On Top Level Entities Spawned", + "tooltip": "Executes when all top-level entities have been created during the spawn.\n\nTop-level entities are entities that do not have any parent within the slice. Typically, there is only one top-level entity for each slice.\n\nCalled only once for each spawn request. Called after the \"On Entity Spawned\" calls and before the \"On Spawn End\" call" + }, + "params": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "Slice Instantiation Ticket", + "tooltip": "The slice instantiation ticket. These can be compared in order to know which spawn request it relates to" + } + }, + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "Spawned EntityIDs", + "tooltip": "A list of all top-level entities that were created during the spawn" + } + } + ] + }, + { + "key": "OnSpawnEnd", + "details": { + "name": "On Spawn End", + "tooltip": "Executes when a slice has been spawned. Called once for each spawn request. All \"On Entity Spawned\" events have been dispatched" + }, + "params": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "Slice Instantiation Ticket", + "tooltip": "The slice instantiation ticket. These can be compared in order to know which spawn request it relates to" + } + } + ] + }, + { + "key": "OnSpawnFailed", + "details": { + "name": "On Spawn Failed", + "tooltip": "Executes when a spawn request has failed" + }, + "params": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "Slice Instantiation Ticket", + "tooltip": "The slice instantiation ticket. These can be compared in order to know which spawn request it relates to" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiTextInputNotificationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiTextInputNotificationBus.names new file mode 100644 index 0000000000..4bc897df5d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/UiTextInputNotificationBus.names @@ -0,0 +1,63 @@ +{ + "entries": [ + { + "key": "UiTextInputNotificationBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "UI Text Input", + "category": "UI" + }, + "methods": [ + { + "key": "OnTextInputChange", + "details": { + "name": "On Text Input Change", + "tooltip": "Executes when a character is added, removed, or changed" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Text", + "tooltip": "The new text string" + } + } + ] + }, + { + "key": "OnTextInputEndEdit", + "details": { + "name": "On Text Input End Edit", + "tooltip": "Executes when edit of text is completed" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Text", + "tooltip": "The text string" + } + } + ] + }, + { + "key": "OnTextInputEnter", + "details": { + "name": "On Text Input Enter", + "tooltip": "Executes when \"Enter\" is pressed on the keyboard" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Text", + "tooltip": "The text string" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/VariableNotification.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/VariableNotification.names new file mode 100644 index 0000000000..486694b4bb --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/VariableNotification.names @@ -0,0 +1,22 @@ +{ + "entries": [ + { + "key": "VariableNotification", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "Variable Notification", + "category": "Variables", + "tooltip": "Notifications from the Variables in the current Script Canvas graph" + }, + "methods": [ + { + "key": "OnVariableValueChanged", + "details": { + "name": "On Variable Value Changed" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/ViewPaneCallbackBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/ViewPaneCallbackBus.names new file mode 100644 index 0000000000..b77d3caf75 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Handlers/ViewPaneCallbackBus.names @@ -0,0 +1,28 @@ +{ + "entries": [ + { + "key": "ViewPaneCallbackBus", + "context": "EBusHandler", + "variant": "", + "details": { + "name": "ViewPaneCallbackBus" + }, + "methods": [ + { + "key": "CreateViewPaneWidget", + "details": { + "name": "CreateViewPaneWidget" + }, + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AWSCognitoAuthorizationRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AWSCognitoAuthorizationRequestBus.names new file mode 100644 index 0000000000..9ba441a6c8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AWSCognitoAuthorizationRequestBus.names @@ -0,0 +1,109 @@ +{ + "entries": [ + { + "key": "AWSCognitoAuthorizationRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "AWS Cognito Authorization", + "category": "AWS Client Auth" + }, + "methods": [ + { + "key": "Reset", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reset" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reset is invoked" + }, + "details": { + "name": "Reset" + } + }, + { + "key": "GetIdentityId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetIdentityId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetIdentityId is invoked" + }, + "details": { + "name": "Get Identity Id" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Identity" + } + } + ] + }, + { + "key": "HasPersistedLogins", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke HasPersistedLogins" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after HasPersistedLogins is invoked" + }, + "details": { + "name": "Has Persisted Logins" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Has Persisted Logins" + } + } + ] + }, + { + "key": "Initialize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Initialize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Initialize is invoked" + }, + "details": { + "name": "Initialize" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Initialized" + } + } + ] + }, + { + "key": "RequestAWSCredentialsAsync", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RequestAWSCredentialsAsync" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RequestAWSCredentialsAsync is invoked" + }, + "details": { + "name": "Request AWS Credentials Async" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AWSCognitoUserManagementRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AWSCognitoUserManagementRequestBus.names new file mode 100644 index 0000000000..932378a747 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AWSCognitoUserManagementRequestBus.names @@ -0,0 +1,224 @@ +{ + "entries": [ + { + "key": "AWSCognitoUserManagementRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "AWS Cognito User Management", + "category": "AWS Client Auth" + }, + "methods": [ + { + "key": "EnableMFAAsync", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Enable MFA Async" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Enable MFA Async is invoked" + }, + "details": { + "name": "Enable MFA Async" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Access token", + "tooltip": "The MFA access token" + } + } + ] + }, + { + "key": "ConfirmSignUpAsync", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Confirm Sign Up Async" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Confirm Sign Up Async is invoked" + }, + "details": { + "name": "Confirm Sign Up Async" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Username", + "tooltip": "The client's username" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Confirmation code", + "tooltip": "The client's confirmation code" + } + } + ] + }, + { + "key": "PhoneSignUpAsync", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Phone Sign Up Async" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Phone Sign Up Async is invoked" + }, + "details": { + "name": "Phone Sign Up Async" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Username", + "tooltip": "The client's username" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Password", + "tooltip": "The client's password" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Phone number", + "tooltip": "The phone number used to sign up" + } + } + ] + }, + { + "key": "EmailSignUpAsync", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Email Sign Up Async" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Email Sign Up Async is invoked" + }, + "details": { + "name": "Email Sign Up Async" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Username", + "tooltip": "The client's username" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Password", + "tooltip": "The client's password" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Email", + "tooltip": "The email address used to sign up" + } + } + ] + }, + { + "key": "ConfirmForgotPasswordAsync", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Confirm Forgot Password Async" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Confirm Forgot Password Async is invoked" + }, + "details": { + "name": "Confirm Forgot Password Async" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Username", + "tooltip": "The client's username" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Confirmation code", + "tooltip": "The client's confirmation code" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "New password", + "tooltip": "The new password for the client" + } + } + ] + }, + { + "key": "Initialize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Initialize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Initialize is invoked" + }, + "details": { + "name": "Initialize" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Initialized" + } + } + ] + }, + { + "key": "ForgotPasswordAsync", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Forgot Password Async" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Forgot Password Async is invoked" + }, + "details": { + "name": "Forgot Password Async" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Username", + "tooltip": "The client's username" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AWSMetricsRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AWSMetricsRequestBus.names new file mode 100644 index 0000000000..b725fc3de1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AWSMetricsRequestBus.names @@ -0,0 +1,81 @@ +{ + "entries": [ + { + "key": "AWSMetricsRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Metrics", + "category": "AWS Metrics" + }, + "methods": [ + { + "key": "SubmitMetrics", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SubmitMetrics" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SubmitMetrics is invoked" + }, + "details": { + "name": "Submit Metrics" + }, + "params": [ + { + "typeid": "{1C1ABE6D-94D2-5CFD-A502-8813300FEC8D}", + "details": { + "name": "Metrics Attributes list", + "tooltip": "The list of metrics attributes to submit." + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Event priority", + "tooltip": "Priority of the event. Defaults to 0, which is highest priority." + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Event source override", + "tooltip": "Event source used to override the default, 'AWSMetricGem'." + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Buffer metrics", + "tooltip": "Whether to buffer metrics and send them in a batch." + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "FlushMetrics", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FlushMetrics" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FlushMetrics is invoked" + }, + "details": { + "name": "Flush Metrics" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AWSResourceMappingRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AWSResourceMappingRequestBus.names new file mode 100644 index 0000000000..f7ed1d7591 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AWSResourceMappingRequestBus.names @@ -0,0 +1,206 @@ +{ + "entries": [ + { + "key": "AWSResourceMappingRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "AWS Resource Mapping", + "category": "AWS Core" + }, + "methods": [ + { + "key": "GetResourceNameId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Resource Name Id" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Resource Name Id is invoked" + }, + "details": { + "name": "Get Resource Name Id" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Resource Key Name", + "tooltip": "Resource mapping key name is used to identify individual resource attributes." + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name / Id" + } + } + ] + }, + { + "key": "GetResourceRegion", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Resource Region" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Resource Region is invoked" + }, + "details": { + "name": "Get Resource Region" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Resource Key Name", + "tooltip": "Resource mapping key name is used to identify individual resource attributes." + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Region" + } + } + ] + }, + { + "key": "GetDefaultRegion", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Default Region" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Default Region is invoked" + }, + "details": { + "name": "Get Default Region" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Region" + } + } + ] + }, + { + "key": "GetDefaultAccountId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Default Account Id" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Default Account Id is invoked" + }, + "details": { + "name": "Get Default Account Id" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Default Account Id" + } + } + ] + }, + { + "key": "GetResourceAccountId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Resource Account Id" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Resource Account Id is invoked" + }, + "details": { + "name": "Get Resource Account Id" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Resource Key Name", + "tooltip": "Resource mapping key name is used to identify individual resource attributes." + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Resource Account Id" + } + } + ] + }, + { + "key": "GetResourceType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Resource Type" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Resource Type is invoked" + }, + "details": { + "name": "Get Resource Type" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Resource Key Name", + "tooltip": "Resource mapping key name is used to identify individual resource attributes." + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Resource Type" + } + } + ] + }, + { + "key": "ReloadConfigFile", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reload Config File" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reload Config File is invoked" + }, + "details": { + "name": "Reload Config File" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Reloading Config FileName", + "tooltip": "Whether reload resource mapping config file name from AWS core configuration settings registry file." + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ActorComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ActorComponentRequestBus.names new file mode 100644 index 0000000000..5deea3567a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ActorComponentRequestBus.names @@ -0,0 +1,193 @@ +{ + "entries": [ + { + "key": "ActorComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Actor", + "category": "Animation" + }, + "methods": [ + { + "key": "GetRenderCharacter", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Render Character" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Render Character is invoked" + }, + "details": { + "name": "Get Render Character" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enabled" + } + } + ] + }, + { + "key": "DetachFromEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Detach From Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Detach From Entity is invoked" + }, + "details": { + "name": "Detach From Entity" + } + }, + { + "key": "GetRenderActorVisible", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Render Actor Visible" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Render Actor Visible is invoked" + }, + "details": { + "name": "Get Render Actor Visible" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Visible" + } + } + ] + }, + { + "key": "AttachToEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Attach To Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Attach To Entity is invoked" + }, + "details": { + "name": "Attach To Entity", + "category": "Actor Animation" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Attachment Type", + "tooltip": "0: Actor, 1: Skin" + } + } + ] + }, + { + "key": "SetRenderCharacter", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Render Character" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Render Character is invoked" + }, + "details": { + "name": "Set Render Character" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enable" + } + } + ] + }, + { + "key": "GetJointTransform", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Joint Transform" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Joint Transform is invoked" + }, + "details": { + "name": "Get Joint Transform" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Joint Index" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Space", + "tooltip": "0: Local, 1: Model, 2: World" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "GetJointIndexByName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Joint Index By Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Joint Index By Name is invoked" + }, + "details": { + "name": "Get Joint Index By Name" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Name" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Joint Index" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AnimAudioComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AnimAudioComponentRequestBus.names new file mode 100644 index 0000000000..3620304e48 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AnimAudioComponentRequestBus.names @@ -0,0 +1,88 @@ +{ + "entries": [ + { + "key": "AnimAudioComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Audio", + "category": "Animation" + }, + "methods": [ + { + "key": "AddTriggerEvent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Add Trigger Event" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Add Trigger Event is invoked" + }, + "details": { + "name": "Add Trigger Event", + "tooltip": "Adds audio support to when an animation event is fired" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Event Name" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Trigger Name" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Joint Name" + } + } + ] + }, + { + "key": "ClearTriggerEvents", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear Trigger Events" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear Trigger Events is invoked" + }, + "details": { + "name": "Clear Trigger Events", + "tooltip": "Clears all audio support for animation events" + } + }, + { + "key": "RemoveTriggerEvent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Remove Trigger Event" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Remove Trigger Event is invoked" + }, + "details": { + "name": "Remove Trigger Event", + "tooltip": "Removes audio support from an anim event" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Event Name" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AnimGraphComponentNetworkRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AnimGraphComponentNetworkRequestBus.names new file mode 100644 index 0000000000..177eded8e5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AnimGraphComponentNetworkRequestBus.names @@ -0,0 +1,125 @@ +{ + "entries": [ + { + "key": "AnimGraphComponentNetworkRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Anim Graph", + "category": "Animation" + }, + "methods": [ + { + "key": "GetActiveStates", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Active States" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Active States is invoked" + }, + "details": { + "name": "Get Active States" + }, + "results": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "Active States" + } + } + ] + }, + { + "key": "CreateSnapshot", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create Snapshot" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create Snapshot is invoked" + }, + "details": { + "name": "Create Snapshot" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Authoritative" + } + } + ] + }, + { + "key": "SetActiveStates", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetActiveStates" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetActiveStates is invoked" + }, + "details": { + "name": "Set Active States" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "Active States" + } + } + ] + }, + { + "key": "IsAssetReady", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Asset Ready" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Asset Ready is invoked" + }, + "details": { + "name": "Is Asset Ready" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Asset Ready" + } + } + ] + }, + { + "key": "HasSnapshot", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Snapshot" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Snapshot is invoked" + }, + "details": { + "name": "Has Snapshot" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Has Snapshot" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AnimGraphComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AnimGraphComponentRequestBus.names new file mode 100644 index 0000000000..7e0ea4f5fa --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AnimGraphComponentRequestBus.names @@ -0,0 +1,977 @@ +{ + "entries": [ + { + "key": "AnimGraphComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Anim Graph", + "category": "Animation" + }, + "methods": [ + { + "key": "GetVisualizeEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Visualize Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Visualize Enabled is invoked" + }, + "details": { + "name": "Get Visualize Enabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enabled" + } + } + ] + }, + { + "key": "SetNamedParameterRotation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Named Parameter Rotation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Named Parameter Rotation is invoked" + }, + "details": { + "name": "Set Named Parameter Rotation" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Name" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "SetParameterString", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Parameter String" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Parameter String is invoked" + }, + "details": { + "name": "Set Parameter String" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Index" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "GetNamedParameterString", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Named Parameter String" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Named Parameter String is invoked" + }, + "details": { + "name": "Get Named Parameter String" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Parameter Name" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "GetNamedParameterVector2", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Named Parameter Vector2" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Named Parameter Vector2 is invoked" + }, + "details": { + "name": "Get Named Parameter Vector2" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Parameter Name" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "GetParameterFloat", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Parameter Float" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Parameter Float is invoked" + }, + "details": { + "name": "Get Parameter Float" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Parameter Index" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "SetParameterRotation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Parameter Rotation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Parameter Rotation is invoked" + }, + "details": { + "name": "Set Parameter Rotation" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Parameter Name" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "GetNamedParameterFloat", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Named Parameter Float" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Named Parameter Float is invoked" + }, + "details": { + "name": "Get Named Parameter Float" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Parameter Name" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "SetParameterBool", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Parameter Bool" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Parameter Bool is invoked" + }, + "details": { + "name": "Set Parameter Bool" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Parameter Index" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "FindParameterName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Find Parameter Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Find Parameter Name is invoked" + }, + "details": { + "name": "Find Parameter Name" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Parameter Index" + } + } + ], + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Name" + } + } + ] + }, + { + "key": "GetNamedParameterBool", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Named Parameter Bool" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Named Parameter Bool is invoked" + }, + "details": { + "name": "Get Named Parameter Bool" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Name" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "SetParameterFloat", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Parameter Float" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Parameter Float is invoked" + }, + "details": { + "name": "Set Parameter Float" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Parameter Index" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "GetParameterVector2", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Parameter Vector2" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Parameter Vector2 is invoked" + }, + "details": { + "name": "Get Parameter Vector2" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Parameter Index" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "GetParameterBool", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Parameter Bool" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Parameter Bool is invoked" + }, + "details": { + "name": "Get Parameter Bool" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Parameter Index" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "SetNamedParameterVector3", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Named Parameter Vector3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Named Parameter Vector3 is invoked" + }, + "details": { + "name": "Set Named Parameter Vector3" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Name" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "FindParameterIndex", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Find Parameter Index" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Find Parameter Index is invoked" + }, + "details": { + "name": "Find Parameter Index" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Name" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Parameter Index" + } + } + ] + }, + { + "key": "SetNamedParameterString", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Named Parameter String" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Named Parameter String is invoked" + }, + "details": { + "name": "Set Named Parameter String" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Name" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "SetParameterVector3", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Parameter Vector3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Parameter Vector3 is invoked" + }, + "details": { + "name": "Set Parameter Vector3" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Parameter Index" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "GetParameterVector3", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Parameter Vector3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Parameter Vector3 is invoked" + }, + "details": { + "name": "Get Parameter Vector3" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Parameter Index" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "SyncAnimGraph", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Sync Anim Graph" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Sync Anim Graph is invoked" + }, + "details": { + "name": "Sync Anim Graph" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetParameterRotationEuler", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Parameter Rotation Euler" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Parameter Rotation Euler is invoked" + }, + "details": { + "name": "Set Parameter Rotation Euler" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Parameter Index" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Angles (Radians)" + } + } + ] + }, + { + "key": "GetParameterRotationEuler", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Parameter Rotation Euler" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Parameter Rotation Euler is invoked" + }, + "details": { + "name": "Get Parameter Rotation Euler" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Parameter Index" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Angles (Radians)" + } + } + ] + }, + { + "key": "GetParameterRotation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Parameter Rotation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Parameter Rotation is invoked" + }, + "details": { + "name": "Get Parameter Rotation" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Parameter Name" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "GetNamedParameterRotationEuler", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Named Parameter Rotation Euler" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Named Parameter Rotation Euler is invoked" + }, + "details": { + "name": "Get Named Parameter Rotation Euler" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Name" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Angles (Radians)" + } + } + ] + }, + { + "key": "DesyncAnimGraph", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Desync Anim Graph" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Desync Anim Graph is invoked" + }, + "details": { + "name": "Desync Anim Graph" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetNamedParameterRotationEuler", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Named Parameter Rotation Euler" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Named Parameter Rotation Euler is invoked" + }, + "details": { + "name": "Set Named Parameter Rotation Euler" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Parameter Name" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Angles (Radians)" + } + } + ] + }, + { + "key": "SetParameterVector2", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Parameter Vector2" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Parameter Vector2 is invoked" + }, + "details": { + "name": "Set Parameter Vector2" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Parameter Index" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "GetNamedParameterRotation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Named Parameter Rotation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Named Parameter Rotation is invoked" + }, + "details": { + "name": "Get Named Parameter Rotation" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Name" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "SetNamedParameterBool", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Named Parameter Bool" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Named Parameter Bool is invoked" + }, + "details": { + "name": "Set Named Parameter Bool" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Name" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "SetVisualizeEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Visualize Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Visualize Enabled is invoked" + }, + "details": { + "name": "Set Visualize Enabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "SetNamedParameterFloat", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Named Parameter Float" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Named Parameter Float is invoked" + }, + "details": { + "name": "Set Named Parameter Float" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Name" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "SetNamedParameterVector2", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Named Parameter Vector2" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Named Parameter Vector2 is invoked" + }, + "details": { + "name": "Set Named Parameter Vector2" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Name" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "GetNamedParameterVector3", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Named Parameter Vector3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Named Parameter Vector3 is invoked" + }, + "details": { + "name": "Get Named Parameter Vector3" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Name" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "GetParameterString", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Parameter String" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Parameter String is invoked" + }, + "details": { + "name": "Get Parameter String" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Parameter Index" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Value" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ArcBallControllerRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ArcBallControllerRequestBus.names new file mode 100644 index 0000000000..9c9ef0b882 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ArcBallControllerRequestBus.names @@ -0,0 +1,429 @@ +{ + "entries": [ + { + "key": "ArcBallControllerRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Arc Ball Controller", + "subtitle": "Camera" + }, + "methods": [ + { + "key": "GetPan", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPan" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPan is invoked" + }, + "details": { + "name": "Get Pan", + "subtitle": "Arc Ball Controller" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Pan" + } + } + ] + }, + { + "key": "GetCenter", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCenter" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCenter is invoked" + }, + "details": { + "name": "Get Center", + "subtitle": "Arc Ball Controller" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Center" + } + } + ] + }, + { + "key": "SetZoomingSensitivity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetZoomingSensitivity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetZoomingSensitivity is invoked" + }, + "details": { + "name": "Set Zooming Sensitivity", + "subtitle": "Arc Ball Controller" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Sensitivity" + } + } + ] + }, + { + "key": "GetPitch", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPitch" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPitch is invoked" + }, + "details": { + "name": "Get Pitch", + "subtitle": "Arc Ball Controller" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Pitch" + } + } + ] + }, + { + "key": "SetPanningSensitivity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetPanningSensitivity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetPanningSensitivity is invoked" + }, + "details": { + "name": "Set Panning Sensitivity", + "subtitle": "Arc Ball Controller" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Sensitivity" + } + } + ] + }, + { + "key": "GetZoomingSensitivity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetZoomingSensitivity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetZoomingSensitivity is invoked" + }, + "details": { + "name": "Get Zooming Sensitivity", + "subtitle": "Arc Ball Controller" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Sensitivity" + } + } + ] + }, + { + "key": "SetHeading", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetHeading" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetHeading is invoked" + }, + "details": { + "name": "Set Heading", + "subtitle": "Arc Ball Controller" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Heading" + } + } + ] + }, + { + "key": "GetMaxDistance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetMaxDistance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetMaxDistance is invoked" + }, + "details": { + "name": "Get Max Distance", + "subtitle": "Arc Ball Controller" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Max Distance" + } + } + ] + }, + { + "key": "SetDistance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetDistance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetDistance is invoked" + }, + "details": { + "name": "Set Distance", + "subtitle": "Arc Ball Controller" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Distance" + } + } + ] + }, + { + "key": "SetMinDistance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetMinDistance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetMinDistance is invoked" + }, + "details": { + "name": "Set Min Distance", + "subtitle": "Arc Ball Controller" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Min Distance" + } + } + ] + }, + { + "key": "SetMaxDistance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetMaxDistance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetMaxDistance is invoked" + }, + "details": { + "name": "Set Max Distance", + "subtitle": "Arc Ball Controller" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Max Distance" + } + } + ] + }, + { + "key": "GetMinDistance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetMinDistance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetMinDistance is invoked" + }, + "details": { + "name": "Get Min Distance", + "subtitle": "Arc Ball Controller" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Min Distance" + } + } + ] + }, + { + "key": "GetHeading", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetHeading" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetHeading is invoked" + }, + "details": { + "name": "Get Heading", + "subtitle": "Arc Ball Controller" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Heading" + } + } + ] + }, + { + "key": "GetPanningSensitivity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPanningSensitivity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPanningSensitivity is invoked" + }, + "details": { + "name": "Get Panning Sensitivity", + "subtitle": "Arc Ball Controller" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Sensitivity" + } + } + ] + }, + { + "key": "SetCenter", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetCenter" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetCenter is invoked" + }, + "details": { + "name": "Set Center", + "subtitle": "Arc Ball Controller" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Center" + } + } + ] + }, + { + "key": "SetPan", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetPan" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetPan is invoked" + }, + "details": { + "name": "Set Pan", + "subtitle": "Arc Ball Controller" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Pan" + } + } + ] + }, + { + "key": "SetPitch", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetPitch" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetPitch is invoked" + }, + "details": { + "name": "Set Pitch", + "subtitle": "Arc Ball Controller" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Pitch" + } + } + ] + }, + { + "key": "GetDistance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetDistance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetDistance is invoked" + }, + "details": { + "name": "Get Distance", + "subtitle": "Arc Ball Controller" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Distance" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AreaLightRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AreaLightRequestBus.names new file mode 100644 index 0000000000..3b75eef182 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AreaLightRequestBus.names @@ -0,0 +1,728 @@ +{ + "entries": [ + { + "key": "AreaLightRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Area Light", + "category": "Lights" + }, + "methods": [ + { + "key": "SetFilteringSampleCount", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Filtering Sample Count" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Filtering Sample Count is invoked" + }, + "details": { + "name": "Set Filtering Sample Count", + "tooltip": "Sets the sample count for filtering of the shadow boundary. Maximum 64" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Sample Count" + } + } + ] + }, + { + "key": "SetIntensity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Intensity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Intensity is invoked" + }, + "details": { + "name": "Set Intensity", + "tooltip": "Sets an area light's intensity and intensity mode. This value is indepedent from its color" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Intensity" + } + } + ] + }, + { + "key": "SetEsmExponent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Esm Exponent" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Esm Exponent is invoked" + }, + "details": { + "name": "Set Esm Exponent", + "tooltip": "Sets the Esm exponent. Higher values produce a steeper falloff between light and shadow" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Exponent" + } + } + ] + }, + { + "key": "GetOuterShutterAngle", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Outer Shutter Angle" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Outer Shutter Angle is invoked" + }, + "details": { + "name": "Get Outer Shutter Angle", + "tooltip": "Returns the outer angle of the shutters in degrees" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Angle (Degrees)" + } + } + ] + }, + { + "key": "GetInnerShutterAngle", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Inner Shutter Angle" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Inner Shutter Angle is invoked" + }, + "details": { + "name": "Get Inner Shutter Angle", + "tooltip": "Returns the outer angle of the shutters in degrees" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Angles (Degrees)" + } + } + ] + }, + { + "key": "SetColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Color" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Color is invoked" + }, + "details": { + "name": "Set Color", + "tooltip": "Sets an area light's color. This value is indepedent from its intensity" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "SetShadowBias", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Shadow Bias" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Shadow Bias is invoked" + }, + "details": { + "name": "Set Shadow Bias" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Bias" + } + } + ] + }, + { + "key": "SetShadowFilterMethod", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Shadow Filter Method" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Shadow Filter Method is invoked" + }, + "details": { + "name": "Set Shadow Filter Method", + "tooltip": "Sets the filter method of shadows, 0: None, 1: Percentage Closer Filtering (PCF), 2: Exponential Shadow Maps (ESM), 3: ESM with PCF Fallback" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Shadow Filter Method", + "tooltip": "0: None, 1: Percentage Closer Filtering (PCF), 2: Exponential Shadow Maps (ESM), 3: ESM with PCF Fallback" + } + } + ] + }, + { + "key": "GetEsmExponent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Esm Exponent" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Esm Exponent is invoked" + }, + "details": { + "name": "Get Esm Exponent", + "tooltip": "Gets the Esm exponent. Higher values produce a steeper falloff between light and shadow" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Exponent" + } + } + ] + }, + { + "key": "SetInnerShutterAngle", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Inner Shutter Angle" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Inner Shutter Angle is invoked" + }, + "details": { + "name": "Set Inner Shutter Angle", + "tooltip": "Sets the inner angle of the shutters in degrees" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Angle (Degrees)" + } + } + ] + }, + { + "key": "SetEnableShadow", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Enable Shadow" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Enable Shadow is invoked" + }, + "details": { + "name": "Set Enable Shadow", + "tooltip": "Sets if shadows should be enabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enable" + } + } + ] + }, + { + "key": "SetUseFastApproximation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Use Fast Approximation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Use Fast Approximation is invoked" + }, + "details": { + "name": "Set Use Fast Approximation", + "tooltip": "Sets whether the light should use the default high quality linearly transformed cosine lights (false) or a faster approximation (true)" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Use Fast Approximation" + } + } + ] + }, + { + "key": "GetUseFastApproximation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Use Fast Approximation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Use Fast Approximation is invoked" + }, + "details": { + "name": "Get Use Fast Approximation", + "tooltip" : "Gets whether the light is using the default high quality linearly transformed cosine lights (false) or a faster approximation (true)" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Uses Fast Approximation" + } + } + ] + }, + { + "key": "GetFilteringSampleCount", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Filtering Sample Count" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Filtering Sample Count is invoked" + }, + "details": { + "name": "Get Filtering Sample Count", + "tooltip": "Gets the sample count for filtering of the shadow boundary" + }, + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Sample Count" + } + } + ] + }, + { + "key": "GetEnableShadow", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Enable Shadow" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Enable Shadow is invoked" + }, + "details": { + "name": "Get Enable Shadow", + "tooltip": "Returns true if shadows are enabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enabled" + } + } + ] + }, + { + "key": "GetShadowFilterMethod", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Shadow Filter Method" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Shadow Filter Method is invoked" + }, + "details": { + "name": "Get Shadow Filter Method", + "tooltip": "Gets the filter method of shadows, 0: None, 1: Percentage Closer Filtering (PCF), 2: Exponential Shadow Maps (ESM), 3: ESM with PCF Fallback" + }, + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Filter Method", + "tooltip": "0: None, 1: Percentage Closer Filtering (PCF), 2: Exponential Shadow Maps (ESM), 3: ESM with PCF Fallback" + } + } + ] + }, + { + "key": "GetIntensityMode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Intensity Mode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Intensity Mode is invoked" + }, + "details": { + "name": "Get Intensity Mode", + "tooltip": "Gets an area light's photometric type\n0: Lumen (Total amount of luminous power emitted. Since a unit sphere is 4 pi steradians, 1 candela emitting uniformly in all directions is 4 pi lumens)\n1: Candela (Base unit of luminous intensity; luminous power per unit solid angle)\n2: Lux (One lux is one lumen per square meter. The same lux emitting from larger areas emits more lumens than smaller areas)\n3: Nit (Nits are candela per square meter. It can be calculated as Lux / Pi)\n4: Ev100Luminance (Exposure value for luminance - Similar to nits, A measurement of illuminance that grows exponentially. See https://en.wikipedia.org/wiki/Exposure_value)\n5: Ev100Illuminance (Exposure value for illuminance - Similar to lux, A measurement of illuminance that grows exponentially. See https://en.wikipedia.org/wiki/Exposure_value)" + }, + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Intensity Mode", + "tooltip": "0: Lumen (Total amount of luminous power emitted. Since a unit sphere is 4 pi steradians, 1 candela emitting uniformly in all directions is 4 pi lumens)\n1: Candela (Base unit of luminous intensity; luminous power per unit solid angle)\n2: Lux (One lux is one lumen per square meter. The same lux emitting from larger areas emits more lumens than smaller areas)\n3: Nit (Nits are candela per square meter. It can be calculated as Lux / Pi)\n4: Ev100Luminance (Exposure value for luminance - Similar to nits, A measurement of illuminance that grows exponentially. See https://en.wikipedia.org/wiki/Exposure_value)\n5: Ev100Illuminance (Exposure value for illuminance - Similar to lux, A measurement of illuminance that grows exponentially. See https://en.wikipedia.org/wiki/Exposure_value)" + } + } + ] + }, + { + "key": "GetShadowBias", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Shadow Bias" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Shadow Bias is invoked" + }, + "details": { + "name": "Get Shadow Bias", + "tooltip": "Returns the shadow bias" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Bias" + } + } + ] + }, + { + "key": "SetAttenuationRadiusMode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Attenuation Radius Mode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Attenuation Radius Mode is invoked" + }, + "details": { + "name": "Set Attenuation Radius Mode", + "tooltip": "0: Automatic, the radius will immediately be recalculated based on the intensity\n1: Explicit, the radius value will be unchanged from its previous value" + + }, + "params": [ + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "Mode", + "tooltip": "0: Automatic, the radius will immediately be recalculated based on the intensity\n1: Explicit, the radius value will be unchanged from its previous value" + } + } + ] + }, + { + "key": "SetEmitsLightBothDirections", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Emits Light Both Directions" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Emits Light Both Directions is invoked" + }, + "details": { + "name": "Set Emits Light Both Directions" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enable" + } + } + ] + }, + { + "key": "SetEnableShutters", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Enable Shutters" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Enable Shutters is invoked" + }, + "details": { + "name": "Set Enable Shutters" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enable" + } + } + ] + }, + { + "key": "GetShadowmapMaxSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Shadowmap Max Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Shadowmap Max Size is invoked" + }, + "details": { + "name": "Get Shadowmap Max Size", + "tooltip": "Returns the maximum width and height of shadowmap" + }, + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Max Size" + } + } + ] + }, + { + "key": "GetEmitsLightBothDirections", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Emits Light Both Directions" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Emits Light Both Directions is invoked" + }, + "details": { + "name": "Get Emits Light Both Directions" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enabled" + } + } + ] + }, + { + "key": "SetOuterShutterAngle", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Outer Shutter Angle" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Outer Shutter Angle is invoked" + }, + "details": { + "name": "Set Outer Shutter Angle", + "tooltip": "Sets the outer angle of the shutters in degrees" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Angle (Degrees)" + } + } + ] + }, + { + "key": "SetAttenuationRadius", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Attenuation Radius" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Attenuation Radius is invoked" + }, + "details": { + "name": "Set Attenuation Radius", + "tooltip": "Set the distance and which an area light will no longer affect lighting. Setting this forces the Radius Calculation to Explicit mode" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Radius" + } + } + ] + }, + { + "key": "GetAttenuationRadius", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Attenuation Radius" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Attenuation Radius is invoked" + }, + "details": { + "name": "Get Attenuation Radius", + "tooltip" : "Gets the distance at which the area light will no longer affect lighting" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Radius" + } + } + ] + }, + { + "key": "GetEnableShutters", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Enable Shutters" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Enable Shutters is invoked" + }, + "details": { + "name": "Get Enable Shutters", + "tooltip": "Returns true if shutters are enabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enabled" + } + } + ] + }, + { + "key": "GetColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Color" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Color is invoked" + }, + "details": { + "name": "Get Color" + }, + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "ConvertToIntensityMode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Convert To Intensity Mode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Convert To Intensity Mode is invoked" + }, + "details": { + "name": "Convert To Intensity Mode", + "tooltip": "Sets the photometric unit to the one provided and converts the intensity to the photometric unit so actual light intensity remains constant" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Mode", + "tooltip": "0: Lumen (Total amount of luminous power emitted. Since a unit sphere is 4 pi steradians, 1 candela emitting uniformly in all directions is 4 pi lumens)\n1: Candela (Base unit of luminous intensity; luminous power per unit solid angle)\n2: Lux (One lux is one lumen per square meter. The same lux emitting from larger areas emits more lumens than smaller areas)\n3: Nit (Nits are candela per square meter. It can be calculated as Lux / Pi)\n4: Ev100Luminance (Exposure value for luminance - Similar to nits, A measurement of illuminance that grows exponentially. See https://en.wikipedia.org/wiki/Exposure_value)\n5: Ev100Illuminance (Exposure value for illuminance - Similar to lux, A measurement of illuminance that grows exponentially. See https://en.wikipedia.org/wiki/Exposure_value)" + } + } + ] + }, + { + "key": "SetShadowmapMaxSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Shadowmap Max Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Shadowmap Max Size is invoked" + }, + "details": { + "name": "Set Shadowmap Max Size" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Max Size" + } + } + ] + }, + { + "key": "GetIntensity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Intensity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Intensity is invoked" + }, + "details": { + "name": "Get Intensity", + "tooltip": "Gets an area light's intensity. This value is indepedent from its color" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Intensity" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AreaSystemRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AreaSystemRequestBus.names new file mode 100644 index 0000000000..0986961990 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AreaSystemRequestBus.names @@ -0,0 +1,75 @@ +{ + "entries": [ + { + "key": "AreaSystemRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Area System", + "category": "Area System" + }, + "methods": [ + { + "key": "GetInstanceCountInAabb", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Instance Count In AABB" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetInstance Count In AABB is invoked" + }, + "details": { + "name": "Get Instance Count In AABB" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "AABB" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Instance Count" + } + } + ] + }, + { + "key": "GetInstancesInAabb", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Instances In AABB" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Instances In AABB is invoked" + }, + "details": { + "name": "Get Instances In AABB" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "AABB" + } + } + ], + "results": [ + { + "typeid": "{F323EFB3-042D-51E9-ABE8-0B55D587CC8E}", + "details": { + "name": "Instances" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AssetCollectionAsyncLoaderTestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AssetCollectionAsyncLoaderTestBus.names new file mode 100644 index 0000000000..c6af4aa7fb --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AssetCollectionAsyncLoaderTestBus.names @@ -0,0 +1,162 @@ +{ + "entries": [ + { + "key": "AssetCollectionAsyncLoaderTestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "AssetCollectionAsyncLoaderTestBus" + }, + "methods": [ + { + "key": "GetPendingAssetsList", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPendingAssetsList" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPendingAssetsList is invoked" + }, + "details": { + "name": "GetPendingAssetsList" + }, + "results": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "GetCountOfPendingAssets", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCountOfPendingAssets" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCountOfPendingAssets is invoked" + }, + "details": { + "name": "GetCountOfPendingAssets" + }, + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "ValidateAssetWasLoaded", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ValidateAssetWasLoaded" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ValidateAssetWasLoaded is invoked" + }, + "details": { + "name": "ValidateAssetWasLoaded" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "CancelLoadingAssets", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CancelLoadingAssets" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CancelLoadingAssets is invoked" + }, + "details": { + "name": "CancelLoadingAssets" + } + }, + { + "key": "StartLoadingAssetsFromAssetList", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke StartLoadingAssetsFromAssetList" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after StartLoadingAssetsFromAssetList is invoked" + }, + "details": { + "name": "StartLoadingAssetsFromAssetList" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "StartLoadingAssetsFromJsonFile", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke StartLoadingAssetsFromJsonFile" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after StartLoadingAssetsFromJsonFile is invoked" + }, + "details": { + "name": "StartLoadingAssetsFromJsonFile" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AssetEditorRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AssetEditorRequestBus.names new file mode 100644 index 0000000000..958a9e4dba --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AssetEditorRequestBus.names @@ -0,0 +1,99 @@ +{ + "entries": [ + { + "key": "AssetEditorRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "AssetEditorRequestBus" + }, + "methods": [ + { + "key": "CreateNewGraph", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CreateNewGraph" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CreateNewGraph is invoked" + }, + "details": { + "name": "CreateNewGraph" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "ContainsGraph", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ContainsGraph" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ContainsGraph is invoked" + }, + "details": { + "name": "ContainsGraph" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "CloseGraph", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CloseGraph" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CloseGraph is invoked" + }, + "details": { + "name": "CloseGraph" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AtomToolsDocumentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AtomToolsDocumentRequestBus.names new file mode 100644 index 0000000000..40ecc8261c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AtomToolsDocumentRequestBus.names @@ -0,0 +1,471 @@ +{ + "entries": [ + { + "key": "AtomToolsDocumentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Document", + "category": "Atom Tools" + }, + "methods": [ + { + "key": "CanRedo", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Can Redo" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Can Redo is invoked" + }, + "details": { + "name": "Can Redo" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Can Redo" + } + } + ] + }, + { + "key": "SaveAsChild", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Save As Child" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Save As Child is invoked" + }, + "details": { + "name": "Save As Child" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "Save Path" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "Reopen", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reopen" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reopen is invoked" + }, + "details": { + "name": "Reopen" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "Save", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Save" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Save is invoked" + }, + "details": { + "name": "Save" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "IsOpen", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Open" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Open is invoked" + }, + "details": { + "name": "Is Open" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Open" + } + } + ] + }, + { + "key": "Undo", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Undo" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Undo is invoked" + }, + "details": { + "name": "Undo" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "Open", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Open" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Open is invoked" + }, + "details": { + "name": "Open" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "Load Path" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "CanUndo", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Can Undo" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Can Undo is invoked" + }, + "details": { + "name": "Can Undo" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Can Undo" + } + } + ] + }, + { + "key": "SetPropertyValue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Property Value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Property Value is invoked" + }, + "details": { + "name": "Set Property Value" + }, + "params": [ + { + "typeid": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", + "details": { + "name": "Property Full Name" + } + }, + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "SaveAsCopy", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Save As Copy" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Save As Copy is invoked" + }, + "details": { + "name": "Save As Copy" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "Save Path" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "BeginEdit", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Begin Edit" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Begin Edit is invoked" + }, + "details": { + "name": "Begin Edit" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Begin" + } + } + ] + }, + { + "key": "GetPropertyValue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Property Value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Property Value is invoked" + }, + "details": { + "name": "Get Property Value" + }, + "params": [ + { + "typeid": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", + "details": { + "name": "Property Full Name" + } + } + ], + "results": [ + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "Close", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Close" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Close is invoked" + }, + "details": { + "name": "Close" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "IsModified", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsModified" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsModified is invoked" + }, + "details": { + "name": "Is Modified" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Modified" + } + } + ] + }, + { + "key": "EndEdit", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke End Edit" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after End Edit is invoked" + }, + "details": { + "name": "End Edit" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "End Edit" + } + } + ] + }, + { + "key": "GetAbsolutePath", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Absolute Path" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Absolute Path is invoked" + }, + "details": { + "name": "Get Absolute Path" + }, + "results": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "Path" + } + } + ] + }, + { + "key": "GetRelativePath", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Relative Path" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Relative Path is invoked" + }, + "details": { + "name": "Get Relative Path" + }, + "results": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "Path" + } + } + ] + }, + { + "key": "IsSavable", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Savable" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Savable is invoked" + }, + "details": { + "name": "Is Savable" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Savable" + } + } + ] + }, + { + "key": "Redo", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Redo" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Redo is invoked" + }, + "details": { + "name": "Redo" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AtomToolsDocumentSystemRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AtomToolsDocumentSystemRequestBus.names new file mode 100644 index 0000000000..9b65065453 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AtomToolsDocumentSystemRequestBus.names @@ -0,0 +1,339 @@ +{ + "entries": [ + { + "key": "AtomToolsDocumentSystemRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Document", + "category": "Atom Tools" + }, + "methods": [ + { + "key": "SaveDocument", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Save Document" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Save Document is invoked" + }, + "details": { + "name": "Save Document" + }, + "params": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Document Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "SaveDocumentAsChild", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Save Document As Child" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Save Document As Child is invoked" + }, + "details": { + "name": "Save Document As Child" + }, + "params": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Document Id" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "Target Path" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "OpenDocument", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Open Document" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Open Document is invoked" + }, + "details": { + "name": "Open Document" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "Source Path" + } + } + ], + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Document Id" + } + } + ] + }, + { + "key": "CreateDocumentFromFile", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create Document From File" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create Document From File is invoked" + }, + "details": { + "name": "Create Document From File" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "Source Path" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "Target Path" + } + } + ], + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Document Id" + } + } + ] + }, + { + "key": "CloseDocument", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Close Document" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Close Document is invoked" + }, + "details": { + "name": "Close Document" + }, + "params": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Document Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "CloseAllDocuments", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Close All Documents" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Close All Documents is invoked" + }, + "details": { + "name": "Close All Documents" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "CloseAllDocumentsExcept", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Close All Documents Except" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Close All Documents Except is invoked" + }, + "details": { + "name": "Close All Documents Except" + }, + "params": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Document Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "CreateDocument", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create Document" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create Document is invoked" + }, + "details": { + "name": "Create Document" + }, + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Document Id" + } + } + ] + }, + { + "key": "DestroyDocument", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Destroy Document" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Destroy Document is invoked" + }, + "details": { + "name": "Destroy Document" + }, + "params": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Document Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "SaveDocumentAsCopy", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Save Document As Copy" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Save Document As Copy is invoked" + }, + "details": { + "name": "Save Document As Copy" + }, + "params": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "Document Id" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "Target Path" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + }, + { + "key": "SaveAllDocuments", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Save All Documents" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Save All Documents is invoked" + }, + "details": { + "name": "Save All Documents" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AtomToolsMainWindowFactoryRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AtomToolsMainWindowFactoryRequestBus.names new file mode 100644 index 0000000000..9d074c4224 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AtomToolsMainWindowFactoryRequestBus.names @@ -0,0 +1,43 @@ +{ + "entries": [ + { + "key": "AtomToolsMainWindowFactoryRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Main Window Factory", + "category": "Atom Tools" + }, + "methods": [ + { + "key": "CreateMainWindow", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create Main Window" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create Main Window is invoked" + }, + "details": { + "name": "Create Main Window" + } + }, + { + "key": "DestroyMainWindow", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Destroy Main Window" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Destroy Main Window is invoked" + }, + "details": { + "name": "Destroy Main Window" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AtomToolsMainWindowRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AtomToolsMainWindowRequestBus.names new file mode 100644 index 0000000000..cb6fa04754 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AtomToolsMainWindowRequestBus.names @@ -0,0 +1,179 @@ +{ + "entries": [ + { + "key": "AtomToolsMainWindowRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Main Window", + "category": "Atom Tools" + }, + "methods": [ + { + "key": "UnlockViewportRenderTargetSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Unlock Viewport Render Target Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Unlock Viewport Render Target Size is invoked" + }, + "details": { + "name": "Unlock Viewport Render Target Size" + } + }, + { + "key": "GetDockWidgetNames", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Dock Widget Names" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Dock Widget Names is invoked" + }, + "details": { + "name": "Get Dock Widget Names" + }, + "results": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "Widget Names" + } + } + ] + }, + { + "key": "ResizeViewportRenderTarget", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize Viewport Render Target" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize Viewport Render Target is invoked" + }, + "details": { + "name": "Resize Viewport Render Target" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Width" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Height" + } + } + ] + }, + { + "key": "SetDockWidgetVisible", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Dock Widget Visible" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Dock Widget Visible is invoked" + }, + "details": { + "name": "Set Dock Widget Visible" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Widget Name" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Visible" + } + } + ] + }, + { + "key": "IsDockWidgetVisible", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Dock Widget Visible" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Dock Widget Visible is invoked" + }, + "details": { + "name": "Is Dock Widget Visible" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Widget Name" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Visible" + } + } + ] + }, + { + "key": "LockViewportRenderTargetSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Lock Viewport Render Target Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Lock Viewport Render Target Size is invoked" + }, + "details": { + "name": "Lock Viewport Render Target Size" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Width" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Height" + } + } + ] + }, + { + "key": "ActivateWindow", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Activate Window" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Activate Window is invoked" + }, + "details": { + "name": "Activate Window" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AttachmentComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AttachmentComponentRequestBus.names new file mode 100644 index 0000000000..416c0dfae3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AttachmentComponentRequestBus.names @@ -0,0 +1,86 @@ +{ + "entries": [ + { + "key": "AttachmentComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Attachment", + "category": "Animation" + }, + "methods": [ + { + "key": "Attach", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Attach" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Attach is invoked" + }, + "details": { + "name": "Attach" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Target Entity Id", + "tooltip": "The Entity to attach" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Target Bone Name" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Offset Transform" + } + } + ] + }, + { + "key": "Detach", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Detach" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Detach is invoked" + }, + "details": { + "name": "Detach" + } + }, + { + "key": "SetAttachmentOffset", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetAttachmentOffset" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetAttachmentOffset is invoked" + }, + "details": { + "name": "Set Attachment Offset" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Offset Transform" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AudioEnvironmentComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AudioEnvironmentComponentRequestBus.names new file mode 100644 index 0000000000..641d11c99c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AudioEnvironmentComponentRequestBus.names @@ -0,0 +1,68 @@ +{ + "entries": [ + { + "key": "AudioEnvironmentComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Audio Environment", + "category": "Audio" + }, + "methods": [ + { + "key": "SetAmount", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Amount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Amount is invoked" + }, + "details": { + "name": "Set Amount", + "tooltip": "Sets the amount of environmental 'send' to apply to the default environment, if set." + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Amount" + } + } + ] + }, + { + "key": "SetEnvironmentAmount", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Environment Amount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Environment Amount is invoked" + }, + "details": { + "name": "Set Environment Amount", + "tooltip": "Sets the amount of envrionmental 'send' to apply to the specified envrionment" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Envrionment", + "tooltip": "The name of the ATL Envrionment to set an amount on" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Amount" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AudioListenerComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AudioListenerComponentRequestBus.names new file mode 100644 index 0000000000..c08b9854d9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AudioListenerComponentRequestBus.names @@ -0,0 +1,109 @@ +{ + "entries": [ + { + "key": "AudioListenerComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Audio Listener", + "category": "Audio" + }, + "methods": [ + { + "key": "SetRotationEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Rotation Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Rotation Entity is invoked" + }, + "details": { + "name": "Set Rotation Entity", + "tooltip": "Specify the entity with the rotational part of the transform that the audio listener will adopt." + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityID", + "tooltip": "The entity to use for the rotational part of the transform" + } + } + ] + }, + { + "key": "SetPositionEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Position Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Position Entity is invoked" + }, + "details": { + "name": "Set Position Entity", + "tooltip": "Specify the entity with the positional part of the transform that the audio listener will adopt." + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityID", + "tooltip": "The entity to use for the positional part of the transform" + } + } + ] + }, + { + "key": "SetFullTransformEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Full Transform Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Full Transform Entity is invoked" + }, + "details": { + "name": "Set Full Transform Entity", + "tooltip": "Specify the entity with the full transform that the audio listener will adopt" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityID", + "tooltip": "Entity to use for the transform" + } + } + ] + }, + { + "key": "SetListenerEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Listener Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Listener Enabled is invoked" + }, + "details": { + "name": "Set Listener Enabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enabled" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AudioPreloadComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AudioPreloadComponentRequestBus.names new file mode 100644 index 0000000000..beb17272ec --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AudioPreloadComponentRequestBus.names @@ -0,0 +1,117 @@ +{ + "entries": [ + { + "key": "AudioPreloadComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Audio Preload", + "category": "Audio" + }, + "methods": [ + { + "key": "IsLoaded", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Loaded" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Loaded is invoked" + }, + "details": { + "name": "Is Loaded" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Unload", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Unload" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Unload is invoked" + }, + "details": { + "name": "Unload" + } + }, + { + "key": "UnloadPreload", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Unload Preload" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Unload Preload is invoked" + }, + "details": { + "name": "Unload Preload" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "Load", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Load" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Load is invoked" + }, + "details": { + "name": "Load" + } + }, + { + "key": "LoadPreload", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Load Preload" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Load Preload is invoked" + }, + "details": { + "name": "Load Preload" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AudioRtpcComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AudioRtpcComponentRequestBus.names new file mode 100644 index 0000000000..6ea496f6b1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AudioRtpcComponentRequestBus.names @@ -0,0 +1,67 @@ +{ + "entries": [ + { + "key": "AudioRtpcComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Audio RTPC", + "category": "Audio" + }, + "methods": [ + { + "key": "SetValue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Value is invoked" + }, + "details": { + "name": "Set Value", + "tooltip": "Sets the value of the default RTPC." + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "SetRtpcValue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set RTPC Value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set RTPC Value is invoked" + }, + "details": { + "name": "Set RTPC Value", + "tooltip": "Sets the value of the specified RTPC" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "RTPC Name" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AudioSwitchComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AudioSwitchComponentRequestBus.names new file mode 100644 index 0000000000..cb2ca6db64 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AudioSwitchComponentRequestBus.names @@ -0,0 +1,70 @@ +{ + "entries": [ + { + "key": "AudioSwitchComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Audio Switch", + "category": "Audio" + }, + "methods": [ + { + "key": "SetState", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set State" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set State is invoked" + }, + "details": { + "name": "Set State", + "tooltip": "Sets the specified state of the default switch" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "State Name", + "tooltip": "Name of the state to set" + } + } + ] + }, + { + "key": "SetSwitchState", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Switch State" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Switch State is invoked" + }, + "details": { + "name": "Set Switch State", + "tooltip": "Sets a specified switch to a specified state" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Switch Name", + "tooltip": "Name of the switch to set" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "State Name", + "tooltip": "Name of the state to set" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AudioSystemComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AudioSystemComponentRequestBus.names new file mode 100644 index 0000000000..3409c106d3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AudioSystemComponentRequestBus.names @@ -0,0 +1,243 @@ +{ + "entries": [ + { + "key": "AudioSystemComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Audio System", + "category": "Audio" + }, + "methods": [ + { + "key": "LevelUnloadAudio", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke LevelUnloadAudio" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after LevelUnloadAudio is invoked" + }, + "details": { + "name": "Level Unload Audio" + } + }, + { + "key": "LevelLoadAudio", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke LevelLoadAudio" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after LevelLoadAudio is invoked" + }, + "details": { + "name": "Level Load Audio" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "Level Name" + } + } + ] + }, + { + "key": "GlobalKillAudioTrigger", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Global Kill Audio Trigger" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Global Kill Audio Trigger is invoked" + }, + "details": { + "name": "Global Kill Audio Trigger" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Trigger Name" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Callback Owner", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GlobalSetAudioRtpc", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Global Set Audio RTPC" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Global Set Audio RTPC is invoked" + }, + "details": { + "name": "Global Set Audio RTPC" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "RTPC Name" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value" + } + } + ] + }, + { + "key": "GlobalSetAudioSwitchState", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Global Set Audio Switch State" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Global Set Audio Switch State is invoked" + }, + "details": { + "name": "Global Set Audio Switch State" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Switch Name" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "State Name" + } + } + ] + }, + { + "key": "GlobalRefreshAudio", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GlobalRefreshAudio" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GlobalRefreshAudio is invoked" + }, + "details": { + "name": "Global Refresh Audio" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "Level Name" + } + } + ] + }, + { + "key": "GlobalMuteAudio", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Global Mute Audio" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Global Mute Audio is invoked" + }, + "details": { + "name": "Global Mute Audio" + } + }, + { + "key": "GlobalExecuteAudioTrigger", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Global Execute Audio Trigger" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Global Execute Audio Trigger is invoked" + }, + "details": { + "name": "Global Execute Audio Trigger" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Trigger Name" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Callback Owner", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GlobalStopAllSounds", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Global Stop All Sounds" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Global Stop All Sounds is invoked" + }, + "details": { + "name": "Global Stop All Sounds" + } + }, + { + "key": "GlobalUnmuteAudio", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Global Unmute Audio" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Global Unmute Audio is invoked" + }, + "details": { + "name": "Global Unmute Audio" + } + }, + { + "key": "GlobalResetAudioRtpcs", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Global Reset Audio RTPCs" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Global Reset Audio RTPCs is invoked" + }, + "details": { + "name": "Global Reset Audio RTPCs" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AudioTriggerComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AudioTriggerComponentRequestBus.names new file mode 100644 index 0000000000..111c2d328c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AudioTriggerComponentRequestBus.names @@ -0,0 +1,155 @@ +{ + "entries": [ + { + "key": "AudioTriggerComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Audio Trigger", + "category": "Audio" + }, + "methods": [ + { + "key": "SetObstructionType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Obstruction Type" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Obstruction Type is invoked" + }, + "details": { + "name": "Set Obstruction Type" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Obstruction Type", + "tooltip": "0: Ignore, 1: Single Ray, 2: Multi Ray" + } + } + ] + }, + { + "key": "KillAllTriggers", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Kill All Triggers" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Kill All Triggers is invoked" + }, + "details": { + "name": "Kill All Triggers", + "tooltip": "Cancels all audio triggers that are active on an entity" + } + }, + { + "key": "ExecuteTrigger", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Execute Trigger" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Execute Trigger is invoked" + }, + "details": { + "name": "Execute Trigger", + "tooltip": "Runs the specified audio trigger" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Trigger Name", + "tooltip": "Name of the audio trigger to run" + } + } + ] + }, + { + "key": "SetMovesWithEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Moves With Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Moves With Entity is invoked" + }, + "details": { + "name": "Set Moves With Entity", + "tooltip": "Specifies whether triggers should update position as the entity moves" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Track Entity", + "tooltip": "Set whether triggers should track the entity's position (1 is Track, 0 is Don't Track)" + } + } + ] + }, + { + "key": "Stop", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Stop" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Stop is invoked" + }, + "details": { + "name": "Stop", + "tooltip": "Runs the default 'stop' trigger, if set. If no 'stop' trigger is set, kills the default 'play' trigger." + } + }, + { + "key": "Play", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Play" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Play is invoked" + }, + "details": { + "name": "Play", + "tooltip": "Runs the default 'play' trigger, if set." + } + }, + { + "key": "KillTrigger", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Kill Trigger" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Kill Trigger is invoked" + }, + "details": { + "name": "Kill Trigger", + "tooltip": "Cancels the specified audio trigger" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Trigger Name", + "tooltip": "Name of the audio trigger to cancel" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AuthenticationProviderRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AuthenticationProviderRequestBus.names new file mode 100644 index 0000000000..237d70340b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/AuthenticationProviderRequestBus.names @@ -0,0 +1,342 @@ +{ + "entries": [ + { + "key": "AuthenticationProviderRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "AWS Authentication Provider", + "category": "AWS Client Auth" + }, + "methods": [ + { + "key": "SignOut", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SignOut" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SignOut is invoked" + }, + "details": { + "name": "Sign Out" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Provider name", + "tooltip": "The identity provider name" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Signed Out", + "tooltip": "True: Successfully sign out" + } + } + ] + }, + { + "key": "DeviceCodeGrantConfirmSignInAsync", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Device Code Grant Confirm Sign In Async" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Device Code Grant Confirm Sign In Async is invoked" + }, + "details": { + "name": "Device Code Grant Confirm Sign In Async" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Provider name", + "tooltip": "The identity provider name" + } + } + ] + }, + { + "key": "DeviceCodeGrantSignInAsync", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Device Code Grant Sign In Async" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Device Code Grant Sign In Async is invoked" + }, + "details": { + "name": "Device Code Grant Sign In Async" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Provider name", + "tooltip": "The identity provider name" + } + } + ] + }, + { + "key": "PasswordGrantMultiFactorSignInAsync", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Password Grant Multi Factor Sign In Async" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Password Grant Multi Factor Sign In Async is invoked" + }, + "details": { + "name": "Password Grant Multi Factor Sign In Async" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Provider name", + "tooltip": "The identity provider name" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Username", + "tooltip": "The client's username" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Password", + "tooltip": "The client's password" + } + } + ] + }, + { + "key": "GetAuthenticationTokens", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Authentication Tokens" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Authentication Tokens is invoked" + }, + "details": { + "name": "Get Authentication Tokens" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Provider name", + "tooltip": "The identity provider name" + } + } + ], + "results": [ + { + "typeid": "{F965D1B2-9DE3-4900-B44B-E58D9F083ACB}", + "details": { + "name": "AuthenticationTokens" + } + } + ] + }, + { + "key": "GetTokensWithRefreshAsync", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Tokens With Refresh Async" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Tokens With Refresh Async is invoked" + }, + "details": { + "name": "Get Tokens With Refresh Async" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Provider name", + "tooltip": "The identity provider name" + } + } + ] + }, + { + "key": "IsSignedIn", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Signed In" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Signed In is invoked" + }, + "details": { + "name": "Is Signed In" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Provider name", + "tooltip": "The identity provider name" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Signed In" + } + } + ] + }, + { + "key": "PasswordGrantSingleFactorSignInAsync", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Password GrantSingle Factor Sign In Async" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Password GrantSingle Factor Sign In Async is invoked" + }, + "details": { + "name": "Password GrantSingle Factor Sign In Async" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Provider name", + "tooltip": "The identity provider" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Username", + "tooltip": "The client's username" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Password", + "tooltip": "The client's password" + } + } + ] + }, + { + "key": "RefreshTokensAsync", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Refresh Tokens Async" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Refresh Tokens Async is invoked" + }, + "details": { + "name": "Refresh Tokens Async" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Provider name", + "tooltip": "The identity provider name" + } + } + ] + }, + { + "key": "Initialize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Initialize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Initialize is invoked" + }, + "details": { + "name": "Initialize" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "Provider Names" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Initialized" + } + } + ] + }, + { + "key": "PasswordGrantMultiFactorConfirmSignInAsync", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Password Grant Multi Factor Confirm Sign In Async" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Password Grant Multi Factor Confirm Sign In Async is invoked" + }, + "details": { + "name": "Password Grant Multi Factor Confirm Sign In Async" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Provider name", + "tooltip": "The identity provider name" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Username", + "tooltip": "The client's username" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Confirmation code", + "tooltip": "The client's confirmation code" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/BlastFamilyComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/BlastFamilyComponentRequestBus.names new file mode 100644 index 0000000000..f4c2192375 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/BlastFamilyComponentRequestBus.names @@ -0,0 +1,36 @@ +{ + "entries": [ + { + "key": "BlastFamilyComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Blast Family" + }, + "methods": [ + { + "key": "Get Actors Data", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Actors Data" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Actors Data is invoked" + }, + "details": { + "name": "Get Actors Data" + }, + "results": [ + { + "typeid": "{9B2C5410-EFDC-5A61-8B89-0F515B41AB24}", + "details": { + "name": "Actors Data" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/BlastFamilyDamageRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/BlastFamilyDamageRequestBus.names new file mode 100644 index 0000000000..9ef94a60bd --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/BlastFamilyDamageRequestBus.names @@ -0,0 +1,315 @@ +{ + "entries": [ + { + "key": "BlastFamilyDamageRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Blast Family Damage" + }, + "methods": [ + { + "key": "Get Family Id", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Family Id" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Family Id is invoked" + }, + "details": { + "name": "Get Family Id" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "Destroy actor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Destroy actor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Destroy actor is invoked" + }, + "details": { + "name": "Destroy Actor" + } + }, + { + "key": "Triangle Damage", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Triangle Damage" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Triangle Damage is invoked" + }, + "details": { + "name": "Triangle Damage" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position 0", + "tooltip": "Vertex of the triangle." + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position 1", + "tooltip": "Vertex of the triangle." + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position 2", + "tooltip": "Vertex of the triangle." + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Damage", + "tooltip": "How much damage to deal." + } + } + ] + }, + { + "key": "Impact Spread Damage", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Impact Spread Damage" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Impact Spread Damage is invoked" + }, + "details": { + "name": "Impact Spread Damage" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position", + "tooltip": "The global position of the damage's hit." + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Min Radius", + "tooltip": "Damages all chunks/bonds that are in the range [0, minRadius] with full damage" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Max Radius", + "tooltip": "Damages all chunks/bonds that are in the range [minRadius, maxRadius] with linearly decreasing damage." + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Damage", + "tooltip": "How much damage to deal." + } + } + ] + }, + { + "key": "Stress Damage", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Stress Damage" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Stress Damage is invoked" + }, + "details": { + "name": "Stress Damage" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position", + "tooltip": "The global position of the damage's hit." + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Force", + "tooltip": "The force applied at the position." + } + } + ] + }, + { + "key": "Shear Damage", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Shear Damage" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Shear Damage is invoked" + }, + "details": { + "name": "Shear Damage" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position", + "tooltip": "The global position of the damage's hit." + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Normal", + "tooltip": "The normal of the damage's hit." + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Min Radius", + "tooltip": "Damages all chunks/bonds that are in the range [0, minRadius] with full damage." + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Max Radius", + "tooltip": "Damages all chunks/bonds that are in the range [minRadius, maxRadius] with linearly decreasing damage." + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Damage", + "tooltip": "How much damage to deal." + } + } + ] + }, + { + "key": "Capsule Damage", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capsule Damage" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capsule Damage is invoked" + }, + "details": { + "name": "Capsule Damage" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position 0", + "tooltip": "The global position of one of the capsule's ends." + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position 1", + "tooltip": "The global position of another of the capsule's ends." + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Min Radius", + "tooltip": "Damages all chunks/bonds that are in the range [0, minRadius] with full damage." + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Max Radius", + "tooltip": "Damages all chunks/bonds that are in the range [minRadius, maxRadius] with linearly decreasing damage." + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Damage", + "tooltip": "How much damage to deal." + } + } + ] + }, + { + "key": "Radial Damage", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Radial Damage" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Radial Damage is invoked" + }, + "details": { + "name": "Radial Damage" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position", + "tooltip": "The global position of the damage's hit." + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Min Radius", + "tooltip": "Damages all chunks/bonds that are in the range [0, minRadius] with full damage." + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Max Radius", + "tooltip": "Damages all chunks/bonds that are in the range [minRadius, maxRadius] with linearly decreasing damage." + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Damage", + "tooltip": "How much damage to deal." + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/BloomRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/BloomRequestBus.names new file mode 100644 index 0000000000..0ae96265bc --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/BloomRequestBus.names @@ -0,0 +1,1422 @@ +{ + "entries": [ + { + "key": "BloomRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "BloomRequestBus" + }, + "methods": [ + { + "key": "GetTintStage0Override", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTintStage0Override" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTintStage0Override is invoked" + }, + "details": { + "name": "GetTintStage0Override" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetTintStage0Override", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetTintStage0Override" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetTintStage0Override is invoked" + }, + "details": { + "name": "SetTintStage0Override" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetTintStage1", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetTintStage1" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetTintStage1 is invoked" + }, + "details": { + "name": "SetTintStage1" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "SetTintStage0", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetTintStage0" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetTintStage0 is invoked" + }, + "details": { + "name": "SetTintStage0" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetKernelSizeStage3Override", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKernelSizeStage3Override" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKernelSizeStage3Override is invoked" + }, + "details": { + "name": "GetKernelSizeStage3Override" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetTintStage3Override", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTintStage3Override" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTintStage3Override is invoked" + }, + "details": { + "name": "GetTintStage3Override" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetKernelSizeScaleOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetKernelSizeScaleOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetKernelSizeScaleOverride is invoked" + }, + "details": { + "name": "SetKernelSizeScaleOverride" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetKernelSizeStage2", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetKernelSizeStage2" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetKernelSizeStage2 is invoked" + }, + "details": { + "name": "SetKernelSizeStage2" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetKernelSizeStage4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKernelSizeStage4" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKernelSizeStage4 is invoked" + }, + "details": { + "name": "GetKernelSizeStage4" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetTintStage0", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTintStage0" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTintStage0 is invoked" + }, + "details": { + "name": "GetTintStage0" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "SetTintStage4Override", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetTintStage4Override" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetTintStage4Override is invoked" + }, + "details": { + "name": "SetTintStage4Override" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetKernelSizeScale", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKernelSizeScale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKernelSizeScale is invoked" + }, + "details": { + "name": "GetKernelSizeScale" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetKernelSizeStage2", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKernelSizeStage2" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKernelSizeStage2 is invoked" + }, + "details": { + "name": "GetKernelSizeStage2" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetTintStage1Override", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetTintStage1Override" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetTintStage1Override is invoked" + }, + "details": { + "name": "SetTintStage1Override" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetTintStage3", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetTintStage3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetTintStage3 is invoked" + }, + "details": { + "name": "SetTintStage3" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetEnabledOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEnabledOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEnabledOverride is invoked" + }, + "details": { + "name": "GetEnabledOverride" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetTintStage3Override", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetTintStage3Override" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetTintStage3Override is invoked" + }, + "details": { + "name": "SetTintStage3Override" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetEnabledOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEnabledOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEnabledOverride is invoked" + }, + "details": { + "name": "SetEnabledOverride" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetKernelSizeStage0", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetKernelSizeStage0" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetKernelSizeStage0 is invoked" + }, + "details": { + "name": "SetKernelSizeStage0" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetKernelSizeStage0Override", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKernelSizeStage0Override" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKernelSizeStage0Override is invoked" + }, + "details": { + "name": "GetKernelSizeStage0Override" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetKernelSizeStage4Override", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetKernelSizeStage4Override" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetKernelSizeStage4Override is invoked" + }, + "details": { + "name": "SetKernelSizeStage4Override" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetTintStage2", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTintStage2" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTintStage2 is invoked" + }, + "details": { + "name": "GetTintStage2" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetTintStage4Override", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTintStage4Override" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTintStage4Override is invoked" + }, + "details": { + "name": "GetTintStage4Override" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetKernelSizeStage0Override", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetKernelSizeStage0Override" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetKernelSizeStage0Override is invoked" + }, + "details": { + "name": "SetKernelSizeStage0Override" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetKernelSizeStage4Override", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKernelSizeStage4Override" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKernelSizeStage4Override is invoked" + }, + "details": { + "name": "GetKernelSizeStage4Override" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetTintStage2Override", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTintStage2Override" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTintStage2Override is invoked" + }, + "details": { + "name": "GetTintStage2Override" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetTintStage3", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTintStage3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTintStage3 is invoked" + }, + "details": { + "name": "GetTintStage3" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "SetKernelSizeScale", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetKernelSizeScale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetKernelSizeScale is invoked" + }, + "details": { + "name": "SetKernelSizeScale" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetIntensity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetIntensity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetIntensity is invoked" + }, + "details": { + "name": "GetIntensity" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetBicubicEnabledOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetBicubicEnabledOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetBicubicEnabledOverride is invoked" + }, + "details": { + "name": "GetBicubicEnabledOverride" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetKernelSizeStage4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetKernelSizeStage4" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetKernelSizeStage4 is invoked" + }, + "details": { + "name": "SetKernelSizeStage4" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetBicubicEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetBicubicEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetBicubicEnabled is invoked" + }, + "details": { + "name": "SetBicubicEnabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetKernelSizeStage1Override", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKernelSizeStage1Override" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKernelSizeStage1Override is invoked" + }, + "details": { + "name": "GetKernelSizeStage1Override" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetThresholdOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetThresholdOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetThresholdOverride is invoked" + }, + "details": { + "name": "GetThresholdOverride" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetIntensity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetIntensity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetIntensity is invoked" + }, + "details": { + "name": "SetIntensity" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetBicubicEnabledOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetBicubicEnabledOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetBicubicEnabledOverride is invoked" + }, + "details": { + "name": "SetBicubicEnabledOverride" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetKernelSizeStage1", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKernelSizeStage1" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKernelSizeStage1 is invoked" + }, + "details": { + "name": "GetKernelSizeStage1" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetKernelSizeStage2Override", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKernelSizeStage2Override" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKernelSizeStage2Override is invoked" + }, + "details": { + "name": "GetKernelSizeStage2Override" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetTintStage4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetTintStage4" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetTintStage4 is invoked" + }, + "details": { + "name": "SetTintStage4" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "SetKernelSizeStage1", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetKernelSizeStage1" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetKernelSizeStage1 is invoked" + }, + "details": { + "name": "SetKernelSizeStage1" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetThresholdOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetThresholdOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetThresholdOverride is invoked" + }, + "details": { + "name": "SetThresholdOverride" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetTintStage1", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTintStage1" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTintStage1 is invoked" + }, + "details": { + "name": "GetTintStage1" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetKnee", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKnee" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKnee is invoked" + }, + "details": { + "name": "GetKnee" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetThreshold", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetThreshold" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetThreshold is invoked" + }, + "details": { + "name": "SetThreshold" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetIntensityOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetIntensityOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetIntensityOverride is invoked" + }, + "details": { + "name": "SetIntensityOverride" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEnabled is invoked" + }, + "details": { + "name": "GetEnabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetKernelSizeStage1Override", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetKernelSizeStage1Override" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetKernelSizeStage1Override is invoked" + }, + "details": { + "name": "SetKernelSizeStage1Override" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetKernelSizeStage0", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKernelSizeStage0" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKernelSizeStage0 is invoked" + }, + "details": { + "name": "GetKernelSizeStage0" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetTintStage2Override", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetTintStage2Override" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetTintStage2Override is invoked" + }, + "details": { + "name": "SetTintStage2Override" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetTintStage4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTintStage4" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTintStage4 is invoked" + }, + "details": { + "name": "GetTintStage4" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetKernelSizeScaleOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKernelSizeScaleOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKernelSizeScaleOverride is invoked" + }, + "details": { + "name": "GetKernelSizeScaleOverride" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetKernelSizeStage2Override", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetKernelSizeStage2Override" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetKernelSizeStage2Override is invoked" + }, + "details": { + "name": "SetKernelSizeStage2Override" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetKernelSizeStage3", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKernelSizeStage3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKernelSizeStage3 is invoked" + }, + "details": { + "name": "GetKernelSizeStage3" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetTintStage1Override", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTintStage1Override" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTintStage1Override is invoked" + }, + "details": { + "name": "GetTintStage1Override" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetTintStage2", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetTintStage2" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetTintStage2 is invoked" + }, + "details": { + "name": "SetTintStage2" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetKneeOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKneeOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKneeOverride is invoked" + }, + "details": { + "name": "GetKneeOverride" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetKnee", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetKnee" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetKnee is invoked" + }, + "details": { + "name": "SetKnee" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetIntensityOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetIntensityOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetIntensityOverride is invoked" + }, + "details": { + "name": "GetIntensityOverride" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEnabled is invoked" + }, + "details": { + "name": "SetEnabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetThreshold", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetThreshold" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetThreshold is invoked" + }, + "details": { + "name": "GetThreshold" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetKernelSizeStage3", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetKernelSizeStage3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetKernelSizeStage3 is invoked" + }, + "details": { + "name": "SetKernelSizeStage3" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetKernelSizeStage3Override", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetKernelSizeStage3Override" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetKernelSizeStage3Override is invoked" + }, + "details": { + "name": "SetKernelSizeStage3Override" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetKneeOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetKneeOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetKneeOverride is invoked" + }, + "details": { + "name": "SetKneeOverride" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetBicubicEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetBicubicEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetBicubicEnabled is invoked" + }, + "details": { + "name": "GetBicubicEnabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/BoundsRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/BoundsRequestBus.names new file mode 100644 index 0000000000..a778eb6039 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/BoundsRequestBus.names @@ -0,0 +1,58 @@ +{ + "entries": [ + { + "key": "BoundsRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "BoundsRequestBus" + }, + "methods": [ + { + "key": "GetWorldBounds", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetWorldBounds" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetWorldBounds is invoked" + }, + "details": { + "name": "GetWorldBounds" + }, + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "GetLocalBounds", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetLocalBounds" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetLocalBounds is invoked" + }, + "details": { + "name": "GetLocalBounds" + }, + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/BoxShapeComponentRequestsBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/BoxShapeComponentRequestsBus.names new file mode 100644 index 0000000000..816dc5e4ec --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/BoxShapeComponentRequestsBus.names @@ -0,0 +1,86 @@ +{ + "entries": [ + { + "key": "BoxShapeComponentRequestsBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "BoxShapeComponentRequestsBus", + "category": "Shape" + }, + "methods": [ + { + "key": "GetBoxConfiguration", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Configuration" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Configuration is invoked" + }, + "details": { + "name": "Get Configuration", + "tooltip": "Returns the box configuration of a source entity" + }, + "results": [ + { + "typeid": "{F034FBA2-AC2F-4E66-8152-14DFB90D6283}", + "details": { + "name": "Configuration", + "tooltip": "Box shape configuration parameters" + } + } + ] + }, + { + "key": "GetBoxDimensions", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Dimensions" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Dimensions is invoked" + }, + "details": { + "name": "Get Dimensions", + "tooltip": "Returns the box dimentions of a source entity as x,y,z" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "SetBoxDimensions", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Dimensions" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Dimensions is invoked" + }, + "details": { + "name": "Set Dimensions", + "tooltip": "Sets the box dimentions of a source entity as x,y,z" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Dimensions", + "tooltip": "Box dimentions as x,y,z" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/CameraRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/CameraRequestBus.names new file mode 100644 index 0000000000..4fbeba0aa7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/CameraRequestBus.names @@ -0,0 +1,359 @@ +{ + "entries": [ + { + "key": "CameraRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Camera", + "category": "Camera" + }, + "methods": [ + { + "key": "GetOrthographicHalfWidth", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Orthographic Half Width" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Orthographic Half Width is invoked" + }, + "details": { + "name": "Get Orthographic Half Width" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Half Width" + } + } + ] + }, + { + "key": "GetFov", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Field of View" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Field of View is invoked" + }, + "details": { + "name": "Get Field of View" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "FOV" + } + } + ] + }, + { + "key": "SetFovRadians", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Field of View (Radians)" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Field of View (Radians) is invoked" + }, + "details": { + "name": "Set Field of View (Radians)" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "FOV (Radians)" + } + } + ] + }, + { + "key": "SetNearClipDistance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Near Clip Distance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Near Clip Distance is invoked" + }, + "details": { + "name": "Set Near Clip Distance" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Near Clip Distance" + } + } + ] + }, + { + "key": "IsOrthographic", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Orthographic" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Orthographic is invoked" + }, + "details": { + "name": "Is Orthographic" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Orthographic" + } + } + ] + }, + { + "key": "SetFovDegrees", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Field of View (Degrees)" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Field of View (Degrees) is invoked" + }, + "details": { + "name": "Set Field of View (Degrees)" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Field of View (Degrees)" + } + } + ] + }, + { + "key": "GetFovRadians", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Field of View (Radians)" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Field of View (Radians) is invoked" + }, + "details": { + "name": "Get Field of View (Radians)" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Field of View (Radians)" + } + } + ] + }, + { + "key": "SetFov", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Field of View" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Field of View is invoked" + }, + "details": { + "name": "Set Field of View" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Field of View" + } + } + ] + }, + { + "key": "MakeActiveView", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Make Active View" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Make Active View is invoked" + }, + "details": { + "name": "Make Active View" + } + }, + { + "key": "GetFarClipDistance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Far Clip Distance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Far Clip Distance is invoked" + }, + "details": { + "name": "Get Far Clip Distance" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Far Clip Distance" + } + } + ] + }, + { + "key": "GetFovDegrees", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Field of View (Degrees)" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Field of View (Degrees) is invoked" + }, + "details": { + "name": "Get Field of View (Degrees)" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Field of View (Degrees)" + } + } + ] + }, + { + "key": "SetOrthographic", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Orthographic" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Orthographic is invoked" + }, + "details": { + "name": "Set Orthographic" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Orthographic" + } + } + ] + }, + { + "key": "SetOrthographicHalfWidth", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Orthographic Half Width" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Orthographic Half Width is invoked" + }, + "details": { + "name": "Set Orthographic Half Width" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Half Width" + } + } + ] + }, + { + "key": "GetNearClipDistance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Near Clip Distance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Near Clip Distance is invoked" + }, + "details": { + "name": "Get Near Clip Distance" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Near Clip Distance" + } + } + ] + }, + { + "key": "SetFarClipDistance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Far Clip Distance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Far Clip Distance is invoked" + }, + "details": { + "name": "Set Far Clip Distance" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Far Clip Distance" + } + } + ] + }, + { + "key": "IsActiveView", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Active View" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Active View is invoked" + }, + "details": { + "name": "Is Active View" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Active View" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/CameraSystemRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/CameraSystemRequestBus.names new file mode 100644 index 0000000000..6ad6354cd4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/CameraSystemRequestBus.names @@ -0,0 +1,37 @@ +{ + "entries": [ + { + "key": "CameraSystemRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Camera" + }, + "methods": [ + { + "key": "GetActiveCamera", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Active Camera" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Active Camera is invoked" + }, + "details": { + "name": "Get Active Camera" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/CapsuleShapeComponentRequestsBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/CapsuleShapeComponentRequestsBus.names new file mode 100644 index 0000000000..ac6a688b01 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/CapsuleShapeComponentRequestsBus.names @@ -0,0 +1,87 @@ +{ + "entries": [ + { + "key": "CapsuleShapeComponentRequestsBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "CapsuleShapeComponentRequestsBus", + "category": "Shape" + }, + "methods": [ + { + "key": "GetCapsuleConfiguration", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Configuration" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Configuration is invoked" + }, + "details": { + "name": "Get Configuration", + "tooltip": "Returns the capsule configuration of a source entity" + }, + "results": [ + { + "typeid": "{00931AEB-2AD8-42CE-B1DC-FA4332F51501}", + "details": { + "name": "Configuration", + "tooltip": "Capsule shape configuration parameters" + } + } + ] + }, + { + "key": "SetHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Height" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Height is invoked" + }, + "details": { + "name": "Set Height", + "tooltip": "Sets the capsule height" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Height", + "tooltip": "Height in meters" + } + } + ] + }, + { + "key": "SetRadius", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Radius" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Radius is invoked" + }, + "details": { + "name": "Set Radius", + "tooltip": "Sets the capsule radius" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Radius", + "tooltip": "Radius in radians" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/CharacterControllerRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/CharacterControllerRequestBus.names new file mode 100644 index 0000000000..df4a2d29df --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/CharacterControllerRequestBus.names @@ -0,0 +1,279 @@ +{ + "entries": [ + { + "key": "CharacterControllerRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Character", + "category": "PhysX" + }, + "methods": [ + { + "key": "SetSlopeLimitDegrees", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Slope Limit Degrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Slope Limit Degrees is invoked" + }, + "details": { + "name": "Set Slope Limit Degrees" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Slope Limit" + } + } + ] + }, + { + "key": "GetSlopeLimitDegrees", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Slope Limit Degrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Slope Limit Degrees is invoked" + }, + "details": { + "name": "Get Slope Limit Degrees" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Slope Limit" + } + } + ] + }, + { + "key": "SetMaximumSpeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Maximum Speed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Maximum Speed is invoked" + }, + "details": { + "name": "Set Maximum Speed" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Maximum Speed" + } + } + ] + }, + { + "key": "GetUpDirection", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Up Direction" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Up Direction is invoked" + }, + "details": { + "name": "Get Up Direction" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Up" + } + } + ] + }, + { + "key": "AddVelocity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Add Velocity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Add Velocity is invoked" + }, + "details": { + "name": "Add Velocity" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Velocity" + } + } + ] + }, + { + "key": "SetBasePosition", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Base Position" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Base Position is invoked" + }, + "details": { + "name": "Set Base Position" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position" + } + } + ] + }, + { + "key": "GetCenterPosition", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Center Position" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Center Position is invoked" + }, + "details": { + "name": "Get Center Position" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position" + } + } + ] + }, + { + "key": "GetStepHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Step Height" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Step Height is invoked" + }, + "details": { + "name": "Get Step Height" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Step Height" + } + } + ] + }, + { + "key": "GetBasePosition", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Base Position" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Base Position is invoked" + }, + "details": { + "name": "Get Base Position" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position" + } + } + ] + }, + { + "key": "SetStepHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Step Height" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Step Height is invoked" + }, + "details": { + "name": "Set Step Height" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Step Height" + } + } + ] + }, + { + "key": "GetMaximumSpeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Maximum Speed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Maximum Speed is invoked" + }, + "details": { + "name": "Get Maximum Speed" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Maximum Speed" + } + } + ] + }, + { + "key": "GetVelocity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Velocity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Velocity is invoked" + }, + "details": { + "name": "Get Velocity" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Velocity" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/CharacterGameplayRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/CharacterGameplayRequestBus.names new file mode 100644 index 0000000000..6a957de61b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/CharacterGameplayRequestBus.names @@ -0,0 +1,124 @@ +{ + "entries": [ + { + "key": "CharacterGameplayRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Character" + }, + "methods": [ + { + "key": "GetFallingVelocity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Falling Velocity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Falling Velocity is invoked" + }, + "details": { + "name": "Get Falling Velocity" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Falling Velocity" + } + } + ] + }, + { + "key": "GetGravityMultiplier", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Gravity Multiplier" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Gravity Multiplier is invoked" + }, + "details": { + "name": "Get Gravity Multiplier" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Gravity Multiplier" + } + } + ] + }, + { + "key": "SetGravityMultiplier", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Gravity Multiplier" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Gravity Multiplier is invoked" + }, + "details": { + "name": "Set Gravity Multiplier" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Gravity Multiplier" + } + } + ] + }, + { + "key": "IsOnGround", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is On Ground" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is On Ground is invoked" + }, + "details": { + "name": "Is On Ground" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is On Ground" + } + } + ] + }, + { + "key": "SetFallingVelocity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Falling Velocity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Falling Velocity is invoked" + }, + "details": { + "name": "Set Falling Velocity" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Falling Velocity" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/CollisionFilteringBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/CollisionFilteringBus.names new file mode 100644 index 0000000000..1c8eba4b1f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/CollisionFilteringBus.names @@ -0,0 +1,148 @@ +{ + "entries": [ + { + "key": "CollisionFilteringBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Collision Filtering" + }, + "methods": [ + { + "key": "ToggleCollisionLayer", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Toggle Collision Layer" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Toggle Collision Layer is invoked" + }, + "details": { + "name": "Toggle Collision Layer" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Layer Name" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Collider Tag" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enabled" + } + } + ] + }, + { + "key": "SetCollisionGroup", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Collision Group" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Collision Group is invoked" + }, + "details": { + "name": "Set Collision Group" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Group Name" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Collider Tag" + } + } + ] + }, + { + "key": "GetCollisionGroupName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Collision Group Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Collision Group Name is invoked" + }, + "details": { + "name": "Get Collision Group Name" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name" + } + } + ] + }, + { + "key": "GetCollisionLayerName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Collision Layer Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Collision Layer Name is invoked" + }, + "details": { + "name": "Get Collision Layer Name" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name" + } + } + ] + }, + { + "key": "SetCollisionLayer", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Collision Layer" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Collision Layer is invoked" + }, + "details": { + "name": "Set Collision Layer" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Layer Name" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Collider Tag" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ComponentApplicationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ComponentApplicationBus.names new file mode 100644 index 0000000000..59eb3e5025 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ComponentApplicationBus.names @@ -0,0 +1,83 @@ +{ + "entries": [ + { + "key": "ComponentApplicationBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Application", + "category": "Components" + }, + "methods": [ + { + "key": "GetEntityName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Entity Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Entity Name is invoked" + }, + "details": { + "name": "Get Entity Name" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetEntityName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Entity Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Entity Name is invoked" + }, + "details": { + "name": "Set Entity Name" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "Name" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Succesful" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ComponentModeSystemRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ComponentModeSystemRequestBus.names new file mode 100644 index 0000000000..c2cbe27fbb --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ComponentModeSystemRequestBus.names @@ -0,0 +1,50 @@ +{ + "entries": [ + { + "key": "ComponentModeSystemRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "ComponentModeSystemRequestBus" + }, + "methods": [ + { + "key": "EnterComponentMode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EnterComponentMode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EnterComponentMode is invoked" + }, + "details": { + "name": "EnterComponentMode" + }, + "params": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + } + ] + }, + { + "key": "EndComponentMode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EndComponentMode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EndComponentMode is invoked" + }, + "details": { + "name": "EndComponentMode" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ConsoleRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ConsoleRequestBus.names new file mode 100644 index 0000000000..eb2414b9b4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ConsoleRequestBus.names @@ -0,0 +1,37 @@ +{ + "entries": [ + { + "key": "ConsoleRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Console", + "category": "Utilities" + }, + "methods": [ + { + "key": "ExecuteConsoleCommand", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Execute Console Command" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Execute Console Command is invoked" + }, + "details": { + "name": "Execute Console Command" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Command" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ConstantGradientRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ConstantGradientRequestBus.names new file mode 100644 index 0000000000..6d445cc293 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ConstantGradientRequestBus.names @@ -0,0 +1,58 @@ +{ + "entries": [ + { + "key": "ConstantGradientRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "ConstantGradientRequestBus" + }, + "methods": [ + { + "key": "GetConstantValue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetConstantValue" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetConstantValue is invoked" + }, + "details": { + "name": "GetConstantValue" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetConstantValue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetConstantValue" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetConstantValue is invoked" + }, + "details": { + "name": "SetConstantValue" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/CylinderShapeComponentRequestsBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/CylinderShapeComponentRequestsBus.names new file mode 100644 index 0000000000..a4bd93758f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/CylinderShapeComponentRequestsBus.names @@ -0,0 +1,87 @@ +{ + "entries": [ + { + "key": "CylinderShapeComponentRequestsBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "CylinderShapeComponentRequestsBus", + "category": "Shape" + }, + "methods": [ + { + "key": "GetCylinderConfiguration", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Configuration" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Configuration is invoked" + }, + "details": { + "name": "Get Configuration", + "tooltip": "Returns the cylinder configuration of a source entity" + }, + "results": [ + { + "typeid": "{53254779-82F1-441E-9116-81E1FACFECF4}", + "details": { + "name": "Configuration", + "tooltip": "Cylinder shape configuration parameters" + } + } + ] + }, + { + "key": "SetHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Height" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Height is invoked" + }, + "details": { + "name": "Set Height", + "tooltip": "Sets the cylinder height" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Height", + "tooltip": "Height in meters" + } + } + ] + }, + { + "key": "SetRadius", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Radius" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Radius is invoked" + }, + "details": { + "name": "Set Radius", + "tooltip": "Sets the cylinder radius" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Radius", + "tooltip": "Radius in radians" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/DebugDrawRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/DebugDrawRequestBus.names new file mode 100644 index 0000000000..18933932f8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/DebugDrawRequestBus.names @@ -0,0 +1,606 @@ +{ + "entries": [ + { + "key": "DebugDrawRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Debug Draw" + }, + "methods": [ + { + "key": "DrawTextOnEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Draw Text On Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Draw Text On Entity is invoked" + }, + "details": { + "name": "Draw Text On Entity" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Text" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Duration" + } + } + ] + }, + { + "key": "DrawRayEntityToDirection", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Draw Ray Entity To Direction" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Draw Ray Entity To Direction is invoked" + }, + "details": { + "name": "Draw Ray Entity To Direction" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Direction" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Duration" + } + } + ] + }, + { + "key": "DrawObb", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Draw Oriented Bounding Box" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Draw Oriented Bounding Box is invoked" + }, + "details": { + "name": "Draw Oriented Bounding Box" + }, + "params": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "OBB" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Duration" + } + } + ] + }, + { + "key": "DrawObbOnEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Draw Oriented Bounding Box on Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Draw Oriented Bounding Box on Entity is invoked" + }, + "details": { + "name": "Draw Oriented Bounding Box on Entity" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "OBB" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Duration" + } + } + ] + }, + { + "key": "DrawRayLocationToDirection", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Draw Ray Location To Direction" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Draw Ray Location To Direction is invoked" + }, + "details": { + "name": "Draw Ray Location To Direction" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Direction" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Duration" + } + } + ] + }, + { + "key": "DrawSphereOnEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Draw Sphere On Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Draw Sphere On Entity is invoked" + }, + "details": { + "name": "Draw Sphere On Entity" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Radius" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Duration" + } + } + ] + }, + { + "key": "DrawAabbOnEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Draw Axis Aligned Bounding Box On Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Draw Axis Aligned Bounding Box On Entity is invoked" + }, + "details": { + "name": "Draw Axis Aligned Bounding Box On Entity" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "AABB" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Duration" + } + } + ] + }, + { + "key": "DrawLineEntityToEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Draw Line Entity To Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Draw Line Entity To Entity is invoked" + }, + "details": { + "name": "Draw Line Entity To Entity" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "From Entity Id", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "To Entity Id", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Duration" + } + } + ] + }, + { + "key": "DrawTextAtLocation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Draw Text At Location" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Draw Text At Location is invoked" + }, + "details": { + "name": "Draw Text At Location" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Text" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Duration" + } + } + ] + }, + { + "key": "DrawTextOnScreen", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Draw Text On Screen" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Draw Text On Screen is invoked" + }, + "details": { + "name": "Draw Text On Screen" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Text" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Duration" + } + } + ] + }, + { + "key": "DrawAabb", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Draw Axis Aligned Bounding Box" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Draw Axis Aligned Bounding Box is invoked" + }, + "details": { + "name": "Draw Axis Aligned Bounding Box" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "AABB" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Duration" + } + } + ] + }, + { + "key": "DrawLineLocationToLocation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Draw Line Location To Location" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Draw Line Location To Location is invoked" + }, + "details": { + "name": "Draw Line Location To Location" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Duration" + } + } + ] + }, + { + "key": "DrawLineEntityToLocation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Draw Line Entity To Location" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Draw Line Entity To Location is invoked" + }, + "details": { + "name": "Draw Line Entity To Location" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Duration" + } + } + ] + }, + { + "key": "DrawRayEntityToEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Draw Ray Entity To Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Draw Ray Entity To Entity is invoked" + }, + "details": { + "name": "Draw Ray Entity To Entity" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "From Entity Id", + "tooltip": "Entity to draw the ray from" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "To Entity Id", + "tooltip": "Entity to draw the ray to" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Duration" + } + } + ] + }, + { + "key": "DrawSphereAtLocation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Draw Sphere At Location" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Draw Sphere At Location is invoked" + }, + "details": { + "name": "Draw Sphere At Location" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Radius" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Duration" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/DecalRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/DecalRequestBus.names new file mode 100644 index 0000000000..2d69295887 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/DecalRequestBus.names @@ -0,0 +1,190 @@ +{ + "entries": [ + { + "key": "DecalRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "DecalRequestBus" + }, + "methods": [ + { + "key": "GetMaterial", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetMaterial" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetMaterial is invoked" + }, + "details": { + "name": "GetMaterial" + }, + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "GetSortKey", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSortKey" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSortKey is invoked" + }, + "details": { + "name": "GetSortKey" + }, + "results": [ + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "unsigned char" + } + } + ] + }, + { + "key": "SetSortKey", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSortKey" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSortKey is invoked" + }, + "details": { + "name": "SetSortKey" + }, + "params": [ + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "unsigned char" + } + } + ] + }, + { + "key": "SetMaterial", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetMaterial" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetMaterial is invoked" + }, + "details": { + "name": "SetMaterial" + }, + "params": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "SetAttenuationAngle", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetAttenuationAngle" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetAttenuationAngle is invoked" + }, + "details": { + "name": "SetAttenuationAngle" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetOpacity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetOpacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetOpacity is invoked" + }, + "details": { + "name": "GetOpacity" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetOpacity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetOpacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetOpacity is invoked" + }, + "details": { + "name": "SetOpacity" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetAttenuationAngle", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAttenuationAngle" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAttenuationAngle is invoked" + }, + "details": { + "name": "GetAttenuationAngle" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/DeferredFogRequestsBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/DeferredFogRequestsBus.names new file mode 100644 index 0000000000..ff796ed9d8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/DeferredFogRequestsBus.names @@ -0,0 +1,498 @@ +{ + "entries": [ + { + "key": "DeferredFogRequestsBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "DeferredFogRequestsBus" + }, + "methods": [ + { + "key": "SetNoiseTexture", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetNoiseTexture" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetNoiseTexture is invoked" + }, + "details": { + "name": "SetNoiseTexture" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetNoiseTexCoordScale", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetNoiseTexCoordScale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetNoiseTexCoordScale is invoked" + }, + "details": { + "name": "SetNoiseTexCoordScale" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "SetNoiseTexCoord2Scale", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetNoiseTexCoord2Scale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetNoiseTexCoord2Scale is invoked" + }, + "details": { + "name": "SetNoiseTexCoord2Scale" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "GetFogMaxHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetFogMaxHeight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetFogMaxHeight is invoked" + }, + "details": { + "name": "GetFogMaxHeight" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetNoiseTexCoordScale", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNoiseTexCoordScale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNoiseTexCoordScale is invoked" + }, + "details": { + "name": "GetNoiseTexCoordScale" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "GetNoiseTexCoordVelocity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNoiseTexCoordVelocity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNoiseTexCoordVelocity is invoked" + }, + "details": { + "name": "GetNoiseTexCoordVelocity" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "SetFogEndDistance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetFogEndDistance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetFogEndDistance is invoked" + }, + "details": { + "name": "SetFogEndDistance" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetFogEndDistance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetFogEndDistance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetFogEndDistance is invoked" + }, + "details": { + "name": "GetFogEndDistance" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetNoiseTexCoord2Scale", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNoiseTexCoord2Scale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNoiseTexCoord2Scale is invoked" + }, + "details": { + "name": "GetNoiseTexCoord2Scale" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "SetNoiseTexCoord2Velocity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetNoiseTexCoord2Velocity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetNoiseTexCoord2Velocity is invoked" + }, + "details": { + "name": "SetNoiseTexCoord2Velocity" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "GetFogStartDistance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetFogStartDistance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetFogStartDistance is invoked" + }, + "details": { + "name": "GetFogStartDistance" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetFogMaxHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetFogMaxHeight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetFogMaxHeight is invoked" + }, + "details": { + "name": "SetFogMaxHeight" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetNoiseTexCoordVelocity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetNoiseTexCoordVelocity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetNoiseTexCoordVelocity is invoked" + }, + "details": { + "name": "SetNoiseTexCoordVelocity" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "GetNoiseTexCoord2Velocity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNoiseTexCoord2Velocity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNoiseTexCoord2Velocity is invoked" + }, + "details": { + "name": "GetNoiseTexCoord2Velocity" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "SetFogStartDistance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetFogStartDistance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetFogStartDistance is invoked" + }, + "details": { + "name": "SetFogStartDistance" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetFogMinHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetFogMinHeight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetFogMinHeight is invoked" + }, + "details": { + "name": "GetFogMinHeight" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetFogColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetFogColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetFogColor is invoked" + }, + "details": { + "name": "GetFogColor" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "SetOctavesBlendFactor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetOctavesBlendFactor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetOctavesBlendFactor is invoked" + }, + "details": { + "name": "SetOctavesBlendFactor" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetOctavesBlendFactor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetOctavesBlendFactor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetOctavesBlendFactor is invoked" + }, + "details": { + "name": "GetOctavesBlendFactor" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetFogColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetFogColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetFogColor is invoked" + }, + "details": { + "name": "SetFogColor" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "SetFogMinHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetFogMinHeight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetFogMinHeight is invoked" + }, + "details": { + "name": "SetFogMinHeight" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetNoiseTexture", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNoiseTexture" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNoiseTexture is invoked" + }, + "details": { + "name": "GetNoiseTexture" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/DepthOfFieldRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/DepthOfFieldRequestBus.names new file mode 100644 index 0000000000..1fbc15e794 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/DepthOfFieldRequestBus.names @@ -0,0 +1,1028 @@ +{ + "entries": [ + { + "key": "DepthOfFieldRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "DepthOfFieldRequestBus" + }, + "methods": [ + { + "key": "GetEnableDebugColoringOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEnableDebugColoringOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEnableDebugColoringOverride is invoked" + }, + "details": { + "name": "GetEnableDebugColoringOverride" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetAutoFocusSpeedOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAutoFocusSpeedOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAutoFocusSpeedOverride is invoked" + }, + "details": { + "name": "GetAutoFocusSpeedOverride" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetAutoFocusSensitivity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetAutoFocusSensitivity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetAutoFocusSensitivity is invoked" + }, + "details": { + "name": "SetAutoFocusSensitivity" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetAutoFocusDelayOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetAutoFocusDelayOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetAutoFocusDelayOverride is invoked" + }, + "details": { + "name": "SetAutoFocusDelayOverride" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetAutoFocusScreenPosition", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAutoFocusScreenPosition" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAutoFocusScreenPosition is invoked" + }, + "details": { + "name": "GetAutoFocusScreenPosition" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "GetEnableDebugColoring", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEnableDebugColoring" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEnableDebugColoring is invoked" + }, + "details": { + "name": "GetEnableDebugColoring" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetFocusDistance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetFocusDistance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetFocusDistance is invoked" + }, + "details": { + "name": "SetFocusDistance" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetQualityLevel", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetQualityLevel" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetQualityLevel is invoked" + }, + "details": { + "name": "SetQualityLevel" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "SetCameraEntityId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetCameraEntityId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetCameraEntityId is invoked" + }, + "details": { + "name": "SetCameraEntityId" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetAutoFocusDelay", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetAutoFocusDelay" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetAutoFocusDelay is invoked" + }, + "details": { + "name": "SetAutoFocusDelay" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetAutoFocusDelay", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAutoFocusDelay" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAutoFocusDelay is invoked" + }, + "details": { + "name": "GetAutoFocusDelay" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetAutoFocusScreenPosition", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetAutoFocusScreenPosition" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetAutoFocusScreenPosition is invoked" + }, + "details": { + "name": "SetAutoFocusScreenPosition" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "GetFNumber", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetFNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetFNumber is invoked" + }, + "details": { + "name": "GetFNumber" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetApertureFOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetApertureFOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetApertureFOverride is invoked" + }, + "details": { + "name": "SetApertureFOverride" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEnabled is invoked" + }, + "details": { + "name": "SetEnabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetAutoFocusScreenPositionOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetAutoFocusScreenPositionOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetAutoFocusScreenPositionOverride is invoked" + }, + "details": { + "name": "SetAutoFocusScreenPositionOverride" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetQualityLevelOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetQualityLevelOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetQualityLevelOverride is invoked" + }, + "details": { + "name": "GetQualityLevelOverride" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetAutoFocusSpeedOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetAutoFocusSpeedOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetAutoFocusSpeedOverride is invoked" + }, + "details": { + "name": "SetAutoFocusSpeedOverride" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetEnableAutoFocusOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEnableAutoFocusOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEnableAutoFocusOverride is invoked" + }, + "details": { + "name": "GetEnableAutoFocusOverride" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetEnableDebugColoring", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEnableDebugColoring" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEnableDebugColoring is invoked" + }, + "details": { + "name": "SetEnableDebugColoring" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetFocusDistanceOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetFocusDistanceOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetFocusDistanceOverride is invoked" + }, + "details": { + "name": "SetFocusDistanceOverride" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetEnableAutoFocus", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEnableAutoFocus" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEnableAutoFocus is invoked" + }, + "details": { + "name": "GetEnableAutoFocus" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetApertureF", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetApertureF" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetApertureF is invoked" + }, + "details": { + "name": "SetApertureF" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetCameraEntityIdOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetCameraEntityIdOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetCameraEntityIdOverride is invoked" + }, + "details": { + "name": "SetCameraEntityIdOverride" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEnabled is invoked" + }, + "details": { + "name": "GetEnabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetFocusDistance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetFocusDistance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetFocusDistance is invoked" + }, + "details": { + "name": "GetFocusDistance" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetEnabledOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEnabledOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEnabledOverride is invoked" + }, + "details": { + "name": "GetEnabledOverride" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetCameraEntityId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCameraEntityId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCameraEntityId is invoked" + }, + "details": { + "name": "GetCameraEntityId" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetAutoFocusScreenPositionOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAutoFocusScreenPositionOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAutoFocusScreenPositionOverride is invoked" + }, + "details": { + "name": "GetAutoFocusScreenPositionOverride" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetAutoFocusSpeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAutoFocusSpeed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAutoFocusSpeed is invoked" + }, + "details": { + "name": "GetAutoFocusSpeed" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetEnabledOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEnabledOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEnabledOverride is invoked" + }, + "details": { + "name": "SetEnabledOverride" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetAutoFocusSensitivity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAutoFocusSensitivity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAutoFocusSensitivity is invoked" + }, + "details": { + "name": "GetAutoFocusSensitivity" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetAutoFocusDelayOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAutoFocusDelayOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAutoFocusDelayOverride is invoked" + }, + "details": { + "name": "GetAutoFocusDelayOverride" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetApertureF", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetApertureF" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetApertureF is invoked" + }, + "details": { + "name": "GetApertureF" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetApertureFOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetApertureFOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetApertureFOverride is invoked" + }, + "details": { + "name": "GetApertureFOverride" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetAutoFocusSensitivityOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetAutoFocusSensitivityOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetAutoFocusSensitivityOverride is invoked" + }, + "details": { + "name": "SetAutoFocusSensitivityOverride" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetQualityLevelOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetQualityLevelOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetQualityLevelOverride is invoked" + }, + "details": { + "name": "SetQualityLevelOverride" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetFocusDistanceOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetFocusDistanceOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetFocusDistanceOverride is invoked" + }, + "details": { + "name": "GetFocusDistanceOverride" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetAutoFocusSpeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetAutoFocusSpeed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetAutoFocusSpeed is invoked" + }, + "details": { + "name": "SetAutoFocusSpeed" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetEnableAutoFocusOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEnableAutoFocusOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEnableAutoFocusOverride is invoked" + }, + "details": { + "name": "SetEnableAutoFocusOverride" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetQualityLevel", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetQualityLevel" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetQualityLevel is invoked" + }, + "details": { + "name": "GetQualityLevel" + }, + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "GetAutoFocusSensitivityOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAutoFocusSensitivityOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAutoFocusSensitivityOverride is invoked" + }, + "details": { + "name": "GetAutoFocusSensitivityOverride" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetEnableDebugColoringOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEnableDebugColoringOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEnableDebugColoringOverride is invoked" + }, + "details": { + "name": "SetEnableDebugColoringOverride" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetFNumber", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetFNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetFNumber is invoked" + }, + "details": { + "name": "SetFNumber" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetCameraEntityIdOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCameraEntityIdOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCameraEntityIdOverride is invoked" + }, + "details": { + "name": "GetCameraEntityIdOverride" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetEnableAutoFocus", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEnableAutoFocus" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEnableAutoFocus is invoked" + }, + "details": { + "name": "SetEnableAutoFocus" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/DirectionalLightRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/DirectionalLightRequestBus.names new file mode 100644 index 0000000000..40b3627894 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/DirectionalLightRequestBus.names @@ -0,0 +1,764 @@ +{ + "entries": [ + { + "key": "DirectionalLightRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "DirectionalLightRequestBus" + }, + "methods": [ + { + "key": "GetShadowBias", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetShadowBias" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetShadowBias is invoked" + }, + "details": { + "name": "GetShadowBias" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetAngularDiameter", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetAngularDiameter" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetAngularDiameter is invoked" + }, + "details": { + "name": "SetAngularDiameter" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetShadowFarClipDistance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetShadowFarClipDistance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetShadowFarClipDistance is invoked" + }, + "details": { + "name": "GetShadowFarClipDistance" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetShadowBias", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetShadowBias" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetShadowBias is invoked" + }, + "details": { + "name": "SetShadowBias" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetIntensity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetIntensity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetIntensity is invoked" + }, + "details": { + "name": "SetIntensity" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetSplitRatio", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSplitRatio" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSplitRatio is invoked" + }, + "details": { + "name": "SetSplitRatio" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetFilteringSampleCount", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetFilteringSampleCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetFilteringSampleCount is invoked" + }, + "details": { + "name": "GetFilteringSampleCount" + }, + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "GetShadowFilterMethod", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetShadowFilterMethod" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetShadowFilterMethod is invoked" + }, + "details": { + "name": "GetShadowFilterMethod" + }, + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "GetCameraEntityId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCameraEntityId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCameraEntityId is invoked" + }, + "details": { + "name": "GetCameraEntityId" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetDebugColoringEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetDebugColoringEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetDebugColoringEnabled is invoked" + }, + "details": { + "name": "SetDebugColoringEnabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetDebugColoringEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetDebugColoringEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetDebugColoringEnabled is invoked" + }, + "details": { + "name": "GetDebugColoringEnabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetViewFrustumCorrectionEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetViewFrustumCorrectionEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetViewFrustumCorrectionEnabled is invoked" + }, + "details": { + "name": "GetViewFrustumCorrectionEnabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetViewFrustumCorrectionEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetViewFrustumCorrectionEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetViewFrustumCorrectionEnabled is invoked" + }, + "details": { + "name": "SetViewFrustumCorrectionEnabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetGroundHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetGroundHeight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetGroundHeight is invoked" + }, + "details": { + "name": "SetGroundHeight" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetShadowReceiverPlaneBiasEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetShadowReceiverPlaneBiasEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetShadowReceiverPlaneBiasEnabled is invoked" + }, + "details": { + "name": "GetShadowReceiverPlaneBiasEnabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetShadowmapSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetShadowmapSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetShadowmapSize is invoked" + }, + "details": { + "name": "SetShadowmapSize" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "SetShadowFarClipDistance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetShadowFarClipDistance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetShadowFarClipDistance is invoked" + }, + "details": { + "name": "SetShadowFarClipDistance" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetCameraEntityId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetCameraEntityId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetCameraEntityId is invoked" + }, + "details": { + "name": "SetCameraEntityId" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetColor is invoked" + }, + "details": { + "name": "GetColor" + }, + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "SetSplitAutomatic", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSplitAutomatic" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSplitAutomatic is invoked" + }, + "details": { + "name": "SetSplitAutomatic" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetCascadeFarDepth", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetCascadeFarDepth" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetCascadeFarDepth is invoked" + }, + "details": { + "name": "SetCascadeFarDepth" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "GetSplitAutomatic", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSplitAutomatic" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSplitAutomatic is invoked" + }, + "details": { + "name": "GetSplitAutomatic" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetGroundHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetGroundHeight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetGroundHeight is invoked" + }, + "details": { + "name": "GetGroundHeight" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetCascadeCount", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetCascadeCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetCascadeCount is invoked" + }, + "details": { + "name": "SetCascadeCount" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "SetFilteringSampleCount", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetFilteringSampleCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetFilteringSampleCount is invoked" + }, + "details": { + "name": "SetFilteringSampleCount" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "GetCascadeCount", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCascadeCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCascadeCount is invoked" + }, + "details": { + "name": "GetCascadeCount" + }, + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "GetIntensity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetIntensity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetIntensity is invoked" + }, + "details": { + "name": "GetIntensity" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetShadowmapSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetShadowmapSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetShadowmapSize is invoked" + }, + "details": { + "name": "GetShadowmapSize" + }, + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "GetAngularDiameter", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAngularDiameter" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAngularDiameter is invoked" + }, + "details": { + "name": "GetAngularDiameter" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetShadowFilterMethod", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetShadowFilterMethod" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetShadowFilterMethod is invoked" + }, + "details": { + "name": "SetShadowFilterMethod" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "SetShadowReceiverPlaneBiasEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetShadowReceiverPlaneBiasEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetShadowReceiverPlaneBiasEnabled is invoked" + }, + "details": { + "name": "SetShadowReceiverPlaneBiasEnabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetSplitRatio", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSplitRatio" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSplitRatio is invoked" + }, + "details": { + "name": "GetSplitRatio" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetCascadeFarDepth", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCascadeFarDepth" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCascadeFarDepth is invoked" + }, + "details": { + "name": "GetCascadeFarDepth" + }, + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "SetColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetColor is invoked" + }, + "details": { + "name": "SetColor" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/DiskShapeComponentRequestsBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/DiskShapeComponentRequestsBus.names new file mode 100644 index 0000000000..ad7012b470 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/DiskShapeComponentRequestsBus.names @@ -0,0 +1,81 @@ +{ + "entries": [ + { + "key": "DiskShapeComponentRequestsBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "DiskShapeComponentRequestsBus" + }, + "methods": [ + { + "key": "GetDiskConfiguration", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetDiskConfiguration" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetDiskConfiguration is invoked" + }, + "details": { + "name": "GetDiskConfiguration" + }, + "results": [ + { + "typeid": "{24EC2919-F198-4871-8404-F6DE8A16275E}", + "details": { + "name": "Configuration", + "tooltip": "Disk shape configuration parameters" + } + } + ] + }, + { + "key": "SetRadius", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetRadius" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetRadius is invoked" + }, + "details": { + "name": "SetRadius" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetRadius", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetRadius" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetRadius is invoked" + }, + "details": { + "name": "GetRadius" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/DitherGradientRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/DitherGradientRequestBus.names new file mode 100644 index 0000000000..87a65a50e9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/DitherGradientRequestBus.names @@ -0,0 +1,212 @@ +{ + "entries": [ + { + "key": "DitherGradientRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "DitherGradientRequestBus" + }, + "methods": [ + { + "key": "GetPatternType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPatternType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPatternType is invoked" + }, + "details": { + "name": "GetPatternType" + }, + "results": [ + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "unsigned char" + } + } + ] + }, + { + "key": "SetPatternType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetPatternType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetPatternType is invoked" + }, + "details": { + "name": "SetPatternType" + }, + "params": [ + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "unsigned char" + } + } + ] + }, + { + "key": "SetPatternOffset", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetPatternOffset" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetPatternOffset is invoked" + }, + "details": { + "name": "SetPatternOffset" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetPatternOffset", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPatternOffset" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPatternOffset is invoked" + }, + "details": { + "name": "GetPatternOffset" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetPointsPerUnit", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPointsPerUnit" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPointsPerUnit is invoked" + }, + "details": { + "name": "GetPointsPerUnit" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetPointsPerUnit", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetPointsPerUnit" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetPointsPerUnit is invoked" + }, + "details": { + "name": "SetPointsPerUnit" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetUseSystemPointsPerUnit", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetUseSystemPointsPerUnit" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetUseSystemPointsPerUnit is invoked" + }, + "details": { + "name": "SetUseSystemPointsPerUnit" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetUseSystemPointsPerUnit", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetUseSystemPointsPerUnit" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetUseSystemPointsPerUnit is invoked" + }, + "details": { + "name": "GetUseSystemPointsPerUnit" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetGradientSampler", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetGradientSampler" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetGradientSampler is invoked" + }, + "details": { + "name": "GetGradientSampler" + }, + "results": [ + { + "typeid": "{3768D3A6-BF70-4ABC-B4EC-73C75A886916}", + "details": { + "name": "Gradient Sampler" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorCameraRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorCameraRequestBus.names new file mode 100644 index 0000000000..cbc3fcc40e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorCameraRequestBus.names @@ -0,0 +1,120 @@ +{ + "entries": [ + { + "key": "EditorCameraRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Editor Camera", + "category": "Editor" + }, + "methods": [ + { + "key": "SetViewFromEntityPerspective", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set View From Entity Perspective" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set View From Entity Perspective is invoked" + }, + "details": { + "name": "Set View From Entity Perspective" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetViewAndMovementLockFromEntityPerspective", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set View And Movement Lock From Entity Perspective" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set View And Movement Lock From Entity Perspective is invoked" + }, + "details": { + "name": "Set View And Movement Lock From Entity Perspective" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Lock Camera Movement" + } + } + ] + }, + { + "key": "GetCurrentViewEntityId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Current View Entity Id" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Current View Entity Id is invoked" + }, + "details": { + "name": "Get Current View Entity Id" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetActiveCameraPosition", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Active Camera Position" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Active Camera Position is invoked" + }, + "details": { + "name": "Get Active Camera Position" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Success" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorCameraViewRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorCameraViewRequestBus.names new file mode 100644 index 0000000000..e24bf3f6d2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorCameraViewRequestBus.names @@ -0,0 +1,28 @@ +{ + "entries": [ + { + "key": "EditorCameraViewRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "EditorCameraViewRequestBus" + }, + "methods": [ + { + "key": "ToggleCameraAsActiveView", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToggleCameraAsActiveView" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToggleCameraAsActiveView is invoked" + }, + "details": { + "name": "ToggleCameraAsActiveView" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorEntityAPIBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorEntityAPIBus.names new file mode 100644 index 0000000000..590311828a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorEntityAPIBus.names @@ -0,0 +1,125 @@ +{ + "entries": [ + { + "key": "EditorEntityAPIBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "EditorEntityAPIBus" + }, + "methods": [ + { + "key": "SetVisibilityState", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetVisibilityState" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetVisibilityState is invoked" + }, + "details": { + "name": "SetVisibilityState" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetLockState", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetLockState" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetLockState is invoked" + }, + "details": { + "name": "SetLockState" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetStartStatus", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetStartStatus" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetStartStatus is invoked" + }, + "details": { + "name": "SetStartStatus" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetName" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetName is invoked" + }, + "details": { + "name": "SetName" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetParent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetParent" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetParent is invoked" + }, + "details": { + "name": "SetParent" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorEntityContextRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorEntityContextRequestBus.names new file mode 100644 index 0000000000..6071cd821c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorEntityContextRequestBus.names @@ -0,0 +1,36 @@ +{ + "entries": [ + { + "key": "EditorEntityContextRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "EditorEntityContextRequestBus" + }, + "methods": [ + { + "key": "GetEditorEntityContextId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEditorEntityContextId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEditorEntityContextId is invoked" + }, + "details": { + "name": "GetEditorEntityContextId" + }, + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorEntityInfoRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorEntityInfoRequestBus.names new file mode 100644 index 0000000000..955cee31e7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorEntityInfoRequestBus.names @@ -0,0 +1,253 @@ +{ + "entries": [ + { + "key": "EditorEntityInfoRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "EditorEntityInfoRequestBus" + }, + "methods": [ + { + "key": "GetName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetName" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetName is invoked" + }, + "details": { + "name": "GetName" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "IsVisible", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsVisible" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsVisible is invoked" + }, + "details": { + "name": "IsVisible" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetChildIndex", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetChildIndex" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetChildIndex is invoked" + }, + "details": { + "name": "GetChildIndex" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetStartStatus", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetStartStatus" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetStartStatus is invoked" + }, + "details": { + "name": "GetStartStatus" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetChild", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetChild" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetChild is invoked" + }, + "details": { + "name": "GetChild" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetChildCount", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetChildCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetChildCount is invoked" + }, + "details": { + "name": "GetChildCount" + }, + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetChildren", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetChildren" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetChildren is invoked" + }, + "details": { + "name": "GetChildren" + }, + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "IsLocked", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsLocked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsLocked is invoked" + }, + "details": { + "name": "IsLocked" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetParent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetParent" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetParent is invoked" + }, + "details": { + "name": "GetParent" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "IsHidden", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsHidden" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsHidden is invoked" + }, + "details": { + "name": "IsHidden" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorLayerComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorLayerComponentRequestBus.names new file mode 100644 index 0000000000..820632b705 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorLayerComponentRequestBus.names @@ -0,0 +1,80 @@ +{ + "entries": [ + { + "key": "EditorLayerComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "EditorLayerComponentRequestBus" + }, + "methods": [ + { + "key": "SetVisibility", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetVisibility" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetVisibility is invoked" + }, + "details": { + "name": "SetVisibility" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetLayerColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetLayerColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetLayerColor is invoked" + }, + "details": { + "name": "SetLayerColor" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "GetColorPropertyValue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetColorPropertyValue" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetColorPropertyValue is invoked" + }, + "details": { + "name": "GetColorPropertyValue" + }, + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorLayerTrackViewRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorLayerTrackViewRequestBus.names new file mode 100644 index 0000000000..6f7bf51a14 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorLayerTrackViewRequestBus.names @@ -0,0 +1,654 @@ +{ + "entries": [ + { + "key": "EditorLayerTrackViewRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "EditorLayerTrackViewRequestBus" + }, + "methods": [ + { + "key": "NewSequence", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NewSequence" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NewSequence is invoked" + }, + "details": { + "name": "NewSequence" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetRecording", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetRecording" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetRecording is invoked" + }, + "details": { + "name": "SetRecording" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetNumSequences", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNumSequences" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNumSequences is invoked" + }, + "details": { + "name": "GetNumSequences" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetSequenceName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSequenceName" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSequenceName is invoked" + }, + "details": { + "name": "GetSequenceName" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetSequenceTimeRange", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSequenceTimeRange" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSequenceTimeRange is invoked" + }, + "details": { + "name": "GetSequenceTimeRange" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ], + "results": [ + { + "typeid": "{515CF4CF-4992-4139-BDE5-42A887432B45}", + "details": { + "name": "Range" + } + } + ] + }, + { + "key": "PlaySequence", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PlaySequence" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PlaySequence is invoked" + }, + "details": { + "name": "PlaySequence" + } + }, + { + "key": "GetNodeName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNodeName" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNodeName is invoked" + }, + "details": { + "name": "GetNodeName" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetSequenceTimeRange", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSequenceTimeRange" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSequenceTimeRange is invoked" + }, + "details": { + "name": "SetSequenceTimeRange" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "DeleteSequence", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DeleteSequence" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DeleteSequence is invoked" + }, + "details": { + "name": "DeleteSequence" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "GetKeyValue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeyValue" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeyValue is invoked" + }, + "details": { + "name": "GetKeyValue" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ], + "results": [ + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "any" + } + } + ] + }, + { + "key": "StopSequence", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke StopSequence" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after StopSequence is invoked" + }, + "details": { + "name": "StopSequence" + } + }, + { + "key": "AddSelectedEntities", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddSelectedEntities" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddSelectedEntities is invoked" + }, + "details": { + "name": "AddSelectedEntities" + } + }, + { + "key": "GetNumTrackKeys", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNumTrackKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNumTrackKeys is invoked" + }, + "details": { + "name": "GetNumTrackKeys" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "AddLayerNode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddLayerNode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddLayerNode is invoked" + }, + "details": { + "name": "AddLayerNode" + } + }, + { + "key": "DeleteNode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DeleteNode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DeleteNode is invoked" + }, + "details": { + "name": "DeleteNode" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "" + } + } + ] + }, + { + "key": "GetInterpolatedValue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetInterpolatedValue" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetInterpolatedValue is invoked" + }, + "details": { + "name": "GetInterpolatedValue" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ], + "results": [ + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "any" + } + } + ] + }, + { + "key": "GetNumNodes", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNumNodes" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNumNodes is invoked" + }, + "details": { + "name": "GetNumNodes" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "AddNode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddNode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddNode is invoked" + }, + "details": { + "name": "AddNode" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "AddTrack", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddTrack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddTrack is invoked" + }, + "details": { + "name": "AddTrack" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "DeleteTrack", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DeleteTrack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DeleteTrack is invoked" + }, + "details": { + "name": "DeleteTrack" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "SetCurrentSequence", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetCurrentSequence" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetCurrentSequence is invoked" + }, + "details": { + "name": "SetCurrentSequence" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "SetTime", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetTime" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetTime is invoked" + }, + "details": { + "name": "SetTime" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorReflectionProbeBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorReflectionProbeBus.names new file mode 100644 index 0000000000..78a087ae6b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorReflectionProbeBus.names @@ -0,0 +1,36 @@ +{ + "entries": [ + { + "key": "EditorReflectionProbeBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "EditorReflectionProbeBus" + }, + "methods": [ + { + "key": "BakeReflectionProbe", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BakeReflectionProbe" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BakeReflectionProbe is invoked" + }, + "details": { + "name": "BakeReflectionProbe" + }, + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorRequestBus.names new file mode 100644 index 0000000000..658dcf6369 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorRequestBus.names @@ -0,0 +1,70 @@ +{ + "entries": [ + { + "key": "EditorRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "EditorRequestBus" + }, + "methods": [ + { + "key": "RegisterCustomViewPane", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RegisterCustomViewPane" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RegisterCustomViewPane is invoked" + }, + "details": { + "name": "RegisterCustomViewPane" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{E9FB803A-2A47-4BCF-8A50-AB4C9D73AED2}", + "details": { + "name": "" + } + } + ] + }, + { + "key": "UnregisterViewPane", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke UnregisterViewPane" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after UnregisterViewPane is invoked" + }, + "details": { + "name": "UnregisterViewPane" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorToolsApplicationRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorToolsApplicationRequestBus.names new file mode 100644 index 0000000000..1734915b62 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorToolsApplicationRequestBus.names @@ -0,0 +1,246 @@ +{ + "entries": [ + { + "key": "EditorToolsApplicationRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "EditorToolsApplicationRequestBus" + }, + "methods": [ + { + "key": "Exit", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Exit" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Exit is invoked" + }, + "details": { + "name": "Exit" + } + }, + { + "key": "GetCurrentLevelName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCurrentLevelName" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCurrentLevelName is invoked" + }, + "details": { + "name": "GetCurrentLevelName" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetGameFolder", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetGameFolder" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetGameFolder is invoked" + }, + "details": { + "name": "GetGameFolder" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "CreateLevelNoPrompt", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CreateLevelNoPrompt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CreateLevelNoPrompt is invoked" + }, + "details": { + "name": "CreateLevelNoPrompt" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "OpenLevelNoPrompt", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke OpenLevelNoPrompt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after OpenLevelNoPrompt is invoked" + }, + "details": { + "name": "OpenLevelNoPrompt" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetCurrentLevelPath", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCurrentLevelPath" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCurrentLevelPath is invoked" + }, + "details": { + "name": "GetCurrentLevelPath" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "ExitNoPrompt", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ExitNoPrompt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ExitNoPrompt is invoked" + }, + "details": { + "name": "ExitNoPrompt" + } + }, + { + "key": "OpenLevel", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke OpenLevel" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after OpenLevel is invoked" + }, + "details": { + "name": "OpenLevel" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "CreateLevel", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CreateLevel" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CreateLevel is invoked" + }, + "details": { + "name": "CreateLevel" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorTransformComponentSelectionRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorTransformComponentSelectionRequestBus.names new file mode 100644 index 0000000000..61641cf327 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/EditorTransformComponentSelectionRequestBus.names @@ -0,0 +1,285 @@ +{ + "entries": [ + { + "key": "EditorTransformComponentSelectionRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Editor Transform Component Selection", + "category": "Editor" + }, + "methods": [ + { + "key": "CopyTranslationToSelectedEntitiesGroup", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Copy Translation To Selected Entities Group" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Copy Translation To Selected Entities Group is invoked" + }, + "details": { + "name": "Copy Translation To Selected Entities Group" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Translation" + } + } + ] + }, + { + "key": "CopyOrientationToSelectedEntitiesIndividual", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Copy Orientation To Selected Entities Individual" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Copy Orientation To Selected Entities Individual is invoked" + }, + "details": { + "name": "Copy Orientation To Selected Entities Individual" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "CopyOrientationToSelectedEntitiesGroup", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Copy Orientation To Selected Entities Group" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Copy Orientation To Selected Entities Group is invoked" + }, + "details": { + "name": "Copy Orientation To Selected Entities Group" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "CopyTranslationToSelectedEntitiesIndividual", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Copy Translation To Selected Entities Individual" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Copy Translation To Selected Entities Individual is invoked" + }, + "details": { + "name": "Copy Translation To Selected Entities Individual" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Translation" + } + } + ] + }, + { + "key": "CopyScaleToSelectedEntitiesIndividualLocal", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Copy Scale To Selected Entities Individual Local" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Copy Scale To Selected Entities Individual Local is invoked" + }, + "details": { + "name": "Copy Scale To Selected Entities Individual Local" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "OverrideManipulatorTranslation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Override Manipulator Translation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Override Manipulator Translation is invoked" + }, + "details": { + "name": "Override Manipulator Translation" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector 3" + } + } + ] + }, + { + "key": "RefreshManipulators", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Refresh Manipulators" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Refresh Manipulators is invoked" + }, + "details": { + "name": "Refresh Manipulators" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "OverrideManipulatorOrientation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Override Manipulator Orientation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Override Manipulator Orientation is invoked" + }, + "details": { + "name": "Override Manipulator Orientation" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "GetTransformMode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Transform Mode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Transform Mode is invoked" + }, + "details": { + "name": "Get Transform Mode" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "CopyScaleToSelectedEntitiesIndividualWorld", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Copy Scale To Selected Entities Individual World" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Copy Scale To Selected Entities Individual World is invoked" + }, + "details": { + "name": "Copy Scale To Selected Entities Individual World" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetTransformMode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Transform Mode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Transform Mode is invoked" + }, + "details": { + "name": "Set Transform Mode" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "ResetTranslationForSelectedEntitiesLocal", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reset Translation For Selected Entities Local" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reset Translation For Selected Entities Local is invoked" + }, + "details": { + "name": "Reset Translation For Selected Entities Local" + } + }, + { + "key": "ResetOrientationForSelectedEntitiesLocal", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reset Orientation For Selected Entities Local" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reset Orientation For Selected Entities Local is invoked" + }, + "details": { + "name": "Reset Orientation For Selected Entities Local" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ExposureControlRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ExposureControlRequestBus.names new file mode 100644 index 0000000000..89ecca21dc --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ExposureControlRequestBus.names @@ -0,0 +1,718 @@ +{ + "entries": [ + { + "key": "ExposureControlRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "ExposureControlRequestBus" + }, + "methods": [ + { + "key": "SetEyeAdaptationSpeedDownOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEyeAdaptationSpeedDownOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEyeAdaptationSpeedDownOverride is invoked" + }, + "details": { + "name": "SetEyeAdaptationSpeedDownOverride" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEnabled is invoked" + }, + "details": { + "name": "GetEnabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetEnabledOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEnabledOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEnabledOverride is invoked" + }, + "details": { + "name": "SetEnabledOverride" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetManualCompensation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetManualCompensation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetManualCompensation is invoked" + }, + "details": { + "name": "SetManualCompensation" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetEyeAdaptationSpeedDown", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEyeAdaptationSpeedDown" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEyeAdaptationSpeedDown is invoked" + }, + "details": { + "name": "SetEyeAdaptationSpeedDown" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetExposureControlTypeOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetExposureControlTypeOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetExposureControlTypeOverride is invoked" + }, + "details": { + "name": "GetExposureControlTypeOverride" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetHeatmapEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetHeatmapEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetHeatmapEnabled is invoked" + }, + "details": { + "name": "GetHeatmapEnabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetEyeAdaptationSpeedUpOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEyeAdaptationSpeedUpOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEyeAdaptationSpeedUpOverride is invoked" + }, + "details": { + "name": "SetEyeAdaptationSpeedUpOverride" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetExposureControlType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetExposureControlType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetExposureControlType is invoked" + }, + "details": { + "name": "SetExposureControlType" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEnabled is invoked" + }, + "details": { + "name": "SetEnabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetExposureControlType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetExposureControlType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetExposureControlType is invoked" + }, + "details": { + "name": "GetExposureControlType" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetEyeAdaptationExposureMax", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEyeAdaptationExposureMax" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEyeAdaptationExposureMax is invoked" + }, + "details": { + "name": "SetEyeAdaptationExposureMax" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetEyeAdaptationSpeedDownOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEyeAdaptationSpeedDownOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEyeAdaptationSpeedDownOverride is invoked" + }, + "details": { + "name": "GetEyeAdaptationSpeedDownOverride" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetManualCompensationOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetManualCompensationOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetManualCompensationOverride is invoked" + }, + "details": { + "name": "GetManualCompensationOverride" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetHeatmapEnabledOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetHeatmapEnabledOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetHeatmapEnabledOverride is invoked" + }, + "details": { + "name": "GetHeatmapEnabledOverride" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetEyeAdaptationSpeedUp", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEyeAdaptationSpeedUp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEyeAdaptationSpeedUp is invoked" + }, + "details": { + "name": "SetEyeAdaptationSpeedUp" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetEyeAdaptationSpeedUpOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEyeAdaptationSpeedUpOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEyeAdaptationSpeedUpOverride is invoked" + }, + "details": { + "name": "GetEyeAdaptationSpeedUpOverride" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetEyeAdaptationExposureMinOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEyeAdaptationExposureMinOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEyeAdaptationExposureMinOverride is invoked" + }, + "details": { + "name": "GetEyeAdaptationExposureMinOverride" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetEyeAdaptationExposureMaxOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEyeAdaptationExposureMaxOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEyeAdaptationExposureMaxOverride is invoked" + }, + "details": { + "name": "GetEyeAdaptationExposureMaxOverride" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetEnabledOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEnabledOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEnabledOverride is invoked" + }, + "details": { + "name": "GetEnabledOverride" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetExposureControlTypeOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetExposureControlTypeOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetExposureControlTypeOverride is invoked" + }, + "details": { + "name": "SetExposureControlTypeOverride" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetEyeAdaptationExposureMin", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEyeAdaptationExposureMin" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEyeAdaptationExposureMin is invoked" + }, + "details": { + "name": "GetEyeAdaptationExposureMin" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetManualCompensation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetManualCompensation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetManualCompensation is invoked" + }, + "details": { + "name": "GetManualCompensation" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetEyeAdaptationExposureMinOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEyeAdaptationExposureMinOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEyeAdaptationExposureMinOverride is invoked" + }, + "details": { + "name": "SetEyeAdaptationExposureMinOverride" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetManualCompensationOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetManualCompensationOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetManualCompensationOverride is invoked" + }, + "details": { + "name": "SetManualCompensationOverride" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetEyeAdaptationSpeedDown", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEyeAdaptationSpeedDown" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEyeAdaptationSpeedDown is invoked" + }, + "details": { + "name": "GetEyeAdaptationSpeedDown" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetEyeAdaptationSpeedUp", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEyeAdaptationSpeedUp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEyeAdaptationSpeedUp is invoked" + }, + "details": { + "name": "GetEyeAdaptationSpeedUp" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetEyeAdaptationExposureMin", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEyeAdaptationExposureMin" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEyeAdaptationExposureMin is invoked" + }, + "details": { + "name": "SetEyeAdaptationExposureMin" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetHeatmapEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetHeatmapEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetHeatmapEnabled is invoked" + }, + "details": { + "name": "SetHeatmapEnabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetEyeAdaptationExposureMaxOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEyeAdaptationExposureMaxOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEyeAdaptationExposureMaxOverride is invoked" + }, + "details": { + "name": "SetEyeAdaptationExposureMaxOverride" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetEyeAdaptationExposureMax", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEyeAdaptationExposureMax" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEyeAdaptationExposureMax is invoked" + }, + "details": { + "name": "GetEyeAdaptationExposureMax" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetHeatmapEnabledOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetHeatmapEnabledOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetHeatmapEnabledOverride is invoked" + }, + "details": { + "name": "SetHeatmapEnabledOverride" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/FlyCameraInputBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/FlyCameraInputBus.names new file mode 100644 index 0000000000..616cabcfb5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/FlyCameraInputBus.names @@ -0,0 +1,59 @@ +{ + "entries": [ + { + "key": "FlyCameraInputBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Fly Camera", + "category": "Camera" + }, + "methods": [ + { + "key": "SetIsEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Enabled is invoked" + }, + "details": { + "name": "Set Is Enabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Enabled" + } + } + ] + }, + { + "key": "GetIsEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Is Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Is Enabled is invoked" + }, + "details": { + "name": "Get Is Enabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Enabled" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ForceLinearDampingRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ForceLinearDampingRequestBus.names new file mode 100644 index 0000000000..46da76a5ca --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ForceLinearDampingRequestBus.names @@ -0,0 +1,58 @@ +{ + "entries": [ + { + "key": "ForceLinearDampingRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Force Linear Damping" + }, + "methods": [ + { + "key": "SetDamping", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Damping" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Damping is invoked" + }, + "details": { + "name": "Set Damping" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Damping" + } + } + ] + }, + { + "key": "GetDamping", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Damping" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Damping is invoked" + }, + "details": { + "name": "Get Damping" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Damping" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ForceLocalSpaceRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ForceLocalSpaceRequestBus.names new file mode 100644 index 0000000000..a3dd070013 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ForceLocalSpaceRequestBus.names @@ -0,0 +1,102 @@ +{ + "entries": [ + { + "key": "ForceLocalSpaceRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Force Local Space" + }, + "methods": [ + { + "key": "SetDirection", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Direction" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetDirection is invoked" + }, + "details": { + "name": "Set Direction" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Direction" + } + } + ] + }, + { + "key": "GetDirection", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Direction" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Direction is invoked" + }, + "details": { + "name": "Get Direction" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Direction" + } + } + ] + }, + { + "key": "SetMagnitude", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Magnitude" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Magnitude is invoked" + }, + "details": { + "name": "Set Magnitude" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Magnitude" + } + } + ] + }, + { + "key": "GetMagnitude", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Magnitude" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Magnitude is invoked" + }, + "details": { + "name": "Get Magnitude" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Magnitude" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ForcePointRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ForcePointRequestBus.names new file mode 100644 index 0000000000..767d9b1d35 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ForcePointRequestBus.names @@ -0,0 +1,58 @@ +{ + "entries": [ + { + "key": "ForcePointRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Force Point" + }, + "methods": [ + { + "key": "SetMagnitude", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Magnitude" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Magnitude is invoked" + }, + "details": { + "name": "Set Magnitude" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Magnitude" + } + } + ] + }, + { + "key": "GetMagnitude", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Magnitude" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Magnitude is invoked" + }, + "details": { + "name": "Get Magnitude" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Magnitude" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ForceSimpleDragRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ForceSimpleDragRequestBus.names new file mode 100644 index 0000000000..075aa1b6a4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ForceSimpleDragRequestBus.names @@ -0,0 +1,58 @@ +{ + "entries": [ + { + "key": "ForceSimpleDragRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Force Simple Drag" + }, + "methods": [ + { + "key": "SetDensity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Density" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Density is invoked" + }, + "details": { + "name": "Set Density" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Density" + } + } + ] + }, + { + "key": "GetDensity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Density" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Density is invoked" + }, + "details": { + "name": "Get Density" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Density" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ForceSplineFollowRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ForceSplineFollowRequestBus.names new file mode 100644 index 0000000000..7143fd0b7f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ForceSplineFollowRequestBus.names @@ -0,0 +1,190 @@ +{ + "entries": [ + { + "key": "ForceSplineFollowRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Force Spline Follow" + }, + "methods": [ + { + "key": "GetLookAhead", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Look Ahead" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Look Ahead is invoked" + }, + "details": { + "name": "Get Look Ahead" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Look Ahead" + } + } + ] + }, + { + "key": "SetLookAhead", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Look Ahead" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Look Ahead is invoked" + }, + "details": { + "name": "Set Look Ahead" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Look Ahead" + } + } + ] + }, + { + "key": "SetTargetSpeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Target Speed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Target Speed is invoked" + }, + "details": { + "name": "Set Target Speed" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Target Speed" + } + } + ] + }, + { + "key": "GetFrequency", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Frequency" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Frequency is invoked" + }, + "details": { + "name": "Get Frequency" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Frequency" + } + } + ] + }, + { + "key": "GetDampingRatio", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Damping Ratio" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Damping Ratio is invoked" + }, + "details": { + "name": "Get Damping Ratio" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Damping Ratio" + } + } + ] + }, + { + "key": "SetFrequency", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Frequency" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Frequency is invoked" + }, + "details": { + "name": "Set Frequency" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Frequency" + } + } + ] + }, + { + "key": "GetTargetSpeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Target Speed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Target Speed is invoked" + }, + "details": { + "name": "Get Target Speed" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Target Speed" + } + } + ] + }, + { + "key": "SetDampingRatio", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Damping Ratio" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Damping Ratio is invoked" + }, + "details": { + "name": "Set Damping Ratio" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Damping Ratio" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ForceWorldSpaceRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ForceWorldSpaceRequestBus.names new file mode 100644 index 0000000000..f9c1b2dcbe --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ForceWorldSpaceRequestBus.names @@ -0,0 +1,102 @@ +{ + "entries": [ + { + "key": "ForceWorldSpaceRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Force World Space" + }, + "methods": [ + { + "key": "SetDirection", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Direction" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Direction is invoked" + }, + "details": { + "name": "Set Direction" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Direction" + } + } + ] + }, + { + "key": "GetDirection", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Direction" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Direction is invoked" + }, + "details": { + "name": "Get Direction" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Direction" + } + } + ] + }, + { + "key": "SetMagnitude", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Magnitude" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Magnitude is invoked" + }, + "details": { + "name": "Set Magnitude" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Magnitude" + } + } + ] + }, + { + "key": "GetMagnitude", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Magnitude" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Magnitude is invoked" + }, + "details": { + "name": "Get Magnitude" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Magnitude" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/FrameCaptureRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/FrameCaptureRequestBus.names new file mode 100644 index 0000000000..6d7bcf4b37 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/FrameCaptureRequestBus.names @@ -0,0 +1,122 @@ +{ + "entries": [ + { + "key": "FrameCaptureRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "FrameCaptureRequestBus" + }, + "methods": [ + { + "key": "CaptureScreenshot", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CaptureScreenshot" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CaptureScreenshot is invoked" + }, + "details": { + "name": "CaptureScreenshot" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "CaptureScreenshotWithPreview", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CaptureScreenshotWithPreview" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CaptureScreenshotWithPreview is invoked" + }, + "details": { + "name": "CaptureScreenshotWithPreview" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "CapturePassAttachment", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CapturePassAttachment" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CapturePassAttachment is invoked" + }, + "details": { + "name": "CapturePassAttachment" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "unsigned char" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/GameEntityContextRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/GameEntityContextRequestBus.names new file mode 100644 index 0000000000..bb38d2256a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/GameEntityContextRequestBus.names @@ -0,0 +1,169 @@ +{ + "entries": [ + { + "key": "GameEntityContextRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Game Entity Context", + "category": "Game Entity" + }, + "methods": [ + { + "key": "DeactivateGameEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Deactivate Game Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Deactivate Game Entity is invoked" + }, + "details": { + "name": "Deactivate Game Entity" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetEntityName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Entity Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Entity Name is invoked" + }, + "details": { + "name": "Get Entity Name" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name" + } + } + ] + }, + { + "key": "ActivateGameEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Activate Game Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Activate Game Entity is invoked" + }, + "details": { + "name": "Activate Game Entity" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "DestroyGameEntityAndDescendants", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Destroy Game Entity And Descendants" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Destroy Game Entity And Descendants is invoked" + }, + "details": { + "name": "Destroy Game Entity And Descendants" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "DestroyGameEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Destroy Game Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Destroy Game Entity is invoked" + }, + "details": { + "name": "Destroy Game Entity" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "CreateGameEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create Game Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create Game Entity is invoked" + }, + "details": { + "name": "Create Game Entity" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Name" + } + } + ], + "results": [ + { + "typeid": "{41CC88A4-FE07-48E6-943D-998DE68AFF5C}", + "details": { + "name": "Entity", + "tooltip": "Entity" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/GradientRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/GradientRequestBus.names new file mode 100644 index 0000000000..166b973286 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/GradientRequestBus.names @@ -0,0 +1,44 @@ +{ + "entries": [ + { + "key": "GradientRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "GradientRequestBus" + }, + "methods": [ + { + "key": "GetValue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetValue" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetValue is invoked" + }, + "details": { + "name": "GetValue" + }, + "params": [ + { + "typeid": "{DC4B9269-CB3C-4071-989D-C885FB9946A5}", + "details": { + "name": "" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/GradientSurfaceDataRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/GradientSurfaceDataRequestBus.names new file mode 100644 index 0000000000..122331320f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/GradientSurfaceDataRequestBus.names @@ -0,0 +1,244 @@ +{ + "entries": [ + { + "key": "GradientSurfaceDataRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "GradientSurfaceDataRequestBus" + }, + "methods": [ + { + "key": "GetThresholdMax", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetThresholdMax" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetThresholdMax is invoked" + }, + "details": { + "name": "GetThresholdMax" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetThresholdMax", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetThresholdMax" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetThresholdMax is invoked" + }, + "details": { + "name": "SetThresholdMax" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetNumTags", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNumTags" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNumTags is invoked" + }, + "details": { + "name": "GetNumTags" + }, + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "RemoveTag", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RemoveTag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RemoveTag is invoked" + }, + "details": { + "name": "RemoveTag" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetThresholdMin", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetThresholdMin" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetThresholdMin is invoked" + }, + "details": { + "name": "GetThresholdMin" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetShapeConstraintEntityId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetShapeConstraintEntityId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetShapeConstraintEntityId is invoked" + }, + "details": { + "name": "SetShapeConstraintEntityId" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetThresholdMin", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetThresholdMin" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetThresholdMin is invoked" + }, + "details": { + "name": "SetThresholdMin" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetTag", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTag is invoked" + }, + "details": { + "name": "GetTag" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ], + "results": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + }, + { + "key": "AddTag", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddTag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddTag is invoked" + }, + "details": { + "name": "AddTag" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetShapeConstraintEntityId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetShapeConstraintEntityId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetShapeConstraintEntityId is invoked" + }, + "details": { + "name": "GetShapeConstraintEntityId" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/GradientTransformModifierRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/GradientTransformModifierRequestBus.names new file mode 100644 index 0000000000..c814d47ba7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/GradientTransformModifierRequestBus.names @@ -0,0 +1,632 @@ +{ + "entries": [ + { + "key": "GradientTransformModifierRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "GradientTransformModifierRequestBus" + }, + "methods": [ + { + "key": "SetOverrideTranslate", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetOverrideTranslate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetOverrideTranslate is invoked" + }, + "details": { + "name": "SetOverrideTranslate" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetRotate", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetRotate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetRotate is invoked" + }, + "details": { + "name": "GetRotate" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetBounds", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetBounds" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetBounds is invoked" + }, + "details": { + "name": "GetBounds" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "SetTransformType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetTransformType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetTransformType is invoked" + }, + "details": { + "name": "SetTransformType" + }, + "params": [ + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "unsigned char" + } + } + ] + }, + { + "key": "GetOverrideTranslate", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetOverrideTranslate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetOverrideTranslate is invoked" + }, + "details": { + "name": "GetOverrideTranslate" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetOverrideBounds", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetOverrideBounds" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetOverrideBounds is invoked" + }, + "details": { + "name": "GetOverrideBounds" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetRotate", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetRotate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetRotate is invoked" + }, + "details": { + "name": "SetRotate" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "SetOverrideScale", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetOverrideScale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetOverrideScale is invoked" + }, + "details": { + "name": "SetOverrideScale" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetScale", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetScale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetScale is invoked" + }, + "details": { + "name": "GetScale" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "SetScale", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetScale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetScale is invoked" + }, + "details": { + "name": "SetScale" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetIs3D", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetIs3D" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetIs3D is invoked" + }, + "details": { + "name": "GetIs3D" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetShapeReference", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetShapeReference" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetShapeReference is invoked" + }, + "details": { + "name": "SetShapeReference" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetBounds", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetBounds" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetBounds is invoked" + }, + "details": { + "name": "SetBounds" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "SetFrequencyZoom", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetFrequencyZoom" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetFrequencyZoom is invoked" + }, + "details": { + "name": "SetFrequencyZoom" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetWrappingType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetWrappingType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetWrappingType is invoked" + }, + "details": { + "name": "SetWrappingType" + }, + "params": [ + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "unsigned char" + } + } + ] + }, + { + "key": "GetShapeReference", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetShapeReference" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetShapeReference is invoked" + }, + "details": { + "name": "GetShapeReference" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetOverrideBounds", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetOverrideBounds" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetOverrideBounds is invoked" + }, + "details": { + "name": "SetOverrideBounds" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetTransformType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTransformType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTransformType is invoked" + }, + "details": { + "name": "GetTransformType" + }, + "results": [ + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "unsigned char" + } + } + ] + }, + { + "key": "GetOverrideScale", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetOverrideScale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetOverrideScale is invoked" + }, + "details": { + "name": "GetOverrideScale" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetIs3D", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetIs3D" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetIs3D is invoked" + }, + "details": { + "name": "SetIs3D" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetAllowReference", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetAllowReference" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetAllowReference is invoked" + }, + "details": { + "name": "SetAllowReference" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetTranslate", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetTranslate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetTranslate is invoked" + }, + "details": { + "name": "SetTranslate" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "SetOverrideRotate", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetOverrideRotate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetOverrideRotate is invoked" + }, + "details": { + "name": "SetOverrideRotate" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetAllowReference", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAllowReference" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAllowReference is invoked" + }, + "details": { + "name": "GetAllowReference" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetTranslate", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTranslate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTranslate is invoked" + }, + "details": { + "name": "GetTranslate" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetOverrideRotate", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetOverrideRotate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetOverrideRotate is invoked" + }, + "details": { + "name": "GetOverrideRotate" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetFrequencyZoom", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetFrequencyZoom" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetFrequencyZoom is invoked" + }, + "details": { + "name": "GetFrequencyZoom" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetWrappingType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetWrappingType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetWrappingType is invoked" + }, + "details": { + "name": "GetWrappingType" + }, + "results": [ + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "unsigned char" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/GraphControllerRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/GraphControllerRequestBus.names new file mode 100644 index 0000000000..8622a204c2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/GraphControllerRequestBus.names @@ -0,0 +1,259 @@ +{ + "entries": [ + { + "key": "GraphControllerRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "GraphControllerRequestBus" + }, + "methods": [ + { + "key": "RemoveConnection", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RemoveConnection" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RemoveConnection is invoked" + }, + "details": { + "name": "RemoveConnection" + }, + "params": [ + { + "typeid": "{B51CFD94-318D-5E30-BE18-6ACC6CFCC2EC}", + "details": { + "name": "AZStd::shared_ptr" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "AddConnection", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddConnection" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddConnection is invoked" + }, + "details": { + "name": "AddConnection" + }, + "params": [ + { + "typeid": "{444B2C18-8D7E-5B43-9524-0C9F6C351542}", + "details": { + "name": "AZStd::shared_ptr" + } + }, + { + "typeid": "{444B2C18-8D7E-5B43-9524-0C9F6C351542}", + "details": { + "name": "AZStd::shared_ptr" + } + } + ], + "results": [ + { + "typeid": "{B51CFD94-318D-5E30-BE18-6ACC6CFCC2EC}", + "details": { + "name": "AZStd::shared_ptr" + } + } + ] + }, + { + "key": "WrapNode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke WrapNode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after WrapNode is invoked" + }, + "details": { + "name": "WrapNode" + }, + "params": [ + { + "typeid": "{9A6CD726-97FC-54C4-A34B-5996F6948697}", + "details": { + "name": "AZStd::shared_ptr" + } + }, + { + "typeid": "{9A6CD726-97FC-54C4-A34B-5996F6948697}", + "details": { + "name": "AZStd::shared_ptr" + } + } + ] + }, + { + "key": "AddConnectionBySlotId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddConnectionBySlotId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddConnectionBySlotId is invoked" + }, + "details": { + "name": "AddConnectionBySlotId" + }, + "params": [ + { + "typeid": "{9A6CD726-97FC-54C4-A34B-5996F6948697}", + "details": { + "name": "AZStd::shared_ptr" + } + }, + { + "typeid": "{D24130B9-89C4-4EAA-9A5D-3469B05C5065}", + "details": { + "name": "SlotIdData" + } + }, + { + "typeid": "{9A6CD726-97FC-54C4-A34B-5996F6948697}", + "details": { + "name": "AZStd::shared_ptr" + } + }, + { + "typeid": "{D24130B9-89C4-4EAA-9A5D-3469B05C5065}", + "details": { + "name": "SlotIdData" + } + } + ], + "results": [ + { + "typeid": "{B51CFD94-318D-5E30-BE18-6ACC6CFCC2EC}", + "details": { + "name": "AZStd::shared_ptr" + } + } + ] + }, + { + "key": "AddNode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddNode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddNode is invoked" + }, + "details": { + "name": "AddNode" + }, + "params": [ + { + "typeid": "{9A6CD726-97FC-54C4-A34B-5996F6948697}", + "details": { + "name": "AZStd::shared_ptr" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "RemoveNode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RemoveNode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RemoveNode is invoked" + }, + "details": { + "name": "RemoveNode" + }, + "params": [ + { + "typeid": "{9A6CD726-97FC-54C4-A34B-5996F6948697}", + "details": { + "name": "AZStd::shared_ptr" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "ExtendSlot", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ExtendSlot" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ExtendSlot is invoked" + }, + "details": { + "name": "ExtendSlot" + }, + "params": [ + { + "typeid": "{9A6CD726-97FC-54C4-A34B-5996F6948697}", + "details": { + "name": "AZStd::shared_ptr" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{D24130B9-89C4-4EAA-9A5D-3469B05C5065}", + "details": { + "name": "SlotIdData" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/GraphManagerRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/GraphManagerRequestBus.names new file mode 100644 index 0000000000..13ba4a2b7c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/GraphManagerRequestBus.names @@ -0,0 +1,45 @@ +{ + "entries": [ + { + "key": "GraphManagerRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "GraphManagerRequestBus" + }, + "methods": [ + { + "key": "GetGraph", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetGraph" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetGraph is invoked" + }, + "details": { + "name": "GetGraph" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{E51F56F8-D4E9-5C9F-AE6F-3F9C5D28F4C6}", + "details": { + "name": "" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/GridComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/GridComponentRequestBus.names new file mode 100644 index 0000000000..d30ad4cbc3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/GridComponentRequestBus.names @@ -0,0 +1,278 @@ +{ + "entries": [ + { + "key": "GridComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "GridComponentRequestBus" + }, + "methods": [ + { + "key": "SetSecondaryColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSecondaryColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSecondaryColor is invoked" + }, + "details": { + "name": "SetSecondaryColor" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "GetPrimarySpacing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPrimarySpacing" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPrimarySpacing is invoked" + }, + "details": { + "name": "GetPrimarySpacing" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetSecondaryColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSecondaryColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSecondaryColor is invoked" + }, + "details": { + "name": "GetSecondaryColor" + }, + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "SetAxisColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetAxisColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetAxisColor is invoked" + }, + "details": { + "name": "SetAxisColor" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "SetPrimaryColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetPrimaryColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetPrimaryColor is invoked" + }, + "details": { + "name": "SetPrimaryColor" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "GetAxisColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAxisColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAxisColor is invoked" + }, + "details": { + "name": "GetAxisColor" + }, + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "SetPrimarySpacing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetPrimarySpacing" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetPrimarySpacing is invoked" + }, + "details": { + "name": "SetPrimarySpacing" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetSecondarySpacing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSecondarySpacing" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSecondarySpacing is invoked" + }, + "details": { + "name": "GetSecondarySpacing" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetSecondarySpacing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSecondarySpacing" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSecondarySpacing is invoked" + }, + "details": { + "name": "SetSecondarySpacing" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSize is invoked" + }, + "details": { + "name": "SetSize" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetPrimaryColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPrimaryColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPrimaryColor is invoked" + }, + "details": { + "name": "GetPrimaryColor" + }, + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/HDRColorGradingRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/HDRColorGradingRequestBus.names new file mode 100644 index 0000000000..906dd005cc --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/HDRColorGradingRequestBus.names @@ -0,0 +1,1510 @@ +{ + "entries": [ + { + "key": "HDRColorGradingRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "HDRColorGradingRequestBus" + }, + "methods": [ + { + "key": "SetCustomMinExposure", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetCustomMinExposure" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetCustomMinExposure is invoked" + }, + "details": { + "name": "SetCustomMinExposure" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetFinalAdjustmentWeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetFinalAdjustmentWeight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetFinalAdjustmentWeight is invoked" + }, + "details": { + "name": "GetFinalAdjustmentWeight" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetSmhHighlightsColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSmhHighlightsColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSmhHighlightsColor is invoked" + }, + "details": { + "name": "SetSmhHighlightsColor" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "SetLutResolution", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetLutResolution" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetLutResolution is invoked" + }, + "details": { + "name": "SetLutResolution" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetSmhMidtonesColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSmhMidtonesColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSmhMidtonesColor is invoked" + }, + "details": { + "name": "GetSmhMidtonesColor" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetSmhHighlightsEnd", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSmhHighlightsEnd" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSmhHighlightsEnd is invoked" + }, + "details": { + "name": "GetSmhHighlightsEnd" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetCustomMinExposure", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCustomMinExposure" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCustomMinExposure is invoked" + }, + "details": { + "name": "GetCustomMinExposure" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetSmhHighlightsEnd", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSmhHighlightsEnd" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSmhHighlightsEnd is invoked" + }, + "details": { + "name": "SetSmhHighlightsEnd" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetChannelMixingGreen", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetChannelMixingGreen" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetChannelMixingGreen is invoked" + }, + "details": { + "name": "GetChannelMixingGreen" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "SetSmhShadowsEnd", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSmhShadowsEnd" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSmhShadowsEnd is invoked" + }, + "details": { + "name": "SetSmhShadowsEnd" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetSmhWeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSmhWeight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSmhWeight is invoked" + }, + "details": { + "name": "SetSmhWeight" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetShaperPresetType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetShaperPresetType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetShaperPresetType is invoked" + }, + "details": { + "name": "SetShaperPresetType" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetShaperPresetType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetShaperPresetType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetShaperPresetType is invoked" + }, + "details": { + "name": "GetShaperPresetType" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEnabled is invoked" + }, + "details": { + "name": "SetEnabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetSmhShadowsColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSmhShadowsColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSmhShadowsColor is invoked" + }, + "details": { + "name": "GetSmhShadowsColor" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetColorGradingPreSaturation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetColorGradingPreSaturation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetColorGradingPreSaturation is invoked" + }, + "details": { + "name": "GetColorGradingPreSaturation" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetSplitToneHighlightsColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSplitToneHighlightsColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSplitToneHighlightsColor is invoked" + }, + "details": { + "name": "GetSplitToneHighlightsColor" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetColorGradingHueShift", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetColorGradingHueShift" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetColorGradingHueShift is invoked" + }, + "details": { + "name": "GetColorGradingHueShift" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetColorGradingExposure", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetColorGradingExposure" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetColorGradingExposure is invoked" + }, + "details": { + "name": "SetColorGradingExposure" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetColorFilterSwatch", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetColorFilterSwatch" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetColorFilterSwatch is invoked" + }, + "details": { + "name": "GetColorFilterSwatch" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetWhiteBalanceTint", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetWhiteBalanceTint" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetWhiteBalanceTint is invoked" + }, + "details": { + "name": "GetWhiteBalanceTint" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetColorGradingExposure", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetColorGradingExposure" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetColorGradingExposure is invoked" + }, + "details": { + "name": "GetColorGradingExposure" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetSmhWeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSmhWeight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSmhWeight is invoked" + }, + "details": { + "name": "GetSmhWeight" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetSmhMidtonesColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSmhMidtonesColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSmhMidtonesColor is invoked" + }, + "details": { + "name": "SetSmhMidtonesColor" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "SetChannelMixingBlue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetChannelMixingBlue" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetChannelMixingBlue is invoked" + }, + "details": { + "name": "SetChannelMixingBlue" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetGenerateLut", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetGenerateLut" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetGenerateLut is invoked" + }, + "details": { + "name": "GetGenerateLut" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetSplitToneBalance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSplitToneBalance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSplitToneBalance is invoked" + }, + "details": { + "name": "SetSplitToneBalance" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetLutResolution", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetLutResolution" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetLutResolution is invoked" + }, + "details": { + "name": "GetLutResolution" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetColorGradingContrast", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetColorGradingContrast" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetColorGradingContrast is invoked" + }, + "details": { + "name": "SetColorGradingContrast" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetWhiteBalanceKelvin", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetWhiteBalanceKelvin" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetWhiteBalanceKelvin is invoked" + }, + "details": { + "name": "GetWhiteBalanceKelvin" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetSplitToneHighlightsColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSplitToneHighlightsColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSplitToneHighlightsColor is invoked" + }, + "details": { + "name": "SetSplitToneHighlightsColor" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetSmhShadowsEnd", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSmhShadowsEnd" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSmhShadowsEnd is invoked" + }, + "details": { + "name": "GetSmhShadowsEnd" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetSmhHighlightsStart", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSmhHighlightsStart" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSmhHighlightsStart is invoked" + }, + "details": { + "name": "SetSmhHighlightsStart" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetColorFilterSwatch", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetColorFilterSwatch" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetColorFilterSwatch is invoked" + }, + "details": { + "name": "SetColorFilterSwatch" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetColorGradingFilterIntensity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetColorGradingFilterIntensity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetColorGradingFilterIntensity is invoked" + }, + "details": { + "name": "GetColorGradingFilterIntensity" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetWhiteBalanceWeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetWhiteBalanceWeight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetWhiteBalanceWeight is invoked" + }, + "details": { + "name": "SetWhiteBalanceWeight" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetSmhShadowsStart", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSmhShadowsStart" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSmhShadowsStart is invoked" + }, + "details": { + "name": "SetSmhShadowsStart" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetChannelMixingRed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetChannelMixingRed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetChannelMixingRed is invoked" + }, + "details": { + "name": "GetChannelMixingRed" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetColorGradingFilterMultiply", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetColorGradingFilterMultiply" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetColorGradingFilterMultiply is invoked" + }, + "details": { + "name": "GetColorGradingFilterMultiply" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetColorGradingFilterMultiply", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetColorGradingFilterMultiply" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetColorGradingFilterMultiply is invoked" + }, + "details": { + "name": "SetColorGradingFilterMultiply" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetSplitToneShadowsColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSplitToneShadowsColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSplitToneShadowsColor is invoked" + }, + "details": { + "name": "SetSplitToneShadowsColor" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "SetSplitToneWeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSplitToneWeight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSplitToneWeight is invoked" + }, + "details": { + "name": "SetSplitToneWeight" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetSplitToneShadowsColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSplitToneShadowsColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSplitToneShadowsColor is invoked" + }, + "details": { + "name": "GetSplitToneShadowsColor" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetSmhHighlightsStart", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSmhHighlightsStart" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSmhHighlightsStart is invoked" + }, + "details": { + "name": "GetSmhHighlightsStart" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetChannelMixingRed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetChannelMixingRed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetChannelMixingRed is invoked" + }, + "details": { + "name": "SetChannelMixingRed" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "SetChannelMixingGreen", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetChannelMixingGreen" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetChannelMixingGreen is invoked" + }, + "details": { + "name": "SetChannelMixingGreen" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "SetColorGradingFilterIntensity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetColorGradingFilterIntensity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetColorGradingFilterIntensity is invoked" + }, + "details": { + "name": "SetColorGradingFilterIntensity" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetGenerateLut", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetGenerateLut" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetGenerateLut is invoked" + }, + "details": { + "name": "SetGenerateLut" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetColorAdjustmentWeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetColorAdjustmentWeight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetColorAdjustmentWeight is invoked" + }, + "details": { + "name": "SetColorAdjustmentWeight" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetSmhShadowsStart", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSmhShadowsStart" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSmhShadowsStart is invoked" + }, + "details": { + "name": "GetSmhShadowsStart" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetSmhShadowsColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSmhShadowsColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSmhShadowsColor is invoked" + }, + "details": { + "name": "SetSmhShadowsColor" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "SetFinalAdjustmentWeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetFinalAdjustmentWeight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetFinalAdjustmentWeight is invoked" + }, + "details": { + "name": "SetFinalAdjustmentWeight" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetColorGradingPostSaturation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetColorGradingPostSaturation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetColorGradingPostSaturation is invoked" + }, + "details": { + "name": "GetColorGradingPostSaturation" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetColorGradingPreSaturation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetColorGradingPreSaturation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetColorGradingPreSaturation is invoked" + }, + "details": { + "name": "SetColorGradingPreSaturation" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetColorGradingHueShift", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetColorGradingHueShift" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetColorGradingHueShift is invoked" + }, + "details": { + "name": "SetColorGradingHueShift" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetSplitToneBalance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSplitToneBalance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSplitToneBalance is invoked" + }, + "details": { + "name": "GetSplitToneBalance" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetColorAdjustmentWeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetColorAdjustmentWeight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetColorAdjustmentWeight is invoked" + }, + "details": { + "name": "GetColorAdjustmentWeight" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetSmhHighlightsColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSmhHighlightsColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSmhHighlightsColor is invoked" + }, + "details": { + "name": "GetSmhHighlightsColor" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetSplitToneWeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSplitToneWeight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSplitToneWeight is invoked" + }, + "details": { + "name": "GetSplitToneWeight" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetColorGradingPostSaturation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetColorGradingPostSaturation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetColorGradingPostSaturation is invoked" + }, + "details": { + "name": "SetColorGradingPostSaturation" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetWhiteBalanceKelvin", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetWhiteBalanceKelvin" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetWhiteBalanceKelvin is invoked" + }, + "details": { + "name": "SetWhiteBalanceKelvin" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetWhiteBalanceWeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetWhiteBalanceWeight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetWhiteBalanceWeight is invoked" + }, + "details": { + "name": "GetWhiteBalanceWeight" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetColorGradingContrast", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetColorGradingContrast" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetColorGradingContrast is invoked" + }, + "details": { + "name": "GetColorGradingContrast" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEnabled is invoked" + }, + "details": { + "name": "GetEnabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetCustomMaxExposure", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCustomMaxExposure" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCustomMaxExposure is invoked" + }, + "details": { + "name": "GetCustomMaxExposure" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetWhiteBalanceTint", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetWhiteBalanceTint" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetWhiteBalanceTint is invoked" + }, + "details": { + "name": "SetWhiteBalanceTint" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetChannelMixingBlue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetChannelMixingBlue" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetChannelMixingBlue is invoked" + }, + "details": { + "name": "GetChannelMixingBlue" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "SetCustomMaxExposure", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetCustomMaxExposure" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetCustomMaxExposure is invoked" + }, + "details": { + "name": "SetCustomMaxExposure" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/HDRiSkyboxRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/HDRiSkyboxRequestBus.names new file mode 100644 index 0000000000..c28a18dfc4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/HDRiSkyboxRequestBus.names @@ -0,0 +1,58 @@ +{ + "entries": [ + { + "key": "HDRiSkyboxRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "HDRiSkyboxRequestBus" + }, + "methods": [ + { + "key": "SetExposure", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetExposure" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetExposure is invoked" + }, + "details": { + "name": "SetExposure" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetExposure", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetExposure" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetExposure is invoked" + }, + "details": { + "name": "GetExposure" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/HeightfieldProviderRequestsBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/HeightfieldProviderRequestsBus.names new file mode 100644 index 0000000000..0524860818 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/HeightfieldProviderRequestsBus.names @@ -0,0 +1,234 @@ +{ + "entries": [ + { + "key": "HeightfieldProviderRequestsBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Heightfield Provider" + }, + "methods": [ + { + "key": "GetHeightfieldMinHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Heightfield Min Height" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Heightfield Min Height is invoked" + }, + "details": { + "name": "Get Heightfield Min Height" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Heightfield Min Height" + } + } + ] + }, + { + "key": "GetHeights", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Heights" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Heights is invoked" + }, + "details": { + "name": "Get Heights" + }, + "results": [ + { + "typeid": "{6106BF95-5ACD-5071-8D0E-4F846C2138AD}", + "details": { + "name": "Heights" + } + } + ] + }, + { + "key": "GetHeightfieldMaxHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Heightfield Max Height" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Heightfield Max Height is invoked" + }, + "details": { + "name": "Get Heightfield Max Height" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Heightfield Max Height" + } + } + ] + }, + { + "key": "GetHeightfieldGridColumns", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Heightfield Grid Columns" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Heightfield Grid Columns is invoked" + }, + "details": { + "name": "Get Heightfield Grid Columns" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Heightfield Grid Columns" + } + } + ] + }, + { + "key": "GetMaterialList", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Material List" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Material List is invoked" + }, + "details": { + "name": "Get Material List" + }, + "results": [ + { + "typeid": "{82111EAD-9C65-57F0-BA72-46D6D931B434}", + "details": { + "name": "Material List" + } + } + ] + }, + { + "key": "GetHeightfieldTransform", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Heightfield Transform" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Heightfield Transform is invoked" + }, + "details": { + "name": "Get Heightfield Transform" + }, + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Heightfield Transform" + } + } + ] + }, + { + "key": "GetHeightfieldGridRows", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Heightfield Grid Rows" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Heightfield Grid Rows is invoked" + }, + "details": { + "name": "Get Heightfield Grid Rows" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Heightfield Grid Rows" + } + } + ] + }, + { + "key": "GetHeightfieldGridSpacing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Heightfield Grid Spacing" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Heightfield Grid Spacing is invoked" + }, + "details": { + "name": "Get Heightfield Grid Spacing" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Heightfield Grid Spacing" + } + } + ] + }, + { + "key": "GetHeightfieldAabb", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Heightfield AABB" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Heightfield AABB is invoked" + }, + "details": { + "name": "Get Heightfield AABB" + }, + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "AABB" + } + } + ] + }, + { + "key": "GetHeightsAndMaterials", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Heights And Materials" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Heights And Materials is invoked" + }, + "details": { + "name": "Get Heights And Materials" + }, + "results": [ + { + "typeid": "{887288A6-8B56-55A7-BD10-3E4B19CBFD6C}", + "details": { + "name": "Heights And Materials" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ImageBasedLightComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ImageBasedLightComponentRequestBus.names new file mode 100644 index 0000000000..090c4abb00 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ImageBasedLightComponentRequestBus.names @@ -0,0 +1,190 @@ +{ + "entries": [ + { + "key": "ImageBasedLightComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "ImageBasedLightComponentRequestBus" + }, + "methods": [ + { + "key": "GetDiffuseImageAssetId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetDiffuseImageAssetId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetDiffuseImageAssetId is invoked" + }, + "details": { + "name": "GetDiffuseImageAssetId" + }, + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "SetDiffuseImageAssetPath", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetDiffuseImageAssetPath" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetDiffuseImageAssetPath is invoked" + }, + "details": { + "name": "SetDiffuseImageAssetPath" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetDiffuseImageAssetId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetDiffuseImageAssetId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetDiffuseImageAssetId is invoked" + }, + "details": { + "name": "SetDiffuseImageAssetId" + }, + "params": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "GetSpecularImageAssetId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSpecularImageAssetId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSpecularImageAssetId is invoked" + }, + "details": { + "name": "GetSpecularImageAssetId" + }, + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "SetSpecularImageAssetPath", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSpecularImageAssetPath" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSpecularImageAssetPath is invoked" + }, + "details": { + "name": "SetSpecularImageAssetPath" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetSpecularImageAssetPath", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSpecularImageAssetPath" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSpecularImageAssetPath is invoked" + }, + "details": { + "name": "GetSpecularImageAssetPath" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetDiffuseImageAssetPath", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetDiffuseImageAssetPath" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetDiffuseImageAssetPath is invoked" + }, + "details": { + "name": "GetDiffuseImageAssetPath" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetSpecularImageAssetId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSpecularImageAssetId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSpecularImageAssetId is invoked" + }, + "details": { + "name": "SetSpecularImageAssetId" + }, + "params": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ImageGradientRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ImageGradientRequestBus.names new file mode 100644 index 0000000000..f4f826d7b6 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ImageGradientRequestBus.names @@ -0,0 +1,146 @@ +{ + "entries": [ + { + "key": "ImageGradientRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "ImageGradientRequestBus" + }, + "methods": [ + { + "key": "SetTilingX", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetTilingX" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetTilingX is invoked" + }, + "details": { + "name": "SetTilingX" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetTilingX", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTilingX" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTilingX is invoked" + }, + "details": { + "name": "GetTilingX" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetImageAssetPath", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetImageAssetPath" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetImageAssetPath is invoked" + }, + "details": { + "name": "SetImageAssetPath" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetTilingY", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetTilingY" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetTilingY is invoked" + }, + "details": { + "name": "SetTilingY" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetImageAssetPath", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetImageAssetPath" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetImageAssetPath is invoked" + }, + "details": { + "name": "GetImageAssetPath" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetTilingY", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTilingY" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTilingY is invoked" + }, + "details": { + "name": "GetTilingY" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/InputSystemRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/InputSystemRequestBus.names new file mode 100644 index 0000000000..883bed230d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/InputSystemRequestBus.names @@ -0,0 +1,28 @@ +{ + "entries": [ + { + "key": "InputSystemRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "InputSystemRequestBus" + }, + "methods": [ + { + "key": "RecreateEnabledInputDevices", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RecreateEnabledInputDevices" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RecreateEnabledInputDevices is invoked" + }, + "details": { + "name": "RecreateEnabledInputDevices" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/InvertGradientRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/InvertGradientRequestBus.names new file mode 100644 index 0000000000..4fc68d7cd8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/InvertGradientRequestBus.names @@ -0,0 +1,36 @@ +{ + "entries": [ + { + "key": "InvertGradientRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "InvertGradientRequestBus" + }, + "methods": [ + { + "key": "GetGradientSampler", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetGradientSampler" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetGradientSampler is invoked" + }, + "details": { + "name": "GetGradientSampler" + }, + "results": [ + { + "typeid": "{3768D3A6-BF70-4ABC-B4EC-73C75A886916}", + "details": { + "name": "Gradient Sampler" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/LevelsGradientRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/LevelsGradientRequestBus.names new file mode 100644 index 0000000000..b261321830 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/LevelsGradientRequestBus.names @@ -0,0 +1,256 @@ +{ + "entries": [ + { + "key": "LevelsGradientRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "LevelsGradientRequestBus" + }, + "methods": [ + { + "key": "GetOutputMax", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetOutputMax" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetOutputMax is invoked" + }, + "details": { + "name": "GetOutputMax" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetInputMax", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetInputMax" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetInputMax is invoked" + }, + "details": { + "name": "SetInputMax" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetOutputMax", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetOutputMax" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetOutputMax is invoked" + }, + "details": { + "name": "SetOutputMax" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetInputMid", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetInputMid" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetInputMid is invoked" + }, + "details": { + "name": "SetInputMid" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetOutputMin", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetOutputMin" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetOutputMin is invoked" + }, + "details": { + "name": "SetOutputMin" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetGradientSampler", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetGradientSampler" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetGradientSampler is invoked" + }, + "details": { + "name": "GetGradientSampler" + }, + "results": [ + { + "typeid": "{3768D3A6-BF70-4ABC-B4EC-73C75A886916}", + "details": { + "name": "Gradient Sampler" + } + } + ] + }, + { + "key": "SetInputMin", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetInputMin" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetInputMin is invoked" + }, + "details": { + "name": "SetInputMin" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetInputMid", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetInputMid" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetInputMid is invoked" + }, + "details": { + "name": "GetInputMid" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetInputMax", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetInputMax" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetInputMax is invoked" + }, + "details": { + "name": "GetInputMax" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetOutputMin", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetOutputMin" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetOutputMin is invoked" + }, + "details": { + "name": "GetOutputMin" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetInputMin", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetInputMin" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetInputMin is invoked" + }, + "details": { + "name": "GetInputMin" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/LookAt.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/LookAt.names new file mode 100644 index 0000000000..f45199ea84 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/LookAt.names @@ -0,0 +1,81 @@ +{ + "entries": [ + { + "key": "LookAt", + "context": "EBusSender", + "variant": "", + "details": { + "name": "LookAt" + }, + "methods": [ + { + "key": "SetTarget", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetTarget" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetTarget is invoked" + }, + "details": { + "name": "SetTarget" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetTargetPosition", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetTargetPosition" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetTargetPosition is invoked" + }, + "details": { + "name": "SetTargetPosition" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "SetAxis", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetAxis" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetAxis is invoked" + }, + "details": { + "name": "SetAxis" + }, + "params": [ + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "unsigned char" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/LookModificationRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/LookModificationRequestBus.names new file mode 100644 index 0000000000..7e38e83e06 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/LookModificationRequestBus.names @@ -0,0 +1,322 @@ +{ + "entries": [ + { + "key": "LookModificationRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "LookModificationRequestBus" + }, + "methods": [ + { + "key": "SetColorGradingLutOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetColorGradingLutOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetColorGradingLutOverride is invoked" + }, + "details": { + "name": "SetColorGradingLutOverride" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetCustomMaxExposure", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetCustomMaxExposure" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetCustomMaxExposure is invoked" + }, + "details": { + "name": "SetCustomMaxExposure" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetCustomMinExposure", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetCustomMinExposure" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetCustomMinExposure is invoked" + }, + "details": { + "name": "SetCustomMinExposure" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetCustomMinExposure", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCustomMinExposure" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCustomMinExposure is invoked" + }, + "details": { + "name": "GetCustomMinExposure" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetColorGradingLut", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetColorGradingLut" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetColorGradingLut is invoked" + }, + "details": { + "name": "GetColorGradingLut" + }, + "results": [ + { + "typeid": "{895CEA57-551B-5B79-A32B-B2DA0A912C87}", + "details": { + "name": "Asset" + } + } + ] + }, + { + "key": "GetColorGradingLutIntensity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetColorGradingLutIntensity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetColorGradingLutIntensity is invoked" + }, + "details": { + "name": "GetColorGradingLutIntensity" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetColorGradingLutOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetColorGradingLutOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetColorGradingLutOverride is invoked" + }, + "details": { + "name": "GetColorGradingLutOverride" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetColorGradingLut", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetColorGradingLut" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetColorGradingLut is invoked" + }, + "details": { + "name": "SetColorGradingLut" + }, + "params": [ + { + "typeid": "{895CEA57-551B-5B79-A32B-B2DA0A912C87}", + "details": { + "name": "Asset" + } + } + ] + }, + { + "key": "SetColorGradingLutIntensity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetColorGradingLutIntensity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetColorGradingLutIntensity is invoked" + }, + "details": { + "name": "SetColorGradingLutIntensity" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEnabled is invoked" + }, + "details": { + "name": "SetEnabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEnabled is invoked" + }, + "details": { + "name": "GetEnabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetShaperPresetType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetShaperPresetType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetShaperPresetType is invoked" + }, + "details": { + "name": "SetShaperPresetType" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetShaperPresetType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetShaperPresetType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetShaperPresetType is invoked" + }, + "details": { + "name": "GetShaperPresetType" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetCustomMaxExposure", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCustomMaxExposure" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCustomMaxExposure is invoked" + }, + "details": { + "name": "GetCustomMaxExposure" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/LyShineExamplesCppExampleBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/LyShineExamplesCppExampleBus.names new file mode 100644 index 0000000000..6e8aff1df5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/LyShineExamplesCppExampleBus.names @@ -0,0 +1,45 @@ +{ + "entries": [ + { + "key": "LyShineExamplesCppExampleBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "LyShineExamplesCppExampleBus", + "category": "UI/LyShine Examples" + }, + "methods": [ + { + "key": "CreateCanvas", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create Canvas" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create Canvas is invoked" + }, + "details": { + "name": "Create Canvas", + "tooltip": "Creates a canvas using C++" + } + }, + { + "key": "DestroyCanvas", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Destroy Canvas" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Destroy Canvas is invoked" + }, + "details": { + "name": "Destroy Canvas", + "tooltip": "Destroys a canvas using C++" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/MaterialComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/MaterialComponentRequestBus.names new file mode 100644 index 0000000000..d5a66328b5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/MaterialComponentRequestBus.names @@ -0,0 +1,1360 @@ +{ + "entries": [ + { + "key": "MaterialComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "MaterialComponentRequestBus" + }, + "methods": [ + { + "key": "GetPropertyOverrides", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPropertyOverrides" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPropertyOverrides is invoked" + }, + "details": { + "name": "GetPropertyOverrides" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + } + ], + "results": [ + { + "typeid": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "SetPropertyOverrides", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetPropertyOverrides" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetPropertyOverrides is invoked" + }, + "details": { + "name": "SetPropertyOverrides" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "ClearPropertyOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ClearPropertyOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ClearPropertyOverride is invoked" + }, + "details": { + "name": "ClearPropertyOverride" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "ClearPropertyOverrides", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ClearPropertyOverrides" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ClearPropertyOverrides is invoked" + }, + "details": { + "name": "ClearPropertyOverrides" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + } + ] + }, + { + "key": "GetPropertyOverrideVector4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPropertyOverrideVector4" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPropertyOverrideVector4 is invoked" + }, + "details": { + "name": "GetPropertyOverrideVector4" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "GetPropertyOverrideImageInstance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPropertyOverrideImageInstance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPropertyOverrideImageInstance is invoked" + }, + "details": { + "name": "GetPropertyOverrideImageInstance" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{C0311D23-97F1-556C-B6A4-ECD726543686}", + "details": { + "name": "AZStd::intrusive_ptr" + } + } + ] + }, + { + "key": "GetPropertyOverrideUInt32", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPropertyOverrideUInt32" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPropertyOverrideUInt32 is invoked" + }, + "details": { + "name": "GetPropertyOverrideUInt32" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "GetPropertyOverrideBool", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPropertyOverrideBool" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPropertyOverrideBool is invoked" + }, + "details": { + "name": "GetPropertyOverrideBool" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetPropertyOverrideImageAsset", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPropertyOverrideImageAsset" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPropertyOverrideImageAsset is invoked" + }, + "details": { + "name": "GetPropertyOverrideImageAsset" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{4BA06517-EDEC-59DC-B5FE-2FDE64BBEF6E}", + "details": { + "name": "Asset" + } + } + ] + }, + { + "key": "SetPropertyOverrideVector2", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetPropertyOverrideVector2" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetPropertyOverrideVector2 is invoked" + }, + "details": { + "name": "SetPropertyOverrideVector2" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "ClearAllPropertyOverrides", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ClearAllPropertyOverrides" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ClearAllPropertyOverrides is invoked" + }, + "details": { + "name": "ClearAllPropertyOverrides" + } + }, + { + "key": "ClearMaterialOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ClearMaterialOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ClearMaterialOverride is invoked" + }, + "details": { + "name": "ClearMaterialOverride" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + } + ] + }, + { + "key": "SetPropertyOverrideImageInstance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetPropertyOverrideImageInstance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetPropertyOverrideImageInstance is invoked" + }, + "details": { + "name": "SetPropertyOverrideImageInstance" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{C0311D23-97F1-556C-B6A4-ECD726543686}", + "details": { + "name": "AZStd::intrusive_ptr" + } + } + ] + }, + { + "key": "GetMaterialSlotLabel", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetMaterialSlotLabel" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetMaterialSlotLabel is invoked" + }, + "details": { + "name": "GetMaterialSlotLabel" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetPropertyOverrideVector3", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetPropertyOverrideVector3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetPropertyOverrideVector3 is invoked" + }, + "details": { + "name": "SetPropertyOverrideVector3" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "ClearInvalidMaterialOverrides", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ClearInvalidMaterialOverrides" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ClearInvalidMaterialOverrides is invoked" + }, + "details": { + "name": "ClearInvalidMaterialOverrides" + } + }, + { + "key": "SetPropertyOverrideBool", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetPropertyOverrideBool" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetPropertyOverrideBool is invoked" + }, + "details": { + "name": "SetPropertyOverrideBool" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "RepairInvalidMaterialOverrides", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RepairInvalidMaterialOverrides" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RepairInvalidMaterialOverrides is invoked" + }, + "details": { + "name": "RepairInvalidMaterialOverrides" + } + }, + { + "key": "SetPropertyOverrideString", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetPropertyOverrideString" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetPropertyOverrideString is invoked" + }, + "details": { + "name": "SetPropertyOverrideString" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetDefaultMaterialOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetDefaultMaterialOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetDefaultMaterialOverride is invoked" + }, + "details": { + "name": "SetDefaultMaterialOverride" + }, + "params": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "GetDefaultMaterialOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetDefaultMaterialOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetDefaultMaterialOverride is invoked" + }, + "details": { + "name": "GetDefaultMaterialOverride" + }, + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "SetMaterialOverrides", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetMaterialOverrides" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetMaterialOverrides is invoked" + }, + "details": { + "name": "SetMaterialOverrides" + }, + "params": [ + { + "typeid": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "GetPropertyOverrideString", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPropertyOverrideString" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPropertyOverrideString is invoked" + }, + "details": { + "name": "GetPropertyOverrideString" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetMaterialOverrides", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetMaterialOverrides" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetMaterialOverrides is invoked" + }, + "details": { + "name": "GetMaterialOverrides" + }, + "results": [ + { + "typeid": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "GetMaterialOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetMaterialOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetMaterialOverride is invoked" + }, + "details": { + "name": "GetMaterialOverride" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + } + ], + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "SetPropertyOverrideVector4", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetPropertyOverrideVector4" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetPropertyOverrideVector4 is invoked" + }, + "details": { + "name": "SetPropertyOverrideVector4" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "SetPropertyOverrideUInt32", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetPropertyOverrideUInt32" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetPropertyOverrideUInt32 is invoked" + }, + "details": { + "name": "SetPropertyOverrideUInt32" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "FindMaterialAssignmentId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FindMaterialAssignmentId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FindMaterialAssignmentId is invoked" + }, + "details": { + "name": "FindMaterialAssignmentId" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + } + ] + }, + { + "key": "SetPropertyOverrideImageAsset", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetPropertyOverrideImageAsset" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetPropertyOverrideImageAsset is invoked" + }, + "details": { + "name": "SetPropertyOverrideImageAsset" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{4BA06517-EDEC-59DC-B5FE-2FDE64BBEF6E}", + "details": { + "name": "Asset" + } + } + ] + }, + { + "key": "GetPropertyOverrideInt32", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPropertyOverrideInt32" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPropertyOverrideInt32 is invoked" + }, + "details": { + "name": "GetPropertyOverrideInt32" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetPropertyOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetPropertyOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetPropertyOverride is invoked" + }, + "details": { + "name": "SetPropertyOverride" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "any" + } + } + ] + }, + { + "key": "GetOriginalMaterialAssignments", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetOriginalMaterialAssignments" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetOriginalMaterialAssignments is invoked" + }, + "details": { + "name": "GetOriginalMaterialAssignments" + }, + "results": [ + { + "typeid": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "GetPropertyOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPropertyOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPropertyOverride is invoked" + }, + "details": { + "name": "GetPropertyOverride" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "any" + } + } + ] + }, + { + "key": "ClearModelMaterialOverrides", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ClearModelMaterialOverrides" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ClearModelMaterialOverrides is invoked" + }, + "details": { + "name": "ClearModelMaterialOverrides" + } + }, + { + "key": "GetDefaultMaterialAssetId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetDefaultMaterialAssetId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetDefaultMaterialAssetId is invoked" + }, + "details": { + "name": "GetDefaultMaterialAssetId" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + } + ], + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "SetPropertyOverrideInt32", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetPropertyOverrideInt32" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetPropertyOverrideInt32 is invoked" + }, + "details": { + "name": "SetPropertyOverrideInt32" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetPropertyOverrideVector2", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPropertyOverrideVector2" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPropertyOverrideVector2 is invoked" + }, + "details": { + "name": "GetPropertyOverrideVector2" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "ClearAllMaterialOverrides", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ClearAllMaterialOverrides" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ClearAllMaterialOverrides is invoked" + }, + "details": { + "name": "ClearAllMaterialOverrides" + } + }, + { + "key": "GetPropertyOverrideColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPropertyOverrideColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPropertyOverrideColor is invoked" + }, + "details": { + "name": "GetPropertyOverrideColor" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "SetPropertyOverrideFloat", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetPropertyOverrideFloat" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetPropertyOverrideFloat is invoked" + }, + "details": { + "name": "SetPropertyOverrideFloat" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "ClearLodMaterialOverrides", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ClearLodMaterialOverrides" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ClearLodMaterialOverrides is invoked" + }, + "details": { + "name": "ClearLodMaterialOverrides" + } + }, + { + "key": "ClearIncompatibleMaterialOverrides", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ClearIncompatibleMaterialOverrides" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ClearIncompatibleMaterialOverrides is invoked" + }, + "details": { + "name": "ClearIncompatibleMaterialOverrides" + } + }, + { + "key": "GetPropertyOverrideVector3", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPropertyOverrideVector3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPropertyOverrideVector3 is invoked" + }, + "details": { + "name": "GetPropertyOverrideVector3" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "ClearDefaultMaterialOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ClearDefaultMaterialOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ClearDefaultMaterialOverride is invoked" + }, + "details": { + "name": "ClearDefaultMaterialOverride" + } + }, + { + "key": "SetPropertyOverrideColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetPropertyOverrideColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetPropertyOverrideColor is invoked" + }, + "details": { + "name": "SetPropertyOverrideColor" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "SetMaterialOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetMaterialOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetMaterialOverride is invoked" + }, + "details": { + "name": "SetMaterialOverride" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "GetPropertyOverrideFloat", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPropertyOverrideFloat" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPropertyOverrideFloat is invoked" + }, + "details": { + "name": "GetPropertyOverrideFloat" + }, + "params": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/MixedGradientRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/MixedGradientRequestBus.names new file mode 100644 index 0000000000..3fd5976810 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/MixedGradientRequestBus.names @@ -0,0 +1,102 @@ +{ + "entries": [ + { + "key": "MixedGradientRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "MixedGradientRequestBus" + }, + "methods": [ + { + "key": "GetNumLayers", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNumLayers" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNumLayers is invoked" + }, + "details": { + "name": "GetNumLayers" + }, + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "AddLayer", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddLayer" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddLayer is invoked" + }, + "details": { + "name": "AddLayer" + } + }, + { + "key": "RemoveLayer", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RemoveLayer" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RemoveLayer is invoked" + }, + "details": { + "name": "RemoveLayer" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetLayer", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetLayer" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetLayer is invoked" + }, + "details": { + "name": "GetLayer" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ], + "results": [ + { + "typeid": "{957264F7-A169-4D47-B94C-659B078026D4}", + "details": { + "name": "Mixed Gradient Layer" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/Multi-Position Audio Requests.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/Multi-Position Audio Requests.names new file mode 100644 index 0000000000..8234e0cc58 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/Multi-Position Audio Requests.names @@ -0,0 +1,84 @@ +{ + "entries": [ + { + "key": "Multi-Position Audio Requests", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Multi-Position Audio Requests" + }, + "methods": [ + { + "key": "AddEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Add Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Add Entity is invoked" + }, + "details": { + "name": "Add Entity" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "RemoveEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Remove Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Remove Entity is invoked" + }, + "details": { + "name": "RemoveEntity" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetBehaviorType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetBehaviorType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetBehaviorType is invoked" + }, + "details": { + "name": "Set Behavior Type", + "tooltip": "0: Separate, 1: Blended" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Behavior Type", + "tooltip": "0: Separate, 1: Blended" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/NavigationComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/NavigationComponentRequestBus.names new file mode 100644 index 0000000000..88b015bda8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/NavigationComponentRequestBus.names @@ -0,0 +1,191 @@ +{ + "entries": [ + { + "key": "NavigationComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Movement", + "category": "Navigation" + }, + "methods": [ + { + "key": "SetAgentSpeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Agent Speed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Agent Speed is invoked" + }, + "details": { + "name": "Set Agent Speed" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Speed", + "tooltip": "The agent speed in meters per second" + } + } + ] + }, + { + "key": "SetAgentMovementMethod", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Agent Movement Method" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Agent Movement Method is invoked" + }, + "details": { + "name": "Set Agent Movement Method" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Method", + "tooltip": "0: Transform, 1: Physics, 2: Custom" + } + } + ] + }, + { + "key": "GetAgentSpeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAgentSpeed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAgentSpeed is invoked" + }, + "details": { + "name": "Get Agent Speed" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Speed" + } + } + ] + }, + { + "key": "FindPathToPosition", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Find Path To Position" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Find Path To Position is invoked" + }, + "details": { + "name": "Find Path To Position" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position", + "tooltip": "The position to navigate to" + } + } + ], + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Request Id" + } + } + ] + }, + { + "key": "Stop", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Stop" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Stop is invoked" + }, + "details": { + "name": "Stop" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Request Id", + "tooltip": "The request Id of the navigation process to stop" + } + } + ] + }, + { + "key": "FindPathToEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Find Path To Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Find Path To Entity is invoked" + }, + "details": { + "name": "Find Path To Entity" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Entity Id", + "tooltip": "The entity to follow" + } + } + ], + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Request Id" + } + } + ] + }, + { + "key": "GetAgentMovementMethod", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Agent Movement Method" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Agent Movement Method is invoked" + }, + "details": { + "name": "Get Agent Movement Method" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Method", + "tooltip": "0: Transform, 1: Physics, 2: Custom" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/NonUniformScaleRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/NonUniformScaleRequestBus.names new file mode 100644 index 0000000000..dee0920cf2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/NonUniformScaleRequestBus.names @@ -0,0 +1,58 @@ +{ + "entries": [ + { + "key": "NonUniformScaleRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Non Uniform Scale" + }, + "methods": [ + { + "key": "GetScale", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Scale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Scale is invoked" + }, + "details": { + "name": "Get Scale" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Scale" + } + } + ] + }, + { + "key": "SetScale", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Scale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Scale is invoked" + }, + "details": { + "name": "Set Scale" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Scale" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PerformanceStatisticsEBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PerformanceStatisticsEBus.names new file mode 100644 index 0000000000..a4cb505c02 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PerformanceStatisticsEBus.names @@ -0,0 +1,92 @@ +{ + "entries": [ + { + "key": "PerformanceStatisticsEBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "PerformanceStatisticsEBus" + }, + "methods": [ + { + "key": "TrackPerFrameStop", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke TrackPerFrameStop" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after TrackPerFrameStop is invoked" + }, + "details": { + "name": "TrackPerFrameStop" + } + }, + { + "key": "TrackPerFrameStart", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke TrackPerFrameStart" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after TrackPerFrameStart is invoked" + }, + "details": { + "name": "TrackPerFrameStart" + } + }, + { + "key": "TrackAccumulatedStart", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke TrackAccumulatedStart" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after TrackAccumulatedStart is invoked" + }, + "details": { + "name": "TrackAccumulatedStart" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "TrackAccumulatedStop", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke TrackAccumulatedStop" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after TrackAccumulatedStop is invoked" + }, + "details": { + "name": "TrackAccumulatedStop" + } + }, + { + "key": "ClearSnaphotStatistics", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ClearSnaphotStatistics" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ClearSnaphotStatistics is invoked" + }, + "details": { + "name": "ClearSnaphotStatistics" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PerlinGradientRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PerlinGradientRequestBus.names new file mode 100644 index 0000000000..0d1e7a800e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PerlinGradientRequestBus.names @@ -0,0 +1,190 @@ +{ + "entries": [ + { + "key": "PerlinGradientRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "PerlinGradientRequestBus" + }, + "methods": [ + { + "key": "SetOctaves", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetOctaves" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetOctaves is invoked" + }, + "details": { + "name": "SetOctaves" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetFrequency", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetFrequency" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetFrequency is invoked" + }, + "details": { + "name": "GetFrequency" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetOctaves", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetOctaves" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetOctaves is invoked" + }, + "details": { + "name": "GetOctaves" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetFrequency", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetFrequency" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetFrequency is invoked" + }, + "details": { + "name": "SetFrequency" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetAmplitude", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetAmplitude" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetAmplitude is invoked" + }, + "details": { + "name": "SetAmplitude" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetAmplitude", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAmplitude" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAmplitude is invoked" + }, + "details": { + "name": "GetAmplitude" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetRandomSeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetRandomSeed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetRandomSeed is invoked" + }, + "details": { + "name": "GetRandomSeed" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetRandomSeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetRandomSeed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetRandomSeed is invoked" + }, + "details": { + "name": "SetRandomSeed" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PhysXCharacterControllerRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PhysXCharacterControllerRequestBus.names new file mode 100644 index 0000000000..e4b0b6086d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PhysXCharacterControllerRequestBus.names @@ -0,0 +1,212 @@ +{ + "entries": [ + { + "key": "PhysXCharacterControllerRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Character Controller" + }, + "methods": [ + { + "key": "GetHalfForwardExtent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Half Forward Extent" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Half Forward Extent is invoked" + }, + "details": { + "name": "Get Half Forward Extent" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Half Forward Extent" + } + } + ] + }, + { + "key": "GetRadius", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Radius" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Radius is invoked" + }, + "details": { + "name": "Get Radius" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Radius" + } + } + ] + }, + { + "key": "SetRadius", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Radius" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Radius is invoked" + }, + "details": { + "name": "Set Radius" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Radius" + } + } + ] + }, + { + "key": "SetHalfForwardExtent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Half Forward Extent" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Half Forward Extent is invoked" + }, + "details": { + "name": "Set Half Forward Extent" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Half Forward Extent" + } + } + ] + }, + { + "key": "SetHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Height" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Height is invoked" + }, + "details": { + "name": "Set Height" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Height" + } + } + ] + }, + { + "key": "GetHalfSideExtent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Half Side Extent" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Half Side Extent is invoked" + }, + "details": { + "name": "Get Half Side Extent" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Half Side Extent" + } + } + ] + }, + { + "key": "GetHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Height" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Height is invoked" + }, + "details": { + "name": "Get Height" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Height" + } + } + ] + }, + { + "key": "Resize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Size" + } + } + ] + }, + { + "key": "SetHalfSideExtent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Half Side Extent" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Half Side Extent is invoked" + }, + "details": { + "name": "Set Half Side Extent" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Half Side Extent" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PhysicalSkyRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PhysicalSkyRequestBus.names new file mode 100644 index 0000000000..ccd14962a2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PhysicalSkyRequestBus.names @@ -0,0 +1,190 @@ +{ + "entries": [ + { + "key": "PhysicalSkyRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "PhysicalSkyRequestBus" + }, + "methods": [ + { + "key": "SetSkyIntensity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSkyIntensity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSkyIntensity is invoked" + }, + "details": { + "name": "SetSkyIntensity" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetSunIntensity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSunIntensity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSunIntensity is invoked" + }, + "details": { + "name": "SetSunIntensity" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetSunIntensity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSunIntensity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSunIntensity is invoked" + }, + "details": { + "name": "GetSunIntensity" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetSunRadiusFactor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSunRadiusFactor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSunRadiusFactor is invoked" + }, + "details": { + "name": "GetSunRadiusFactor" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetSunRadiusFactor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSunRadiusFactor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSunRadiusFactor is invoked" + }, + "details": { + "name": "SetSunRadiusFactor" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetTurbidity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTurbidity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTurbidity is invoked" + }, + "details": { + "name": "GetTurbidity" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetSkyIntensity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSkyIntensity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSkyIntensity is invoked" + }, + "details": { + "name": "GetSkyIntensity" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetTurbidity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetTurbidity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetTurbidity is invoked" + }, + "details": { + "name": "SetTurbidity" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PolygonPrismShapeComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PolygonPrismShapeComponentRequestBus.names new file mode 100644 index 0000000000..8cd660beaf --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PolygonPrismShapeComponentRequestBus.names @@ -0,0 +1,196 @@ +{ + "entries": [ + { + "key": "PolygonPrismShapeComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Polygon Prism" + }, + "methods": [ + { + "key": "ClearVertices", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ClearVertices" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ClearVertices is invoked" + }, + "details": { + "name": "Clear Vertices" + } + }, + { + "key": "InsertVertex", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke InsertVertex" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after InsertVertex is invoked" + }, + "details": { + "name": "Insert Vertex" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Index" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vertex" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Inserted" + } + } + ] + }, + { + "key": "UpdateVertex", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke UpdateVertex" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after UpdateVertex is invoked" + }, + "details": { + "name": "Update Vertex" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Index" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vertex" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Updated" + } + } + ] + }, + { + "key": "AddVertex", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddVertex" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddVertex is invoked" + }, + "details": { + "name": "Add Vertex" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vertex" + } + } + ] + }, + { + "key": "GetPolygonPrism", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPolygonPrism" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPolygonPrism is invoked" + }, + "details": { + "name": "Get Polygon Prism" + }, + "results": [ + { + "typeid": "{2E879A16-9143-5862-A5B3-EDED931C60BC}", + "details": { + "name": "Polygon Prism" + } + } + ] + }, + { + "key": "SetHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetHeight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetHeight is invoked" + }, + "details": { + "name": "Set Height" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Height" + } + } + ] + }, + { + "key": "RemoveVertex", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RemoveVertex" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RemoveVertex is invoked" + }, + "details": { + "name": "Remove Vertex" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Index" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Removed" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PostFxLayerRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PostFxLayerRequestBus.names new file mode 100644 index 0000000000..c66a6e75db --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PostFxLayerRequestBus.names @@ -0,0 +1,102 @@ +{ + "entries": [ + { + "key": "PostFxLayerRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "PostFxLayerRequestBus" + }, + "methods": [ + { + "key": "SetPriority", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetPriority" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetPriority is invoked" + }, + "details": { + "name": "SetPriority" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "GetPriority", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPriority" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPriority is invoked" + }, + "details": { + "name": "GetPriority" + }, + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "SetOverrideFactor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetOverrideFactor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetOverrideFactor is invoked" + }, + "details": { + "name": "SetOverrideFactor" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetOverrideFactor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetOverrideFactor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetOverrideFactor is invoked" + }, + "details": { + "name": "GetOverrideFactor" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PosterizeGradientRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PosterizeGradientRequestBus.names new file mode 100644 index 0000000000..86d059cdb7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PosterizeGradientRequestBus.names @@ -0,0 +1,124 @@ +{ + "entries": [ + { + "key": "PosterizeGradientRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "PosterizeGradientRequestBus" + }, + "methods": [ + { + "key": "GetGradientSampler", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetGradientSampler" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetGradientSampler is invoked" + }, + "details": { + "name": "GetGradientSampler" + }, + "results": [ + { + "typeid": "{3768D3A6-BF70-4ABC-B4EC-73C75A886916}", + "details": { + "name": "Gradient Sampler" + } + } + ] + }, + { + "key": "GetModeType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetModeType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetModeType is invoked" + }, + "details": { + "name": "GetModeType" + }, + "results": [ + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "unsigned char" + } + } + ] + }, + { + "key": "SetModeType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetModeType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetModeType is invoked" + }, + "details": { + "name": "SetModeType" + }, + "params": [ + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "unsigned char" + } + } + ] + }, + { + "key": "SetBands", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetBands" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetBands is invoked" + }, + "details": { + "name": "SetBands" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetBands", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetBands" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetBands is invoked" + }, + "details": { + "name": "GetBands" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PrefabLoaderScriptingBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PrefabLoaderScriptingBus.names new file mode 100644 index 0000000000..1c90afdb38 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PrefabLoaderScriptingBus.names @@ -0,0 +1,44 @@ +{ + "entries": [ + { + "key": "PrefabLoaderScriptingBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Prefab Loader" + }, + "methods": [ + { + "key": "SaveTemplateToString", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Save Template To String" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Save Template To String is invoked" + }, + "details": { + "name": "Save Template To String" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Template Id" + } + } + ], + "results": [ + { + "typeid": "{92FC6941-F5F5-5141-97A4-1965FC8B09CD}", + "details": { + "name": "Success" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PrefabPublicRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PrefabPublicRequestBus.names new file mode 100644 index 0000000000..d38129153c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PrefabPublicRequestBus.names @@ -0,0 +1,123 @@ +{ + "entries": [ + { + "key": "PrefabPublicRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "PrefabPublicRequestBus" + }, + "methods": [ + { + "key": "CreatePrefabInMemory", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CreatePrefabInMemory" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CreatePrefabInMemory is invoked" + }, + "details": { + "name": "CreatePrefabInMemory" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "" + } + } + ], + "results": [ + { + "typeid": "{0E9C062F-96E1-58E9-BCE0-AB93C4C425A1}", + "details": { + "name": "" + } + } + ] + }, + { + "key": "InstantiatePrefab", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke InstantiatePrefab" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after InstantiatePrefab is invoked" + }, + "details": { + "name": "InstantiatePrefab" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{0E9C062F-96E1-58E9-BCE0-AB93C4C425A1}", + "details": { + "name": "" + } + } + ] + }, + { + "key": "DeleteEntitiesAndAllDescendantsInInstance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DeleteEntitiesAndAllDescendantsInInstance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DeleteEntitiesAndAllDescendantsInInstance is invoked" + }, + "details": { + "name": "DeleteEntitiesAndAllDescendantsInInstance" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{0D5A4347-BCEC-58D6-A2D5-259F78FA0BF0}", + "details": { + "name": "" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PrefabSystemScriptingBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PrefabSystemScriptingBus.names new file mode 100644 index 0000000000..5298a19f9e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PrefabSystemScriptingBus.names @@ -0,0 +1,50 @@ +{ + "entries": [ + { + "key": "PrefabSystemScriptingBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Prefab System" + }, + "methods": [ + { + "key": "CreatePrefab", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create Prefab" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create Prefab is invoked" + }, + "details": { + "name": "Create Prefab" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "Entity Ids" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "File Path" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "Template Id" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ProfilingCaptureRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ProfilingCaptureRequestBus.names new file mode 100644 index 0000000000..a837c5d68a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ProfilingCaptureRequestBus.names @@ -0,0 +1,140 @@ +{ + "entries": [ + { + "key": "ProfilingCaptureRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "ProfilingCaptureRequestBus" + }, + "methods": [ + { + "key": "CapturePassTimestamp", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CapturePassTimestamp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CapturePassTimestamp is invoked" + }, + "details": { + "name": "CapturePassTimestamp" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "CaptureCpuFrameTime", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CaptureCpuFrameTime" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CaptureCpuFrameTime is invoked" + }, + "details": { + "name": "CaptureCpuFrameTime" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "CapturePassPipelineStatistics", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CapturePassPipelineStatistics" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CapturePassPipelineStatistics is invoked" + }, + "details": { + "name": "CapturePassPipelineStatistics" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "CaptureBenchmarkMetadata", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CaptureBenchmarkMetadata" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CaptureBenchmarkMetadata is invoked" + }, + "details": { + "name": "CaptureBenchmarkMetadata" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PythonEditorBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PythonEditorBus.names new file mode 100644 index 0000000000..65a5b9d9b2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/PythonEditorBus.names @@ -0,0 +1,752 @@ +{ + "entries": [ + { + "key": "PythonEditorBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "PythonEditorBus" + }, + "methods": [ + { + "key": "ExecuteCommand", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ExecuteCommand" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ExecuteCommand is invoked" + }, + "details": { + "name": "ExecuteCommand" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "GetCVar", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCVar" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCVar is invoked" + }, + "details": { + "name": "GetCVar" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ], + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "IsInSimulationMode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsInSimulationMode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsInSimulationMode is invoked" + }, + "details": { + "name": "IsInSimulationMode" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetAxisConstraint", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetAxisConstraint" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetAxisConstraint is invoked" + }, + "details": { + "name": "SetAxisConstraint" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "" + } + } + ] + }, + { + "key": "IsInGameMode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsInGameMode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsInGameMode is invoked" + }, + "details": { + "name": "IsInGameMode" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetCVarFromFloat", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetCVarFromFloat" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetCVarFromFloat is invoked" + }, + "details": { + "name": "SetCVarFromFloat" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "MessageBoxYesNo", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MessageBoxYesNo" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MessageBoxYesNo is invoked" + }, + "details": { + "name": "MessageBoxYesNo" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Redo", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Redo" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Redo is invoked" + }, + "details": { + "name": "Redo" + } + }, + { + "key": "SetCVarFromInteger", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetCVarFromInteger" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetCVarFromInteger is invoked" + }, + "details": { + "name": "SetCVarFromInteger" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "DrawLabel", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DrawLabel" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DrawLabel is invoked" + }, + "details": { + "name": "DrawLabel" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "Undo", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Undo" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Undo is invoked" + }, + "details": { + "name": "Undo" + } + }, + { + "key": "Log", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Log" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Log is invoked" + }, + "details": { + "name": "Log" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "ComboBox", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ComboBox" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ComboBox is invoked" + }, + "details": { + "name": "ComboBox" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "ExitGameMode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ExitGameMode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ExitGameMode is invoked" + }, + "details": { + "name": "ExitGameMode" + } + }, + { + "key": "OpenFileBox", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke OpenFileBox" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after OpenFileBox is invoked" + }, + "details": { + "name": "OpenFileBox" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "MessageBoxOk", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MessageBoxOk" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MessageBoxOk is invoked" + }, + "details": { + "name": "MessageBoxOk" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "RunFile", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RunFile" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RunFile is invoked" + }, + "details": { + "name": "RunFile" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "EditBoxCheckDataType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EditBoxCheckDataType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EditBoxCheckDataType is invoked" + }, + "details": { + "name": "EditBoxCheckDataType" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ], + "results": [ + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "any" + } + } + ] + }, + { + "key": "SetCVarFromString", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetCVarFromString" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetCVarFromString is invoked" + }, + "details": { + "name": "SetCVarFromString" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "RunConsole", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RunConsole" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RunConsole is invoked" + }, + "details": { + "name": "RunConsole" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "ExitSimulationMode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ExitSimulationMode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ExitSimulationMode is invoked" + }, + "details": { + "name": "ExitSimulationMode" + } + }, + { + "key": "SetCVar", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetCVar" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetCVar is invoked" + }, + "details": { + "name": "SetCVar" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "any" + } + } + ] + }, + { + "key": "GetPakFromFile", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPakFromFile" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPakFromFile is invoked" + }, + "details": { + "name": "GetPakFromFile" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ], + "results": [ + { + "typeid": "{88E0A40F-3085-4CAB-8B11-EF5A2659C71A}", + "details": { + "name": "AZ::IO::Path" + } + } + ] + }, + { + "key": "RunFileParameters", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RunFileParameters" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RunFileParameters is invoked" + }, + "details": { + "name": "RunFileParameters" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "EnterSimulationMode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EnterSimulationMode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EnterSimulationMode is invoked" + }, + "details": { + "name": "EnterSimulationMode" + } + }, + { + "key": "GetAxisConstraint", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAxisConstraint" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAxisConstraint is invoked" + }, + "details": { + "name": "GetAxisConstraint" + }, + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "EnterGameMode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EnterGameMode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EnterGameMode is invoked" + }, + "details": { + "name": "EnterGameMode" + } + }, + { + "key": "MessageBoxOkCancel", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MessageBoxOkCancel" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MessageBoxOkCancel is invoked" + }, + "details": { + "name": "MessageBoxOkCancel" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "EditBox", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EditBox" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EditBox is invoked" + }, + "details": { + "name": "EditBox" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/QuadShapeComponentRequestsBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/QuadShapeComponentRequestsBus.names new file mode 100644 index 0000000000..c6ed9646fc --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/QuadShapeComponentRequestsBus.names @@ -0,0 +1,147 @@ +{ + "entries": [ + { + "key": "QuadShapeComponentRequestsBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "QuadShapeComponentRequestsBus" + }, + "methods": [ + { + "key": "SetQuadHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetQuadHeight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetQuadHeight is invoked" + }, + "details": { + "name": "SetQuadHeight" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetQuadWidth", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetQuadWidth" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetQuadWidth is invoked" + }, + "details": { + "name": "GetQuadWidth" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetQuadHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetQuadHeight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetQuadHeight is invoked" + }, + "details": { + "name": "GetQuadHeight" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetQuadConfiguration", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetQuadConfiguration" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetQuadConfiguration is invoked" + }, + "details": { + "name": "GetQuadConfiguration" + }, + "results": [ + { + "typeid": "{35CA7415-DB12-4630-B0D0-4A140CE1B9A7}", + "details": { + "name": "Configuration", + "tooltip": "Quad shape configuration parameters" + } + } + ] + }, + { + "key": "SetQuadWidth", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetQuadWidth" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetQuadWidth is invoked" + }, + "details": { + "name": "SetQuadWidth" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetQuadOrientation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetQuadOrientation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetQuadOrientation is invoked" + }, + "details": { + "name": "GetQuadOrientation" + }, + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/RandomGradientRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/RandomGradientRequestBus.names new file mode 100644 index 0000000000..38a342f1b4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/RandomGradientRequestBus.names @@ -0,0 +1,58 @@ +{ + "entries": [ + { + "key": "RandomGradientRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "RandomGradientRequestBus" + }, + "methods": [ + { + "key": "GetRandomSeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetRandomSeed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetRandomSeed is invoked" + }, + "details": { + "name": "GetRandomSeed" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetRandomSeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetRandomSeed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetRandomSeed is invoked" + }, + "details": { + "name": "SetRandomSeed" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/RandomTimedSpawnerRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/RandomTimedSpawnerRequestBus.names new file mode 100644 index 0000000000..89849e3596 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/RandomTimedSpawnerRequestBus.names @@ -0,0 +1,210 @@ +{ + "entries": [ + { + "key": "RandomTimedSpawnerRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "RandomTimedSpawnerRequestBus" + }, + "methods": [ + { + "key": "SetSpawnDelay", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSpawnDelay" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSpawnDelay is invoked" + }, + "details": { + "name": "SetSpawnDelay" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "GetSpawnDelay", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSpawnDelay" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSpawnDelay is invoked" + }, + "details": { + "name": "GetSpawnDelay" + }, + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "SetSpawnDelayVariation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSpawnDelayVariation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSpawnDelayVariation is invoked" + }, + "details": { + "name": "SetSpawnDelayVariation" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "SetRandomDistribution", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetRandomDistribution" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetRandomDistribution is invoked" + }, + "details": { + "name": "SetRandomDistribution" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "IsEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsEnabled is invoked" + }, + "details": { + "name": "IsEnabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Disable", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Disable" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Disable is invoked" + }, + "details": { + "name": "Disable" + } + }, + { + "key": "Toggle", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Toggle" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Toggle is invoked" + }, + "details": { + "name": "Toggle" + } + }, + { + "key": "GetRandomDistribution", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetRandomDistribution" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetRandomDistribution is invoked" + }, + "details": { + "name": "GetRandomDistribution" + }, + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "Enable", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Enable" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Enable is invoked" + }, + "details": { + "name": "Enable" + } + }, + { + "key": "GetSpawnDelayVariation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSpawnDelayVariation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSpawnDelayVariation is invoked" + }, + "details": { + "name": "GetSpawnDelayVariation" + }, + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ReferenceGradientRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ReferenceGradientRequestBus.names new file mode 100644 index 0000000000..c4be7ca85b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ReferenceGradientRequestBus.names @@ -0,0 +1,36 @@ +{ + "entries": [ + { + "key": "ReferenceGradientRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "ReferenceGradientRequestBus" + }, + "methods": [ + { + "key": "GetGradientSampler", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetGradientSampler" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetGradientSampler is invoked" + }, + "details": { + "name": "GetGradientSampler" + }, + "results": [ + { + "typeid": "{3768D3A6-BF70-4ABC-B4EC-73C75A886916}", + "details": { + "name": "Gradient Sampler" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/RenderMeshComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/RenderMeshComponentRequestBus.names new file mode 100644 index 0000000000..7323de56d7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/RenderMeshComponentRequestBus.names @@ -0,0 +1,322 @@ +{ + "entries": [ + { + "key": "RenderMeshComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "RenderMeshComponentRequestBus" + }, + "methods": [ + { + "key": "GetLodOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetLodOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetLodOverride is invoked" + }, + "details": { + "name": "GetLodOverride" + }, + "results": [ + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "unsigned char" + } + } + ] + }, + { + "key": "GetSortKey", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSortKey" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSortKey is invoked" + }, + "details": { + "name": "GetSortKey" + }, + "results": [ + { + "typeid": "{70D8A282-A1EA-462D-9D04-51EDE81FAC2F}", + "details": { + "name": "AZ::s64" + } + } + ] + }, + { + "key": "SetQualityDecayRate", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetQualityDecayRate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetQualityDecayRate is invoked" + }, + "details": { + "name": "SetQualityDecayRate" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetSortKey", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSortKey" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSortKey is invoked" + }, + "details": { + "name": "SetSortKey" + }, + "params": [ + { + "typeid": "{70D8A282-A1EA-462D-9D04-51EDE81FAC2F}", + "details": { + "name": "AZ::s64" + } + } + ] + }, + { + "key": "GetModelAssetPath", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetModelAssetPath" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetModelAssetPath is invoked" + }, + "details": { + "name": "GetModelAssetPath" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetLodType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetLodType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetLodType is invoked" + }, + "details": { + "name": "SetLodType" + }, + "params": [ + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "unsigned char" + } + } + ] + }, + { + "key": "SetLodOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetLodOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetLodOverride is invoked" + }, + "details": { + "name": "SetLodOverride" + }, + "params": [ + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "unsigned char" + } + } + ] + }, + { + "key": "SetMinimumScreenCoverage", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetMinimumScreenCoverage" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetMinimumScreenCoverage is invoked" + }, + "details": { + "name": "SetMinimumScreenCoverage" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetModelAssetId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetModelAssetId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetModelAssetId is invoked" + }, + "details": { + "name": "SetModelAssetId" + }, + "params": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "GetLodType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetLodType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetLodType is invoked" + }, + "details": { + "name": "GetLodType" + }, + "results": [ + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "unsigned char" + } + } + ] + }, + { + "key": "GetMinimumScreenCoverage", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetMinimumScreenCoverage" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetMinimumScreenCoverage is invoked" + }, + "details": { + "name": "GetMinimumScreenCoverage" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetModelAssetId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetModelAssetId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetModelAssetId is invoked" + }, + "details": { + "name": "GetModelAssetId" + }, + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "SetModelAssetPath", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetModelAssetPath" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetModelAssetPath is invoked" + }, + "details": { + "name": "SetModelAssetPath" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetQualityDecayRate", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetQualityDecayRate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetQualityDecayRate is invoked" + }, + "details": { + "name": "GetQualityDecayRate" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/RigidBodyRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/RigidBodyRequestBus.names new file mode 100644 index 0000000000..412136183b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/RigidBodyRequestBus.names @@ -0,0 +1,722 @@ +{ + "entries": [ + { + "key": "RigidBodyRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Rigid Body" + }, + "methods": [ + { + "key": "SetLinearVelocity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Linear Velocity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Linear Velocity is invoked" + }, + "details": { + "name": "Set Linear Velocity" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Linear Velocity" + } + } + ] + }, + { + "key": "SetKinematic", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Kinematic" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Kinematic is invoked" + }, + "details": { + "name": "Set Kinematic" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enabled" + } + } + ] + }, + { + "key": "SetMass", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Mass" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Mass is invoked" + }, + "details": { + "name": "Set Mass" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Mass" + } + } + ] + }, + { + "key": "SetGravityEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Gravity Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Gravity Enabled is invoked" + }, + "details": { + "name": "Set Gravity Enabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enabled" + } + } + ] + }, + { + "key": "GetAabb", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get AABB" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get AABB is invoked" + }, + "details": { + "name": "Get AABB" + }, + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "AABB" + } + } + ] + }, + { + "key": "ForceAwake", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Force Awake" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Force Awake is invoked" + }, + "details": { + "name": "Force Awake" + } + }, + { + "key": "SetAngularDamping", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Angular Damping" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Angular Damping is invoked" + }, + "details": { + "name": "Set Angular Damping" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Angular Damping" + } + } + ] + }, + { + "key": "ApplyAngularImpulse", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Apply Angular Impulse" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Apply Angular Impulse is invoked" + }, + "details": { + "name": "Apply Angular Impulse" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Angular Impulse" + } + } + ] + }, + { + "key": "DisablePhysics", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Disable Physics" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Disable Physics is invoked" + }, + "details": { + "name": "Disable Physics" + } + }, + { + "key": "SetSimulationEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Simulation Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Simulation Enabled is invoked" + }, + "details": { + "name": "Set Simulation Enabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enabled" + } + } + ] + }, + { + "key": "GetLinearVelocityAtWorldPoint", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Linear Velocity At World Point" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Linear Velocity At World Point is invoked" + }, + "details": { + "name": "Get Linear Velocity At World Point" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Linear Velocity" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "World Point" + } + } + ] + }, + { + "key": "SetAngularVelocity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Angular Velocity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Angular Velocity is invoked" + }, + "details": { + "name": "Set Angular Velocity" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Angular Velocity" + } + } + ] + }, + { + "key": "SetCenterOfMassOffset", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Center Of Mass Offset" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Center Of Mass Offset is invoked" + }, + "details": { + "name": "Set Center Of Mass Offset" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Offset" + } + } + ] + }, + { + "key": "IsPhysicsEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Physics Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Physics Enabled is invoked" + }, + "details": { + "name": "Is Physics Enabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enabled" + } + } + ] + }, + { + "key": "GetSleepThreshold", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Sleep Threshold" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Sleep Threshold is invoked" + }, + "details": { + "name": "Get Sleep Threshold" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Sleep Threshold" + } + } + ] + }, + { + "key": "SetKinematicTarget", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Kinematic Target" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Kinematic Target is invoked" + }, + "details": { + "name": "Set Kinematic Target" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Kinematic Target" + } + } + ] + }, + { + "key": "EnablePhysics", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Enable Physics" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Enable Physics is invoked" + }, + "details": { + "name": "Enable Physics" + } + }, + { + "key": "GetLinearDamping", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Linear Damping" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Linear Damping is invoked" + }, + "details": { + "name": "Get Linear Damping" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Linear Damping" + } + } + ] + }, + { + "key": "ApplyLinearImpulseAtWorldPoint", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Apply Linear Impulse At World Point" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Apply Linear Impulse At World Point is invoked" + }, + "details": { + "name": "Apply Linear Impulse At World Point" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Linear Impulse" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "World Point" + } + } + ] + }, + { + "key": "GetCenterOfMassWorld", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Center Of Mass World" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Center Of Mass World is invoked" + }, + "details": { + "name": "Get Center Of Mass World" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Center of Mass (World)" + } + } + ] + }, + { + "key": "GetCenterOfMassLocal", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Center Of Mass Local" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Center Of Mass Local is invoked" + }, + "details": { + "name": "Get Center Of Mass Local" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Center Of Mass (Local)" + } + } + ] + }, + { + "key": "SetLinearDamping", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Linear Damping" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Linear Damping is invoked" + }, + "details": { + "name": "Set Linear Damping" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Linear Damping" + } + } + ] + }, + { + "key": "GetAngularDamping", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Angular Damping" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Angular Damping is invoked" + }, + "details": { + "name": "Get Angular Damping" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Angular Damping" + } + } + ] + }, + { + "key": "GetLinearVelocity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Linear Velocity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Linear Velocity is invoked" + }, + "details": { + "name": "Get Linear Velocity" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Linear Velocity" + } + } + ] + }, + { + "key": "IsAwake", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Awake" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Awake is invoked" + }, + "details": { + "name": "Is Awake" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Awake" + } + } + ] + }, + { + "key": "IsGravityEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Gravity Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Gravity Enabled is invoked" + }, + "details": { + "name": "Is Gravity Enabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Gravity Enabled" + } + } + ] + }, + { + "key": "GetInverseMass", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Inverse Mass" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Inverse Mass is invoked" + }, + "details": { + "name": "Get Inverse Mass" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Inverse Mass" + } + } + ] + }, + { + "key": "SetSleepThreshold", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Sleep Threshold" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Sleep Threshold is invoked" + }, + "details": { + "name": "Set Sleep Threshold" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Sleep Threshold" + } + } + ] + }, + { + "key": "ForceAsleep", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Force Asleep" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Force Asleep is invoked" + }, + "details": { + "name": "Force Asleep" + } + }, + { + "key": "GetMass", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Mass" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Mass is invoked" + }, + "details": { + "name": "Get Mass" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Mass" + } + } + ] + }, + { + "key": "IsKinematic", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Kinematic" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Kinematic is invoked" + }, + "details": { + "name": "Is Kinematic" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Kinematic" + } + } + ] + }, + { + "key": "ApplyLinearImpulse", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Apply Linear Impulse" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Apply Linear Impulse is invoked" + }, + "details": { + "name": "Apply Linear Impulse" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Linear Impulse" + } + } + ] + }, + { + "key": "GetAngularVelocity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Angular Velocity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Angular Velocity is invoked" + }, + "details": { + "name": "Get Angular Velocity" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Angular Velocity" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SceneRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SceneRequestBus.names new file mode 100644 index 0000000000..346e1aa1f4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SceneRequestBus.names @@ -0,0 +1,70 @@ +{ + "entries": [ + { + "key": "SceneRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "SceneRequestBus" + }, + "methods": [ + { + "key": "CutSelection", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CutSelection" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CutSelection is invoked" + }, + "details": { + "name": "CutSelection" + } + }, + { + "key": "CopySelection", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CopySelection" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CopySelection is invoked" + }, + "details": { + "name": "CopySelection" + } + }, + { + "key": "Paste", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Paste" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Paste is invoked" + }, + "details": { + "name": "Paste" + } + }, + { + "key": "DuplicateSelection", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DuplicateSelection" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DuplicateSelection is invoked" + }, + "details": { + "name": "DuplicateSelection" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SequenceComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SequenceComponentRequestBus.names new file mode 100644 index 0000000000..f51021f9b4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SequenceComponentRequestBus.names @@ -0,0 +1,226 @@ +{ + "entries": [ + { + "key": "SequenceComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Sequence", + "category": "Animation" + }, + "methods": [ + { + "key": "GetPlaySpeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPlaySpeed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPlaySpeed is invoked" + }, + "details": { + "name": "Get Play Speed", + "tooltip": "Returns the current play back speed as a multiplier (1.0 is normal speed, less is slower, more is faster)" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Play Speed" + } + } + ] + }, + { + "key": "JumpToTime", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Jump To Time" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Jump To Time is invoked" + }, + "details": { + "name": "Jump To Time", + "tooltip": "Move the Playhead to the given time" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Time" + } + } + ] + }, + { + "key": "Resume", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resume" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resume is invoked" + }, + "details": { + "name": "Resume", + "tooltip": "Resume the sequence. Resume essentially 'unpauses' a sequence. It must have been playing before the pause for playback to start again" + } + }, + { + "key": "JumpToEnd", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Jump To End" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Jump To End is invoked" + }, + "details": { + "name": "Jump To End", + "tooltip": "Move the Playhead to the end of the sequence" + } + }, + { + "key": "GetCurrentPlayTime", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Current Play Time" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Current Play Time is invoked" + }, + "details": { + "name": "Get Current Play Time", + "tooltip": " Returns the current play time in seconds" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Play Time" + } + } + ] + }, + { + "key": "Pause", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Pause" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Pause is invoked" + }, + "details": { + "name": "Pause", + "tooltip": "Pause the sequence. Sequence must be playing for pause to have an effect. Pausing leaves the play time at its current position" + } + }, + { + "key": "PlayBetweenTimes", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PlayBetweenTimes" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PlayBetweenTimes is invoked" + }, + "details": { + "name": "PlayBetweenTimes", + "tooltip": "Play sequence between the start to end times, outside of which the sequence behaves according to its 'Out of Range' time setting" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Start Time" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "End Time" + } + } + ] + }, + { + "key": "Stop", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Stop" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Stop is invoked" + }, + "details": { + "name": "Stop", + "tooltip": "Pause the sequence. Sequence must be playing for pause to have an effect. Pausing leaves the play time at its current position" + } + }, + { + "key": "JumpToBeginning", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Jump To Beginning" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Jump To Beginning is invoked" + }, + "details": { + "name": "Jump To Beginning", + "tooltip": "Move the Playhead to the beginning of the sequence" + } + }, + { + "key": "Play", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Play" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Play is invoked" + }, + "details": { + "name": "Play", + "tooltip": "Play sequence from the start to end times set the sequence" + } + }, + { + "key": "SetPlaySpeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetPlaySpeed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetPlaySpeed is invoked" + }, + "details": { + "name": "SetPlaySpeed", + "tooltip": "Set the play speed" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Play Speed" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ShapeAreaFalloffGradientRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ShapeAreaFalloffGradientRequestBus.names new file mode 100644 index 0000000000..9c42af794f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ShapeAreaFalloffGradientRequestBus.names @@ -0,0 +1,148 @@ +{ + "entries": [ + { + "key": "ShapeAreaFalloffGradientRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "ShapeAreaFalloffGradientRequestBus" + }, + "methods": [ + { + "key": "SetFalloffType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetFalloffType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetFalloffType is invoked" + }, + "details": { + "name": "SetFalloffType" + }, + "params": [ + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "unsigned char" + } + } + ] + }, + { + "key": "SetFalloffWidth", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetFalloffWidth" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetFalloffWidth is invoked" + }, + "details": { + "name": "SetFalloffWidth" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetFalloffType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetFalloffType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetFalloffType is invoked" + }, + "details": { + "name": "GetFalloffType" + }, + "results": [ + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "unsigned char" + } + } + ] + }, + { + "key": "GetFalloffWidth", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetFalloffWidth" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetFalloffWidth is invoked" + }, + "details": { + "name": "GetFalloffWidth" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetShapeEntityId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetShapeEntityId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetShapeEntityId is invoked" + }, + "details": { + "name": "SetShapeEntityId" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetShapeEntityId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetShapeEntityId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetShapeEntityId is invoked" + }, + "details": { + "name": "GetShapeEntityId" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ShapeComponentRequestsBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ShapeComponentRequestsBus.names new file mode 100644 index 0000000000..f58f8d8dce --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ShapeComponentRequestsBus.names @@ -0,0 +1,160 @@ +{ + "entries": [ + { + "key": "ShapeComponentRequestsBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "ShapeComponentRequestsBus", + "category": "Shape" + }, + "methods": [ + { + "key": "DistanceSquaredFromPoint", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Distance Squared From Point" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Distance Squared From Point is invoked" + }, + "details": { + "name": "Distance Squared From Point", + "tooltip": "Returns the minimum squared distance between a specified point and the shape" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Point", + "tooltip": "Point from which to calculate square distance" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float", + "tooltip": "Point from which to calculate square distance" + } + } + ] + }, + { + "key": "DistanceFromPoint", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Distance From Point" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Distance From Point is invoked" + }, + "details": { + "name": "Distance From Point", + "tooltip": "Returns the minimum distance between a specified point and the shape" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Point", + "tooltip": "Point from which to calculate distance" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float", + "tooltip": "Point from which to calculate distance" + } + } + ] + }, + { + "key": "IsPointInside", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Point Inside" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Point Inside is invoked" + }, + "details": { + "name": "Is Point Inside", + "tooltip": "Checks if a given point is inside a shape or outside it" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Point", + "tooltip": "The point to be checked" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool", + "tooltip": "The point to be checked" + } + } + ] + }, + { + "key": "GetEncompassingAabb", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Encompassing Aabb" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Encompassing Aabb is invoked" + }, + "details": { + "name": "Get Encompassing Aabb", + "tooltip": "Returns an AABB that encompasses this entire shape" + }, + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "GetShapeType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Shape Type" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Shape Type is invoked" + }, + "details": { + "name": "Get Shape Type", + "tooltip": "Allows users to fetch the type of shape that this component is using" + }, + "results": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SimpleMotionComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SimpleMotionComponentRequestBus.names new file mode 100644 index 0000000000..182ded9e83 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SimpleMotionComponentRequestBus.names @@ -0,0 +1,359 @@ +{ + "entries": [ + { + "key": "SimpleMotionComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Simple Motion", + "category": "Animation" + }, + "methods": [ + { + "key": "BlendOutTime", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Blend Out Time" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Blend Out Time is invoked" + }, + "details": { + "name": "Blend Out Time" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Time" + } + } + ] + }, + { + "key": "GetBlendInTime", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Blend In Time" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Blend In Time is invoked" + }, + "details": { + "name": "Get Blend In Time" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Time" + } + } + ] + }, + { + "key": "PlayMotion", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PlayMotion" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PlayMotion is invoked" + }, + "details": { + "name": "Play Motion" + } + }, + { + "key": "GetMotion", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetMotion" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetMotion is invoked" + }, + "details": { + "name": "Get Motion" + }, + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "Asset Id" + } + } + ] + }, + { + "key": "GetBlendOutTime", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Blend Out Time" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Blend Out Time is invoked" + }, + "details": { + "name": "Get Blend Out Time" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Time" + } + } + ] + }, + { + "key": "ReverseMotion", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reverse Motion" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reverse Motion is invoked" + }, + "details": { + "name": "Reverse Motion" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enable" + } + } + ] + }, + { + "key": "GetPlaySpeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Play Speed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Play Speed is invoked" + }, + "details": { + "name": "Get Play Speed" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Speed" + } + } + ] + }, + { + "key": "GetPlayTime", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Play Time" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Play Time is invoked" + }, + "details": { + "name": "Get Play Time" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Time" + } + } + ] + }, + { + "key": "RetargetMotion", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Retarget Motion" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Retarget Motion is invoked" + }, + "details": { + "name": "Retarget Motion" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enable" + } + } + ] + }, + { + "key": "SetPlaySpeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Play Speed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Play Speed is invoked" + }, + "details": { + "name": "Set Play Speed" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Speed" + } + } + ] + }, + { + "key": "Motion", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Motion" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Motion is invoked" + }, + "details": { + "name": "Motion" + }, + "params": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "Asset Id" + } + } + ] + }, + { + "key": "BlendInTime", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Blend In Time" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Blend In Time is invoked" + }, + "details": { + "name": "Blend In Time" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Time" + } + } + ] + }, + { + "key": "GetLoopMotion", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Loop Motion" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Loop Motion is invoked" + }, + "details": { + "name": "Get Loop Motion" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Loop Motion" + } + } + ] + }, + { + "key": "PlayTime", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Play Time" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Play Time is invoked" + }, + "details": { + "name": "Play Time" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Time" + } + } + ] + }, + { + "key": "LoopMotion", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Loop Motion" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Loop Motion is invoked" + }, + "details": { + "name": "Loop Motion" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enable" + } + } + ] + }, + { + "key": "MirrorMotion", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Mirror Motion" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Mirror Motion is invoked" + }, + "details": { + "name": "Mirror Motion" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enable" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SimpleStateComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SimpleStateComponentRequestBus.names new file mode 100644 index 0000000000..c234b3503c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SimpleStateComponentRequestBus.names @@ -0,0 +1,169 @@ +{ + "entries": [ + { + "key": "SimpleStateComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "SimpleStateComponentRequestBus", + "category": "Gameplay" + }, + "methods": [ + { + "key": "GetNumStates", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get State Count" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get State Count is invoked" + }, + "details": { + "name": "Get State Count", + "tooltip": "Returns the number of states" + }, + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "SetToLastState", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set To Last" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set To Last is invoked" + }, + "details": { + "name": "Set To Last", + "tooltip": "Sets to the last state in the state list" + } + }, + { + "key": "SetToPreviousState", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set To Previous" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set To Previous is invoked" + }, + "details": { + "name": "Set To Previous", + "tooltip": "Sets to the previous state in the state list from the current state" + } + }, + { + "key": "SetToFirstState", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set To First" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set To First is invoked" + }, + "details": { + "name": "Set To First", + "tooltip": "Sets to the first state in the state list" + } + }, + { + "key": "SetToNextState", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set To Next" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set To Next is invoked" + }, + "details": { + "name": "Set To Next", + "tooltip": "Sets to the next state in the state list from the current state" + } + }, + { + "key": "SetStateByIndex", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set State by Index" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set State by Index is invoked" + }, + "details": { + "name": "Set State by Index", + "tooltip": "Sets the state by index" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Index", + "tooltip": "State index" + } + } + ] + }, + { + "key": "SetState", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set State" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set State is invoked" + }, + "details": { + "name": "Set State", + "tooltip": "Sets the state by name" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Name", + "tooltip": "State name" + } + } + ] + }, + { + "key": "GetCurrentState", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Current State" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Current State is invoked" + }, + "details": { + "name": "Get Current State", + "tooltip": "Gets the current state name" + }, + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SimulatedBodyComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SimulatedBodyComponentRequestBus.names new file mode 100644 index 0000000000..fc0cf7e60d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SimulatedBodyComponentRequestBus.names @@ -0,0 +1,117 @@ +{ + "entries": [ + { + "key": "SimulatedBodyComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Simulated Body" + }, + "methods": [ + { + "key": "GetAabb", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get AABB" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get AABB is invoked" + }, + "details": { + "name": "Get AABB" + }, + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "AABB" + } + } + ] + }, + { + "key": "IsPhysicsEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsPhysicsEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsPhysicsEnabled is invoked" + }, + "details": { + "name": "Is Physics Enabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enabled" + } + } + ] + }, + { + "key": "RayCast", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RayCast" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RayCast is invoked" + }, + "details": { + "name": "Ray Cast" + }, + "params": [ + { + "typeid": "{53EAD088-A391-48F1-8370-2A1DBA31512F}", + "details": { + "name": "RayCast Request", + "tooltip": "Parameters for raycast" + } + } + ], + "results": [ + { + "typeid": "{7A7201B9-67B5-438B-B4EB-F3EEBB78C617}", + "details": { + "name": "Scene Query Hit" + } + } + ] + }, + { + "key": "DisablePhysics", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Disable Physics" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Disable Physics is invoked" + }, + "details": { + "name": "Disable Physics" + } + }, + { + "key": "EnablePhysics", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EnablePhysics" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EnablePhysics is invoked" + }, + "details": { + "name": "Enable Physics" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SkyBoxFogRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SkyBoxFogRequestBus.names new file mode 100644 index 0000000000..477f4fc85c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SkyBoxFogRequestBus.names @@ -0,0 +1,190 @@ +{ + "entries": [ + { + "key": "SkyBoxFogRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "SkyBoxFogRequestBus" + }, + "methods": [ + { + "key": "GetBottomHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetBottomHeight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetBottomHeight is invoked" + }, + "details": { + "name": "GetBottomHeight" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetColor is invoked" + }, + "details": { + "name": "GetColor" + }, + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "SetBottomHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetBottomHeight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetBottomHeight is invoked" + }, + "details": { + "name": "SetBottomHeight" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetColor is invoked" + }, + "details": { + "name": "SetColor" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "GetTopHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTopHeight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTopHeight is invoked" + }, + "details": { + "name": "GetTopHeight" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "IsEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsEnabled is invoked" + }, + "details": { + "name": "IsEnabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetTopHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetTopHeight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetTopHeight is invoked" + }, + "details": { + "name": "SetTopHeight" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEnabled is invoked" + }, + "details": { + "name": "SetEnabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SliceRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SliceRequestBus.names new file mode 100644 index 0000000000..1794a68d04 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SliceRequestBus.names @@ -0,0 +1,167 @@ +{ + "entries": [ + { + "key": "SliceRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "SliceRequestBus" + }, + "methods": [ + { + "key": "CreateNewSlice", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CreateNewSlice" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CreateNewSlice is invoked" + }, + "details": { + "name": "CreateNewSlice" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "InstantiateSliceFromAssetId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke InstantiateSliceFromAssetId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after InstantiateSliceFromAssetId is invoked" + }, + "details": { + "name": "InstantiateSliceFromAssetId" + }, + "params": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ], + "results": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "SliceInstantiationTicket" + } + } + ] + }, + { + "key": "SetSliceDynamic", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSliceDynamic" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSliceDynamic is invoked" + }, + "details": { + "name": "SetSliceDynamic" + }, + "params": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "ShowPushDialog", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ShowPushDialog" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ShowPushDialog is invoked" + }, + "details": { + "name": "ShowPushDialog" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "IsSliceDynamic", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsSliceDynamic" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsSliceDynamic is invoked" + }, + "details": { + "name": "IsSliceDynamic" + }, + "params": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SmoothStepGradientRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SmoothStepGradientRequestBus.names new file mode 100644 index 0000000000..2c51d78c35 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SmoothStepGradientRequestBus.names @@ -0,0 +1,36 @@ +{ + "entries": [ + { + "key": "SmoothStepGradientRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "SmoothStepGradientRequestBus" + }, + "methods": [ + { + "key": "GetGradientSampler", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetGradientSampler" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetGradientSampler is invoked" + }, + "details": { + "name": "GetGradientSampler" + }, + "results": [ + { + "typeid": "{3768D3A6-BF70-4ABC-B4EC-73C75A886916}", + "details": { + "name": "Gradient Sampler" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SmoothStepRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SmoothStepRequestBus.names new file mode 100644 index 0000000000..719b54ec45 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SmoothStepRequestBus.names @@ -0,0 +1,146 @@ +{ + "entries": [ + { + "key": "SmoothStepRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "SmoothStepRequestBus" + }, + "methods": [ + { + "key": "GetFallOffStrength", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetFallOffStrength" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetFallOffStrength is invoked" + }, + "details": { + "name": "GetFallOffStrength" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetFallOffStrength", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetFallOffStrength" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetFallOffStrength is invoked" + }, + "details": { + "name": "SetFallOffStrength" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetFallOffRange", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetFallOffRange" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetFallOffRange is invoked" + }, + "details": { + "name": "GetFallOffRange" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetFallOffMidpoint", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetFallOffMidpoint" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetFallOffMidpoint is invoked" + }, + "details": { + "name": "SetFallOffMidpoint" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetFallOffRange", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetFallOffRange" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetFallOffRange is invoked" + }, + "details": { + "name": "SetFallOffRange" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetFallOffMidpoint", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetFallOffMidpoint" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetFallOffMidpoint is invoked" + }, + "details": { + "name": "GetFallOffMidpoint" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SpawnerComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SpawnerComponentRequestBus.names new file mode 100644 index 0000000000..aa1b298bde --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SpawnerComponentRequestBus.names @@ -0,0 +1,280 @@ +{ + "entries": [ + { + "key": "SpawnerComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "SpawnerComponentRequestBus", + "category": "Gameplay" + }, + "methods": [ + { + "key": "SetDynamicSlice", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetDynamicSlice" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetDynamicSlice is invoked" + }, + "details": { + "name": "SetDynamicSlice" + }, + "params": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "GetCurrentlySpawnedSlices", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCurrentlySpawnedSlices" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCurrentlySpawnedSlices is invoked" + }, + "details": { + "name": "GetCurrentlySpawnedSlices" + }, + "results": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "" + } + } + ] + }, + { + "key": "HasAnyCurrentlySpawnedSlices", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke HasAnyCurrentlySpawnedSlices" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after HasAnyCurrentlySpawnedSlices is invoked" + }, + "details": { + "name": "HasAnyCurrentlySpawnedSlices" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetAllCurrentlySpawnedEntities", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAllCurrentlySpawnedEntities" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAllCurrentlySpawnedEntities is invoked" + }, + "details": { + "name": "GetAllCurrentlySpawnedEntities" + }, + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "DestroyAllSpawnedSlices", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DestroyAllSpawnedSlices" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DestroyAllSpawnedSlices is invoked" + }, + "details": { + "name": "DestroyAllSpawnedSlices" + } + }, + { + "key": "GetCurrentEntitiesFromSpawnedSlice", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCurrentEntitiesFromSpawnedSlice" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCurrentEntitiesFromSpawnedSlice is invoked" + }, + "details": { + "name": "GetCurrentEntitiesFromSpawnedSlice" + }, + "params": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "SliceInstantiationTicket" + } + } + ], + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "DestroySpawnedSlice", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DestroySpawnedSlice" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DestroySpawnedSlice is invoked" + }, + "details": { + "name": "DestroySpawnedSlice" + }, + "params": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "SliceInstantiationTicket" + } + } + ] + }, + { + "key": "IsReadyToSpawn", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsReadyToSpawn" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsReadyToSpawn is invoked" + }, + "details": { + "name": "IsReadyToSpawn" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SpawnRelative", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Spawn Relative" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Spawn Relative is invoked" + }, + "details": { + "name": "Spawn Relative", + "tooltip": "Spawn the selected slice at the entity's location with the provided relative offset" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Offset", + "tooltip": "The relative offset from the entity" + } + } + ], + "results": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "SliceInstantiationTicket", + "tooltip": "The relative offset from the entity" + } + } + ] + }, + { + "key": "Spawn", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Spawn" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Spawn is invoked" + }, + "details": { + "name": "Spawn", + "tooltip": "Spawns the designated slice at the entity's location" + }, + "results": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "SliceInstantiationTicket" + } + } + ] + }, + { + "key": "SpawnAbsolute", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Spawn Absolute" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Spawn Absolute is invoked" + }, + "details": { + "name": "Spawn Absolute", + "tooltip": "Spawn the selected slice at an absolute position" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Position", + "tooltip": "The absolute position where the entity should spawn" + } + } + ], + "results": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "SliceInstantiationTicket", + "tooltip": "The absolute position where the entity should spawn" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SphereShapeComponentRequestsBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SphereShapeComponentRequestsBus.names new file mode 100644 index 0000000000..cc5521d074 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SphereShapeComponentRequestsBus.names @@ -0,0 +1,63 @@ +{ + "entries": [ + { + "key": "SphereShapeComponentRequestsBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "SphereShapeComponentRequestsBus", + "category": "Shape" + }, + "methods": [ + { + "key": "GetSphereConfiguration", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Configuration" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Configuration is invoked" + }, + "details": { + "name": "Get Configuration", + "tooltip": "Returns the sphere configuration of a source entity" + }, + "results": [ + { + "typeid": "{4AADFD75-48A7-4F31-8F30-FE4505F09E35}", + "details": { + "name": "Configuration", + "tooltip": "Sphere shape configuration parameters" + } + } + ] + }, + { + "key": "SetRadius", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Radius" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Radius is invoked" + }, + "details": { + "name": "Set Radius", + "tooltip": "Sets the sphere radius" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Radius", + "tooltip": "Radius in radians" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SplineComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SplineComponentRequestBus.names new file mode 100644 index 0000000000..067ddc4c0b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SplineComponentRequestBus.names @@ -0,0 +1,197 @@ +{ + "entries": [ + { + "key": "SplineComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "SplineComponentRequestBus", + "category": "Shape" + }, + "methods": [ + { + "key": "ClearVertices", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear Vertices" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear Vertices is invoked" + }, + "details": { + "name": "Clear Vertices" + } + }, + { + "key": "RemoveVertex", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Remove Vertex" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Remove Vertex is invoked" + }, + "details": { + "name": "Remove Vertex" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "UpdateVertex", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Update Vertex" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Update Vertex is invoked" + }, + "details": { + "name": "Update Vertex" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "AddVertex", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Add Vertex" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Add Vertex is invoked" + }, + "details": { + "name": "Add Vertex" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetSpline", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Spline" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Spline is invoked" + }, + "details": { + "name": "Get Spline" + }, + "results": [ + { + "typeid": "{E13859C4-1F24-5C44-A133-F17B4B050D7C}", + "details": { + "name": "AZStd::shared_ptr" + } + } + ] + }, + { + "key": "SetClosed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Closed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Closed is invoked" + }, + "details": { + "name": "Set Closed" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "InsertVertex", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert Vertex" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert Vertex is invoked" + }, + "details": { + "name": "Insert Vertex" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SsaoRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SsaoRequestBus.names new file mode 100644 index 0000000000..a0d6ebdedd --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SsaoRequestBus.names @@ -0,0 +1,718 @@ +{ + "entries": [ + { + "key": "SsaoRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "SsaoRequestBus" + }, + "methods": [ + { + "key": "SetBlurDepthFalloffStrength", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetBlurDepthFalloffStrength" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetBlurDepthFalloffStrength is invoked" + }, + "details": { + "name": "SetBlurDepthFalloffStrength" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetBlurDepthFalloffThreshold", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetBlurDepthFalloffThreshold" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetBlurDepthFalloffThreshold is invoked" + }, + "details": { + "name": "SetBlurDepthFalloffThreshold" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetEnableDownsampleOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEnableDownsampleOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEnableDownsampleOverride is invoked" + }, + "details": { + "name": "SetEnableDownsampleOverride" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetEnableBlurOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEnableBlurOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEnableBlurOverride is invoked" + }, + "details": { + "name": "SetEnableBlurOverride" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetEnabledOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEnabledOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEnabledOverride is invoked" + }, + "details": { + "name": "GetEnabledOverride" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetSamplingRadius", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSamplingRadius" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSamplingRadius is invoked" + }, + "details": { + "name": "GetSamplingRadius" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetBlurDepthFalloffStrengthOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetBlurDepthFalloffStrengthOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetBlurDepthFalloffStrengthOverride is invoked" + }, + "details": { + "name": "SetBlurDepthFalloffStrengthOverride" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetBlurDepthFalloffThresholdOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetBlurDepthFalloffThresholdOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetBlurDepthFalloffThresholdOverride is invoked" + }, + "details": { + "name": "GetBlurDepthFalloffThresholdOverride" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetBlurDepthFalloffThreshold", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetBlurDepthFalloffThreshold" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetBlurDepthFalloffThreshold is invoked" + }, + "details": { + "name": "GetBlurDepthFalloffThreshold" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetSamplingRadiusOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSamplingRadiusOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSamplingRadiusOverride is invoked" + }, + "details": { + "name": "GetSamplingRadiusOverride" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetStrengthOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetStrengthOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetStrengthOverride is invoked" + }, + "details": { + "name": "SetStrengthOverride" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetStrength", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetStrength" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetStrength is invoked" + }, + "details": { + "name": "GetStrength" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEnabled is invoked" + }, + "details": { + "name": "GetEnabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetEnableDownsample", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEnableDownsample" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEnableDownsample is invoked" + }, + "details": { + "name": "GetEnableDownsample" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetBlurDepthFalloffStrength", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetBlurDepthFalloffStrength" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetBlurDepthFalloffStrength is invoked" + }, + "details": { + "name": "GetBlurDepthFalloffStrength" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetBlurConstFalloff", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetBlurConstFalloff" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetBlurConstFalloff is invoked" + }, + "details": { + "name": "SetBlurConstFalloff" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetEnableDownsampleOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEnableDownsampleOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEnableDownsampleOverride is invoked" + }, + "details": { + "name": "GetEnableDownsampleOverride" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetEnableBlurOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEnableBlurOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEnableBlurOverride is invoked" + }, + "details": { + "name": "GetEnableBlurOverride" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetSamplingRadiusOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSamplingRadiusOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSamplingRadiusOverride is invoked" + }, + "details": { + "name": "SetSamplingRadiusOverride" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetSamplingRadius", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSamplingRadius" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSamplingRadius is invoked" + }, + "details": { + "name": "SetSamplingRadius" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetStrength", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetStrength" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetStrength is invoked" + }, + "details": { + "name": "SetStrength" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEnabled is invoked" + }, + "details": { + "name": "SetEnabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetStrengthOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetStrengthOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetStrengthOverride is invoked" + }, + "details": { + "name": "GetStrengthOverride" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetEnableBlur", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEnableBlur" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEnableBlur is invoked" + }, + "details": { + "name": "GetEnableBlur" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetEnableDownsample", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEnableDownsample" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEnableDownsample is invoked" + }, + "details": { + "name": "SetEnableDownsample" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetBlurDepthFalloffThresholdOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetBlurDepthFalloffThresholdOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetBlurDepthFalloffThresholdOverride is invoked" + }, + "details": { + "name": "SetBlurDepthFalloffThresholdOverride" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetBlurConstFalloffOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetBlurConstFalloffOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetBlurConstFalloffOverride is invoked" + }, + "details": { + "name": "SetBlurConstFalloffOverride" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetBlurConstFalloff", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetBlurConstFalloff" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetBlurConstFalloff is invoked" + }, + "details": { + "name": "GetBlurConstFalloff" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetEnabledOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEnabledOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEnabledOverride is invoked" + }, + "details": { + "name": "SetEnabledOverride" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetEnableBlur", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetEnableBlur" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetEnableBlur is invoked" + }, + "details": { + "name": "SetEnableBlur" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetBlurConstFalloffOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetBlurConstFalloffOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetBlurConstFalloffOverride is invoked" + }, + "details": { + "name": "GetBlurConstFalloffOverride" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetBlurDepthFalloffStrengthOverride", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetBlurDepthFalloffStrengthOverride" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetBlurDepthFalloffStrengthOverride is invoked" + }, + "details": { + "name": "GetBlurDepthFalloffStrengthOverride" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SurfaceAltitudeGradientRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SurfaceAltitudeGradientRequestBus.names new file mode 100644 index 0000000000..a8ff8ab8fd --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SurfaceAltitudeGradientRequestBus.names @@ -0,0 +1,244 @@ +{ + "entries": [ + { + "key": "SurfaceAltitudeGradientRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "SurfaceAltitudeGradientRequestBus" + }, + "methods": [ + { + "key": "GetNumTags", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNumTags" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNumTags is invoked" + }, + "details": { + "name": "GetNumTags" + }, + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "RemoveTag", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RemoveTag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RemoveTag is invoked" + }, + "details": { + "name": "RemoveTag" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetAltitudeMax", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAltitudeMax" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAltitudeMax is invoked" + }, + "details": { + "name": "GetAltitudeMax" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetAltitudeMin", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetAltitudeMin" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetAltitudeMin is invoked" + }, + "details": { + "name": "SetAltitudeMin" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetAltitudeMin", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAltitudeMin" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAltitudeMin is invoked" + }, + "details": { + "name": "GetAltitudeMin" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetTag", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTag is invoked" + }, + "details": { + "name": "GetTag" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ], + "results": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + }, + { + "key": "AddTag", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddTag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddTag is invoked" + }, + "details": { + "name": "AddTag" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetShapeEntityId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetShapeEntityId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetShapeEntityId is invoked" + }, + "details": { + "name": "SetShapeEntityId" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetAltitudeMax", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetAltitudeMax" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetAltitudeMax is invoked" + }, + "details": { + "name": "SetAltitudeMax" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetShapeEntityId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetShapeEntityId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetShapeEntityId is invoked" + }, + "details": { + "name": "GetShapeEntityId" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SurfaceMaskGradientRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SurfaceMaskGradientRequestBus.names new file mode 100644 index 0000000000..b71f80ddf9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SurfaceMaskGradientRequestBus.names @@ -0,0 +1,110 @@ +{ + "entries": [ + { + "key": "SurfaceMaskGradientRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "SurfaceMaskGradientRequestBus" + }, + "methods": [ + { + "key": "GetNumTags", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNumTags" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNumTags is invoked" + }, + "details": { + "name": "GetNumTags" + }, + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetTag", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTag is invoked" + }, + "details": { + "name": "GetTag" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ], + "results": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + }, + { + "key": "RemoveTag", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RemoveTag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RemoveTag is invoked" + }, + "details": { + "name": "RemoveTag" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "AddTag", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddTag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddTag is invoked" + }, + "details": { + "name": "AddTag" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SurfaceSlopeGradientRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SurfaceSlopeGradientRequestBus.names new file mode 100644 index 0000000000..9b0cd3802c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/SurfaceSlopeGradientRequestBus.names @@ -0,0 +1,242 @@ +{ + "entries": [ + { + "key": "SurfaceSlopeGradientRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "SurfaceSlopeGradientRequestBus" + }, + "methods": [ + { + "key": "SetRampType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetRampType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetRampType is invoked" + }, + "details": { + "name": "SetRampType" + }, + "params": [ + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "unsigned char" + } + } + ] + }, + { + "key": "GetTag", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTag is invoked" + }, + "details": { + "name": "GetTag" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ], + "results": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + }, + { + "key": "AddTag", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddTag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddTag is invoked" + }, + "details": { + "name": "AddTag" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetSlopeMax", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSlopeMax" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSlopeMax is invoked" + }, + "details": { + "name": "SetSlopeMax" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetNumTags", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNumTags" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNumTags is invoked" + }, + "details": { + "name": "GetNumTags" + }, + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "RemoveTag", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RemoveTag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RemoveTag is invoked" + }, + "details": { + "name": "RemoveTag" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetRampType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetRampType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetRampType is invoked" + }, + "details": { + "name": "GetRampType" + }, + "results": [ + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "unsigned char" + } + } + ] + }, + { + "key": "GetSlopeMax", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSlopeMax" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSlopeMax is invoked" + }, + "details": { + "name": "GetSlopeMax" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetSlopeMin", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSlopeMin" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSlopeMin is invoked" + }, + "details": { + "name": "SetSlopeMin" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetSlopeMin", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSlopeMin" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSlopeMin is invoked" + }, + "details": { + "name": "GetSlopeMin" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/TagComponentRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/TagComponentRequestBus.names new file mode 100644 index 0000000000..b0b63a23ed --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/TagComponentRequestBus.names @@ -0,0 +1,96 @@ +{ + "entries": [ + { + "key": "TagComponentRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "TagComponentRequestBus", + "category": "Gameplay" + }, + "methods": [ + { + "key": "HasTag", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Tag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Tag is invoked" + }, + "details": { + "name": "Has Tag", + "tooltip": "Returns true if an entity has a specified tag" + }, + "params": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Tag", + "tooltip": "The tag to check if the source entity has" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool", + "tooltip": "The tag to check if the source entity has" + } + } + ] + }, + { + "key": "AddTag", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Add Tag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Add Tag is invoked" + }, + "details": { + "name": "Add Tag", + "tooltip": "Adds a tag to an entity if it didn't already have it" + }, + "params": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Tag", + "tooltip": "The tag to add to the entity" + } + } + ] + }, + { + "key": "RemoveTag", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Remove Tag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Remove Tag is invoked" + }, + "details": { + "name": "Remove Tag", + "tooltip": "Removes a tag from an entity if it had it" + }, + "params": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Tag", + "tooltip": "The tag to remove from the entity" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/TagGlobalRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/TagGlobalRequestBus.names new file mode 100644 index 0000000000..fa31042580 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/TagGlobalRequestBus.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "TagGlobalRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "TagGlobalRequestBus", + "category": "Gameplay" + }, + "methods": [ + { + "key": "RequestTaggedEntities", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Request Tagged Entities" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Request Tagged Entities is invoked" + }, + "details": { + "name": "Request Tagged Entities", + "tooltip": "Returns the first responding entity that has a specified Tag" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/TerrainDataRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/TerrainDataRequestBus.names new file mode 100644 index 0000000000..f7ea7fa19e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/TerrainDataRequestBus.names @@ -0,0 +1,437 @@ +{ + "entries": [ + { + "key": "TerrainDataRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Terrain Data" + }, + "methods": [ + { + "key": "GetIsHoleFromFloats", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Is Hole From Floats" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Is Hole From Floats is invoked" + }, + "details": { + "name": "Get Is Hole From Floats" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "X" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Y" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Sample Filter", + "tooltip": "0: Bilinear, 1: Clamp, 2: Exact" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Terrain Exists" + } + } + ] + }, + { + "key": "GetSurfaceWeightsFromVector2", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Surface Weights From Vector2" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Surface Weights From Vector2 is invoked" + }, + "details": { + "name": "Get Surface Weights From Vector2" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Position" + } + }, + { + "typeid": "{8F60B4D4-06F0-577C-AFB9-ECBFA7B66D4E}", + "details": { + "name": "Surface Weights" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Sample Filter", + "tooltip": "0: Bilinear, 1: Clamp, 2: Exact" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Terrain Exists" + } + } + ] + }, + { + "key": "GetSurfaceWeights", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSurfaceWeights" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSurfaceWeights is invoked" + }, + "details": { + "name": "GetSurfaceWeights" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position" + } + }, + { + "typeid": "{8F60B4D4-06F0-577C-AFB9-ECBFA7B66D4E}", + "details": { + "name": "Surface Weights" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Sample Filter", + "tooltip": "0: Bilinear, 1: Clamp, 2: Exact" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Terrain Exists" + } + } + ] + }, + { + "key": "GetMaxSurfaceWeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Max Surface Weight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Max Surface Weight is invoked" + }, + "details": { + "name": "Get Max Surface Weight" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Sample Filter", + "tooltip": "0: Bilinear, 1: Clamp, 2: Exact" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Terrain Exists" + } + } + ], + "results": [ + { + "typeid": "{EA14018E-E853-4BF5-8E13-D83BB99A54CC}", + "details": { + "name": "Surface Tag Weight" + } + } + ] + }, + { + "key": "GetSurfacePointFromVector2", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Surface Point From Vector2" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Surface Point From Vector2 is invoked" + }, + "details": { + "name": "Get Surface Point From Vector2" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Position" + } + }, + { + "typeid": "{331A3D0E-BB1D-47BF-96A2-249FAA0D720D}", + "details": { + "name": "Surface Point" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Sample Filter", + "tooltip": "0: Bilinear, 1: Clamp, 2: Exact" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Terrain Exists" + } + } + ] + }, + { + "key": "GetTerrainHeightQueryResolution", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Terrain Height Query Resolution" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Terrain Height Query Resolution is invoked" + }, + "details": { + "name": "Get Terrain Height Query Resolution" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Position" + } + } + ] + }, + { + "key": "GetNormal", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Normal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Normal is invoked" + }, + "details": { + "name": "Get Normal" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Sample Filter", + "tooltip": "0: Bilinear, 1: Clamp, 2: Exact" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Terrain Exists" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Normal" + } + } + ] + }, + { + "key": "GetMaxSurfaceWeightFromVector2", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Max Surface Weight From Vector2" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Max Surface Weight From Vector2 is invoked" + }, + "details": { + "name": "Get Max Surface Weight From Vector2" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Position" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Sample Filter", + "tooltip": "0: Bilinear, 1: Clamp, 2: Exact" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Terrain Exists" + } + } + ], + "results": [ + { + "typeid": "{EA14018E-E853-4BF5-8E13-D83BB99A54CC}", + "details": { + "name": "Surface Tag Weight" + } + } + ] + }, + { + "key": "GetTerrainAabb", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Terrain AABB" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Terrain AABB is invoked" + }, + "details": { + "name": "Get Terrain AABB" + }, + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "AABB" + } + } + ] + }, + { + "key": "GetHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Height" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Height is invoked" + }, + "details": { + "name": "Get Height" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Sample Filter", + "tooltip": "0: Bilinear, 1: Clamp, 2: Exact" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Terrain Exists" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Height" + } + } + ] + }, + { + "key": "GetSurfacePoint", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Surface Point" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Surface Point is invoked" + }, + "details": { + "name": "Get Surface Point" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position" + } + }, + { + "typeid": "{331A3D0E-BB1D-47BF-96A2-249FAA0D720D}", + "details": { + "name": "Surface Point" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Sample Filter", + "tooltip": "0: Bilinear, 1: Clamp, 2: Exact" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Terrain Exists" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ThresholdGradientRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ThresholdGradientRequestBus.names new file mode 100644 index 0000000000..0ad659c691 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ThresholdGradientRequestBus.names @@ -0,0 +1,80 @@ +{ + "entries": [ + { + "key": "ThresholdGradientRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "ThresholdGradientRequestBus" + }, + "methods": [ + { + "key": "GetThreshold", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetThreshold" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetThreshold is invoked" + }, + "details": { + "name": "GetThreshold" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetThreshold", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetThreshold" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetThreshold is invoked" + }, + "details": { + "name": "SetThreshold" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetGradientSampler", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetGradientSampler" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetGradientSampler is invoked" + }, + "details": { + "name": "GetGradientSampler" + }, + "results": [ + { + "typeid": "{3768D3A6-BF70-4ABC-B4EC-73C75A886916}", + "details": { + "name": "Gradient Sampler" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/TickRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/TickRequestBus.names new file mode 100644 index 0000000000..414e66e411 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/TickRequestBus.names @@ -0,0 +1,58 @@ +{ + "entries": [ + { + "key": "TickRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Tick" + }, + "methods": [ + { + "key": "GetTickDeltaTime", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Tick Delta Time" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Tick Delta Time is invoked" + }, + "details": { + "name": "Get Tick Delta Time" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Delta Time" + } + } + ] + }, + { + "key": "GetTimeAtCurrentTick", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Time At Current Tick" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Time At Current Tick is invoked" + }, + "details": { + "name": "Get Time At Current Tick" + }, + "results": [ + { + "typeid": "{4C0F6AD4-0D4F-4354-AD4A-0C01E948245C}", + "details": { + "name": "Script Time Point" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ToolsApplicationRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ToolsApplicationRequestBus.names new file mode 100644 index 0000000000..055931428e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ToolsApplicationRequestBus.names @@ -0,0 +1,468 @@ +{ + "entries": [ + { + "key": "ToolsApplicationRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "ToolsApplicationRequestBus" + }, + "methods": [ + { + "key": "MarkEntitySelected", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MarkEntitySelected" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MarkEntitySelected is invoked" + }, + "details": { + "name": "MarkEntitySelected" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "IsSelected", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsSelected" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsSelected is invoked" + }, + "details": { + "name": "IsSelected" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetSelectedEntitiesCount", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSelectedEntitiesCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSelectedEntitiesCount is invoked" + }, + "details": { + "name": "GetSelectedEntitiesCount" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetSelectedEntities", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSelectedEntities" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSelectedEntities is invoked" + }, + "details": { + "name": "GetSelectedEntities" + }, + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "DeleteEntitiesAndAllDescendants", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DeleteEntitiesAndAllDescendants" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DeleteEntitiesAndAllDescendants is invoked" + }, + "details": { + "name": "DeleteEntitiesAndAllDescendants" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "GetExistingEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetExistingEntity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetExistingEntity is invoked" + }, + "details": { + "name": "GetExistingEntity" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetSelectedEntities", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetSelectedEntities" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetSelectedEntities is invoked" + }, + "details": { + "name": "SetSelectedEntities" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "MarkEntitiesSelected", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MarkEntitiesSelected" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MarkEntitiesSelected is invoked" + }, + "details": { + "name": "MarkEntitiesSelected" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "MarkEntityDeselected", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MarkEntityDeselected" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MarkEntityDeselected is invoked" + }, + "details": { + "name": "MarkEntityDeselected" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetCurrentLevelEntityId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCurrentLevelEntityId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCurrentLevelEntityId is invoked" + }, + "details": { + "name": "GetCurrentLevelEntityId" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "AreAnyEntitiesSelected", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AreAnyEntitiesSelected" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AreAnyEntitiesSelected is invoked" + }, + "details": { + "name": "AreAnyEntitiesSelected" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "CreateNewEntityAtPosition", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CreateNewEntityAtPosition" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CreateNewEntityAtPosition is invoked" + }, + "details": { + "name": "CreateNewEntityAtPosition" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "DeleteEntityAndAllDescendants", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DeleteEntityAndAllDescendants" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DeleteEntityAndAllDescendants is invoked" + }, + "details": { + "name": "DeleteEntityAndAllDescendants" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "CreateNewEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CreateNewEntity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CreateNewEntity is invoked" + }, + "details": { + "name": "CreateNewEntity" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "EntityExists", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EntityExists" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EntityExists is invoked" + }, + "details": { + "name": "EntityExists" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "DeleteEntityById", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DeleteEntityById" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DeleteEntityById is invoked" + }, + "details": { + "name": "DeleteEntityById" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "DeleteEntities", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DeleteEntities" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DeleteEntities is invoked" + }, + "details": { + "name": "DeleteEntities" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "MarkEntitiesDeselected", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MarkEntitiesDeselected" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MarkEntitiesDeselected is invoked" + }, + "details": { + "name": "MarkEntitiesDeselected" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/TransformBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/TransformBus.names new file mode 100644 index 0000000000..9ee4d4d58f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/TransformBus.names @@ -0,0 +1,950 @@ +{ + "entries": [ + { + "key": "TransformBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Transform", + "category": "Entity" + }, + "methods": [ + { + "key": "SetLocalUniformScale", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Local Uniform Scale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Local Uniform Scale is invoked" + }, + "details": { + "name": "Set Local Uniform Scale" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Local Uniform Scale" + } + } + ] + }, + { + "key": "SetLocalRotationQuaternion", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Local Rotation Quaternion" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Local Rotation Quaternion is invoked" + }, + "details": { + "name": "Set Local Rotation Quaternion" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "GetLocalRotation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Local Rotation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Local Rotation is invoked" + }, + "details": { + "name": "Get Local Rotation" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Angles (Radians)" + } + } + ] + }, + { + "key": "GetLocalTM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Local Transform" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Local Transform is invoked" + }, + "details": { + "name": "Get Local Transform", + "tooltip": "Returns the entity's local transform, not including the parent transform" + }, + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "GetEntityAndAllDescendants", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Entity And All Descendants" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Entity And All Descendants is invoked" + }, + "details": { + "name": "Get Entity And All Descendants" + }, + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "Entity and Descendants" + } + } + ] + }, + { + "key": "SetLocalZ", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Local Z" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Local Z is invoked" + }, + "details": { + "name": "Set Local Z" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Z" + } + } + ] + }, + { + "key": "GetAllDescendants", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get All Descendants" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get All Descendants is invoked" + }, + "details": { + "name": "Get All Descendants" + }, + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "Descendants" + } + } + ] + }, + { + "key": "GetLocalAndWorld", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Local And World" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Local And World is invoked" + }, + "details": { + "name": "Get Local And World Transforms" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Local" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "World" + } + } + ] + }, + { + "key": "RotateAroundLocalZ", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Rotate Around Local Z" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Rotate Around Local Z is invoked" + }, + "details": { + "name": "Rotate Around Local Z" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Angle (Radians)" + } + } + ] + }, + { + "key": "GetWorldRotationQuaternion", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get World Rotation Quaternion" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get World Rotation Quaternion is invoked" + }, + "details": { + "name": "Get World Rotation Quaternion" + }, + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "RotateAroundLocalX", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Rotate Around Local X" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Rotate Around Local X is invoked" + }, + "details": { + "name": "Rotate Around Local X" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Angle (Radians)" + } + } + ] + }, + { + "key": "SetParent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Parent" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Parent is invoked" + }, + "details": { + "name": "Set Parent" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Parent", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetLocalZ", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Local Z" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Local Z is invoked" + }, + "details": { + "name": "Get Local Z" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Z" + } + } + ] + }, + { + "key": "SetLocalRotation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Local Rotation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetLocalRotation is invoked" + }, + "details": { + "name": "Set Local Rotation" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Euler Angles (Radians)" + } + } + ] + }, + { + "key": "SetLocalX", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Local X" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Local X is invoked" + }, + "details": { + "name": "Set Local X" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "X" + } + } + ] + }, + { + "key": "GetLocalRotationQuaternion", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Local Rotation Quaternion" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Local Rotation Quaternion is invoked" + }, + "details": { + "name": "Get Local Rotation Quaternion" + }, + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "GetWorldX", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get World X" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get World X is invoked" + }, + "details": { + "name": "Get World X" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "X" + } + } + ] + }, + { + "key": "SetWorldTranslation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set World Translation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set World Translation is invoked" + }, + "details": { + "name": "Set World Translation" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "World Translation" + } + } + ] + }, + { + "key": "MoveEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Move Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Move Entity is invoked" + }, + "details": { + "name": "Move Entity" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Offset" + } + } + ] + }, + { + "key": "GetChildren", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Children" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Children is invoked" + }, + "details": { + "name": "Get Children" + }, + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "Children" + } + } + ] + }, + { + "key": "SetParentRelative", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Parent Relative" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Parent Relative is invoked" + }, + "details": { + "name": "Set Parent Relative" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Parent", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetWorldTM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set World Transform" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set World Transform is invoked" + }, + "details": { + "name": "Set World Transform" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "SetWorldRotationQuaternion", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set World Rotation Quaternion" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set World Rotation Quaternion is invoked" + }, + "details": { + "name": "Set World Rotation Quaternion" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "SetWorldX", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set World X" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set World X is invoked" + }, + "details": { + "name": "Set World X" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "X" + } + } + ] + }, + { + "key": "GetWorldY", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get World Y" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get World Y is invoked" + }, + "details": { + "name": "Get World Y" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Y" + } + } + ] + }, + { + "key": "GetLocalUniformScale", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Local Uniform Scale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Local Uniform Scale is invoked" + }, + "details": { + "name": "Get Local Uniform Scale" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Uniform Scale" + } + } + ] + }, + { + "key": "SetWorldZ", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set World Z" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set World Z is invoked" + }, + "details": { + "name": "Set World Z" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Z" + } + } + ] + }, + { + "key": "SetLocalTM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Local Transform" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Local Transform is invoked" + }, + "details": { + "name": "Set Local Transform" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "SetLocalTranslation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Local Translation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Local Translation is invoked" + }, + "details": { + "name": "Set Local Translation" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Translation" + } + } + ] + }, + { + "key": "GetLocalScale", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Local Scale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Local Scale is invoked" + }, + "details": { + "name": "Get Local Scale" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Scale" + } + } + ] + }, + { + "key": "SetWorldY", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set World Y" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set World Y is invoked" + }, + "details": { + "name": "Set World Y" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Y" + } + } + ] + }, + { + "key": "RotateAroundLocalY", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Rotate Around Local Y" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Rotate Around Local Y is invoked" + }, + "details": { + "name": "Rotate Around Local Y" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Euler Angle (Radians)" + } + } + ] + }, + { + "key": "GetLocalTranslation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Local Translation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Local Translation is invoked" + }, + "details": { + "name": "Get Local Translation" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Translation" + } + } + ] + }, + { + "key": "GetWorldRotation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get World Rotation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get World Rotation is invoked" + }, + "details": { + "name": "Get World Rotation" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Euler Angles (Radians)", + "tooltip": "Euler angles (Pitch, Yaw, Roll), in radians" + } + } + ] + }, + { + "key": "GetWorldZ", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get World Z" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get World Z is invoked" + }, + "details": { + "name": "Get World Z" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Z" + } + } + ] + }, + { + "key": "GetLocalY", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Local Y" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Local Y is invoked" + }, + "details": { + "name": "Get Local Y" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Y" + } + } + ] + }, + { + "key": "GetWorldTranslation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get World Translation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get World Translation is invoked" + }, + "details": { + "name": "Get World Translation" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Translation" + } + } + ] + }, + { + "key": "SetLocalY", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Local Y" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Local Y is invoked" + }, + "details": { + "name": "Set Local Y" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Y" + } + } + ] + }, + { + "key": "GetLocalX", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Local X" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Local X is invoked" + }, + "details": { + "name": "Get Local X" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "X" + } + } + ] + }, + { + "key": "GetWorldTM", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get World Transform" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get World Transform is invoked" + }, + "details": { + "name": "Get World Transform" + }, + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "GetParentId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Parent Id" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Parent Id is invoked" + }, + "details": { + "name": "Get Parent Id" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Parent Id", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "IsStaticTransform", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Static Transform" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Static Transform is invoked" + }, + "details": { + "name": "Is Static Transform" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Static Transform" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/TubeShapeComponentRequestsBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/TubeShapeComponentRequestsBus.names new file mode 100644 index 0000000000..b038d91560 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/TubeShapeComponentRequestsBus.names @@ -0,0 +1,146 @@ +{ + "entries": [ + { + "key": "TubeShapeComponentRequestsBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "TubeShapeComponentRequestsBus" + }, + "methods": [ + { + "key": "GetVariableRadius", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetVariableRadius" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetVariableRadius is invoked" + }, + "details": { + "name": "GetVariableRadius" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetVariableRadius", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetVariableRadius" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetVariableRadius is invoked" + }, + "details": { + "name": "SetVariableRadius" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetRadius", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetRadius" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetRadius is invoked" + }, + "details": { + "name": "SetRadius" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetRadius", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetRadius" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetRadius is invoked" + }, + "details": { + "name": "GetRadius" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetTotalRadius", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTotalRadius" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTotalRadius is invoked" + }, + "details": { + "name": "GetTotalRadius" + }, + "params": [ + { + "typeid": "{865BA2EC-43C5-4E1F-9B6F-2D63F6DC2E70}", + "details": { + "name": "SplineAddress" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiAnimationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiAnimationBus.names new file mode 100644 index 0000000000..5618698361 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiAnimationBus.names @@ -0,0 +1,380 @@ +{ + "entries": [ + { + "key": "UiAnimationBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiAnimationBus", + "category": "UI" + }, + "methods": [ + { + "key": "ResetSequence", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reset Sequence" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reset Sequence is invoked" + }, + "details": { + "name": "Reset Sequence", + "tooltip": "Resets the sequence to the first frame" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Sequence Name", + "tooltip": "The name of the sequence" + } + } + ] + }, + { + "key": "GetSequencePlayingSpeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Sequence Playing Speed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Sequence Playing Speed is invoked" + }, + "details": { + "name": "Get Sequence Playing Speed", + "tooltip": "Gets the speed of the playing sequence" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Sequence Name", + "tooltip": "The name of the sequence" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float", + "tooltip": "The name of the sequence" + } + } + ] + }, + { + "key": "GetSequencePlayingTime", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Sequence Playing Time" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Sequence Playing Time is invoked" + }, + "details": { + "name": "Get Sequence Playing Time", + "tooltip": "Gets the current time of the playing sequence" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Sequence Name", + "tooltip": "The name of the sequence" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float", + "tooltip": "The name of the sequence" + } + } + ] + }, + { + "key": "AbortSequence", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Abort Sequence" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Abort Sequence is invoked" + }, + "details": { + "name": "Abort Sequence", + "tooltip": "Stops playing the sequence and displays the last frame" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Sequence Name", + "tooltip": "The name of the sequence" + } + } + ] + }, + { + "key": "IsSequencePlaying", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Sequence Playing" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Sequence Playing is invoked" + }, + "details": { + "name": "Is Sequence Playing", + "tooltip": "Returns whether the sequence is currently playing" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Sequence Name", + "tooltip": "The name of the sequence" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool", + "tooltip": "The name of the sequence" + } + } + ] + }, + { + "key": "GetSequenceLength", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Sequence Length" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Sequence Length is invoked" + }, + "details": { + "name": "Get Sequence Length", + "tooltip": "Gets the length of the sequence" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Sequence Name", + "tooltip": "The name of the sequence" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float", + "tooltip": "The name of the sequence" + } + } + ] + }, + { + "key": "StopSequence", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Stop Sequence" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Stop Sequence is invoked" + }, + "details": { + "name": "Stop Sequence", + "tooltip": "Stops playing the sequence and displays the last frame" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Sequence Name", + "tooltip": "The name of the sequence" + } + } + ] + }, + { + "key": "PlaySequenceRange", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PlaySequenceRange" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PlaySequenceRange is invoked" + }, + "details": { + "name": "PlaySequenceRange" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "PauseSequence", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Pause Sequence" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Pause Sequence is invoked" + }, + "details": { + "name": "Pause Sequence", + "tooltip": "Pauses the playing sequence" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Sequence Name", + "tooltip": "The name of the sequence" + } + } + ] + }, + { + "key": "ResumeSequence", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resume Sequence" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resume Sequence is invoked" + }, + "details": { + "name": "Resume Sequence", + "tooltip": "Resumes the paused sequence" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Sequence Name", + "tooltip": "The name of the sequence" + } + } + ] + }, + { + "key": "StartSequence", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Start Sequence" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Start Sequence is invoked" + }, + "details": { + "name": "Start Sequence", + "tooltip": "Starts playing the sequence" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Sequence Name", + "tooltip": "The name of the sequence" + } + } + ] + }, + { + "key": "SetSequencePlayingSpeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Sequence Playing Speed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Sequence Playing Speed is invoked" + }, + "details": { + "name": "Set Sequence Playing Speed", + "tooltip": "Sets the speed of the playing sequence" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Sequence Name", + "tooltip": "The name of the sequence" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Speed", + "tooltip": "The speed of the playing sequence" + } + } + ] + }, + { + "key": "SetSequenceStopBehavior", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Sequence Stop Behavior" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Sequence Stop Behavior is invoked" + }, + "details": { + "name": "Set Sequence Stop Behavior", + "tooltip": "Sets the behavior a sequence will exhibit when it stops playing" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Stop Behavior", + "tooltip": "The behavior a sequence will exhibit when it stops playing (0=Leave Time, 1=Go To End Time, 2=Go To Start Time)" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiButtonBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiButtonBus.names new file mode 100644 index 0000000000..93c278b55f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiButtonBus.names @@ -0,0 +1,62 @@ +{ + "entries": [ + { + "key": "UiButtonBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiButtonBus", + "category": "UI" + }, + "methods": [ + { + "key": "GetOnClickActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get On Click Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get On Click Action Name is invoked" + }, + "details": { + "name": "Get On Click Action Name", + "tooltip": "Gets the name of the action triggered when the button is released" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetOnClickActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set On Click Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set On Click Action Name is invoked" + }, + "details": { + "name": "Set On Click Action Name", + "tooltip": "Sets the name of the action triggered when the button is released" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the action triggered when the button is released" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiCanvasAssetRefBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiCanvasAssetRefBus.names new file mode 100644 index 0000000000..7e1cc1941a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiCanvasAssetRefBus.names @@ -0,0 +1,54 @@ +{ + "entries": [ + { + "key": "UiCanvasAssetRefBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiCanvasAssetRefBus", + "category": "UI" + }, + "methods": [ + { + "key": "LoadCanvas", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Load Canvas" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Load Canvas is invoked" + }, + "details": { + "name": "Load Canvas", + "tooltip": "Loads a canvas" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "UnloadCanvas", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Unload Canvas" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Unload Canvas is invoked" + }, + "details": { + "name": "Unload Canvas", + "tooltip": "Unloads the loaded canvas" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiCanvasBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiCanvasBus.names new file mode 100644 index 0000000000..5a039e9720 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiCanvasBus.names @@ -0,0 +1,957 @@ +{ + "entries": [ + { + "key": "UiCanvasBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiCanvasBus", + "category": "UI" + }, + "methods": [ + { + "key": "ForceHoverInteractable", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Force Hover Interactable" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Force Hover Interactable is invoked" + }, + "details": { + "name": "Force Hover Interactable", + "tooltip": "Forces the specified interactive element to receive the hover" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Hover EntityID", + "tooltip": "The element to receive the hover" + } + } + ] + }, + { + "key": "GetNavigationRepeatPeriod", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNavigationRepeatPeriod" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNavigationRepeatPeriod is invoked" + }, + "details": { + "name": "GetNavigationRepeatPeriod" + }, + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetNavigationRepeatDelay", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNavigationRepeatDelay" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNavigationRepeatDelay is invoked" + }, + "details": { + "name": "GetNavigationRepeatDelay" + }, + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetHoverInteractable", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Hover Interactable" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Hover Interactable is invoked" + }, + "details": { + "name": "Get Hover Interactable", + "tooltip": "Gets the interactive element that has the hover" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetNavigationThreshold", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetNavigationThreshold" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetNavigationThreshold is invoked" + }, + "details": { + "name": "SetNavigationThreshold" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetIsConsumingAllInputEvents", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Consuming All Input Events" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Consuming All Input Events is invoked" + }, + "details": { + "name": "Set Is Consuming All Input Events", + "tooltip": "Sets whether all input events should be consumed by the canvas while it is enabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Consume", + "tooltip": "Indicates whether all input events should be consumed by the canvas while it is enabled" + } + } + ] + }, + { + "key": "SetDrawOrder", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Draw Order" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Draw Order is invoked" + }, + "details": { + "name": "Set Draw Order", + "tooltip": "Sets the draw order of the canvas. Rendering is back-to-front, so higher numbers render in front of lower numbers" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Draw Order", + "tooltip": "The draw order of the canvas" + } + } + ] + }, + { + "key": "GetIsPositionalInputSupported", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Positional Input Supported" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Positional Input Supported is invoked" + }, + "details": { + "name": "Is Positional Input Supported", + "tooltip": "Returns whether the canvas automatically responds to positional input such as mouse movement, mouse button clicks, and touch screen input, as well as keyboard input when an interactive element is active" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "RecomputeChangedLayouts", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Recompute Changed Layouts" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Recompute Changed Layouts is invoked" + }, + "details": { + "name": "Recompute Changed Layouts", + "tooltip": "Forces an immediate recalculation of all layouts on the canvas that have been flagged for recomputing" + } + }, + { + "key": "SetRenderTargetName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Render Target Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Render Target Name is invoked" + }, + "details": { + "name": "Set Render Target Name", + "tooltip": "Sets the name of the render target" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the render target" + } + } + ] + }, + { + "key": "GetTooltipDisplayElement", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Tooltip Display Element" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Tooltip Display Element is invoked" + }, + "details": { + "name": "Get Tooltip Display Element", + "tooltip": "Gets the element that defines the tooltip's display behavior. This element must have a TooltipDisplay component" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetIsNavigationSupported", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Navigation Supported" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Navigation Supported is invoked" + }, + "details": { + "name": "Is Navigation Supported", + "tooltip": "Returns whether the canvas automatically responds to navigation input" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetNavigationRepeatPeriod", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetNavigationRepeatPeriod" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetNavigationRepeatPeriod is invoked" + }, + "details": { + "name": "SetNavigationRepeatPeriod" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetRenderTargetName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Render Target Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Render Target Name is invoked" + }, + "details": { + "name": "Get Render Target Name", + "tooltip": "Gets the name of the render target" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "FindElementByName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Find Element By Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Find Element By Name is invoked" + }, + "details": { + "name": "Find Element By Name", + "tooltip": "Finds an element by its name" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the element" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "The name of the element" + } + } + ] + }, + { + "key": "SetTooltipDisplayElement", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Tooltip Display Element" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Tooltip Display Element is invoked" + }, + "details": { + "name": "Set Tooltip Display Element", + "tooltip": "Sets the element that defines the tooltip's display behavior. This element must have a TooltipDisplay component" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Tooltip Display EntityID", + "tooltip": "The element that defines the tooltip's display behavior. This element must have a TooltipDisplay component" + } + } + ] + }, + { + "key": "GetChildElement", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Child Element" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Child Element is invoked" + }, + "details": { + "name": "Get Child Element", + "tooltip": "Gets a child of the canvas by index" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Child Index", + "tooltip": "The index of the child element" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "The index of the child element" + } + } + ] + }, + { + "key": "GetKeepLoadedOnLevelUnload", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Keep Loaded On Level Unload" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Keep Loaded On Level Unload is invoked" + }, + "details": { + "name": "Get Keep Loaded On Level Unload", + "tooltip": "Returns whether the canvas should remain loaded when the level is unloaded" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetIsTextPixelAligned", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Text Pixel Aligned" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Text Pixel Aligned is invoked" + }, + "details": { + "name": "Is Text Pixel Aligned", + "tooltip": "Returns whether the canvas pixel-aligns the corners of its text quads to the nearest pixel when they are rendered" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetIsConsumingAllInputEvents", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Consuming All Input Events" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Consuming All Input Events is invoked" + }, + "details": { + "name": "Is Consuming All Input Events", + "tooltip": "Returns whether all input events will be consumed by the canvas while it is enabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetNavigationThreshold", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNavigationThreshold" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNavigationThreshold is invoked" + }, + "details": { + "name": "GetNavigationThreshold" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetKeepLoadedOnLevelUnload", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Keep Loaded On Level Unload" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Keep Loaded On Level Unload is invoked" + }, + "details": { + "name": "Set Keep Loaded On Level Unload", + "tooltip": "Sets whether the canvas should remain loaded when the level is unloaded" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Keep Loaded", + "tooltip": "Indicates whether the canvas should remain loaded when the level is unloaded" + } + } + ] + }, + { + "key": "SetIsMultiTouchSupported", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Multi-touch Supported" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Multi-touch Supported is invoked" + }, + "details": { + "name": "Set Is Multi-touch Supported", + "tooltip": "Sets whether multi-touch input will automatically be handled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Multi-touch", + "tooltip": "Indicates whether multi-touch input will automatically be handled" + } + } + ] + }, + { + "key": "SetIsRenderToTexture", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Render To Texture" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Render To Texture is invoked" + }, + "details": { + "name": "Set Render To Texture", + "tooltip": "Sets whether the canvas should draw to a texture rather than to the screen" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Render to Texture", + "tooltip": "Indicates whether the canvas should draw to a texture rather than to the screen" + } + } + ] + }, + { + "key": "GetChildElements", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Child Elements" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Child Elements is invoked" + }, + "details": { + "name": "Get Child Elements", + "tooltip": "Gets the children of the canvas" + }, + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "GetNumChildElements", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Number Of Child Elements" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Number Of Child Elements is invoked" + }, + "details": { + "name": "Get Number Of Child Elements", + "tooltip": "Gets the number of children of the canvas" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetIsPixelAligned", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Pixel Aligned" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Pixel Aligned is invoked" + }, + "details": { + "name": "Is Pixel Aligned", + "tooltip": "Returns whether the canvas pixel-aligns the corners of its elements to the nearest pixel when they are rendered" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Enabled is invoked" + }, + "details": { + "name": "Is Enabled", + "tooltip": "Returns whether the canvas is enabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetIsNavigationSupported", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Navigation Supported" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Navigation Supported is invoked" + }, + "details": { + "name": "Set Is Navigation Supported", + "tooltip": "Sets whether the canvas should automatically respond to navigation input" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Navigation", + "tooltip": "Indicates whether the canvas should automatically respond to navigation input" + } + } + ] + }, + { + "key": "GetDrawOrder", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Draw Order" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Draw Order is invoked" + }, + "details": { + "name": "Get Draw Order", + "tooltip": "Gets the draw order of the canvas. Rendering is back-to-front, so higher numbers render in front of lower numbers" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "ForceEnterInputEventOnInteractable", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ForceEnterInputEventOnInteractable" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ForceEnterInputEventOnInteractable is invoked" + }, + "details": { + "name": "ForceEnterInputEventOnInteractable" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetIsMultiTouchSupported", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Multi-touch Supported" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Multi-touch Supported is invoked" + }, + "details": { + "name": "Is Multi-touch Supported", + "tooltip": "Returns whether multi-touch input will automatically be handled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetIsPixelAligned", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Pixel Aligned" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Pixel Aligned is invoked" + }, + "details": { + "name": "Set Is Pixel Aligned", + "tooltip": "Sets whether the canvas should pixel-align the corners of its elements to the nearest pixel when they are rendered" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Pixel Aligned", + "tooltip": "Indicates whether the canvas should pixel-align the corners of its elements to the nearest pixel when they are rendered" + } + } + ] + }, + { + "key": "SetIsPositionalInputSupported", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Positional Input Supported" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Positional Input Supported is invoked" + }, + "details": { + "name": "Set Is Positional Input Supported", + "tooltip": "Sets whether the canvas should automatically respond to positional input such as mouse movement, mouse button clicks, and touch screen input, as well as keyboard input when an interactive element is active" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Positional Input", + "tooltip": "Indicates whether the canvas should automatically respond to positional input such as mouse movement, mouse button clicks, and touch screen input, as well as keyboard input when an interactive element is active" + } + } + ] + }, + { + "key": "CloneElement", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clone Element" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clone Element is invoked" + }, + "details": { + "name": "Clone Element", + "tooltip": "Clones an element" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityID to Clone", + "tooltip": "The element to clone" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Parent EntityID", + "tooltip": "The parent of the cloned element" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Insert Before EntityID", + "tooltip": "The element to insert the cloned element before" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "The element to clone" + } + } + ] + }, + { + "key": "SetNavigationRepeatDelay", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetNavigationRepeatDelay" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetNavigationRepeatDelay is invoked" + }, + "details": { + "name": "SetNavigationRepeatDelay" + }, + "params": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetIsRenderToTexture", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Render To Texture" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Render To Texture is invoked" + }, + "details": { + "name": "Get Render To Texture", + "tooltip": "Returns whether the canvas draws to a texture rather than to the screen" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Enabled is invoked" + }, + "details": { + "name": "Set Is Enabled", + "tooltip": "Sets whether the canvas is enabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enabled", + "tooltip": "Indicates whether the canvas is enabled" + } + } + ] + }, + { + "key": "SetIsTextPixelAligned", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Text Pixel Aligned" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Text Pixel Aligned is invoked" + }, + "details": { + "name": "Set Is Text Pixel Aligned", + "tooltip": "Sets whether the canvas should pixel-align the corners of its text quads to the nearest pixel when they are rendered" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Pixel Aligned", + "tooltip": "Indicates whether the canvas should pixel-align the corners of its text quads to the nearest pixel when they are rendered" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiCanvasManagerBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiCanvasManagerBus.names new file mode 100644 index 0000000000..fe30e0079a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiCanvasManagerBus.names @@ -0,0 +1,135 @@ +{ + "entries": [ + { + "key": "UiCanvasManagerBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiCanvasManagerBus", + "category": "UI" + }, + "methods": [ + { + "key": "CreateCanvas", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Create Canvas" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Create Canvas is invoked" + }, + "details": { + "name": "Create Canvas", + "tooltip": "Creates an empty canvas" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "LoadCanvas", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Load Canvas" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Load Canvas is invoked" + }, + "details": { + "name": "Load Canvas", + "tooltip": "Loads a canvas" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Pathname", + "tooltip": "The pathname of the canvas" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "The pathname of the canvas" + } + } + ] + }, + { + "key": "UnloadCanvas", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Unload Canvas" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Unload Canvas is invoked" + }, + "details": { + "name": "Unload Canvas", + "tooltip": "Unloads a loaded canvas" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Canvas EntityID", + "tooltip": "The canvas to unload" + } + } + ] + }, + { + "key": "FindLoadedCanvasByPathName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Find Loaded Canvas By Pathname" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Find Loaded Canvas By Pathname is invoked" + }, + "details": { + "name": "Find Loaded Canvas By Pathname", + "tooltip": "Finds a loaded canvas by its pathname" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Pathname", + "tooltip": "The pathname of the loaded canvas" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "The pathname of the loaded canvas" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiCanvasProxyRefBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiCanvasProxyRefBus.names new file mode 100644 index 0000000000..170be3be23 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiCanvasProxyRefBus.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "UiCanvasProxyRefBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiCanvasProxyRefBus", + "category": "UI" + }, + "methods": [ + { + "key": "SetCanvasRefEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Canvas Ref Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Canvas Ref Entity is invoked" + }, + "details": { + "name": "Set Canvas Ref Entity", + "tooltip": "Sets the entity to mirror. The entity should have a Ui Canvas Asset Ref component. Used to display the same UI canvas on multiple entities in the 3D world" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Canvas Asset Ref EntityID", + "tooltip": "The entity to mirror" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiCanvasRefBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiCanvasRefBus.names new file mode 100644 index 0000000000..c1c98b7f64 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiCanvasRefBus.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "UiCanvasRefBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiCanvasRefBus", + "category": "UI" + }, + "methods": [ + { + "key": "GetCanvas", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Canvas" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Canvas is invoked" + }, + "details": { + "name": "Get Canvas", + "tooltip": "Gets the canvas" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiCheckboxBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiCheckboxBus.names new file mode 100644 index 0000000000..ce0125bae0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiCheckboxBus.names @@ -0,0 +1,322 @@ +{ + "entries": [ + { + "key": "UiCheckboxBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiCheckboxBus", + "category": "UI" + }, + "methods": [ + { + "key": "SetChangedActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Changed Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Changed Action Name is invoked" + }, + "details": { + "name": "Set Changed Action Name", + "tooltip": "Sets the name of the action triggered when the checkbox state changes" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the action triggered when the checkbox state changes" + } + } + ] + }, + { + "key": "GetChangedActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Changed Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Changed Action Name is invoked" + }, + "details": { + "name": "Get Changed Action Name", + "tooltip": "Gets the name of the action triggered when the checkbox state changes" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetCheckedEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Checked Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Checked Entity is invoked" + }, + "details": { + "name": "Set Checked Entity", + "tooltip": "Sets the child element to show when the checkbox is checked" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Checked EntityID", + "tooltip": "The child element to show when the checkbox is checked" + } + } + ] + }, + { + "key": "SetUncheckedEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Unchecked Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Unchecked Entity is invoked" + }, + "details": { + "name": "Set Unchecked Entity", + "tooltip": "Sets the child element to show when the checkbox is unchecked" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Unchecked EntityID", + "tooltip": "The child element to show when the checkbox is unchecked" + } + } + ] + }, + { + "key": "SetTurnOnActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Turn On Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Turn On Action Name is invoked" + }, + "details": { + "name": "Set Turn On Action Name", + "tooltip": "Sets the name of the action triggered when the checkbox is checked" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the action triggered when the checkbox is checked" + } + } + ] + }, + { + "key": "GetTurnOffActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Turn Off Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Turn Off Action Name is invoked" + }, + "details": { + "name": "Get Turn Off Action Name", + "tooltip": "Gets the name of the action triggered when the checkbox is unchecked" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetState", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set State" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set State is invoked" + }, + "details": { + "name": "Set State", + "tooltip": "Sets whether the checkbox is checked" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Checked", + "tooltip": "Indicates whether the checkbox is checked" + } + } + ] + }, + { + "key": "ToggleState", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Toggle State" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Toggle State is invoked" + }, + "details": { + "name": "Toggle State", + "tooltip": "Toggles the checked/unchecked state of the checkbox" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetState", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get State" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get State is invoked" + }, + "details": { + "name": "Get State", + "tooltip": "Returns whether the checkbox is checked" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetCheckedEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Checked Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Checked Entity is invoked" + }, + "details": { + "name": "Get Checked Entity", + "tooltip": "Gets the child element that is shown when the checkbox is checked" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetUncheckedEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Unchecked Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Unchecked Entity is invoked" + }, + "details": { + "name": "Get Unchecked Entity", + "tooltip": "Gets the child element that is shown when the checkbox is unchecked" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetTurnOnActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Turn On Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Turn On Action Name is invoked" + }, + "details": { + "name": "Get Turn On Action Name", + "tooltip": "Gets the name of the action triggered when the checkbox is checked" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetTurnOffActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Turn Off Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Turn Off Action Name is invoked" + }, + "details": { + "name": "Set Turn Off Action Name", + "tooltip": "Sets the name of the action triggered when the checkbox is unchecked" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the action triggered when the checkbox is unchecked" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiClickableTextBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiClickableTextBus.names new file mode 100644 index 0000000000..6400213daa --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiClickableTextBus.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "UiClickableTextBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiClickableTextBus", + "category": "UI" + }, + "methods": [ + { + "key": "SetClickableTextColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Clickable Text Color" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Clickable Text Color is invoked" + }, + "details": { + "name": "Set Clickable Text Color", + "tooltip": "Sets the color of the clickable text, overriding the value from the markup button" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "ID", + "tooltip": "The markup ID of the clickable text" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color", + "tooltip": "The color for the clickable text" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiCursorBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiCursorBus.names new file mode 100644 index 0000000000..936ff3475e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiCursorBus.names @@ -0,0 +1,115 @@ +{ + "entries": [ + { + "key": "UiCursorBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiCursorBus", + "category": "UI" + }, + "methods": [ + { + "key": "GetUiCursorPosition", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Position" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Position is invoked" + }, + "details": { + "name": "Get Position", + "tooltip": "Gets the cursor position relative to the top left corner of the UI overlay viewport" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "IsUiCursorVisible", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Visible" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Visible is invoked" + }, + "details": { + "name": "Is Visible", + "tooltip": "Returns whether the cursor is visible" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "DecrementVisibleCounter", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Decrement Visible Counter" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Decrement Visible Counter is invoked" + }, + "details": { + "name": "Decrement Visible Counter", + "tooltip": "Decrements the cursor visible counter. Should be paired with a call to \"Increment Visible Counter\"" + } + }, + { + "key": "IncrementVisibleCounter", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Increment Visible Counter" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Increment Visible Counter is invoked" + }, + "details": { + "name": "Increment Visible Counter", + "tooltip": "Increments the cursor visible counter. Should be paired with a call to \"Decrement Visible Counter\"" + } + }, + { + "key": "SetUiCursor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Cursor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Cursor is invoked" + }, + "details": { + "name": "Set Cursor", + "tooltip": "Sets the cursor image" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "Pathname", + "tooltip": "The pathname to the cursor image" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiCustomImageBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiCustomImageBus.names new file mode 100644 index 0000000000..c92295875e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiCustomImageBus.names @@ -0,0 +1,203 @@ +{ + "entries": [ + { + "key": "UiCustomImageBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiCustomImageBus", + "category": "UI/LyShine Examples" + }, + "methods": [ + { + "key": "GetClamp", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Clamp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Clamp is invoked" + }, + "details": { + "name": "Get Clamp", + "tooltip": "Returns whether the image is clamped" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetUVs", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set UVs" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set UVs is invoked" + }, + "details": { + "name": "Set UVs", + "tooltip": "Sets the UV coordinates of the rectangle for rendering the texture" + }, + "params": [ + { + "typeid": "{E134EAE8-52A1-4E43-847B-09E546CC5B95}", + "details": { + "name": "UV Coords", + "tooltip": "The UV coordinates of the rectangle for rendering the texture" + } + } + ] + }, + { + "key": "SetClamp", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Clamp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Clamp is invoked" + }, + "details": { + "name": "Set Clamp", + "tooltip": "Sets whether the image should be clamped" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Clamp", + "tooltip": "Indicates whether the image should be clamped" + } + } + ] + }, + { + "key": "SetSpritePathname", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Sprite Pathname" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Sprite Pathname is invoked" + }, + "details": { + "name": "Set Sprite Pathname", + "tooltip": "Sets the sprite pathname" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Pathname", + "tooltip": "The sprite pathname" + } + } + ] + }, + { + "key": "GetSpritePathname", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Sprite Pathname" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Sprite Pathname is invoked" + }, + "details": { + "name": "Get Sprite Pathname", + "tooltip": "Gets the sprite pathname" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetUVs", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get UVs" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get UVs is invoked" + }, + "details": { + "name": "Get UVs", + "tooltip": "Gets the UV coordinates of the rectangle for rendering the texture" + }, + "results": [ + { + "typeid": "{E134EAE8-52A1-4E43-847B-09E546CC5B95}", + "details": { + "name": "UVRect" + } + } + ] + }, + { + "key": "SetColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Color" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Color is invoked" + }, + "details": { + "name": "Set Color", + "tooltip": "Sets the color tint for the image" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color", + "tooltip": "The color tint for the image" + } + } + ] + }, + { + "key": "GetColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Color" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Color is invoked" + }, + "details": { + "name": "Get Color", + "tooltip": "Gets the color tint for the image" + }, + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiDraggableBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiDraggableBus.names new file mode 100644 index 0000000000..15b47dfce5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiDraggableBus.names @@ -0,0 +1,235 @@ +{ + "entries": [ + { + "key": "UiDraggableBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiDraggableBus", + "category": "UI" + }, + "methods": [ + { + "key": "ProxyDragEnd", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Proxy Drag End" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Proxy Drag End is invoked" + }, + "details": { + "name": "Proxy Drag End", + "tooltip": "Concludes the drag of the proxy. Call \"Proxy Drag End\" at the end of a drag if \"Set As Proxy\" was used for the drag.\n\nCall \"Proxy Drag End\" from the \"On Drag End\" handler of the proxy element. This results in a call to \"On Drag End\" for the original draggable element" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Position", + "tooltip": "The released position" + } + } + ] + }, + { + "key": "RedoDrag", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Redo Drag" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Redo Drag is invoked" + }, + "details": { + "name": "Redo Drag", + "tooltip": "Causes the draggable component to redetect the drop targets that are underneath the pointer and resends \"On Drop Hover Start\" or \"On Drop Hover End\" messages if needed.\n\nYou can call \"Redo Drag\" from a script after the script has caused drop targets to change positions. This function is most useful for keyboard or gamepad navigation" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Position", + "tooltip": "The drag position" + } + } + ] + }, + { + "key": "SetAsProxy", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set As Proxy" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set As Proxy is invoked" + }, + "details": { + "name": "Set As Proxy", + "tooltip": "Sets the draggable element to be a proxy for another draggable element and starts a drag on the draggable element at the specified point" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Original Draggable EntityID", + "tooltip": "The original draggable element" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Position", + "tooltip": "The position at which to start the drag" + } + } + ] + }, + { + "key": "IsProxy", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Proxy" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Proxy is invoked" + }, + "details": { + "name": "Is Proxy", + "tooltip": "Returns whether the draggable element is acting as a proxy for another draggable element" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetDragState", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Drag State" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Drag State is invoked" + }, + "details": { + "name": "Set Drag State", + "tooltip": "Sets the drag state" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Drag State", + "tooltip": "The drag state (0=Normal, 1=Valid, 2=Invalid)" + } + } + ] + }, + { + "key": "GetCanDropOnAnyCanvas", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Can Drop On Any Canvas" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Can Drop On Any Canvas is invoked" + }, + "details": { + "name": "Get Can Drop On Any Canvas", + "tooltip": "Returns whether the draggable element can be dropped on any loaded canvas" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetCanDropOnAnyCanvas", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Can Drop On Any Canvas" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Can Drop On Any Canvas is invoked" + }, + "details": { + "name": "Set Can Drop On Any Canvas", + "tooltip": "Sets whether the draggable element can be dropped on any loaded canvas" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Drop on Any", + "tooltip": "Indicates whether the draggable element can be dropped on any loaded canvas" + } + } + ] + }, + { + "key": "GetDragState", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Drag State" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Drag State is invoked" + }, + "details": { + "name": "Get Drag State", + "tooltip": "Gets the drag state" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetOriginalFromProxy", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Original From Proxy" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Original From Proxy is invoked" + }, + "details": { + "name": "Get Original From Proxy", + "tooltip": "Gets the original draggable element that the element is a proxy for" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiDropTargetBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiDropTargetBus.names new file mode 100644 index 0000000000..58e4ab05b5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiDropTargetBus.names @@ -0,0 +1,109 @@ +{ + "entries": [ + { + "key": "UiDropTargetBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiDropTargetBus", + "category": "UI" + }, + "methods": [ + { + "key": "GetOnDropActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get On Drop Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get On Drop Action Name is invoked" + }, + "details": { + "name": "Get On Drop Action Name", + "tooltip": "Gets the name of the action triggered when a draggable component is dropped on the drop target" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetOnDropActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set On Drop Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set On Drop Action Name is invoked" + }, + "details": { + "name": "Set On Drop Action Name", + "tooltip": "Sets the name of the action triggered when a draggable component is dropped on the drop target" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the action triggered when a draggable component is dropped on the drop target" + } + } + ] + }, + { + "key": "GetDropState", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Drop State" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Drop State is invoked" + }, + "details": { + "name": "Get Drop State", + "tooltip": "Gets the drop state" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetDropState", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Drop State" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Drop State is invoked" + }, + "details": { + "name": "Set Drop State", + "tooltip": "Sets the drop state" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Drop State", + "tooltip": "The drop state (0=Normal, 1=Valid, 2=Invalid)" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiDropdownBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiDropdownBus.names new file mode 100644 index 0000000000..f390bdb7f4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiDropdownBus.names @@ -0,0 +1,567 @@ +{ + "entries": [ + { + "key": "UiDropdownBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiDropdownBus", + "category": "UI" + }, + "methods": [ + { + "key": "GetOptionSelectedActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Option Selected Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Option Selected Action Name is invoked" + }, + "details": { + "name": "Get Option Selected Action Name", + "tooltip": "Gets the name of the action triggered when an option is selected" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetWaitTime", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Wait Time" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Wait Time is invoked" + }, + "details": { + "name": "Get Wait Time", + "tooltip": "Gets how long to wait before expanding upon hover and collapsing upon exit" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetCollapseOnOutsideClick", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Collapse On Outside Click" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Collapse On Outside Click is invoked" + }, + "details": { + "name": "Set Collapse On Outside Click", + "tooltip": "Sets whether the dropdown should collapse when the user clicks outside the dropdown" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Collapse", + "tooltip": "Indicates whether the dropdown should collapse when the user clicks outside the dropdown" + } + } + ] + }, + { + "key": "SetExpandOnHover", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Expand On Hover" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Expand On Hover is invoked" + }, + "details": { + "name": "Set Expand On Hover", + "tooltip": "Sets whether the dropdown should expand automatically on hover" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Expand", + "tooltip": "Indicates whether the dropdown should expand automatically on hover" + } + } + ] + }, + { + "key": "Expand", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Expand" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Expand is invoked" + }, + "details": { + "name": "Expand", + "tooltip": "Expands the dropdown menu" + } + }, + { + "key": "Collapse", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Collapse" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Collapse is invoked" + }, + "details": { + "name": "Collapse", + "tooltip": "Collapses the dropdown menu" + } + }, + { + "key": "SetCollapsedActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Collapsed Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Collapsed Action Name is invoked" + }, + "details": { + "name": "Set Collapsed Action Name", + "tooltip": "Sets the name of the action triggered when the dropdown is collapsed" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the action triggered when the dropdown is collapsed" + } + } + ] + }, + { + "key": "GetExpandOnHover", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Expand On Hover" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Expand On Hover is invoked" + }, + "details": { + "name": "Get Expand On Hover", + "tooltip": "Returns whether the dropdown expands automatically on hover" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetWaitTime", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Wait Time" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Wait Time is invoked" + }, + "details": { + "name": "Set Wait Time", + "tooltip": "Sets how long to wait before expanding upon hover and collapsing upon exit" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Time", + "tooltip": "How long to wait before expanding upon hover and collapsing upon exit" + } + } + ] + }, + { + "key": "GetCollapseOnOutsideClick", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Collapse On Outside Click" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Collapse On Outside Click is invoked" + }, + "details": { + "name": "Get Collapse On Outside Click", + "tooltip": "Returns whether the dropdown collapses when the user clicks outside the dropdown" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetExpandedParentId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Expanded Parent" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Expanded Parent is invoked" + }, + "details": { + "name": "Get Expanded Parent", + "tooltip": "Gets the element that the dropdown content parents to when expanded (the root element by default)" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetTextElement", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Text Element" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Text Element is invoked" + }, + "details": { + "name": "Get Text Element", + "tooltip": "Gets the text element that displays the text of the currently selected option" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetIconElement", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Icon Element" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Icon Element is invoked" + }, + "details": { + "name": "Get Icon Element", + "tooltip": "Gets the icon element that displays the icon of the currently selected option" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetIconElement", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Icon Element" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Icon Element is invoked" + }, + "details": { + "name": "Set Icon Element", + "tooltip": "Sets the icon element that displays the icon of the currently selected option" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Icon EntityID", + "tooltip": "The icon element that displays the icon of the currently selected option" + } + } + ] + }, + { + "key": "SetExpandedActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Expanded Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Expanded Action Name is invoked" + }, + "details": { + "name": "Set Expanded Action Name", + "tooltip": "Sets the name of the action triggered when the dropdown is expanded" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the action triggered when the dropdown is expanded" + } + } + ] + }, + { + "key": "SetContent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Content" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Content is invoked" + }, + "details": { + "name": "Set Content", + "tooltip": "Sets the content element that the dropdown expands" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Content EntityID", + "tooltip": "The content element that the dropdown expands" + } + } + ] + }, + { + "key": "SetTextElement", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Text Element" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Text Element is invoked" + }, + "details": { + "name": "Set Text Element", + "tooltip": "Sets the text element that displays the text of the currently selected option" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Text EntityID", + "tooltip": "The text element that displays the text of the currently selected option" + } + } + ] + }, + { + "key": "SetValue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Value is invoked" + }, + "details": { + "name": "Set Value", + "tooltip": "Sets the currently selected option of the dropdown manually" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Option EntityID", + "tooltip": "The currently selected option of the dropdown" + } + } + ] + }, + { + "key": "GetContent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Content" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Content is invoked" + }, + "details": { + "name": "Get Content", + "tooltip": "Gets the content element the dropdown will expand" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetExpandedActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Expanded Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Expanded Action Name is invoked" + }, + "details": { + "name": "Get Expanded Action Name", + "tooltip": "Gets the name of the action triggered when the dropdown is expanded" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetCollapsedActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Collapsed Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Collapsed Action Name is invoked" + }, + "details": { + "name": "Get Collapsed Action Name", + "tooltip": "Gets the name of the action triggered when the dropdown is collapsed" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetValue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Value is invoked" + }, + "details": { + "name": "Get Value", + "tooltip": "Gets the currently selected option" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetExpandedParentId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Expanded Parent" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Expanded Parent is invoked" + }, + "details": { + "name": "Set Expanded Parent", + "tooltip": "Sets the element that the dropdown content parents to when expanded" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Expanded EntityID", + "tooltip": "The element that the dropdown content parents to when expanded" + } + } + ] + }, + { + "key": "SetOptionSelectedActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Option Selected Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Option Selected Action Name is invoked" + }, + "details": { + "name": "Set Option Selected Action Name", + "tooltip": "Sets the name of the action triggered when an option is selected" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the action triggered when an option is selected" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiDropdownOptionBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiDropdownOptionBus.names new file mode 100644 index 0000000000..9ba0e74993 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiDropdownOptionBus.names @@ -0,0 +1,159 @@ +{ + "entries": [ + { + "key": "UiDropdownOptionBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiDropdownOptionBus", + "category": "UI" + }, + "methods": [ + { + "key": "GetTextElement", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Text Element" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Text Element is invoked" + }, + "details": { + "name": "Get Text Element", + "tooltip": "Gets the text element that is used to display the dropdown option’s text" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetIconElement", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Icon Element" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Icon Element is invoked" + }, + "details": { + "name": "Get Icon Element", + "tooltip": "Gets the icon element that is used to display the dropdown option’s icon" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetIconElement", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Icon Element" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Icon Element is invoked" + }, + "details": { + "name": "Set Icon Element", + "tooltip": "Sets the icon element that is used to display the dropdown option’s icon" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Icon EntityID", + "tooltip": "The icon element that is used to display the dropdown option’s icon" + } + } + ] + }, + { + "key": "SetOwningDropdown", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Owning Dropdown" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Owning Dropdown is invoked" + }, + "details": { + "name": "Set Owning Dropdown", + "tooltip": "Sets the owning dropdown to be modified when the dropdown option is selected" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Dropdown EntityID", + "tooltip": "The owning dropdown to be modified when the dropdown option is selected" + } + } + ] + }, + { + "key": "SetTextElement", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Text Element" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Text Element is invoked" + }, + "details": { + "name": "Set Text Element", + "tooltip": "Sets the text element that is used to display the dropdown option’s text" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Text EntityID", + "tooltip": "The text element that is used to display the dropdown option’s text" + } + } + ] + }, + { + "key": "GetOwningDropdown", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Owning Dropdown" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Owning Dropdown is invoked" + }, + "details": { + "name": "Get Owning Dropdown", + "tooltip": "Gets the owning dropdown to be modified when the dropdown option is selected" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiDynamicContentDatabaseBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiDynamicContentDatabaseBus.names new file mode 100644 index 0000000000..f51a09ebb1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiDynamicContentDatabaseBus.names @@ -0,0 +1,199 @@ +{ + "entries": [ + { + "key": "UiDynamicContentDatabaseBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiDynamicContentDatabaseBus", + "category": "UI/LyShine Examples" + }, + "methods": [ + { + "key": "Refresh", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Refresh" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Refresh is invoked" + }, + "details": { + "name": "Refresh", + "tooltip": "Refreshes the database with new content" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Color Type", + "tooltip": "The color type (0=Free, 1=Paid)" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Pathname", + "tooltip": "The pathname to a json file containing color data" + } + } + ] + }, + { + "key": "GetColorPrice", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Color Price" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Color Price is invoked" + }, + "details": { + "name": "Get Color Price", + "tooltip": "Gets the price of a color" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Color Type", + "tooltip": "The color type (0=Free, 1=Paid)" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Color Index", + "tooltip": "The index of the color" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string", + "tooltip": "The color type (0=Free, 1=Paid)" + } + } + ] + }, + { + "key": "GetColorName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Color Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Color Name is invoked" + }, + "details": { + "name": "Get Color Name", + "tooltip": "Gets the name of a color" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Color Type", + "tooltip": "The color type (0=Free, 1=Paid)" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Color Index", + "tooltip": "The index of the color" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string", + "tooltip": "The color type (0=Free, 1=Paid)" + } + } + ] + }, + { + "key": "GetColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Color" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Color is invoked" + }, + "details": { + "name": "Get Color", + "tooltip": "Gets the color value of a color" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Color Type", + "tooltip": "The color type (0=Free, 1=Paid)" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Color index", + "tooltip": "The index of the color" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color", + "tooltip": "The color type (0=Free, 1=Paid)" + } + } + ] + }, + { + "key": "GetNumColors", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Number Of Colors" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Number Of Colors is invoked" + }, + "details": { + "name": "Get Number Of Colors", + "tooltip": "Gets the number of colors in the database" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Color Type", + "tooltip": "The color type (0=Free, 1=Paid)" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int", + "tooltip": "The color type (0=Free, 1=Paid)" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiDynamicLayoutBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiDynamicLayoutBus.names new file mode 100644 index 0000000000..edfc147085 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiDynamicLayoutBus.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "UiDynamicLayoutBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiDynamicLayoutBus", + "category": "UI" + }, + "methods": [ + { + "key": "SetNumChildElements", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Number Of Child Elements" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Number Of Child Elements is invoked" + }, + "details": { + "name": "Set Number Of Child Elements", + "tooltip": "Sets the number of children to be cloned from a prototype element" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Count", + "tooltip": "The number of children to be cloned from a prototype element" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiDynamicScrollBoxBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiDynamicScrollBoxBus.names new file mode 100644 index 0000000000..f386c97dde --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiDynamicScrollBoxBus.names @@ -0,0 +1,758 @@ +{ + "entries": [ + { + "key": "UiDynamicScrollBoxBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiDynamicScrollBoxBus", + "category": "UI" + }, + "methods": [ + { + "key": "SetSectionsEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Sections Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Sections Enabled is invoked" + }, + "details": { + "name": "Set Sections Enabled", + "tooltip": "Set whether the list is divided into sections with headers" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Sections Enabled", + "tooltip": "Whether the list is divided into sections with headers" + } + } + ] + }, + { + "key": "GetEstimatedVariableElementSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Estimated Variable Element Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Estimated Variable Element Size is invoked" + }, + "details": { + "name": "Get Estimated Variable Element Size", + "tooltip": "Get the estimated size for the variable elements. If set to 0, then element sizes are calculated up front rather than when becoming visible" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetAutoCalculateVariableElementSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Auto-calculate Variable Element Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Auto-calculate Variable Element Size is invoked" + }, + "details": { + "name": "Set Auto-calculate Variable Element Size", + "tooltip": "Set whether to auto-calculate the elements when they vary in size" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Auto-calculate", + "tooltip": "Whether to auto-calculate the elements when they vary in size" + } + } + ] + }, + { + "key": "GetEstimatedVariableHeaderSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Estimated Variable Header Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Estimated Variable Header Size is invoked" + }, + "details": { + "name": "Get Estimated Variable Header Size", + "tooltip": "Get the estimated size for the variable headers. If set to 0, then header sizes are calculated up front rather than when becoming visible" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetEstimatedVariableHeaderSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Estimated Variable Header Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Estimated Variable Header Size is invoked" + }, + "details": { + "name": "Set Estimated Variable Header Size", + "tooltip": "Set the estimated size for the variable headers. If set to 0, then header sizes are calculated up front rather than when becoming visible" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Estimated Size", + "tooltip": "The estimated size for the variable headers" + } + } + ] + }, + { + "key": "SetPrototypeElement", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Prototype Element" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Prototype Element is invoked" + }, + "details": { + "name": "Set Prototype Element", + "tooltip": "Set the prototype entity used for the elements" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Prototype Element", + "tooltip": "The prototype entity used for the elements" + } + } + ] + }, + { + "key": "SetElementsVaryInSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Elements Vary In Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Elements Vary In Size is invoked" + }, + "details": { + "name": "Set Elements Vary In Size", + "tooltip": "Set whether the elements vary in size" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Elements Vary In Size", + "tooltip": "Whether the elements vary in size" + } + } + ] + }, + { + "key": "RemoveElementsFromFront", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Remove Elements From Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Remove Elements From Front is invoked" + }, + "details": { + "name": "Remove Elements From Front", + "tooltip": "Remove elements from the front of the list" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Number To Remove", + "tooltip": "The number of elements to remove from the front" + } + } + ] + }, + { + "key": "GetElementIndexOfChild", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Element Index Of Child" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Element Index Of Child is invoked" + }, + "details": { + "name": "Get Element Index Of Child", + "tooltip": "Get the element index of the specified child element. Returns -1 if not found." + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Child EntityID", + "tooltip": "The child" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int", + "tooltip": "The child" + } + } + ] + }, + { + "key": "GetElementsVaryInSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Elements Vary In Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Elements Vary In Size is invoked" + }, + "details": { + "name": "Get Elements Vary In Size", + "tooltip": "Get whether the elements vary in size" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetHeadersSticky", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Headers Sticky" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Headers Sticky is invoked" + }, + "details": { + "name": "Get Headers Sticky", + "tooltip": "Get whether headers stick to the beginning of the visible list area" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetAutoRefreshOnPostActivate", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Auto-refresh On Post-activate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Auto-refresh On Post-activate is invoked" + }, + "details": { + "name": "Get Auto-refresh On Post-activate", + "tooltip": "Get whether the list should automatically prepare and refresh its content post activation" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetEstimatedVariableElementSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Estimated Variable Element Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Estimated Variable Element Size is invoked" + }, + "details": { + "name": "Set Estimated Variable Element Size", + "tooltip": "Set the estimated size for the variable elements. If set to 0, then element sizes are calculated up front rather than when becoming visible" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Estimated Size", + "tooltip": "The estimated size for the variable elements" + } + } + ] + }, + { + "key": "SetPrototypeHeader", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Prototype Header" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Prototype Header is invoked" + }, + "details": { + "name": "Set Prototype Header", + "tooltip": "Set the prototype entity used for the headers" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Prototype Header", + "tooltip": "The prototype entity used for the headers" + } + } + ] + }, + { + "key": "GetSectionsEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Sections Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Sections Enabled is invoked" + }, + "details": { + "name": "Get Sections Enabled", + "tooltip": "Get whether the list is divided into sections with headers" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "ScrollToEnd", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Scroll To End" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Scroll To End is invoked" + }, + "details": { + "name": "Scroll To End", + "tooltip": "Scroll to the end of the list" + } + }, + { + "key": "GetPrototypeElement", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Prototype Element" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Prototype Element is invoked" + }, + "details": { + "name": "Get Prototype Element", + "tooltip": "Get the prototype entity used for the elements" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetHeadersVaryInSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Headers Vary In Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Headers Vary In Size is invoked" + }, + "details": { + "name": "Set Headers Vary In Size", + "tooltip": "Set whether the headers vary in size" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Headers Vary In Size", + "tooltip": "Whether the headers vary in size" + } + } + ] + }, + { + "key": "AddElementsToEnd", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Add Elements To End" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Add Elements To End is invoked" + }, + "details": { + "name": "Add Elements To End", + "tooltip": "Add elements to the end of the list" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Number To Add", + "tooltip": "The number of elements to add to the end" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Scroll To End If Was At End", + "tooltip": "If set and the scroll box was already scrolled to the end then it will scroll to the end after adding the elements" + } + } + ] + }, + { + "key": "GetChildAtElementIndex", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Child At Element Index" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Child At Element Index is invoked" + }, + "details": { + "name": "Get Child At Element Index", + "tooltip": "Get the child element at the specified element index. Used with lists that are not divided into sections" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Child Element Index", + "tooltip": "The index of the child" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "The index of the child" + } + } + ] + }, + { + "key": "SetHeadersSticky", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Headers Sticky" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Headers Sticky is invoked" + }, + "details": { + "name": "Set Headers Sticky", + "tooltip": "Set whether headers stick to the beginning of the visible list area" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Sticky Headers", + "tooltip": "Whether headers stick to the beginning of the visible list area" + } + } + ] + }, + { + "key": "GetChildAtSectionAndElementIndex", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Child At Section And Element Index" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Child At Section And Element Index is invoked" + }, + "details": { + "name": "Get Child At Section And Element Index", + "tooltip": "Get the child element at the specified section index and element index. Used with lists that are divided into sections" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Section Index", + "tooltip": "The index of the section" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Element Index", + "tooltip": "The index of the element within the section" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "The index of the section" + } + } + ] + }, + { + "key": "SetAutoRefreshOnPostActivate", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Auto-refresh On Post-activate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Auto-refresh On Post-activate is invoked" + }, + "details": { + "name": "Set Auto-refresh On Post-activate", + "tooltip": "Set whether the list should automatically prepare and refresh its content post activation" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Auto-refresh", + "tooltip": "Whether the list should automatically prepare and refresh its content post activation" + } + } + ] + }, + { + "key": "GetSectionIndexOfChild", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Section Index Of Child" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Section Index Of Child is invoked" + }, + "details": { + "name": "Get Section Index Of Child", + "tooltip": "Get the section index of the specified child element. Returns -1 if not found. Used with lists that are divided into sections" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Child Element", + "tooltip": "The child element" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int", + "tooltip": "The child element" + } + } + ] + }, + { + "key": "RefreshContent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Refresh Content" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Refresh Content is invoked" + }, + "details": { + "name": "Refresh Content", + "tooltip": "Refreshes the content. You should call this when the list size or element content has changed" + } + }, + { + "key": "GetHeadersVaryInSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Headers Vary In Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Headers Vary In Size is invoked" + }, + "details": { + "name": "Get Headers Vary In Size", + "tooltip": "Get whether the headers vary in size" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetPrototypeHeader", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Prototype Header" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Prototype Header is invoked" + }, + "details": { + "name": "Get Prototype Header", + "tooltip": "Get the prototype entity used for the headers" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetAutoCalculateVariableHeaderSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Auto-calculate Variable Header Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Auto-calculate Variable Header Size is invoked" + }, + "details": { + "name": "Set Auto-calculate Variable Header Size", + "tooltip": "Set whether to auto calculate the headers when they vary in size" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Auto-calculate", + "tooltip": "Whether to auto calculate the headers when they vary in size" + } + } + ] + }, + { + "key": "GetAutoCalculateVariableElementSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Auto-calculate Variable Element Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Auto-calculate Variable Element Size is invoked" + }, + "details": { + "name": "Get Auto-calculate Variable Element Size", + "tooltip": "Get whether to auto-calculate the elements when they vary in size" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetAutoCalculateVariableHeaderSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Auto-calculate Variable Header Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Auto-calculate Variable Header Size is invoked" + }, + "details": { + "name": "Get Auto-calculate Variable Header Size", + "tooltip": "Get whether to auto-calculate the headers when they vary in size" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiElementBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiElementBus.names new file mode 100644 index 0000000000..61645c6432 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiElementBus.names @@ -0,0 +1,390 @@ +{ + "entries": [ + { + "key": "UiElementBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiElementBus", + "category": "UI" + }, + "methods": [ + { + "key": "FindChildByName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Find Child By Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Find Child By Name is invoked" + }, + "details": { + "name": "Find Child By Name", + "tooltip": "Returns the first immediate child with the specified name" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the child" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "The name of the child" + } + } + ] + }, + { + "key": "GetChild", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Child" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Child is invoked" + }, + "details": { + "name": "Get Child", + "tooltip": "Gets a child by index" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Child Index", + "tooltip": "The index of the child" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "The index of the child" + } + } + ] + }, + { + "key": "GetNumChildElements", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Number Of Child Elements" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Number Of Child Elements is invoked" + }, + "details": { + "name": "Get Number Of Child Elements", + "tooltip": "Gets the number of children of the element" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetChildren", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Children" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Children is invoked" + }, + "details": { + "name": "Get Children", + "tooltip": "Gets the children of the element" + }, + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "DestroyElement", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Destroy Element" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Destroy Element is invoked" + }, + "details": { + "name": "Destroy Element", + "tooltip": "Destroys the element" + } + }, + { + "key": "IsAncestor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Ancestor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Ancestor is invoked" + }, + "details": { + "name": "Is Ancestor", + "tooltip": "Return whether a given element is an ancestor of the element" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Ancestor EntityID", + "tooltip": "The element to check whether it's an ancestor of the element" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool", + "tooltip": "The element to check whether it's an ancestor of the element" + } + } + ] + }, + { + "key": "GetParent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Parent" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Parent is invoked" + }, + "details": { + "name": "Get Parent", + "tooltip": "Gets the parent of the element" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "FindDescendantByName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Find Descendant By Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Find Descendant By Name is invoked" + }, + "details": { + "name": "Find Descendant By Name", + "tooltip": "Returns the first descendant element with the specified name" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the descendant" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "The name of the descendant" + } + } + ] + }, + { + "key": "IsEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Enabled is invoked" + }, + "details": { + "name": "Is Enabled", + "tooltip": "Returns whether the element is enabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetCanvas", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Canvas" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Canvas is invoked" + }, + "details": { + "name": "Get Canvas", + "tooltip": "Gets the canvas that contains the element" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "Reparent", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reparent" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reparent is invoked" + }, + "details": { + "name": "Reparent", + "tooltip": "Changes the element to be the child of a new parent.\n\nThe element is removed from its current parent and added as a child of the new parent. If the new parent is invalid, the element becomes a top-level element\n\n If an \"insert before\" element is specified, then the element is inserted before that element if the \"insert before\" element is a child of the new parent" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Parent EntityID", + "tooltip": "The new parent" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Insert Before EntityID", + "tooltip": "The element to insert before" + } + } + ] + }, + { + "key": "GetName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Name is invoked" + }, + "details": { + "name": "Get Name", + "tooltip": "Gets the name of the element" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetIndexOfChildByEntityId", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Index Of Child By EntityID" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Index Of Child By EntityID is invoked" + }, + "details": { + "name": "Get Index Of Child By EntityID", + "tooltip": "Gets the index of the specified child" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Child EntityID", + "tooltip": "The child" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int", + "tooltip": "The child" + } + } + ] + }, + { + "key": "SetIsEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Enabled is invoked" + }, + "details": { + "name": "Set Is Enabled", + "tooltip": "Sets whether the element is enabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enabled", + "tooltip": "Indicates whether the element is enabled" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiFaderBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiFaderBus.names new file mode 100644 index 0000000000..32e99d34f7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiFaderBus.names @@ -0,0 +1,163 @@ +{ + "entries": [ + { + "key": "UiFaderBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiFaderBus", + "category": "UI" + }, + "methods": [ + { + "key": "GetUseRenderToTexture", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Use Render To Texture" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Use Render To Texture is invoked" + }, + "details": { + "name": "Get Use Render To Texture", + "tooltip": "Get the flag that indicates whether the fader should use render to texture" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "IsFading", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Fading" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Fading is invoked" + }, + "details": { + "name": "Is Fading", + "tooltip": "Returns whether a fade is taking place" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Fade", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Fade" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Fade is invoked" + }, + "details": { + "name": "Fade", + "tooltip": "Triggers a fade" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Target Value", + "tooltip": "The value at which to end the fade [0-1]. One means no fade; zero means complete fade to invisible" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Speed", + "tooltip": "The speed of the fade in full fade amount per second; 0 means instant" + } + } + ] + }, + { + "key": "SetFadeValue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Fade Value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Fade Value is invoked" + }, + "details": { + "name": "Set Fade Value", + "tooltip": "Sets the fade value" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Fade Value", + "tooltip": "The fade value [0-1]. One means no fade; zero means complete fade to invisible" + } + } + ] + }, + { + "key": "GetFadeValue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Fade Value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Fade Value is invoked" + }, + "details": { + "name": "Get Fade Value", + "tooltip": "Gets the fade value" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetUseRenderToTexture", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Use Render To Texture" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Use Render To Texture is invoked" + }, + "details": { + "name": "Set Use Render To Texture", + "tooltip": "Set the flag that indicates whether the fader should use render to texture" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Use Render To Texture", + "tooltip": "Whether the fader should use render to texture" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiFlipbookAnimationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiFlipbookAnimationBus.names new file mode 100644 index 0000000000..341fd798d4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiFlipbookAnimationBus.names @@ -0,0 +1,585 @@ +{ + "entries": [ + { + "key": "UiFlipbookAnimationBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiFlipbookAnimationBus", + "category": "UI" + }, + "methods": [ + { + "key": "GetLoopType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Loop Type" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Loop Type is invoked" + }, + "details": { + "name": "Get Loop Type", + "tooltip": "Gets the type of looping behavior for the animation" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetReverseDelay", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Reverse Delay" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Reverse Delay is invoked" + }, + "details": { + "name": "Get Reverse Delay", + "tooltip": "Gets the delay (in seconds) before playing the reverse loop sequence (PingPong loop types only)" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetIsAutoPlay", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Auto Play Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Auto Play Enabled is invoked" + }, + "details": { + "name": "Set Is Auto Play Enabled", + "tooltip": "Sets whether the animation will begin playing as soon as the element is activated" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Auto Play", + "tooltip": "Indicates whether the animation will begin playing as soon as the element is activated" + } + } + ] + }, + { + "key": "SetCurrentFrame", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Current Frame" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Current Frame is invoked" + }, + "details": { + "name": "Set Current Frame", + "tooltip": "Sets the frame to immediately display for the animation" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Frame", + "tooltip": "The frame to immediately display for the animation" + } + } + ] + }, + { + "key": "GetLoopStartFrame", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Loop Start Frame" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Loop Start Frame is invoked" + }, + "details": { + "name": "Get Loop Start Frame", + "tooltip": "Gets the first frame that is displayed within an animation loop. Applicable only when the \"Loop Type\" is set to anything other than \"None\"" + }, + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "SetLoopType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Loop Type" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Loop Type is invoked" + }, + "details": { + "name": "Set Loop Type", + "tooltip": "Sets the type of looping behavior for this animation" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Loop Type", + "tooltip": "The looping behavior for the animation (0=None, 1=Linear, 2=Ping Pong)" + } + } + ] + }, + { + "key": "GetStartDelay", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Start Delay" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Start Delay is invoked" + }, + "details": { + "name": "Get Start Delay", + "tooltip": "Gets the delay (in seconds) before playing the flipbook (applied only once during playback)" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetStartDelay", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Start Delay" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Start Delay is invoked" + }, + "details": { + "name": "Set Start Delay", + "tooltip": "Sets the delay (in seconds) before playing the flipbook (applied only once during playback)" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Start Delay", + "tooltip": "The delay (in seconds) before playing the flipbook" + } + } + ] + }, + { + "key": "GetCurrentFrame", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Current Frame" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Current Frame is invoked" + }, + "details": { + "name": "Get Current Frame", + "tooltip": "Gets the frame of the animation currently displayed" + }, + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "GetFramerate", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Framerate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Framerate is invoked" + }, + "details": { + "name": "Get Framerate", + "tooltip": "Gets the speed used to determine when to transition to the next frame. Framerate is defined relative to unit of time, specified by FramerateUnits" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetLoopDelay", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Loop Delay" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Loop Delay is invoked" + }, + "details": { + "name": "Set Loop Delay", + "tooltip": "Sets the delay (in seconds) before playing the loop sequence" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Loop Delay", + "tooltip": "The delay (in seconds) before playing the loop sequence" + } + } + ] + }, + { + "key": "GetStartFrame", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Start Frame" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Start Frame is invoked" + }, + "details": { + "name": "Get Start Frame", + "tooltip": "Gets the first frame to display when starting the animation" + }, + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "SetFramerateUnit", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Framerate Unit" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Framerate Unit is invoked" + }, + "details": { + "name": "Set Framerate Unit", + "tooltip": "Sets the framerate unit (0 = Frames per second, 1 = Seconds per frame)" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Framerate Unit", + "tooltip": "The framerate unit (0 = Frames per second, 1 = Seconds per frame)" + } + } + ] + }, + { + "key": "IsPlaying", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Playing" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Playing is invoked" + }, + "details": { + "name": "Is Playing", + "tooltip": "Returns whether the animation is currently playing" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetEndFrame", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set End Frame" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set End Frame is invoked" + }, + "details": { + "name": "Set End Frame", + "tooltip": "Sets the last frame to display for the animation" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Frame", + "tooltip": "The last frame to display for the animation" + } + } + ] + }, + { + "key": "SetLoopStartFrame", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Loop Start Frame" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Loop Start Frame is invoked" + }, + "details": { + "name": "Set Loop Start Frame", + "tooltip": "Sets the first frame that is displayed within an animation loop. Applicable only when the \"Loop Type\" is set to anything other than \"None\"" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Frame", + "tooltip": "The first frame that is displayed within an animation loop" + } + } + ] + }, + { + "key": "SetReverseDelay", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Reverse Delay" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Reverse Delay is invoked" + }, + "details": { + "name": "Set Reverse Delay", + "tooltip": "Sets the delay (in seconds) before playing the reverse loop sequence (PingPong loop types only)" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Reverse Delay", + "tooltip": "The delay (in seconds) before playing the reverse loop sequence" + } + } + ] + }, + { + "key": "Stop", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Stop" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Stop is invoked" + }, + "details": { + "name": "Stop", + "tooltip": "Ends the animation" + } + }, + { + "key": "SetFramerate", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Framerate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Framerate is invoked" + }, + "details": { + "name": "Set Framerate", + "tooltip": "Sets the speed used to determine when to transition to the next frame. Framerate is defined relative to unit of time, specified by FramerateUnits" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Framerate", + "tooltip": "The framerate in whatever units are specified by Set Framerate Unit" + } + } + ] + }, + { + "key": "GetIsAutoPlay", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Auto Play Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Auto Play Enabled is invoked" + }, + "details": { + "name": "Is Auto Play Enabled", + "tooltip": "Returns whether the animation will begin playing as soon as the element is activated" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Start", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Start" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Start is invoked" + }, + "details": { + "name": "Start", + "tooltip": "Begins playing the flipbook animation" + } + }, + { + "key": "SetStartFrame", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Start Frame" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Start Frame is invoked" + }, + "details": { + "name": "Set Start Frame", + "tooltip": "Sets the first frame to display when starting the animation" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Frame", + "tooltip": "The first frame to display when starting the animation" + } + } + ] + }, + { + "key": "GetEndFrame", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get End Frame" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get End Frame is invoked" + }, + "details": { + "name": "Get End Frame", + "tooltip": "Gets the last frame to display for the animation" + }, + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "GetFramerateUnit", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Framerate Unit" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Framerate Unit is invoked" + }, + "details": { + "name": "Get Framerate Unit", + "tooltip": "Gets the framerate unit (0 = Frames per second, 1 = Seconds per frame)" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetLoopDelay", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Loop Delay" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Loop Delay is invoked" + }, + "details": { + "name": "Get Loop Delay", + "tooltip": "Gets the delay (in seconds) before playing the loop sequence" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiImageBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiImageBus.names new file mode 100644 index 0000000000..ed79b2aaad --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiImageBus.names @@ -0,0 +1,706 @@ +{ + "entries": [ + { + "key": "UiImageBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiImageBus", + "category": "UI" + }, + "methods": [ + { + "key": "GetColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Color" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Color is invoked" + }, + "details": { + "name": "Get Color", + "tooltip": "Gets the color tint for the image" + }, + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "SetColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Color" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Color is invoked" + }, + "details": { + "name": "Set Color", + "tooltip": "Sets the color tint for the image" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color", + "tooltip": "The color tint for the image" + } + } + ] + }, + { + "key": "SetSpriteType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Sprite Type" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Sprite Type is invoked" + }, + "details": { + "name": "Set Sprite Type", + "tooltip": "Sets the type of the sprite" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Sprite Type", + "tooltip": "The type of the sprite (0=Sprite Asset, 1=Render Target)" + } + } + ] + }, + { + "key": "GetFillClockwise", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Fill Clockwise" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Fill Clockwise is invoked" + }, + "details": { + "name": "Get Fill Clockwise", + "tooltip": "Returns whether the image is radially filled clockwise" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetRenderTargetName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Render Target Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Render Target Name is invoked" + }, + "details": { + "name": "Set Render Target Name", + "tooltip": "Sets the name of the render target associated with the sprite" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the render target associated with the sprite" + } + } + ] + }, + { + "key": "SetSpritePathnameIfExists", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Sprite Pathname If Exists" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Sprite Pathname If Exists is invoked" + }, + "details": { + "name": "Set Sprite Pathname If Exists", + "tooltip": "Sets the source location of the image to be displayed by the element - only if the sprite asset exists. Otherwise, the current sprite remains unchanged. Returns whether the sprite changed" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Pathname", + "tooltip": "The source location of the image to be displayed by the element" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool", + "tooltip": "The source location of the image to be displayed by the element" + } + } + ] + }, + { + "key": "SetEdgeFillOrigin", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Edge Fill Origin" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Edge Fill Origin is invoked" + }, + "details": { + "name": "Set Edge Fill Origin", + "tooltip": "Sets the edge fill origin of the image" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Origin", + "tooltip": "The edge fill origin (0=Left, 1=Top, 2=Right, 3=Bottom)" + } + } + ] + }, + { + "key": "GetEdgeFillOrigin", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Edge Fill Origin" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Edge Fill Origin is invoked" + }, + "details": { + "name": "Get Edge Fill Origin", + "tooltip": "Gets the edge fill origin of the image" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetFillClockwise", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Fill Clockwise" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Fill Clockwise is invoked" + }, + "details": { + "name": "Set Fill Clockwise", + "tooltip": "Sets whether the image is radially filled clockwise" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Fill Clockwise", + "tooltip": "Indicates whether the image is radially filled clockwise" + } + } + ] + }, + { + "key": "SetSpritePathname", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Sprite Pathname" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Sprite Pathname is invoked" + }, + "details": { + "name": "Set Sprite Pathname", + "tooltip": "Sets the source location of the image to be displayed by the element" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Pathname", + "tooltip": "The source location of the image to be displayed by the element" + } + } + ] + }, + { + "key": "SetFillCenter", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Fill Center" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Fill Center is invoked" + }, + "details": { + "name": "Set Fill Center", + "tooltip": "Sets whether the center of a sliced image is filled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Fill Center", + "tooltip": "Indicates whether the center of a sliced image is filled" + } + } + ] + }, + { + "key": "SetAlpha", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Alpha" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Alpha is invoked" + }, + "details": { + "name": "Set Alpha", + "tooltip": "Sets the image alpha (opacity)" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Alpha", + "tooltip": "The image alpha (opacity)" + } + } + ] + }, + { + "key": "SetFillType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Fill Type" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Fill Type is invoked" + }, + "details": { + "name": "Set Fill Type", + "tooltip": "Sets the fill type of the image. Fill type determines how the image component is filled" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Fill Type", + "tooltip": "The fill type (0=None, 1=Linear, 2=Radial, 3=Radial Corner, 4=Radial Edge)" + } + } + ] + }, + { + "key": "SetFillAmount", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Fill Amount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Fill Amount is invoked" + }, + "details": { + "name": "Set Fill Amount", + "tooltip": "Sets the fill amount" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Fill Amount", + "tooltip": "The fill amount [0-1]. One indicates that the image is completely filled. Zero means no part of the image is filled" + } + } + ] + }, + { + "key": "GetRadialFillStartAngle", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Radial Fill Start Angle" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Radial Fill Start Angle is invoked" + }, + "details": { + "name": "Get Radial Fill Start Angle", + "tooltip": "Gets the starting angle of the radial fill" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetRenderTargetName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Render Target Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Render Target Name is invoked" + }, + "details": { + "name": "Get Render Target Name", + "tooltip": "Gets the name of the render target associated with the sprite" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetIsRenderTargetSRGB", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Render Target sRGB" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Render Target sRGB is invoked" + }, + "details": { + "name": "Set Is Render Target sRGB", + "tooltip": "Sets whether the render target is in sRGB color space" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is sRGB", + "tooltip": "Whether the render target is in sRGB color space" + } + } + ] + }, + { + "key": "GetAlpha", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Alpha" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Alpha is invoked" + }, + "details": { + "name": "Get Alpha", + "tooltip": "Gets the image alpha (opacity)" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetIsRenderTargetSRGB", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Is Render Target sRGB" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Is Render Target sRGB is invoked" + }, + "details": { + "name": "Get Is Render Target sRGB", + "tooltip": "Gets whether the render target is in sRGB color space" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetImageType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Image Type" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Image Type is invoked" + }, + "details": { + "name": "Set Image Type", + "tooltip": "Sets the type of the image. Affects how the texture or sprite is mapped to the image rectangle" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Image Type", + "tooltip": "The image type (0=Stretched, 1=Sliced, 2=Fixed, 3=Tiled, 4=Stretched To Fit, 5=Stretched To Fill)" + } + } + ] + }, + { + "key": "GetSpritePathname", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Sprite Pathname" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Sprite Pathname is invoked" + }, + "details": { + "name": "Get Sprite Pathname", + "tooltip": "Gets the source location of the image to be displayed by the element" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetFillType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Fill Type" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Fill Type is invoked" + }, + "details": { + "name": "Get Fill Type", + "tooltip": "Gets the fill type" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetCornerFillOrigin", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Corner Fill Origin" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Corner Fill Origin is invoked" + }, + "details": { + "name": "Set Corner Fill Origin", + "tooltip": "Sets the corner fill origin of the image" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Origin", + "tooltip": "The corner fill origin (0=Top Left, 1=Top Right, 2=Bottom Right, 3=Bottom Left)" + } + } + ] + }, + { + "key": "GetCornerFillOrigin", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Corner Fill Origin" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Corner Fill Origin is invoked" + }, + "details": { + "name": "Get Corner Fill Origin", + "tooltip": "Gets the corner fill origin of the image" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetImageType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Image Type" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Image Type is invoked" + }, + "details": { + "name": "Get Image Type", + "tooltip": "Gets the type of the image" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetRadialFillStartAngle", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Radial Fill Start Angle" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Radial Fill Start Angle is invoked" + }, + "details": { + "name": "Set Radial Fill Start Angle", + "tooltip": "Sets the starting angle of the radial fill in degrees clockwise" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Angle", + "tooltip": "The starting angle of the radial fill in degrees clockwise. A value of 0 indicates the top center of the image" + } + } + ] + }, + { + "key": "GetSpriteType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Sprite Type" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Sprite Type is invoked" + }, + "details": { + "name": "Get Sprite Type", + "tooltip": "Gets the type of the sprite" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetFillAmount", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Fill Amount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Fill Amount is invoked" + }, + "details": { + "name": "Get Fill Amount", + "tooltip": "Gets the fill amount" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetFillCenter", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Fill Center" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Fill Center is invoked" + }, + "details": { + "name": "Get Fill Center", + "tooltip": "Returns whether the center of a sliced image is filled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiImageSequenceBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiImageSequenceBus.names new file mode 100644 index 0000000000..90f0a59580 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiImageSequenceBus.names @@ -0,0 +1,62 @@ +{ + "entries": [ + { + "key": "UiImageSequenceBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiImageSequenceBus", + "category": "UI" + }, + "methods": [ + { + "key": "GetImageType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Image Type" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Image Type is invoked" + }, + "details": { + "name": "Get Image Type", + "tooltip": "Gets the image type of the image sequence" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetImageType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Image Type" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Image Type is invoked" + }, + "details": { + "name": "Set Image Type", + "tooltip": "Sets the image type of the image sequence" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Image Type", + "tooltip": "The image type (0 = Stretched, 1 = Fixed, 2 = Stretched To Fit, 3 = Stretched To Fill)" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiIndexableImageBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiIndexableImageBus.names new file mode 100644 index 0000000000..40f92ace00 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiIndexableImageBus.names @@ -0,0 +1,182 @@ +{ + "entries": [ + { + "key": "UiIndexableImageBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiIndexableImageBus", + "category": "UI" + }, + "methods": [ + { + "key": "GetImageIndexAlias", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Image Index Alias" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Image Index Alias is invoked" + }, + "details": { + "name": "Get Image Index Alias", + "tooltip": "Given an index, return its alias (if defined)" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Image Index", + "tooltip": "The index to get alias for" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string", + "tooltip": "The index to get alias for" + } + } + ] + }, + { + "key": "GetImageIndexCount", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Image Index Count" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Image Index Count is invoked" + }, + "details": { + "name": "Get Image Index Count", + "tooltip": "Gets the number of indices for this image" + }, + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "SetImageIndex", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Image Index" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Image Index is invoked" + }, + "details": { + "name": "Set Image Index", + "tooltip": "Sets the index of the image to display" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Image Index", + "tooltip": "The index of the image to display" + } + } + ] + }, + { + "key": "SetImageIndexAlias", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Image Index Alias" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Image Index Alias is invoked" + }, + "details": { + "name": "Set Image Index Alias", + "tooltip": "Given an index, set an alias for it" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Image Index", + "tooltip": "The index of the image to set alias for" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Image Alias", + "tooltip": "The alias for the given index" + } + } + ] + }, + { + "key": "GetImageIndexFromAlias", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Image Index From Alias" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Image Index From Alias is invoked" + }, + "details": { + "name": "Get Image Index From Alias", + "tooltip": "Given an alias, return its index" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Image Alias", + "tooltip": "The alias for image" + } + } + ], + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int", + "tooltip": "The alias for image" + } + } + ] + }, + { + "key": "GetImageIndex", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Image Index" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Image Index is invoked" + }, + "details": { + "name": "Get Image Index", + "tooltip": "Gets the index of the image being displayed" + }, + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiInteractableActionsBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiInteractableActionsBus.names new file mode 100644 index 0000000000..b124f9ccd5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiInteractableActionsBus.names @@ -0,0 +1,203 @@ +{ + "entries": [ + { + "key": "UiInteractableActionsBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiInteractableActionsBus", + "category": "UI" + }, + "methods": [ + { + "key": "SetPressedActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Pressed Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Pressed Action Name is invoked" + }, + "details": { + "name": "Set Pressed Action Name", + "tooltip": "Sets the name of the action triggered when the interactive element is pressed" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the action triggered when the interactive element is pressed" + } + } + ] + }, + { + "key": "GetPressedActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Pressed Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Pressed Action Name is invoked" + }, + "details": { + "name": "Get Pressed Action Name", + "tooltip": "Gets the name of the action triggered when the interactive element is pressed" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetHoverEndActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Hover End Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Hover End Action Name is invoked" + }, + "details": { + "name": "Get Hover End Action Name", + "tooltip": "Gets the name of the action triggered when the interactive element is done being hovered over" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetHoverStartActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Hover Start Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Hover Start Action Name is invoked" + }, + "details": { + "name": "Set Hover Start Action Name", + "tooltip": "Sets the name of the action triggered when the interactive element starts being hovered over" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the action triggered when the interactive element starts being hovered over" + } + } + ] + }, + { + "key": "GetHoverStartActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Hover Start Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Hover Start Action Name is invoked" + }, + "details": { + "name": "Get Hover Start Action Name", + "tooltip": "Gets the name of the action triggered when the interactive element starts being hovered over" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetHoverEndActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Hover End Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Hover End Action Name is invoked" + }, + "details": { + "name": "Set Hover End Action Name", + "tooltip": "Sets the name of the action triggered when the interactive element is done being hovered over" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the action triggered when the interactive element is done being hovered over" + } + } + ] + }, + { + "key": "GetReleasedActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Released Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Released Action Name is invoked" + }, + "details": { + "name": "Get Released Action Name", + "tooltip": "Gets the name of the action triggered when the interactive element is released" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetReleasedActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Released Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Released Action Name is invoked" + }, + "details": { + "name": "Set Released Action Name", + "tooltip": "Sets the name of the action triggered when the interactive element is released" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the action triggered when the interactive element is released" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiInteractableBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiInteractableBus.names new file mode 100644 index 0000000000..b340e96673 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiInteractableBus.names @@ -0,0 +1,156 @@ +{ + "entries": [ + { + "key": "UiInteractableBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiInteractableBus", + "category": "UI" + }, + "methods": [ + { + "key": "SetIsAutoActivationEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Auto Activation Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Auto Activation Enabled is invoked" + }, + "details": { + "name": "Set Is Auto Activation Enabled", + "tooltip": "Sets whether the interactive element should automatically become active when navigated to via gamepad/keyboard" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Auto Activate", + "tooltip": "Indicates whether the interactive element should automatically become active when navigated to via gamepad/keyboard" + } + } + ] + }, + { + "key": "GetIsAutoActivationEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Auto Activation Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Auto Activation Enabled is invoked" + }, + "details": { + "name": "Is Auto Activation Enabled", + "tooltip": "Returns whether the interactive element automatically becomes active when navigated to via gamepad/keyboard" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetIsHandlingMultiTouchEvents", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Handling Multi-touch Events" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Handling Multi-touch Events is invoked" + }, + "details": { + "name": "Set Is Handling Multi-touch Events", + "tooltip": "Sets whether multi-touch event handling is enabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Multi-touch", + "tooltip": "Indicates whether multi-touch event handling is enabled" + } + } + ] + }, + { + "key": "IsHandlingMultiTouchEvents", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Handling Multi-touch Events" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Handling Multi-touch Events is invoked" + }, + "details": { + "name": "Is Handling Multi-touch Events", + "tooltip": "Returns whether multi-touch event handling is enabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "IsHandlingEvents", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Handling Events" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Handling Events is invoked" + }, + "details": { + "name": "Is Handling Events", + "tooltip": "Returns whether event handling is enabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetIsHandlingEvents", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Handling Events" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Handling Events is invoked" + }, + "details": { + "name": "Set Is Handling Events", + "tooltip": "Sets whether event handling is enabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Handling Events", + "tooltip": "Indicates whether event handling is enabled" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiInteractableStatesBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiInteractableStatesBus.names new file mode 100644 index 0000000000..b194ece0de --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiInteractableStatesBus.names @@ -0,0 +1,534 @@ +{ + "entries": [ + { + "key": "UiInteractableStatesBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiInteractableStatesBus", + "category": "UI" + }, + "methods": [ + { + "key": "SetStateFont", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set State Font" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set State Font is invoked" + }, + "details": { + "name": "Set State Font", + "tooltip": "Sets the font to be used for the specified target when the interactive element is in the specified state" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Interactable State", + "tooltip": "The interactable state (0=Normal, 1=Hover, 2=Pressed, 3=Disabled)" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Target EntityID", + "tooltip": "The target element" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Pathname", + "tooltip": "The pathname to the font" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Font Effect Index", + "tooltip": "The index of the font effect" + } + } + ] + }, + { + "key": "SetStateSpritePathname", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set State Sprite Pathname" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set State Sprite Pathname is invoked" + }, + "details": { + "name": "Set State Sprite Pathname", + "tooltip": "Sets the sprite path to be used for the specified target when the interactive element is in the specified state" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Interactable State", + "tooltip": "The interactable state (0=Normal, 1=Hover, 2=Pressed, 3=Disabled)" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Target EntityID", + "tooltip": "The target element" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Pathname", + "tooltip": "The pathname to the sprite" + } + } + ] + }, + { + "key": "GetStateFontPathname", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get State Font Pathname" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get State Font Pathname is invoked" + }, + "details": { + "name": "Get State Font Pathname", + "tooltip": "Gets the font pathname to be used for the specified target when the interactive element is in the specified state" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Interactable State", + "tooltip": "The interactable state (0=Normal, 1=Hover, 2=Pressed, 3=Disabled)" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Target EntityID", + "tooltip": "The target element" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string", + "tooltip": "The interactable state (0=Normal, 1=Hover, 2=Pressed, 3=Disabled)" + } + } + ] + }, + { + "key": "HasStateFont", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has State Font" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has State Font is invoked" + }, + "details": { + "name": "Has State Font", + "tooltip": "Returns whether the interactive element has a font action for the specified state and target combination" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Interactable State", + "tooltip": "The interactable state (0=Normal, 1=Hover, 2=Pressed, 3=Disabled)" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Target EntityID", + "tooltip": "The target element" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool", + "tooltip": "The interactable state (0=Normal, 1=Hover, 2=Pressed, 3=Disabled)" + } + } + ] + }, + { + "key": "SetStateAlpha", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set State Alpha" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set State Alpha is invoked" + }, + "details": { + "name": "Set State Alpha", + "tooltip": "Sets the alpha to be used for the specified target when the interactive element is in the specified state" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Interactable State", + "tooltip": "The interactable state (0=Normal, 1=Hover, 2=Pressed, 3=Disabled)" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Target EntityID", + "tooltip": "The target element" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Alpha", + "tooltip": "The alpha to be used for the specified target when the interactive element is in the specified state [0-1]" + } + } + ] + }, + { + "key": "GetStateAlpha", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get State Alpha" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get State Alpha is invoked" + }, + "details": { + "name": "Get State Alpha", + "tooltip": "Gets the alpha to be used for the specified target when the interactive element is in the specified state" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Interactable State", + "tooltip": "The interactable state (0=Normal, 1=Hover, 2=Pressed, 3=Disabled)" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Target EntityID", + "tooltip": "The target element" + } + } + ], + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float", + "tooltip": "The interactable state (0=Normal, 1=Hover, 2=Pressed, 3=Disabled)" + } + } + ] + }, + { + "key": "GetStateFontEffectIndex", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get State Font Effect Index" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get State Font Effect Index is invoked" + }, + "details": { + "name": "Get State Font Effect Index", + "tooltip": "Gets the font effect to be used for the specified target when the interactive element is in the specified state" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Interactable State", + "tooltip": "The interactable state (0=Normal, 1=Hover, 2=Pressed, 3=Disabled)" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Target EntityID", + "tooltip": "The target element" + } + } + ], + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int", + "tooltip": "The interactable state (0=Normal, 1=Hover, 2=Pressed, 3=Disabled)" + } + } + ] + }, + { + "key": "HasStateColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has State Color" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has State Color is invoked" + }, + "details": { + "name": "Has State Color", + "tooltip": "Returns whether the interactive element has a color action for the specified state and target combination" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Interactable State", + "tooltip": "The interactable state (0=Normal, 1=Hover, 2=Pressed, 3=Disabled)" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Target EntityID", + "tooltip": "The target element" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool", + "tooltip": "The interactable state (0=Normal, 1=Hover, 2=Pressed, 3=Disabled)" + } + } + ] + }, + { + "key": "GetStateSpritePathname", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get State Sprite Pathname" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get State Sprite Pathname is invoked" + }, + "details": { + "name": "Get State Sprite Pathname", + "tooltip": "Gets the sprite pathname to be used for the specified target when the interactive element is in the specified state" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Interactable State", + "tooltip": "The interactable state (0=Normal, 1=Hover, 2=Pressed, 3=Disabled)" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Target EntityID", + "tooltip": "The target element" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string", + "tooltip": "The interactable state (0=Normal, 1=Hover, 2=Pressed, 3=Disabled)" + } + } + ] + }, + { + "key": "HasStateSprite", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has State Sprite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has State Sprite is invoked" + }, + "details": { + "name": "Has State Sprite", + "tooltip": "Returns whether the interactive element has a sprite action for the specified state and target combination" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Interactable State", + "tooltip": "The interactable state (0=Normal, 1=Hover, 2=Pressed, 3=Disabled)" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Target EntityID", + "tooltip": "The target element" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool", + "tooltip": "The interactable state (0=Normal, 1=Hover, 2=Pressed, 3=Disabled)" + } + } + ] + }, + { + "key": "SetStateColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set State Color" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set State Color is invoked" + }, + "details": { + "name": "Set State Color", + "tooltip": "Sets the color to be used for the specified target when the interactive element is in the specified state" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Interactable State", + "tooltip": "The interactable state (0=Normal, 1=Hover, 2=Pressed, 3=Disabled)" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Target EntityID", + "tooltip": "The target element" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color", + "tooltip": "The color to be used for the specified target when the interactive element is in the specified state" + } + } + ] + }, + { + "key": "HasStateAlpha", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has State Alpha" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has State Alpha is invoked" + }, + "details": { + "name": "Has State Alpha", + "tooltip": "Returns whether the interactive element has an alpha action for the specified state and target combination" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Interactable State", + "tooltip": "The interactable state (0=Normal, 1=Hover, 2=Pressed, 3=Disabled)" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Target EntityID", + "tooltip": "The target element" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool", + "tooltip": "The interactable state (0=Normal, 1=Hover, 2=Pressed, 3=Disabled)" + } + } + ] + }, + { + "key": "GetStateColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get State Color" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get State Color is invoked" + }, + "details": { + "name": "Get State Color", + "tooltip": "Gets the color to be used for the specified target when the interactive element is in the specified state" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Interactable State", + "tooltip": "The interactable state (0=Normal, 1=Hover, 2=Pressed, 3=Disabled)" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Target EntityID", + "tooltip": "The target element" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color", + "tooltip": "The interactable state (0=Normal, 1=Hover, 2=Pressed, 3=Disabled)" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiLayoutBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiLayoutBus.names new file mode 100644 index 0000000000..022dbc0abe --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiLayoutBus.names @@ -0,0 +1,156 @@ +{ + "entries": [ + { + "key": "UiLayoutBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiLayoutBus", + "category": "UI" + }, + "methods": [ + { + "key": "SetIgnoreDefaultLayoutCells", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Ignore Default Layout Cells" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Ignore Default Layout Cells is invoked" + }, + "details": { + "name": "Set Ignore Default Layout Cells", + "tooltip": "Sets whether default layout cell values calculated by other components on the child should be ignored" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Ignore", + "tooltip": "Indicates whether default layout cell values calculated by other components on the child should be ignored" + } + } + ] + }, + { + "key": "SetVerticalChildAlignment", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Vertical Child Alignment" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Vertical Child Alignment is invoked" + }, + "details": { + "name": "Set Vertical Child Alignment", + "tooltip": "Sets the vertical child alignment" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Vertical Alignment", + "tooltip": "The vertical child alignment (0=Top, 1=Center, 2=Bottom)" + } + } + ] + }, + { + "key": "SetHorizontalChildAlignment", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Horizontal Child Alignment" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Horizontal Child Alignment is invoked" + }, + "details": { + "name": "Set Horizontal Child Alignment", + "tooltip": "Sets the horizontal child alignment" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Horizontal Alignment", + "tooltip": "The horizontal child alignment (0=Left, 1=Center, 2=Right)" + } + } + ] + }, + { + "key": "GetHorizontalChildAlignment", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Horizontal Child Alignment" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Horizontal Child Alignment is invoked" + }, + "details": { + "name": "Get Horizontal Child Alignment", + "tooltip": "Gets the horizontal child alignment" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetVerticalChildAlignment", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Vertical Child Alignment" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Vertical Child Alignment is invoked" + }, + "details": { + "name": "Get Vertical Child Alignment", + "tooltip": "Gets the vertical child alignment" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetIgnoreDefaultLayoutCells", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Ignore Default Layout Cells" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Ignore Default Layout Cells is invoked" + }, + "details": { + "name": "Get Ignore Default Layout Cells", + "tooltip": "Returns whether default layout cell values calculated by other components on the child are ignored" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiLayoutCellBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiLayoutCellBus.names new file mode 100644 index 0000000000..8f96afa8ff --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiLayoutCellBus.names @@ -0,0 +1,385 @@ +{ + "entries": [ + { + "key": "UiLayoutCellBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiLayoutCellBus", + "category": "UI" + }, + "methods": [ + { + "key": "SetExtraHeightRatio", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Extra Height Ratio" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Extra Height Ratio is invoked" + }, + "details": { + "name": "Set Extra Height Ratio", + "tooltip": "Sets the overridden extra height ratio for the element" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Extra Height Ratio", + "tooltip": "The overridden extra height ratio for the element. A value of –1 means don’t override" + } + } + ] + }, + { + "key": "GetExtraWidthRatio", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Extra Width Ratio" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Extra Width Ratio is invoked" + }, + "details": { + "name": "Get Extra Width Ratio", + "tooltip": "Gets the overridden extra width ratio for the element" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetExtraWidthRatio", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Extra Width Ratio" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Extra Width Ratio is invoked" + }, + "details": { + "name": "Set Extra Width Ratio", + "tooltip": "Sets the overridden extra width ratio for the element" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Extra Width Ratio", + "tooltip": "The overridden extra width ratio for the element. A value of –1 means don’t override" + } + } + ] + }, + { + "key": "SetMaxWidth", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetMaxWidth" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetMaxWidth is invoked" + }, + "details": { + "name": "SetMaxWidth" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetMaxHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetMaxHeight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetMaxHeight is invoked" + }, + "details": { + "name": "SetMaxHeight" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetMaxWidth", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetMaxWidth" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetMaxWidth is invoked" + }, + "details": { + "name": "GetMaxWidth" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetMaxHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetMaxHeight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetMaxHeight is invoked" + }, + "details": { + "name": "GetMaxHeight" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetExtraHeightRatio", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Extra Height Ratio" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Extra Height Ratio is invoked" + }, + "details": { + "name": "Get Extra Height Ratio", + "tooltip": "Gets the overridden extra height ratio for the element" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetTargetHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Target Height" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Target Height is invoked" + }, + "details": { + "name": "Get Target Height", + "tooltip": "Gets the overridden target height for the element" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetMinWidth", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Min Width" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Min Width is invoked" + }, + "details": { + "name": "Set Min Width", + "tooltip": "Sets the overridden minimum width for the element" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Min Width", + "tooltip": "The overridden minimum width for the element. A value of –1 means don’t override" + } + } + ] + }, + { + "key": "SetMinHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Min Height" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Min Height is invoked" + }, + "details": { + "name": "Set Min Height", + "tooltip": "Sets the overridden minimum height for the element" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Min Height", + "tooltip": "The overridden minimum height for the element. A value of –1 means don’t override" + } + } + ] + }, + { + "key": "GetMinWidth", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Min Width" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Min Width is invoked" + }, + "details": { + "name": "Get Min Width", + "tooltip": "Gets the overridden minimum width for the element" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetMinHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Min Height" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Min Height is invoked" + }, + "details": { + "name": "Get Min Height", + "tooltip": "Gets the overridden minimum height for the element" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetTargetWidth", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Target Width" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Target Width is invoked" + }, + "details": { + "name": "Get Target Width", + "tooltip": "Gets the overridden target width for the element" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetTargetWidth", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Target Width" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Target Width is invoked" + }, + "details": { + "name": "Set Target Width", + "tooltip": "Sets the overridden target width for the element" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Target Width", + "tooltip": "The overridden target width for the element. A value of –1 means don’t override" + } + } + ] + }, + { + "key": "SetTargetHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Target Height" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Target Height is invoked" + }, + "details": { + "name": "Set Target Height", + "tooltip": "Sets the overridden target height for the element" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Target Height", + "tooltip": "The overridden target height for the element. A value of –1 means don’t override" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiLayoutColumnBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiLayoutColumnBus.names new file mode 100644 index 0000000000..a89fe4382b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiLayoutColumnBus.names @@ -0,0 +1,156 @@ +{ + "entries": [ + { + "key": "UiLayoutColumnBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiLayoutColumnBus", + "category": "UI" + }, + "methods": [ + { + "key": "SetSpacing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Spacing" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Spacing is invoked" + }, + "details": { + "name": "Set Spacing", + "tooltip": "Sets the spacing between child elements" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Spacing", + "tooltip": "The spacing between child elements in pixels" + } + } + ] + }, + { + "key": "GetOrder", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Order" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Order is invoked" + }, + "details": { + "name": "Get Order", + "tooltip": "Returns the vertical order for the layout" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetOrder", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Order" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Order is invoked" + }, + "details": { + "name": "Set Order", + "tooltip": "Sets the vertical order for the layout" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Order", + "tooltip": "The vertical order for the layout (0=Top To Bottom, 1=Bottom To Top)" + } + } + ] + }, + { + "key": "GetSpacing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Spacing" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Spacing is invoked" + }, + "details": { + "name": "Get Spacing", + "tooltip": "Gets the spacing between child elements" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetPadding", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Padding" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Padding is invoked" + }, + "details": { + "name": "Get Padding", + "tooltip": "Gets the padding inside the edges of the element" + }, + "results": [ + { + "typeid": "{DE5C18B0-4214-4A37-B590-8D45CC450A96}", + "details": { + "name": "Padding" + } + } + ] + }, + { + "key": "SetPadding", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Padding" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Padding is invoked" + }, + "details": { + "name": "Set Padding", + "tooltip": "Sets the padding inside the edges of the element" + }, + "params": [ + { + "typeid": "{DE5C18B0-4214-4A37-B590-8D45CC450A96}", + "details": { + "name": "Padding", + "tooltip": "The padding inside the edges of the element in pixels" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiLayoutFitterBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiLayoutFitterBus.names new file mode 100644 index 0000000000..392ac7fbaf --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiLayoutFitterBus.names @@ -0,0 +1,109 @@ +{ + "entries": [ + { + "key": "UiLayoutFitterBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiLayoutFitterBus", + "category": "UI" + }, + "methods": [ + { + "key": "GetHorizontalFit", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Horizontal Fit" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Horizontal Fit is invoked" + }, + "details": { + "name": "Get Horizontal Fit", + "tooltip": "Returns whether to resize the element horizontally" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetHorizontalFit", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Horizontal Fit" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Horizontal Fit is invoked" + }, + "details": { + "name": "Set Horizontal Fit", + "tooltip": "Sets whether to resize the element horizontally" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Resize Horizontally", + "tooltip": "Indicates whether to resize the element horizontally" + } + } + ] + }, + { + "key": "GetVerticalFit", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Vertical Fit" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Vertical Fit is invoked" + }, + "details": { + "name": "Get Vertical Fit", + "tooltip": "Returns whether to resize the element vertically" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetVerticalFit", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Vertical Fit" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Vertical Fit is invoked" + }, + "details": { + "name": "Set Vertical Fit", + "tooltip": "Sets whether to resize the element vertically" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Resize Vertically", + "tooltip": "Indicates whether to resize the element vertically" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiLayoutGridBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiLayoutGridBus.names new file mode 100644 index 0000000000..40430d754f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiLayoutGridBus.names @@ -0,0 +1,297 @@ +{ + "entries": [ + { + "key": "UiLayoutGridBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiLayoutGridBus", + "category": "UI" + }, + "methods": [ + { + "key": "GetStartingDirection", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Starting Direction" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Starting Direction is invoked" + }, + "details": { + "name": "Get Starting Direction", + "tooltip": "Gets the starting direction for the layout" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetHorizontalOrder", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Horizontal Order" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Horizontal Order is invoked" + }, + "details": { + "name": "Set Horizontal Order", + "tooltip": "Sets the horizontal order for the layout" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Horizontal Order", + "tooltip": "The horizontal order for the layout (0=Left to Right, 1=Right to Left)" + } + } + ] + }, + { + "key": "SetCellSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Cell Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Cell Size is invoked" + }, + "details": { + "name": "Set Cell Size", + "tooltip": "Sets the size of a child element" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Cell Size", + "tooltip": "The size of a child element in pixels" + } + } + ] + }, + { + "key": "SetSpacing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Spacing" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Spacing is invoked" + }, + "details": { + "name": "Set Spacing", + "tooltip": "Sets the spacing between child elements" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Spacing", + "tooltip": "The spacing between child elements in pixels" + } + } + ] + }, + { + "key": "GetSpacing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Spacing" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Spacing is invoked" + }, + "details": { + "name": "Get Spacing", + "tooltip": "Gets the spacing between child elements" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "GetCellSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Cell Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Cell Size is invoked" + }, + "details": { + "name": "Get Cell Size", + "tooltip": "Gets the size of a child element" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "GetPadding", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Padding" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Padding is invoked" + }, + "details": { + "name": "Get Padding", + "tooltip": "Gets the padding inside the edges of the element" + }, + "results": [ + { + "typeid": "{DE5C18B0-4214-4A37-B590-8D45CC450A96}", + "details": { + "name": "Padding" + } + } + ] + }, + { + "key": "SetPadding", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Padding" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Padding is invoked" + }, + "details": { + "name": "Set Padding", + "tooltip": "Sets the padding inside the edges of the element" + }, + "params": [ + { + "typeid": "{DE5C18B0-4214-4A37-B590-8D45CC450A96}", + "details": { + "name": "Padding", + "tooltip": "The padding inside the edges of the element in pixels" + } + } + ] + }, + { + "key": "GetHorizontalOrder", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Horizontal Order" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Horizontal Order is invoked" + }, + "details": { + "name": "Get Horizontal Order", + "tooltip": "Gets the horizontal order for the layout" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetVerticalOrder", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Vertical Order" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Vertical Order is invoked" + }, + "details": { + "name": "Get Vertical Order", + "tooltip": "Gets the vertical order for the layout" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetVerticalOrder", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Vertical Order" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Vertical Order is invoked" + }, + "details": { + "name": "Set Vertical Order", + "tooltip": "Sets the vertical order for the layout" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Vertical Order", + "tooltip": "The vertical order for the layout (0=Top to Bottom, 1=Bottom to Top)" + } + } + ] + }, + { + "key": "SetStartingDirection", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Starting Direction" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Starting Direction is invoked" + }, + "details": { + "name": "Set Starting Direction", + "tooltip": "Sets the starting direction for the layout" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Starting Direction", + "tooltip": "The starting direction for the layout (0=Horizontal Order, 1=Vertical Order)" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiLayoutRowBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiLayoutRowBus.names new file mode 100644 index 0000000000..c4c714a0cb --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiLayoutRowBus.names @@ -0,0 +1,156 @@ +{ + "entries": [ + { + "key": "UiLayoutRowBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiLayoutRowBus", + "category": "UI" + }, + "methods": [ + { + "key": "SetSpacing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Spacing" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Spacing is invoked" + }, + "details": { + "name": "Set Spacing", + "tooltip": "Sets the spacing between child elements" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Spacing", + "tooltip": "The spacing between child elements in pixels" + } + } + ] + }, + { + "key": "GetOrder", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Order" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Order is invoked" + }, + "details": { + "name": "Get Order", + "tooltip": "Gets the horizontal order for the layout" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetOrder", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Order" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Order is invoked" + }, + "details": { + "name": "Set Order", + "tooltip": "Sets the horizontal order for the layout" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Order", + "tooltip": "The horizontal order for the layout (0=Left to Right, 1=Right to Left)" + } + } + ] + }, + { + "key": "GetSpacing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Spacing" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Spacing is invoked" + }, + "details": { + "name": "Get Spacing", + "tooltip": "Gets the spacing between child elements" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetPadding", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Padding" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Padding is invoked" + }, + "details": { + "name": "Get Padding", + "tooltip": "Gets the padding inside the edges of the element" + }, + "results": [ + { + "typeid": "{DE5C18B0-4214-4A37-B590-8D45CC450A96}", + "details": { + "name": "Padding" + } + } + ] + }, + { + "key": "SetPadding", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Padding" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Padding is invoked" + }, + "details": { + "name": "Set Padding", + "tooltip": "Sets the padding inside the edges of the element" + }, + "params": [ + { + "typeid": "{DE5C18B0-4214-4A37-B590-8D45CC450A96}", + "details": { + "name": "Padding", + "tooltip": "The padding inside the edges of the element in pixels" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiMarkupButtonBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiMarkupButtonBus.names new file mode 100644 index 0000000000..ac687d97bf --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiMarkupButtonBus.names @@ -0,0 +1,109 @@ +{ + "entries": [ + { + "key": "UiMarkupButtonBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiMarkupButtonBus", + "category": "UI" + }, + "methods": [ + { + "key": "GetLinkColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Link Color" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Link Color is invoked" + }, + "details": { + "name": "Get Link Color", + "tooltip": "Gets the normal color of the clickable links" + }, + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "SetLinkColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Link Color" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Link Color is invoked" + }, + "details": { + "name": "Set Link Color", + "tooltip": "Sets the normal color of the clickable links" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color", + "tooltip": "The normal color for the clickable links" + } + } + ] + }, + { + "key": "GetLinkHoverColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Link Hover Color" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Link Hover Color is invoked" + }, + "details": { + "name": "Get Link Hover Color", + "tooltip": "Gets the hovered color of the clickable links" + }, + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "SetLinkHoverColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Link Hover Color" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Link Hover Color is invoked" + }, + "details": { + "name": "Set Link Hover Color", + "tooltip": "Sets the hovered color of the clickable links" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color", + "tooltip": "The hovered color for the clickable links" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiMaskBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiMaskBus.names new file mode 100644 index 0000000000..366f157871 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiMaskBus.names @@ -0,0 +1,297 @@ +{ + "entries": [ + { + "key": "UiMaskBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiMaskBus", + "category": "UI" + }, + "methods": [ + { + "key": "SetDrawInFront", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Draw In Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Draw In Front is invoked" + }, + "details": { + "name": "Set Draw In Front", + "tooltip": "Sets whether the mask should be drawn in front of the child elements" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Draw In Front", + "tooltip": "Indicates whether the mask should be drawn in front of the child elements" + } + } + ] + }, + { + "key": "GetUseRenderToTexture", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Use Render To Texture" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Use Render To Texture is invoked" + }, + "details": { + "name": "Get Use Render To Texture", + "tooltip": "Get the flag that indicates whether the mask should use render to texture which allows an alpha gradient for soft-edged masks" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetDrawInFront", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Draw In Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Draw In Front is invoked" + }, + "details": { + "name": "Get Draw In Front", + "tooltip": "Returns whether the mask is drawn in front of the child elements" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetDrawBehind", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Draw Behind" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Draw Behind is invoked" + }, + "details": { + "name": "Get Draw Behind", + "tooltip": "Returns whether the mask is drawn behind the child elements" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetIsInteractionMaskingEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Interaction Masking Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Interaction Masking Enabled is invoked" + }, + "details": { + "name": "Is Interaction Masking Enabled", + "tooltip": "Returns whether children hidden by the mask are prevented from getting input events" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetUseAlphaTest", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Use Alpha Test" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Use Alpha Test is invoked" + }, + "details": { + "name": "Get Use Alpha Test", + "tooltip": "Returns whether to use the alpha channel in the mask visual's texture to define the mask" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetIsMaskingEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Masking Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Masking Enabled is invoked" + }, + "details": { + "name": "Set Is Masking Enabled", + "tooltip": "Sets whether masking should be enabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Enabled", + "tooltip": "Indicates whether masking should be enabled" + } + } + ] + }, + { + "key": "SetUseRenderToTexture", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Use Render To Texture" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Use Render To Texture is invoked" + }, + "details": { + "name": "Set Use Render To Texture", + "tooltip": "Set the flag that indicates whether the mask should use render to texture which allows an alpha gradient for soft-edged masks" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Use Render To Texture", + "tooltip": "Whether the mask should use render to texture" + } + } + ] + }, + { + "key": "GetIsMaskingEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Masking Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Masking Enabled is invoked" + }, + "details": { + "name": "Is Masking Enabled", + "tooltip": "Returns whether masking is enabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetIsInteractionMaskingEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Interaction Masking Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Interaction Masking Enabled is invoked" + }, + "details": { + "name": "Set Is Interaction Masking Enabled", + "tooltip": "Sets whether children hidden by the mask should be prevented from getting input events" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Interaction Masking", + "tooltip": "Indicates whether children hidden by the mask should be prevented from getting input events" + } + } + ] + }, + { + "key": "SetDrawBehind", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Draw Behind" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Draw Behind is invoked" + }, + "details": { + "name": "Set Draw Behind", + "tooltip": "Sets whether the mask should be drawn behind the child elements" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Draw Behind", + "tooltip": "Indicates whether the mask should be drawn behind the child elements" + } + } + ] + }, + { + "key": "SetUseAlphaTest", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Use Alpha Test" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Use Alpha Test is invoked" + }, + "details": { + "name": "Set Use Alpha Test", + "tooltip": "Sets whether to use the alpha channel in the mask visual's texture to define the mask" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Use Alpha Test", + "tooltip": "Indicates whether to use the alpha channel in the mask visual's texture to define the mask" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiNavigationBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiNavigationBus.names new file mode 100644 index 0000000000..6fd6a83c3b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiNavigationBus.names @@ -0,0 +1,254 @@ +{ + "entries": [ + { + "key": "UiNavigationBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiNavigationBus", + "category": "UI" + }, + "methods": [ + { + "key": "GetOnRightEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get On Right Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get On Right Entity is invoked" + }, + "details": { + "name": "Get On Right Entity", + "tooltip": "Gets the element to receive focus when right is pressed" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetOnLeftEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set On Left Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set On Left Entity is invoked" + }, + "details": { + "name": "Set On Left Entity", + "tooltip": "Sets the element to receive focus when left is pressed" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityID", + "tooltip": "The element to receive focus when left is pressed" + } + } + ] + }, + { + "key": "GetOnLeftEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get On Left Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get On Left Entity is invoked" + }, + "details": { + "name": "Get On Left Entity", + "tooltip": "Gets the element to receive focus when left is pressed" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetOnDownEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set On Down Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set On Down Entity is invoked" + }, + "details": { + "name": "Set On Down Entity", + "tooltip": "Sets the element to receive focus when down is pressed" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityID", + "tooltip": "The element to receive focus when down is pressed" + } + } + ] + }, + { + "key": "GetOnUpEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get On Up Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get On Up Entity is invoked" + }, + "details": { + "name": "Get On Up Entity", + "tooltip": "Gets the element to receive focus when up is pressed" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetOnUpEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set On Up Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set On Up Entity is invoked" + }, + "details": { + "name": "Set On Up Entity", + "tooltip": "Sets the element to receive focus when up is pressed" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityID", + "tooltip": "The element to receive focus when up is pressed" + } + } + ] + }, + { + "key": "SetOnRightEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set On Right Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set On Right Entity is invoked" + }, + "details": { + "name": "Set On Right Entity", + "tooltip": "Sets the element to receive focus when right is pressed" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityID", + "tooltip": "The element to receive focus when right is pressed" + } + } + ] + }, + { + "key": "SetNavigationMode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Navigation Mode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Navigation Mode is invoked" + }, + "details": { + "name": "Set Navigation Mode", + "tooltip": "Sets how the next element to receive focus is chosen when a navigation event occurs" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Navigation Mode", + "tooltip": "Indicates how the next element to receive focus is chosen when a navigation event occurs (0=Automatic, 1=Custom, 2=None)" + } + } + ] + }, + { + "key": "GetOnDownEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get On Down Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get On Down Entity is invoked" + }, + "details": { + "name": "Get On Down Entity", + "tooltip": "Gets the element to receive focus when down is pressed" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetNavigationMode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Navigation Mode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Navigation Mode is invoked" + }, + "details": { + "name": "Get Navigation Mode", + "tooltip": "Gets how the next element to receive focus is chosen when a navigation event occurs" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiParticleEmitterBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiParticleEmitterBus.names new file mode 100644 index 0000000000..4803b9fe8b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiParticleEmitterBus.names @@ -0,0 +1,2412 @@ +{ + "entries": [ + { + "key": "UiParticleEmitterBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiParticleEmitterBus", + "category": "UI" + }, + "methods": [ + { + "key": "SetParticleColorTintVariation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Particle Color Tint Variation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Particle Color Tint Variation is invoked" + }, + "details": { + "name": "Set Particle Color Tint Variation", + "tooltip": "Sets the variation in color tint of the emitted particles" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Variation", + "tooltip": "The variation in color tint of the emitted particles [0-1]" + } + } + ] + }, + { + "key": "GetSpriteSheetFrameDelay", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Sprite Sheet Frame Delay" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Sprite Sheet Frame Delay is invoked" + }, + "details": { + "name": "Get Sprite Sheet Frame Delay", + "tooltip": "Gets the delay between each sprite sheet frame" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetParticleAlpha", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Particle Alpha" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Particle Alpha is invoked" + }, + "details": { + "name": "Set Particle Alpha", + "tooltip": "Sets the alpha of the emitted particles" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Alpha", + "tooltip": "The alpha of the emitted particles [0-1]" + } + } + ] + }, + { + "key": "GetIsEmitting", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Emitting" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Emitting is invoked" + }, + "details": { + "name": "Is Emitting", + "tooltip": "Returns whether the emitter is currently emitting" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetParticleHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Particle Height" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Particle Height is invoked" + }, + "details": { + "name": "Set Particle Height", + "tooltip": "Sets the height of the emitted particles" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Height", + "tooltip": "The height of the emitted particles" + } + } + ] + }, + { + "key": "GetSpriteSheetCellIndex", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Sprite Sheet Cell Index" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Sprite Sheet Cell Index is invoked" + }, + "details": { + "name": "Get Sprite Sheet Cell Index", + "tooltip": "Gets the sprite sheet cell index to be used for emitted particles" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetIsParticleInitialRotationFromInitialVelocity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Particle Initial Rotation From Initial Velocity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Particle Initial Rotation From Initial Velocity is invoked" + }, + "details": { + "name": "Is Particle Initial Rotation From Initial Velocity", + "tooltip": "Returns whether the particle will be initially orientated so that the top of each particle points towards the initial velocity vector" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetParticleLifetime", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Particle Lifetime" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Particle Lifetime is invoked" + }, + "details": { + "name": "Get Particle Lifetime", + "tooltip": "Gets the lifetime of the emitted particles" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetIsRandomSeedFixed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Random Seed Fixed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Random Seed Fixed is invoked" + }, + "details": { + "name": "Is Random Seed Fixed", + "tooltip": "Returns whether the emitter uses a fixed random seed" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetSpritePathname", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Sprite Pathname" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Sprite Pathname is invoked" + }, + "details": { + "name": "Get Sprite Pathname", + "tooltip": "Gets the source location of the image to be used by the emitted particles" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetParticleLifetimeVariation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Particle Lifetime Variation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Particle Lifetime Variation is invoked" + }, + "details": { + "name": "Get Particle Lifetime Variation", + "tooltip": "Gets the variation in lifetime of the emitted particles. A variation of 5 seconds will be up to 5 seconds on either side of the chosen initial lifetime" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetParticleColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Particle Color" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Particle Color is invoked" + }, + "details": { + "name": "Get Particle Color", + "tooltip": "Gets the color of the emitted particles" + }, + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "GetParticleInitialRotationVariation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Particle Initial Rotation Variation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Particle Initial Rotation Variation is invoked" + }, + "details": { + "name": "Get Particle Initial Rotation Variation", + "tooltip": "Gets the variation of the initial rotation" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetParticleLifetimeVariation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Particle Lifetime Variation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Particle Lifetime Variation is invoked" + }, + "details": { + "name": "Set Particle Lifetime Variation", + "tooltip": "Sets the variation in lifetime of the emitted particles. A variation of 5 seconds will be up to 5 seconds on either side of the chosen initial lifetime" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Variation", + "tooltip": "The variation in lifetime of the emitted particles. A variation of 5 seconds will be up to 5 seconds on either side of the chosen initial lifetime" + } + } + ] + }, + { + "key": "GetIsEmitOnEdge", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Emit On Edge" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Emit On Edge is invoked" + }, + "details": { + "name": "Is Emit On Edge", + "tooltip": "Returns whether the particles are emitted on the edge of the selected shape" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetParticleRotationSpeedVariation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Particle Rotation Speed Variation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Particle Rotation Speed Variation is invoked" + }, + "details": { + "name": "Get Particle Rotation Speed Variation", + "tooltip": "Gets the variation in rotation speed of the emitted particles" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetIsEmitOnActivate", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Emit On Activate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Emit On Activate is invoked" + }, + "details": { + "name": "Set Is Emit On Activate", + "tooltip": "Sets whether the particle emitter starts emitting when the component is activated" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Emit on Activate", + "tooltip": "Indicates whether the particle emitter starts emitting when the component is activated" + } + } + ] + }, + { + "key": "GetParticleRotationSpeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Particle Rotation Speed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Particle Rotation Speed is invoked" + }, + "details": { + "name": "Get Particle Rotation Speed", + "tooltip": "Gets the rotation speed of the emitted particles" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetParticleRotationSpeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Particle Rotation Speed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Particle Rotation Speed is invoked" + }, + "details": { + "name": "Set Particle Rotation Speed", + "tooltip": "Sets the rotation speed of the emitted particles" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Rotation Speed", + "tooltip": "The rotation speed of the emitted particles in degrees clockwise per second" + } + } + ] + }, + { + "key": "GetIsParticlePositionRelativeToEmitter", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Particle Position Relative To Emitter" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Particle Position Relative To Emitter is invoked" + }, + "details": { + "name": "Is Particle Position Relative To Emitter", + "tooltip": "Returns whether the emitted particles move relative to the emitter" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetIsParticleAspectRatioLocked", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Particle Aspect Ratio Locked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Particle Aspect Ratio Locked is invoked" + }, + "details": { + "name": "Set Is Particle Aspect Ratio Locked", + "tooltip": "Sets whether the width and height of the emitted particles will be locked into the current aspect ratio" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Aspect Ratio Locked", + "tooltip": "Indicates whether the width and height of the emitted particles will be locked into the current aspect ratio" + } + } + ] + }, + { + "key": "SetEmitAngleVariation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Emit Angle Variation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Emit Angle Variation is invoked" + }, + "details": { + "name": "Set Emit Angle Variation", + "tooltip": "Sets the variation in the emit angle" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Variation", + "tooltip": "The variation in the emit angle in degrees. A variation of 10 would be up to +/- 10 degrees on each side of the current emit angle" + } + } + ] + }, + { + "key": "SetParticleLifetime", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Particle Lifetime" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Particle Lifetime is invoked" + }, + "details": { + "name": "Set Particle Lifetime", + "tooltip": "Sets the lifetime of the emitted particles" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Lifetime", + "tooltip": "The lifetime of the emitted particles in seconds" + } + } + ] + }, + { + "key": "SetSpriteSheetFrameDelay", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Sprite Sheet Frame Delay" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Sprite Sheet Frame Delay is invoked" + }, + "details": { + "name": "Set Sprite Sheet Frame Delay", + "tooltip": "Sets the delay between each sprite sheet frame" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Delay", + "tooltip": "The delay in seconds between each sprite sheet frame" + } + } + ] + }, + { + "key": "SetIsParticleInitialRotationFromInitialVelocity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Particle Initial Rotation From Initial Velocity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Particle Initial Rotation From Initial Velocity is invoked" + }, + "details": { + "name": "Set Is Particle Initial Rotation From Initial Velocity", + "tooltip": "Sets whether the particle will be initially orientated so that the top of each particles points towards the initial velocity vector" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Initial Rotation from Velocity", + "tooltip": "Indicates whether the particle will be initially orientated so that the top of each particles points towards the initial velocity vector" + } + } + ] + }, + { + "key": "SetParticleAccelerationMovementSpace", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Particle Acceleration Movement Space" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Particle Acceleration Movement Space is invoked" + }, + "details": { + "name": "Set Particle Acceleration Movement Space", + "tooltip": "Sets the coordinate system used for the acceleration of particles" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Coordinate System", + "tooltip": "The coordinate system used for the acceleration of particles (0=Cartesian, 1=Polar)" + } + } + ] + }, + { + "key": "SetIsSpriteSheetAnimated", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Sprite Sheet Animated" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Sprite Sheet Animated is invoked" + }, + "details": { + "name": "Set Is Sprite Sheet Animated", + "tooltip": "Sets whether the sprite sheet cell index changes over time on each particle" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Animated", + "tooltip": "Indicates whether the sprite sheet cell index changes over time on each particle" + } + } + ] + }, + { + "key": "SetIsParticleCountLimited", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Particle Count Limited" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Particle Count Limited is invoked" + }, + "details": { + "name": "Set Is Particle Count Limited", + "tooltip": "Sets whether there is a limit to the amount of active particles" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Particle Count Limited", + "tooltip": "Indicates whether there is a limit to the amount of active particles" + } + } + ] + }, + { + "key": "GetParticleSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Particle Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Particle Size is invoked" + }, + "details": { + "name": "Get Particle Size", + "tooltip": "Gets the size of the emitted particles" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "GetParticleAccelerationMovementSpace", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Particle Acceleration Movement Space" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Particle Acceleration Movement Space is invoked" + }, + "details": { + "name": "Get Particle Acceleration Movement Space", + "tooltip": "Gets the coordinate system used for the acceleration of particles" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetEmitAngle", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Emit Angle" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Emit Angle is invoked" + }, + "details": { + "name": "Set Emit Angle", + "tooltip": "Sets the angle that particles are emitted along" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Angle", + "tooltip": "The angle that particles are emitted along, in degrees clockwise from straight up" + } + } + ] + }, + { + "key": "SetParticleEmitRate", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Particle Emit Rate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Particle Emit Rate is invoked" + }, + "details": { + "name": "Set Particle Emit Rate", + "tooltip": "Sets the particle emitter emit rate" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Emit Rate", + "tooltip": "The particle emitter emit rate in particles per second" + } + } + ] + }, + { + "key": "GetMaxParticles", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Max Particles" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Max Particles is invoked" + }, + "details": { + "name": "Get Max Particles", + "tooltip": "Gets the limit of the amount of active particles" + }, + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "GetParticleColorBrightnessVariation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Particle Color Brightness Variation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Particle Color Brightness Variation is invoked" + }, + "details": { + "name": "Get Particle Color Brightness Variation", + "tooltip": "Gets the variation in color brightness of the emitted particles" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetMaxParticles", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Max Particles" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Max Particles is invoked" + }, + "details": { + "name": "Set Max Particles", + "tooltip": "Sets the limit of the amount of active particles" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Max Particles", + "tooltip": "The limit of the amount of active particles" + } + } + ] + }, + { + "key": "GetInsideEmitDistance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Inside Emit Distance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Inside Emit Distance is invoked" + }, + "details": { + "name": "Get Inside Emit Distance", + "tooltip": "Gets the distance inside the emitter shape edge that particles are emitted" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetParticlePivot", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Particle Pivot" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Particle Pivot is invoked" + }, + "details": { + "name": "Set Particle Pivot", + "tooltip": "Sets the pivot for the particles" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Pivot", + "tooltip": "The pivot for the particles from (0,0) at the top left to (1,1) at the bottom right" + } + } + ] + }, + { + "key": "GetParticleInitialDirectionType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Particle Initial Direction Type" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Particle Initial Direction Type is invoked" + }, + "details": { + "name": "Get Particle Initial Direction Type", + "tooltip": "Gets how the initial direction of the emitted particles are calculated" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetEmitterLifetime", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Emitter Lifetime" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Emitter Lifetime is invoked" + }, + "details": { + "name": "Set Emitter Lifetime", + "tooltip": "Sets the emitter lifetime. When the lifetime is reached the emitter will stop emitting" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Lifetime", + "tooltip": "The emitter lifetime in seconds" + } + } + ] + }, + { + "key": "GetSpriteSheetCellEndIndex", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Sprite Sheet Cell End Index" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Sprite Sheet Cell End Index is invoked" + }, + "details": { + "name": "Get Sprite Sheet Cell End Index", + "tooltip": "Gets the end index of the sprite sheet cell range used for sprite sheet animation or for randomly choosing the index" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetIsEmitOnEdge", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Emit On Edge" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Emit On Edge is invoked" + }, + "details": { + "name": "Set Is Emit On Edge", + "tooltip": "Sets whether the particles are emitted on the edge of the selected shape" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Emit on Edge", + "tooltip": "Indicates whether the particles are emitted on the edge of the selected shape" + } + } + ] + }, + { + "key": "GetParticleColorTintVariation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Particle Color Tint Variation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Particle Color Tint Variation is invoked" + }, + "details": { + "name": "Get Particle Color Tint Variation", + "tooltip": "Gets the variation in color tint of the emitted particles" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetParticleInitialVelocity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Particle Initial Velocity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Particle Initial Velocity is invoked" + }, + "details": { + "name": "Set Particle Initial Velocity", + "tooltip": "Sets the initial velocity of the emitted particles (used only when the emitter doesn’t control the emit direction)" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Velocity", + "tooltip": "The initial velocity of the emitted particles" + } + } + ] + }, + { + "key": "GetIsParticleCountLimited", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Particle Count Limited" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Particle Count Limited is invoked" + }, + "details": { + "name": "Is Particle Count Limited", + "tooltip": "Returns whether there is a limit to the amount of active particles" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetParticleWidthVariation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Particle Width Variation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Particle Width Variation is invoked" + }, + "details": { + "name": "Set Particle Width Variation", + "tooltip": "Sets the variation in width of the emitted particles" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Variation", + "tooltip": "The variation in width of the emitted particles" + } + } + ] + }, + { + "key": "GetOutsideEmitDistance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Outside Emit Distance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Outside Emit Distance is invoked" + }, + "details": { + "name": "Get Outside Emit Distance", + "tooltip": "Gets the distance outside the emitter shape edge that particles are emitted" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetIsParticleLifetimeInfinite", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Particle Lifetime Infinite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Particle Lifetime Infinite is invoked" + }, + "details": { + "name": "Is Particle Lifetime Infinite", + "tooltip": "Returns whether the emitted particles have an infinite lifetime" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetIsParticleRotationFromVelocity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Particle Rotation From Velocity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Particle Rotation From Velocity is invoked" + }, + "details": { + "name": "Set Is Particle Rotation From Velocity", + "tooltip": "Sets whether the particle will be orientated so that the top of each particles points towards the current velocity vector" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Rotation from Velocity", + "tooltip": "Indicates whether the particle will be orientated so that the top of each particles points towards the current velocity vector" + } + } + ] + }, + { + "key": "GetIsSpriteSheetAnimated", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Sprite Sheet Animated" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Sprite Sheet Animated is invoked" + }, + "details": { + "name": "Is Sprite Sheet Animated", + "tooltip": "Returns whether the sprite sheet cell index changes over time on each particle" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetInsideEmitDistance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Inside Emit Distance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Inside Emit Distance is invoked" + }, + "details": { + "name": "Set Inside Emit Distance", + "tooltip": "Sets the distance inside the emitter shape edge that particles are emitted" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Distance", + "tooltip": "The distance inside the emitter shape edge that particles are emitted" + } + } + ] + }, + { + "key": "SetSpritePathname", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Sprite Pathname" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Sprite Pathname is invoked" + }, + "details": { + "name": "Set Sprite Pathname", + "tooltip": "Sets the source location of the image to be used by the emitted particles" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Pathname", + "tooltip": "The source location of the image to be used by the emitted particles" + } + } + ] + }, + { + "key": "GetEmitterShape", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Emitter Shape" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Emitter Shape is invoked" + }, + "details": { + "name": "Get Emitter Shape", + "tooltip": "Gets the emitter shape" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetOutsideEmitDistance", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Outside Emit Distance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Outside Emit Distance is invoked" + }, + "details": { + "name": "Set Outside Emit Distance", + "tooltip": "Sets the distance outside the emitter shape edge that particles are emitted" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Distance", + "tooltip": "The distance outside the emitter shape edge that particles are emitted" + } + } + ] + }, + { + "key": "SetRandomSeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Random Seed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Random Seed is invoked" + }, + "details": { + "name": "Set Random Seed", + "tooltip": "Sets the random seed used by the emitter" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Random Seed", + "tooltip": "The random seed used by the emitter" + } + } + ] + }, + { + "key": "GetIsParticleRotationFromVelocity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Particle Rotation From Velocity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Particle Rotation From Velocity is invoked" + }, + "details": { + "name": "Is Particle Rotation From Velocity", + "tooltip": "Returns whether the particle will be orientated so that the top of each particles points towards the current velocity vector" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetRandomSeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Random Seed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Random Seed is invoked" + }, + "details": { + "name": "Get Random Seed", + "tooltip": "Gets the random seed used by the emitter" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetParticleEmitRate", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Particle Emit Rate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Particle Emit Rate is invoked" + }, + "details": { + "name": "Get Particle Emit Rate", + "tooltip": "Gets the particle emitter emit rate" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetIsSpriteSheetIndexRandom", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Sprite Sheet Index Random" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Sprite Sheet Index Random is invoked" + }, + "details": { + "name": "Is Sprite Sheet Index Random", + "tooltip": "Returns whether the initial sprite sheet index is randomly chosen" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetIsEmitting", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Emitting" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Emitting is invoked" + }, + "details": { + "name": "Set Is Emitting", + "tooltip": "Sets whether the emitter is currently emitting" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Emitting", + "tooltip": "Indicates whether the emitter is currently emitting" + } + } + ] + }, + { + "key": "GetParticleWidth", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Particle Width" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Particle Width is invoked" + }, + "details": { + "name": "Get Particle Width", + "tooltip": "Gets the width of the emitted particles" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetParticleInitialRotation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Particle Initial Rotation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Particle Initial Rotation is invoked" + }, + "details": { + "name": "Get Particle Initial Rotation", + "tooltip": "Gets the initial rotation" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetIsSpriteSheetAnimationLooped", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Sprite Sheet Animation Looped" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Sprite Sheet Animation Looped is invoked" + }, + "details": { + "name": "Set Is Sprite Sheet Animation Looped", + "tooltip": "Sets whether the sprite sheet cell animation is looped" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Animation Looped", + "tooltip": "Indicates whether the sprite sheet cell animation is looped" + } + } + ] + }, + { + "key": "SetParticleInitialRotationVariation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Particle Initial Rotation Variation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Particle Initial Rotation Variation is invoked" + }, + "details": { + "name": "Set Particle Initial Rotation Variation", + "tooltip": "Sets the variation of the initial rotation" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Variation", + "tooltip": "The variation of the initial rotation in degrees clockwise measured from straight up" + } + } + ] + }, + { + "key": "SetIsRandomSeedFixed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Random Seed Fixed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Random Seed Fixed is invoked" + }, + "details": { + "name": "Set Is Random Seed Fixed", + "tooltip": "Sets whether the emitter uses a fixed random seed" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Seed Fixed", + "tooltip": "Indicates whether the emitter uses a fixed random seed" + } + } + ] + }, + { + "key": "SetIsEmitterLifetimeInfinite", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Emitter Lifetime Infinite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Emitter Lifetime Infinite is invoked" + }, + "details": { + "name": "Set Is Emitter Lifetime Infinite", + "tooltip": "Sets whether the emitter lifetime is infinite" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Emitter Lifetime Infinite", + "tooltip": "Indicates whether the emitter lifetime is infinite" + } + } + ] + }, + { + "key": "GetEmitAngle", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Emit Angle" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Emit Angle is invoked" + }, + "details": { + "name": "Get Emit Angle", + "tooltip": "Gets the angle that particles are emitted along" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetIsEmitterLifetimeInfinite", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Emitter Lifetime Infinite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Emitter Lifetime Infinite is invoked" + }, + "details": { + "name": "Is Emitter Lifetime Infinite", + "tooltip": "Returns whether the emitter lifetime is infinite" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetIsHitParticleCountOnActivate", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Hit Particle Count On Activate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Hit Particle Count On Activate is invoked" + }, + "details": { + "name": "Set Is Hit Particle Count On Activate", + "tooltip": "Sets whether the average amount of particles will be emitted and processed when the emitter starts emitting" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Hit on Activate", + "tooltip": "Indicates whether the average amount of particles will be emitted and processed when the emitter starts emitting" + } + } + ] + }, + { + "key": "SetParticleMovementCoordinateType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Particle Movement Coordinate Type" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Particle Movement Coordinate Type is invoked" + }, + "details": { + "name": "Set Particle Movement Coordinate Type", + "tooltip": "Sets the coordinate system used for the movement of the emitted particles" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Coordinate System", + "tooltip": "The coordinate system used for the movement of the emitted particles (0=Cartesian, 1=Polar)" + } + } + ] + }, + { + "key": "SetSpriteSheetCellEndIndex", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Sprite Sheet Cell End Index" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Sprite Sheet Cell End Index is invoked" + }, + "details": { + "name": "Set Sprite Sheet Cell End Index", + "tooltip": "Sets the end index of the sprite sheet cell range used for sprite sheet animation or for randomly choosing the index" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Cell End Index", + "tooltip": "The end index of the sprite sheet cell range" + } + } + ] + }, + { + "key": "SetParticleColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Particle Color" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Particle Color is invoked" + }, + "details": { + "name": "Set Particle Color", + "tooltip": "Sets the color of the emitted particles" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color", + "tooltip": "The color of the emitted particles" + } + } + ] + }, + { + "key": "SetSpriteSheetCellIndex", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Sprite Sheet Cell Index" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Sprite Sheet Cell Index is invoked" + }, + "details": { + "name": "Set Sprite Sheet Cell Index", + "tooltip": "Sets the sprite sheet cell index to be used for emitted particles" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Cell Index", + "tooltip": "The sprite sheet cell index to be used for emitted particles" + } + } + ] + }, + { + "key": "SetIsParticleLifetimeInfinite", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Particle Lifetime Infinite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Particle Lifetime Infinite is invoked" + }, + "details": { + "name": "Set Is Particle Lifetime Infinite", + "tooltip": "Sets whether the emitted particles have an infinite lifetime" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Particle Lifetime Infinite", + "tooltip": "Indicates whether the emitted particles have an infinite lifetime" + } + } + ] + }, + { + "key": "SetParticleSpeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Particle Speed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Particle Speed is invoked" + }, + "details": { + "name": "Set Particle Speed", + "tooltip": "Sets the initial particle speed (used only when the emitter controls the emit direction)" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Speed", + "tooltip": "The initial particle speed" + } + } + ] + }, + { + "key": "GetIsHitParticleCountOnActivate", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Hit Particle Count On Activate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Hit Particle Count On Activate is invoked" + }, + "details": { + "name": "Is Hit Particle Count On Activate", + "tooltip": "Returns whether the average amount of particles will be emitted and processed when the emitter starts emitting" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetParticleAlpha", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Particle Alpha" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Particle Alpha is invoked" + }, + "details": { + "name": "Get Particle Alpha", + "tooltip": "Gets the alpha of the emitted particles" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetEmitAngleVariation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Emit Angle Variation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Emit Angle Variation is invoked" + }, + "details": { + "name": "Get Emit Angle Variation", + "tooltip": "Gets the variation in the emit angle" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetEmitterShape", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Emitter Shape" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Emitter Shape is invoked" + }, + "details": { + "name": "Set Emitter Shape", + "tooltip": "Sets the emitter shape" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Shape", + "tooltip": "The emitter shape (0=Point, 1=Circle, 2=Quad)" + } + } + ] + }, + { + "key": "GetParticleSpeedVariation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Particle Speed Variation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Particle Speed Variation is invoked" + }, + "details": { + "name": "Get Particle Speed Variation", + "tooltip": "Gets the variation in initial particle speed (used only when the emitter controls the emit direction)" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetParticleAcceleration", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Particle Acceleration" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Particle Acceleration is invoked" + }, + "details": { + "name": "Set Particle Acceleration", + "tooltip": "Sets the acceleration of the emitted particles" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Acceleration", + "tooltip": "The acceleration of the emitted particles" + } + } + ] + }, + { + "key": "SetParticleSpeedVariation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Particle Speed Variation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Particle Speed Variation is invoked" + }, + "details": { + "name": "Set Particle Speed Variation", + "tooltip": "Sets the variation in initial particle speed (used only when the emitter controls the emit direction)" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Variation", + "tooltip": "The variation in initial particle speed" + } + } + ] + }, + { + "key": "GetIsParticleAspectRatioLocked", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Particle Aspect Ratio Locked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Particle Aspect Ratio Locked is invoked" + }, + "details": { + "name": "Is Particle Aspect Ratio Locked", + "tooltip": "Returns whether the width and height of the emitted particles will be locked into the current aspect ratio" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetIsSpriteSheetAnimationLooped", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Sprite Sheet Animation Looped" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Sprite Sheet Animation Looped is invoked" + }, + "details": { + "name": "Is Sprite Sheet Animation Looped", + "tooltip": "Returns whether the sprite sheet cell animation is looped" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetParticleAcceleration", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Particle Acceleration" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Particle Acceleration is invoked" + }, + "details": { + "name": "Get Particle Acceleration", + "tooltip": "Gets the acceleration of the emitted particles" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "SetIsSpriteSheetIndexRandom", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Sprite Sheet Index Random" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Sprite Sheet Index Random is invoked" + }, + "details": { + "name": "Set Is Sprite Sheet Index Random", + "tooltip": "Sets whether the initial sprite sheet index is randomly chosen" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Index Random", + "tooltip": "Indicates whether the initial sprite sheet index is randomly chosen" + } + } + ] + }, + { + "key": "GetParticleMovementCoordinateType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Particle Movement Coordinate Type" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Particle Movement Coordinate Type is invoked" + }, + "details": { + "name": "Get Particle Movement Coordinate Type", + "tooltip": "Gets the coordinate system used for the movement of the emitted particles" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetParticleInitialVelocity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Particle Initial Velocity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Particle Initial Velocity is invoked" + }, + "details": { + "name": "Get Particle Initial Velocity", + "tooltip": "Gets the initial velocity of the emitted particles (used only when the emitter doesn’t control the emit direction)" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "SetParticleWidth", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Particle Width" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Particle Width is invoked" + }, + "details": { + "name": "Set Particle Width", + "tooltip": "Sets the width of the emitted particles" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Width", + "tooltip": "The width of the emitted particles" + } + } + ] + }, + { + "key": "SetParticleSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Particle Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Particle Size is invoked" + }, + "details": { + "name": "Set Particle Size", + "tooltip": "Sets the size of the emitted particles" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Size", + "tooltip": "The size of the emitted particles" + } + } + ] + }, + { + "key": "GetEmitterLifetime", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Emitter Lifetime" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Emitter Lifetime is invoked" + }, + "details": { + "name": "Get Emitter Lifetime", + "tooltip": "Gets the emitter lifetime. When the lifetime is reached the emitter will stop emitting" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetParticleSpeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Particle Speed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Particle Speed is invoked" + }, + "details": { + "name": "Get Particle Speed", + "tooltip": "Gets the initial particle speed (used only when the emitter controls the emit direction)" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetParticleRotationSpeedVariation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Particle Rotation Speed Variation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Particle Rotation Speed Variation is invoked" + }, + "details": { + "name": "Set Particle Rotation Speed Variation", + "tooltip": "Sets the variation in rotation speed of the emitted particles" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Variation", + "tooltip": "The variation in rotation speed of the emitted particles in degrees clockwise per second" + } + } + ] + }, + { + "key": "GetParticleHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Particle Height" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Particle Height is invoked" + }, + "details": { + "name": "Get Particle Height", + "tooltip": "Gets the height of the emitted particles" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetParticleHeightVariation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Particle Height Variation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Particle Height Variation is invoked" + }, + "details": { + "name": "Set Particle Height Variation", + "tooltip": "Sets the variation in height of the emitted particles" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Variation", + "tooltip": "The variation in height of the emitted particles" + } + } + ] + }, + { + "key": "SetParticleInitialRotation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Particle Initial Rotation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Particle Initial Rotation is invoked" + }, + "details": { + "name": "Set Particle Initial Rotation", + "tooltip": "Sets the initial rotation" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Rotation", + "tooltip": "The initial rotation in degrees clockwise measured from straight up" + } + } + ] + }, + { + "key": "GetParticlePivot", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Particle Pivot" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Particle Pivot is invoked" + }, + "details": { + "name": "Get Particle Pivot", + "tooltip": "Gets the pivot for the particles" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "GetParticleWidthVariation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Particle Width Variation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Particle Width Variation is invoked" + }, + "details": { + "name": "Get Particle Width Variation", + "tooltip": "Gets the variation in width of the emitted particles" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetIsEmitOnActivate", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Emit On Activate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Emit On Activate is invoked" + }, + "details": { + "name": "Is Emit On Activate", + "tooltip": "Returns whether the particle emitter starts emitting when the component is activated" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetIsParticlePositionRelativeToEmitter", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Particle Position Relative To Emitter" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Particle Position Relative To Emitter is invoked" + }, + "details": { + "name": "Set Is Particle Position Relative To Emitter", + "tooltip": "Sets whether the emitted particles move relative to the emitter" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Relative to Emitter", + "tooltip": "Indicates whether the emitted particles move relative to the emitter" + } + } + ] + }, + { + "key": "SetParticleInitialDirectionType", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Particle Initial Direction Type" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Particle Initial Direction Type is invoked" + }, + "details": { + "name": "Set Particle Initial Direction Type", + "tooltip": "Sets how the initial direction of the emitted particles are calculated" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Initial Direction Type", + "tooltip": "Indicates how the initial direction of the emitted particles are calculated (0=Relative to Emit Angle, 1=Relative to Emitter Center)" + } + } + ] + }, + { + "key": "GetParticleHeightVariation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Particle Height Variation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Particle Height Variation is invoked" + }, + "details": { + "name": "Get Particle Height Variation", + "tooltip": "Gets the variation in height of the emitted particles" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetParticleColorBrightnessVariation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Particle Color Brightness Variation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Particle Color Brightness Variation is invoked" + }, + "details": { + "name": "Set Particle Color Brightness Variation", + "tooltip": "Sets the variation in color brightness of the emitted particles" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Variation", + "tooltip": "The variation in color brightness of the emitted particles [0-1]" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiRadioButtonBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiRadioButtonBus.names new file mode 100644 index 0000000000..42e23202c6 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiRadioButtonBus.names @@ -0,0 +1,299 @@ +{ + "entries": [ + { + "key": "UiRadioButtonBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiRadioButtonBus", + "category": "UI" + }, + "methods": [ + { + "key": "SetChangedActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Changed Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Changed Action Name is invoked" + }, + "details": { + "name": "Set Changed Action Name", + "tooltip": "Sets the name of the action triggered when the radio button state changes" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the action triggered when the radio button state changes" + } + } + ] + }, + { + "key": "GetChangedActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Changed Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Changed Action Name is invoked" + }, + "details": { + "name": "Get Changed Action Name", + "tooltip": "Gets the name of the action triggered when the radio button state changes" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetCheckedEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Checked Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Checked Entity is invoked" + }, + "details": { + "name": "Set Checked Entity", + "tooltip": "Sets the child element to show when the radio button is checked" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Checked EntityID", + "tooltip": "The child element to show when the radio button is checked" + } + } + ] + }, + { + "key": "SetUncheckedEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Unchecked Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Unchecked Entity is invoked" + }, + "details": { + "name": "Set Unchecked Entity", + "tooltip": "Sets the child element to show when the radio button is unchecked" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Unchecked EntityID", + "tooltip": "The child element to show when the radio button is unchecked" + } + } + ] + }, + { + "key": "SetTurnOnActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Turn On Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Turn On Action Name is invoked" + }, + "details": { + "name": "Set Turn On Action Name", + "tooltip": "Sets the name of the action triggered when the radio button is checked" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the action triggered when the radio button is checked" + } + } + ] + }, + { + "key": "GetTurnOffActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Turn Off Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Turn Off Action Name is invoked" + }, + "details": { + "name": "Get Turn Off Action Name", + "tooltip": "Gets the name of the action triggered when the radio button is unchecked" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetGroup", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Group" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Group is invoked" + }, + "details": { + "name": "Get Group", + "tooltip": "Gets the group of the radio button" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetState", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get State" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get State is invoked" + }, + "details": { + "name": "Get State", + "tooltip": "Returns whether the radio button is checked" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetCheckedEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Checked Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Checked Entity is invoked" + }, + "details": { + "name": "Get Checked Entity", + "tooltip": "Gets the child element that is shown when the radio button is checked" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetUncheckedEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Unchecked Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Unchecked Entity is invoked" + }, + "details": { + "name": "Get Unchecked Entity", + "tooltip": "Gets the child element that is shown when the radio button is unchecked" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetTurnOnActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Turn On Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Turn On Action Name is invoked" + }, + "details": { + "name": "Get Turn On Action Name", + "tooltip": "Gets the name of the action triggered when the radio button is checked" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetTurnOffActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Turn Off Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Turn Off Action Name is invoked" + }, + "details": { + "name": "Set Turn Off Action Name", + "tooltip": "Sets the name of the action triggered when the radio button is unchecked" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the action triggered when the radio button is unchecked" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiRadioButtonGroupBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiRadioButtonGroupBus.names new file mode 100644 index 0000000000..2cde33edfb --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiRadioButtonGroupBus.names @@ -0,0 +1,245 @@ +{ + "entries": [ + { + "key": "UiRadioButtonGroupBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiRadioButtonGroupBus", + "category": "UI" + }, + "methods": [ + { + "key": "AddRadioButton", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Add Radio Button" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Add Radio Button is invoked" + }, + "details": { + "name": "Add Radio Button", + "tooltip": "Adds a new radio button to the group" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Radio Button EntityID", + "tooltip": "A radio button to add to the group" + } + } + ] + }, + { + "key": "SetChangedActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Changed Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Changed Action Name is invoked" + }, + "details": { + "name": "Set Changed Action Name", + "tooltip": "Sets the name of the action triggered when the radio button group state changes" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the action triggered when the radio button group state changes" + } + } + ] + }, + { + "key": "SetAllowUncheck", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Allow Uncheck" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Allow Uncheck is invoked" + }, + "details": { + "name": "Set Allow Uncheck", + "tooltip": "Sets whether to allow clicking on the selected radio button to uncheck it" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Allow Uncheck", + "tooltip": "Indicates whether to allow clicking on the selected radio button to uncheck it" + } + } + ] + }, + { + "key": "ContainsRadioButton", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Contains Radio Button" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Contains Radio Button is invoked" + }, + "details": { + "name": "Contains Radio Button", + "tooltip": "Returns whether a radio button is in the group" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Radio Button EntityID", + "tooltip": "The radio button" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool", + "tooltip": "The radio button" + } + } + ] + }, + { + "key": "GetChangedActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Changed Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Changed Action Name is invoked" + }, + "details": { + "name": "Get Changed Action Name", + "tooltip": "Gets the name of the action triggered when the radio button group state changes" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetAllowUncheck", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Allow Uncheck" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Allow Uncheck is invoked" + }, + "details": { + "name": "Get Allow Uncheck", + "tooltip": "Returns whether to allow clicking on the selected radio button to uncheck it" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "RemoveRadioButton", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Remove Radio Button" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Remove Radio Button is invoked" + }, + "details": { + "name": "Remove Radio Button", + "tooltip": "Removes a radio button from the group" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Radio Button EntityID", + "tooltip": "The radio button to remove from the group" + } + } + ] + }, + { + "key": "SetState", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set State" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set State is invoked" + }, + "details": { + "name": "Set State", + "tooltip": "Sets the checked/unchecked state of a radio button" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Radio Button EntityID", + "tooltip": "The radio button change the checked/unchecked state on" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Checked", + "tooltip": "Indicates whether to set the radio button state to checked" + } + } + ] + }, + { + "key": "GetState", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get State" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get State is invoked" + }, + "details": { + "name": "Get State", + "tooltip": "Gets the radio button that is checked" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiScrollBarBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiScrollBarBus.names new file mode 100644 index 0000000000..8ca81f9cca --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiScrollBarBus.names @@ -0,0 +1,289 @@ +{ + "entries": [ + { + "key": "UiScrollBarBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiScrollBarBus", + "category": "UI" + }, + "methods": [ + { + "key": "GetAutoFadeSpeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAutoFadeSpeed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAutoFadeSpeed is invoked" + }, + "details": { + "name": "GetAutoFadeSpeed" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "IsAutoFadeEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsAutoFadeEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsAutoFadeEnabled is invoked" + }, + "details": { + "name": "IsAutoFadeEnabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetAutoFadeSpeed", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetAutoFadeSpeed" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetAutoFadeSpeed is invoked" + }, + "details": { + "name": "SetAutoFadeSpeed" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetHandleEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Handle Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Handle Entity is invoked" + }, + "details": { + "name": "Set Handle Entity", + "tooltip": "Gets the handle element" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Handle EntityID", + "tooltip": "The handle element" + } + } + ] + }, + { + "key": "GetHandleEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Handle Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Handle Entity is invoked" + }, + "details": { + "name": "Get Handle Entity", + "tooltip": "Gets the handle element" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetAutoFadeDelay", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAutoFadeDelay" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAutoFadeDelay is invoked" + }, + "details": { + "name": "GetAutoFadeDelay" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetMinHandlePixelSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Min Handle Pixel Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Min Handle Pixel Size is invoked" + }, + "details": { + "name": "Get Min Handle Pixel Size", + "tooltip": "Gets the minimum size of the handle" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetAutoFadeEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetAutoFadeEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetAutoFadeEnabled is invoked" + }, + "details": { + "name": "SetAutoFadeEnabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetHandleSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Handle Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Handle Size is invoked" + }, + "details": { + "name": "Set Handle Size", + "tooltip": "Sets the size of the handle relative to the scroll bar" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Handle Size", + "tooltip": "The size of the handle relative to the scroll bar [0-1]" + } + } + ] + }, + { + "key": "SetMinHandlePixelSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Min Handle Pixel Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Min Handle Pixel Size is invoked" + }, + "details": { + "name": "Set Min Handle Pixel Size", + "tooltip": "Sets the minimum size of the handle" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Min Handle Size", + "tooltip": "The minimum size of the handle in pixels" + } + } + ] + }, + { + "key": "GetHandleSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Handle Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Handle Size is invoked" + }, + "details": { + "name": "Get Handle Size", + "tooltip": "Gets the size of the handle relative to the scroll bar" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetAutoFadeDelay", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetAutoFadeDelay" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetAutoFadeDelay is invoked" + }, + "details": { + "name": "SetAutoFadeDelay" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiScrollBoxBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiScrollBoxBus.names new file mode 100644 index 0000000000..9198231a79 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiScrollBoxBus.names @@ -0,0 +1,722 @@ +{ + "entries": [ + { + "key": "UiScrollBoxBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiScrollBoxBus", + "category": "UI" + }, + "methods": [ + { + "key": "FindClosestContentChildElement", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Find Closest Content Child Element" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Find Closest Content Child Element is invoked" + }, + "details": { + "name": "Find Closest Content Child Element", + "tooltip": "Finds the child of the content element that is closest to the content anchors at the current scroll offset (the currently selected child)" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetHorizontalScrollBarVisibility", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Horizontal Scroll Bar Visibility" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Horizontal Scroll Bar Visibility is invoked" + }, + "details": { + "name": "Get Horizontal Scroll Bar Visibility", + "tooltip": "Gets the visibility behavior for the horizontal scroll bar of the scroll box" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetVerticalScrollBarEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Vertical Scroll Bar Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Vertical Scroll Bar Entity is invoked" + }, + "details": { + "name": "Get Vertical Scroll Bar Entity", + "tooltip": "Gets the vertical scroll bar element for the scroll box" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetHorizontalScrollBarVisibility", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Horizontal Scroll Bar Visibility" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Horizontal Scroll Bar Visibility is invoked" + }, + "details": { + "name": "Set Horizontal Scroll Bar Visibility", + "tooltip": "Sets the visibility behavior for the horizontal scroll bar of the scroll box" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Visibility", + "tooltip": "The visibility behavior (0=Always Show, 1=Auto Hide, 2=Auto Hide and Resize Viewport)" + } + } + ] + }, + { + "key": "SetScrollOffsetChangingActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Scroll Offset Changing Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Scroll Offset Changing Action Name is invoked" + }, + "details": { + "name": "Set Scroll Offset Changing Action Name", + "tooltip": "Sets the name of the action triggered while the scroll box is being dragged" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the action triggered while the scroll box is being dragged" + } + } + ] + }, + { + "key": "GetScrollOffsetChangingActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Scroll Offset Changing Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Scroll Offset Changing Action Name is invoked" + }, + "details": { + "name": "Get Scroll Offset Changing Action Name", + "tooltip": "Gets the name of the action triggered while the scroll box is being dragged" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetHorizontalScrollBarEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Horizontal Scroll Bar Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Horizontal Scroll Bar Entity is invoked" + }, + "details": { + "name": "Get Horizontal Scroll Bar Entity", + "tooltip": "Gets the horizontal scroll bar element for the scroll box" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "HasHorizontalContentToScroll", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Horizontal Content To Scroll" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Horizontal Content To Scroll is invoked" + }, + "details": { + "name": "Has Horizontal Content To Scroll", + "tooltip": "Returns whether there is content to scroll horizontally" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetContentEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Content Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Content Entity is invoked" + }, + "details": { + "name": "Set Content Entity", + "tooltip": "Sets the content element for the scroll box" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Content EntityID", + "tooltip": "The content element for the scroll box" + } + } + ] + }, + { + "key": "GetIsScrollingConstrained", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Scrolling Constrained" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Scrolling Constrained is invoked" + }, + "details": { + "name": "Is Scrolling Constrained", + "tooltip": "Returns whether the scroll box restricts scrolling to the content area" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "HasVerticalContentToScroll", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Vertical Content To Scroll" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Vertical Content To Scroll is invoked" + }, + "details": { + "name": "Has Vertical Content To Scroll", + "tooltip": "Returns whether there is content to scroll vertically" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetIsVerticalScrollingEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Vertical Scrolling Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Vertical Scrolling Enabled is invoked" + }, + "details": { + "name": "Is Vertical Scrolling Enabled", + "tooltip": "Returns whether the scroll box allows vertical scrolling" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetVerticalScrollBarVisibility", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Vertical Scroll Bar Visibility" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Vertical Scroll Bar Visibility is invoked" + }, + "details": { + "name": "Get Vertical Scroll Bar Visibility", + "tooltip": "Gets the visibility behavior for the vertical scroll bar of the scroll box" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetIsHorizontalScrollingEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Horizontal Scrolling Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Horizontal Scrolling Enabled is invoked" + }, + "details": { + "name": "Set Is Horizontal Scrolling Enabled", + "tooltip": "Sets whether the scroll box allows horizontal scrolling" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Horizontal Scrolling", + "tooltip": "Indicates whether the scroll box allows horizontal scrolling" + } + } + ] + }, + { + "key": "GetNormalizedScrollValue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Normalized Scroll Value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Normalized Scroll Value is invoked" + }, + "details": { + "name": "Get Normalized Scroll Value", + "tooltip": "Returns the scroll value normalized to [0-1]" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "SetScrollOffset", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Scroll Offset" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Scroll Offset is invoked" + }, + "details": { + "name": "Set Scroll Offset", + "tooltip": "Sets the scroll offset of the scroll box" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Scroll Offset", + "tooltip": "The scroll offset of the scroll box" + } + } + ] + }, + { + "key": "SetHorizontalScrollBarEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Horizontal Scroll Bar Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Horizontal Scroll Bar Entity is invoked" + }, + "details": { + "name": "Set Horizontal Scroll Bar Entity", + "tooltip": "Sets the horizontal scroll bar element for the scroll box" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Horizontal Scroll Bar EntityID", + "tooltip": "The horizontal scroll bar element for the scroll box" + } + } + ] + }, + { + "key": "GetScrollOffset", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Scroll Offset" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Scroll Offset is invoked" + }, + "details": { + "name": "Get Scroll Offset", + "tooltip": "Gets the scroll offset of the scroll box. The scroll offset is the offset from the content element's anchor point to the content element's pivot" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "GetScrollOffsetChangedActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Scroll Offset Changed Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Scroll Offset Changed Action Name is invoked" + }, + "details": { + "name": "Get Scroll Offset Changed Action Name", + "tooltip": "Gets the name of the action triggered when the scroll box drag is completed" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetVerticalScrollBarVisibility", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Vertical Scroll Bar Visibility" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Vertical Scroll Bar Visibility is invoked" + }, + "details": { + "name": "Set Vertical Scroll Bar Visibility", + "tooltip": "Sets the visibility behavior for the vertical scroll bar of the scroll box" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Visibility", + "tooltip": "The visibility behavior (0=Always Show, 1=Auto Hide, 2=Auto Hide and Resize Viewport)" + } + } + ] + }, + { + "key": "GetIsHorizontalScrollingEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Horizontal Scrolling Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Horizontal Scrolling Enabled is invoked" + }, + "details": { + "name": "Is Horizontal Scrolling Enabled", + "tooltip": "Returns whether the scroll box allows horizontal scrolling" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetIsScrollingConstrained", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Scrolling Constrained" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Scrolling Constrained is invoked" + }, + "details": { + "name": "Set Is Scrolling Constrained", + "tooltip": "Sets whether the scroll box restricts scrolling to the content area" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Constrained", + "tooltip": "Indicates whether the scroll box restricts scrolling to the content area" + } + } + ] + }, + { + "key": "SetSnapGrid", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Snap Grid" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Snap Grid is invoked" + }, + "details": { + "name": "Set Snap Grid", + "tooltip": "Sets the snapping grid of the scroll box. The scroll offset will be snapped to multiples of these values" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Grid Spacing", + "tooltip": "The grid spacing. The scroll offset will be snapped to multiples of these values" + } + } + ] + }, + { + "key": "SetIsVerticalScrollingEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Vertical Scrolling Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Vertical Scrolling Enabled is invoked" + }, + "details": { + "name": "Set Is Vertical Scrolling Enabled", + "tooltip": "Sets whether the scroll box allows vertical scrolling" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Vertical Scrolling", + "tooltip": "Indicates whether the scroll box allows vertical scrolling" + } + } + ] + }, + { + "key": "GetSnapGrid", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Snap Grid" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Snap Grid is invoked" + }, + "details": { + "name": "Get Snap Grid", + "tooltip": "Gets the snapping grid of the scroll box. The scroll offset will be snapped to multiples of these values" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "GetSnapMode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Snap Mode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Snap Mode is invoked" + }, + "details": { + "name": "Get Snap Mode", + "tooltip": "Gets the snap mode for the scroll box" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetScrollOffsetChangedActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Scroll Offset Changed Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Scroll Offset Changed Action Name is invoked" + }, + "details": { + "name": "Set Scroll Offset Changed Action Name", + "tooltip": "Sets the name of the action triggered when the scroll box drag is completed" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the action triggered when the scroll box drag is completed" + } + } + ] + }, + { + "key": "SetVerticalScrollBarEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Vertical Scroll Bar Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Vertical Scroll Bar Entity is invoked" + }, + "details": { + "name": "Set Vertical Scroll Bar Entity", + "tooltip": "Sets the vertical scroll bar element for the scroll box" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Vertical Scroll Bar EntityID", + "tooltip": "The vertical scroll bar element for the scroll box" + } + } + ] + }, + { + "key": "GetContentEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Content Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Content Entity is invoked" + }, + "details": { + "name": "Get Content Entity", + "tooltip": "Gets the content element for the scroll box" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetSnapMode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Snap Mode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Snap Mode is invoked" + }, + "details": { + "name": "Set Snap Mode", + "tooltip": "Sets the snap mode for the scroll box" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Snap Mode", + "tooltip": "The snap mode for the scroll box (0=None, 1=Children, 2=Grid)" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiScrollerBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiScrollerBus.names new file mode 100644 index 0000000000..c2b3fd4a76 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiScrollerBus.names @@ -0,0 +1,203 @@ +{ + "entries": [ + { + "key": "UiScrollerBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiScrollerBus", + "category": "UI" + }, + "methods": [ + { + "key": "GetValueChangedActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Value Changed Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Value Changed Action Name is invoked" + }, + "details": { + "name": "Get Value Changed Action Name", + "tooltip": "Gets the name of the action triggered when the value has changed" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetOrientation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Orientation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Orientation is invoked" + }, + "details": { + "name": "Set Orientation", + "tooltip": "Sets the orientation of the scroller" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Orientation", + "tooltip": "The orientation of the scroller (0=Horizontal, 1=Vertical)" + } + } + ] + }, + { + "key": "GetOrientation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Orientation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Orientation is invoked" + }, + "details": { + "name": "Get Orientation", + "tooltip": "Gets the orientation of the scroller" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetValueChangingActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Value Changing Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Value Changing Action Name is invoked" + }, + "details": { + "name": "Get Value Changing Action Name", + "tooltip": "Gets the name of the action triggered while the value is changing" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetValueChangingActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Value Changing Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Value Changing Action Name is invoked" + }, + "details": { + "name": "Set Value Changing Action Name", + "tooltip": "Sets the name of the action triggered while the value is changing" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the action triggered while the value is changing" + } + } + ] + }, + { + "key": "SetValue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Value is invoked" + }, + "details": { + "name": "Set Value", + "tooltip": "Sets the value of the scroller" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value", + "tooltip": "The value of the scroller [0-1]" + } + } + ] + }, + { + "key": "GetValue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Value is invoked" + }, + "details": { + "name": "Get Value", + "tooltip": "Gets the value of the scroller" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetValueChangedActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Value Changed Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Value Changed Action Name is invoked" + }, + "details": { + "name": "Set Value Changed Action Name", + "tooltip": "Sets the name of the action triggered when the value has changed" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the action triggered when the value has changed" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiSliderBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiSliderBus.names new file mode 100644 index 0000000000..48e06905c7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiSliderBus.names @@ -0,0 +1,441 @@ +{ + "entries": [ + { + "key": "UiSliderBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiSliderBus", + "category": "UI" + }, + "methods": [ + { + "key": "GetValueChangingActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Value Changing Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Value Changing Action Name is invoked" + }, + "details": { + "name": "Get Value Changing Action Name", + "tooltip": "Gets the name of the action triggered while the value is changing" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetValueChangingActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Value Changing Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Value Changing Action Name is invoked" + }, + "details": { + "name": "Set Value Changing Action Name", + "tooltip": "Sets the name of the action triggered while the value is changing" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the action triggered while the value is changing" + } + } + ] + }, + { + "key": "GetManipulatorEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Manipulator Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Manipulator Entity is invoked" + }, + "details": { + "name": "Get Manipulator Entity", + "tooltip": "Gets the manipulator element" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetTrackEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Track Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Track Entity is invoked" + }, + "details": { + "name": "Set Track Entity", + "tooltip": "Sets the track element" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Track EntityID", + "tooltip": "The track element" + } + } + ] + }, + { + "key": "GetFillEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Fill Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Fill Entity is invoked" + }, + "details": { + "name": "Get Fill Entity", + "tooltip": "Gets the fill element" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetFillEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Fill Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Fill Entity is invoked" + }, + "details": { + "name": "Set Fill Entity", + "tooltip": "Sets the fill element" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Fill EntityID", + "tooltip": "The fill element" + } + } + ] + }, + { + "key": "SetManipulatorEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Manipulator Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Manipulator Entity is invoked" + }, + "details": { + "name": "Set Manipulator Entity", + "tooltip": "Sets the manipulator element" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Manipulator EntityID", + "tooltip": "The manipulator element" + } + } + ] + }, + { + "key": "GetValueChangedActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Value Changed Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Value Changed Action Name is invoked" + }, + "details": { + "name": "Get Value Changed Action Name", + "tooltip": "Gets the name of the action triggered when the value has finished changing" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetTrackEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Track Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Track Entity is invoked" + }, + "details": { + "name": "Get Track Entity", + "tooltip": "Gets the track element" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetMinValue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Min Value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Min Value is invoked" + }, + "details": { + "name": "Get Min Value", + "tooltip": "Gets the minimum value of the slider" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetMinValue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Min Value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Min Value is invoked" + }, + "details": { + "name": "Set Min Value", + "tooltip": "Sets the minimum value of the slider" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Min Value", + "tooltip": "The minimum value of the slider" + } + } + ] + }, + { + "key": "SetStepValue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Step Value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Step Value is invoked" + }, + "details": { + "name": "Set Step Value", + "tooltip": "Sets the smallest increment allowed between values. Zero means no restriction" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Step Value", + "tooltip": "The smallest increment allowed between values. Zero means no restriction" + } + } + ] + }, + { + "key": "SetValue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Value is invoked" + }, + "details": { + "name": "Set Value", + "tooltip": "Sets the value of the slider" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Value", + "tooltip": "The value of the slider" + } + } + ] + }, + { + "key": "SetMaxValue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Max Value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Max Value is invoked" + }, + "details": { + "name": "Set Max Value", + "tooltip": "Sets the maximum value of the slider" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Max Value", + "tooltip": "The maximum value of the slider" + } + } + ] + }, + { + "key": "GetStepValue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Step Value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Step Value is invoked" + }, + "details": { + "name": "Get Step Value", + "tooltip": "Gets the smallest increment allowed between values. Zero means no restriction" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetValue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Value is invoked" + }, + "details": { + "name": "Get Value", + "tooltip": "Gets the value of the slider" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetMaxValue", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Max Value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Max Value is invoked" + }, + "details": { + "name": "Get Max Value", + "tooltip": "Gets the maximum value of the slider" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetValueChangedActionName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Value Changed Action Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Value Changed Action Name is invoked" + }, + "details": { + "name": "Set Value Changed Action Name", + "tooltip": "Sets the name of the action triggered when the value is done changing" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the action triggered when the value is done changing" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiSpawnerBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiSpawnerBus.names new file mode 100644 index 0000000000..013efee91d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiSpawnerBus.names @@ -0,0 +1,104 @@ +{ + "entries": [ + { + "key": "UiSpawnerBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiSpawnerBus", + "category": "UI" + }, + "methods": [ + { + "key": "Spawn", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Spawn" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Spawn is invoked" + }, + "details": { + "name": "Spawn", + "tooltip": "Spawns the slice specified in the component at the element's location" + }, + "results": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "SliceInstantiationTicket" + } + } + ] + }, + { + "key": "SpawnRelative", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Spawn Relative" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Spawn Relative is invoked" + }, + "details": { + "name": "Spawn Relative", + "tooltip": "Spawns the slice specified in the component at the element's location with the specified relative offset" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Relative Position", + "tooltip": "The offset position from the element with the spawner component" + } + } + ], + "results": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "SliceInstantiationTicket", + "tooltip": "The offset position from the element with the spawner component" + } + } + ] + }, + { + "key": "SpawnAbsolute", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Spawn Absolute" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Spawn Absolute is invoked" + }, + "details": { + "name": "Spawn Absolute", + "tooltip": "Spawns the slice specified in the component at the specified viewport position" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Viewport Position", + "tooltip": "The viewport position at which to spawn the slice" + } + } + ], + "results": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "SliceInstantiationTicket", + "tooltip": "The viewport position at which to spawn the slice" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiTextBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiTextBus.names new file mode 100644 index 0000000000..1bc31f0a93 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiTextBus.names @@ -0,0 +1,751 @@ +{ + "entries": [ + { + "key": "UiTextBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiTextBus", + "category": "UI" + }, + "methods": [ + { + "key": "GetTextHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Text Height" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Text Height is invoked" + }, + "details": { + "name": "Get Text Height", + "tooltip": "Get the height of the text" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Color" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Color is invoked" + }, + "details": { + "name": "Get Color", + "tooltip": "Gets the color to draw the text string" + }, + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "GetLineSpacing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Line Spacing" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Line Spacing is invoked" + }, + "details": { + "name": "Get Line Spacing", + "tooltip": "Gets the amount of pixels to add between each two consecutive lines" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetTextWidth", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Text Width" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Text Width is invoked" + }, + "details": { + "name": "Get Text Width", + "tooltip": "Get the width of the text" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetWrapText", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Wrap Text" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Wrap Text is invoked" + }, + "details": { + "name": "Set Wrap Text", + "tooltip": "Sets whether text is wrapped" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Wrap Mode", + "tooltip": "The wrap mode (0=NoWrap, 1=Wrap)" + } + } + ] + }, + { + "key": "GetFontEffectName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Font Effect Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Font Effect Name is invoked" + }, + "details": { + "name": "Get Font Effect Name", + "tooltip": "Get the name of the font effect with the given index in the current font" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Font Effect Index", + "tooltip": "The index of the effect in the font" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string", + "tooltip": "The index of the effect in the font" + } + } + ] + }, + { + "key": "GetShrinkToFit", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Shrink To Fit" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Shrink To Fit is invoked" + }, + "details": { + "name": "Get Shrink To Fit", + "tooltip": "Gets the shrink-to-fit setting of the text" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetOverflowMode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Overflow Mode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Overflow Mode is invoked" + }, + "details": { + "name": "Get Overflow Mode", + "tooltip": "Gets the overflow behavior of the text" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetFontEffect", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Font Effect" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Font Effect is invoked" + }, + "details": { + "name": "Get Font Effect", + "tooltip": "Gets the font effect" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetFontEffect", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Font Effect" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Font Effect is invoked" + }, + "details": { + "name": "Set Font Effect", + "tooltip": "Sets the font effect" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Font Effect Index", + "tooltip": "The font effect index" + } + } + ] + }, + { + "key": "GetHorizontalTextAlignment", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Horizontal Text Alignment" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Horizontal Text Alignment is invoked" + }, + "details": { + "name": "Get Horizontal Text Alignment", + "tooltip": "Gets the horizontal text alignment" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetFont", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Font" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Font is invoked" + }, + "details": { + "name": "Get Font", + "tooltip": "Gets the pathname to the font" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetVerticalTextAlignment", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Vertical Text Alignment" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Vertical Text Alignment is invoked" + }, + "details": { + "name": "Set Vertical Text Alignment", + "tooltip": "Sets the vertical text alignment" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Vertical Alignment", + "tooltip": "The vertical text alignment (0=Top, 1=Center, 2=Bottom)" + } + } + ] + }, + { + "key": "GetVerticalTextAlignment", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Vertical Text Alignment" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Vertical Text Alignment is invoked" + }, + "details": { + "name": "Get Vertical Text Alignment", + "tooltip": "Gets the vertical text alignment" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetOverflowMode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Overflow Mode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Overflow Mode is invoked" + }, + "details": { + "name": "Set Overflow Mode", + "tooltip": "Sets the overflow behavior of the text" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Overflow Mode", + "tooltip": "The overflow behavior of the text (0=Overflow Text, 1=Clip Text, 2=Ellipsis)" + } + } + ] + }, + { + "key": "SetColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Color" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Color is invoked" + }, + "details": { + "name": "Set Color", + "tooltip": "Sets the color to draw the text string" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color", + "tooltip": "The color to draw the text string" + } + } + ] + }, + { + "key": "SetFontSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Font Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Font Size is invoked" + }, + "details": { + "name": "Set Font Size", + "tooltip": "Sets the size of the font in points" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Font Size", + "tooltip": "The size of the font in points" + } + } + ] + }, + { + "key": "SetCharacterSpacing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Character Spacing" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Character Spacing is invoked" + }, + "details": { + "name": "Set Character Spacing", + "tooltip": "Sets the spacing in 1/1000th of ems to add between each two consecutive characters. One em is equal to the currently specified font size" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Character Spacing", + "tooltip": "The spacing in 1/1000th of ems to add between each two consecutive characters. One em is equal to the currently specified font size" + } + } + ] + }, + { + "key": "SetLineSpacing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Line Spacing" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Line Spacing is invoked" + }, + "details": { + "name": "Set Line Spacing", + "tooltip": "Sets the amount of pixels to add between each two consecutive lines" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Line Spacing", + "tooltip": "The amount of pixels to add between each two consecutive lines" + } + } + ] + }, + { + "key": "GetCharacterSpacing", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Character Spacing" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Character Spacing is invoked" + }, + "details": { + "name": "Get Character Spacing", + "tooltip": "Gets the spacing in 1/1000th of ems to add between each two consecutive characters. One em is equal to the currently specified font size" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetHorizontalTextAlignment", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Horizontal Text Alignment" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Horizontal Text Alignment is invoked" + }, + "details": { + "name": "Set Horizontal Text Alignment", + "tooltip": "Sets the horizontal text alignment" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Horizontal Alignment", + "tooltip": "The horizontal text alignment (0=Left, 1=Center, 2=Right)" + } + } + ] + }, + { + "key": "SetText", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Text" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Text is invoked" + }, + "details": { + "name": "Set Text", + "tooltip": "Sets the text string being displayed by the element" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Text", + "tooltip": "The text string being displayed by the element" + } + } + ] + }, + { + "key": "SetFont", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Font" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Font is invoked" + }, + "details": { + "name": "Set Font", + "tooltip": "Sets the pathname to the font" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Pathname", + "tooltip": "The pathname to the font" + } + } + ] + }, + { + "key": "SetFontEffectByName", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Font Effect By Name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Font Effect By Name is invoked" + }, + "details": { + "name": "Set Font Effect By Name", + "tooltip": "Set the font effect to use for this text, given the name of the font effect" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Font Effect Name", + "tooltip": "The name of the font effect to use for this text" + } + } + ] + }, + { + "key": "SetIsMarkupEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Markup Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Markup Enabled is invoked" + }, + "details": { + "name": "Set Is Markup Enabled", + "tooltip": "Sets whether markup is enabled. If true then the text string is parsed for XML markup" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Is Enabled", + "tooltip": "Whether whether markup is enabled" + } + } + ] + }, + { + "key": "GetWrapText", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Wrap Text" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Wrap Text is invoked" + }, + "details": { + "name": "Get Wrap Text", + "tooltip": "Returns whether text is wrapped" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetText", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Text" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Text is invoked" + }, + "details": { + "name": "Get Text", + "tooltip": "Gets the text string being displayed by the element" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetTextSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTextSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTextSize is invoked" + }, + "details": { + "name": "GetTextSize" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "GetIsMarkupEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Is Markup Enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Is Markup Enabled is invoked" + }, + "details": { + "name": "Get Is Markup Enabled", + "tooltip": "Gets whether markup is enabled. If true then the text string is parsed for XML markup" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetFontSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Font Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Font Size is invoked" + }, + "details": { + "name": "Get Font Size", + "tooltip": "Gets the size of the font in points" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetShrinkToFit", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Shrink To Fit" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Shrink To Fit is invoked" + }, + "details": { + "name": "Set Shrink To Fit", + "tooltip": "Sets the shrink-to-fit setting of the text" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Shrink To Fit", + "tooltip": "The shrink-to-fit setting (0 = None, 1 = Uniform, 2 = Width-only)" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiTextInputBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiTextInputBus.names new file mode 100644 index 0000000000..b8a8cd69da --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiTextInputBus.names @@ -0,0 +1,625 @@ +{ + "entries": [ + { + "key": "UiTextInputBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiTextInputBus", + "category": "UI" + }, + "methods": [ + { + "key": "SetChangeAction", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Change Action" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Change Action is invoked" + }, + "details": { + "name": "Set Change Action", + "tooltip": "Sets the name of the action triggered when the text is changed" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the action triggered when the text is changed" + } + } + ] + }, + { + "key": "GetEndEditAction", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get End Edit Action" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get End Edit Action is invoked" + }, + "details": { + "name": "Get End Edit Action", + "tooltip": "Gets the name of the action triggered when the editing of text is finished" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetEndEditAction", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set End Edit Action" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set End Edit Action is invoked" + }, + "details": { + "name": "Set End Edit Action", + "tooltip": "Sets the name of the action triggered when the editing of text is finished" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "Sets the name of the action triggered when the editing of text is finished" + } + } + ] + }, + { + "key": "GetPlaceHolderTextEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Placeholder Text Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Placeholder Text Entity is invoked" + }, + "details": { + "name": "Get Placeholder Text Entity", + "tooltip": "Gets the placeholder text element" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetIsPasswordField", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Is Password Field" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Is Password Field is invoked" + }, + "details": { + "name": "Is Password Field", + "tooltip": "Returns whether the text input is configured as a password field" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetChangeAction", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Change Action" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Change Action is invoked" + }, + "details": { + "name": "Get Change Action", + "tooltip": "Gets the name of the action triggered when the text is changed" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetEnterAction", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Enter Action" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Enter Action is invoked" + }, + "details": { + "name": "Set Enter Action", + "tooltip": "Sets the name of the action triggered when enter is pressed" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Name", + "tooltip": "The name of the action triggered when enter is pressed" + } + } + ] + }, + { + "key": "SetText", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Text" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Text is invoked" + }, + "details": { + "name": "Set Text", + "tooltip": "Sets the text string being displayed or edited by the element" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Text", + "tooltip": "The text string being displayed or edited by the element" + } + } + ] + }, + { + "key": "SetIsClipboardEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetIsClipboardEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetIsClipboardEnabled is invoked" + }, + "details": { + "name": "SetIsClipboardEnabled" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetMaxStringLength", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Max String Length" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Max String Length is invoked" + }, + "details": { + "name": "Set Max String Length", + "tooltip": "Sets the maximum number of characters that can be entered" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Max Length", + "tooltip": "The maximum number of characters that can be entered" + } + } + ] + }, + { + "key": "GetEnterAction", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Enter Action" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Enter Action is invoked" + }, + "details": { + "name": "Get Enter Action", + "tooltip": "Gets the name of the action triggered when enter is pressed" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetText", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Text" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Text is invoked" + }, + "details": { + "name": "Get Text", + "tooltip": "Gets the text string being displayed or edited by the element" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetCursorBlinkInterval", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Cursor Blink Interval" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Cursor Blink Interval is invoked" + }, + "details": { + "name": "Get Cursor Blink Interval", + "tooltip": "Gets the cursor blink interval of the text input" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetMaxStringLength", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Max String Length" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Max String Length is invoked" + }, + "details": { + "name": "Get Max String Length", + "tooltip": "Gets the maximum number of characters that can be entered" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetIsPasswordField", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Is Password Field" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Is Password Field is invoked" + }, + "details": { + "name": "Set Is Password Field", + "tooltip": "Sets whether the text input is configured as a password field" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Password Field", + "tooltip": "Indicates whether the text input is configured as a password field" + } + } + ] + }, + { + "key": "GetTextCursorColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Text Cursor Color" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Text Cursor Color is invoked" + }, + "details": { + "name": "Get Text Cursor Color", + "tooltip": "Gets the color to be used for the text cursor" + }, + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "SetTextEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Text Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Text Entity is invoked" + }, + "details": { + "name": "Set Text Entity", + "tooltip": "Sets the text element" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Text EntityID", + "tooltip": "The text element" + } + } + ] + }, + { + "key": "SetTextSelectionColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Text Selection Color" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Text Selection Color is invoked" + }, + "details": { + "name": "Set Text Selection Color", + "tooltip": "Sets the color to be used for the text background when it is selected" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Selection Color", + "tooltip": "The color to be used for the text background when it is selected" + } + } + ] + }, + { + "key": "SetTextCursorColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Text Cursor Color" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Text Cursor Color is invoked" + }, + "details": { + "name": "Set Text Cursor Color", + "tooltip": "Sets the color to be used for the text cursor" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Cursor Color", + "tooltip": "The color to be used for the text cursor" + } + } + ] + }, + { + "key": "SetCursorBlinkInterval", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Cursor Blink Interval" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Cursor Blink Interval is invoked" + }, + "details": { + "name": "Set Cursor Blink Interval", + "tooltip": "Sets the cursor blink interval of the text input" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Interval", + "tooltip": "The cursor blink interval of the text input in seconds" + } + } + ] + }, + { + "key": "GetTextEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Text Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Text Entity is invoked" + }, + "details": { + "name": "Get Text Entity", + "tooltip": "Gets the text element" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "SetPlaceHolderTextEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Placeholder Text Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Placeholder Text Entity is invoked" + }, + "details": { + "name": "Set Placeholder Text Entity", + "tooltip": "Sets the placeholder text element" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Placeholder EntityID", + "tooltip": "The placeholder text element" + } + } + ] + }, + { + "key": "GetReplacementCharacter", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Replacement Character" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Replacement Character is invoked" + }, + "details": { + "name": "Get Replacement Character", + "tooltip": "Gets the replacement character used to hide password text" + }, + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "GetIsClipboardEnabled", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetIsClipboardEnabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetIsClipboardEnabled is invoked" + }, + "details": { + "name": "GetIsClipboardEnabled" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetTextSelectionColor", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Text Selection Color" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Text Selection Color is invoked" + }, + "details": { + "name": "Get Text Selection Color", + "tooltip": "Gets the color to be used for the text background when it is selected" + }, + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "SetReplacementCharacter", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Replacement Character" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Replacement Character is invoked" + }, + "details": { + "name": "Set Replacement Character", + "tooltip": "Sets the replacement character used to hide password text" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "Replacement Character", + "tooltip": "The decimal code point of the replacement character used to hide password text" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiTooltipBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiTooltipBus.names new file mode 100644 index 0000000000..65fa7736e2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiTooltipBus.names @@ -0,0 +1,62 @@ +{ + "entries": [ + { + "key": "UiTooltipBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiTooltipBus", + "category": "UI" + }, + "methods": [ + { + "key": "GetText", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Text" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Text is invoked" + }, + "details": { + "name": "Get Text", + "tooltip": "Gets the tooltip text" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "SetText", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Text" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Text is invoked" + }, + "details": { + "name": "Set Text", + "tooltip": "Sets the tooltip text" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "Text", + "tooltip": "The tooltip text" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiTooltipDisplayBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiTooltipDisplayBus.names new file mode 100644 index 0000000000..ddf95a0888 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiTooltipDisplayBus.names @@ -0,0 +1,389 @@ +{ + "entries": [ + { + "key": "UiTooltipDisplayBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiTooltipDisplayBus", + "category": "UI" + }, + "methods": [ + { + "key": "GetAutoSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Auto Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Auto Size is invoked" + }, + "details": { + "name": "Get Auto Size", + "tooltip": "Returns whether the tooltip display element should be resized so that the text element size matches the size of the string" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetTextEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Text Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Text Entity is invoked" + }, + "details": { + "name": "Get Text Entity", + "tooltip": "Gets the text element that is used for resizing" + }, + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetDelayTime", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Delay Time" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Delay Time is invoked" + }, + "details": { + "name": "Get Delay Time", + "tooltip": "Gets the amount of time to wait before showing the tooltip display element after hover start" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetDelayTime", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Delay Time" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Delay Time is invoked" + }, + "details": { + "name": "Set Delay Time", + "tooltip": "Sets the amount of time to wait before showing the tooltip display element after hover start" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Delay Time", + "tooltip": "The amount of time to wait in seconds before showing the tooltip display element after hover start" + } + } + ] + }, + { + "key": "SetDisplayTime", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Display Time" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Display Time is invoked" + }, + "details": { + "name": "Set Display Time", + "tooltip": "Sets the amount of time the tooltip display element is to remain visible" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Display Time", + "tooltip": "The amount of time in seconds the tooltip display element is to remain visible" + } + } + ] + }, + { + "key": "SetOffset", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Offset" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Offset is invoked" + }, + "details": { + "name": "Set Offset", + "tooltip": "Sets the offset from the tooltip display element's pivot to the mouse position" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Offset", + "tooltip": "The offset from the tooltip display element's pivot to the mouse position" + } + } + ] + }, + { + "key": "GetOffset", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Offset" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Offset is invoked" + }, + "details": { + "name": "Get Offset", + "tooltip": "Gets the offset from the tooltip display element's pivot to the mouse position" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "GetAutoPositionMode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Auto Position Mode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Auto Position Mode is invoked" + }, + "details": { + "name": "Get Auto Position Mode", + "tooltip": "Gets the auto position mode" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetAutoPosition", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Auto Position" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Auto Position is invoked" + }, + "details": { + "name": "Set Auto Position", + "tooltip": "Sets whether the tooltip display element is automatically positioned" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Auto Position", + "tooltip": "Indicates whether the tooltip display element is automatically positioned" + } + } + ] + }, + { + "key": "SetAutoSize", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Auto Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Auto Size is invoked" + }, + "details": { + "name": "Set Auto Size", + "tooltip": "Sets whether the tooltip display element should be resized so that the text element size matches the size of the string" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Auto Size", + "tooltip": "Indicates whether the tooltip display element should be resized so that the text element size matches the size of the string" + } + } + ] + }, + { + "key": "GetAutoPosition", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Auto Position" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Auto Position is invoked" + }, + "details": { + "name": "Get Auto Position", + "tooltip": "Returns whether the tooltip display element is automatically positioned" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetTextEntity", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Text Entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Text Entity is invoked" + }, + "details": { + "name": "Set Text Entity", + "tooltip": "Sets the text element that is used for resizing" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "Text EntityID", + "tooltip": "The text element that is used for resizing" + } + } + ] + }, + { + "key": "GetDisplayTime", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Display Time" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Display Time is invoked" + }, + "details": { + "name": "Get Display Time", + "tooltip": "Gets the amount of time the tooltip display element is to remain visible" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetTriggerMode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTriggerMode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTriggerMode is invoked" + }, + "details": { + "name": "GetTriggerMode" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetTriggerMode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetTriggerMode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetTriggerMode is invoked" + }, + "details": { + "name": "SetTriggerMode" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetAutoPositionMode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Auto Position Mode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Auto Position Mode is invoked" + }, + "details": { + "name": "Set Auto Position Mode", + "tooltip": "Sets the auto position mode" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Auto Position Mode", + "tooltip": "The auto position mode (0=Offset From Mouse, 1=Offset From Element)" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiTransform2dBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiTransform2dBus.names new file mode 100644 index 0000000000..112788b514 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiTransform2dBus.names @@ -0,0 +1,241 @@ +{ + "entries": [ + { + "key": "UiTransform2dBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiTransform2dBus", + "category": "UI" + }, + "methods": [ + { + "key": "GetLocalHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Local Height" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Local Height is invoked" + }, + "details": { + "name": "Get Local Height", + "tooltip": "Gets the height of the element based off its offsets" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetLocalHeight", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Local Height" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Local Height is invoked" + }, + "details": { + "name": "Set Local Height", + "tooltip": "Modifes the top and bottom offsets relative to the element's anchors" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Local Height", + "tooltip": "The height of the element based off its offsets" + } + } + ] + }, + { + "key": "GetLocalWidth", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Local Width" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Local Width is invoked" + }, + "details": { + "name": "Get Local Width", + "tooltip": "Gets the width of the element based off its offsets" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "SetPivotAndAdjustOffsets", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Pivot And Adjust Offsets" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Pivot And Adjust Offsets is invoked" + }, + "details": { + "name": "Set Pivot And Adjust Offsets", + "tooltip": "Sets the pivot and adjusts the offsets so that the element stays in the same place" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Pivot", + "tooltip": "The pivot" + } + } + ] + }, + { + "key": "SetLocalWidth", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Local Width" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Local Width is invoked" + }, + "details": { + "name": "Set Local Width", + "tooltip": "Modifies the left and right offsets relative to the element's anchors" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Local Width", + "tooltip": "The width of the element based off its offsets" + } + } + ] + }, + { + "key": "GetOffsets", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Offsets" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Offsets is invoked" + }, + "details": { + "name": "Get Offsets", + "tooltip": "Gets the offsets" + }, + "results": [ + { + "typeid": "{F681BA9D-245C-4630-B20E-05DD752FAD57}", + "details": { + "name": "Offsets" + } + } + ] + }, + { + "key": "SetAnchors", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Anchors" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Anchors is invoked" + }, + "details": { + "name": "Set Anchors", + "tooltip": "Sets the anchors" + }, + "params": [ + { + "typeid": "{65D4346C-FB16-4CB0-9BDC-1185B122C4A9}", + "details": { + "name": "Anchors", + "tooltip": "The anchors" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Adjust Offsets", + "tooltip": "Indicates whether the offsets are adjusted to keep the rectangle in the same position" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "Allow Push", + "tooltip": "Only takes effect if the anchors are invalid. If true, when an anchor is changed to overlap the anchor opposite it, the opposite anchor moves" + } + } + ] + }, + { + "key": "GetAnchors", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Anchors" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Anchors is invoked" + }, + "details": { + "name": "Get Anchors", + "tooltip": "Gets the anchors" + }, + "results": [ + { + "typeid": "{65D4346C-FB16-4CB0-9BDC-1185B122C4A9}", + "details": { + "name": "Anchors" + } + } + ] + }, + { + "key": "SetOffsets", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Offsets" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Offsets is invoked" + }, + "details": { + "name": "Set Offsets", + "tooltip": "Sets the offsets" + }, + "params": [ + { + "typeid": "{F681BA9D-245C-4630-B20E-05DD752FAD57}", + "details": { + "name": "Offsets", + "tooltip": "The offsets" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiTransformBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiTransformBus.names new file mode 100644 index 0000000000..6628f2c84c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/UiTransformBus.names @@ -0,0 +1,698 @@ +{ + "entries": [ + { + "key": "UiTransformBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "UiTransformBus", + "category": "UI" + }, + "methods": [ + { + "key": "GetPivotY", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Pivot Y" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Pivot Y is invoked" + }, + "details": { + "name": "Get Pivot Y", + "tooltip": "Gets the Y value of the pivot point" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetScaleX", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Scale X" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Scale X is invoked" + }, + "details": { + "name": "Get Scale X", + "tooltip": "Gets the X value of the scale" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetScale", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Scale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Scale is invoked" + }, + "details": { + "name": "Get Scale", + "tooltip": "Gets the scale" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "SetLocalPositionX", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Local Position X" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Local Position X is invoked" + }, + "details": { + "name": "Set Local Position X", + "tooltip": "Sets the X position of the element relative to the center of the element's anchors" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "X Local Position", + "tooltip": "The X position of the element relative to the center of the element's anchors" + } + } + ] + }, + { + "key": "SetScaleX", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Scale X" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Scale X is invoked" + }, + "details": { + "name": "Set Scale X", + "tooltip": "Sets the X value of the scale" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "X Scale", + "tooltip": "The X value of the scale" + } + } + ] + }, + { + "key": "SetZRotation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Z Rotation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Z Rotation is invoked" + }, + "details": { + "name": "Set Z Rotation", + "tooltip": "Sets the rotation about the z-axis" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Z Rotation", + "tooltip": "The rotation about the z-axis" + } + } + ] + }, + { + "key": "GetScaleToDeviceMode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Scale To Device Mode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Scale To Device Mode is invoked" + }, + "details": { + "name": "Get Scale To Device Mode", + "tooltip": "Returns how the element and all its children are scaled to allow for the difference between the authored canvas size and the actual viewport size" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "SetPivot", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Pivot" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Pivot is invoked" + }, + "details": { + "name": "Set Pivot", + "tooltip": "Sets the pivot point" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Pivot", + "tooltip": "The pivot point" + } + } + ] + }, + { + "key": "GetScaleY", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Scale Y" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Scale Y is invoked" + }, + "details": { + "name": "Get Scale Y", + "tooltip": "Gets the Y value of the scale" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "MoveLocalPositionBy", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Move Local Position By" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Move Local Position By is invoked" + }, + "details": { + "name": "Move Local Position By", + "tooltip": "Moves the element relative to the center of the element's anchors" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Offset", + "tooltip": "The amount to move the local position" + } + } + ] + }, + { + "key": "SetLocalPositionY", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Local Position Y" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Local Position Y is invoked" + }, + "details": { + "name": "Set Local Position Y", + "tooltip": "Sets the Y position of the element relative to the center of the element's anchors" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Y Local Position", + "tooltip": "The Y position of the element relative to the center of the element's anchors" + } + } + ] + }, + { + "key": "SetViewportPosition", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Viewport Position" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Viewport Position is invoked" + }, + "details": { + "name": "Set Viewport Position", + "tooltip": "Sets the position of the element in viewport space" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Position", + "tooltip": "The position of the element in viewport space" + } + } + ] + }, + { + "key": "SetScaleToDeviceMode", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Scale To Device Mode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Scale To Device Mode is invoked" + }, + "details": { + "name": "Set Scale To Device Mode", + "tooltip": "Sets how the element and all its children should be scaled to allow for the difference between the authored canvas size and the actual viewport size" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Scale to Device Mode", + "tooltip": "Indicates how the element and all its children are scaled to allow for the difference between the authored canvas size and the actual viewport size (0=None, 1=Scale to fit (uniformly), 2=Scale to fill (uniformly), 3=Scale to fit X (uniformly), 4=Scale to fit Y (uniformly), 5=Stretch to fill (non-uniformly), 6=Stretch to fit X (non-uniformly), 7=Stretch to fit Y (non-uniformly))" + } + } + ] + }, + { + "key": "GetLocalPositionX", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Local Position X" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Local Position X is invoked" + }, + "details": { + "name": "Get Local Position X", + "tooltip": "Gets the X position of the element relative to the center of the element's anchors" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "MoveCanvasPositionBy", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Move Canvas Position By" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Move Canvas Position By is invoked" + }, + "details": { + "name": "Move Canvas Position By", + "tooltip": "Moves the element in canvas space" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Offset", + "tooltip": "The amount to move the canvas position" + } + } + ] + }, + { + "key": "SetPivotX", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Pivot X" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Pivot X is invoked" + }, + "details": { + "name": "Set Pivot X", + "tooltip": "Sets the X value of the pivot point" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "X Pivot", + "tooltip": "The X value of the pivot point" + } + } + ] + }, + { + "key": "MoveViewportPositionBy", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Move Viewport Position By" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Move Viewport Position By is invoked" + }, + "details": { + "name": "Move Viewport Position By", + "tooltip": "Moves the element in viewport space" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Offset", + "tooltip": "The amount to move the viewport position" + } + } + ] + }, + { + "key": "SetPivotY", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Pivot Y" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Pivot Y is invoked" + }, + "details": { + "name": "Set Pivot Y", + "tooltip": "Sets the Y value of the pivot point" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Y Pivot", + "tooltip": "The Y value of the pivot point" + } + } + ] + }, + { + "key": "GetViewportPosition", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Viewport Position" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Viewport Position is invoked" + }, + "details": { + "name": "Get Viewport Position", + "tooltip": "Gets the position of the element in viewport space" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "SetScale", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Scale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Scale is invoked" + }, + "details": { + "name": "Set Scale", + "tooltip": "Sets the scale" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Scale", + "tooltip": "The scale" + } + } + ] + }, + { + "key": "SetLocalPosition", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Local Position" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Local Position is invoked" + }, + "details": { + "name": "Set Local Position", + "tooltip": "Sets the position of the element relative to the center of the element's anchors" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Local Position", + "tooltip": "The position of the element relative to the center of the element's anchors" + } + } + ] + }, + { + "key": "GetCanvasPosition", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Canvas Position" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Canvas Position is invoked" + }, + "details": { + "name": "Get Canvas Position", + "tooltip": "Gets the position of the element in canvas space" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "GetPivotX", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Pivot X" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Pivot X is invoked" + }, + "details": { + "name": "Get Pivot X", + "tooltip": "Gets the X value of the pivot point" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetZRotation", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Z Rotation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Z Rotation is invoked" + }, + "details": { + "name": "Get Z Rotation", + "tooltip": "Gets the rotation about the z-axis" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + }, + { + "key": "GetLocalPosition", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Local Position" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Local Position is invoked" + }, + "details": { + "name": "Get Local Position", + "tooltip": "Gets the position of the element relative to the center of the element's anchors" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "SetScaleY", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Scale Y" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Scale Y is invoked" + }, + "details": { + "name": "Set Scale Y", + "tooltip": "Sets the Y value of the scale" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "Y Scale", + "tooltip": "The Y value of the scale" + } + } + ] + }, + { + "key": "GetPivot", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Pivot" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Pivot is invoked" + }, + "details": { + "name": "Get Pivot", + "tooltip": "Gets the pivot point" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "SetCanvasPosition", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Set Canvas Position" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Set Canvas Position is invoked" + }, + "details": { + "name": "Set Canvas Position", + "tooltip": "Sets the position of the element in canvas space" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Position", + "tooltip": "The position of the element in canvas space" + } + } + ] + }, + { + "key": "GetLocalPositionY", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Local Position Y" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Local Position Y is invoked" + }, + "details": { + "name": "Get Local Position Y", + "tooltip": "Gets the Y position of the element relative to the center of the element's anchors" + }, + "results": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ViewportRequestBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ViewportRequestBus.names new file mode 100644 index 0000000000..56ea2c0882 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/ViewportRequestBus.names @@ -0,0 +1,146 @@ +{ + "entries": [ + { + "key": "ViewportRequestBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "ViewportRequestBus" + }, + "methods": [ + { + "key": "SetCameraTransform", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetCameraTransform" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetCameraTransform is invoked" + }, + "details": { + "name": "SetCameraTransform" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "GetCameraProjectionMatrix", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCameraProjectionMatrix" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCameraProjectionMatrix is invoked" + }, + "details": { + "name": "GetCameraProjectionMatrix" + }, + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "SetCameraViewMatrix", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetCameraViewMatrix" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetCameraViewMatrix is invoked" + }, + "details": { + "name": "SetCameraViewMatrix" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "GetCameraViewMatrix", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCameraViewMatrix" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCameraViewMatrix is invoked" + }, + "details": { + "name": "GetCameraViewMatrix" + }, + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "SetCameraProjectionMatrix", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetCameraProjectionMatrix" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetCameraProjectionMatrix is invoked" + }, + "details": { + "name": "SetCameraProjectionMatrix" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "GetCameraTransform", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetCameraTransform" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetCameraTransform is invoked" + }, + "details": { + "name": "GetCameraTransform" + }, + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/WindRequestsBus.names b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/WindRequestsBus.names new file mode 100644 index 0000000000..3102c94ffb --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/EBus/Senders/WindRequestsBus.names @@ -0,0 +1,96 @@ +{ + "entries": [ + { + "key": "WindRequestsBus", + "context": "EBusSender", + "variant": "", + "details": { + "name": "Wind" + }, + "methods": [ + { + "key": "GetGlobalWind", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Global Wind" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Global Wind is invoked" + }, + "details": { + "name": "Get Global Wind" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Global Wind Direction" + } + } + ] + }, + { + "key": "GetWindAtPosition", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Wind At Position" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Wind At Position is invoked" + }, + "details": { + "name": "Get Wind At Position" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Position" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Wind Direction" + } + } + ] + }, + { + "key": "GetWindInsideAabb", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get Wind Inside AABB" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get Wind Inside AABB is invoked" + }, + "details": { + "name": "Get Wind Inside AABB" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "AABB" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Wind Direction" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/CreateBoxCastRequest.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/CreateBoxCastRequest.names new file mode 100644 index 0000000000..6dc3d8f8d4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/CreateBoxCastRequest.names @@ -0,0 +1,77 @@ +{ + "entries": [ + { + "key": "CreateBoxCastRequest", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "CreateBoxCastRequest", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CreateBoxCastRequest" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CreateBoxCastRequest is invoked" + }, + "details": { + "name": "CreateBoxCastRequest", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "unsigned char" + } + }, + { + "typeid": "{E6DA080B-7ED1-4135-A78C-A6A5E495A43E}", + "details": { + "name": "CollisionGroup" + } + } + ], + "results": [ + { + "typeid": "{52F6C536-92F6-4C05-983D-0A74800AE56D}", + "details": { + "name": "ShapeCastRequest" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/CreateBoxOverlapRequest.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/CreateBoxOverlapRequest.names new file mode 100644 index 0000000000..35928f8446 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/CreateBoxOverlapRequest.names @@ -0,0 +1,53 @@ +{ + "entries": [ + { + "key": "CreateBoxOverlapRequest", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "CreateBoxOverlapRequest", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CreateBoxOverlapRequest" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CreateBoxOverlapRequest is invoked" + }, + "details": { + "name": "CreateBoxOverlapRequest", + "category": "Other" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + } + ], + "results": [ + { + "typeid": "{3DC986C2-316B-4C54-A0A6-8ABBB8ABCC4A}", + "details": { + "name": "OverlapRequest" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/CreateCapsuleCastRequest.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/CreateCapsuleCastRequest.names new file mode 100644 index 0000000000..ef8e84f3ea --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/CreateCapsuleCastRequest.names @@ -0,0 +1,83 @@ +{ + "entries": [ + { + "key": "CreateCapsuleCastRequest", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "CreateCapsuleCastRequest", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CreateCapsuleCastRequest" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CreateCapsuleCastRequest is invoked" + }, + "details": { + "name": "CreateCapsuleCastRequest", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "unsigned char" + } + }, + { + "typeid": "{E6DA080B-7ED1-4135-A78C-A6A5E495A43E}", + "details": { + "name": "CollisionGroup" + } + } + ], + "results": [ + { + "typeid": "{52F6C536-92F6-4C05-983D-0A74800AE56D}", + "details": { + "name": "ShapeCastRequest" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/CreateCapsuleOverlapRequest.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/CreateCapsuleOverlapRequest.names new file mode 100644 index 0000000000..d78d1c9063 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/CreateCapsuleOverlapRequest.names @@ -0,0 +1,59 @@ +{ + "entries": [ + { + "key": "CreateCapsuleOverlapRequest", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "CreateCapsuleOverlapRequest", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CreateCapsuleOverlapRequest" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CreateCapsuleOverlapRequest is invoked" + }, + "details": { + "name": "CreateCapsuleOverlapRequest", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + } + ], + "results": [ + { + "typeid": "{3DC986C2-316B-4C54-A0A6-8ABBB8ABCC4A}", + "details": { + "name": "OverlapRequest" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/CreateSphereCastRequest.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/CreateSphereCastRequest.names new file mode 100644 index 0000000000..884dbf070e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/CreateSphereCastRequest.names @@ -0,0 +1,77 @@ +{ + "entries": [ + { + "key": "CreateSphereCastRequest", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "CreateSphereCastRequest", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CreateSphereCastRequest" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CreateSphereCastRequest is invoked" + }, + "details": { + "name": "CreateSphereCastRequest", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "const Vector3&" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}", + "details": { + "name": "unsigned char" + } + }, + { + "typeid": "{E6DA080B-7ED1-4135-A78C-A6A5E495A43E}", + "details": { + "name": "CollisionGroup" + } + } + ], + "results": [ + { + "typeid": "{52F6C536-92F6-4C05-983D-0A74800AE56D}", + "details": { + "name": "ShapeCastRequest" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/CreateSphereOverlapRequest.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/CreateSphereOverlapRequest.names new file mode 100644 index 0000000000..eaf91c144a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/CreateSphereOverlapRequest.names @@ -0,0 +1,53 @@ +{ + "entries": [ + { + "key": "CreateSphereOverlapRequest", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "CreateSphereOverlapRequest", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CreateSphereOverlapRequest" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CreateSphereOverlapRequest is invoked" + }, + "details": { + "name": "CreateSphereOverlapRequest", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "const Transform&" + } + } + ], + "results": [ + { + "typeid": "{3DC986C2-316B-4C54-A0A6-8ABBB8ABCC4A}", + "details": { + "name": "OverlapRequest" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/GetPhysicsSystem.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/GetPhysicsSystem.names new file mode 100644 index 0000000000..d2b64d5071 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/GetPhysicsSystem.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "GetPhysicsSystem", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "GetPhysicsSystem", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPhysicsSystem" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPhysicsSystem is invoked" + }, + "details": { + "name": "GetPhysicsSystem", + "category": "Other" + }, + "results": [ + { + "typeid": "{B6F4D92A-061B-4CB3-AAB5-984B599A53AE}", + "details": { + "name": "SystemInterface*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/SaveShaderVariantListSourceData.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/SaveShaderVariantListSourceData.names new file mode 100644 index 0000000000..1301717ba3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/SaveShaderVariantListSourceData.names @@ -0,0 +1,53 @@ +{ + "entries": [ + { + "key": "SaveShaderVariantListSourceData", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "SaveShaderVariantListSourceData", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SaveShaderVariantListSourceData" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SaveShaderVariantListSourceData is invoked" + }, + "details": { + "name": "SaveShaderVariantListSourceData", + "category": "Other" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + }, + { + "typeid": "{F8679938-6D3F-47CC-A078-3D6EC0011366}", + "details": { + "name": "const AZ::RPI::ShaderVariantListSourceData&" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/SettingsRegistry.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/SettingsRegistry.names new file mode 100644 index 0000000000..373047e735 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/SettingsRegistry.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "SettingsRegistry", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "SettingsRegistry", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SettingsRegistry" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SettingsRegistry is invoked" + }, + "details": { + "name": "SettingsRegistry", + "category": "Other" + }, + "results": [ + { + "typeid": "{795C80A0-D243-473B-972A-C32CA487BAA5}", + "details": { + "name": "SettingsRegistryScriptProxy" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/Terminate.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/Terminate.names new file mode 100644 index 0000000000..d36c4cf37f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/Terminate.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "Terminate", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "Terminate", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Terminate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Terminate is invoked" + }, + "details": { + "name": "Terminate", + "category": "Other" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/add_layer_node.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/add_layer_node.names new file mode 100644 index 0000000000..bf4e5fcbe9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/add_layer_node.names @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "key": "add_layer_node", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "add_layer_node", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke add_layer_node" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after add_layer_node is invoked" + }, + "details": { + "name": "add_layer_node", + "category": "Other" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/add_node.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/add_node.names new file mode 100644 index 0000000000..8f52238b58 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/add_node.names @@ -0,0 +1,45 @@ +{ + "entries": [ + { + "key": "add_node", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "add_node", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke add_node" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after add_node is invoked" + }, + "details": { + "name": "add_node", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/add_selected_entities.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/add_selected_entities.names new file mode 100644 index 0000000000..926e5adef6 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/add_selected_entities.names @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "key": "add_selected_entities", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "add_selected_entities", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke add_selected_entities" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after add_selected_entities is invoked" + }, + "details": { + "name": "add_selected_entities", + "category": "Other" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/add_track.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/add_track.names new file mode 100644 index 0000000000..c048cbf6fa --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/add_track.names @@ -0,0 +1,51 @@ +{ + "entries": [ + { + "key": "add_track", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "add_track", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke add_track" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after add_track is invoked" + }, + "details": { + "name": "add_track", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/attach_debugger.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/attach_debugger.names new file mode 100644 index 0000000000..398b3ec25a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/attach_debugger.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "attach_debugger", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "attach_debugger", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke attach_debugger" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after attach_debugger is invoked" + }, + "details": { + "name": "attach_debugger", + "category": "Other" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/bind_viewport.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/bind_viewport.names new file mode 100644 index 0000000000..a09ec96fd9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/bind_viewport.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "bind_viewport", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "bind_viewport", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke bind_viewport" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after bind_viewport is invoked" + }, + "details": { + "name": "bind_viewport", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/clear_selection.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/clear_selection.names new file mode 100644 index 0000000000..8c8d8318c5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/clear_selection.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "clear_selection", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "clear_selection", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear_selection" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear_selection is invoked" + }, + "details": { + "name": "clear_selection", + "category": "Other" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/close_pane.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/close_pane.names new file mode 100644 index 0000000000..7fc51967b2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/close_pane.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "close_pane", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "close_pane", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke close_pane" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after close_pane is invoked" + }, + "details": { + "name": "close_pane", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/combo_box.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/combo_box.names new file mode 100644 index 0000000000..7ce138a740 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/combo_box.names @@ -0,0 +1,59 @@ +{ + "entries": [ + { + "key": "combo_box", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "combo_box", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke combo_box" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after combo_box is invoked" + }, + "details": { + "name": "combo_box", + "category": "Other" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + }, + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector, allocator>, allocator>" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/crash.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/crash.names new file mode 100644 index 0000000000..9708005711 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/crash.names @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "key": "crash", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "crash", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke crash" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after crash is invoked" + }, + "details": { + "name": "crash", + "category": "Other" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/create_level.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/create_level.names new file mode 100644 index 0000000000..4e75ca5197 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/create_level.names @@ -0,0 +1,65 @@ +{ + "entries": [ + { + "key": "create_level", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "create_level", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke create_level" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after create_level is invoked" + }, + "details": { + "name": "create_level", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/create_level_no_prompt.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/create_level_no_prompt.names new file mode 100644 index 0000000000..1935a970d1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/create_level_no_prompt.names @@ -0,0 +1,71 @@ +{ + "entries": [ + { + "key": "create_level_no_prompt", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "create_level_no_prompt", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke create_level_no_prompt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after create_level_no_prompt is invoked" + }, + "details": { + "name": "create_level_no_prompt", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/delete_node.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/delete_node.names new file mode 100644 index 0000000000..7c621e25e9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/delete_node.names @@ -0,0 +1,45 @@ +{ + "entries": [ + { + "key": "delete_node", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "delete_node", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke delete_node" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after delete_node is invoked" + }, + "details": { + "name": "delete_node", + "category": "Other" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/delete_object.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/delete_object.names new file mode 100644 index 0000000000..b134e71fec --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/delete_object.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "delete_object", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "delete_object", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke delete_object" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after delete_object is invoked" + }, + "details": { + "name": "delete_object", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/delete_selected.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/delete_selected.names new file mode 100644 index 0000000000..1da4b2cb26 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/delete_selected.names @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "key": "delete_selected", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "delete_selected", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke delete_selected" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after delete_selected is invoked" + }, + "details": { + "name": "delete_selected", + "category": "Other" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/delete_sequence.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/delete_sequence.names new file mode 100644 index 0000000000..bdc0052f2a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/delete_sequence.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "delete_sequence", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "delete_sequence", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke delete_sequence" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after delete_sequence is invoked" + }, + "details": { + "name": "delete_sequence", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/delete_track.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/delete_track.names new file mode 100644 index 0000000000..135c53ad30 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/delete_track.names @@ -0,0 +1,57 @@ +{ + "entries": [ + { + "key": "delete_track", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "delete_track", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke delete_track" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after delete_track is invoked" + }, + "details": { + "name": "delete_track", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/draw_label.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/draw_label.names new file mode 100644 index 0000000000..ae1d5befe5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/draw_label.names @@ -0,0 +1,81 @@ +{ + "entries": [ + { + "key": "draw_label", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "draw_label", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke draw_label" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after draw_label is invoked" + }, + "details": { + "name": "draw_label", + "category": "Other" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/dump_exposed_classes.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/dump_exposed_classes.names new file mode 100644 index 0000000000..5716162f4f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/dump_exposed_classes.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "dump_exposed_classes", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "dump_exposed_classes", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke dump_exposed_classes" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after dump_exposed_classes is invoked" + }, + "details": { + "name": "dump_exposed_classes", + "category": "Other" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/edit_box.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/edit_box.names new file mode 100644 index 0000000000..0a74f98f8d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/edit_box.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "edit_box", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "edit_box", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke edit_box" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after edit_box is invoked" + }, + "details": { + "name": "edit_box", + "category": "Other" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/edit_box_check_data_type.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/edit_box_check_data_type.names new file mode 100644 index 0000000000..52ff4b7b28 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/edit_box_check_data_type.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "edit_box_check_data_type", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "edit_box_check_data_type", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke edit_box_check_data_type" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after edit_box_check_data_type is invoked" + }, + "details": { + "name": "edit_box_check_data_type", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ], + "results": [ + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "any" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/enable_for_all.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/enable_for_all.names new file mode 100644 index 0000000000..09e4f5c426 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/enable_for_all.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "enable_for_all", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "enable_for_all", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke enable_for_all" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after enable_for_all is invoked" + }, + "details": { + "name": "enable_for_all", + "category": "Other" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/enter_game_mode.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/enter_game_mode.names new file mode 100644 index 0000000000..52e02faa81 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/enter_game_mode.names @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "key": "enter_game_mode", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "enter_game_mode", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke enter_game_mode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after enter_game_mode is invoked" + }, + "details": { + "name": "enter_game_mode", + "category": "Other" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/enter_simulation_mode.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/enter_simulation_mode.names new file mode 100644 index 0000000000..b5b97de500 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/enter_simulation_mode.names @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "key": "enter_simulation_mode", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "enter_simulation_mode", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke enter_simulation_mode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after enter_simulation_mode is invoked" + }, + "details": { + "name": "enter_simulation_mode", + "category": "Other" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/execute_command.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/execute_command.names new file mode 100644 index 0000000000..3558aa7cdb --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/execute_command.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "execute_command", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "execute_command", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke execute_command" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after execute_command is invoked" + }, + "details": { + "name": "execute_command", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/exit.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/exit.names new file mode 100644 index 0000000000..b494190ca9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/exit.names @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "key": "exit", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "exit", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke exit" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after exit is invoked" + }, + "details": { + "name": "exit", + "category": "Other" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/exit_game_mode.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/exit_game_mode.names new file mode 100644 index 0000000000..61ece2079d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/exit_game_mode.names @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "key": "exit_game_mode", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "exit_game_mode", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke exit_game_mode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after exit_game_mode is invoked" + }, + "details": { + "name": "exit_game_mode", + "category": "Other" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/exit_no_prompt.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/exit_no_prompt.names new file mode 100644 index 0000000000..c869bb6d06 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/exit_no_prompt.names @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "key": "exit_no_prompt", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "exit_no_prompt", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke exit_no_prompt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after exit_no_prompt is invoked" + }, + "details": { + "name": "exit_no_prompt", + "category": "Other" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/exit_simulation_mode.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/exit_simulation_mode.names new file mode 100644 index 0000000000..e8b6419c7e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/exit_simulation_mode.names @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "key": "exit_simulation_mode", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "exit_simulation_mode", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke exit_simulation_mode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after exit_simulation_mode is invoked" + }, + "details": { + "name": "exit_simulation_mode", + "category": "Other" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/export_to_engine.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/export_to_engine.names new file mode 100644 index 0000000000..8ada50e7a7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/export_to_engine.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "export_to_engine", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "export_to_engine", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke export_to_engine" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after export_to_engine is invoked" + }, + "details": { + "name": "export_to_engine", + "category": "Other" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/find_editor_entity.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/find_editor_entity.names new file mode 100644 index 0000000000..c9ec658126 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/find_editor_entity.names @@ -0,0 +1,48 @@ +{ + "entries": [ + { + "key": "find_editor_entity", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "find_editor_entity", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke find_editor_entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after find_editor_entity is invoked" + }, + "details": { + "name": "find_editor_entity", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/find_game_entity.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/find_game_entity.names new file mode 100644 index 0000000000..bf1fe91241 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/find_game_entity.names @@ -0,0 +1,48 @@ +{ + "entries": [ + { + "key": "find_game_entity", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "find_game_entity", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke find_game_entity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after find_game_entity is invoked" + }, + "details": { + "name": "find_game_entity", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/freeze_object.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/freeze_object.names new file mode 100644 index 0000000000..c413c4a4c1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/freeze_object.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "freeze_object", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "freeze_object", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke freeze_object" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after freeze_object is invoked" + }, + "details": { + "name": "freeze_object", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_active_viewport.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_active_viewport.names new file mode 100644 index 0000000000..23d8096ac1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_active_viewport.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "get_active_viewport", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_active_viewport", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_active_viewport" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_active_viewport is invoked" + }, + "details": { + "name": "get_active_viewport", + "category": "Other" + }, + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_all_objects.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_all_objects.names new file mode 100644 index 0000000000..b7686d1760 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_all_objects.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "get_all_objects", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_all_objects", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_all_objects" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_all_objects is invoked" + }, + "details": { + "name": "get_all_objects", + "category": "Other" + }, + "results": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector, allocator>, allocator>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_axis_constraint.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_axis_constraint.names new file mode 100644 index 0000000000..d9073b1058 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_axis_constraint.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "get_axis_constraint", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_axis_constraint", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_axis_constraint" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_axis_constraint is invoked" + }, + "details": { + "name": "get_axis_constraint", + "category": "Other" + }, + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_config_platform.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_config_platform.names new file mode 100644 index 0000000000..4b0e8ac35b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_config_platform.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "get_config_platform", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_config_platform", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_config_platform" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_config_platform is invoked" + }, + "details": { + "name": "get_config_platform", + "category": "Other" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_config_spec.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_config_spec.names new file mode 100644 index 0000000000..9dc53f4507 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_config_spec.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "get_config_spec", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_config_spec", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_config_spec" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_config_spec is invoked" + }, + "details": { + "name": "get_config_spec", + "category": "Other" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_current_level_name.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_current_level_name.names new file mode 100644 index 0000000000..365cba6b9e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_current_level_name.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "get_current_level_name", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_current_level_name", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_current_level_name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_current_level_name is invoked" + }, + "details": { + "name": "get_current_level_name", + "category": "Other" + }, + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_current_level_path.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_current_level_path.names new file mode 100644 index 0000000000..82b407a8fe --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_current_level_path.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "get_current_level_path", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_current_level_path", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_current_level_path" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_current_level_path is invoked" + }, + "details": { + "name": "get_current_level_path", + "category": "Other" + }, + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_current_view_position.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_current_view_position.names new file mode 100644 index 0000000000..a5e07d14d3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_current_view_position.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "get_current_view_position", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_current_view_position", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_current_view_position" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_current_view_position is invoked" + }, + "details": { + "name": "get_current_view_position", + "category": "Other" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_current_view_rotation.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_current_view_rotation.names new file mode 100644 index 0000000000..6be7bff047 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_current_view_rotation.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "get_current_view_rotation", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_current_view_rotation", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_current_view_rotation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_current_view_rotation is invoked" + }, + "details": { + "name": "get_current_view_rotation", + "category": "Other" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_cvar.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_cvar.names new file mode 100644 index 0000000000..22d8fa62b4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_cvar.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "get_cvar", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_cvar", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_cvar" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_cvar is invoked" + }, + "details": { + "name": "get_cvar", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ], + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_file_alias.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_file_alias.names new file mode 100644 index 0000000000..9a1d048865 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_file_alias.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "get_file_alias", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_file_alias", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_file_alias" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_file_alias is invoked" + }, + "details": { + "name": "get_file_alias", + "category": "Other" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_game_folder.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_game_folder.names new file mode 100644 index 0000000000..b2280925ff --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_game_folder.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "get_game_folder", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_game_folder", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_game_folder" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_game_folder is invoked" + }, + "details": { + "name": "get_game_folder", + "category": "Other" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_interpolated_value.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_interpolated_value.names new file mode 100644 index 0000000000..3f5469407e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_interpolated_value.names @@ -0,0 +1,71 @@ +{ + "entries": [ + { + "key": "get_interpolated_value", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_interpolated_value", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_interpolated_value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_interpolated_value is invoked" + }, + "details": { + "name": "get_interpolated_value", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ], + "results": [ + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "any" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_key_value.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_key_value.names new file mode 100644 index 0000000000..69a7dcd7a4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_key_value.names @@ -0,0 +1,71 @@ +{ + "entries": [ + { + "key": "get_key_value", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_key_value", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_key_value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_key_value is invoked" + }, + "details": { + "name": "get_key_value", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ], + "results": [ + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "any" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_misc_editor_settings.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_misc_editor_settings.names new file mode 100644 index 0000000000..7759957362 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_misc_editor_settings.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "get_misc_editor_settings", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_misc_editor_settings", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_misc_editor_settings" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_misc_editor_settings is invoked" + }, + "details": { + "name": "get_misc_editor_settings", + "category": "Other" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_names_of_selected_objects.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_names_of_selected_objects.names new file mode 100644 index 0000000000..6343079ee3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_names_of_selected_objects.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "get_names_of_selected_objects", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_names_of_selected_objects", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_names_of_selected_objects" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_names_of_selected_objects is invoked" + }, + "details": { + "name": "get_names_of_selected_objects", + "category": "Other" + }, + "results": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector, allocator>, allocator>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_node_name.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_node_name.names new file mode 100644 index 0000000000..abc8bc12b3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_node_name.names @@ -0,0 +1,53 @@ +{ + "entries": [ + { + "key": "get_node_name", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_node_name", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_node_name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_node_name is invoked" + }, + "details": { + "name": "get_node_name", + "category": "Other" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_num_nodes.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_num_nodes.names new file mode 100644 index 0000000000..fea8d6d51e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_num_nodes.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "get_num_nodes", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_num_nodes", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_num_nodes" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_num_nodes is invoked" + }, + "details": { + "name": "get_num_nodes", + "category": "Other" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_num_selected.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_num_selected.names new file mode 100644 index 0000000000..cd260f6dc8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_num_selected.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "get_num_selected", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_num_selected", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_num_selected" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_num_selected is invoked" + }, + "details": { + "name": "get_num_selected", + "category": "Other" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_num_sequences.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_num_sequences.names new file mode 100644 index 0000000000..7101578f9d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_num_sequences.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "get_num_sequences", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_num_sequences", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_num_sequences" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_num_sequences is invoked" + }, + "details": { + "name": "get_num_sequences", + "category": "Other" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_num_track_keys.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_num_track_keys.names new file mode 100644 index 0000000000..06963345ee --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_num_track_keys.names @@ -0,0 +1,65 @@ +{ + "entries": [ + { + "key": "get_num_track_keys", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_num_track_keys", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_num_track_keys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_num_track_keys is invoked" + }, + "details": { + "name": "get_num_track_keys", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_pak_from_file.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_pak_from_file.names new file mode 100644 index 0000000000..828f298ed9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_pak_from_file.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "get_pak_from_file", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_pak_from_file", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_pak_from_file" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_pak_from_file is invoked" + }, + "details": { + "name": "get_pak_from_file", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_pane_class_names.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_pane_class_names.names new file mode 100644 index 0000000000..d4d90062e7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_pane_class_names.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "get_pane_class_names", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_pane_class_names", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_pane_class_names" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_pane_class_names is invoked" + }, + "details": { + "name": "get_pane_class_names", + "category": "Other" + }, + "results": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector, allocator>, allocator>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_position.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_position.names new file mode 100644 index 0000000000..9256be10cd --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_position.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "get_position", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_position", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_position" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_position is invoked" + }, + "details": { + "name": "get_position", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_rotation.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_rotation.names new file mode 100644 index 0000000000..9a0fc2c866 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_rotation.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "get_rotation", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_rotation", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_rotation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_rotation is invoked" + }, + "details": { + "name": "get_rotation", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_scale.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_scale.names new file mode 100644 index 0000000000..bca8c0935a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_scale.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "get_scale", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_scale", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_scale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_scale is invoked" + }, + "details": { + "name": "get_scale", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_selection_aabb.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_selection_aabb.names new file mode 100644 index 0000000000..8563f61cc9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_selection_aabb.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "get_selection_aabb", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_selection_aabb", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_selection_aabb" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_selection_aabb is invoked" + }, + "details": { + "name": "get_selection_aabb", + "category": "Other" + }, + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_selection_center.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_selection_center.names new file mode 100644 index 0000000000..9bd01010e4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_selection_center.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "get_selection_center", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_selection_center", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_selection_center" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_selection_center is invoked" + }, + "details": { + "name": "get_selection_center", + "category": "Other" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_sequence_name.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_sequence_name.names new file mode 100644 index 0000000000..3dbe9bc854 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_sequence_name.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "get_sequence_name", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_sequence_name", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_sequence_name" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_sequence_name is invoked" + }, + "details": { + "name": "get_sequence_name", + "category": "Other" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_sequence_time_range.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_sequence_time_range.names new file mode 100644 index 0000000000..ae8a229a75 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_sequence_time_range.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "get_sequence_time_range", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_sequence_time_range", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_sequence_time_range" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_sequence_time_range is invoked" + }, + "details": { + "name": "get_sequence_time_range", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ], + "results": [ + { + "typeid": "{515CF4CF-4992-4139-BDE5-42A887432B45}", + "details": { + "name": "Range" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_view_pane_layout.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_view_pane_layout.names new file mode 100644 index 0000000000..a149b94dd8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_view_pane_layout.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "get_view_pane_layout", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_view_pane_layout", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_view_pane_layout" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_view_pane_layout is invoked" + }, + "details": { + "name": "get_view_pane_layout", + "category": "Other" + }, + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_viewport_count.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_viewport_count.names new file mode 100644 index 0000000000..7b616139ee --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_viewport_count.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "get_viewport_count", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_viewport_count", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_viewport_count" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_viewport_count is invoked" + }, + "details": { + "name": "get_viewport_count", + "category": "Other" + }, + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_viewport_expansion_policy.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_viewport_expansion_policy.names new file mode 100644 index 0000000000..23d2dae3d3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_viewport_expansion_policy.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "get_viewport_expansion_policy", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_viewport_expansion_policy", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_viewport_expansion_policy" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_viewport_expansion_policy is invoked" + }, + "details": { + "name": "get_viewport_expansion_policy", + "category": "Other" + }, + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_viewport_size.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_viewport_size.names new file mode 100644 index 0000000000..33cc93441d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/get_viewport_size.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "get_viewport_size", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "get_viewport_size", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get_viewport_size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get_viewport_size is invoked" + }, + "details": { + "name": "get_viewport_size", + "category": "Other" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/hide_all_objects.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/hide_all_objects.names new file mode 100644 index 0000000000..8d5d77a78f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/hide_all_objects.names @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "key": "hide_all_objects", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "hide_all_objects", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke hide_all_objects" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after hide_all_objects is invoked" + }, + "details": { + "name": "hide_all_objects", + "category": "Other" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/hide_object.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/hide_object.names new file mode 100644 index 0000000000..f30f0a4e37 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/hide_object.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "hide_object", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "hide_object", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke hide_object" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after hide_object is invoked" + }, + "details": { + "name": "hide_object", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/idle_enable.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/idle_enable.names new file mode 100644 index 0000000000..8ab9d80d37 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/idle_enable.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "idle_enable", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "idle_enable", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke idle_enable" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after idle_enable is invoked" + }, + "details": { + "name": "idle_enable", + "category": "Other" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/idle_is_enabled.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/idle_is_enabled.names new file mode 100644 index 0000000000..35fccf8339 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/idle_is_enabled.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "idle_is_enabled", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "idle_is_enabled", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke idle_is_enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after idle_is_enabled is invoked" + }, + "details": { + "name": "idle_is_enabled", + "category": "Other" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/idle_wait.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/idle_wait.names new file mode 100644 index 0000000000..04574b306e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/idle_wait.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "idle_wait", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "idle_wait", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke idle_wait" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after idle_wait is invoked" + }, + "details": { + "name": "idle_wait", + "category": "Other" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/idle_wait_frames.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/idle_wait_frames.names new file mode 100644 index 0000000000..bbbb2e2d6c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/idle_wait_frames.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "idle_wait_frames", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "idle_wait_frames", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke idle_wait_frames" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after idle_wait_frames is invoked" + }, + "details": { + "name": "idle_wait_frames", + "category": "Other" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/is_helpers_shown.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/is_helpers_shown.names new file mode 100644 index 0000000000..7945c6f747 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/is_helpers_shown.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "is_helpers_shown", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "is_helpers_shown", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke is_helpers_shown" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after is_helpers_shown is invoked" + }, + "details": { + "name": "is_helpers_shown", + "category": "Other" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/is_idle_enabled.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/is_idle_enabled.names new file mode 100644 index 0000000000..82e2f26261 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/is_idle_enabled.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "is_idle_enabled", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "is_idle_enabled", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke is_idle_enabled" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after is_idle_enabled is invoked" + }, + "details": { + "name": "is_idle_enabled", + "category": "Other" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/is_in_game_mode.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/is_in_game_mode.names new file mode 100644 index 0000000000..c190c8f51a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/is_in_game_mode.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "is_in_game_mode", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "is_in_game_mode", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke is_in_game_mode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after is_in_game_mode is invoked" + }, + "details": { + "name": "is_in_game_mode", + "category": "Other" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/is_in_simulation_mode.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/is_in_simulation_mode.names new file mode 100644 index 0000000000..1cbf43acde --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/is_in_simulation_mode.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "is_in_simulation_mode", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "is_in_simulation_mode", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke is_in_simulation_mode" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after is_in_simulation_mode is invoked" + }, + "details": { + "name": "is_in_simulation_mode", + "category": "Other" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/is_object_frozen.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/is_object_frozen.names new file mode 100644 index 0000000000..7f8463fe2e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/is_object_frozen.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "is_object_frozen", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "is_object_frozen", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke is_object_frozen" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after is_object_frozen is invoked" + }, + "details": { + "name": "is_object_frozen", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/is_object_hidden.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/is_object_hidden.names new file mode 100644 index 0000000000..05439afc23 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/is_object_hidden.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "is_object_hidden", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "is_object_hidden", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke is_object_hidden" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after is_object_hidden is invoked" + }, + "details": { + "name": "is_object_hidden", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/is_pane_visible.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/is_pane_visible.names new file mode 100644 index 0000000000..1c5ccdbbb9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/is_pane_visible.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "is_pane_visible", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "is_pane_visible", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke is_pane_visible" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after is_pane_visible is invoked" + }, + "details": { + "name": "is_pane_visible", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/launch_lua_editor.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/launch_lua_editor.names new file mode 100644 index 0000000000..6441e1bcbf --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/launch_lua_editor.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "launch_lua_editor", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "launch_lua_editor", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke launch_lua_editor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after launch_lua_editor is invoked" + }, + "details": { + "name": "launch_lua_editor", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/load_all_plugins.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/load_all_plugins.names new file mode 100644 index 0000000000..7dd292c231 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/load_all_plugins.names @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "key": "load_all_plugins", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "load_all_plugins", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke load_all_plugins" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after load_all_plugins is invoked" + }, + "details": { + "name": "load_all_plugins", + "category": "Other" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/log.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/log.names new file mode 100644 index 0000000000..45ac6166f3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/log.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "log", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "log", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke log" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after log is invoked" + }, + "details": { + "name": "log", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/message_box.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/message_box.names new file mode 100644 index 0000000000..934130445b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/message_box.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "message_box", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "message_box", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke message_box" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after message_box is invoked" + }, + "details": { + "name": "message_box", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/message_box_ok.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/message_box_ok.names new file mode 100644 index 0000000000..41baa649e6 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/message_box_ok.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "message_box_ok", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "message_box_ok", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke message_box_ok" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after message_box_ok is invoked" + }, + "details": { + "name": "message_box_ok", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/message_box_yes_no.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/message_box_yes_no.names new file mode 100644 index 0000000000..ddbdb555ce --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/message_box_yes_no.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "message_box_yes_no", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "message_box_yes_no", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke message_box_yes_no" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after message_box_yes_no is invoked" + }, + "details": { + "name": "message_box_yes_no", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/new_sequence.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/new_sequence.names new file mode 100644 index 0000000000..2a3f847e54 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/new_sequence.names @@ -0,0 +1,45 @@ +{ + "entries": [ + { + "key": "new_sequence", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "new_sequence", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke new_sequence" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after new_sequence is invoked" + }, + "details": { + "name": "new_sequence", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/open_file_box.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/open_file_box.names new file mode 100644 index 0000000000..5f4f3c1149 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/open_file_box.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "open_file_box", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "open_file_box", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke open_file_box" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after open_file_box is invoked" + }, + "details": { + "name": "open_file_box", + "category": "Other" + }, + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::basic_string, allocator>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/open_level.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/open_level.names new file mode 100644 index 0000000000..61e4630f84 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/open_level.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "open_level", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "open_level", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke open_level" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after open_level is invoked" + }, + "details": { + "name": "open_level", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/open_level_no_prompt.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/open_level_no_prompt.names new file mode 100644 index 0000000000..10cbd7b1b9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/open_level_no_prompt.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "open_level_no_prompt", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "open_level_no_prompt", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke open_level_no_prompt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after open_level_no_prompt is invoked" + }, + "details": { + "name": "open_level_no_prompt", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/open_pane.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/open_pane.names new file mode 100644 index 0000000000..9f830cbee5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/open_pane.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "open_pane", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "open_pane", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke open_pane" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after open_pane is invoked" + }, + "details": { + "name": "open_pane", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/play_sequence.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/play_sequence.names new file mode 100644 index 0000000000..4d12503a1e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/play_sequence.names @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "key": "play_sequence", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "play_sequence", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke play_sequence" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after play_sequence is invoked" + }, + "details": { + "name": "play_sequence", + "category": "Other" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/redo.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/redo.names new file mode 100644 index 0000000000..463692b784 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/redo.names @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "key": "redo", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "redo", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke redo" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after redo is invoked" + }, + "details": { + "name": "redo", + "category": "Other" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/reload_current_level.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/reload_current_level.names new file mode 100644 index 0000000000..f031946ef4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/reload_current_level.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "reload_current_level", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "reload_current_level", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke reload_current_level" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after reload_current_level is invoked" + }, + "details": { + "name": "reload_current_level", + "category": "Other" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/rename_object.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/rename_object.names new file mode 100644 index 0000000000..8ad522a4bb --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/rename_object.names @@ -0,0 +1,45 @@ +{ + "entries": [ + { + "key": "rename_object", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "rename_object", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke rename_object" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after rename_object is invoked" + }, + "details": { + "name": "rename_object", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/resize_viewport.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/resize_viewport.names new file mode 100644 index 0000000000..799a539c9b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/resize_viewport.names @@ -0,0 +1,45 @@ +{ + "entries": [ + { + "key": "resize_viewport", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "resize_viewport", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke resize_viewport" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after resize_viewport is invoked" + }, + "details": { + "name": "resize_viewport", + "category": "Other" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/run_console.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/run_console.names new file mode 100644 index 0000000000..be7fec1827 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/run_console.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "run_console", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "run_console", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke run_console" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after run_console is invoked" + }, + "details": { + "name": "run_console", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/run_file.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/run_file.names new file mode 100644 index 0000000000..a3afd9cbe6 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/run_file.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "run_file", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "run_file", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke run_file" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after run_file is invoked" + }, + "details": { + "name": "run_file", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/run_file_parameters.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/run_file_parameters.names new file mode 100644 index 0000000000..97ddd6da4d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/run_file_parameters.names @@ -0,0 +1,45 @@ +{ + "entries": [ + { + "key": "run_file_parameters", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "run_file_parameters", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke run_file_parameters" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after run_file_parameters is invoked" + }, + "details": { + "name": "run_file_parameters", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/save_level.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/save_level.names new file mode 100644 index 0000000000..4d857d6b8c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/save_level.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "save_level", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "save_level", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke save_level" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after save_level is invoked" + }, + "details": { + "name": "save_level", + "category": "Other" + }, + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/select_object.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/select_object.names new file mode 100644 index 0000000000..49d369b69d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/select_object.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "select_object", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "select_object", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke select_object" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after select_object is invoked" + }, + "details": { + "name": "select_object", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/select_objects.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/select_objects.names new file mode 100644 index 0000000000..f2ba054656 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/select_objects.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "select_objects", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "select_objects", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke select_objects" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after select_objects is invoked" + }, + "details": { + "name": "select_objects", + "category": "Other" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "const AZStd::vector>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_config_spec.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_config_spec.names new file mode 100644 index 0000000000..3b6db1b770 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_config_spec.names @@ -0,0 +1,45 @@ +{ + "entries": [ + { + "key": "set_config_spec", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "set_config_spec", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke set_config_spec" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after set_config_spec is invoked" + }, + "details": { + "name": "set_config_spec", + "category": "Other" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_current_sequence.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_current_sequence.names new file mode 100644 index 0000000000..39d766270b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_current_sequence.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "set_current_sequence", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "set_current_sequence", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke set_current_sequence" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after set_current_sequence is invoked" + }, + "details": { + "name": "set_current_sequence", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_current_view_position.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_current_view_position.names new file mode 100644 index 0000000000..d3d6c11b6d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_current_view_position.names @@ -0,0 +1,51 @@ +{ + "entries": [ + { + "key": "set_current_view_position", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "set_current_view_position", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke set_current_view_position" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after set_current_view_position is invoked" + }, + "details": { + "name": "set_current_view_position", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_current_view_rotation.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_current_view_rotation.names new file mode 100644 index 0000000000..528a8c067d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_current_view_rotation.names @@ -0,0 +1,51 @@ +{ + "entries": [ + { + "key": "set_current_view_rotation", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "set_current_view_rotation", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke set_current_view_rotation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after set_current_view_rotation is invoked" + }, + "details": { + "name": "set_current_view_rotation", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_cvar.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_cvar.names new file mode 100644 index 0000000000..1bf5764d4d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_cvar.names @@ -0,0 +1,45 @@ +{ + "entries": [ + { + "key": "set_cvar", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "set_cvar", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke set_cvar" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after set_cvar is invoked" + }, + "details": { + "name": "set_cvar", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + }, + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "const any&" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_cvar_float.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_cvar_float.names new file mode 100644 index 0000000000..cc310cc8a9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_cvar_float.names @@ -0,0 +1,45 @@ +{ + "entries": [ + { + "key": "set_cvar_float", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "set_cvar_float", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke set_cvar_float" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after set_cvar_float is invoked" + }, + "details": { + "name": "set_cvar_float", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_cvar_integer.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_cvar_integer.names new file mode 100644 index 0000000000..032fe7cc99 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_cvar_integer.names @@ -0,0 +1,45 @@ +{ + "entries": [ + { + "key": "set_cvar_integer", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "set_cvar_integer", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke set_cvar_integer" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after set_cvar_integer is invoked" + }, + "details": { + "name": "set_cvar_integer", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_cvar_string.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_cvar_string.names new file mode 100644 index 0000000000..a5f7742511 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_cvar_string.names @@ -0,0 +1,45 @@ +{ + "entries": [ + { + "key": "set_cvar_string", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "set_cvar_string", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke set_cvar_string" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after set_cvar_string is invoked" + }, + "details": { + "name": "set_cvar_string", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_misc_editor_settings.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_misc_editor_settings.names new file mode 100644 index 0000000000..3c1367794d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_misc_editor_settings.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "set_misc_editor_settings", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "set_misc_editor_settings", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke set_misc_editor_settings" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after set_misc_editor_settings is invoked" + }, + "details": { + "name": "set_misc_editor_settings", + "category": "Other" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_position.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_position.names new file mode 100644 index 0000000000..f37822b1df --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_position.names @@ -0,0 +1,57 @@ +{ + "entries": [ + { + "key": "set_position", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "set_position", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke set_position" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after set_position is invoked" + }, + "details": { + "name": "set_position", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_recording.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_recording.names new file mode 100644 index 0000000000..602dab9b4e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_recording.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "set_recording", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "set_recording", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke set_recording" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after set_recording is invoked" + }, + "details": { + "name": "set_recording", + "category": "Other" + }, + "params": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_result_to_failure.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_result_to_failure.names new file mode 100644 index 0000000000..27678d2797 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_result_to_failure.names @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "key": "set_result_to_failure", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "set_result_to_failure", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke set_result_to_failure" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after set_result_to_failure is invoked" + }, + "details": { + "name": "set_result_to_failure", + "category": "Other" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_result_to_success.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_result_to_success.names new file mode 100644 index 0000000000..8cd35d8c2c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_result_to_success.names @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "key": "set_result_to_success", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "set_result_to_success", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke set_result_to_success" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after set_result_to_success is invoked" + }, + "details": { + "name": "set_result_to_success", + "category": "Other" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_rotation.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_rotation.names new file mode 100644 index 0000000000..796a6d4c20 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_rotation.names @@ -0,0 +1,57 @@ +{ + "entries": [ + { + "key": "set_rotation", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "set_rotation", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke set_rotation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after set_rotation is invoked" + }, + "details": { + "name": "set_rotation", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_scale.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_scale.names new file mode 100644 index 0000000000..edbb104612 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_scale.names @@ -0,0 +1,57 @@ +{ + "entries": [ + { + "key": "set_scale", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "set_scale", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke set_scale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after set_scale is invoked" + }, + "details": { + "name": "set_scale", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_sequence_time_range.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_sequence_time_range.names new file mode 100644 index 0000000000..aa0d3839c6 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_sequence_time_range.names @@ -0,0 +1,51 @@ +{ + "entries": [ + { + "key": "set_sequence_time_range", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "set_sequence_time_range", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke set_sequence_time_range" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after set_sequence_time_range is invoked" + }, + "details": { + "name": "set_sequence_time_range", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + }, + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_time.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_time.names new file mode 100644 index 0000000000..85ad69a1d7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_time.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "set_time", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "set_time", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke set_time" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after set_time is invoked" + }, + "details": { + "name": "set_time", + "category": "Other" + }, + "params": [ + { + "typeid": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}", + "details": { + "name": "float" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_view_pane_layout.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_view_pane_layout.names new file mode 100644 index 0000000000..622b51ca4b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_view_pane_layout.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "set_view_pane_layout", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "set_view_pane_layout", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke set_view_pane_layout" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after set_view_pane_layout is invoked" + }, + "details": { + "name": "set_view_pane_layout", + "category": "Other" + }, + "params": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_viewport_expansion_policy.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_viewport_expansion_policy.names new file mode 100644 index 0000000000..7e4ac4e305 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_viewport_expansion_policy.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "set_viewport_expansion_policy", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "set_viewport_expansion_policy", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke set_viewport_expansion_policy" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after set_viewport_expansion_policy is invoked" + }, + "details": { + "name": "set_viewport_expansion_policy", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_viewport_size.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_viewport_size.names new file mode 100644 index 0000000000..e5bc133444 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/set_viewport_size.names @@ -0,0 +1,45 @@ +{ + "entries": [ + { + "key": "set_viewport_size", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "set_viewport_size", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke set_viewport_size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after set_viewport_size is invoked" + }, + "details": { + "name": "set_viewport_size", + "category": "Other" + }, + "params": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/start_process_detached.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/start_process_detached.names new file mode 100644 index 0000000000..df5e6182a2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/start_process_detached.names @@ -0,0 +1,45 @@ +{ + "entries": [ + { + "key": "start_process_detached", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "start_process_detached", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke start_process_detached" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after start_process_detached is invoked" + }, + "details": { + "name": "start_process_detached", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/stop_sequence.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/stop_sequence.names new file mode 100644 index 0000000000..63f38ab444 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/stop_sequence.names @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "key": "stop_sequence", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "stop_sequence", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke stop_sequence" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after stop_sequence is invoked" + }, + "details": { + "name": "stop_sequence", + "category": "Other" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/test_output.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/test_output.names new file mode 100644 index 0000000000..acd55d4b22 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/test_output.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "test_output", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "test_output", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke test_output" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after test_output is invoked" + }, + "details": { + "name": "test_output", + "category": "Other" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "const AZStd::basic_string, alloc" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/toggle_helpers.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/toggle_helpers.names new file mode 100644 index 0000000000..0afcc9d471 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/toggle_helpers.names @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "key": "toggle_helpers", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "toggle_helpers", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke toggle_helpers" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after toggle_helpers is invoked" + }, + "details": { + "name": "toggle_helpers", + "category": "Other" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/undo.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/undo.names new file mode 100644 index 0000000000..3fb0afdbf4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/undo.names @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "key": "undo", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "undo", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke undo" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after undo is invoked" + }, + "details": { + "name": "undo", + "category": "Other" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/unfreeze_object.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/unfreeze_object.names new file mode 100644 index 0000000000..ad29537ab6 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/unfreeze_object.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "unfreeze_object", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "unfreeze_object", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke unfreeze_object" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after unfreeze_object is invoked" + }, + "details": { + "name": "unfreeze_object", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/unhide_all_objects.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/unhide_all_objects.names new file mode 100644 index 0000000000..204e2a3fbc --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/unhide_all_objects.names @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "key": "unhide_all_objects", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "unhide_all_objects", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke unhide_all_objects" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after unhide_all_objects is invoked" + }, + "details": { + "name": "unhide_all_objects", + "category": "Other" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/unhide_object.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/unhide_object.names new file mode 100644 index 0000000000..22a74940a8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/unhide_object.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "unhide_object", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "unhide_object", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke unhide_object" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after unhide_object is invoked" + }, + "details": { + "name": "unhide_object", + "category": "Other" + }, + "params": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "const char*" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/unselect_objects.names b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/unselect_objects.names new file mode 100644 index 0000000000..f0052c8c3d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/GlobalMethods/unselect_objects.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "unselect_objects", + "context": "Method", + "variant": "", + "details": { + "name": "", + "category": "Globals" + }, + "methods": [ + { + "key": "unselect_objects", + "context": "Global", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke unselect_objects" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after unselect_objects is invoked" + }, + "details": { + "name": "unselect_objects", + "category": "Other" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "const AZStd::vector max), adding any point to it will make it valid", + "subtitle": "Axis Aligned Bounding Box" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataOutput_Result: AABB", + "details": { + "name": "Invalid AABB" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathAABB_Overlaps.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathAABB_Overlaps.names new file mode 100644 index 0000000000..4474f1220b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathAABB_Overlaps.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "{CE4AF636-AB72-589D-92E9-A3C75A3F9C7F}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Overlaps", + "category": "Math/Axis Aligned Bounding Box", + "tooltip": "returns true if A overlaps B, else false", + "subtitle": "Axis Aligned Bounding Box" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_AABB: A", + "details": { + "name": "AABB: A" + } + }, + { + "key": "DataInput_AABB: B", + "details": { + "name": "AABB: B" + } + }, + { + "key": "DataOutput_Result: Boolean", + "details": { + "name": "Result: Boolean" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathAABB_SurfaceArea.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathAABB_SurfaceArea.names new file mode 100644 index 0000000000..2b206cfcfc --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathAABB_SurfaceArea.names @@ -0,0 +1,41 @@ +{ + "entries": [ + { + "key": "{46EE9F31-DDE1-5482-9A03-A0D4A6BE429C}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Surface Area", + "category": "Math/Axis Aligned Bounding Box", + "tooltip": "returns the sum of the surface area of all six faces of Source", + "subtitle": "Axis Aligned Bounding Box" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_AABB: Source", + "details": { + "name": "AABB: Source" + } + }, + { + "key": "DataOutput_Result: Number", + "details": { + "name": "Result: Number" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathAABB_ToSphere.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathAABB_ToSphere.names new file mode 100644 index 0000000000..9a07c147c6 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathAABB_ToSphere.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "{214CCB41-01CA-578C-9D7F-1237202A885B}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "To Sphere", + "category": "Math/Axis Aligned Bounding Box", + "tooltip": "returns the center and radius of smallest sphere that contains Source", + "subtitle": "Axis Aligned Bounding Box" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_AABB: Source", + "details": { + "name": "AABB: Source" + } + }, + { + "key": "DataOutput_Center: Vector3", + "details": { + "name": "Center: Vector3" + } + }, + { + "key": "DataOutput_Radius: Number", + "details": { + "name": "Radius: Number" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathAABB_Translate.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathAABB_Translate.names new file mode 100644 index 0000000000..01037b2bff --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathAABB_Translate.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "{22DBE624-D16E-51E7-BFF5-6C136E8E4581}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Translate", + "category": "Math/Axis Aligned Bounding Box", + "tooltip": "returns the Source with each point added with Translation", + "subtitle": "Axis Aligned Bounding Box" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_AABB: Source", + "details": { + "name": "AABB: Source" + } + }, + { + "key": "DataInput_Vector3: Translation", + "details": { + "name": "Vector3: Translation" + } + }, + { + "key": "DataOutput_Result: AABB", + "details": { + "name": "Result: AABB" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathAABB_XExtent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathAABB_XExtent.names new file mode 100644 index 0000000000..23e8921ab8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathAABB_XExtent.names @@ -0,0 +1,41 @@ +{ + "entries": [ + { + "key": "{58B36FE7-19EB-5407-95BD-D16C62F04E0D}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "X Extent", + "category": "Math/Axis Aligned Bounding Box", + "tooltip": "returns the X extent (max X - min X) of Source", + "subtitle": "Axis Aligned Bounding Box" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_AABB: Source", + "details": { + "name": "AABB: Source" + } + }, + { + "key": "DataOutput_Result: Number", + "details": { + "name": "Result: Number" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathAABB_YExtent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathAABB_YExtent.names new file mode 100644 index 0000000000..3e28799512 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathAABB_YExtent.names @@ -0,0 +1,41 @@ +{ + "entries": [ + { + "key": "{631968DE-47B3-5214-B564-E14025135BAA}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Y Extent", + "category": "Math/Axis Aligned Bounding Box", + "tooltip": "returns the Y extent (max Y - min Y) of Source", + "subtitle": "Axis Aligned Bounding Box" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_AABB: Source", + "details": { + "name": "AABB: Source" + } + }, + { + "key": "DataOutput_Result: Number", + "details": { + "name": "Result: Number" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathAABB_ZExtent.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathAABB_ZExtent.names new file mode 100644 index 0000000000..c470eafa0c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathAABB_ZExtent.names @@ -0,0 +1,41 @@ +{ + "entries": [ + { + "key": "{0CE6DD20-9E09-5CCE-A514-196958FD4871}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Z Extent", + "category": "Math/Axis Aligned Bounding Box", + "tooltip": "returns the Z extent (max Z - min Z) of Source", + "subtitle": "Axis Aligned Bounding Box" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_AABB: Source", + "details": { + "name": "AABB: Source" + } + }, + { + "key": "DataOutput_Result: Number", + "details": { + "name": "Result: Number" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_Dot.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_Dot.names new file mode 100644 index 0000000000..9433f13d04 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_Dot.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "{92A67932-241C-5BF4-8D4F-327F3E819F56}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Dot", + "category": "Math/Color", + "tooltip": "returns the 4-element dot product of A and B", + "subtitle": "Color" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Color: A", + "details": { + "name": "Color: A" + } + }, + { + "key": "DataInput_Color: B", + "details": { + "name": "Color: B" + } + }, + { + "key": "DataOutput_Result: Number", + "details": { + "name": "Result: Number" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_Dot3.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_Dot3.names new file mode 100644 index 0000000000..16d5b36eb0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_Dot3.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{91E89FD2-F929-5491-BD2A-4B83D2455AAB}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Dot (RGB)", + "category": "Math/Color", + "tooltip": "returns the 3-element dot product of A and B, using only the R, G, B elements" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_FromValues.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_FromValues.names new file mode 100644 index 0000000000..01b5ac9cb9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_FromValues.names @@ -0,0 +1,58 @@ +{ + "entries": [ + { + "key": "{84F9B63C-F6F5-58AD-8669-C25287CDC037}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Values", + "category": "Math/Color", + "tooltip": "Returns a Color from the R, G, B, A inputs" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_R", + "details": { + "name": "R" + } + }, + { + "key": "DataInput_G", + "details": { + "name": "G" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_FromVector3.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_FromVector3.names new file mode 100644 index 0000000000..e87ad523b0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_FromVector3.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{4EC849DB-B390-5C13-ADE9-A0CD8F06D63E}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Vector3", + "category": "Math/Color", + "tooltip": "Returns a Color with R, G, B set to X, Y, Z values of RGB, respectively. A is set to 1.0" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_RGB", + "details": { + "name": "RGB" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_FromVector3AndNumber.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_FromVector3AndNumber.names new file mode 100644 index 0000000000..3d657ed1a0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_FromVector3AndNumber.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "{5829F3E6-1F1D-58C2-BD72-66D4DE866AB9}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Vector3 And Number", + "category": "Math/Color", + "tooltip": "returns a Color with R, G, B set to X, Y, Z values of RGB, respectively. A is set to A", + "subtitle": "Color" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Vector3: RGB", + "details": { + "name": "Red, Green, Blue" + } + }, + { + "key": "DataInput_Number: A", + "details": { + "name": "Alpha" + } + }, + { + "key": "DataOutput_Result: Color", + "details": { + "name": "Color" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_GammaToLinear.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_GammaToLinear.names new file mode 100644 index 0000000000..f9ed687835 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_GammaToLinear.names @@ -0,0 +1,41 @@ +{ + "entries": [ + { + "key": "{721CF0C9-BE86-59B4-A5B6-AC936744CE5E}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Gamma To Linear", + "category": "Math/Color", + "tooltip": "returns Source converted from gamma corrected to linear space", + "subtitle": "Color" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Color: Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result: Color", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_IsClose.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_IsClose.names new file mode 100644 index 0000000000..430cf90d8b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_IsClose.names @@ -0,0 +1,53 @@ +{ + "entries": [ + { + "key": "{629BABFE-B9D2-5D29-BCC1-3E5CBDD7CAA4}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Close", + "category": "Math/Color", + "tooltip": "Returns true if A is within Tolerance of B, else false", + "subtitle": "Color" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Color: A", + "details": { + "name": "First" + } + }, + { + "key": "DataInput_Color: B", + "details": { + "name": "Second" + } + }, + { + "key": "DataInput_Number: Tolerance", + "details": { + "name": "Tolerance" + } + }, + { + "key": "DataOutput_Result: Boolean", + "details": { + "name": "Is Close" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_IsZero.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_IsZero.names new file mode 100644 index 0000000000..f22b3e3773 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_IsZero.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "{8A949DAB-0F0E-52FA-83EF-EA75B38076C8}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Zero", + "category": "Math/Color", + "tooltip": "returns true if Source is within Tolerance of zero", + "subtitle": "Color" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Color: Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Number: Tolerance", + "details": { + "name": "Tolerance" + } + }, + { + "key": "DataOutput_Result: Boolean", + "details": { + "name": "Is Zero" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_LinearToGamma.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_LinearToGamma.names new file mode 100644 index 0000000000..fa1d06b510 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_LinearToGamma.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{8F561D51-2991-5493-8CED-B2FBAF168E72}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Linear To Gamma", + "category": "Math/Color", + "tooltip": "Returns Source converted from linear to gamma corrected space" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_MultiplyByNumber.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_MultiplyByNumber.names new file mode 100644 index 0000000000..4bf7062cb7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_MultiplyByNumber.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "{B779B815-EC1B-5075-A167-0F213445BB53}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Multiply By Number", + "category": "Math/Color", + "tooltip": "Returns Source with every elemented multiplied by Multiplier", + "subtitle": "Color" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Color: Source", + "details": { + "name": "Color: Source" + } + }, + { + "key": "DataInput_Number: Multiplier", + "details": { + "name": "Number: Multiplier" + } + }, + { + "key": "DataOutput_Result: Color", + "details": { + "name": "Result: Color" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_One.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_One.names new file mode 100644 index 0000000000..99d7f96b84 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathColor_One.names @@ -0,0 +1,35 @@ +{ + "entries": [ + { + "key": "{E70E232F-9B2E-5802-9A58-422D47D88405}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "One", + "category": "Math/Color", + "tooltip": "returns a Color with every element set to 1", + "subtitle": "Color" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataOutput_Result: Color", + "details": { + "name": "Result: Color" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathComparisons_EqualTo_==_.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathComparisons_EqualTo_==_.names new file mode 100644 index 0000000000..fdf52ec08d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathComparisons_EqualTo_==_.names @@ -0,0 +1,55 @@ +{ + "entries": [ + { + "key": "{02A3A3E6-9D80-432B-8AF5-F3AF24CF6959}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Equal To (==)", + "category": "Math/Comparisons", + "tooltip": "Checks if Value A and Value B are equal to each other" + }, + "slots": [ + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Signal to perform the evaluation when desired." + } + }, + { + "key": "Output_True", + "details": { + "name": "True", + "tooltip": "Signaled if the result of the operation is true." + } + }, + { + "key": "Output_False", + "details": { + "name": "False", + "tooltip": "Signaled if the result of the operation is false." + } + }, + { + "key": "DataInput_Value A", + "details": { + "name": "Value A" + } + }, + { + "key": "DataInput_Value B", + "details": { + "name": "Value B" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathComparisons_GreaterThan__.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathComparisons_GreaterThan__.names new file mode 100644 index 0000000000..b2c3ca2d50 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathComparisons_GreaterThan__.names @@ -0,0 +1,55 @@ +{ + "entries": [ + { + "key": "{218F5872-8D89-4FEA-9761-662625E29580}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Greater Than (>)", + "category": "Math/Comparisons", + "tooltip": "Checks if Value A is greater than Value B" + }, + "slots": [ + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Signal to perform the evaluation when desired." + } + }, + { + "key": "Output_True", + "details": { + "name": "True", + "tooltip": "Signaled if the result of the operation is true." + } + }, + { + "key": "Output_False", + "details": { + "name": "False", + "tooltip": "Signaled if the result of the operation is false." + } + }, + { + "key": "DataInput_Value A", + "details": { + "name": "Value A" + } + }, + { + "key": "DataInput_Value B", + "details": { + "name": "Value B" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathComparisons_GreaterThanorEqualTo_=_.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathComparisons_GreaterThanorEqualTo_=_.names new file mode 100644 index 0000000000..5422a38082 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathComparisons_GreaterThanorEqualTo_=_.names @@ -0,0 +1,55 @@ +{ + "entries": [ + { + "key": "{8CA0C442-9139-4180-96EC-300FF888C35A}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Greater Than or Equal To (>=)", + "category": "Math/Comparisons", + "tooltip": "Checks if Value A is greater than or equal to Value B" + }, + "slots": [ + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Signal to perform the evaluation when desired." + } + }, + { + "key": "Output_True", + "details": { + "name": "True", + "tooltip": "Signaled if the result of the operation is true." + } + }, + { + "key": "Output_False", + "details": { + "name": "False", + "tooltip": "Signaled if the result of the operation is false." + } + }, + { + "key": "DataInput_Value A", + "details": { + "name": "Value A" + } + }, + { + "key": "DataInput_Value B", + "details": { + "name": "Value B" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathComparisons_LessThan___.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathComparisons_LessThan___.names new file mode 100644 index 0000000000..44db07b347 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathComparisons_LessThan___.names @@ -0,0 +1,55 @@ +{ + "entries": [ + { + "key": "{1B93426F-AAA2-4134-BE9A-C33B8F07F867}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Less Than (<)", + "category": "Math/Comparisons", + "tooltip": "Checks if Value A is less than Value B" + }, + "slots": [ + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Signal to perform the evaluation when desired." + } + }, + { + "key": "Output_True", + "details": { + "name": "True", + "tooltip": "Signaled if the result of the operation is true." + } + }, + { + "key": "Output_False", + "details": { + "name": "False", + "tooltip": "Signaled if the result of the operation is false." + } + }, + { + "key": "DataInput_Value A", + "details": { + "name": "Value A" + } + }, + { + "key": "DataInput_Value B", + "details": { + "name": "Value B" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathComparisons_LessThanorEqualTo__=_.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathComparisons_LessThanorEqualTo__=_.names new file mode 100644 index 0000000000..1c06e26cd6 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathComparisons_LessThanorEqualTo__=_.names @@ -0,0 +1,55 @@ +{ + "entries": [ + { + "key": "{73F6E302-A2E9-4BE6-A88F-98F81A24100D}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Less Than or Equal To (<=)", + "category": "Math/Comparisons", + "tooltip": "Checks if Value A is less than or equal to Value B" + }, + "slots": [ + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Signal to perform the evaluation when desired." + } + }, + { + "key": "Output_True", + "details": { + "name": "True", + "tooltip": "Signaled if the result of the operation is true." + } + }, + { + "key": "Output_False", + "details": { + "name": "False", + "tooltip": "Signaled if the result of the operation is false." + } + }, + { + "key": "DataInput_Value A", + "details": { + "name": "Value A" + } + }, + { + "key": "DataInput_Value B", + "details": { + "name": "Value B" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathComparisons_NotEqualTo_!=_.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathComparisons_NotEqualTo_!=_.names new file mode 100644 index 0000000000..e14af5ed2f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathComparisons_NotEqualTo_!=_.names @@ -0,0 +1,55 @@ +{ + "entries": [ + { + "key": "{C8D7A10F-A919-4467-96B1-F1852C282628}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Not Equal To (!=)", + "category": "Math/Comparisons", + "tooltip": "Checks if Value A is not equal to Value B" + }, + "slots": [ + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Signal to perform the evaluation when desired." + } + }, + { + "key": "Output_True", + "details": { + "name": "True", + "tooltip": "Signaled if the result of the operation is true." + } + }, + { + "key": "Output_False", + "details": { + "name": "False", + "tooltip": "Signaled if the result of the operation is false." + } + }, + { + "key": "DataInput_Value A", + "details": { + "name": "Value A" + } + }, + { + "key": "DataInput_Value B", + "details": { + "name": "Value B" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathCrc32_FromString.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathCrc32_FromString.names new file mode 100644 index 0000000000..56b63ed01f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathCrc32_FromString.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{5C734A52-7CB1-5571-B6B2-F1C19A8CCE5A}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From String", + "category": "Math/Crc32", + "tooltip": "Returns a Crc32 from the string" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Value", + "details": { + "name": "Text" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromColumns.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromColumns.names new file mode 100644 index 0000000000..e9c3ac7672 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromColumns.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{2185A730-0CA3-5B97-8150-51D9F28EA9C8}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Columns", + "category": "Math/Matrix3x3", + "tooltip": "Returns a rotation matrix based on angle around Z axis" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Column1", + "details": { + "name": "Column 1" + } + }, + { + "key": "DataInput_Column2", + "details": { + "name": "Column 2" + } + }, + { + "key": "DataInput_Column3", + "details": { + "name": "Column 3" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromCrossProduct.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromCrossProduct.names new file mode 100644 index 0000000000..f823176f14 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromCrossProduct.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{06538E6D-FE44-5A9C-8081-083D5D19D4FC}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Cross Product", + "category": "Math/Matrix3x3", + "tooltip": "Returns a skew-symmetric cross product matrix based on supplied vector" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromDiagonal.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromDiagonal.names new file mode 100644 index 0000000000..9f9c083534 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromDiagonal.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{F99F5D84-CDE6-5130-BAAC-7377F52D34FD}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Diagonal", + "category": "Math/Matrix3x3", + "tooltip": "Returns a diagonal matrix using the supplied vector" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromMatrix4x4.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromMatrix4x4.names new file mode 100644 index 0000000000..f88782a2ee --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromMatrix4x4.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{5E5DA784-9D18-595F-BB1E-FA3AC8BA7DD6}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Matrix4x4", + "category": "Math/Matrix3x3", + "tooltip": "Returns a matrix from the first 3 rows of a Matrix3x3" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromQuaternion.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromQuaternion.names new file mode 100644 index 0000000000..1ddbce8343 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromQuaternion.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{1D87EFAE-3FC2-5D8A-931D-7D56DB4E3123}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Quaternion", + "category": "Math/Matrix3x3", + "tooltip": "Returns a rotation matrix using the supplied quaternion" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromRotationXDegrees.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromRotationXDegrees.names new file mode 100644 index 0000000000..20c7570899 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromRotationXDegrees.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{478D4CC5-BC42-574A-A81C-818FA9A3C635}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Rotation X Degrees", + "category": "Math/Matrix3x3", + "tooltip": "Returns a rotation matrix representing a rotation in degrees around X-axis" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Degrees", + "details": { + "name": "Degrees" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromRotationYDegrees.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromRotationYDegrees.names new file mode 100644 index 0000000000..c5558e192a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromRotationYDegrees.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{A69D13B7-FBC3-5038-93CD-4FB822CFF8D4}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Rotation Y Degrees", + "category": "Math/Matrix3x3", + "tooltip": "Returns a rotation matrix representing a rotation in degrees around Y-axis" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Degrees", + "details": { + "name": "Degrees" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromRotationZDegrees.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromRotationZDegrees.names new file mode 100644 index 0000000000..3c31f1c3ab --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromRotationZDegrees.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{5E449312-5741-59EB-A778-7FB6C75DB90A}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Rotation Z Degrees", + "category": "Math/Matrix3x3", + "tooltip": "Returns a rotation matrix representing a rotation in degrees around Z-axis" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Degrees", + "details": { + "name": "Degrees" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromRows.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromRows.names new file mode 100644 index 0000000000..7bcda04e10 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromRows.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{B70E2447-DE12-5D81-80E4-06BEE5A0219E}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Rows", + "category": "Math/Matrix3x3", + "tooltip": "Returns a matrix from three row" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Row1", + "details": { + "name": "Row 1" + } + }, + { + "key": "DataInput_Row2", + "details": { + "name": "Row 2" + } + }, + { + "key": "DataInput_Row3", + "details": { + "name": "Row 3" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromScale.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromScale.names new file mode 100644 index 0000000000..1caf6865ca --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromScale.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{A3F6A35C-068E-57D5-9761-69DC5AB0BD1B}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Scale", + "category": "Math/Matrix3x3", + "tooltip": "Returns a scale matrix using the supplied vector" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Scale", + "details": { + "name": "Scale" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromTransform.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromTransform.names new file mode 100644 index 0000000000..509fda12d3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_FromTransform.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{F54FFF79-75FF-5444-B941-DF216680BEA1}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Transform", + "category": "Math/Matrix3x3", + "tooltip": "Returns a matrix using the supplied transform" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Transform", + "details": { + "name": "Transform" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_GetColumn.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_GetColumn.names new file mode 100644 index 0000000000..a34e468150 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_GetColumn.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{50724E19-5472-5E35-9F88-F226ABB37D1A}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Column", + "category": "Math/Matrix3x3", + "tooltip": "Returns vector from matrix corresponding to the Column index" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Column", + "details": { + "name": "Column" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_GetColumns.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_GetColumns.names new file mode 100644 index 0000000000..104ca88d50 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_GetColumns.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{13EE83FC-EA87-5957-966F-EFD4E88A7698}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Columns", + "category": "Math/Matrix3x3", + "tooltip": "Returns all columns from matrix" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Column1", + "details": { + "name": "Column 1" + } + }, + { + "key": "DataOutput_Column2", + "details": { + "name": "Column 2" + } + }, + { + "key": "DataOutput_Column3", + "details": { + "name": "Column 3" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_GetDiagonal.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_GetDiagonal.names new file mode 100644 index 0000000000..1c64bf8f40 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_GetDiagonal.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{68B65AD0-B42F-5C85-B194-4FC6C31AD237}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Diagonal", + "category": "Math/Matrix3x3", + "tooltip": "Returns vector of matrix diagonal values" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_GetElement.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_GetElement.names new file mode 100644 index 0000000000..0cf502fad0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_GetElement.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{6FA2A21C-2189-55E4-B65E-2A961586F31E}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Element", + "category": "Math/Matrix3x3", + "tooltip": "Returns scalar from matrix corresponding to the (Row,Column) pair" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Row", + "details": { + "name": "Row" + } + }, + { + "key": "DataInput_Column", + "details": { + "name": "Column" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_GetRow.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_GetRow.names new file mode 100644 index 0000000000..f886bcbd50 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_GetRow.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{89B55821-3E77-5410-B0EC-336A3D747308}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Row", + "category": "Math/Matrix3x3", + "tooltip": "Returns vector from matrix corresponding to the Row index" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Row", + "details": { + "name": "Row" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_GetRows.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_GetRows.names new file mode 100644 index 0000000000..fc06f37dfb --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_GetRows.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{8DE78AF8-44B4-58D8-AC3B-7B4ED77B75DF}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Rows", + "category": "Math/Matrix3x3", + "tooltip": "Returns all rows from matrix" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Row1", + "details": { + "name": "Row 1" + } + }, + { + "key": "DataOutput_Row2", + "details": { + "name": "Row 2" + } + }, + { + "key": "DataOutput_Row3", + "details": { + "name": "Row 3" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_Invert.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_Invert.names new file mode 100644 index 0000000000..24131fb847 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_Invert.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{1F420C54-6920-511B-9025-D91E92ABF0C3}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Invert", + "category": "Math/Matrix3x3", + "tooltip": "Returns inverse of Matrix" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_IsClose.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_IsClose.names new file mode 100644 index 0000000000..403df39120 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_IsClose.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{87F8C39D-47CC-5E63-B02A-675F2F1EE56E}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Close", + "category": "Math/Matrix3x3", + "tooltip": "Returns true if each element of both Matrix are equal within some tolerance" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataInput_Tolerance", + "details": { + "name": "Tolerance" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_IsFinite.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_IsFinite.names new file mode 100644 index 0000000000..be00053f63 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_IsFinite.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{36E2943D-23B3-5CBA-A7EC-AA51288075AA}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Finite", + "category": "Math/Matrix3x3", + "tooltip": "Returns true if all numbers in matrix is finite" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_IsOrthogonal.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_IsOrthogonal.names new file mode 100644 index 0000000000..68dbdac032 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_IsOrthogonal.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{1A78319F-7924-5114-8D85-C09C6F8D701D}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Orthogonal", + "category": "Math/Matrix3x3", + "tooltip": "Returns true if the matrix is orthogonal" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_MultiplyByNumber.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_MultiplyByNumber.names new file mode 100644 index 0000000000..174394484a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_MultiplyByNumber.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{2B0CF330-B397-519C-867F-800AECBB84A8}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Multiply By Number", + "category": "Math/Matrix3x3", + "tooltip": "Returns matrix created from multiply the source matrix by Multiplier" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Multiplier", + "details": { + "name": "Multiplier" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_MultiplyByVector.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_MultiplyByVector.names new file mode 100644 index 0000000000..bc6f6fa58e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_MultiplyByVector.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{6FAEAA22-12D6-51E5-8600-F60103ECFF8C}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Multiply By Vector", + "category": "Math/Matrix3x3", + "tooltip": "Returns vector created by right left multiplying matrix by supplied vector" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Vector", + "details": { + "name": "Vector" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_Orthogonalize.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_Orthogonalize.names new file mode 100644 index 0000000000..626c0007f0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_Orthogonalize.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{BFC5A535-734B-54E8-BDF1-B60120D831EC}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Orthogonalize", + "category": "Math/Matrix3x3", + "tooltip": "Returns an orthogonal matrix from the Source matrix" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_ToAdjugate.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_ToAdjugate.names new file mode 100644 index 0000000000..ee10f47d79 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_ToAdjugate.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{FDE00D83-D0A6-5ACA-B48B-DD5E0415FF80}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "To Adjugate", + "category": "Math/Matrix3x3", + "tooltip": "Returns the transpose of Matrix of cofactors" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_ToDeterminant.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_ToDeterminant.names new file mode 100644 index 0000000000..c1f45fec65 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_ToDeterminant.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{D0C69C1C-1653-54A4-8A5A-1ECB3500D9C1}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "To Determinant", + "category": "Math/Matrix3x3", + "tooltip": "Returns determinant of Matrix" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Determinant", + "details": { + "name": "Determinant" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_ToScale.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_ToScale.names new file mode 100644 index 0000000000..ded60634b3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_ToScale.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{8250935C-5B8D-5DF4-9E09-FDA2A445C099}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "To Scale", + "category": "Math/Matrix3x3", + "tooltip": "Returns scale part of the transformation matrix" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_Transpose.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_Transpose.names new file mode 100644 index 0000000000..c03d1e9be7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_Transpose.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{F57314B3-AFD8-5BDB-A0F0-8EAF5C13CAC9}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Transpose", + "category": "Math/Matrix3x3", + "tooltip": "returns transpose of Matrix" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_Zero.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_Zero.names new file mode 100644 index 0000000000..c9102e659b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix3x3_Zero.names @@ -0,0 +1,34 @@ +{ + "entries": [ + { + "key": "{66D46B8E-5722-57DB-8760-61AE1D69E6A3}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Zero", + "category": "Math/Matrix3x3", + "tooltip": "Returns the zero matrix" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromColumns.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromColumns.names new file mode 100644 index 0000000000..313c923ecb --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromColumns.names @@ -0,0 +1,59 @@ +{ + "entries": [ + { + "key": "{B17F2D7F-22DF-512D-BF2A-98890D337661}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "FromColumns", + "category": "Math/Matrix4x4", + "tooltip": "returns a rotation matrix based on angle around Z axis", + "subtitle": "Matrix4x4" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Vector4: Column1", + "details": { + "name": "Vector4: Column1" + } + }, + { + "key": "DataInput_Vector4: Column2", + "details": { + "name": "Vector4: Column2" + } + }, + { + "key": "DataInput_Vector4: Column3", + "details": { + "name": "Vector4: Column3" + } + }, + { + "key": "DataInput_Vector4: Column4", + "details": { + "name": "Vector4: Column4" + } + }, + { + "key": "DataOutput_Result: Matrix4x4", + "details": { + "name": "Result: Matrix4x4" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromDiagonal.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromDiagonal.names new file mode 100644 index 0000000000..9e20e78471 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromDiagonal.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{4DD9115A-D1D0-53B3-8CC5-EA08EAA8BF13}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Diagonal", + "category": "Math/Matrix4x4", + "tooltip": "Returns a diagonal matrix using the supplied vector" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromMatrix3x3.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromMatrix3x3.names new file mode 100644 index 0000000000..7366425c7f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromMatrix3x3.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{ACD49054-0267-55C7-80E9-1513CAD9182F}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Matrix3x3", + "category": "Math/Matrix4x4", + "tooltip": "Returns a matrix from the from the Matrix3x3" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromQuaternion.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromQuaternion.names new file mode 100644 index 0000000000..af2093be55 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromQuaternion.names @@ -0,0 +1,41 @@ +{ + "entries": [ + { + "key": "{B522091B-B802-5B9C-97CB-B208F58FC535}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "FromQuaternion", + "category": "Math/Matrix4x4", + "tooltip": "returns a rotation matrix using the supplied quaternion", + "subtitle": "Matrix4x4" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Quaternion: Source", + "details": { + "name": "Quaternion: Source" + } + }, + { + "key": "DataOutput_Result: Matrix4x4", + "details": { + "name": "Result: Matrix4x4" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromQuaternionAndTranslation.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromQuaternionAndTranslation.names new file mode 100644 index 0000000000..c2720c5eaa --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromQuaternionAndTranslation.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{18B8A477-A413-5477-ACA7-8A27C7C9A966}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Quaternion And Translation", + "category": "Math/Matrix4x4", + "tooltip": "Returns a skew-symmetric cross product matrix based on supplied vector" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Rotation", + "details": { + "name": "Rotation" + } + }, + { + "key": "DataInput_Translation", + "details": { + "name": "Translation" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromRotationXDegrees.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromRotationXDegrees.names new file mode 100644 index 0000000000..c4d2296372 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromRotationXDegrees.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{A50EB8F8-1BF9-5E03-9CC3-628CF58A3996}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Rotation X Degrees", + "category": "Math/Matrix4x4", + "tooltip": "Returns a rotation matrix representing a rotation in degrees around X-axis" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Degrees", + "details": { + "name": "Degrees" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromRotationYDegrees.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromRotationYDegrees.names new file mode 100644 index 0000000000..2d99cd99a0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromRotationYDegrees.names @@ -0,0 +1,41 @@ +{ + "entries": [ + { + "key": "{14332A8E-425B-5A31-A8D3-EDFD96DE4BA5}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Rotation Y Degrees", + "category": "Math/Matrix4x4", + "tooltip": "Returns a rotation matrix representing a rotation in degrees around Y-axis", + "subtitle": "Matrix4x4" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Number: Degrees", + "details": { + "name": "Degrees" + } + }, + { + "key": "DataOutput_Result: Matrix4x4", + "details": { + "name": "Matrix4x4" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromRotationZDegrees.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromRotationZDegrees.names new file mode 100644 index 0000000000..43287ab848 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromRotationZDegrees.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{99E6908F-AA83-571C-AC12-8DA12B112F79}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Rotation Z Degrees", + "category": "Math/Matrix4x4", + "tooltip": "Returns a rotation matrix representing a rotation in degrees around Z-axis" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Degrees", + "details": { + "name": "Degrees" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromRows.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromRows.names new file mode 100644 index 0000000000..faefebca77 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromRows.names @@ -0,0 +1,58 @@ +{ + "entries": [ + { + "key": "{B5272AB2-1312-5B55-A801-2A976B31665E}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Rows", + "category": "Math/Matrix4x4", + "tooltip": "Returns a matrix from three row" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Row1", + "details": { + "name": "Row 1" + } + }, + { + "key": "DataInput_Row2", + "details": { + "name": "Row 2" + } + }, + { + "key": "DataInput_Row3", + "details": { + "name": "Row 3" + } + }, + { + "key": "DataInput_Row4", + "details": { + "name": "Row 4" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromScale.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromScale.names new file mode 100644 index 0000000000..8be2fed246 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromScale.names @@ -0,0 +1,41 @@ +{ + "entries": [ + { + "key": "{B49D6046-B959-53B1-88AD-E977038DB001}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Scale", + "category": "Math/Matrix4x4", + "tooltip": "Returns a scale matrix using the supplied vector", + "subtitle": "Matrix4x4" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Vector3: Scale", + "details": { + "name": "Vector3: Scale" + } + }, + { + "key": "DataOutput_Result: Matrix4x4", + "details": { + "name": "Matrix4x4" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromTransform.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromTransform.names new file mode 100644 index 0000000000..3966f964ee --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromTransform.names @@ -0,0 +1,41 @@ +{ + "entries": [ + { + "key": "{739E534B-CD9B-55DF-9757-89B0C379387F}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Transform", + "category": "Math/Matrix4x4", + "tooltip": "Returns a matrix using the supplied transform", + "subtitle": "Matrix4x4" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Transform: Transform", + "details": { + "name": "Transform" + } + }, + { + "key": "DataOutput_Result: Matrix4x4", + "details": { + "name": "Matrix4x4" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromTranslation.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromTranslation.names new file mode 100644 index 0000000000..0a6606a9c9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_FromTranslation.names @@ -0,0 +1,41 @@ +{ + "entries": [ + { + "key": "{35D8B012-2C19-5570-A606-4E644D01A9AD}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Translation", + "category": "Math/Matrix4x4", + "tooltip": "Returns a skew-symmetric cross product matrix based on supplied vector", + "subtitle": "Matrix4x4" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Vector3: Source", + "details": { + "name": "Translation" + } + }, + { + "key": "DataOutput_Result: Matrix4x4", + "details": { + "name": "Matrix4x4" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_GetColumn.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_GetColumn.names new file mode 100644 index 0000000000..6c970c53e3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_GetColumn.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "{DE1D987E-8B96-5899-B663-CA4269A284DC}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Column", + "category": "Math/Matrix4x4", + "tooltip": "Returns vector from matrix corresponding to the Column index", + "subtitle": "Matrix4x4" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Matrix4x4: Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Number: Column", + "details": { + "name": "Column" + } + }, + { + "key": "DataOutput_Result: Vector4", + "details": { + "name": "Column" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_GetColumns.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_GetColumns.names new file mode 100644 index 0000000000..8a4e1e477c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_GetColumns.names @@ -0,0 +1,59 @@ +{ + "entries": [ + { + "key": "{A2A41479-B90B-5615-A72E-AAB3A6D0332E}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Columns", + "category": "Math/Matrix4x4", + "tooltip": "Returns all columns from matrix", + "subtitle": "Matrix4x4" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Matrix4x4: Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Column1: Vector4", + "details": { + "name": "Column 1" + } + }, + { + "key": "DataOutput_Column2: Vector4", + "details": { + "name": "Column 2" + } + }, + { + "key": "DataOutput_Column3: Vector4", + "details": { + "name": "Column 3" + } + }, + { + "key": "DataOutput_Column4: Vector4", + "details": { + "name": "Column 4" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_GetDiagonal.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_GetDiagonal.names new file mode 100644 index 0000000000..8777669eb2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_GetDiagonal.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{7ECE6E97-31F9-5455-8560-BB6578CD1F3D}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Diagonal", + "category": "Math/Matrix4x4", + "tooltip": "Returns vector of matrix diagonal values" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_GetElement.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_GetElement.names new file mode 100644 index 0000000000..fb047a7762 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_GetElement.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{2677AF1E-FAC3-5360-96E4-CC3054372340}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Element", + "category": "Math/Matrix4x4", + "tooltip": "Returns scalar from matrix corresponding to the (Row,Column) pair" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Row", + "details": { + "name": "Row" + } + }, + { + "key": "DataInput_Column", + "details": { + "name": "Column" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_GetRow.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_GetRow.names new file mode 100644 index 0000000000..9c2f1bd04c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_GetRow.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{6A153DA6-666E-59ED-93B7-5EE7F19EFC02}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Row", + "category": "Math/Matrix4x4", + "tooltip": "Returns vector from matrix corresponding to the Row index" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Row", + "details": { + "name": "Row" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_GetRows.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_GetRows.names new file mode 100644 index 0000000000..c0209cfa3c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_GetRows.names @@ -0,0 +1,58 @@ +{ + "entries": [ + { + "key": "{3A69C35B-287E-5F0F-A372-713B77B0CBC6}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Rows", + "category": "Math/Matrix4x4", + "tooltip": "Returns all rows from matrix" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Row1", + "details": { + "name": "Row1" + } + }, + { + "key": "DataOutput_Row2", + "details": { + "name": "Row2" + } + }, + { + "key": "DataOutput_Row3", + "details": { + "name": "Row3" + } + }, + { + "key": "DataOutput_Row4", + "details": { + "name": "Row4" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_GetTranslation.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_GetTranslation.names new file mode 100644 index 0000000000..97c74a96fa --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_GetTranslation.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{B71EAC83-D0E9-5E1C-B694-6665896F49FE}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "GetTranslation", + "category": "Math/Matrix4x4", + "tooltip": "returns translation vector from the matrix" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_Invert.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_Invert.names new file mode 100644 index 0000000000..3746071075 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_Invert.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{4E82FDCE-50B3-5AFD-8E96-57E982B94D74}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Invert", + "category": "Math/Matrix4x4", + "tooltip": "Returns inverse of Matrix" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_IsClose.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_IsClose.names new file mode 100644 index 0000000000..3dea7660d6 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_IsClose.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{52504B30-D3B4-5C09-80D6-3CAF47DAEB1E}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Close", + "category": "Math/Matrix4x4", + "tooltip": "Returns true if each element of both Matrix are equal within some tolerance" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataInput_Tolerance", + "details": { + "name": "Tolerance" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_IsFinite.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_IsFinite.names new file mode 100644 index 0000000000..f589f90a96 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_IsFinite.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{90FFB3EE-DBFF-57C7-8D10-136810B762F2}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Finite", + "category": "Math/Matrix4x4", + "tooltip": "Returns true if all numbers in matrix is finite" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_MultiplyByVector.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_MultiplyByVector.names new file mode 100644 index 0000000000..b68524d78b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_MultiplyByVector.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{CE8BA72E-E595-5653-9229-D77A0CB1BAFA}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Multiply By Vector", + "category": "Math/Matrix4x4", + "tooltip": "Returns vector created by right left multiplying matrix by supplied vector" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Vector", + "details": { + "name": "Vector" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_ToScale.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_ToScale.names new file mode 100644 index 0000000000..1c06bcc228 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_ToScale.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{2FB31ABF-7712-5C5F-BE1B-409D1D0AC120}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "To Scale", + "category": "Math/Matrix4x4", + "tooltip": "Returns scale part of the transformation matrix" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_Transpose.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_Transpose.names new file mode 100644 index 0000000000..922ac1ee22 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_Transpose.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{8A4A10DF-A019-57A6-BF9D-493BBCA6B5E2}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Transpose", + "category": "Math/Matrix4x4", + "tooltip": "returns transpose of Matrix" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_Zero.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_Zero.names new file mode 100644 index 0000000000..9e2a4628df --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathMatrix4x4_Zero.names @@ -0,0 +1,34 @@ +{ + "entries": [ + { + "key": "{9BCEE0D6-B0A0-5944-AC25-7A8111798704}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Zero", + "category": "Math/Matrix4x4", + "tooltip": "returns the zero matrix" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathNumberDeprecated_Add.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathNumberDeprecated_Add.names new file mode 100644 index 0000000000..d178d0f04b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathNumberDeprecated_Add.names @@ -0,0 +1,49 @@ +{ + "entries": [ + { + "key": "{6C52B2D1-3526-4855-A217-5106D54F6B90}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Add", + "category": "Math/Number/Deprecated", + "tooltip": "Add", + "subtitle": "Deprecated" + }, + "slots": [ + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Signal to perform the evaluation when desired." + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out", + "tooltip": "Signaled after the arithmetic operation is done." + } + }, + { + "key": "DataInput_Value A", + "details": { + "name": "Value A" + } + }, + { + "key": "DataInput_Value B", + "details": { + "name": "Value B" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathNumberDeprecated_Divide.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathNumberDeprecated_Divide.names new file mode 100644 index 0000000000..7d1a6635e4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathNumberDeprecated_Divide.names @@ -0,0 +1,49 @@ +{ + "entries": [ + { + "key": "{7379D5B4-787B-4C46-9394-288F16E5BF3A}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Divide", + "category": "Math/Number/Deprecated", + "tooltip": "Divide", + "subtitle": "Deprecated" + }, + "slots": [ + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Signal to perform the evaluation when desired." + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out", + "tooltip": "Signaled after the arithmetic operation is done." + } + }, + { + "key": "DataInput_Value A", + "details": { + "name": "Value A" + } + }, + { + "key": "DataInput_Value B", + "details": { + "name": "Value B" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathNumberDeprecated_Multiply.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathNumberDeprecated_Multiply.names new file mode 100644 index 0000000000..7c1f96ab53 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathNumberDeprecated_Multiply.names @@ -0,0 +1,49 @@ +{ + "entries": [ + { + "key": "{1BC9A5A9-9BF3-4DA7-A8F7-911254AEB243}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Multiply", + "category": "Math/Number/Deprecated", + "tooltip": "Multiply", + "subtitle": "Deprecated" + }, + "slots": [ + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Signal to perform the evaluation when desired." + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out", + "tooltip": "Signaled after the arithmetic operation is done." + } + }, + { + "key": "DataInput_Value A", + "details": { + "name": "Value A" + } + }, + { + "key": "DataInput_Value B", + "details": { + "name": "Value B" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathNumberDeprecated_Subtract.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathNumberDeprecated_Subtract.names new file mode 100644 index 0000000000..01b8a41cae --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathNumberDeprecated_Subtract.names @@ -0,0 +1,49 @@ +{ + "entries": [ + { + "key": "{A10AD4C7-B633-4A75-8210-1353A87441E4}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Subtract", + "category": "Math/Number/Deprecated", + "tooltip": "Subtract", + "subtitle": "Deprecated" + }, + "slots": [ + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Signal to perform the evaluation when desired." + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out", + "tooltip": "Signaled after the arithmetic operation is done." + } + }, + { + "key": "DataInput_Value A", + "details": { + "name": "Value A" + } + }, + { + "key": "DataInput_Value B", + "details": { + "name": "Value B" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathOBB_FromAabb.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathOBB_FromAabb.names new file mode 100644 index 0000000000..62c13d11c8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathOBB_FromAabb.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{25B5779B-C1A0-5963-8F5F-1A7C59F675CD}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Axis Aligned Bounding Box", + "category": "Math/Oriented Bounding Box", + "tooltip": "Converts the Source to an Oriented Bounding Box" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathOBB_FromPositionRotationAndHalfLengths.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathOBB_FromPositionRotationAndHalfLengths.names new file mode 100644 index 0000000000..d59a1fdd33 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathOBB_FromPositionRotationAndHalfLengths.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{6F7A0335-C2D2-53A3-BF18-B3735DBFF8AA}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Position Rotation And Half Lengths", + "category": "Math/Oriented Bounding Box", + "tooltip": "returns an Oriented Bounding Box from the position, rotation and half lengths" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Position", + "details": { + "name": "Position" + } + }, + { + "key": "DataInput_Rotation", + "details": { + "name": "Rotation" + } + }, + { + "key": "DataInput_HalfLengths", + "details": { + "name": "Half Lengths" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathOBB_GetAxisX.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathOBB_GetAxisX.names new file mode 100644 index 0000000000..abfb3f23f5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathOBB_GetAxisX.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{924A1027-ECC4-574D-808A-E4A4EB128552}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Axis X", + "category": "Math/Oriented Bounding Box", + "tooltip": "Returns the X-Axis of Source" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathOBB_GetAxisY.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathOBB_GetAxisY.names new file mode 100644 index 0000000000..2bb5294f11 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathOBB_GetAxisY.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{20C14ACD-F093-5E7D-8EA8-AD89ACDA8438}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Axis Y", + "category": "Math/Oriented Bounding Box", + "tooltip": "Returns the Y-Axis of Source" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathOBB_GetAxisZ.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathOBB_GetAxisZ.names new file mode 100644 index 0000000000..03363e3123 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathOBB_GetAxisZ.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{1A6BADCE-77F7-59F4-9F27-6C08B9D13374}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Axis Z", + "category": "Math/Oriented Bounding Box", + "tooltip": "Returns the Z-Axis of Source" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathOBB_GetPosition.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathOBB_GetPosition.names new file mode 100644 index 0000000000..d69e720586 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathOBB_GetPosition.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{44BAE83D-1C90-5026-BD0D-65406C837A27}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Position", + "category": "Math/Oriented Bounding Box", + "tooltip": "Returns the position of Source" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathOBB_IsFinite.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathOBB_IsFinite.names new file mode 100644 index 0000000000..73e7d36a6e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathOBB_IsFinite.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{150329C4-45BF-5E9C-9358-41C648586F00}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Finite", + "category": "Math/Oriented Bounding Box", + "tooltip": "Returns true if every element in Source is finite, is false" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_DistanceToPoint.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_DistanceToPoint.names new file mode 100644 index 0000000000..7d80966095 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_DistanceToPoint.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{7D49F3FC-A625-5166-9CF6-6F3757A56C14}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Distance To Point", + "category": "Math/Plane", + "tooltip": "Returns the closest distance from Source to Point" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Point", + "details": { + "name": "Point" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_FromCoefficients.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_FromCoefficients.names new file mode 100644 index 0000000000..808f50a2d1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_FromCoefficients.names @@ -0,0 +1,58 @@ +{ + "entries": [ + { + "key": "{C281152D-1617-52B6-BB82-8146F881CCA5}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Coefficients", + "category": "Math/Plane", + "tooltip": "Returns the plane that satisfies the equation Ax + By + Cz + D = 0" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataInput_C", + "details": { + "name": "C" + } + }, + { + "key": "DataInput_D", + "details": { + "name": "D" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_FromNormalAndDistance.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_FromNormalAndDistance.names new file mode 100644 index 0000000000..c4578ba333 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_FromNormalAndDistance.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{85C2F69F-4E0D-5336-B1B1-29AE5A8339E2}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Normal And Distance", + "category": "Math/Plane", + "tooltip": "Returns the plane with the specified Normal and Distance from the origin" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Normal", + "details": { + "name": "Normal" + } + }, + { + "key": "DataInput_Distance", + "details": { + "name": "Distance" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_FromNormalAndPoint.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_FromNormalAndPoint.names new file mode 100644 index 0000000000..e590504d18 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_FromNormalAndPoint.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{ED542A26-BBB3-5747-A40C-2CD08C369C54}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Normal And Point", + "category": "Math/Plane", + "tooltip": "Returns the plane which includes the Point with the specified Normal" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Normal", + "details": { + "name": "Normal" + } + }, + { + "key": "DataInput_Point", + "details": { + "name": "Point" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_GetDistance.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_GetDistance.names new file mode 100644 index 0000000000..d097209d63 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_GetDistance.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{5A3021D3-46AC-5751-B057-7B4E476417F3}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Distance", + "category": "Math/Plane", + "tooltip": "Returns the Source's distance from the origin" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_GetNormal.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_GetNormal.names new file mode 100644 index 0000000000..b149b8451a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_GetNormal.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{76467598-DB87-59DD-8B65-B7636880EAB4}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Normal", + "category": "Math/Plane", + "tooltip": "Returns the surface normal of Source" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_GetPlaneEquationCoefficients.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_GetPlaneEquationCoefficients.names new file mode 100644 index 0000000000..2a904695e9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_GetPlaneEquationCoefficients.names @@ -0,0 +1,58 @@ +{ + "entries": [ + { + "key": "{9F5030EF-15D1-5AEC-988E-8BE2D9C6DD64}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Plane Equation Coefficients", + "category": "Math/Plane", + "tooltip": "Returns Source's coefficient's (A, B, C, D) in the equation Ax + By + Cz + D = 0" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataOutput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataOutput_C", + "details": { + "name": "C" + } + }, + { + "key": "DataOutput_D", + "details": { + "name": "D" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_IsFinite.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_IsFinite.names new file mode 100644 index 0000000000..efdd4a332e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_IsFinite.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{AB336D86-5967-568C-9E2E-D678BAE4DFAC}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Finite", + "category": "Math/Plane", + "tooltip": "Returns true if Source is finite, else false" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_Project.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_Project.names new file mode 100644 index 0000000000..ec23385c33 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_Project.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{BE7F52C0-3FEA-5C78-BAB1-41A8BFEB38EC}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Project", + "category": "Math/Plane", + "tooltip": "Returns the projection of Point onto Source" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Point", + "details": { + "name": "Point" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_Transform.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_Transform.names new file mode 100644 index 0000000000..f075b312ad --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathPlane_Transform.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{43FB92F5-CBC4-553E-982B-714EA2226D42}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Transform", + "category": "Math/Plane", + "tooltip": "Returns Source transformed by Transform" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Transform", + "details": { + "name": "Transform" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_Conjugate.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_Conjugate.names new file mode 100644 index 0000000000..204cd35042 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_Conjugate.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{1328993D-4413-5E46-9116-3AA5C25E97D2}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Conjugate", + "category": "Math/Quaternion", + "tooltip": "Returns the conjugate of the source, (-x, -y, -z, w)" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_ConvertTransformToRotation.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_ConvertTransformToRotation.names new file mode 100644 index 0000000000..3d0d0823b1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_ConvertTransformToRotation.names @@ -0,0 +1,39 @@ +{ + "entries": [ + { + "key": "{10B3E787-BC20-5317-9553-647D40D79DCD}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Convert Transform To Rotation", + "category": "Math/Quaternion" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Transform", + "details": { + "name": "Transform" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_CreateFromEulerAngles.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_CreateFromEulerAngles.names new file mode 100644 index 0000000000..69cdb0f4b9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_CreateFromEulerAngles.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{82FB60FB-2417-5BDC-ADF7-9C08DE88E793}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Create From Euler Angles", + "category": "Math/Quaternion", + "tooltip": "Returns a new Quaternion initialized with the specified Angles" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Pitch", + "details": { + "name": "Pitch" + } + }, + { + "key": "DataInput_Roll", + "details": { + "name": "Roll" + } + }, + { + "key": "DataInput_Yaw", + "details": { + "name": "Yaw" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_Dot.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_Dot.names new file mode 100644 index 0000000000..26fe0c1b79 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_Dot.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{46366DEB-4F16-54AF-A618-073E0E2C1DA4}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Dot", + "category": "Math/Quaternion", + "tooltip": "Returns the Dot product of A and B" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_FromAxisAngleDegrees.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_FromAxisAngleDegrees.names new file mode 100644 index 0000000000..9851c3fd8f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_FromAxisAngleDegrees.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{6AEAAC03-A8D7-5C29-9F23-07FF59EE55D7}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Axis Angle (Degrees)", + "category": "Math/Quaternion", + "tooltip": "Returns the rotation created from Axis the angle Degrees" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Axis", + "details": { + "name": "Axis" + } + }, + { + "key": "DataInput_Degrees", + "details": { + "name": "Degrees" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_FromMatrix3x3.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_FromMatrix3x3.names new file mode 100644 index 0000000000..906014820e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_FromMatrix3x3.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{59C4651F-A5E7-59FD-81FE-D7BD07B36346}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Matrix3x3", + "category": "Math/Quaternion", + "tooltip": "Returns a rotation created from the 3x3 matrix source" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_FromMatrix4x4.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_FromMatrix4x4.names new file mode 100644 index 0000000000..cbfd1dc1ea --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_FromMatrix4x4.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{B2C7B9DD-C9DD-5971-AA76-95603BED9BD8}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Matrix4x4", + "category": "Math/Quaternion", + "tooltip": "Returns a rotation created from the 4x4 matrix source" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_FromTransform.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_FromTransform.names new file mode 100644 index 0000000000..3a708bac08 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_FromTransform.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{2F3E079E-23F9-5BC4-9B1A-DD2FAFBF921F}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Transform", + "category": "Math/Quaternion", + "tooltip": "Returns a rotation created from the rotation part of the transform source" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_InvertFull.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_InvertFull.names new file mode 100644 index 0000000000..fc4ab2f1c7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_InvertFull.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{25150C46-3ECA-596A-8643-DB9B143D17C9}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Invert Full", + "category": "Math/Quaternion", + "tooltip": "Returns the inverse for any rotation, not just unit rotations" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_IsClose.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_IsClose.names new file mode 100644 index 0000000000..4af70867e8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_IsClose.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{7CF70E06-039B-5DFB-BA6D-A94DBB010A91}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Close", + "category": "Math/Quaternion", + "tooltip": "Returns true if A and B are within Tolerance of each other" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataInput_Tolerance", + "details": { + "name": "Tolerance" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_IsFinite.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_IsFinite.names new file mode 100644 index 0000000000..0ccd7a1ce7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_IsFinite.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{0FF1A082-1200-57C4-8CE6-A17844BEBD1A}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Finite", + "category": "Math/Quaternion", + "tooltip": "Returns true if every element in Source is finite" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_IsIdentity.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_IsIdentity.names new file mode 100644 index 0000000000..62655f407c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_IsIdentity.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{6D6D359A-BD00-5ADA-B634-C4F6B0949BFF}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Identity", + "category": "Math/Quaternion", + "tooltip": "Returns true if Source is within Tolerance of the Identity rotation" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Tolerance", + "details": { + "name": "Tolerance" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_IsZero.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_IsZero.names new file mode 100644 index 0000000000..9ab1882a09 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_IsZero.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{F7805CC3-4A0A-58BD-968F-5D1CAA4D8215}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Zero", + "category": "Math/Quaternion", + "tooltip": "Returns true if Source is within Tolerance of the Zero rotation" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Tolerance", + "details": { + "name": "Tolerance" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_LengthReciprocal.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_LengthReciprocal.names new file mode 100644 index 0000000000..772ab4f4d6 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_LengthReciprocal.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{4CDE86F1-8ABD-5F13-8BFE-622728F845DC}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Length Reciprocal", + "category": "Math/Quaternion", + "tooltip": "Returns the reciprocal length of Source" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_LengthSquared.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_LengthSquared.names new file mode 100644 index 0000000000..8890491e60 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_LengthSquared.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{FC266E04-338B-57CE-A529-28056AB3AB43}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Length Squared", + "category": "Math/Quaternion", + "tooltip": "Returns the square of the length of Source" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_Lerp.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_Lerp.names new file mode 100644 index 0000000000..16925c829a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_Lerp.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{A3B1E26D-BF69-5009-A3B4-868DBE3106A3}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Lerp", + "category": "Math/Quaternion", + "tooltip": "Returns a the linear interpolation between From and To by the amount T" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_From", + "details": { + "name": "From" + } + }, + { + "key": "DataInput_To", + "details": { + "name": "To" + } + }, + { + "key": "DataInput_T", + "details": { + "name": "T" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_MultiplyByNumber.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_MultiplyByNumber.names new file mode 100644 index 0000000000..9c8fdd2ada --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_MultiplyByNumber.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{36ECEF91-815A-5D40-B21F-0CAA4D6DAD53}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Multiply By Number", + "category": "Math/Quaternion", + "tooltip": "Returns the Source with each element multiplied by Multiplier" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Multiplier", + "details": { + "name": "Multiplier" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_Negate.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_Negate.names new file mode 100644 index 0000000000..ac5912acc4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_Negate.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{0E9A2E40-9EEE-5D46-92BD-60E20F99E96E}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Negate", + "category": "Math/Quaternion", + "tooltip": "Returns the Source with each element negated" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_Normalize.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_Normalize.names new file mode 100644 index 0000000000..c5773851d4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_Normalize.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{215978F2-1B5F-597D-BE5D-C01A1E77F2BF}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Normalize", + "category": "Math/Quaternion", + "tooltip": "Returns the normalized version of Source" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_RotateVector3.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_RotateVector3.names new file mode 100644 index 0000000000..cbd26e5162 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_RotateVector3.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{56C01595-FE08-54FC-9668-D203D59F506D}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Rotate Vector3", + "category": "Math/Quaternion", + "tooltip": "Returns a new Vector3 that is the source vector3 rotated by the given Quaternion" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Quaternion", + "details": { + "name": "Quaternion" + } + }, + { + "key": "DataInput_Vector", + "details": { + "name": "Vector" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_RotationXDegrees.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_RotationXDegrees.names new file mode 100644 index 0000000000..4eb971a203 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_RotationXDegrees.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{261E424C-4241-5777-8742-21945C69FD29}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Rotation X (Degrees)", + "category": "Math/Quaternion", + "tooltip": "Creates a rotation of Degrees around the x-axis" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Degrees", + "details": { + "name": "Degrees" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_RotationYDegrees.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_RotationYDegrees.names new file mode 100644 index 0000000000..aada946ccc --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_RotationYDegrees.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{66AC039B-8D0D-5E4C-A4EA-20F767C4EAF5}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Rotation Y (Degrees)", + "category": "Math/Quaternion", + "tooltip": "Creates a rotation of Degrees around the y-axis" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Degrees", + "details": { + "name": "Degrees" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_RotationZDegrees.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_RotationZDegrees.names new file mode 100644 index 0000000000..7a72aa9330 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_RotationZDegrees.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{1373DA97-B94D-5DBB-9F0C-175CAE46851A}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Rotation Z (Degrees)", + "category": "Math/Quaternion", + "tooltip": "Creates a rotation of Degrees around the z-axis" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Degrees", + "details": { + "name": "Degrees" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_ShortestArc.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_ShortestArc.names new file mode 100644 index 0000000000..deb69f734f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_ShortestArc.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{7809B038-3F50-533D-8AEF-35CDBDDFCA71}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Shortest Arc", + "category": "Math/Quaternion", + "tooltip": "Creates a rotation representing the shortest arc between From and To" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_From", + "details": { + "name": "From" + } + }, + { + "key": "DataInput_To", + "details": { + "name": "To" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_Slerp.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_Slerp.names new file mode 100644 index 0000000000..a1d1dfa30b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_Slerp.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{92A204FE-A6E2-5EB7-B2A2-F782DBA8C1C3}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Slerp", + "category": "Math/Quaternion", + "tooltip": "Returns the spherical linear interpolation between From and To by the amount T, the result is NOT normalized" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_From", + "details": { + "name": "From" + } + }, + { + "key": "DataInput_To", + "details": { + "name": "To" + } + }, + { + "key": "DataInput_T", + "details": { + "name": "T" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_Squad.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_Squad.names new file mode 100644 index 0000000000..c9efc06f69 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_Squad.names @@ -0,0 +1,64 @@ +{ + "entries": [ + { + "key": "{E7275C69-D728-5468-9402-C4FBA1ADDA97}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Squad", + "category": "Math/Quaternion", + "tooltip": "Returns the quadratic interpolation, that is: Squad(From, To, In, Out, T) = Slerp(Slerp(From, Out, T), Slerp(To, In, T), 2(1 - T)T)" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_From", + "details": { + "name": "From" + } + }, + { + "key": "DataInput_To", + "details": { + "name": "To" + } + }, + { + "key": "DataInput_In", + "details": { + "name": "In" + } + }, + { + "key": "DataInput_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_T", + "details": { + "name": "T" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_ToAngleDegrees.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_ToAngleDegrees.names new file mode 100644 index 0000000000..11efc83cb5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathQuaternion_ToAngleDegrees.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{D3471394-97F1-5A37-82E0-F570B882F9C9}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "To Angle (Degrees)", + "category": "Math/Quaternion", + "tooltip": "Returns the angle of angle-axis pair that Source represents in degrees" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomColor.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomColor.names new file mode 100644 index 0000000000..2e70823599 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomColor.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{66072FDF-E318-5A40-B0C1-FD9EE0F59D7B}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Random Color", + "category": "Math/Random", + "tooltip": "Returns a random color [Min, Max]" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Min", + "details": { + "name": "Min" + } + }, + { + "key": "DataInput_Max", + "details": { + "name": "Max" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomGrayscale.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomGrayscale.names new file mode 100644 index 0000000000..15bb0a397c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomGrayscale.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{E16EC7BB-A046-5CD7-B26C-0A75358A37F2}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Random Grayscale", + "category": "Math/Random", + "tooltip": "Returns a random grayscale color between [Min, Max] intensities" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Min", + "details": { + "name": "Min" + } + }, + { + "key": "DataInput_Max", + "details": { + "name": "Max" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomInteger.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomInteger.names new file mode 100644 index 0000000000..4fad43953b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomInteger.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{48BF5246-995E-5EFD-B541-F468937D2423}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Random Integer", + "category": "Math/Random", + "tooltip": "Returns a random integer [Min, Max]" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Min", + "details": { + "name": "Min" + } + }, + { + "key": "DataInput_Max", + "details": { + "name": "Max" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomNumber.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomNumber.names new file mode 100644 index 0000000000..3dfe2b70c6 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomNumber.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{898C7B53-2829-58ED-A053-1641A2BC14E2}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Random Number", + "category": "Math/Random", + "tooltip": "Returns a random real number [Min, Max]" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Min", + "details": { + "name": "Min" + } + }, + { + "key": "DataInput_Max", + "details": { + "name": "Max" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInArc.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInArc.names new file mode 100644 index 0000000000..76cc80bb9a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInArc.names @@ -0,0 +1,64 @@ +{ + "entries": [ + { + "key": "{3A668745-A312-5849-A2D3-AEF533F2CE3D}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Random Point In Arc", + "category": "Math/Random", + "tooltip": "Returns a random point in the specified arc" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Origin", + "details": { + "name": "Origin" + } + }, + { + "key": "DataInput_Direction", + "details": { + "name": "Direction" + } + }, + { + "key": "DataInput_Normal", + "details": { + "name": "Normal" + } + }, + { + "key": "DataInput_Radius", + "details": { + "name": "Radius" + } + }, + { + "key": "DataInput_Angle", + "details": { + "name": "Angle" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInBox.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInBox.names new file mode 100644 index 0000000000..3e66186f01 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInBox.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{8F7532AC-DABD-5EE6-8D84-A063032A82D4}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Random Point In Box", + "category": "Math/Random", + "tooltip": "Returns a random point in a box" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Dimensions", + "details": { + "name": "Dimensions" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInCircle.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInCircle.names new file mode 100644 index 0000000000..fa9aa601c7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInCircle.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{90F4E470-10AB-5D78-9B20-100132F0BEA9}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Random Point In Circle", + "category": "Math/Random", + "tooltip": "Returns a random point inside the area of a circle" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Radius", + "details": { + "name": "Radius" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInCone.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInCone.names new file mode 100644 index 0000000000..7b48818c3a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInCone.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{00464520-3FAA-5725-BE01-4F13A50E430F}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Random Point In Cone", + "category": "Math/Random", + "tooltip": "Returns a random point in a cone" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Radius", + "details": { + "name": "Radius" + } + }, + { + "key": "DataInput_Angle", + "details": { + "name": "Angle" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInCylinder.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInCylinder.names new file mode 100644 index 0000000000..4f383fc218 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInCylinder.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{DE205B79-32D5-5FA9-868A-442CE0388F7F}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Random Point In Cylinder", + "category": "Math/Random", + "tooltip": "Returns a random point in a cylinder" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Radius", + "details": { + "name": "Radius" + } + }, + { + "key": "DataInput_Height", + "details": { + "name": "Height" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInEllipsoid.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInEllipsoid.names new file mode 100644 index 0000000000..0097ccc4a5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInEllipsoid.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{3234ADB9-4B1E-594B-8AF6-EC857CCA1241}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Random Point In Ellipsoid", + "category": "Math/Random", + "tooltip": "Returns a random point in an ellipsoid" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Dimensions", + "details": { + "name": "Dimensions" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInSphere.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInSphere.names new file mode 100644 index 0000000000..ef39e9d0bf --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInSphere.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{5C87299A-E9AF-591D-8E20-4A1B8F4A92CD}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Random Point In Sphere", + "category": "Math/Random", + "tooltip": "Returns a random point in a sphere" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Radius", + "details": { + "name": "Radius" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInSquare.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInSquare.names new file mode 100644 index 0000000000..9793721ef9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInSquare.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{4CF31307-D138-5021-A5AE-F352C95DC212}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Random Point In Square", + "category": "Math/Random", + "tooltip": "Returns a random point in a square" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Dimensions", + "details": { + "name": "Dimensions" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInWedge.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInWedge.names new file mode 100644 index 0000000000..89f9558c38 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointInWedge.names @@ -0,0 +1,70 @@ +{ + "entries": [ + { + "key": "{A2D614BC-1636-5F54-868A-BF5544910967}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Random Point In Wedge", + "category": "Math/Random", + "tooltip": "Returns a random point in the specified wedge" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Origin", + "details": { + "name": "Origin" + } + }, + { + "key": "DataInput_Direction", + "details": { + "name": "Direction" + } + }, + { + "key": "DataInput_Normal", + "details": { + "name": "Normal" + } + }, + { + "key": "DataInput_Radius", + "details": { + "name": "Radius" + } + }, + { + "key": "DataInput_Height", + "details": { + "name": "Height" + } + }, + { + "key": "DataInput_Angle", + "details": { + "name": "Angle" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointOnCircle.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointOnCircle.names new file mode 100644 index 0000000000..428cd58136 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointOnCircle.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{D726B72F-9300-5D21-BE2C-8CB089BFDBA3}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Random Point On Circle", + "category": "Math/Random", + "tooltip": "Returns a random point on the circumference of a circle" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Radius", + "details": { + "name": "Radius" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointOnSphere.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointOnSphere.names new file mode 100644 index 0000000000..f648814dfc --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomPointOnSphere.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{7DFA3F08-B554-550A-93F8-4D7CBAA775E9}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Random Point On Sphere", + "category": "Math/Random", + "tooltip": "Returns a random point on the surface of a sphere" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Radius", + "details": { + "name": "Radius" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomQuaternion.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomQuaternion.names new file mode 100644 index 0000000000..161d7552d4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomQuaternion.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{E9902EB1-82B9-5EF2-B7B6-51BAFECA0B91}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Random Quaternion", + "category": "Math/Random", + "tooltip": "Returns a random quaternion" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Min", + "details": { + "name": "Min" + } + }, + { + "key": "DataInput_Max", + "details": { + "name": "Max" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomUnitVector2.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomUnitVector2.names new file mode 100644 index 0000000000..c27266cdcf --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomUnitVector2.names @@ -0,0 +1,34 @@ +{ + "entries": [ + { + "key": "{4DC88D65-16B5-525C-AA9A-5C19F2F9165C}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Random Unit Vector2", + "category": "Math/Random", + "tooltip": "Returns a random Vector2 direction" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomUnitVector3.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomUnitVector3.names new file mode 100644 index 0000000000..2a7ca79279 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomUnitVector3.names @@ -0,0 +1,34 @@ +{ + "entries": [ + { + "key": "{D0A2F62C-EB98-51CC-A482-80F9623CE128}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Random Unit Vector3", + "category": "Math/Random", + "tooltip": "Returns a random Vector3 direction" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomVector2.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomVector2.names new file mode 100644 index 0000000000..b185b25309 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomVector2.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{00E27150-6B42-5C54-B600-70051B106C82}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Random Vector2", + "category": "Math/Random", + "tooltip": "Returns a random Vector2" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Min", + "details": { + "name": "Min" + } + }, + { + "key": "DataInput_Max", + "details": { + "name": "Max" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomVector3.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomVector3.names new file mode 100644 index 0000000000..3be02e9d63 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomVector3.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{0A1CA315-EFAB-50DC-8C61-2C9763D25E31}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Random Vector3", + "category": "Math/Random", + "tooltip": "Returns a random Vector3" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Min", + "details": { + "name": "Min" + } + }, + { + "key": "DataInput_Max", + "details": { + "name": "Max" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomVector4.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomVector4.names new file mode 100644 index 0000000000..060a2aa54c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathRandom_RandomVector4.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{1C8987BF-7EA0-58CF-A4CC-2A998C9ADA68}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Random Vector4", + "category": "Math/Random", + "tooltip": "Returns a random Vector4" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Min", + "details": { + "name": "Min" + } + }, + { + "key": "DataInput_Max", + "details": { + "name": "Max" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_FromMatrix3x3.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_FromMatrix3x3.names new file mode 100644 index 0000000000..6467b86b65 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_FromMatrix3x3.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{BC6D613C-CBE5-5B01-9207-16D0B158799D}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Matrix3x3", + "category": "Math/Transform", + "tooltip": "Returns a transform with from 3x3 matrix and with the translation set to zero" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_FromMatrix3x3AndTranslation.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_FromMatrix3x3AndTranslation.names new file mode 100644 index 0000000000..a982f27f00 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_FromMatrix3x3AndTranslation.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{D2321D1F-C3B8-516E-AFE2-3A536A89BCAB}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Matrix3x3 And Translation", + "category": "Math/Transform", + "tooltip": "Returns a transform from the 3x3 matrix and the translation" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Matrix", + "details": { + "name": "Matrix" + } + }, + { + "key": "DataInput_Translation", + "details": { + "name": "Translation" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_FromRotation.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_FromRotation.names new file mode 100644 index 0000000000..8f9e25ac73 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_FromRotation.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{B5BCF19E-2EF2-584E-B4B6-0FC7E9FEE99B}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Rotation", + "category": "Math/Transform", + "tooltip": "Returns a transform from the rotation and with the translation set to zero" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_FromRotationAndTranslation.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_FromRotationAndTranslation.names new file mode 100644 index 0000000000..86af19524d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_FromRotationAndTranslation.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{C2A304B1-9D48-5A2A-BCEE-69BCD72379E3}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Rotation And Translation", + "category": "Math/Transform", + "tooltip": "Returns a transform from the rotation and the translation" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Rotation", + "details": { + "name": "Rotation" + } + }, + { + "key": "DataInput_Translation", + "details": { + "name": "Translation" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_FromScale.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_FromScale.names new file mode 100644 index 0000000000..c7b3729287 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_FromScale.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{5DAB6076-4F49-5163-9E3C-CE3DF59E710C}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Scale", + "category": "Math/Transform", + "tooltip": "Returns a transform which applies the specified uniform Scale, but no rotation or translation" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Scale", + "details": { + "name": "Scale" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_FromTranslation.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_FromTranslation.names new file mode 100644 index 0000000000..9de04cbca8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_FromTranslation.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{DFCF0A6F-9907-52B1-BBF3-632CB929C1B1}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Translation", + "category": "Math/Transform", + "tooltip": "Returns a translation matrix and the rotation set to zero" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Translation", + "details": { + "name": "Translation" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_GetForward.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_GetForward.names new file mode 100644 index 0000000000..60ca484883 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_GetForward.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{1D27BC5A-44D6-526E-B1EC-4B080B750ED1}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Forward", + "category": "Math/Transform", + "tooltip": "Returns the forward direction vector from the specified transform scaled by a given value (O3DE uses Z up, right handed)" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Scale", + "details": { + "name": "Scale" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_GetRight.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_GetRight.names new file mode 100644 index 0000000000..9c9105301e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_GetRight.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{78E62FB8-7CD0-5E4D-BA31-9E62867C4F6A}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Right", + "category": "Math/Transform", + "tooltip": "Returns the right direction vector from the specified transform scaled by a given value (O3DE uses Z up, right handed)" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Scale", + "details": { + "name": "Scale" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_GetTranslation.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_GetTranslation.names new file mode 100644 index 0000000000..657ae89af1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_GetTranslation.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{BA0C1841-5632-5329-BCD3-CDF12B1D8682}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Translation", + "category": "Math/Transform", + "tooltip": "Returns the translation of Source" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_GetUp.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_GetUp.names new file mode 100644 index 0000000000..9eae139080 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_GetUp.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{0351A1F0-7F51-58C2-9ED4-F617B897A523}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Up", + "category": "Math/Transform", + "tooltip": "Returns the up direction vector from the specified transform scaled by a given value (O3DE uses Z up, right handed)" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Scale", + "details": { + "name": "Scale" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_IsClose.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_IsClose.names new file mode 100644 index 0000000000..47fdde6039 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_IsClose.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{D58A9E0D-5C09-56AB-8D8C-C9C501BA62A3}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Close", + "category": "Math/Transform", + "tooltip": "Returns true if every row of A is within Tolerance of corresponding row in B, else false" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataInput_Tolerance", + "details": { + "name": "Tolerance" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_IsFinite.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_IsFinite.names new file mode 100644 index 0000000000..5a820ec8aa --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_IsFinite.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{BFF80CFD-5A54-5ADA-83FF-3849FD4E675D}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Finite", + "category": "Math/Transform", + "tooltip": "Returns true if every row of source is finite, else false" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_IsOrthogonal.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_IsOrthogonal.names new file mode 100644 index 0000000000..77f686a375 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_IsOrthogonal.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{D6B704EB-62A7-5CEB-B715-4CD402E1BAF9}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Orthogonal", + "category": "Math/Transform", + "tooltip": "Returns true if the upper 3x3 matrix of Source is within Tolerance of orthogonal, else false" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Tolerance", + "details": { + "name": "Tolerance" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_MultiplyByUniformScale.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_MultiplyByUniformScale.names new file mode 100644 index 0000000000..a898617aa1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_MultiplyByUniformScale.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{493F14D7-FC42-5544-9BA1-400762EB6D41}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Multiply By Uniform Scale", + "category": "Math/Transform", + "tooltip": "Returns Source multiplied uniformly by Scale" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Scale", + "details": { + "name": "Scale" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_MultiplyByVector3.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_MultiplyByVector3.names new file mode 100644 index 0000000000..e227c1ef2b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_MultiplyByVector3.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{00EEE23E-7FAC-5DE4-A3B1-9AC4DBD40AE4}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Multiply By Vector3", + "category": "Math/Transform", + "tooltip": "Returns Source post multiplied by Multiplier" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Multiplier", + "details": { + "name": "Multiplier" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_MultiplyByVector4.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_MultiplyByVector4.names new file mode 100644 index 0000000000..64820d14e1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_MultiplyByVector4.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{FB87C32E-BB06-5499-B210-4EE109C419DC}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Multiply By Vector4", + "category": "Math/Transform", + "tooltip": "Returns Source post multiplied by Multiplier" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Multiplier", + "details": { + "name": "Multiplier" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_Orthogonalize.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_Orthogonalize.names new file mode 100644 index 0000000000..4e803bc6b7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_Orthogonalize.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{0CF20F04-C784-546B-80FB-0A705BB3D25A}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Orthogonalize", + "category": "Math/Transform", + "tooltip": "Returns an orthogonal matrix if the Source is almost orthogonal" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_RotationXDegrees.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_RotationXDegrees.names new file mode 100644 index 0000000000..d50b4f99e4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_RotationXDegrees.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{93283EA1-ADED-53B8-B3BE-A7B933918286}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Rotation X (Degrees)", + "category": "Math/Transform", + "tooltip": "Returns a transform representing a rotation Degrees around the X-Axis" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Degrees", + "details": { + "name": "Degrees" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_RotationYDegrees.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_RotationYDegrees.names new file mode 100644 index 0000000000..2da86bdade --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_RotationYDegrees.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{380DB52D-3BEB-553C-B903-F5824AE1A0C6}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Rotation Y (Degrees)", + "category": "Math/Transform", + "tooltip": "Returns a transform representing a rotation Degrees around the Y-Axis" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Degrees", + "details": { + "name": "Degrees" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_RotationZDegrees.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_RotationZDegrees.names new file mode 100644 index 0000000000..75a0e7d1ec --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_RotationZDegrees.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{70D7DC40-B9AB-55F6-8E80-A9F8EA9BE964}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Rotation Z (Degrees)", + "category": "Math/Transform", + "tooltip": "Returns a transform representing a rotation Degrees around the Z-Axis" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Degrees", + "details": { + "name": "Degrees" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_ToScale.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_ToScale.names new file mode 100644 index 0000000000..3e9da773e0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathTransform_ToScale.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{AC6712AA-0494-5879-B7F8-4B04352924DE}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "To Scale", + "category": "Math/Transform", + "tooltip": "Returns the uniform scale of the Source" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Absolute.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Absolute.names new file mode 100644 index 0000000000..8eb626b066 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Absolute.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{97858B5F-57A8-5DE4-BA1D-ABE2504DE79D}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Absolute", + "category": "Math/Vector2", + "tooltip": "Returns a vector with the absolute values of the elements of the source" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Angle.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Angle.names new file mode 100644 index 0000000000..d70cb4b898 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Angle.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{BAA9A44B-EC0E-536B-B64A-EA652596F40A}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Angle", + "category": "Math/Vector2", + "tooltip": "Returns a unit length vector from an angle in radians" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Angle", + "details": { + "name": "Angle" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Clamp.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Clamp.names new file mode 100644 index 0000000000..970b1647a8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Clamp.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{636D27FE-E3E3-5983-A364-9147CD42F2D2}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Clamp", + "category": "Math/Vector2", + "tooltip": "Returns vector clamped to [min, max] and equal to source if possible" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Min", + "details": { + "name": "Min" + } + }, + { + "key": "DataInput_Max", + "details": { + "name": "Max" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_DirectionTo.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_DirectionTo.names new file mode 100644 index 0000000000..53b667f5d4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_DirectionTo.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{ECDE911F-56B4-5D91-86A6-32C4F9461305}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Direction To", + "category": "Math/Vector2", + "tooltip": "Returns a direction vector between two points and the distance between them, by default the direction will be normalized, but it may be optionally scaled using the Scale parameter if different from 1.0" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_From", + "details": { + "name": "From" + } + }, + { + "key": "DataInput_To", + "details": { + "name": "To" + } + }, + { + "key": "DataInput_Scale", + "details": { + "name": "Scale" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Distance.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Distance.names new file mode 100644 index 0000000000..81c7caac36 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Distance.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{38BE4B13-7B8C-5FCF-9313-74E6C9C3BE06}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Distance", + "category": "Math/Vector2", + "tooltip": "Returns the distance from B to A, that is the magnitude of the vector (A - B)" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_DistanceSquared.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_DistanceSquared.names new file mode 100644 index 0000000000..d8282d40d0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_DistanceSquared.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{1CBF4712-4BB5-5FB9-BC5F-C34E0C076334}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Distance Squared", + "category": "Math/Vector2", + "tooltip": "Returns the distance squared from B to A, (generally faster than the actual distance if only needed for comparison)" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Dot.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Dot.names new file mode 100644 index 0000000000..21a9836da5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Dot.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{9F91A118-D85A-5357-ACE3-92A78AA2C4FC}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Dot", + "category": "Math/Vector2", + "tooltip": "Returns the vector dot product of A dot B" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_FromValues.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_FromValues.names new file mode 100644 index 0000000000..1825d3b69f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_FromValues.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{10158AAB-73B0-5863-A7CA-11616E05CBE4}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Values", + "category": "Math/Vector2", + "tooltip": "Returns a vector from elements" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_X", + "details": { + "name": "X" + } + }, + { + "key": "DataInput_Y", + "details": { + "name": "Y" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_GetElement.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_GetElement.names new file mode 100644 index 0000000000..4abdac379a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_GetElement.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{4843E512-0335-5411-A548-8AC8245B6845}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Element", + "category": "Math/Vector2", + "tooltip": "Returns the element corresponding to the index (0 -> x) (1 -> y)" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Index", + "details": { + "name": "Index" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_IsClose.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_IsClose.names new file mode 100644 index 0000000000..30d0f9eab6 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_IsClose.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{82F6EBA6-BBF5-5063-84E6-8C4BCEF7E4A3}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Close", + "category": "Math/Vector2", + "tooltip": "Returns true if the difference between A and B is less than tolerance, else false" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataInput_Tolerance", + "details": { + "name": "Tolerance" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_IsFinite.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_IsFinite.names new file mode 100644 index 0000000000..d170de9066 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_IsFinite.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{3D6F65B5-020D-55EE-B807-C54D10DDC647}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Finite", + "category": "Math/Vector2", + "tooltip": "Returns true if every element in the source is finite, else false" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_IsNormalized.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_IsNormalized.names new file mode 100644 index 0000000000..aecdcde55d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_IsNormalized.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{AD815735-ED31-535E-BEEF-471259B271E3}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Normalized", + "category": "Math/Vector2", + "tooltip": "Returns true if the length of the source is within tolerance of 1.0, else false" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Tolerance", + "details": { + "name": "Tolerance" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_IsZero.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_IsZero.names new file mode 100644 index 0000000000..d0869fffd0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_IsZero.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{A8F6E886-BFCC-5546-8516-1564C1A56D18}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Zero", + "category": "Math/Vector2", + "tooltip": "Returns true if A is within tolerance of the zero vector, else false" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Tolerance", + "details": { + "name": "Tolerance" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Length.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Length.names new file mode 100644 index 0000000000..99e7922e75 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Length.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{AD0A51F8-F87B-504E-84F0-8C60927D3798}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Length", + "category": "Math/Vector2", + "tooltip": "Returns the magnitude of source" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_LengthSquared.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_LengthSquared.names new file mode 100644 index 0000000000..6ff64af10f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_LengthSquared.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{EF19330A-6FF7-5B8C-B029-C429525A3223}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Length Squared", + "category": "Math/Vector2", + "tooltip": "Returns the magnitude squared of the source, generally faster than getting the exact length" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Lerp.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Lerp.names new file mode 100644 index 0000000000..78bf3b0d6f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Lerp.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{978B5227-CE5B-501A-8EA8-54DE40DFF558}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Lerp", + "category": "Math/Vector2", + "tooltip": "Returns the linear interpolation (From + ((To - From) * T)" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_From", + "details": { + "name": "From" + } + }, + { + "key": "DataInput_To", + "details": { + "name": "To" + } + }, + { + "key": "DataInput_T", + "details": { + "name": "T" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Max.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Max.names new file mode 100644 index 0000000000..6b906d80bf --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Max.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{5CA4EE87-53A9-514C-8278-F311F447B7B1}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Max", + "category": "Math/Vector2", + "tooltip": "Returns the vector (max(A.x, B.x), max(A.y, B.y))" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Min.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Min.names new file mode 100644 index 0000000000..bc50faf138 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Min.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{894F73E5-0447-5627-9B16-FDD649DA7A42}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Min", + "category": "Math/Vector2", + "tooltip": "Returns the vector (min(A.x, B.x), min(A.y, B.y))" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_MultiplyByNumber.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_MultiplyByNumber.names new file mode 100644 index 0000000000..14e227c51d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_MultiplyByNumber.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{4FA0D3F0-A95B-5DEB-B46D-E9D08C43D55E}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Multiply By Number", + "category": "Math/Vector2", + "tooltip": "Returns the vector Source with each element multiplied by Multiplier" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Multiplier", + "details": { + "name": "Multiplier" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Negate.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Negate.names new file mode 100644 index 0000000000..d0501ee1b3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Negate.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{E4C28D60-B4AA-555A-BE46-DB4D7196C532}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Negate", + "category": "Math/Vector2", + "tooltip": "Returns the vector Source with each element multiplied by -1" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Normalize.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Normalize.names new file mode 100644 index 0000000000..a8c9e0ef3b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Normalize.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{E019ADBA-0793-5653-A4BD-446F41FED0BC}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Normalize", + "category": "Math/Vector2", + "tooltip": "Returns a unit length vector in the same direction as the source, or (1,0,0) if the source length is too small" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Project.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Project.names new file mode 100644 index 0000000000..e6a60b35aa --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Project.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{F4826124-F3C7-59B5-B92B-4CD00AADFED3}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Project", + "category": "Math/Vector2", + "tooltip": "Returns the vector of A projected onto B, (Dot(A, B)/(Dot(B, B)) * B" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_SetX.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_SetX.names new file mode 100644 index 0000000000..001c062eb8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_SetX.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{6FA3AADA-3B14-5C7C-8F7C-75818C3AEC94}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Set X", + "category": "Math/Vector2", + "tooltip": "Returns a the vector(X, Source.Y)" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_X", + "details": { + "name": "X" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_SetY.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_SetY.names new file mode 100644 index 0000000000..cb0655fafc --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_SetY.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{2969A368-000E-5723-8821-1B97790917E7}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Set Y", + "category": "Math/Vector2", + "tooltip": "Returns a the vector(Source.X, Y)" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Y", + "details": { + "name": "Y" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Slerp.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Slerp.names new file mode 100644 index 0000000000..d6e29b7a5f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_Slerp.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{6071D322-86AF-5900-B073-33E74146525B}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Slerp", + "category": "Math/Vector2", + "tooltip": "Returns a vector that is the spherical linear interpolation T, between From and To" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_From", + "details": { + "name": "From" + } + }, + { + "key": "DataInput_To", + "details": { + "name": "To" + } + }, + { + "key": "DataInput_T", + "details": { + "name": "T" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_ToPerpendicular.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_ToPerpendicular.names new file mode 100644 index 0000000000..5ea65c816c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector2_ToPerpendicular.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{78889490-B826-5682-9464-117DB8083AF4}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "To Perpendicular", + "category": "Math/Vector2", + "tooltip": "Returns the vector (-Source.y, Source.x), a 90 degree, positive rotation" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Absolute.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Absolute.names new file mode 100644 index 0000000000..dbaeb967a2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Absolute.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{8C3D49FD-9913-5104-B67B-2DFC9223E08B}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Absolute", + "category": "Math/Vector3", + "tooltip": "Returns a vector with the absolute values of the elements of the source" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_BuildTangentBasis.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_BuildTangentBasis.names new file mode 100644 index 0000000000..05aec1da52 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_BuildTangentBasis.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{07875A9A-81DF-59BA-95E8-3BB5D3E7CF0E}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Build Tangent Basis", + "category": "Math/Vector3", + "tooltip": "Returns a tangent basis from the normal" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Normal", + "details": { + "name": "Normal" + } + }, + { + "key": "DataOutput_Tangent", + "details": { + "name": "Tangent" + } + }, + { + "key": "DataOutput_Bitangent", + "details": { + "name": "Bitangent" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Clamp.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Clamp.names new file mode 100644 index 0000000000..28e5747493 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Clamp.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{F14339D1-DB1C-584F-A91E-2D10D29255DF}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Clamp", + "category": "Math/Vector3", + "tooltip": "Returns vector clamped to [min, max] and equal to source if possible" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Min", + "details": { + "name": "Min" + } + }, + { + "key": "DataInput_Max", + "details": { + "name": "Max" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Cross.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Cross.names new file mode 100644 index 0000000000..64f6d9f992 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Cross.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{8645F3FA-D1BE-59A2-B183-19FEA198101D}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Cross", + "category": "Math/Vector3", + "tooltip": "Returns the vector cross product of A X B" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_DirectionTo.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_DirectionTo.names new file mode 100644 index 0000000000..b0e542b842 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_DirectionTo.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{CA0FE782-4D45-5CFD-94D4-88CC687429FB}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Direction To", + "category": "Math/Vector3", + "tooltip": "Returns a direction vector between two points and the distance between them, by default the direction will be normalized, but it may be optionally scaled using the Scale parameter if different from 1.0" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_From", + "details": { + "name": "From" + } + }, + { + "key": "DataInput_To", + "details": { + "name": "To" + } + }, + { + "key": "DataInput_Scale", + "details": { + "name": "Scale" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Distance.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Distance.names new file mode 100644 index 0000000000..1c8df2ccc5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Distance.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{2326F5E9-022F-5754-9A65-8E4BBD712A5A}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Distance", + "category": "Math/Vector3", + "tooltip": "Returns the distance from B to A, that is the magnitude of the vector (A - B)" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_DistanceSquared.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_DistanceSquared.names new file mode 100644 index 0000000000..5e33d91136 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_DistanceSquared.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{920C0CA6-3393-5AC7-805E-09D52E134ED4}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Distance Squared", + "category": "Math/Vector3", + "tooltip": "Returns the distance squared from B to A, (generally faster than the actual distance if only needed for comparison)" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Dot.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Dot.names new file mode 100644 index 0000000000..06a80b4078 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Dot.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{233F747E-7E53-5F9F-8355-EBF96FAAAEE4}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Dot", + "category": "Math/Vector3", + "tooltip": "Returns the vector dot product of A dot B" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_FromValues.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_FromValues.names new file mode 100644 index 0000000000..42a47d5fcf --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_FromValues.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{A3F601EF-4E3C-5852-ADE9-D3F8FA9D571D}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Values", + "category": "Math/Vector3", + "tooltip": "Returns a vector from elements" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_X", + "details": { + "name": "X" + } + }, + { + "key": "DataInput_Y", + "details": { + "name": "Y" + } + }, + { + "key": "DataInput_Z", + "details": { + "name": "Z" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_GetElement.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_GetElement.names new file mode 100644 index 0000000000..89d4c218e4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_GetElement.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{E009C313-15F5-5B1F-99F0-8C83555BA8E1}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Element", + "category": "Math/Vector3", + "tooltip": "Returns the element corresponding to the index (0 -> x) (1 -> y) (2 -> z)" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Index", + "details": { + "name": "Index" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_IsClose.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_IsClose.names new file mode 100644 index 0000000000..2eef451673 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_IsClose.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{4C54A897-39D7-5612-AAA6-B5CC25D65CE2}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Close", + "category": "Math/Vector3", + "tooltip": "Returns true if the difference between A and B is less than tolerance, else false" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataInput_Tolerance", + "details": { + "name": "Tolerance" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_IsFinite.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_IsFinite.names new file mode 100644 index 0000000000..c1e14e8db0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_IsFinite.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{7C09FF34-0608-57A9-8CEE-66DCA0485F08}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Finite", + "category": "Math/Vector3", + "tooltip": "Returns true if every element in the source is finite, else false" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_IsNormalized.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_IsNormalized.names new file mode 100644 index 0000000000..35f2e6421a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_IsNormalized.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{7C895C3A-972B-5CF4-9F1D-62C2A9BBBEAD}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Normalized", + "category": "Math/Vector3", + "tooltip": "Returns true if the length of the source is within tolerance of 1.0, else false" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Tolerance", + "details": { + "name": "Tolerance" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_IsPerpendicular.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_IsPerpendicular.names new file mode 100644 index 0000000000..82c3388632 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_IsPerpendicular.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{775DA8B7-881F-55AF-911B-9CD28DC5F9B0}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Perpendicular", + "category": "Math/Vector3", + "tooltip": "Returns true if A is within tolerance of perpendicular with B, that is if Dot(A, B) < tolerance, else false" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataInput_Tolerance", + "details": { + "name": "Tolerance" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_IsZero.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_IsZero.names new file mode 100644 index 0000000000..0d80b3395c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_IsZero.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{282F32C7-5806-5C1A-BA31-E14E37913599}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Zero", + "category": "Math/Vector3", + "tooltip": "Returns true if A is within tolerance of the zero vector, else false" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Tolerance", + "details": { + "name": "Tolerance" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Length.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Length.names new file mode 100644 index 0000000000..4c23c9cbbd --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Length.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{899CC124-10D8-5081-BD8E-00BD2B0DAD2B}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Length", + "category": "Math/Vector3", + "tooltip": "Returns the magnitude of source" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_LengthReciprocal.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_LengthReciprocal.names new file mode 100644 index 0000000000..be22489f6d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_LengthReciprocal.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{299657FE-6A44-52DA-919E-3F266EFC7535}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Length Reciprocal", + "category": "Math/Vector3", + "tooltip": "Returns the 1 / magnitude of the source" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_LengthSquared.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_LengthSquared.names new file mode 100644 index 0000000000..4c6d79d1e5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_LengthSquared.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{12A6C1D4-5C8A-5FFB-B7BC-E5E983DA72CC}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Length Squared", + "category": "Math/Vector3", + "tooltip": "Returns the magnitude squared of the source, generally faster than getting the exact length" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Lerp.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Lerp.names new file mode 100644 index 0000000000..5d0b9792c9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Lerp.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{722A4327-0D64-5ADF-BCDD-CDCF7EDDD16D}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Lerp", + "category": "Math/Vector3", + "tooltip": "Returns the linear interpolation (From + ((To - From) * T)" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_From", + "details": { + "name": "From" + } + }, + { + "key": "DataInput_To", + "details": { + "name": "To" + } + }, + { + "key": "DataInput_T", + "details": { + "name": "T" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Max.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Max.names new file mode 100644 index 0000000000..38acf91419 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Max.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{C1E9BE9C-DD4E-5AD5-BFBD-23A012619BD3}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Max", + "category": "Math/Vector3", + "tooltip": "Returns the vector (max(A.x, B.x), max(A.y, B.y), max(A.z, B.z))" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Min.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Min.names new file mode 100644 index 0000000000..1a47a31834 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Min.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{343EA674-C05F-5803-BB86-C6D26C3F6D89}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Min", + "category": "Math/Vector3", + "tooltip": "Returns the vector (min(A.x, B.x), min(A.y, B.y), min(A.z, B.z))" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_MultiplyByNumber.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_MultiplyByNumber.names new file mode 100644 index 0000000000..95e2710e33 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_MultiplyByNumber.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{B1CAAC2D-A568-5CB2-B580-5B239D013466}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Multiply By Number", + "category": "Math/Vector3", + "tooltip": "Returns the vector Source with each element multiplied by Multipler" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Multiplier", + "details": { + "name": "Multiplier" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Negate.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Negate.names new file mode 100644 index 0000000000..e578384975 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Negate.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{A239FB13-643C-5D47-9580-A373491FECCA}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Negate", + "category": "Math/Vector3", + "tooltip": "Returns the vector Source with each element multiplied by -1" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Normalize.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Normalize.names new file mode 100644 index 0000000000..cf0a181d0b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Normalize.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{CF4EBDEE-B16A-5402-B44D-75FF06AD89AE}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Normalize", + "category": "Math/Vector3", + "tooltip": "Returns a unit length vector in the same direction as the source, or (1,0,0) if the source length is too small" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Project.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Project.names new file mode 100644 index 0000000000..80df59908d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Project.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{D24123BA-6C59-5F58-90E2-FCB085384BAA}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Project", + "category": "Math/Vector3", + "tooltip": "Returns the vector of A projected onto B, (Dot(A, B)/(Dot(B, B)) * B" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Reciprocal.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Reciprocal.names new file mode 100644 index 0000000000..dd3de8c146 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Reciprocal.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{E90663EA-FFD1-5908-8530-3C21BD6A9A62}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Reciprocal", + "category": "Math/Vector3", + "tooltip": "Returns the vector (1/x, 1/y, 1/z) with elements from Source" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_SetX.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_SetX.names new file mode 100644 index 0000000000..47e3273302 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_SetX.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{A5945988-1E94-5560-B1EE-B513AD113E1C}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Set X", + "category": "Math/Vector3", + "tooltip": "Returns a the vector(X, Source.Y, Source.Z)" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_X", + "details": { + "name": "X" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_SetY.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_SetY.names new file mode 100644 index 0000000000..8456f9de21 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_SetY.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{08880FE1-8C3E-5380-A3FF-CA1AE16953FC}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Set Y", + "category": "Math/Vector3", + "tooltip": "Returns a the vector(Source.X, Y, Source.Z)" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Y", + "details": { + "name": "Y" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_SetZ.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_SetZ.names new file mode 100644 index 0000000000..a92a4e5a7f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_SetZ.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{12C93A22-5B0B-55CC-90FC-7DB17C1C36DF}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Set Z", + "category": "Math/Vector3", + "tooltip": "Returns a the vector(Source.X, Source.Y, Z)" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Z", + "details": { + "name": "Z" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Slerp.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Slerp.names new file mode 100644 index 0000000000..09251d7f13 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector3_Slerp.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{55EA4F53-2789-54B2-9CC7-4DB62B2CB270}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Slerp", + "category": "Math/Vector3", + "tooltip": "Returns a vector that is the spherical linear interpolation T, between From and To" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_From", + "details": { + "name": "From" + } + }, + { + "key": "DataInput_To", + "details": { + "name": "To" + } + }, + { + "key": "DataInput_T", + "details": { + "name": "T" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_Absolute.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_Absolute.names new file mode 100644 index 0000000000..5ea08e0e68 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_Absolute.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{A5BAEA40-C676-5C16-AEA0-D01C78E5918E}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Absolute", + "category": "Math/Vector4", + "tooltip": "Returns a vector with the absolute values of the elements of the source" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_DirectionTo.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_DirectionTo.names new file mode 100644 index 0000000000..d1fdcbe653 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_DirectionTo.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{1FC1ABCB-220E-5CBF-AE38-14E7389D0AE4}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Direction To", + "category": "Math/Vector4", + "tooltip": "Returns a direction vector between two points and the distance between them, by default the direction will be normalized, but it may be optionally scaled using the Scale parameter if different from 1.0" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_From", + "details": { + "name": "From" + } + }, + { + "key": "DataInput_To", + "details": { + "name": "To" + } + }, + { + "key": "DataInput_Scale", + "details": { + "name": "Scale" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_Dot.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_Dot.names new file mode 100644 index 0000000000..59dfbbc61f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_Dot.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{59AF8BA5-11BA-5E5E-982C-2E7A8C6600D4}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Dot", + "category": "Math/Vector4", + "tooltip": "Returns the vector dot product of A dot B" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_FromValues.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_FromValues.names new file mode 100644 index 0000000000..73f6088330 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_FromValues.names @@ -0,0 +1,58 @@ +{ + "entries": [ + { + "key": "{DFDC391C-782D-58D9-BF81-C7B13A0F4CFC}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "From Values", + "category": "Math/Vector4", + "tooltip": "Returns a vector from elements" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_X", + "details": { + "name": "X" + } + }, + { + "key": "DataInput_Y", + "details": { + "name": "Y" + } + }, + { + "key": "DataInput_Z", + "details": { + "name": "Z" + } + }, + { + "key": "DataInput_W", + "details": { + "name": "W" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_GetElement.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_GetElement.names new file mode 100644 index 0000000000..7b37a541e7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_GetElement.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{1AC44E60-9560-58DD-A210-48A755155D6D}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Element", + "category": "Math/Vector4", + "tooltip": "Returns the element corresponding to the index (0 -> x) (1 -> y) (2 -> z) (3 -> w)" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Index", + "details": { + "name": "Index" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_IsClose.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_IsClose.names new file mode 100644 index 0000000000..583d85d028 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_IsClose.names @@ -0,0 +1,52 @@ +{ + "entries": [ + { + "key": "{DD9F50A6-AC60-59E1-8C63-C6C392DA8C15}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Close", + "category": "Math/Vector4", + "tooltip": "Returns true if the difference between A and B is less than tolerance, else false" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_A", + "details": { + "name": "A" + } + }, + { + "key": "DataInput_B", + "details": { + "name": "B" + } + }, + { + "key": "DataInput_Tolerance", + "details": { + "name": "Tolerance" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_IsFinite.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_IsFinite.names new file mode 100644 index 0000000000..603a38f9c8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_IsFinite.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{138EE359-9CA0-520B-873D-90C2183C96FE}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Finite", + "category": "Math/Vector4", + "tooltip": "Returns true if every element in the source is finite, else false" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_IsNormalized.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_IsNormalized.names new file mode 100644 index 0000000000..7ae2964f40 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_IsNormalized.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{B2EE1FD3-D33D-5348-AC29-E2D08C1E3363}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Normalized", + "category": "Math/Vector4", + "tooltip": "Returns true if the length of the source is within tolerance of 1.0, else false" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Tolerance", + "details": { + "name": "Tolerance" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_IsZero.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_IsZero.names new file mode 100644 index 0000000000..a1bbb08d27 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_IsZero.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{EBD3BEF3-0FA8-5508-8C9B-BDCA64A00E5E}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Is Zero", + "category": "Math/Vector4", + "tooltip": "Returns true if A is within tolerance of the zero vector, else false" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Tolerance", + "details": { + "name": "Tolerance" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_Length.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_Length.names new file mode 100644 index 0000000000..b6329060b3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_Length.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{768CD3CA-09E3-51EB-AE59-8D34DC0D12A8}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Length", + "category": "Math/Vector4", + "tooltip": "Returns the magnitude of source" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_LengthReciprocal.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_LengthReciprocal.names new file mode 100644 index 0000000000..cfe495d8a6 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_LengthReciprocal.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{60E6D939-6105-53CB-865B-4F401A1B487B}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Length Reciprocal", + "category": "Math/Vector4", + "tooltip": "Returns the 1 / magnitude of the source" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_LengthSquared.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_LengthSquared.names new file mode 100644 index 0000000000..f4602d127a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_LengthSquared.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{4DFB1966-BDE3-55C3-A0B4-0D04926AB732}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Length Squared", + "category": "Math/Vector4", + "tooltip": "Returns the magnitude squared of the source, generally faster than getting the exact length" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_MultiplyByNumber.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_MultiplyByNumber.names new file mode 100644 index 0000000000..556582c9d8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_MultiplyByNumber.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{317BA61D-AEEA-566E-A113-2384C5BDADD6}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Multiply By Number", + "category": "Math/Vector4", + "tooltip": "Returns the vector Source with each element multiplied by Multipler" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Multiplier", + "details": { + "name": "Multiplier" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_Negate.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_Negate.names new file mode 100644 index 0000000000..8cf9ae9226 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_Negate.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{B8B0E83E-F1C3-5F0B-93A5-1756B79E1316}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Negate", + "category": "Math/Vector4", + "tooltip": "Returns the vector Source with each element multiplied by -1" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_Normalize.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_Normalize.names new file mode 100644 index 0000000000..5b1dc01d6f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_Normalize.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{9337FBC7-20D8-51C7-8D69-D9E53B739BD7}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Normalize", + "category": "Math/Vector4", + "tooltip": "Returns a unit length vector in the same direction as the source, or (1,0,0,0) if the source length is too small" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_Reciprocal.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_Reciprocal.names new file mode 100644 index 0000000000..82a67c218a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_Reciprocal.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{A7AB6D14-CDAF-519D-B29F-2E1292257A4C}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Reciprocal", + "category": "Math/Vector4", + "tooltip": "Returns the vector (1/x, 1/y, 1/z, 1/w) with elements from Source" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_SetW.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_SetW.names new file mode 100644 index 0000000000..79d028c7c3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_SetW.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{48337108-38AA-5A58-BBFD-D15560A0B685}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Set W", + "category": "Math/Vector4", + "tooltip": "Returns a the vector(Source.X, Source.Y, Source.Z, W)" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_W", + "details": { + "name": "W" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_SetX.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_SetX.names new file mode 100644 index 0000000000..ea852cfdc5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_SetX.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{E39B02FA-3231-57AC-8D2F-E9448E2CECD3}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Set X", + "category": "Math/Vector4", + "tooltip": "Returns a the vector(X, Source.Y, Source.Z, Source.W)" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_X", + "details": { + "name": "X" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_SetY.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_SetY.names new file mode 100644 index 0000000000..9f3e456472 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_SetY.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{45D44536-DCE8-5CC1-9311-9BC79BBF333C}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Set Y", + "category": "Math/Vector4", + "tooltip": "Returns a the vector(Source.X, Y, Source.Z, Source.W)" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Y", + "details": { + "name": "Y" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_SetZ.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_SetZ.names new file mode 100644 index 0000000000..b3db2cb06c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/MathVector4_SetZ.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{8CC2A1A7-FD41-5C7B-BC1A-BEF5BBF74D62}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Set Z", + "category": "Math/Vector4", + "tooltip": "Returns a the vector(Source.X, Source.Y, Z, Source.W)" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Z", + "details": { + "name": "Z" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_Add_+_.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_Add_+_.names new file mode 100644 index 0000000000..c48a0bdaf7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_Add_+_.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "{C1B42FEC-0545-4511-9FAC-11E0387FEDF0}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Add (+)", + "category": "Math", + "tooltip": "Adds two or more values", + "subtitle": "Math" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Value", + "details": { + "name": "Value" + } + }, + { + "key": "DataInput_Value", + "details": { + "name": "Value" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_Divide__.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_Divide__.names new file mode 100644 index 0000000000..b5aa513ee4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_Divide__.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "{DC17E19F-3829-410D-9A0B-AD60C6066DAA}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Divide (/)", + "category": "Math", + "tooltip": "Divides two or more values", + "subtitle": "Math" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Value", + "details": { + "name": "Value" + } + }, + { + "key": "DataInput_Value", + "details": { + "name": "Value" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_DividebyNumber__.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_DividebyNumber__.names new file mode 100644 index 0000000000..9b56075a42 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_DividebyNumber__.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "{8305B5C9-1B9F-4D5B-B3E7-66925F491E9D}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Divide by Number (/)", + "category": "Math", + "tooltip": "Divides certain types by a given number", + "subtitle": "Math" + }, + "slots": [ + { + "key": "DataInput_Divisor", + "details": { + "name": "Divisor" + } + }, + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_Length.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_Length.names new file mode 100644 index 0000000000..172d57f5db --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_Length.names @@ -0,0 +1,41 @@ +{ + "entries": [ + { + "key": "{AEE15BEA-CD51-4C1A-B06D-C09FB9EAA005}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Length", + "category": "Math", + "tooltip": "Given a vector this returns the magnitude (length) of the vector. For a quaternion, magnitude is the cosine of half the angle of rotation.", + "subtitle": "Math" + }, + "slots": [ + { + "key": "DataOutput_Length", + "details": { + "name": "Length" + } + }, + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_LerpBetween.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_LerpBetween.names new file mode 100644 index 0000000000..a63e64bfa4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_LerpBetween.names @@ -0,0 +1,94 @@ +{ + "entries": [ + { + "key": "{A4CFB2F2-4045-47ED-AE73-ED60C2072EE4}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Lerp Between", + "category": "Math", + "subtitle": "Math" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Starts the lerp action from the beginning." + } + }, + { + "key": "DataInput_Start", + "details": { + "name": "Start" + } + }, + { + "key": "DataInput_Stop", + "details": { + "name": "Stop" + } + }, + { + "key": "DataInput_Speed", + "details": { + "name": "Speed" + } + }, + { + "key": "DataInput_Maximum Duration", + "details": { + "name": "Maximum Duration" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out", + "tooltip": "Executes immediately after the lerp action is started." + } + }, + { + "key": "Input_Cancel", + "details": { + "name": "Cancel", + "tooltip": "Stops the lerp action immediately." + } + }, + { + "key": "Output_Canceled", + "details": { + "name": "Canceled", + "tooltip": "Executes immediately after the operation is canceled." + } + }, + { + "key": "Output_Tick", + "details": { + "name": "Tick", + "tooltip": "Signaled at each step of the lerp." + } + }, + { + "key": "DataOutput_Step", + "details": { + "name": "Step" + } + }, + { + "key": "DataOutput_Percent", + "details": { + "name": "Percent" + } + }, + { + "key": "Output_Lerp Complete", + "details": { + "name": "Lerp Complete", + "tooltip": "Signaled after the last Tick, when the lerp is complete" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_MathExpression.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_MathExpression.names new file mode 100644 index 0000000000..552aa8a101 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_MathExpression.names @@ -0,0 +1,37 @@ +{ + "entries": [ + { + "key": "{A5841DE8-CA11-4364-9C34-5ECE8B9623D7}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Math Expression", + "category": "Math", + "tooltip": "Will evaluate a series of math operations, allowing users to specify inputs using {}.", + "subtitle": "Math" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Input signal" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out", + "tooltip": "Output signal" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_MultiplyAndAdd.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_MultiplyAndAdd.names new file mode 100644 index 0000000000..accfab49fc --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_MultiplyAndAdd.names @@ -0,0 +1,51 @@ +{ + "entries": [ + { + "key": "{9A2FDC22-90E1-5A32-9670-156BB7EE8149}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Multiply And Add", + "category": "Math" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Multiplicand", + "details": { + "name": "Multiplicand" + } + }, + { + "key": "DataInput_Multiplier", + "details": { + "name": "Multiplier" + } + }, + { + "key": "DataInput_Addend", + "details": { + "name": "Addend" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_Multiply_x_.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_Multiply_x_.names new file mode 100644 index 0000000000..ba52de3900 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_Multiply_x_.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "{E9BB45A1-AE96-47B0-B2BF-2927D420A28C}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Multiply (*)", + "category": "Math", + "tooltip": "Multiplies two of more values", + "subtitle": "Math" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Value", + "details": { + "name": "Value" + } + }, + { + "key": "DataInput_Value", + "details": { + "name": "Value" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_StringToNumber.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_StringToNumber.names new file mode 100644 index 0000000000..e6423917de --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_StringToNumber.names @@ -0,0 +1,34 @@ +{ + "entries": [ + { + "key": "{8A57777C-AD84-5CF4-B411-03ABF982EF55}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "String To Number", + "category": "Math", + "tooltip": "Converts the given string to it's numeric representation if possible." + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_Subtract_-_.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_Subtract_-_.names new file mode 100644 index 0000000000..67ed5cf859 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_Subtract_-_.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "{D0615D0A-027F-47F6-A02B-E35DAF22F431}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Subtract (-)", + "category": "Math", + "tooltip": "Subtracts two of more elements", + "subtitle": "Math" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Value", + "details": { + "name": "Value" + } + }, + { + "key": "DataInput_Value", + "details": { + "name": "Value" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_ThreeGeneric.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_ThreeGeneric.names new file mode 100644 index 0000000000..edcbe2783a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Math_ThreeGeneric.names @@ -0,0 +1,65 @@ +{ + "entries": [ + { + "key": "{9E334D28-CBB3-53AF-AFA1-8223F50312CE}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "ThreeGeneric", + "category": "Math", + "tooltip": "returns all columns from matrix", + "subtitle": "Math" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Vector3: One", + "details": { + "name": "Vector3: One" + } + }, + { + "key": "DataInput_String: Two", + "details": { + "name": "String: Two" + } + }, + { + "key": "DataInput_Boolean: Three", + "details": { + "name": "Boolean: Three" + } + }, + { + "key": "DataOutput_One: Vector3", + "details": { + "name": "One: Vector3" + } + }, + { + "key": "DataOutput_Two: String", + "details": { + "name": "Two: String" + } + }, + { + "key": "DataOutput_Three: Boolean", + "details": { + "name": "Three: Boolean" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Nodeables_Duration.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Nodeables_Duration.names new file mode 100644 index 0000000000..67aca7a003 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Nodeables_Duration.names @@ -0,0 +1,54 @@ +{ + "entries": [ + { + "key": "{CCF1F41F-39C2-C847-9D9E-0155C8B46E1C}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Duration", + "category": "Timing", + "tooltip": "Triggers a signal every frame during the specified duration." + }, + "slots": [ + { + "key": "Input_Start", + "details": { + "name": "Start" + } + }, + { + "key": "DataInput_Duration", + "details": { + "name": "Duration" + } + }, + { + "key": "Output_On Start", + "details": { + "name": "On Start" + } + }, + { + "key": "Output_OnTick", + "details": { + "name": "OnTick", + "tooltip": "Signaled every frame while the duration is active." + } + }, + { + "key": "DataOutput_Elapsed", + "details": { + "name": "Elapsed" + } + }, + { + "key": "Output_Done", + "details": { + "name": "Done", + "tooltip": "Signaled after waiting for the specified amount of times." + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Nodeables_Repeater.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Nodeables_Repeater.names new file mode 100644 index 0000000000..7f2fe575d7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Nodeables_Repeater.names @@ -0,0 +1,54 @@ +{ + "entries": [ + { + "key": "{AB587027-2270-4CA6-242F-6069C6D9BBB6}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Repeater", + "category": "Timing", + "tooltip": "Repeats the output signal the given number of times using the specified delay to space the signals out." + }, + "slots": [ + { + "key": "Input_Start", + "details": { + "name": "Start" + } + }, + { + "key": "DataInput_Repetitions", + "details": { + "name": "Repetitions" + } + }, + { + "key": "DataInput_Interval", + "details": { + "name": "Interval" + } + }, + { + "key": "Output_On Start", + "details": { + "name": "On Start" + } + }, + { + "key": "Output_Complete", + "details": { + "name": "Complete", + "tooltip": "Signaled upon node exit" + } + }, + { + "key": "Output_Action", + "details": { + "name": "Action", + "tooltip": "Signaled every repetition" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Nodeables_TimeDelay.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Nodeables_TimeDelay.names new file mode 100644 index 0000000000..fdf9afb0a1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Nodeables_TimeDelay.names @@ -0,0 +1,41 @@ +{ + "entries": [ + { + "key": "{D3629902-02E9-AE59-0424-F366D342B433}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Time Delay", + "category": "Timing", + "tooltip": "Delays all incoming execution for the specified number of ticks" + }, + "slots": [ + { + "key": "Input_Start", + "details": { + "name": "Start" + } + }, + { + "key": "DataInput_Delay", + "details": { + "name": "Delay" + } + }, + { + "key": "Output_On Start", + "details": { + "name": "On Start" + } + }, + { + "key": "Output_Done", + "details": { + "name": "Done", + "tooltip": "Signaled after waiting for the specified amount of times." + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/OperatorsMath_OperatorArithmeticUnary.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/OperatorsMath_OperatorArithmeticUnary.names new file mode 100644 index 0000000000..3b14103cc8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/OperatorsMath_OperatorArithmeticUnary.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{4B68DF49-35DE-48CF-BCE3-F892CCF2639D}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "OperatorArithmeticUnary", + "category": "Operators/Math", + "subtitle": "Math" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Value", + "details": { + "name": "Value" + } + }, + { + "key": "DataInput_Value", + "details": { + "name": "Value" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Operators_OperatorArithmetic.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Operators_OperatorArithmetic.names new file mode 100644 index 0000000000..f01ee442be --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Operators_OperatorArithmetic.names @@ -0,0 +1,46 @@ +{ + "entries": [ + { + "key": "{FE0589B0-F835-4CD5-BBD3-86510CBB985B}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "OperatorArithmetic", + "category": "Operators", + "subtitle": "Operators" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Value", + "details": { + "name": "Value" + } + }, + { + "key": "DataInput_Value", + "details": { + "name": "Value" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Operators_OperatorBase.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Operators_OperatorBase.names new file mode 100644 index 0000000000..523ca60c85 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Operators_OperatorBase.names @@ -0,0 +1,30 @@ +{ + "entries": [ + { + "key": "{30FED030-71ED-4498-AB2C-F5586DFA490E}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "OperatorBase", + "category": "Operators", + "subtitle": "Operators" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Input signal" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out", + "tooltip": "Output signal" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_BoxCastWithGroup.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_BoxCastWithGroup.names new file mode 100644 index 0000000000..ceed8314ba --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_BoxCastWithGroup.names @@ -0,0 +1,100 @@ +{ + "entries": [ + { + "key": "{022255F7-DD50-5654-967E-6E00E8360F00}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Box Cast With Group", + "category": "PhysX/World", + "tooltip": "Box Cast" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Distance", + "details": { + "name": "Distance" + } + }, + { + "key": "DataInput_Pose", + "details": { + "name": "Pose" + } + }, + { + "key": "DataInput_Direction", + "details": { + "name": "Direction" + } + }, + { + "key": "DataInput_Dimensions", + "details": { + "name": "Dimensions" + } + }, + { + "key": "DataInput_Collision group", + "details": { + "name": "Collision group" + } + }, + { + "key": "DataInput_Ignore", + "details": { + "name": "Ignore" + } + }, + { + "key": "DataOutput_Object Hit", + "details": { + "name": "Object Hit" + } + }, + { + "key": "DataOutput_Position", + "details": { + "name": "Position" + } + }, + { + "key": "DataOutput_Normal", + "details": { + "name": "Normal" + } + }, + { + "key": "DataOutput_Distance", + "details": { + "name": "Distance" + } + }, + { + "key": "DataOutput_EntityId", + "details": { + "name": "EntityId" + } + }, + { + "key": "DataOutput_Surface", + "details": { + "name": "Surface" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_CapsuleCastWithGroup.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_CapsuleCastWithGroup.names new file mode 100644 index 0000000000..a38ace417c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_CapsuleCastWithGroup.names @@ -0,0 +1,106 @@ +{ + "entries": [ + { + "key": "{1467D2BE-D829-5A8A-976D-6D06FDCD3310}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Capsule Cast With Group", + "category": "PhysX/World", + "tooltip": "CapsuleCast" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Distance", + "details": { + "name": "Distance" + } + }, + { + "key": "DataInput_Pose", + "details": { + "name": "Pose" + } + }, + { + "key": "DataInput_Direction", + "details": { + "name": "Direction" + } + }, + { + "key": "DataInput_Height", + "details": { + "name": "Height" + } + }, + { + "key": "DataInput_Radius", + "details": { + "name": "Radius" + } + }, + { + "key": "DataInput_Collision group", + "details": { + "name": "Collision group" + } + }, + { + "key": "DataInput_Ignore", + "details": { + "name": "Ignore" + } + }, + { + "key": "DataOutput_Object Hit", + "details": { + "name": "Object Hit" + } + }, + { + "key": "DataOutput_Position", + "details": { + "name": "Position" + } + }, + { + "key": "DataOutput_Normal", + "details": { + "name": "Normal" + } + }, + { + "key": "DataOutput_Distance", + "details": { + "name": "Distance" + } + }, + { + "key": "DataOutput_EntityId", + "details": { + "name": "EntityId" + } + }, + { + "key": "DataOutput_Surface", + "details": { + "name": "Surface" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_OverlapBoxWithGroup.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_OverlapBoxWithGroup.names new file mode 100644 index 0000000000..9b2e0a6c0b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_OverlapBoxWithGroup.names @@ -0,0 +1,58 @@ +{ + "entries": [ + { + "key": "{B4F46A1B-7C2F-553F-BAE8-867066A365FA}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Overlap Box With Group", + "category": "PhysX/World", + "tooltip": "Returns the objects overlapping a box at a position" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Pose", + "details": { + "name": "Pose" + } + }, + { + "key": "DataInput_Dimensions", + "details": { + "name": "Dimensions" + } + }, + { + "key": "DataInput_Collision group", + "details": { + "name": "Collision group" + } + }, + { + "key": "DataInput_Ignore", + "details": { + "name": "Ignore" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_OverlapCapsuleWithGroup.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_OverlapCapsuleWithGroup.names new file mode 100644 index 0000000000..c7ac36a35e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_OverlapCapsuleWithGroup.names @@ -0,0 +1,64 @@ +{ + "entries": [ + { + "key": "{588E1C8F-D18E-5C00-AF13-C4FCD5A9519D}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Overlap Capsule With Group", + "category": "PhysX/World", + "tooltip": "Returns the objects overlapping a capsule at a position" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Pose", + "details": { + "name": "Pose" + } + }, + { + "key": "DataInput_Height", + "details": { + "name": "Height" + } + }, + { + "key": "DataInput_Radius", + "details": { + "name": "Radius" + } + }, + { + "key": "DataInput_Collision group", + "details": { + "name": "Collision group" + } + }, + { + "key": "DataInput_Ignore", + "details": { + "name": "Ignore" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_OverlapSphereWithGroup.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_OverlapSphereWithGroup.names new file mode 100644 index 0000000000..de088ff96b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_OverlapSphereWithGroup.names @@ -0,0 +1,58 @@ +{ + "entries": [ + { + "key": "{4BEFF98E-4147-55AF-B105-29085951CBA9}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Overlap Sphere With Group", + "category": "PhysX/World", + "tooltip": "Returns the objects overlapping a sphere at a position" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Position", + "details": { + "name": "Position" + } + }, + { + "key": "DataInput_Radius", + "details": { + "name": "Radius" + } + }, + { + "key": "DataInput_Collision group", + "details": { + "name": "Collision group" + } + }, + { + "key": "DataInput_Ignore", + "details": { + "name": "Ignore" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_RayCastLocalSpaceWithGroup.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_RayCastLocalSpaceWithGroup.names new file mode 100644 index 0000000000..3724ef2bc0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_RayCastLocalSpaceWithGroup.names @@ -0,0 +1,94 @@ +{ + "entries": [ + { + "key": "{BD7F9C50-62EA-56C0-9B8B-D23E5D28300D}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Ray Cast Local Space With Group", + "category": "PhysX/World", + "tooltip": "Returns the first entity hit by a ray cast in local space from the source entity in the specified direction." + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Direction", + "details": { + "name": "Direction" + } + }, + { + "key": "DataInput_Distance", + "details": { + "name": "Distance" + } + }, + { + "key": "DataInput_Collision group", + "details": { + "name": "Collision group" + } + }, + { + "key": "DataInput_Ignore", + "details": { + "name": "Ignore" + } + }, + { + "key": "DataOutput_Object hit", + "details": { + "name": "Object hit" + } + }, + { + "key": "DataOutput_Position", + "details": { + "name": "Position" + } + }, + { + "key": "DataOutput_Normal", + "details": { + "name": "Normal" + } + }, + { + "key": "DataOutput_Distance", + "details": { + "name": "Distance" + } + }, + { + "key": "DataOutput_EntityId", + "details": { + "name": "EntityId" + } + }, + { + "key": "DataOutput_Surface", + "details": { + "name": "Surface" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_RayCastMultipleLocalSpaceWithGroup.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_RayCastMultipleLocalSpaceWithGroup.names new file mode 100644 index 0000000000..4d0504b0fd --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_RayCastMultipleLocalSpaceWithGroup.names @@ -0,0 +1,64 @@ +{ + "entries": [ + { + "key": "{FB91B476-0015-508A-AC0B-18F8A860EB7A}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Ray Cast Multiple Local Space With Group", + "category": "PhysX/World", + "tooltip": "Returns all entities hit by a ray cast in local space from the source entity in the specified direction." + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Direction", + "details": { + "name": "Direction" + } + }, + { + "key": "DataInput_Distance", + "details": { + "name": "Distance" + } + }, + { + "key": "DataInput_Collision group", + "details": { + "name": "Collision group" + } + }, + { + "key": "DataInput_Ignore", + "details": { + "name": "Ignore" + } + }, + { + "key": "DataOutput_Objects hit", + "details": { + "name": "Objects hit" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_RayCastWorldSpaceWithGroup.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_RayCastWorldSpaceWithGroup.names new file mode 100644 index 0000000000..194f9aebf0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_RayCastWorldSpaceWithGroup.names @@ -0,0 +1,94 @@ +{ + "entries": [ + { + "key": "{33EE1562-D9B5-5DA2-BB9E-F1F75B927B9C}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Ray Cast World Space With Group", + "category": "PhysX/World", + "tooltip": "Returns the first entity hit by a ray cast in world space from the start position in the specified direction." + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Start", + "details": { + "name": "Start" + } + }, + { + "key": "DataInput_Direction", + "details": { + "name": "Direction" + } + }, + { + "key": "DataInput_Distance", + "details": { + "name": "Distance" + } + }, + { + "key": "DataInput_Collision group", + "details": { + "name": "Collision group" + } + }, + { + "key": "DataInput_Ignore", + "details": { + "name": "Ignore" + } + }, + { + "key": "DataOutput_Object hit", + "details": { + "name": "Object hit" + } + }, + { + "key": "DataOutput_Position", + "details": { + "name": "Position" + } + }, + { + "key": "DataOutput_Normal", + "details": { + "name": "Normal" + } + }, + { + "key": "DataOutput_Distance", + "details": { + "name": "Distance" + } + }, + { + "key": "DataOutput_EntityId", + "details": { + "name": "EntityId" + } + }, + { + "key": "DataOutput_Surface", + "details": { + "name": "Surface" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_SphereCastWithGroup.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_SphereCastWithGroup.names new file mode 100644 index 0000000000..1190d91bca --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/PhysXWorld_SphereCastWithGroup.names @@ -0,0 +1,100 @@ +{ + "entries": [ + { + "key": "{FF1EE92C-FD34-51E9-B128-00595ABB78E6}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Sphere Cast With Group", + "category": "PhysX/World", + "tooltip": "SphereCast" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Distance", + "details": { + "name": "Distance" + } + }, + { + "key": "DataInput_Pose", + "details": { + "name": "Pose" + } + }, + { + "key": "DataInput_Direction", + "details": { + "name": "Direction" + } + }, + { + "key": "DataInput_Radius", + "details": { + "name": "Radius" + } + }, + { + "key": "DataInput_Collision group", + "details": { + "name": "Collision group" + } + }, + { + "key": "DataInput_Ignore", + "details": { + "name": "Ignore" + } + }, + { + "key": "DataOutput_Object Hit", + "details": { + "name": "Object Hit" + } + }, + { + "key": "DataOutput_Position", + "details": { + "name": "Position" + } + }, + { + "key": "DataOutput_Normal", + "details": { + "name": "Normal" + } + }, + { + "key": "DataOutput_Distance", + "details": { + "name": "Distance" + } + }, + { + "key": "DataOutput_EntityId", + "details": { + "name": "EntityId" + } + }, + { + "key": "DataOutput_Surface", + "details": { + "name": "Surface" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Spawning_Spawn.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Spawning_Spawn.names new file mode 100644 index 0000000000..d553da7dc0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Spawning_Spawn.names @@ -0,0 +1,59 @@ +{ + "entries": [ + { + "key": "{2447798B-B970-FDBA-A2E2-B563513663F0}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Spawn", + "category": "Spawning", + "tooltip": "Spawns a selected prefab, positioned using the provided transform inputs", + "subtitle": "Spawning" + }, + "slots": [ + { + "key": "Input_Request Spawn", + "details": { + "name": "Request Spawn" + } + }, + { + "key": "DataInput_Translation", + "details": { + "name": "Translation" + } + }, + { + "key": "DataInput_Rotation", + "details": { + "name": "Rotation" + } + }, + { + "key": "DataInput_Scale", + "details": { + "name": "Scale" + } + }, + { + "key": "Output_Spawn Requested", + "details": { + "name": "Spawn Requested" + } + }, + { + "key": "Output_On Spawn", + "details": { + "name": "On Spawn" + } + }, + { + "key": "DataOutput_SpawnedEntitiesList", + "details": { + "name": "SpawnedEntitiesList" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_BuildString.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_BuildString.names new file mode 100644 index 0000000000..90d3c24605 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_BuildString.names @@ -0,0 +1,42 @@ +{ + "entries": [ + { + "key": "{B16259BA-9CF6-4143-B09B-5A0F3B4585E6}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Build String", + "category": "String", + "tooltip": "Formats and creates a string from the provided text.\nAny word within {} will create a data pin on this node.", + "subtitle": "String" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Input signal" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Value", + "details": { + "name": "Value" + } + }, + { + "key": "DataOutput_String", + "details": { + "name": "String" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_ContainsString.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_ContainsString.names new file mode 100644 index 0000000000..75a5a11fd9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_ContainsString.names @@ -0,0 +1,68 @@ +{ + "entries": [ + { + "key": "{8481E892-DE37-4CCF-86AA-E4770DE90643}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Contains String", + "category": "String", + "tooltip": "Checks if a string contains an instance of a specified string, if true, it returns the index to the first instance matched.", + "subtitle": "String" + }, + "slots": [ + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Pattern", + "details": { + "name": "Pattern" + } + }, + { + "key": "DataInput_Search From End", + "details": { + "name": "Search From End" + } + }, + { + "key": "DataInput_Case Sensitive", + "details": { + "name": "Case Sensitive" + } + }, + { + "key": "DataOutput_Index", + "details": { + "name": "Index" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Input signal" + } + }, + { + "key": "Output_True", + "details": { + "name": "True", + "tooltip": "The string contains the provided pattern." + } + }, + { + "key": "Output_False", + "details": { + "name": "False", + "tooltip": "The string did not contain the provided pattern." + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_EndsWith.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_EndsWith.names new file mode 100644 index 0000000000..bdb2892e8b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_EndsWith.names @@ -0,0 +1,54 @@ +{ + "entries": [ + { + "key": "{6C1CECA6-C155-4ED5-96BC-1D4F11C7A0FE}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Ends With", + "category": "String", + "tooltip": ".", + "subtitle": "String" + }, + "slots": [ + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Pattern", + "details": { + "name": "Pattern" + } + }, + { + "key": "DataInput_Case Sensitive", + "details": { + "name": "Case Sensitive" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Input signal" + } + }, + { + "key": "Output_True", + "details": { + "name": "True" + } + }, + { + "key": "Output_False", + "details": { + "name": "False" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_Join.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_Join.names new file mode 100644 index 0000000000..148bd56ed1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_Join.names @@ -0,0 +1,48 @@ +{ + "entries": [ + { + "key": "{121E5B89-5A8A-4477-A3B7-078B0F1B36FD}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Join", + "category": "String", + "tooltip": ".", + "subtitle": "String" + }, + "slots": [ + { + "key": "DataInput_String Array", + "details": { + "name": "String Array" + } + }, + { + "key": "DataInput_Separator", + "details": { + "name": "Separator" + } + }, + { + "key": "DataOutput_String", + "details": { + "name": "String" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Input signal" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_ReplaceString.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_ReplaceString.names new file mode 100644 index 0000000000..1fd973605f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_ReplaceString.names @@ -0,0 +1,60 @@ +{ + "entries": [ + { + "key": "{197D0BAA-FCAF-4922-872B-3A95BEA574B2}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Replace String", + "category": "String", + "tooltip": "Allows replacing a substring from a given string.", + "subtitle": "String" + }, + "slots": [ + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Replace", + "details": { + "name": "Replace" + } + }, + { + "key": "DataInput_With", + "details": { + "name": "With" + } + }, + { + "key": "DataInput_Case Sensitive", + "details": { + "name": "Case Sensitive" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Input signal" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_Split.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_Split.names new file mode 100644 index 0000000000..95e24059a9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_Split.names @@ -0,0 +1,48 @@ +{ + "entries": [ + { + "key": "{327EFC0F-F71E-4028-BAF9-C4223B933FB6}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Split", + "category": "String", + "tooltip": ".", + "subtitle": "String" + }, + "slots": [ + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Delimiters", + "details": { + "name": "Delimiters" + } + }, + { + "key": "DataOutput_String Array", + "details": { + "name": "String Array" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Input signal" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_StartsWith.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_StartsWith.names new file mode 100644 index 0000000000..998d5eef12 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_StartsWith.names @@ -0,0 +1,54 @@ +{ + "entries": [ + { + "key": "{60EB479A-CF31-4734-B2E5-422828A54A46}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Starts With", + "category": "String", + "tooltip": ".", + "subtitle": "String" + }, + "slots": [ + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataInput_Pattern", + "details": { + "name": "Pattern" + } + }, + { + "key": "DataInput_Case Sensitive", + "details": { + "name": "Case Sensitive" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Input signal" + } + }, + { + "key": "Output_True", + "details": { + "name": "True" + } + }, + { + "key": "Output_False", + "details": { + "name": "False" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_Substring.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_Substring.names new file mode 100644 index 0000000000..219b98d938 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_Substring.names @@ -0,0 +1,53 @@ +{ + "entries": [ + { + "key": "{F57D790D-01D5-5241-865C-3348CCB3536B}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Substring", + "category": "String", + "tooltip": "Returns a sub string from a given string", + "subtitle": "String" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_String: Source", + "details": { + "name": "String: Source" + } + }, + { + "key": "DataInput_Number: From", + "details": { + "name": "Number: From" + } + }, + { + "key": "DataInput_Number: Length", + "details": { + "name": "Number: Length" + } + }, + { + "key": "DataOutput_Result: String", + "details": { + "name": "Result: String" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_ToLower.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_ToLower.names new file mode 100644 index 0000000000..dd50ef41be --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_ToLower.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{B81632B7-AE9E-50D1-9F19-00F92F77B580}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "To Lower", + "category": "String", + "tooltip": "Makes all the characters in the string lower case" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_ToUpper.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_ToUpper.names new file mode 100644 index 0000000000..e66ac56087 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/String_ToUpper.names @@ -0,0 +1,40 @@ +{ + "entries": [ + { + "key": "{3AB66179-2097-5C83-BA8F-B8BD1D75D1CA}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "To Upper", + "category": "String", + "tooltip": "Makes all the characters in the string upper case" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Tests_BranchInputTypeExample.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Tests_BranchInputTypeExample.names new file mode 100644 index 0000000000..b7e47558dd --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Tests_BranchInputTypeExample.names @@ -0,0 +1,71 @@ +{ + "entries": [ + { + "key": "{FDD3D684-2C9A-0C05-D2A3-FD67685D8F26}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "BranchInputTypeExample", + "category": "Tests", + "tooltip": "Example of branch passing as input by value, pointer and reference.", + "subtitle": "Tests" + }, + "slots": [ + { + "key": "Input_Get Internal Vector", + "details": { + "name": "Get Internal Vector" + } + }, + { + "key": "Output_On Get Internal Vector", + "details": { + "name": "On Get Internal Vector" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + }, + { + "key": "Input_Branches On Input Type", + "details": { + "name": "Branches On Input Type" + } + }, + { + "key": "DataInput_Input Type", + "details": { + "name": "Input Type" + } + }, + { + "key": "Output_By Value", + "details": { + "name": "By Value" + } + }, + { + "key": "DataOutput_Value Input", + "details": { + "name": "Value Input" + } + }, + { + "key": "Output_By Pointer", + "details": { + "name": "By Pointer" + } + }, + { + "key": "DataOutput_Pointer Input", + "details": { + "name": "Pointer Input" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Tests_BranchMethodSharedDataSlotExample.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Tests_BranchMethodSharedDataSlotExample.names new file mode 100644 index 0000000000..602a337a7d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Tests_BranchMethodSharedDataSlotExample.names @@ -0,0 +1,77 @@ +{ + "entries": [ + { + "key": "{131C7ECE-D083-F7CD-09FC-EE0FCF80AB86}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "BranchMethodSharedDataSlotExample", + "category": "Tests", + "tooltip": "Branch Test", + "subtitle": "Tests" + }, + "slots": [ + { + "key": "Output_One String", + "details": { + "name": "One String" + } + }, + { + "key": "DataOutput_string", + "details": { + "name": "string" + } + }, + { + "key": "Output_Two Strings", + "details": { + "name": "Two Strings" + } + }, + { + "key": "DataOutput_string1", + "details": { + "name": "string1" + } + }, + { + "key": "DataOutput_string2", + "details": { + "name": "string2" + } + }, + { + "key": "Output_Three Strings", + "details": { + "name": "Three Strings" + } + }, + { + "key": "DataOutput_string3", + "details": { + "name": "string3" + } + }, + { + "key": "Output_Square", + "details": { + "name": "Square" + } + }, + { + "key": "Output_Pants", + "details": { + "name": "Pants" + } + }, + { + "key": "Output_Hello", + "details": { + "name": "Hello" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Tests_InputMethodSharedDataSlotExample.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Tests_InputMethodSharedDataSlotExample.names new file mode 100644 index 0000000000..c19d2a2ba5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Tests_InputMethodSharedDataSlotExample.names @@ -0,0 +1,83 @@ +{ + "entries": [ + { + "key": "{32B1B2DB-59E6-88D7-14A3-9C5366A39A81}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "InputMethodSharedDataSlotExample", + "category": "Tests", + "tooltip": "Input Method Shared Data", + "subtitle": "Tests" + }, + "slots": [ + { + "key": "Input_Append Hello", + "details": { + "name": "Append Hello" + } + }, + { + "key": "DataInput_str", + "details": { + "name": "str" + } + }, + { + "key": "Output_On Append Hello", + "details": { + "name": "On Append Hello" + } + }, + { + "key": "DataOutput_Output", + "details": { + "name": "Output" + } + }, + { + "key": "Input_Concatenate Two", + "details": { + "name": "Concatenate Two" + } + }, + { + "key": "DataInput_a", + "details": { + "name": "a" + } + }, + { + "key": "DataInput_b", + "details": { + "name": "b" + } + }, + { + "key": "Output_On Concatenate Two", + "details": { + "name": "On Concatenate Two" + } + }, + { + "key": "Input_Concatenate Three", + "details": { + "name": "Concatenate Three" + } + }, + { + "key": "DataInput_c", + "details": { + "name": "c" + } + }, + { + "key": "Output_On Concatenate Three", + "details": { + "name": "On Concatenate Three" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Tests_InputTypeExample.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Tests_InputTypeExample.names new file mode 100644 index 0000000000..e34cc1ceb4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Tests_InputTypeExample.names @@ -0,0 +1,71 @@ +{ + "entries": [ + { + "key": "{42CC5090-BE28-E017-8704-FD732475CECD}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "InputTypeExample", + "category": "Tests", + "tooltip": "Example of passing as input by value, pointer and reference.", + "subtitle": "Tests" + }, + "slots": [ + { + "key": "Input_Clear By Value", + "details": { + "name": "Clear By Value" + } + }, + { + "key": "DataInput_Value Input", + "details": { + "name": "Value Input" + } + }, + { + "key": "Output_On Clear By Value", + "details": { + "name": "On Clear By Value" + } + }, + { + "key": "Input_Clear By Pointer", + "details": { + "name": "Clear By Pointer" + } + }, + { + "key": "DataInput_Pointer Input", + "details": { + "name": "Pointer Input" + } + }, + { + "key": "Output_On Clear By Pointer", + "details": { + "name": "On Clear By Pointer" + } + }, + { + "key": "Input_Clear By Reference", + "details": { + "name": "Clear By Reference" + } + }, + { + "key": "DataInput_Reference Input", + "details": { + "name": "Reference Input" + } + }, + { + "key": "Output_On Clear By Reference", + "details": { + "name": "On Clear By Reference" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Tests_PropertyExample.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Tests_PropertyExample.names new file mode 100644 index 0000000000..0f9ac7a14d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Tests_PropertyExample.names @@ -0,0 +1,29 @@ +{ + "entries": [ + { + "key": "{9F0A9171-A7E0-4973-5658-F7470E5DD51F}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "PropertyExample", + "category": "Tests", + "tooltip": "Example of using properties.", + "subtitle": "Tests" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In" + } + }, + { + "key": "Output_On In", + "details": { + "name": "On In" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Tests_ReturnTypeExample.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Tests_ReturnTypeExample.names new file mode 100644 index 0000000000..ce9ce723a7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Tests_ReturnTypeExample.names @@ -0,0 +1,71 @@ +{ + "entries": [ + { + "key": "{97C6661E-069C-877B-4FBC-AD14CCCBB43D}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "ReturnTypeExample", + "category": "Tests", + "tooltip": "Example of returning by value, pointer and reference.", + "subtitle": "Tests" + }, + "slots": [ + { + "key": "Input_Return By Value", + "details": { + "name": "Return By Value" + } + }, + { + "key": "Output_On Return By Value", + "details": { + "name": "On Return By Value" + } + }, + { + "key": "DataOutput_Value", + "details": { + "name": "Value" + } + }, + { + "key": "Input_Return By Pointer", + "details": { + "name": "Return By Pointer" + } + }, + { + "key": "Output_On Return By Pointer", + "details": { + "name": "On Return By Pointer" + } + }, + { + "key": "DataOutput_Pointer", + "details": { + "name": "Pointer" + } + }, + { + "key": "Input_Return By Reference", + "details": { + "name": "Return By Reference" + } + }, + { + "key": "Output_On Return By Reference", + "details": { + "name": "On Return By Reference" + } + }, + { + "key": "DataOutput_Reference", + "details": { + "name": "Reference" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Timing_Delay.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Timing_Delay.names new file mode 100644 index 0000000000..6dadfcd802 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Timing_Delay.names @@ -0,0 +1,108 @@ +{ + "entries": [ + { + "key": "{233C84A7-44DE-A948-D65C-46C11F1F7162}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Delay", + "category": "Timing", + "tooltip": "While active, will signal the output at the given interval.", + "subtitle": "Timing" + }, + "slots": [ + { + "key": "Input_Start", + "details": { + "name": "Start", + "tooltip": "When signaled, execution is delayed at this node according to the specified properties." + } + }, + { + "key": "DataInput_Start: Time", + "details": { + "name": "Start: Time" + } + }, + { + "key": "DataInput_Start: Loop", + "details": { + "name": "Start: Loop" + } + }, + { + "key": "DataInput_Start: Hold", + "details": { + "name": "Start: Hold" + } + }, + { + "key": "Output_On Start", + "details": { + "name": "On Start", + "tooltip": "When signaled, execution is delayed at this node according to the specified properties." + } + }, + { + "key": "Input_Reset", + "details": { + "name": "Reset", + "tooltip": "When signaled, execution is delayed at this node according to the specified properties." + } + }, + { + "key": "DataInput_Reset: Time", + "details": { + "name": "Reset: Time" + } + }, + { + "key": "DataInput_Reset: Loop", + "details": { + "name": "Reset: Loop" + } + }, + { + "key": "DataInput_Reset: Hold", + "details": { + "name": "Reset: Hold" + } + }, + { + "key": "Output_On Reset", + "details": { + "name": "On Reset", + "tooltip": "When signaled, execution is delayed at this node according to the specified properties." + } + }, + { + "key": "Input_Cancel", + "details": { + "name": "Cancel", + "tooltip": "Cancels the current delay." + } + }, + { + "key": "Output_On Cancel", + "details": { + "name": "On Cancel", + "tooltip": "Cancels the current delay." + } + }, + { + "key": "Output_Done", + "details": { + "name": "Done", + "tooltip": "Signaled when the delay reaches zero." + } + }, + { + "key": "DataOutput_Elapsed", + "details": { + "name": "Elapsed" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Timing_Duration.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Timing_Duration.names new file mode 100644 index 0000000000..33b72debaa --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Timing_Duration.names @@ -0,0 +1,49 @@ +{ + "entries": [ + { + "key": "{D93538FF-3553-4C65-AB81-9089C5270214}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Duration", + "category": "Timing", + "tooltip": "Triggers a signal every frame during the specified duration." + }, + "slots": [ + { + "key": "DataInput_Duration", + "details": { + "name": "Duration" + } + }, + { + "key": "DataOutput_Elapsed", + "details": { + "name": "Elapsed" + } + }, + { + "key": "Input_Start", + "details": { + "name": "Start", + "tooltip": "Starts the countdown" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out", + "tooltip": "Signaled every frame while the duration is active." + } + }, + { + "key": "Output_Done", + "details": { + "name": "Done", + "tooltip": "Signaled once the duration is complete." + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Timing_HeartBeat.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Timing_HeartBeat.names new file mode 100644 index 0000000000..5cc50f1e7d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Timing_HeartBeat.names @@ -0,0 +1,53 @@ +{ + "entries": [ + { + "key": "{E73DB180-A325-763B-A1FE-517B548AF66E}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Heart Beat", + "category": "Timing", + "tooltip": "While active, will signal the output at the given interval." + }, + "slots": [ + { + "key": "Input_Start", + "details": { + "name": "Start" + } + }, + { + "key": "DataInput_Interval", + "details": { + "name": "Interval" + } + }, + { + "key": "Output_On Start", + "details": { + "name": "On Start" + } + }, + { + "key": "Input_Stop", + "details": { + "name": "Stop" + } + }, + { + "key": "Output_On Stop", + "details": { + "name": "On Stop" + } + }, + { + "key": "Output_Pulse", + "details": { + "name": "Pulse", + "tooltip": "Signaled at each specified interval." + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Timing_OnGraphStart.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Timing_OnGraphStart.names new file mode 100644 index 0000000000..0664dfcccc --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Timing_OnGraphStart.names @@ -0,0 +1,24 @@ +{ + "entries": [ + { + "key": "{F200B22A-5903-483A-BF63-5241BC03632B}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "On Graph Start", + "category": "Timing", + "tooltip": "Starts executing the graph when the entity that owns the graph is fully activated.", + "subtitle": "Timing" + }, + "slots": [ + { + "key": "Output_Out", + "details": { + "name": "Out", + "tooltip": "Signaled when the entity that owns this graph is fully activated." + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Timing_TickDelay.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Timing_TickDelay.names new file mode 100644 index 0000000000..994c19dcb2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Timing_TickDelay.names @@ -0,0 +1,42 @@ +{ + "entries": [ + { + "key": "{399A2608-77E3-41F9-90FA-58A9B6E0E34D}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Tick Delay", + "category": "Timing", + "tooltip": "Delays all incoming execution for the specified number of ticks" + }, + "slots": [ + { + "key": "DataInput_Ticks", + "details": { + "name": "Ticks" + } + }, + { + "key": "DataInput_Tick Order", + "details": { + "name": "Tick Order" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "When signaled, execution is delayed at this node for the specified amount of frames." + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out", + "tooltip": "Signaled after waiting for the specified amount of frames." + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Timing_TimeDelay.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Timing_TimeDelay.names new file mode 100644 index 0000000000..07e418a798 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Timing_TimeDelay.names @@ -0,0 +1,36 @@ +{ + "entries": [ + { + "key": "{364F5AC9-8351-44B6-A069-03367B21F7AA}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Time Delay", + "category": "Timing", + "tooltip": "Delays all incoming execution for the specified number of ticks" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "When signaled, execution is delayed at this node for the specified amount of times." + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out", + "tooltip": "Signaled after waiting for the specified amount of times." + } + }, + { + "key": "DataInput_Delay", + "details": { + "name": "Delay" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Timing_Timer.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Timing_Timer.names new file mode 100644 index 0000000000..03846acfea --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Timing_Timer.names @@ -0,0 +1,49 @@ +{ + "entries": [ + { + "key": "{60CF8540-E51A-434D-A32C-461C41D68AF9}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Timer", + "category": "Timing", + "tooltip": "Provides a time value." + }, + "slots": [ + { + "key": "DataOutput_Milliseconds", + "details": { + "name": "Milliseconds" + } + }, + { + "key": "DataOutput_Seconds", + "details": { + "name": "Seconds" + } + }, + { + "key": "Input_Start", + "details": { + "name": "Start", + "tooltip": "Starts the timer." + } + }, + { + "key": "Input_Stop", + "details": { + "name": "Stop", + "tooltip": "Stops the timer." + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out", + "tooltip": "Signaled every frame while the timer is running." + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_ArithmeticExpression.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_ArithmeticExpression.names new file mode 100644 index 0000000000..5888ef600b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_ArithmeticExpression.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "{B13F8DE1-E017-484D-9910-BABFB355D72E}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "ArithmeticExpression", + "tooltip": "ArithmeticExpression" + }, + "slots": [ + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Signal to perform the evaluation when desired." + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out", + "tooltip": "Signaled after the arithmetic operation is done." + } + }, + { + "key": "DataInput_Value A", + "details": { + "name": "Value A" + } + }, + { + "key": "DataInput_Value B", + "details": { + "name": "Value B" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_BinaryOperator.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_BinaryOperator.names new file mode 100644 index 0000000000..99250a91e7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_BinaryOperator.names @@ -0,0 +1,22 @@ +{ + "entries": [ + { + "key": "{5BD0E8C7-9B0A-42F5-9EB0-199E6EC8FA99}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "BinaryOperator", + "tooltip": "BinaryOperator" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Signal to perform the evaluation when desired." + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_BooleanExpression.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_BooleanExpression.names new file mode 100644 index 0000000000..1c510ed8f2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_BooleanExpression.names @@ -0,0 +1,42 @@ +{ + "entries": [ + { + "key": "{36C69825-CFF8-4F70-8F3B-1A9227E8BEEA}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "BooleanExpression", + "tooltip": "BooleanExpression" + }, + "slots": [ + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Signal to perform the evaluation when desired." + } + }, + { + "key": "Output_True", + "details": { + "name": "True", + "tooltip": "Signaled if the result of the operation is true." + } + }, + { + "key": "Output_False", + "details": { + "name": "False", + "tooltip": "Signaled if the result of the operation is false." + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_ComparisonExpression.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_ComparisonExpression.names new file mode 100644 index 0000000000..aa9f24a5a4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_ComparisonExpression.names @@ -0,0 +1,54 @@ +{ + "entries": [ + { + "key": "{82C50EAD-D3DD-45D2-BFCE-981D95771DC8}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "ComparisonExpression", + "tooltip": "ComparisonExpression" + }, + "slots": [ + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Signal to perform the evaluation when desired." + } + }, + { + "key": "Output_True", + "details": { + "name": "True", + "tooltip": "Signaled if the result of the operation is true." + } + }, + { + "key": "Output_False", + "details": { + "name": "False", + "tooltip": "Signaled if the result of the operation is false." + } + }, + { + "key": "DataInput_Value A", + "details": { + "name": "Value A" + } + }, + { + "key": "DataInput_Value B", + "details": { + "name": "Value B" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_EqualityExpression.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_EqualityExpression.names new file mode 100644 index 0000000000..9e85f54642 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_EqualityExpression.names @@ -0,0 +1,54 @@ +{ + "entries": [ + { + "key": "{78D20EB6-BA07-4071-B646-7C2D68A0A4A6}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "EqualityExpression", + "tooltip": "EqualityExpression" + }, + "slots": [ + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Signal to perform the evaluation when desired." + } + }, + { + "key": "Output_True", + "details": { + "name": "True", + "tooltip": "Signaled if the result of the operation is true." + } + }, + { + "key": "Output_False", + "details": { + "name": "False", + "tooltip": "Signaled if the result of the operation is false." + } + }, + { + "key": "DataInput_Value A", + "details": { + "name": "Value A" + } + }, + { + "key": "DataInput_Value B", + "details": { + "name": "Value B" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_GetVariable.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_GetVariable.names new file mode 100644 index 0000000000..a2c586b1d5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_GetVariable.names @@ -0,0 +1,29 @@ +{ + "entries": [ + { + "key": "{8225BE35-4C45-4A32-94D9-3DE114F6F5AF}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Get Variable", + "tooltip": "Node for referencing a property within the graph" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "When signaled sends the property referenced by this node to a Data Output slot" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out", + "tooltip": "Signaled after the referenced property has been pushed to the Data Output slot" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_NodeableNode.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_NodeableNode.names new file mode 100644 index 0000000000..db32104037 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_NodeableNode.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "{80351020-5778-491A-B6CA-C78364C19499}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "NodeableNode", + "tooltip": "NodeableNode" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_NodeableNodeOverloaded.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_NodeableNodeOverloaded.names new file mode 100644 index 0000000000..dcedf6840c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_NodeableNodeOverloaded.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "{C5C21008-F0B8-4FC8-843E-9C5C50B9DCDC}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "NodeableNodeOverloaded", + "tooltip": "NodeableNode" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_SetVariable.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_SetVariable.names new file mode 100644 index 0000000000..190dfb4c28 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_SetVariable.names @@ -0,0 +1,29 @@ +{ + "entries": [ + { + "key": "{5EFD2942-AFF9-4137-939C-023AEAA72EB0}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Set Variable", + "tooltip": "Node for setting a property within the graph" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "When signaled sends the variable referenced by this node to a Data Output slot" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out", + "tooltip": "Signaled after the referenced variable has been pushed to the Data Output slot" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_UnaryExpression.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_UnaryExpression.names new file mode 100644 index 0000000000..28ca30346b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_UnaryExpression.names @@ -0,0 +1,48 @@ +{ + "entries": [ + { + "key": "{70FF2162-3D01-41F1-B009-7DC071A38471}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "UnaryExpression", + "tooltip": "UnaryExpression" + }, + "slots": [ + { + "key": "DataInput_Value", + "details": { + "name": "Value" + } + }, + { + "key": "DataOutput_Result", + "details": { + "name": "Result" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Signal to perform the evaluation when desired." + } + }, + { + "key": "Output_True", + "details": { + "name": "True", + "tooltip": "Signaled if the result of the operation is true." + } + }, + { + "key": "Output_False", + "details": { + "name": "False", + "tooltip": "Signaled if the result of the operation is false." + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_UnaryOperator.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_UnaryOperator.names new file mode 100644 index 0000000000..3717b44595 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Uncategorized_UnaryOperator.names @@ -0,0 +1,22 @@ +{ + "entries": [ + { + "key": "{B0BF8615-D718-4115-B3D8-CAB554BC6863}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "UnaryOperator", + "tooltip": "UnaryOperator" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Signal to perform the evaluation when desired." + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesDebug_Print.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesDebug_Print.names new file mode 100644 index 0000000000..b1817d9acd --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesDebug_Print.names @@ -0,0 +1,36 @@ +{ + "entries": [ + { + "key": "{E1940FB4-83FE-4594-9AFF-375FF7603338}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Print", + "category": "Utilities/Debug", + "tooltip": "Formats and prints the provided text in the debug console.\nAny word within {} will create a data pin on this node.", + "subtitle": "Debug" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Input signal" + } + }, + { + "key": "DataInput_Value", + "details": { + "name": "Value" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_AddFailure.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_AddFailure.names new file mode 100644 index 0000000000..8f0eb7f3af --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_AddFailure.names @@ -0,0 +1,35 @@ +{ + "entries": [ + { + "key": "{1C4971A7-DE76-4E8E-9381-F579A57B2A78}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Add Failure", + "category": "Utilities/Unit Testing", + "tooltip": "adds a failure directly to the unit testing framework" + }, + "slots": [ + { + "key": "DataInput_Report", + "details": { + "name": "Report" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Input signal" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_AddSuccess.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_AddSuccess.names new file mode 100644 index 0000000000..0b3b7a1399 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_AddSuccess.names @@ -0,0 +1,35 @@ +{ + "entries": [ + { + "key": "{0D5B9544-C36B-490F-899A-E260D8351620}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Add Success", + "category": "Utilities/Unit Testing", + "tooltip": "adds a success directly to the unit testing framework" + }, + "slots": [ + { + "key": "DataInput_Report", + "details": { + "name": "Report" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Input signal" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_Checkpoint.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_Checkpoint.names new file mode 100644 index 0000000000..3ad1d73949 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_Checkpoint.names @@ -0,0 +1,35 @@ +{ + "entries": [ + { + "key": "{E65449D2-45A9-402B-ADF7-4E4F27A99245}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Checkpoint", + "category": "Utilities/Unit Testing", + "tooltip": "Add a progress checkpoint for test debugging" + }, + "slots": [ + { + "key": "DataInput_Report", + "details": { + "name": "Report" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Input signal" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_ExpectEqual.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_ExpectEqual.names new file mode 100644 index 0000000000..6a0e5938b7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_ExpectEqual.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "{856DB72A-48CB-4142-A032-1253D3AB8BEC}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Expect Equal", + "category": "Utilities/Unit Testing", + "tooltip": "Expects lhs equal to rhs" + }, + "slots": [ + { + "key": "DataInput_Report", + "details": { + "name": "Report" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Input signal" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Candidate", + "details": { + "name": "Candidate" + } + }, + { + "key": "DataInput_Reference", + "details": { + "name": "Reference" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_ExpectFalse.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_ExpectFalse.names new file mode 100644 index 0000000000..f5f80e56ea --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_ExpectFalse.names @@ -0,0 +1,41 @@ +{ + "entries": [ + { + "key": "{3838E12C-CEAB-4CED-9958-B6C0399FCD92}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Expect False", + "category": "Utilities/Unit Testing", + "tooltip": "Expects a value to be false" + }, + "slots": [ + { + "key": "DataInput_Candidate", + "details": { + "name": "Candidate" + } + }, + { + "key": "DataInput_Report", + "details": { + "name": "Report" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Input signal" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_ExpectGreaterThan.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_ExpectGreaterThan.names new file mode 100644 index 0000000000..73dabca9d7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_ExpectGreaterThan.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "{8DD464A5-C09D-4017-82B7-B1EA672BA9EA}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Expect Greater Than", + "category": "Utilities/Unit Testing", + "tooltip": "Expects lhs to be greater than rhs" + }, + "slots": [ + { + "key": "DataInput_Report", + "details": { + "name": "Report" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Input signal" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Candidate", + "details": { + "name": "Candidate" + } + }, + { + "key": "DataInput_Reference", + "details": { + "name": "Reference" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_ExpectGreaterThanEqual.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_ExpectGreaterThanEqual.names new file mode 100644 index 0000000000..cf1068fdbe --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_ExpectGreaterThanEqual.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "{8EB4E313-1479-4428-AE0C-75F233C5F5EB}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Expect Greater Than Equal", + "category": "Utilities/Unit Testing", + "tooltip": "Expects lhs to be greater than rhs" + }, + "slots": [ + { + "key": "DataInput_Report", + "details": { + "name": "Report" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Input signal" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Candidate", + "details": { + "name": "Candidate" + } + }, + { + "key": "DataInput_Reference", + "details": { + "name": "Reference" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_ExpectLessThan.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_ExpectLessThan.names new file mode 100644 index 0000000000..6d2ac88907 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_ExpectLessThan.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "{693FD406-8735-4DBB-B0A8-39E7DA467559}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Expect Less Than", + "category": "Utilities/Unit Testing", + "tooltip": "Expects lhs to be less than rhs" + }, + "slots": [ + { + "key": "DataInput_Report", + "details": { + "name": "Report" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Input signal" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Candidate", + "details": { + "name": "Candidate" + } + }, + { + "key": "DataInput_Reference", + "details": { + "name": "Reference" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_ExpectLessThanEqual.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_ExpectLessThanEqual.names new file mode 100644 index 0000000000..8c9bb8df5f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_ExpectLessThanEqual.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "{52D4803F-6273-4A4E-96CC-F2892CFE433B}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Expect Less Than Equal", + "category": "Utilities/Unit Testing", + "tooltip": "Expects lhs to be greater than rhs" + }, + "slots": [ + { + "key": "DataInput_Report", + "details": { + "name": "Report" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Input signal" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Candidate", + "details": { + "name": "Candidate" + } + }, + { + "key": "DataInput_Reference", + "details": { + "name": "Reference" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_ExpectNotEqual.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_ExpectNotEqual.names new file mode 100644 index 0000000000..ef1b954761 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_ExpectNotEqual.names @@ -0,0 +1,47 @@ +{ + "entries": [ + { + "key": "{66334794-0F98-4BFC-9DB0-8AB6A4052D09}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Expect Not Equal", + "category": "Utilities/Unit Testing", + "tooltip": "Expects lhs not equal to rhs" + }, + "slots": [ + { + "key": "DataInput_Report", + "details": { + "name": "Report" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Input signal" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + }, + { + "key": "DataInput_Candidate", + "details": { + "name": "Candidate" + } + }, + { + "key": "DataInput_Reference", + "details": { + "name": "Reference" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_ExpectTrue.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_ExpectTrue.names new file mode 100644 index 0000000000..62c2dfb710 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_ExpectTrue.names @@ -0,0 +1,41 @@ +{ + "entries": [ + { + "key": "{88F9BE2D-F591-45AD-9682-FBB67C39C504}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Expect True", + "category": "Utilities/Unit Testing", + "tooltip": "Expects a value to be true" + }, + "slots": [ + { + "key": "DataInput_Candidate", + "details": { + "name": "Candidate" + } + }, + { + "key": "DataInput_Report", + "details": { + "name": "Report" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Input signal" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_MarkComplete.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_MarkComplete.names new file mode 100644 index 0000000000..4a0b442e56 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/UtilitiesUnitTesting_MarkComplete.names @@ -0,0 +1,35 @@ +{ + "entries": [ + { + "key": "{DC0BCFE9-3066-4232-AA68-AAFB206C917F}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Mark Complete", + "category": "Utilities/Unit Testing", + "tooltip": "reports that the graph completed to the unit testing framework" + }, + "slots": [ + { + "key": "DataInput_Report", + "details": { + "name": "Report" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Input signal" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Utilities_BaseTimerNode.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Utilities_BaseTimerNode.names new file mode 100644 index 0000000000..32ac04b759 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Utilities_BaseTimerNode.names @@ -0,0 +1,23 @@ +{ + "entries": [ + { + "key": "{BAD6C904-6078-49E8-B461-CA4410B785A4}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "BaseTimerNode", + "category": "Utilities", + "tooltip": "Provides a basic interaction layer for all time based nodes for users(handles swapping between ticks and seconds).", + "subtitle": "Utilities" + }, + "slots": [ + { + "key": "DataInput_Delay", + "details": { + "name": "Delay" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Utilities_ExtractProperties.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Utilities_ExtractProperties.names new file mode 100644 index 0000000000..7f052d76d3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Utilities_ExtractProperties.names @@ -0,0 +1,37 @@ +{ + "entries": [ + { + "key": "{D4C9DA8E-838B-41C6-B870-C75294C323DC}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Extract Properties", + "category": "Utilities", + "tooltip": "Extracts property values from connected input", + "subtitle": "Utilities" + }, + "slots": [ + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "When signaled assigns property values using the supplied source input" + } + }, + { + "key": "Output_Out", + "details": { + "name": "Out", + "tooltip": "Signaled after all property haves have been pushed to the output slots" + } + }, + { + "key": "DataInput_Source", + "details": { + "name": "Source" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Utilities_Repeater.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Utilities_Repeater.names new file mode 100644 index 0000000000..c2e45a57a2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Nodes/Utilities_Repeater.names @@ -0,0 +1,50 @@ +{ + "entries": [ + { + "key": "{0A38EDCA-0571-48F0-9199-F6168C1EAAF0}", + "context": "ScriptCanvas::Node", + "variant": "", + "details": { + "name": "Repeater", + "category": "Utilities", + "tooltip": "Repeats the output signal the given number of times using the specified delay to space the signals out", + "subtitle": "Utilities" + }, + "slots": [ + { + "key": "DataInput_Repetitions", + "details": { + "name": "Repetitions" + } + }, + { + "key": "Input_In", + "details": { + "name": "In", + "tooltip": "Input signal" + } + }, + { + "key": "Output_Complete", + "details": { + "name": "Complete", + "tooltip": "Signaled upon node exit" + } + }, + { + "key": "Output_Action", + "details": { + "name": "Action", + "tooltip": "The signal that will be repeated" + } + }, + { + "key": "DataInput_Interval", + "details": { + "name": "Interval" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ALPHA.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ALPHA.names new file mode 100644 index 0000000000..3ec467cbfd --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ALPHA.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "ALPHA", + "context": "Constant", + "variant": "", + "details": { + "name": "ALPHA::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/AreaLightComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/AreaLightComponentTypeId.names new file mode 100644 index 0000000000..2585ca9071 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/AreaLightComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "AreaLightComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "AreaLightComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/AudioObstructionType_Ignore.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/AudioObstructionType_Ignore.names new file mode 100644 index 0000000000..a8099784d0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/AudioObstructionType_Ignore.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "AudioObstructionType_Ignore", + "context": "Constant", + "variant": "", + "details": { + "name": "AudioObstructionType_Ignore::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/AudioObstructionType_MultiRay.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/AudioObstructionType_MultiRay.names new file mode 100644 index 0000000000..4c0cdc5803 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/AudioObstructionType_MultiRay.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "AudioObstructionType_MultiRay", + "context": "Constant", + "variant": "", + "details": { + "name": "AudioObstructionType_MultiRay::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/AudioObstructionType_SingleRay.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/AudioObstructionType_SingleRay.names new file mode 100644 index 0000000000..bf61f3430f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/AudioObstructionType_SingleRay.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "AudioObstructionType_SingleRay", + "context": "Constant", + "variant": "", + "details": { + "name": "AudioObstructionType_SingleRay::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/AudioPreloadComponentLoadType_Auto.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/AudioPreloadComponentLoadType_Auto.names new file mode 100644 index 0000000000..0522c4b2e8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/AudioPreloadComponentLoadType_Auto.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "AudioPreloadComponentLoadType_Auto", + "context": "Constant", + "variant": "", + "details": { + "name": "AudioPreloadComponentLoadType_Auto::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/AudioPreloadComponentLoadType_Manual.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/AudioPreloadComponentLoadType_Manual.names new file mode 100644 index 0000000000..e81b8fd73c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/AudioPreloadComponentLoadType_Manual.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "AudioPreloadComponentLoadType_Manual", + "context": "Constant", + "variant": "", + "details": { + "name": "AudioPreloadComponentLoadType_Manual::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/AxisAlignedBoxShapeComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/AxisAlignedBoxShapeComponentTypeId.names new file mode 100644 index 0000000000..5437a6a5c9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/AxisAlignedBoxShapeComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "AxisAlignedBoxShapeComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "AxisAlignedBoxShapeComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BRAVO.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BRAVO.names new file mode 100644 index 0000000000..c1cd1a28bf --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BRAVO.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BRAVO", + "context": "Constant", + "variant": "", + "details": { + "name": "BRAVO::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_AlphaDest.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_AlphaDest.names new file mode 100644 index 0000000000..74f2fe9c14 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_AlphaDest.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BlendFactor_AlphaDest", + "context": "Constant", + "variant": "", + "details": { + "name": "BlendFactor_AlphaDest::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_AlphaDestInverse.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_AlphaDestInverse.names new file mode 100644 index 0000000000..ae1804aa64 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_AlphaDestInverse.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BlendFactor_AlphaDestInverse", + "context": "Constant", + "variant": "", + "details": { + "name": "BlendFactor_AlphaDestInverse::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_AlphaSource.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_AlphaSource.names new file mode 100644 index 0000000000..252dca2bcb --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_AlphaSource.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BlendFactor_AlphaSource", + "context": "Constant", + "variant": "", + "details": { + "name": "BlendFactor_AlphaSource::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_AlphaSource1.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_AlphaSource1.names new file mode 100644 index 0000000000..8924ea6c15 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_AlphaSource1.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BlendFactor_AlphaSource1", + "context": "Constant", + "variant": "", + "details": { + "name": "BlendFactor_AlphaSource1::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_AlphaSource1Inverse.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_AlphaSource1Inverse.names new file mode 100644 index 0000000000..af6c0b6dd5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_AlphaSource1Inverse.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BlendFactor_AlphaSource1Inverse", + "context": "Constant", + "variant": "", + "details": { + "name": "BlendFactor_AlphaSource1Inverse::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_AlphaSourceInverse.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_AlphaSourceInverse.names new file mode 100644 index 0000000000..f933c877a8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_AlphaSourceInverse.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BlendFactor_AlphaSourceInverse", + "context": "Constant", + "variant": "", + "details": { + "name": "BlendFactor_AlphaSourceInverse::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_AlphaSourceSaturate.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_AlphaSourceSaturate.names new file mode 100644 index 0000000000..a2a027ea6b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_AlphaSourceSaturate.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BlendFactor_AlphaSourceSaturate", + "context": "Constant", + "variant": "", + "details": { + "name": "BlendFactor_AlphaSourceSaturate::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_ColorDest.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_ColorDest.names new file mode 100644 index 0000000000..1f9c086e82 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_ColorDest.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BlendFactor_ColorDest", + "context": "Constant", + "variant": "", + "details": { + "name": "BlendFactor_ColorDest::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_ColorDestInverse.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_ColorDestInverse.names new file mode 100644 index 0000000000..93fa5750ef --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_ColorDestInverse.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BlendFactor_ColorDestInverse", + "context": "Constant", + "variant": "", + "details": { + "name": "BlendFactor_ColorDestInverse::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_ColorSource.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_ColorSource.names new file mode 100644 index 0000000000..317b1f283b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_ColorSource.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BlendFactor_ColorSource", + "context": "Constant", + "variant": "", + "details": { + "name": "BlendFactor_ColorSource::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_ColorSource1.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_ColorSource1.names new file mode 100644 index 0000000000..0a9db7be52 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_ColorSource1.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BlendFactor_ColorSource1", + "context": "Constant", + "variant": "", + "details": { + "name": "BlendFactor_ColorSource1::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_ColorSource1Inverse.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_ColorSource1Inverse.names new file mode 100644 index 0000000000..68e4f3e1ca --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_ColorSource1Inverse.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BlendFactor_ColorSource1Inverse", + "context": "Constant", + "variant": "", + "details": { + "name": "BlendFactor_ColorSource1Inverse::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_ColorSourceInverse.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_ColorSourceInverse.names new file mode 100644 index 0000000000..cd84b391d8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_ColorSourceInverse.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BlendFactor_ColorSourceInverse", + "context": "Constant", + "variant": "", + "details": { + "name": "BlendFactor_ColorSourceInverse::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_Factor.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_Factor.names new file mode 100644 index 0000000000..2b7648e44c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_Factor.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BlendFactor_Factor", + "context": "Constant", + "variant": "", + "details": { + "name": "BlendFactor_Factor::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_FactorInverse.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_FactorInverse.names new file mode 100644 index 0000000000..f5a6d3ae3a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_FactorInverse.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BlendFactor_FactorInverse", + "context": "Constant", + "variant": "", + "details": { + "name": "BlendFactor_FactorInverse::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_Invalid.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_Invalid.names new file mode 100644 index 0000000000..c5b269624b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_Invalid.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BlendFactor_Invalid", + "context": "Constant", + "variant": "", + "details": { + "name": "BlendFactor_Invalid::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_One.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_One.names new file mode 100644 index 0000000000..fee52d4844 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_One.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BlendFactor_One", + "context": "Constant", + "variant": "", + "details": { + "name": "BlendFactor_One::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_Zero.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_Zero.names new file mode 100644 index 0000000000..35c7e8df15 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendFactor_Zero.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BlendFactor_Zero", + "context": "Constant", + "variant": "", + "details": { + "name": "BlendFactor_Zero::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendOp_Add.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendOp_Add.names new file mode 100644 index 0000000000..e27d493605 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendOp_Add.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BlendOp_Add", + "context": "Constant", + "variant": "", + "details": { + "name": "BlendOp_Add::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendOp_Invalid.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendOp_Invalid.names new file mode 100644 index 0000000000..7d099cc394 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendOp_Invalid.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BlendOp_Invalid", + "context": "Constant", + "variant": "", + "details": { + "name": "BlendOp_Invalid::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendOp_Maximum.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendOp_Maximum.names new file mode 100644 index 0000000000..1970242769 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendOp_Maximum.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BlendOp_Maximum", + "context": "Constant", + "variant": "", + "details": { + "name": "BlendOp_Maximum::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendOp_Minimum.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendOp_Minimum.names new file mode 100644 index 0000000000..714568e008 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendOp_Minimum.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BlendOp_Minimum", + "context": "Constant", + "variant": "", + "details": { + "name": "BlendOp_Minimum::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendOp_Subtract.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendOp_Subtract.names new file mode 100644 index 0000000000..6faf93dbf4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendOp_Subtract.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BlendOp_Subtract", + "context": "Constant", + "variant": "", + "details": { + "name": "BlendOp_Subtract::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendOp_SubtractReverse.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendOp_SubtractReverse.names new file mode 100644 index 0000000000..b8f98b7600 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BlendOp_SubtractReverse.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BlendOp_SubtractReverse", + "context": "Constant", + "variant": "", + "details": { + "name": "BlendOp_SubtractReverse::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BloomComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BloomComponentTypeId.names new file mode 100644 index 0000000000..0d8ba9a325 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BloomComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BloomComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "BloomComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BoxShapeComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BoxShapeComponentTypeId.names new file mode 100644 index 0000000000..5f076bd6a5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/BoxShapeComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "BoxShapeComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "BoxShapeComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/CHARLIE.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/CHARLIE.names new file mode 100644 index 0000000000..85f7c894f4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/CHARLIE.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "CHARLIE", + "context": "Constant", + "variant": "", + "details": { + "name": "CHARLIE::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/CapsuleShapeComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/CapsuleShapeComponentTypeId.names new file mode 100644 index 0000000000..a17f6781d4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/CapsuleShapeComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "CapsuleShapeComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "CapsuleShapeComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ConstantGradientComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ConstantGradientComponentTypeId.names new file mode 100644 index 0000000000..0ff818c566 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ConstantGradientComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "ConstantGradientComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "ConstantGradientComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/CullMode_Back.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/CullMode_Back.names new file mode 100644 index 0000000000..61d2c8369e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/CullMode_Back.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "CullMode_Back", + "context": "Constant", + "variant": "", + "details": { + "name": "CullMode_Back::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/CullMode_Front.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/CullMode_Front.names new file mode 100644 index 0000000000..7f5a35a7f2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/CullMode_Front.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "CullMode_Front", + "context": "Constant", + "variant": "", + "details": { + "name": "CullMode_Front::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/CullMode_Invalid.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/CullMode_Invalid.names new file mode 100644 index 0000000000..4eb73b06ea --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/CullMode_Invalid.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "CullMode_Invalid", + "context": "Constant", + "variant": "", + "details": { + "name": "CullMode_Invalid::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/CullMode_None.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/CullMode_None.names new file mode 100644 index 0000000000..182e9c7573 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/CullMode_None.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "CullMode_None", + "context": "Constant", + "variant": "", + "details": { + "name": "CullMode_None::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/CylinderShapeComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/CylinderShapeComponentTypeId.names new file mode 100644 index 0000000000..3dadc415fd --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/CylinderShapeComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "CylinderShapeComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "CylinderShapeComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DecalComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DecalComponentTypeId.names new file mode 100644 index 0000000000..2a6aaa134e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DecalComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DecalComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "DecalComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DefaultLodOverride.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DefaultLodOverride.names new file mode 100644 index 0000000000..c46ee43b8b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DefaultLodOverride.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DefaultLodOverride", + "context": "Constant", + "variant": "", + "details": { + "name": "DefaultLodOverride::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DefaultLodType.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DefaultLodType.names new file mode 100644 index 0000000000..6e166c3480 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DefaultLodType.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DefaultLodType", + "context": "Constant", + "variant": "", + "details": { + "name": "DefaultLodType::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DefaultMaterialAssignment.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DefaultMaterialAssignment.names new file mode 100644 index 0000000000..f435b539a8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DefaultMaterialAssignment.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DefaultMaterialAssignment", + "context": "Constant", + "variant": "", + "details": { + "name": "DefaultMaterialAssignment::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DefaultMaterialAssignmentId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DefaultMaterialAssignmentId.names new file mode 100644 index 0000000000..b3188d9452 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DefaultMaterialAssignmentId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DefaultMaterialAssignmentId", + "context": "Constant", + "variant": "", + "details": { + "name": "DefaultMaterialAssignmentId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DefaultMaterialAssignmentMap.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DefaultMaterialAssignmentMap.names new file mode 100644 index 0000000000..248cf3f7ae --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DefaultMaterialAssignmentMap.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DefaultMaterialAssignmentMap", + "context": "Constant", + "variant": "", + "details": { + "name": "DefaultMaterialAssignmentMap::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DefaultPhysicsSceneId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DefaultPhysicsSceneId.names new file mode 100644 index 0000000000..142b97a590 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DefaultPhysicsSceneId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DefaultPhysicsSceneId", + "context": "Constant", + "variant": "", + "details": { + "name": "DefaultPhysicsSceneId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DefaultPhysicsSceneName.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DefaultPhysicsSceneName.names new file mode 100644 index 0000000000..bb32deaea4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DefaultPhysicsSceneName.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DefaultPhysicsSceneName", + "context": "Constant", + "variant": "", + "details": { + "name": "DefaultPhysicsSceneName::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DeferredFogComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DeferredFogComponentTypeId.names new file mode 100644 index 0000000000..4c4899f264 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DeferredFogComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DeferredFogComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "DeferredFogComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DepthOfFieldComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DepthOfFieldComponentTypeId.names new file mode 100644 index 0000000000..2104b9642f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DepthOfFieldComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DepthOfFieldComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "DepthOfFieldComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DepthWriteMask_All.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DepthWriteMask_All.names new file mode 100644 index 0000000000..e169a19258 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DepthWriteMask_All.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DepthWriteMask_All", + "context": "Constant", + "variant": "", + "details": { + "name": "DepthWriteMask_All::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DepthWriteMask_Invalid.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DepthWriteMask_Invalid.names new file mode 100644 index 0000000000..4789194d25 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DepthWriteMask_Invalid.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DepthWriteMask_Invalid", + "context": "Constant", + "variant": "", + "details": { + "name": "DepthWriteMask_Invalid::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DepthWriteMask_Zero.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DepthWriteMask_Zero.names new file mode 100644 index 0000000000..4268b4d8f8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DepthWriteMask_Zero.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DepthWriteMask_Zero", + "context": "Constant", + "variant": "", + "details": { + "name": "DepthWriteMask_Zero::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DiffuseGlobalIlluminationComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DiffuseGlobalIlluminationComponentTypeId.names new file mode 100644 index 0000000000..2e633a1192 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DiffuseGlobalIlluminationComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DiffuseGlobalIlluminationComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "DiffuseGlobalIlluminationComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DiffuseProbeGridComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DiffuseProbeGridComponentTypeId.names new file mode 100644 index 0000000000..c5b5f17bde --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DiffuseProbeGridComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DiffuseProbeGridComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "DiffuseProbeGridComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DirectionalLightComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DirectionalLightComponentTypeId.names new file mode 100644 index 0000000000..0ad98b326e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DirectionalLightComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DirectionalLightComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "DirectionalLightComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DiskShapeComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DiskShapeComponentTypeId.names new file mode 100644 index 0000000000..cac82ca189 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DiskShapeComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DiskShapeComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "DiskShapeComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplayMapperComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplayMapperComponentTypeId.names new file mode 100644 index 0000000000..9117f367ee --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplayMapperComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DisplayMapperComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "DisplayMapperComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplaySettings_HideHelpers.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplaySettings_HideHelpers.names new file mode 100644 index 0000000000..488a8f7ec2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplaySettings_HideHelpers.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DisplaySettings_HideHelpers", + "context": "Constant", + "variant": "", + "details": { + "name": "DisplaySettings_HideHelpers::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplaySettings_HideLinks.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplaySettings_HideLinks.names new file mode 100644 index 0000000000..d532e8ff35 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplaySettings_HideLinks.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DisplaySettings_HideLinks", + "context": "Constant", + "variant": "", + "details": { + "name": "DisplaySettings_HideLinks::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplaySettings_HideTracks.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplaySettings_HideTracks.names new file mode 100644 index 0000000000..ade09a965c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplaySettings_HideTracks.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DisplaySettings_HideTracks", + "context": "Constant", + "variant": "", + "details": { + "name": "DisplaySettings_HideTracks::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplaySettings_NoCollision.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplaySettings_NoCollision.names new file mode 100644 index 0000000000..0cece10c67 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplaySettings_NoCollision.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DisplaySettings_NoCollision", + "context": "Constant", + "variant": "", + "details": { + "name": "DisplaySettings_NoCollision::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplaySettings_NoLabels.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplaySettings_NoLabels.names new file mode 100644 index 0000000000..d855c9ce0e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplaySettings_NoLabels.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DisplaySettings_NoLabels", + "context": "Constant", + "variant": "", + "details": { + "name": "DisplaySettings_NoLabels::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplaySettings_Physics.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplaySettings_Physics.names new file mode 100644 index 0000000000..237968c10e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplaySettings_Physics.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DisplaySettings_Physics", + "context": "Constant", + "variant": "", + "details": { + "name": "DisplaySettings_Physics::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplaySettings_SerializableFlagsMask.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplaySettings_SerializableFlagsMask.names new file mode 100644 index 0000000000..c6e4c44cb2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplaySettings_SerializableFlagsMask.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DisplaySettings_SerializableFlagsMask", + "context": "Constant", + "variant": "", + "details": { + "name": "DisplaySettings_SerializableFlagsMask::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplaySettings_ShowDimensionFigures.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplaySettings_ShowDimensionFigures.names new file mode 100644 index 0000000000..2c3f42a6c5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DisplaySettings_ShowDimensionFigures.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DisplaySettings_ShowDimensionFigures", + "context": "Constant", + "variant": "", + "details": { + "name": "DisplaySettings_ShowDimensionFigures::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DitherGradientComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DitherGradientComponentTypeId.names new file mode 100644 index 0000000000..f4be6282d0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/DitherGradientComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "DitherGradientComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "DitherGradientComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorAreaLightComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorAreaLightComponentTypeId.names new file mode 100644 index 0000000000..fd410df4f9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorAreaLightComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorAreaLightComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorAreaLightComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorBloomComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorBloomComponentTypeId.names new file mode 100644 index 0000000000..2d2f101be0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorBloomComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorBloomComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorBloomComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorDecalComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorDecalComponentTypeId.names new file mode 100644 index 0000000000..a40f551364 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorDecalComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorDecalComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorDecalComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorDeferredFogComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorDeferredFogComponentTypeId.names new file mode 100644 index 0000000000..c0f17922f6 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorDeferredFogComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorDeferredFogComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorDeferredFogComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorDepthOfFieldComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorDepthOfFieldComponentTypeId.names new file mode 100644 index 0000000000..fc16e176bd --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorDepthOfFieldComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorDepthOfFieldComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorDepthOfFieldComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorDiffuseGlobalIlluminationComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorDiffuseGlobalIlluminationComponentTypeId.names new file mode 100644 index 0000000000..ab9f4e04f0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorDiffuseGlobalIlluminationComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorDiffuseGlobalIlluminationComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorDiffuseGlobalIlluminationComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorDiffuseProbeGridComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorDiffuseProbeGridComponentTypeId.names new file mode 100644 index 0000000000..24e649c4b0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorDiffuseProbeGridComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorDiffuseProbeGridComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorDiffuseProbeGridComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorDirectionalLightComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorDirectionalLightComponentTypeId.names new file mode 100644 index 0000000000..0caf18913a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorDirectionalLightComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorDirectionalLightComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorDirectionalLightComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorDisplayMapperComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorDisplayMapperComponentTypeId.names new file mode 100644 index 0000000000..6a449cb643 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorDisplayMapperComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorDisplayMapperComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorDisplayMapperComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorEntityReferenceComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorEntityReferenceComponentTypeId.names new file mode 100644 index 0000000000..f0214aec06 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorEntityReferenceComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorEntityReferenceComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorEntityReferenceComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorEntityStartStatus_EditorOnly.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorEntityStartStatus_EditorOnly.names new file mode 100644 index 0000000000..e4ca34fdb0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorEntityStartStatus_EditorOnly.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorEntityStartStatus_EditorOnly", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorEntityStartStatus_EditorOnly::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorEntityStartStatus_StartActive.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorEntityStartStatus_StartActive.names new file mode 100644 index 0000000000..51e4369297 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorEntityStartStatus_StartActive.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorEntityStartStatus_StartActive", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorEntityStartStatus_StartActive::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorEntityStartStatus_StartInactive.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorEntityStartStatus_StartInactive.names new file mode 100644 index 0000000000..fa41555722 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorEntityStartStatus_StartInactive.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorEntityStartStatus_StartInactive", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorEntityStartStatus_StartInactive::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorExposureControlComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorExposureControlComponentTypeId.names new file mode 100644 index 0000000000..3b9c6f893f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorExposureControlComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorExposureControlComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorExposureControlComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorGradientWeightModifierComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorGradientWeightModifierComponentTypeId.names new file mode 100644 index 0000000000..dc20398559 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorGradientWeightModifierComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorGradientWeightModifierComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorGradientWeightModifierComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorGridComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorGridComponentTypeId.names new file mode 100644 index 0000000000..5f3dbe3e87 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorGridComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorGridComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorGridComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorHDRiSkyboxComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorHDRiSkyboxComponentTypeId.names new file mode 100644 index 0000000000..d1e49132a9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorHDRiSkyboxComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorHDRiSkyboxComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorHDRiSkyboxComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorImageBasedLightComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorImageBasedLightComponentTypeId.names new file mode 100644 index 0000000000..e6ddff36a2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorImageBasedLightComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorImageBasedLightComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorImageBasedLightComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorLookModificationComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorLookModificationComponentTypeId.names new file mode 100644 index 0000000000..39bcdad1e5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorLookModificationComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorLookModificationComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorLookModificationComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorMaterialComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorMaterialComponentTypeId.names new file mode 100644 index 0000000000..35b3db3305 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorMaterialComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorMaterialComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorMaterialComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorMeshComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorMeshComponentTypeId.names new file mode 100644 index 0000000000..8ca2af81eb --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorMeshComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorMeshComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorMeshComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorNonUniformScaleComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorNonUniformScaleComponentTypeId.names new file mode 100644 index 0000000000..ea5a58d742 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorNonUniformScaleComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorNonUniformScaleComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorNonUniformScaleComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorOcclusionCullingPlaneComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorOcclusionCullingPlaneComponentTypeId.names new file mode 100644 index 0000000000..4c2b06be1a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorOcclusionCullingPlaneComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorOcclusionCullingPlaneComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorOcclusionCullingPlaneComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorPhysicalSkyComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorPhysicalSkyComponentTypeId.names new file mode 100644 index 0000000000..a1ec685c88 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorPhysicalSkyComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorPhysicalSkyComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorPhysicalSkyComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorPhysicsSceneId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorPhysicsSceneId.names new file mode 100644 index 0000000000..d98a729c34 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorPhysicsSceneId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorPhysicsSceneId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorPhysicsSceneId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorPhysicsSceneName.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorPhysicsSceneName.names new file mode 100644 index 0000000000..0a209f241c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorPhysicsSceneName.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorPhysicsSceneName", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorPhysicsSceneName::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorPostFxLayerComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorPostFxLayerComponentTypeId.names new file mode 100644 index 0000000000..d6372c4c94 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorPostFxLayerComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorPostFxLayerComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorPostFxLayerComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorRadiusWeightModifierComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorRadiusWeightModifierComponentTypeId.names new file mode 100644 index 0000000000..e8d4299ea7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorRadiusWeightModifierComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorRadiusWeightModifierComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorRadiusWeightModifierComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorReflectionProbeComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorReflectionProbeComponentTypeId.names new file mode 100644 index 0000000000..2bbbb9d789 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorReflectionProbeComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorReflectionProbeComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorReflectionProbeComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorShapeWeightModifierComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorShapeWeightModifierComponentTypeId.names new file mode 100644 index 0000000000..3abeafda2a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorShapeWeightModifierComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorShapeWeightModifierComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorShapeWeightModifierComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorSsaoComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorSsaoComponentTypeId.names new file mode 100644 index 0000000000..d1d030c18b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorSsaoComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorSsaoComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorSsaoComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorTransformComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorTransformComponentTypeId.names new file mode 100644 index 0000000000..ce90232aea --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EditorTransformComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EditorTransformComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EditorTransformComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EntityReferenceComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EntityReferenceComponentTypeId.names new file mode 100644 index 0000000000..d2e2fd6713 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/EntityReferenceComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "EntityReferenceComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "EntityReferenceComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ExposureControlComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ExposureControlComponentTypeId.names new file mode 100644 index 0000000000..e88dd26549 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ExposureControlComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "ExposureControlComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "ExposureControlComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FillMode_Invalid.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FillMode_Invalid.names new file mode 100644 index 0000000000..27cd936beb --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FillMode_Invalid.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "FillMode_Invalid", + "context": "Constant", + "variant": "", + "details": { + "name": "FillMode_Invalid::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FillMode_Solid.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FillMode_Solid.names new file mode 100644 index 0000000000..e3f52f0784 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FillMode_Solid.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "FillMode_Solid", + "context": "Constant", + "variant": "", + "details": { + "name": "FillMode_Solid::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FillMode_Wireframe.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FillMode_Wireframe.names new file mode 100644 index 0000000000..cdbe3521f7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FillMode_Wireframe.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "FillMode_Wireframe", + "context": "Constant", + "variant": "", + "details": { + "name": "FillMode_Wireframe::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FloatEpsilon.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FloatEpsilon.names new file mode 100644 index 0000000000..438ba833c5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FloatEpsilon.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "FloatEpsilon", + "context": "Constant", + "variant": "", + "details": { + "name": "FloatEpsilon::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FrameCaptureResult_FileWriteError.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FrameCaptureResult_FileWriteError.names new file mode 100644 index 0000000000..f0e0e3e68e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FrameCaptureResult_FileWriteError.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "FrameCaptureResult_FileWriteError", + "context": "Constant", + "variant": "", + "details": { + "name": "FrameCaptureResult_FileWriteError::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FrameCaptureResult_InternalError.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FrameCaptureResult_InternalError.names new file mode 100644 index 0000000000..823225c397 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FrameCaptureResult_InternalError.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "FrameCaptureResult_InternalError", + "context": "Constant", + "variant": "", + "details": { + "name": "FrameCaptureResult_InternalError::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FrameCaptureResult_InvalidArgument.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FrameCaptureResult_InvalidArgument.names new file mode 100644 index 0000000000..360800ac3e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FrameCaptureResult_InvalidArgument.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "FrameCaptureResult_InvalidArgument", + "context": "Constant", + "variant": "", + "details": { + "name": "FrameCaptureResult_InvalidArgument::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FrameCaptureResult_None.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FrameCaptureResult_None.names new file mode 100644 index 0000000000..a6ba18d32f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FrameCaptureResult_None.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "FrameCaptureResult_None", + "context": "Constant", + "variant": "", + "details": { + "name": "FrameCaptureResult_None::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FrameCaptureResult_Success.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FrameCaptureResult_Success.names new file mode 100644 index 0000000000..789fd31acf --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FrameCaptureResult_Success.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "FrameCaptureResult_Success", + "context": "Constant", + "variant": "", + "details": { + "name": "FrameCaptureResult_Success::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FrameCaptureResult_UnsupportedFormat.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FrameCaptureResult_UnsupportedFormat.names new file mode 100644 index 0000000000..136406261d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/FrameCaptureResult_UnsupportedFormat.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "FrameCaptureResult_UnsupportedFormat", + "context": "Constant", + "variant": "", + "details": { + "name": "FrameCaptureResult_UnsupportedFormat::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/GradientSurfaceDataComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/GradientSurfaceDataComponentTypeId.names new file mode 100644 index 0000000000..90e43a4a20 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/GradientSurfaceDataComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "GradientSurfaceDataComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "GradientSurfaceDataComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/GradientTransformComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/GradientTransformComponentTypeId.names new file mode 100644 index 0000000000..339c4d2904 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/GradientTransformComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "GradientTransformComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "GradientTransformComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/GradientWeightModifierComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/GradientWeightModifierComponentTypeId.names new file mode 100644 index 0000000000..cee5ed45f5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/GradientWeightModifierComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "GradientWeightModifierComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "GradientWeightModifierComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/GridComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/GridComponentTypeId.names new file mode 100644 index 0000000000..e6ca6375da --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/GridComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "GridComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "GridComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/HDRiSkyboxComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/HDRiSkyboxComponentTypeId.names new file mode 100644 index 0000000000..ce30501f5a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/HDRiSkyboxComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "HDRiSkyboxComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "HDRiSkyboxComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ImageBasedLightComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ImageBasedLightComponentTypeId.names new file mode 100644 index 0000000000..7669ee6318 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ImageBasedLightComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "ImageBasedLightComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "ImageBasedLightComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ImageGradientComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ImageGradientComponentTypeId.names new file mode 100644 index 0000000000..6fa8464e57 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ImageGradientComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "ImageGradientComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "ImageGradientComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/InvalidComponentId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/InvalidComponentId.names new file mode 100644 index 0000000000..5b2d673f0b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/InvalidComponentId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "InvalidComponentId", + "context": "Constant", + "variant": "", + "details": { + "name": "InvalidComponentId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/InvalidParameterIndex.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/InvalidParameterIndex.names new file mode 100644 index 0000000000..9d3edcdbee --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/InvalidParameterIndex.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "InvalidParameterIndex", + "context": "Constant", + "variant": "", + "details": { + "name": "InvalidParameterIndex::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/InvalidTemplateId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/InvalidTemplateId.names new file mode 100644 index 0000000000..30f928664c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/InvalidTemplateId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "InvalidTemplateId", + "context": "Constant", + "variant": "", + "details": { + "name": "InvalidTemplateId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/InvertGradientComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/InvertGradientComponentTypeId.names new file mode 100644 index 0000000000..0c6d3253b5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/InvertGradientComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "InvertGradientComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "InvertGradientComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/JsonMergePatch.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/JsonMergePatch.names new file mode 100644 index 0000000000..53e973e3a5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/JsonMergePatch.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "JsonMergePatch", + "context": "Constant", + "variant": "", + "details": { + "name": "JsonMergePatch::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/JsonPatch.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/JsonPatch.names new file mode 100644 index 0000000000..fec9372c25 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/JsonPatch.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "JsonPatch", + "context": "Constant", + "variant": "", + "details": { + "name": "JsonPatch::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/LevelsGradientComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/LevelsGradientComponentTypeId.names new file mode 100644 index 0000000000..294b87f61e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/LevelsGradientComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "LevelsGradientComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "LevelsGradientComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/LightAttenuationRadiusMode_Automatic.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/LightAttenuationRadiusMode_Automatic.names new file mode 100644 index 0000000000..2bbf9c2d54 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/LightAttenuationRadiusMode_Automatic.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "LightAttenuationRadiusMode_Automatic", + "context": "Constant", + "variant": "", + "details": { + "name": "LightAttenuationRadiusMode_Automatic::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/LightAttenuationRadiusMode_Explicit.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/LightAttenuationRadiusMode_Explicit.names new file mode 100644 index 0000000000..7f24ff6286 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/LightAttenuationRadiusMode_Explicit.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "LightAttenuationRadiusMode_Explicit", + "context": "Constant", + "variant": "", + "details": { + "name": "LightAttenuationRadiusMode_Explicit::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/LookModificationComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/LookModificationComponentTypeId.names new file mode 100644 index 0000000000..cd9bf7661f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/LookModificationComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "LookModificationComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "LookModificationComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MaterialComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MaterialComponentTypeId.names new file mode 100644 index 0000000000..0f13cdb0d6 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MaterialComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "MaterialComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "MaterialComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MaterialPropertyGroupVisibility_Enabled.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MaterialPropertyGroupVisibility_Enabled.names new file mode 100644 index 0000000000..22ced2479c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MaterialPropertyGroupVisibility_Enabled.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "MaterialPropertyGroupVisibility_Enabled", + "context": "Constant", + "variant": "", + "details": { + "name": "MaterialPropertyGroupVisibility_Enabled::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MaterialPropertyGroupVisibility_Hidden.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MaterialPropertyGroupVisibility_Hidden.names new file mode 100644 index 0000000000..0b332ba6e4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MaterialPropertyGroupVisibility_Hidden.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "MaterialPropertyGroupVisibility_Hidden", + "context": "Constant", + "variant": "", + "details": { + "name": "MaterialPropertyGroupVisibility_Hidden::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MaterialPropertyVisibility_Disabled.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MaterialPropertyVisibility_Disabled.names new file mode 100644 index 0000000000..7b22c9120c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MaterialPropertyVisibility_Disabled.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "MaterialPropertyVisibility_Disabled", + "context": "Constant", + "variant": "", + "details": { + "name": "MaterialPropertyVisibility_Disabled::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MaterialPropertyVisibility_Enabled.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MaterialPropertyVisibility_Enabled.names new file mode 100644 index 0000000000..7da9316556 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MaterialPropertyVisibility_Enabled.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "MaterialPropertyVisibility_Enabled", + "context": "Constant", + "variant": "", + "details": { + "name": "MaterialPropertyVisibility_Enabled::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MaterialPropertyVisibility_Hidden.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MaterialPropertyVisibility_Hidden.names new file mode 100644 index 0000000000..0d79119c32 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MaterialPropertyVisibility_Hidden.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "MaterialPropertyVisibility_Hidden", + "context": "Constant", + "variant": "", + "details": { + "name": "MaterialPropertyVisibility_Hidden::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MeshComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MeshComponentTypeId.names new file mode 100644 index 0000000000..ba1709fcf2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MeshComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "MeshComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "MeshComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MixedGradientComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MixedGradientComponentTypeId.names new file mode 100644 index 0000000000..f0364c7c45 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MixedGradientComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "MixedGradientComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "MixedGradientComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MultiPositionBehaviorType_Blended.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MultiPositionBehaviorType_Blended.names new file mode 100644 index 0000000000..7e95390e2e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MultiPositionBehaviorType_Blended.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "MultiPositionBehaviorType_Blended", + "context": "Constant", + "variant": "", + "details": { + "name": "MultiPositionBehaviorType_Blended::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MultiPositionBehaviorType_Separate.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MultiPositionBehaviorType_Separate.names new file mode 100644 index 0000000000..476c8b91ef --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/MultiPositionBehaviorType_Separate.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "MultiPositionBehaviorType_Separate", + "context": "Constant", + "variant": "", + "details": { + "name": "MultiPositionBehaviorType_Separate::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/OcclusionCullingPlaneComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/OcclusionCullingPlaneComponentTypeId.names new file mode 100644 index 0000000000..471b5d63d3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/OcclusionCullingPlaneComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "OcclusionCullingPlaneComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "OcclusionCullingPlaneComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PerlinGradientComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PerlinGradientComponentTypeId.names new file mode 100644 index 0000000000..0779352f77 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PerlinGradientComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "PerlinGradientComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "PerlinGradientComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PhotometricUnit_Candela.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PhotometricUnit_Candela.names new file mode 100644 index 0000000000..0923efc251 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PhotometricUnit_Candela.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "PhotometricUnit_Candela", + "context": "Constant", + "variant": "", + "details": { + "name": "PhotometricUnit_Candela::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PhotometricUnit_Ev100_Illuminance.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PhotometricUnit_Ev100_Illuminance.names new file mode 100644 index 0000000000..841af8eb4d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PhotometricUnit_Ev100_Illuminance.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "PhotometricUnit_Ev100_Illuminance", + "context": "Constant", + "variant": "", + "details": { + "name": "PhotometricUnit_Ev100_Illuminance::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PhotometricUnit_Ev100_Luminance.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PhotometricUnit_Ev100_Luminance.names new file mode 100644 index 0000000000..b6df92e7d2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PhotometricUnit_Ev100_Luminance.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "PhotometricUnit_Ev100_Luminance", + "context": "Constant", + "variant": "", + "details": { + "name": "PhotometricUnit_Ev100_Luminance::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PhotometricUnit_Lumen.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PhotometricUnit_Lumen.names new file mode 100644 index 0000000000..2d06fd13a3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PhotometricUnit_Lumen.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "PhotometricUnit_Lumen", + "context": "Constant", + "variant": "", + "details": { + "name": "PhotometricUnit_Lumen::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PhotometricUnit_Lux.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PhotometricUnit_Lux.names new file mode 100644 index 0000000000..b16b5a6b9e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PhotometricUnit_Lux.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "PhotometricUnit_Lux", + "context": "Constant", + "variant": "", + "details": { + "name": "PhotometricUnit_Lux::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PhotometricUnit_Nit.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PhotometricUnit_Nit.names new file mode 100644 index 0000000000..33af8d043e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PhotometricUnit_Nit.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "PhotometricUnit_Nit", + "context": "Constant", + "variant": "", + "details": { + "name": "PhotometricUnit_Nit::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PhotometricUnit_Unknown.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PhotometricUnit_Unknown.names new file mode 100644 index 0000000000..d748e688e2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PhotometricUnit_Unknown.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "PhotometricUnit_Unknown", + "context": "Constant", + "variant": "", + "details": { + "name": "PhotometricUnit_Unknown::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PhysicalSkyComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PhysicalSkyComponentTypeId.names new file mode 100644 index 0000000000..05b71703e9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PhysicalSkyComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "PhysicalSkyComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "PhysicalSkyComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PostFxLayerComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PostFxLayerComponentTypeId.names new file mode 100644 index 0000000000..b45a4432ef --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PostFxLayerComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "PostFxLayerComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "PostFxLayerComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PosterizeGradientComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PosterizeGradientComponentTypeId.names new file mode 100644 index 0000000000..1325364e24 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/PosterizeGradientComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "PosterizeGradientComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "PosterizeGradientComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/QuadShapeComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/QuadShapeComponentTypeId.names new file mode 100644 index 0000000000..5d98a25b38 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/QuadShapeComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "QuadShapeComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "QuadShapeComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/RadiusWeightModifierComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/RadiusWeightModifierComponentTypeId.names new file mode 100644 index 0000000000..43cfe542c0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/RadiusWeightModifierComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "RadiusWeightModifierComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "RadiusWeightModifierComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/RandomGradientComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/RandomGradientComponentTypeId.names new file mode 100644 index 0000000000..58045dbdec --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/RandomGradientComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "RandomGradientComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "RandomGradientComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ReferenceGradientComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ReferenceGradientComponentTypeId.names new file mode 100644 index 0000000000..89e3a955d1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ReferenceGradientComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "ReferenceGradientComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "ReferenceGradientComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ReflectionProbeComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ReflectionProbeComponentTypeId.names new file mode 100644 index 0000000000..9d8cf61239 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ReflectionProbeComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "ReflectionProbeComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "ReflectionProbeComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowFilterMethod_ESM.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowFilterMethod_ESM.names new file mode 100644 index 0000000000..3542ed76bb --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowFilterMethod_ESM.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "ShadowFilterMethod_ESM", + "context": "Constant", + "variant": "", + "details": { + "name": "ShadowFilterMethod_ESM::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowFilterMethod_ESM_PCF.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowFilterMethod_ESM_PCF.names new file mode 100644 index 0000000000..57736a0912 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowFilterMethod_ESM_PCF.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "ShadowFilterMethod_ESM_PCF", + "context": "Constant", + "variant": "", + "details": { + "name": "ShadowFilterMethod_ESM_PCF::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowFilterMethod_None.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowFilterMethod_None.names new file mode 100644 index 0000000000..90a1da18fe --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowFilterMethod_None.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "ShadowFilterMethod_None", + "context": "Constant", + "variant": "", + "details": { + "name": "ShadowFilterMethod_None::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowFilterMethod_PCF.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowFilterMethod_PCF.names new file mode 100644 index 0000000000..0600bfc8d2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowFilterMethod_PCF.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "ShadowFilterMethod_PCF", + "context": "Constant", + "variant": "", + "details": { + "name": "ShadowFilterMethod_PCF::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowmapSize_1024.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowmapSize_1024.names new file mode 100644 index 0000000000..0814f06cce --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowmapSize_1024.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "ShadowmapSize_1024", + "context": "Constant", + "variant": "", + "details": { + "name": "ShadowmapSize_1024::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowmapSize_2045.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowmapSize_2045.names new file mode 100644 index 0000000000..4ed139c23a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowmapSize_2045.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "ShadowmapSize_2045", + "context": "Constant", + "variant": "", + "details": { + "name": "ShadowmapSize_2045::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowmapSize_256.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowmapSize_256.names new file mode 100644 index 0000000000..174dcbd1e7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowmapSize_256.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "ShadowmapSize_256", + "context": "Constant", + "variant": "", + "details": { + "name": "ShadowmapSize_256::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowmapSize_512.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowmapSize_512.names new file mode 100644 index 0000000000..476a558ad6 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowmapSize_512.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "ShadowmapSize_512", + "context": "Constant", + "variant": "", + "details": { + "name": "ShadowmapSize_512::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowmapSize_None.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowmapSize_None.names new file mode 100644 index 0000000000..a1f9c51c8f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShadowmapSize_None.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "ShadowmapSize_None", + "context": "Constant", + "variant": "", + "details": { + "name": "ShadowmapSize_None::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShapeAreaFalloffGradientComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShapeAreaFalloffGradientComponentTypeId.names new file mode 100644 index 0000000000..a1e9881e41 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShapeAreaFalloffGradientComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "ShapeAreaFalloffGradientComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "ShapeAreaFalloffGradientComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShapeChangeReasons_ShapeChanged.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShapeChangeReasons_ShapeChanged.names new file mode 100644 index 0000000000..700decf418 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShapeChangeReasons_ShapeChanged.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "ShapeChangeReasons_ShapeChanged", + "context": "Constant", + "variant": "", + "details": { + "name": "ShapeChangeReasons_ShapeChanged::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShapeChangeReasons_TransformChanged.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShapeChangeReasons_TransformChanged.names new file mode 100644 index 0000000000..441ee1a3bc --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShapeChangeReasons_TransformChanged.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "ShapeChangeReasons_TransformChanged", + "context": "Constant", + "variant": "", + "details": { + "name": "ShapeChangeReasons_TransformChanged::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShapeType_Box.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShapeType_Box.names new file mode 100644 index 0000000000..1cb9b145a3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShapeType_Box.names @@ -0,0 +1,30 @@ +{ + "entries": [ + { + "key": "ShapeType_Box", + "context": "Constant", + "variant": "", + "details": { + "name": "Get Shape Type: Box", + "category": "Constants/Physics" + }, + "methods": [ + { + "key": "ShapeType_Box", + "details": { + "name": "Get Shape Type: Box", + "subtitle": "Shape Type" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Shape Type" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShapeType_Cylinder.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShapeType_Cylinder.names new file mode 100644 index 0000000000..a86b0ef92f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShapeType_Cylinder.names @@ -0,0 +1,30 @@ +{ + "entries": [ + { + "key": "ShapeType_Cylinder", + "context": "Constant", + "variant": "", + "details": { + "name": "Get Shape Type: Cylinder", + "category": "Constants/Physics" + }, + "methods": [ + { + "key": "ShapeType_Cylinder", + "details": { + "name": "Get Shape Type: Cylinder", + "subtitle": "Shape Type" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Shape Type" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShapeType_PhysicsAsset.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShapeType_PhysicsAsset.names new file mode 100644 index 0000000000..ad0eb63c86 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShapeType_PhysicsAsset.names @@ -0,0 +1,30 @@ +{ + "entries": [ + { + "key": "ShapeType_PhysicsAsset", + "context": "Constant", + "variant": "", + "details": { + "name": "Get Shape Type: Physics Asset", + "category": "Constants/Physics" + }, + "methods": [ + { + "key": "ShapeType_PhysicsAsset", + "details": { + "name": "Get Shape Type: Physics Asset", + "subtitle": "Shape Type" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Shape Type" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShapeType_Sphere.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShapeType_Sphere.names new file mode 100644 index 0000000000..f66c73f0b2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShapeType_Sphere.names @@ -0,0 +1,30 @@ +{ + "entries": [ + { + "key": "ShapeType_Sphere", + "context": "Constant", + "variant": "", + "details": { + "name": "Get Shape Type: Sphere", + "category": "Constants/Physics" + }, + "methods": [ + { + "key": "ShapeType_Sphere", + "details": { + "name": "SGet Shape Type: Sphere", + "subtitle": "Shape Type" + }, + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "Shape Type" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShapeWeightModifierComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShapeWeightModifierComponentTypeId.names new file mode 100644 index 0000000000..947f0d1a0d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ShapeWeightModifierComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "ShapeWeightModifierComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "ShapeWeightModifierComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SlopeAlignmentModifierComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SlopeAlignmentModifierComponentTypeId.names new file mode 100644 index 0000000000..74e704cb34 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SlopeAlignmentModifierComponentTypeId.names @@ -0,0 +1,28 @@ +{ + "entries": [ + { + "key": "SlopeAlignmentModifierComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "" + }, + "methods": [ + { + "key": "SlopeAlignmentModifierComponentTypeId", + "details": { + "name": "SlopeAlignmentModifierComponentTypeId::Getter" + }, + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SmoothStepGradientComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SmoothStepGradientComponentTypeId.names new file mode 100644 index 0000000000..0e2ee25219 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SmoothStepGradientComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "SmoothStepGradientComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "SmoothStepGradientComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SpawnerComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SpawnerComponentTypeId.names new file mode 100644 index 0000000000..72a66d38e8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SpawnerComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "SpawnerComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "SpawnerComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SphereShapeComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SphereShapeComponentTypeId.names new file mode 100644 index 0000000000..cedd42ef6a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SphereShapeComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "SphereShapeComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "SphereShapeComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SsaoComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SsaoComponentTypeId.names new file mode 100644 index 0000000000..525dbdcdd0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SsaoComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "SsaoComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "SsaoComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_Decrement.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_Decrement.names new file mode 100644 index 0000000000..da6699bfbe --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_Decrement.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "StencilOp_Decrement", + "context": "Constant", + "variant": "", + "details": { + "name": "StencilOp_Decrement::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_DecrementSaturate.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_DecrementSaturate.names new file mode 100644 index 0000000000..46fce46fc3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_DecrementSaturate.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "StencilOp_DecrementSaturate", + "context": "Constant", + "variant": "", + "details": { + "name": "StencilOp_DecrementSaturate::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_Increment.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_Increment.names new file mode 100644 index 0000000000..9d20ca70fb --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_Increment.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "StencilOp_Increment", + "context": "Constant", + "variant": "", + "details": { + "name": "StencilOp_Increment::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_IncrementSaturate.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_IncrementSaturate.names new file mode 100644 index 0000000000..77bfc0a95e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_IncrementSaturate.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "StencilOp_IncrementSaturate", + "context": "Constant", + "variant": "", + "details": { + "name": "StencilOp_IncrementSaturate::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_Invalid.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_Invalid.names new file mode 100644 index 0000000000..7f6e5fc38a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_Invalid.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "StencilOp_Invalid", + "context": "Constant", + "variant": "", + "details": { + "name": "StencilOp_Invalid::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_Invert.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_Invert.names new file mode 100644 index 0000000000..021e089ac1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_Invert.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "StencilOp_Invert", + "context": "Constant", + "variant": "", + "details": { + "name": "StencilOp_Invert::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_Keep.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_Keep.names new file mode 100644 index 0000000000..e4e4fc1956 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_Keep.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "StencilOp_Keep", + "context": "Constant", + "variant": "", + "details": { + "name": "StencilOp_Keep::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_Replace.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_Replace.names new file mode 100644 index 0000000000..331397d027 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_Replace.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "StencilOp_Replace", + "context": "Constant", + "variant": "", + "details": { + "name": "StencilOp_Replace::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_Zero.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_Zero.names new file mode 100644 index 0000000000..9d17600aad --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/StencilOp_Zero.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "StencilOp_Zero", + "context": "Constant", + "variant": "", + "details": { + "name": "StencilOp_Zero::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SurfaceAltitudeGradientComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SurfaceAltitudeGradientComponentTypeId.names new file mode 100644 index 0000000000..01d0ca9912 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SurfaceAltitudeGradientComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "SurfaceAltitudeGradientComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "SurfaceAltitudeGradientComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SurfaceMaskGradientComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SurfaceMaskGradientComponentTypeId.names new file mode 100644 index 0000000000..d98abc6e80 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SurfaceMaskGradientComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "SurfaceMaskGradientComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "SurfaceMaskGradientComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SurfaceSlopeGradientComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SurfaceSlopeGradientComponentTypeId.names new file mode 100644 index 0000000000..29955c91f4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SurfaceSlopeGradientComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "SurfaceSlopeGradientComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "SurfaceSlopeGradientComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigPlatform_Android.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigPlatform_Android.names new file mode 100644 index 0000000000..b615174731 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigPlatform_Android.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "SystemConfigPlatform_Android", + "context": "Constant", + "variant": "", + "details": { + "name": "SystemConfigPlatform_Android::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigPlatform_InvalidPlatform.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigPlatform_InvalidPlatform.names new file mode 100644 index 0000000000..ebb0dc01bf --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigPlatform_InvalidPlatform.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "SystemConfigPlatform_InvalidPlatform", + "context": "Constant", + "variant": "", + "details": { + "name": "SystemConfigPlatform_InvalidPlatform::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigPlatform_Ios.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigPlatform_Ios.names new file mode 100644 index 0000000000..2de01a41e9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigPlatform_Ios.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "SystemConfigPlatform_Ios", + "context": "Constant", + "variant": "", + "details": { + "name": "SystemConfigPlatform_Ios::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigPlatform_Mac.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigPlatform_Mac.names new file mode 100644 index 0000000000..50dc9a573f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigPlatform_Mac.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "SystemConfigPlatform_Mac", + "context": "Constant", + "variant": "", + "details": { + "name": "SystemConfigPlatform_Mac::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigPlatform_OsxMetal.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigPlatform_OsxMetal.names new file mode 100644 index 0000000000..8005565fca --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigPlatform_OsxMetal.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "SystemConfigPlatform_OsxMetal", + "context": "Constant", + "variant": "", + "details": { + "name": "SystemConfigPlatform_OsxMetal::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigPlatform_Pc.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigPlatform_Pc.names new file mode 100644 index 0000000000..a1b962ea90 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigPlatform_Pc.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "SystemConfigPlatform_Pc", + "context": "Constant", + "variant": "", + "details": { + "name": "SystemConfigPlatform_Pc::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigPlatform_Provo.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigPlatform_Provo.names new file mode 100644 index 0000000000..46e8d46b17 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigPlatform_Provo.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "SystemConfigPlatform_Provo", + "context": "Constant", + "variant": "", + "details": { + "name": "SystemConfigPlatform_Provo::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigSpec_Auto.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigSpec_Auto.names new file mode 100644 index 0000000000..51484e63d5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigSpec_Auto.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "SystemConfigSpec_Auto", + "context": "Constant", + "variant": "", + "details": { + "name": "SystemConfigSpec_Auto::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigSpec_High.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigSpec_High.names new file mode 100644 index 0000000000..80c2de7669 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigSpec_High.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "SystemConfigSpec_High", + "context": "Constant", + "variant": "", + "details": { + "name": "SystemConfigSpec_High::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigSpec_Low.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigSpec_Low.names new file mode 100644 index 0000000000..5a4dee45d5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigSpec_Low.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "SystemConfigSpec_Low", + "context": "Constant", + "variant": "", + "details": { + "name": "SystemConfigSpec_Low::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigSpec_Medium.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigSpec_Medium.names new file mode 100644 index 0000000000..52485ed95b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigSpec_Medium.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "SystemConfigSpec_Medium", + "context": "Constant", + "variant": "", + "details": { + "name": "SystemConfigSpec_Medium::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigSpec_VeryHigh.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigSpec_VeryHigh.names new file mode 100644 index 0000000000..9d71dadc2d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemConfigSpec_VeryHigh.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "SystemConfigSpec_VeryHigh", + "context": "Constant", + "variant": "", + "details": { + "name": "SystemConfigSpec_VeryHigh::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemEntityId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemEntityId.names new file mode 100644 index 0000000000..3a6a3c2c04 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/SystemEntityId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "SystemEntityId", + "context": "Constant", + "variant": "", + "details": { + "name": "SystemEntityId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ThresholdGradientComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ThresholdGradientComponentTypeId.names new file mode 100644 index 0000000000..c40a8f1281 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/ThresholdGradientComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "ThresholdGradientComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "ThresholdGradientComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformComponentTypeId.names new file mode 100644 index 0000000000..a140864cdc --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "TransformComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "TransformComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformMode_Rotation.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformMode_Rotation.names new file mode 100644 index 0000000000..a573b13ba1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformMode_Rotation.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "TransformMode_Rotation", + "context": "Constant", + "variant": "", + "details": { + "name": "TransformMode_Rotation::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformMode_Scale.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformMode_Scale.names new file mode 100644 index 0000000000..d04c443780 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformMode_Scale.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "TransformMode_Scale", + "context": "Constant", + "variant": "", + "details": { + "name": "TransformMode_Scale::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformMode_Translation.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformMode_Translation.names new file mode 100644 index 0000000000..05fb942bd8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformMode_Translation.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "TransformMode_Translation", + "context": "Constant", + "variant": "", + "details": { + "name": "TransformMode_Translation::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformPivot_Center.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformPivot_Center.names new file mode 100644 index 0000000000..a2aef08ec4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformPivot_Center.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "TransformPivot_Center", + "context": "Constant", + "variant": "", + "details": { + "name": "TransformPivot_Center::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformPivot_Object.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformPivot_Object.names new file mode 100644 index 0000000000..010e4a0eb2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformPivot_Object.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "TransformPivot_Object", + "context": "Constant", + "variant": "", + "details": { + "name": "TransformPivot_Object::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformRefreshType_All.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformRefreshType_All.names new file mode 100644 index 0000000000..4161f154b3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformRefreshType_All.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "TransformRefreshType_All", + "context": "Constant", + "variant": "", + "details": { + "name": "TransformRefreshType_All::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformRefreshType_Orientation.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformRefreshType_Orientation.names new file mode 100644 index 0000000000..920fc60dfd --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformRefreshType_Orientation.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "TransformRefreshType_Orientation", + "context": "Constant", + "variant": "", + "details": { + "name": "TransformRefreshType_Orientation::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformRefreshType_Translation.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformRefreshType_Translation.names new file mode 100644 index 0000000000..80b256f896 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TransformRefreshType_Translation.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "TransformRefreshType_Translation", + "context": "Constant", + "variant": "", + "details": { + "name": "TransformRefreshType_Translation::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TubeShapeComponentTypeId.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TubeShapeComponentTypeId.names new file mode 100644 index 0000000000..dad5748f53 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/TubeShapeComponentTypeId.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "TubeShapeComponentTypeId", + "context": "Constant", + "variant": "", + "details": { + "name": "TubeShapeComponentTypeId::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/UiLayoutCellUnspecifiedSize.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/UiLayoutCellUnspecifiedSize.names new file mode 100644 index 0000000000..d9b6976e89 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/UiLayoutCellUnspecifiedSize.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "UiLayoutCellUnspecifiedSize", + "context": "Constant", + "variant": "", + "details": { + "name": "UiLayoutCellUnspecifiedSize::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eSSB_GotoEndTime.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eSSB_GotoEndTime.names new file mode 100644 index 0000000000..89b6606748 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eSSB_GotoEndTime.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eSSB_GotoEndTime", + "context": "Constant", + "variant": "", + "details": { + "name": "eSSB_GotoEndTime::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eSSB_GotoStartTime.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eSSB_GotoStartTime.names new file mode 100644 index 0000000000..69c4ae2f1f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eSSB_GotoStartTime.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eSSB_GotoStartTime", + "context": "Constant", + "variant": "", + "details": { + "name": "eSSB_GotoStartTime::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eSSB_LeaveTime.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eSSB_LeaveTime.names new file mode 100644 index 0000000000..55136e9f17 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eSSB_LeaveTime.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eSSB_LeaveTime", + "context": "Constant", + "variant": "", + "details": { + "name": "eSSB_LeaveTime::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiAnimationEvent_Aborted.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiAnimationEvent_Aborted.names new file mode 100644 index 0000000000..e2feeb0734 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiAnimationEvent_Aborted.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiAnimationEvent_Aborted", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiAnimationEvent_Aborted::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiAnimationEvent_Started.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiAnimationEvent_Started.names new file mode 100644 index 0000000000..45c20aacf3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiAnimationEvent_Started.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiAnimationEvent_Started", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiAnimationEvent_Started::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiAnimationEvent_Stopped.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiAnimationEvent_Stopped.names new file mode 100644 index 0000000000..20c8d48e42 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiAnimationEvent_Stopped.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiAnimationEvent_Stopped", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiAnimationEvent_Stopped::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiAnimationEvent_Updated.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiAnimationEvent_Updated.names new file mode 100644 index 0000000000..69221891f7 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiAnimationEvent_Updated.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiAnimationEvent_Updated", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiAnimationEvent_Updated::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiDragState_Invalid.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiDragState_Invalid.names new file mode 100644 index 0000000000..6062cced48 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiDragState_Invalid.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiDragState_Invalid", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiDragState_Invalid::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiDragState_Normal.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiDragState_Normal.names new file mode 100644 index 0000000000..c5c06e8057 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiDragState_Normal.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiDragState_Normal", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiDragState_Normal::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiDragState_Valid.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiDragState_Valid.names new file mode 100644 index 0000000000..d8ad67098a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiDragState_Valid.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiDragState_Valid", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiDragState_Valid::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiDropState_Invalid.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiDropState_Invalid.names new file mode 100644 index 0000000000..7f0745b6f3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiDropState_Invalid.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiDropState_Invalid", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiDropState_Invalid::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiDropState_Normal.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiDropState_Normal.names new file mode 100644 index 0000000000..b7325d9c15 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiDropState_Normal.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiDropState_Normal", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiDropState_Normal::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiDropState_Valid.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiDropState_Valid.names new file mode 100644 index 0000000000..19551341da --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiDropState_Valid.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiDropState_Valid", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiDropState_Valid::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiDynamicContentDBColorType_Free.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiDynamicContentDBColorType_Free.names new file mode 100644 index 0000000000..b3dbc87cac --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiDynamicContentDBColorType_Free.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiDynamicContentDBColorType_Free", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiDynamicContentDBColorType_Free::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiDynamicContentDBColorType_Paid.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiDynamicContentDBColorType_Paid.names new file mode 100644 index 0000000000..b58a8484ee --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiDynamicContentDBColorType_Paid.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiDynamicContentDBColorType_Paid", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiDynamicContentDBColorType_Paid::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiEmitShape_Circle.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiEmitShape_Circle.names new file mode 100644 index 0000000000..7bcdda54e2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiEmitShape_Circle.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiEmitShape_Circle", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiEmitShape_Circle::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiEmitShape_Point.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiEmitShape_Point.names new file mode 100644 index 0000000000..60ef452594 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiEmitShape_Point.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiEmitShape_Point", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiEmitShape_Point::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiEmitShape_Quad.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiEmitShape_Quad.names new file mode 100644 index 0000000000..25ec6925de --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiEmitShape_Quad.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiEmitShape_Quad", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiEmitShape_Quad::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillCornerOrigin_BottomLeft.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillCornerOrigin_BottomLeft.names new file mode 100644 index 0000000000..11a00014b9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillCornerOrigin_BottomLeft.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiFillCornerOrigin_BottomLeft", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiFillCornerOrigin_BottomLeft::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillCornerOrigin_BottomRight.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillCornerOrigin_BottomRight.names new file mode 100644 index 0000000000..b1121d2e37 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillCornerOrigin_BottomRight.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiFillCornerOrigin_BottomRight", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiFillCornerOrigin_BottomRight::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillCornerOrigin_TopLeft.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillCornerOrigin_TopLeft.names new file mode 100644 index 0000000000..16e3c41732 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillCornerOrigin_TopLeft.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiFillCornerOrigin_TopLeft", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiFillCornerOrigin_TopLeft::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillCornerOrigin_TopRight.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillCornerOrigin_TopRight.names new file mode 100644 index 0000000000..a923c46942 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillCornerOrigin_TopRight.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiFillCornerOrigin_TopRight", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiFillCornerOrigin_TopRight::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillEdgeOrigin_Bottom.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillEdgeOrigin_Bottom.names new file mode 100644 index 0000000000..914282a199 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillEdgeOrigin_Bottom.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiFillEdgeOrigin_Bottom", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiFillEdgeOrigin_Bottom::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillEdgeOrigin_Left.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillEdgeOrigin_Left.names new file mode 100644 index 0000000000..a88450c7b4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillEdgeOrigin_Left.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiFillEdgeOrigin_Left", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiFillEdgeOrigin_Left::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillEdgeOrigin_Right.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillEdgeOrigin_Right.names new file mode 100644 index 0000000000..db5d528b2e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillEdgeOrigin_Right.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiFillEdgeOrigin_Right", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiFillEdgeOrigin_Right::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillEdgeOrigin_Top.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillEdgeOrigin_Top.names new file mode 100644 index 0000000000..6cb79b40d9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillEdgeOrigin_Top.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiFillEdgeOrigin_Top", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiFillEdgeOrigin_Top::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillType_Linear.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillType_Linear.names new file mode 100644 index 0000000000..6a1530c0b3 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillType_Linear.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiFillType_Linear", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiFillType_Linear::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillType_None.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillType_None.names new file mode 100644 index 0000000000..868d562df1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillType_None.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiFillType_None", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiFillType_None::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillType_Radial.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillType_Radial.names new file mode 100644 index 0000000000..ae01ffdcf6 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillType_Radial.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiFillType_Radial", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiFillType_Radial::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillType_RadialCorner.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillType_RadialCorner.names new file mode 100644 index 0000000000..4dcecb752d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillType_RadialCorner.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiFillType_RadialCorner", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiFillType_RadialCorner::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillType_RadialEdge.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillType_RadialEdge.names new file mode 100644 index 0000000000..a8e9d490d2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFillType_RadialEdge.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiFillType_RadialEdge", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiFillType_RadialEdge::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFlipbookAnimationFramerateUnits_FPS.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFlipbookAnimationFramerateUnits_FPS.names new file mode 100644 index 0000000000..476f62879e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFlipbookAnimationFramerateUnits_FPS.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiFlipbookAnimationFramerateUnits_FPS", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiFlipbookAnimationFramerateUnits_FPS::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFlipbookAnimationFramerateUnits_SecondsPerFrame.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFlipbookAnimationFramerateUnits_SecondsPerFrame.names new file mode 100644 index 0000000000..2d567073a0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFlipbookAnimationFramerateUnits_SecondsPerFrame.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiFlipbookAnimationFramerateUnits_SecondsPerFrame", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiFlipbookAnimationFramerateUnits_SecondsPerFrame::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFlipbookAnimationLoopType_Linear.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFlipbookAnimationLoopType_Linear.names new file mode 100644 index 0000000000..d794ec96f0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFlipbookAnimationLoopType_Linear.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiFlipbookAnimationLoopType_Linear", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiFlipbookAnimationLoopType_Linear::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFlipbookAnimationLoopType_None.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFlipbookAnimationLoopType_None.names new file mode 100644 index 0000000000..2cdbfea52c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFlipbookAnimationLoopType_None.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiFlipbookAnimationLoopType_None", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiFlipbookAnimationLoopType_None::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFlipbookAnimationLoopType_PingPong.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFlipbookAnimationLoopType_PingPong.names new file mode 100644 index 0000000000..9c9c1cd016 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiFlipbookAnimationLoopType_PingPong.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiFlipbookAnimationLoopType_PingPong", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiFlipbookAnimationLoopType_PingPong::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiHAlign_Center.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiHAlign_Center.names new file mode 100644 index 0000000000..faf4797114 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiHAlign_Center.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiHAlign_Center", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiHAlign_Center::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiHAlign_Left.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiHAlign_Left.names new file mode 100644 index 0000000000..01cd8f3812 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiHAlign_Left.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiHAlign_Left", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiHAlign_Left::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiHAlign_Right.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiHAlign_Right.names new file mode 100644 index 0000000000..03ff7072ef --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiHAlign_Right.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiHAlign_Right", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiHAlign_Right::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiHorizontalOrder_LeftToRight.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiHorizontalOrder_LeftToRight.names new file mode 100644 index 0000000000..f2a0494385 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiHorizontalOrder_LeftToRight.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiHorizontalOrder_LeftToRight", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiHorizontalOrder_LeftToRight::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiHorizontalOrder_RightToLeft.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiHorizontalOrder_RightToLeft.names new file mode 100644 index 0000000000..133113e8ce --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiHorizontalOrder_RightToLeft.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiHorizontalOrder_RightToLeft", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiHorizontalOrder_RightToLeft::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageSequenceImageType_Fixed.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageSequenceImageType_Fixed.names new file mode 100644 index 0000000000..f82d1d4eb0 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageSequenceImageType_Fixed.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiImageSequenceImageType_Fixed", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiImageSequenceImageType_Fixed::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageSequenceImageType_Stretched.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageSequenceImageType_Stretched.names new file mode 100644 index 0000000000..a4b48dc8ad --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageSequenceImageType_Stretched.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiImageSequenceImageType_Stretched", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiImageSequenceImageType_Stretched::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageSequenceImageType_StretchedToFill.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageSequenceImageType_StretchedToFill.names new file mode 100644 index 0000000000..c59426f677 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageSequenceImageType_StretchedToFill.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiImageSequenceImageType_StretchedToFill", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiImageSequenceImageType_StretchedToFill::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageSequenceImageType_StretchedToFit.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageSequenceImageType_StretchedToFit.names new file mode 100644 index 0000000000..9ba3d30e62 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageSequenceImageType_StretchedToFit.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiImageSequenceImageType_StretchedToFit", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiImageSequenceImageType_StretchedToFit::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageType_Fixed.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageType_Fixed.names new file mode 100644 index 0000000000..0a65819fc1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageType_Fixed.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiImageType_Fixed", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiImageType_Fixed::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageType_Sliced.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageType_Sliced.names new file mode 100644 index 0000000000..f9f1bc3743 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageType_Sliced.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiImageType_Sliced", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiImageType_Sliced::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageType_Stretched.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageType_Stretched.names new file mode 100644 index 0000000000..fc2312db15 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageType_Stretched.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiImageType_Stretched", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiImageType_Stretched::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageType_StretchedToFill.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageType_StretchedToFill.names new file mode 100644 index 0000000000..a30508aa7e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageType_StretchedToFill.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiImageType_StretchedToFill", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiImageType_StretchedToFill::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageType_StretchedToFit.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageType_StretchedToFit.names new file mode 100644 index 0000000000..be3b007a7e --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageType_StretchedToFit.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiImageType_StretchedToFit", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiImageType_StretchedToFit::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageType_Tiled.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageType_Tiled.names new file mode 100644 index 0000000000..0a6e5b0977 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiImageType_Tiled.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiImageType_Tiled", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiImageType_Tiled::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiInteractableState_Disabled.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiInteractableState_Disabled.names new file mode 100644 index 0000000000..43ed9dfac2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiInteractableState_Disabled.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiInteractableState_Disabled", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiInteractableState_Disabled::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiInteractableState_Hover.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiInteractableState_Hover.names new file mode 100644 index 0000000000..7e005729fd --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiInteractableState_Hover.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiInteractableState_Hover", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiInteractableState_Hover::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiInteractableState_Normal.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiInteractableState_Normal.names new file mode 100644 index 0000000000..51d7e81522 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiInteractableState_Normal.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiInteractableState_Normal", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiInteractableState_Normal::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiInteractableState_Pressed.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiInteractableState_Pressed.names new file mode 100644 index 0000000000..b578408cd2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiInteractableState_Pressed.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiInteractableState_Pressed", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiInteractableState_Pressed::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiLayoutGridStartingDirection_HorizontalOrder.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiLayoutGridStartingDirection_HorizontalOrder.names new file mode 100644 index 0000000000..d0c3ef3a79 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiLayoutGridStartingDirection_HorizontalOrder.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiLayoutGridStartingDirection_HorizontalOrder", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiLayoutGridStartingDirection_HorizontalOrder::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiLayoutGridStartingDirection_VerticalOrder.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiLayoutGridStartingDirection_VerticalOrder.names new file mode 100644 index 0000000000..fd32fb89c9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiLayoutGridStartingDirection_VerticalOrder.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiLayoutGridStartingDirection_VerticalOrder", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiLayoutGridStartingDirection_VerticalOrder::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiNavigationMode_Automatic.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiNavigationMode_Automatic.names new file mode 100644 index 0000000000..1743a1ebdb --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiNavigationMode_Automatic.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiNavigationMode_Automatic", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiNavigationMode_Automatic::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiNavigationMode_Custom.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiNavigationMode_Custom.names new file mode 100644 index 0000000000..8a3ee33916 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiNavigationMode_Custom.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiNavigationMode_Custom", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiNavigationMode_Custom::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiNavigationMode_None.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiNavigationMode_None.names new file mode 100644 index 0000000000..abc9248282 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiNavigationMode_None.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiNavigationMode_None", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiNavigationMode_None::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiParticleCoordinateType_Cartesian.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiParticleCoordinateType_Cartesian.names new file mode 100644 index 0000000000..33a1db8e62 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiParticleCoordinateType_Cartesian.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiParticleCoordinateType_Cartesian", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiParticleCoordinateType_Cartesian::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiParticleCoordinateType_Polar.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiParticleCoordinateType_Polar.names new file mode 100644 index 0000000000..3ddbf1792c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiParticleCoordinateType_Polar.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiParticleCoordinateType_Polar", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiParticleCoordinateType_Polar::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiParticleInitialDirectionType_RelativeToEmitAngle.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiParticleInitialDirectionType_RelativeToEmitAngle.names new file mode 100644 index 0000000000..f9a8ae7ceb --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiParticleInitialDirectionType_RelativeToEmitAngle.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiParticleInitialDirectionType_RelativeToEmitAngle", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiParticleInitialDirectionType_RelativeToEmitAngle::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiParticleInitialDirectionType_RelativeToEmitterCenter.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiParticleInitialDirectionType_RelativeToEmitterCenter.names new file mode 100644 index 0000000000..6486a80003 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiParticleInitialDirectionType_RelativeToEmitterCenter.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiParticleInitialDirectionType_RelativeToEmitterCenter", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiParticleInitialDirectionType_RelativeToEmitterCenter::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScaleToDeviceMode_NonUniformScale.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScaleToDeviceMode_NonUniformScale.names new file mode 100644 index 0000000000..605ed1aba5 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScaleToDeviceMode_NonUniformScale.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiScaleToDeviceMode_NonUniformScale", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiScaleToDeviceMode_NonUniformScale::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScaleToDeviceMode_None.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScaleToDeviceMode_None.names new file mode 100644 index 0000000000..88c08b06ec --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScaleToDeviceMode_None.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiScaleToDeviceMode_None", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiScaleToDeviceMode_None::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScaleToDeviceMode_ScaleXOnly.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScaleToDeviceMode_ScaleXOnly.names new file mode 100644 index 0000000000..5804e7aeaa --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScaleToDeviceMode_ScaleXOnly.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiScaleToDeviceMode_ScaleXOnly", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiScaleToDeviceMode_ScaleXOnly::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScaleToDeviceMode_ScaleYOnly.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScaleToDeviceMode_ScaleYOnly.names new file mode 100644 index 0000000000..e5ea4e5f5c --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScaleToDeviceMode_ScaleYOnly.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiScaleToDeviceMode_ScaleYOnly", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiScaleToDeviceMode_ScaleYOnly::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScaleToDeviceMode_UniformScaleToFill.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScaleToDeviceMode_UniformScaleToFill.names new file mode 100644 index 0000000000..aa1f56984b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScaleToDeviceMode_UniformScaleToFill.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiScaleToDeviceMode_UniformScaleToFill", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiScaleToDeviceMode_UniformScaleToFill::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScaleToDeviceMode_UniformScaleToFit.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScaleToDeviceMode_UniformScaleToFit.names new file mode 100644 index 0000000000..3b603fabc1 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScaleToDeviceMode_UniformScaleToFit.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiScaleToDeviceMode_UniformScaleToFit", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiScaleToDeviceMode_UniformScaleToFit::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScaleToDeviceMode_UniformScaleToFitX.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScaleToDeviceMode_UniformScaleToFitX.names new file mode 100644 index 0000000000..ce90c47c88 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScaleToDeviceMode_UniformScaleToFitX.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiScaleToDeviceMode_UniformScaleToFitX", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiScaleToDeviceMode_UniformScaleToFitX::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScaleToDeviceMode_UniformScaleToFitY.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScaleToDeviceMode_UniformScaleToFitY.names new file mode 100644 index 0000000000..a0ba060b36 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScaleToDeviceMode_UniformScaleToFitY.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiScaleToDeviceMode_UniformScaleToFitY", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiScaleToDeviceMode_UniformScaleToFitY::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScrollBoxScrollBarVisibility_AlwaysShow.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScrollBoxScrollBarVisibility_AlwaysShow.names new file mode 100644 index 0000000000..61931775a9 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScrollBoxScrollBarVisibility_AlwaysShow.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiScrollBoxScrollBarVisibility_AlwaysShow", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiScrollBoxScrollBarVisibility_AlwaysShow::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScrollBoxScrollBarVisibility_AutoHide.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScrollBoxScrollBarVisibility_AutoHide.names new file mode 100644 index 0000000000..48de4a7899 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScrollBoxScrollBarVisibility_AutoHide.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiScrollBoxScrollBarVisibility_AutoHide", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiScrollBoxScrollBarVisibility_AutoHide::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScrollBoxScrollBarVisibility_AutoHideAndResizeViewport.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScrollBoxScrollBarVisibility_AutoHideAndResizeViewport.names new file mode 100644 index 0000000000..560df7e007 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScrollBoxScrollBarVisibility_AutoHideAndResizeViewport.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiScrollBoxScrollBarVisibility_AutoHideAndResizeViewport", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiScrollBoxScrollBarVisibility_AutoHideAndResizeViewport::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScrollBoxSnapMode_Children.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScrollBoxSnapMode_Children.names new file mode 100644 index 0000000000..0b540c47a4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScrollBoxSnapMode_Children.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiScrollBoxSnapMode_Children", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiScrollBoxSnapMode_Children::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScrollBoxSnapMode_Grid.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScrollBoxSnapMode_Grid.names new file mode 100644 index 0000000000..5696a2ac17 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScrollBoxSnapMode_Grid.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiScrollBoxSnapMode_Grid", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiScrollBoxSnapMode_Grid::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScrollBoxSnapMode_None.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScrollBoxSnapMode_None.names new file mode 100644 index 0000000000..107536dc88 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScrollBoxSnapMode_None.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiScrollBoxSnapMode_None", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiScrollBoxSnapMode_None::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScrollerOrientation_Horizontal.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScrollerOrientation_Horizontal.names new file mode 100644 index 0000000000..a9a7e4b62f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScrollerOrientation_Horizontal.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiScrollerOrientation_Horizontal", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiScrollerOrientation_Horizontal::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScrollerOrientation_Vertical.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScrollerOrientation_Vertical.names new file mode 100644 index 0000000000..fee533f819 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiScrollerOrientation_Vertical.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiScrollerOrientation_Vertical", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiScrollerOrientation_Vertical::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiSpriteType_RenderTarget.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiSpriteType_RenderTarget.names new file mode 100644 index 0000000000..f1b2b162d4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiSpriteType_RenderTarget.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiSpriteType_RenderTarget", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiSpriteType_RenderTarget::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiSpriteType_SpriteAsset.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiSpriteType_SpriteAsset.names new file mode 100644 index 0000000000..4fb031214f --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiSpriteType_SpriteAsset.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiSpriteType_SpriteAsset", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiSpriteType_SpriteAsset::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTextOverflowMode_ClipText.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTextOverflowMode_ClipText.names new file mode 100644 index 0000000000..4020030b26 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTextOverflowMode_ClipText.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiTextOverflowMode_ClipText", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiTextOverflowMode_ClipText::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTextOverflowMode_Ellipsis.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTextOverflowMode_Ellipsis.names new file mode 100644 index 0000000000..340acecf48 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTextOverflowMode_Ellipsis.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiTextOverflowMode_Ellipsis", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiTextOverflowMode_Ellipsis::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTextOverflowMode_OverflowText.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTextOverflowMode_OverflowText.names new file mode 100644 index 0000000000..5de46b4a76 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTextOverflowMode_OverflowText.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiTextOverflowMode_OverflowText", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiTextOverflowMode_OverflowText::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTextShrinkToFit_None.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTextShrinkToFit_None.names new file mode 100644 index 0000000000..5331e830f4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTextShrinkToFit_None.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiTextShrinkToFit_None", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiTextShrinkToFit_None::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTextShrinkToFit_Uniform.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTextShrinkToFit_Uniform.names new file mode 100644 index 0000000000..175534eafd --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTextShrinkToFit_Uniform.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiTextShrinkToFit_Uniform", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiTextShrinkToFit_Uniform::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTextShrinkToFit_WidthOnly.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTextShrinkToFit_WidthOnly.names new file mode 100644 index 0000000000..95b5d2b424 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTextShrinkToFit_WidthOnly.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiTextShrinkToFit_WidthOnly", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiTextShrinkToFit_WidthOnly::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTextWrapTextSetting_NoWrap.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTextWrapTextSetting_NoWrap.names new file mode 100644 index 0000000000..04dc16a0ae --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTextWrapTextSetting_NoWrap.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiTextWrapTextSetting_NoWrap", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiTextWrapTextSetting_NoWrap::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTextWrapTextSetting_Wrap.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTextWrapTextSetting_Wrap.names new file mode 100644 index 0000000000..75fe851271 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTextWrapTextSetting_Wrap.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiTextWrapTextSetting_Wrap", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiTextWrapTextSetting_Wrap::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTooltipDisplayAutoPositionMode_OffsetFromElement.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTooltipDisplayAutoPositionMode_OffsetFromElement.names new file mode 100644 index 0000000000..473b16b42d --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTooltipDisplayAutoPositionMode_OffsetFromElement.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiTooltipDisplayAutoPositionMode_OffsetFromElement", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiTooltipDisplayAutoPositionMode_OffsetFromElement::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTooltipDisplayAutoPositionMode_OffsetFromMouse.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTooltipDisplayAutoPositionMode_OffsetFromMouse.names new file mode 100644 index 0000000000..4876380d2b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTooltipDisplayAutoPositionMode_OffsetFromMouse.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiTooltipDisplayAutoPositionMode_OffsetFromMouse", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiTooltipDisplayAutoPositionMode_OffsetFromMouse::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTooltipDisplayTriggerMode_OnClick.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTooltipDisplayTriggerMode_OnClick.names new file mode 100644 index 0000000000..607b9793a2 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTooltipDisplayTriggerMode_OnClick.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiTooltipDisplayTriggerMode_OnClick", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiTooltipDisplayTriggerMode_OnClick::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTooltipDisplayTriggerMode_OnHover.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTooltipDisplayTriggerMode_OnHover.names new file mode 100644 index 0000000000..705be843d8 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTooltipDisplayTriggerMode_OnHover.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiTooltipDisplayTriggerMode_OnHover", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiTooltipDisplayTriggerMode_OnHover::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTooltipDisplayTriggerMode_OnPress.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTooltipDisplayTriggerMode_OnPress.names new file mode 100644 index 0000000000..28eb9c5118 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiTooltipDisplayTriggerMode_OnPress.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiTooltipDisplayTriggerMode_OnPress", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiTooltipDisplayTriggerMode_OnPress::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiVAlign_Bottom.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiVAlign_Bottom.names new file mode 100644 index 0000000000..46aa499d0b --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiVAlign_Bottom.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiVAlign_Bottom", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiVAlign_Bottom::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiVAlign_Center.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiVAlign_Center.names new file mode 100644 index 0000000000..2f64297cf4 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiVAlign_Center.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiVAlign_Center", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiVAlign_Center::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiVAlign_Top.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiVAlign_Top.names new file mode 100644 index 0000000000..d688313c21 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiVAlign_Top.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiVAlign_Top", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiVAlign_Top::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiVerticalOrder_BottomToTop.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiVerticalOrder_BottomToTop.names new file mode 100644 index 0000000000..a9f3b06c9a --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiVerticalOrder_BottomToTop.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiVerticalOrder_BottomToTop", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiVerticalOrder_BottomToTop::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiVerticalOrder_TopToBottom.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiVerticalOrder_TopToBottom.names new file mode 100644 index 0000000000..67532f62eb --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/eUiVerticalOrder_TopToBottom.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "eUiVerticalOrder_TopToBottom", + "context": "Constant", + "variant": "", + "details": { + "name": "eUiVerticalOrder_TopToBottom::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/g_SettingsRegistry.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/g_SettingsRegistry.names new file mode 100644 index 0000000000..a713b4f4fa --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Properties/g_SettingsRegistry.names @@ -0,0 +1,13 @@ +{ + "entries": [ + { + "key": "g_SettingsRegistry", + "context": "Constant", + "variant": "", + "details": { + "name": "g_SettingsRegistry::Getter", + "category": "Constants" + } + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Assets/TranslationAssets/Types/OnDemandReflectedTypes.names b/Gems/ScriptCanvas/Assets/TranslationAssets/Types/OnDemandReflectedTypes.names new file mode 100644 index 0000000000..bf62ef5e72 --- /dev/null +++ b/Gems/ScriptCanvas/Assets/TranslationAssets/Types/OnDemandReflectedTypes.names @@ -0,0 +1,101804 @@ +{ + "entries": [ + { + "key": "{E65D74A8-908B-51B4-94CC-7226AC363DD5}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Fixed Size Array", + "category": "Fixed Size Array", + "tooltip": "A fixed-sized container of elements." + }, + "methods": [ + { + "key": "Front", + "context": "{E65D74A8-908B-51B4-94CC-7226AC363DD5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{E65D74A8-908B-51B4-94CC-7226AC363DD5}", + "details": { + "name": "AZStd::array" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Fill", + "context": "{E65D74A8-908B-51B4-94CC-7226AC363DD5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Fill" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Fill is invoked" + }, + "details": { + "name": "Fill" + }, + "params": [ + { + "typeid": "{E65D74A8-908B-51B4-94CC-7226AC363DD5}", + "details": { + "name": "AZStd::array" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Replace", + "context": "{E65D74A8-908B-51B4-94CC-7226AC363DD5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Replace" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Replace is invoked" + }, + "details": { + "name": "Replace" + }, + "params": [ + { + "typeid": "{E65D74A8-908B-51B4-94CC-7226AC363DD5}", + "details": { + "name": "AZStd::array" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{428274AA-6C0B-5535-A5BD-E987696ED8E0}", + "details": { + "name": "Outcome" + } + } + ] + }, + { + "key": "Size", + "context": "{E65D74A8-908B-51B4-94CC-7226AC363DD5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{E65D74A8-908B-51B4-94CC-7226AC363DD5}", + "details": { + "name": "AZStd::array" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "size", + "context": "{E65D74A8-908B-51B4-94CC-7226AC363DD5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{E65D74A8-908B-51B4-94CC-7226AC363DD5}", + "details": { + "name": "AZStd::array" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{E65D74A8-908B-51B4-94CC-7226AC363DD5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{E65D74A8-908B-51B4-94CC-7226AC363DD5}", + "details": { + "name": "AZStd::array" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{E9F4752C-BFCD-5F51-AA18-F47BDF358BFD}", + "details": { + "name": "Outcome, allocator>>" + } + } + ] + }, + { + "key": "Swap", + "context": "{E65D74A8-908B-51B4-94CC-7226AC363DD5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{E65D74A8-908B-51B4-94CC-7226AC363DD5}", + "details": { + "name": "AZStd::array" + } + }, + { + "typeid": "{E65D74A8-908B-51B4-94CC-7226AC363DD5}", + "details": { + "name": "AZStd::array" + } + } + ] + }, + { + "key": "at", + "context": "{E65D74A8-908B-51B4-94CC-7226AC363DD5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{E65D74A8-908B-51B4-94CC-7226AC363DD5}", + "details": { + "name": "AZStd::array" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Back", + "context": "{E65D74A8-908B-51B4-94CC-7226AC363DD5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{E65D74A8-908B-51B4-94CC-7226AC363DD5}", + "details": { + "name": "AZStd::array" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + } + ] + }, + { + "key": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{C71249F6-25AF-584C-B5AF-89340AD3A15D}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{232F1AE7-4411-5D69-B59C-71D7036FC5E4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{53A388FF-F69B-5F31-94CC-441F9D7F3ACC}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{53A388FF-F69B-5F31-94CC-441F9D7F3ACC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{53A388FF-F69B-5F31-94CC-441F9D7F3ACC}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{53A388FF-F69B-5F31-94CC-441F9D7F3ACC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{53A388FF-F69B-5F31-94CC-441F9D7F3ACC}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ], + "results": [ + { + "typeid": "{53A388FF-F69B-5F31-94CC-441F9D7F3ACC}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{53A388FF-F69B-5F31-94CC-441F9D7F3ACC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{53A388FF-F69B-5F31-94CC-441F9D7F3ACC}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{53A388FF-F69B-5F31-94CC-441F9D7F3ACC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{53A388FF-F69B-5F31-94CC-441F9D7F3ACC}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{53A388FF-F69B-5F31-94CC-441F9D7F3ACC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{53A388FF-F69B-5F31-94CC-441F9D7F3ACC}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{CF1019DC-5737-5D46-9835-889E7AC0EFE1}", + "details": { + "name": "Iterator_VM, allocator>, Plane, AZStd::hash", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ], + "results": [ + { + "typeid": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{368D4266-05A6-56E2-A6B3-973070BF5207}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{7AB203ED-4DE1-5DB6-AE1F-23E8D6104EE5}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{E3FCF041-81CA-5782-9530-CC7793B53765}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{E3FCF041-81CA-5782-9530-CC7793B53765}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{E3FCF041-81CA-5782-9530-CC7793B53765}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{E3FCF041-81CA-5782-9530-CC7793B53765}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{E3FCF041-81CA-5782-9530-CC7793B53765}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ], + "results": [ + { + "typeid": "{E3FCF041-81CA-5782-9530-CC7793B53765}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{E3FCF041-81CA-5782-9530-CC7793B53765}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{E3FCF041-81CA-5782-9530-CC7793B53765}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{E3FCF041-81CA-5782-9530-CC7793B53765}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{E3FCF041-81CA-5782-9530-CC7793B53765}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{E3FCF041-81CA-5782-9530-CC7793B53765}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{E3FCF041-81CA-5782-9530-CC7793B53765}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{7AD414B0-77AF-5238-B381-C89649D37EE7}", + "details": { + "name": "Iterator_VM, allocator>, Matrix4x4, AZStd::hash", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ], + "results": [ + { + "typeid": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{DBA3F593-3864-5194-8121-A03AFD79A8D6}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{DA54CF57-7BE3-59DF-A5B0-F4CA6D9CC01A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ], + "results": [ + { + "typeid": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{3A151DD7-F7B3-5FC1-9094-B5E8C5782CFE}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{246A60D1-4DC3-57A5-BABA-214581F3B4FE}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{94456F04-E3B1-5ADC-8949-9F200A4F0DDC}", + "details": { + "name": "Iterator_VM, allocator>, AZStd::hash," + } + } + ] + }, + { + "key": "GetKeys", + "context": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{73383C40-9632-58AB-9CFE-E90C89E1C612}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{3CE1B0F4-E1D8-5E2E-AE7E-8A8DE250720F}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{F9AFBC85-749B-5A76-8E09-6B734D234C90}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ], + "results": [ + { + "typeid": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{83F99A1D-8270-553B-B9F0-68BCC3DDE901}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{72FD3E42-33B1-5C20-92BE-20031CE205AC}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{B48A0333-D890-5B86-B534-685285F2C0D4}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{20F3C1D8-E0E1-5211-BE7E-61EF5BD7F5FB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{5E8F7E66-9DAE-523A-9ED0-6F90DD36AC4C}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{70470FDA-2C2E-549A-A67A-6FA7388FB823}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + }, + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{16BF44CD-FF78-5C51-8037-1519139FA3A5}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6018488A-73E5-5AE2-ACE7-62DAC3DBECB8}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Asset" + }, + "methods": [ + { + "key": "IsLoading", + "context": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsLoading" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsLoading is invoked" + }, + "details": { + "name": "IsLoading" + }, + "params": [ + { + "typeid": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetType", + "context": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetType is invoked" + }, + "details": { + "name": "GetType" + }, + "params": [ + { + "typeid": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + } + ] + }, + { + "key": "IsError", + "context": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsError" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsError is invoked" + }, + "details": { + "name": "IsError" + }, + "params": [ + { + "typeid": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetHint", + "context": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetHint" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetHint is invoked" + }, + "details": { + "name": "GetHint" + }, + "params": [ + { + "typeid": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetData", + "context": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetData" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetData is invoked" + }, + "details": { + "name": "GetData" + }, + "params": [ + { + "typeid": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{AF3F7D32-1536-422A-89F3-A11E1F5B5A9C}", + "details": { + "name": "AssetData" + } + } + ] + }, + { + "key": "IsReady", + "context": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsReady" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsReady is invoked" + }, + "details": { + "name": "IsReady" + }, + "params": [ + { + "typeid": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetStatus", + "context": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetStatus" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetStatus is invoked" + }, + "details": { + "name": "GetStatus" + }, + "params": [ + { + "typeid": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetId", + "context": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetId is invoked" + }, + "details": { + "name": "GetId" + }, + "params": [ + { + "typeid": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + } + ] + }, + { + "key": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ], + "results": [ + { + "typeid": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{BF425AAB-9386-50E0-8DF8-7960359ED7EC}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{EEE66112-B216-51A2-B10A-62F805C1C6F4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{428274AA-6C0B-5535-A5BD-E987696ED8E0}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Outcome" + }, + "methods": [ + { + "key": "Failure", + "context": "{428274AA-6C0B-5535-A5BD-E987696ED8E0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Failure" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Failure is invoked" + }, + "details": { + "name": "Failure" + }, + "results": [ + { + "typeid": "{428274AA-6C0B-5535-A5BD-E987696ED8E0}", + "details": { + "name": "Outcome" + } + } + ] + }, + { + "key": "Success", + "context": "{428274AA-6C0B-5535-A5BD-E987696ED8E0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Success" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Success is invoked" + }, + "details": { + "name": "Success" + }, + "results": [ + { + "typeid": "{428274AA-6C0B-5535-A5BD-E987696ED8E0}", + "details": { + "name": "Outcome" + } + } + ] + }, + { + "key": "IsSuccess", + "context": "{428274AA-6C0B-5535-A5BD-E987696ED8E0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsSuccess" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsSuccess is invoked" + }, + "details": { + "name": "IsSuccess" + }, + "params": [ + { + "typeid": "{428274AA-6C0B-5535-A5BD-E987696ED8E0}", + "details": { + "name": "Outcome*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + }, + { + "key": "{BFA7A8BD-787E-56C2-96C1-115A572EB249}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Tuple" + }, + "methods": [ + { + "key": "Get0", + "context": "{BFA7A8BD-787E-56C2-96C1-115A572EB249}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get0" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get0 is invoked" + }, + "details": { + "name": "Get0" + }, + "params": [ + { + "typeid": "{BFA7A8BD-787E-56C2-96C1-115A572EB249}", + "details": { + "name": "tuple&" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "Get1", + "context": "{BFA7A8BD-787E-56C2-96C1-115A572EB249}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get1" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get1 is invoked" + }, + "details": { + "name": "Get1" + }, + "params": [ + { + "typeid": "{BFA7A8BD-787E-56C2-96C1-115A572EB249}", + "details": { + "name": "tuple&" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetSize", + "context": "{BFA7A8BD-787E-56C2-96C1-115A572EB249}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + } + ] + }, + { + "key": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{36898EE2-045F-5124-AFDB-DB5EBAA7CF7A}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{961EE5AE-685E-5B9E-B3AC-604C5F2F4C1A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{CAF223EA-34CD-52FE-80F1-4FB2A8D3527B}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{87073E82-1470-5DBD-92EB-ED294F351AB6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{8C7C1E8E-ADB0-50E1-9A6B-7375A3356068}", + "details": { + "name": "Iterator_VM, allocator>, AZStd::hash, AZS" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{C8E55ED7-2D57-586D-B8A4-BC3CF9A0883C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{F4D7898E-79C0-5652-B0E8-4C6C80D221DB}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{52BC39A3-063A-5CD4-99D4-4F018D7784D6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{8AF4E192-490D-5659-9B78-F258C3B07222}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{C5BB1B1A-9721-598B-8746-FAAA76B87464}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{E13859C4-1F24-5C44-A133-F17B4B050D7C}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Shared", + "category": "Shared", + "tooltip": "A smart pointer which manages the life cycle of an object, and provides multiple points of ownership for the specified memory(The memory will remain active so long as any shared_ptr has a reference to it)." + }, + "methods": [ + { + "key": "get", + "context": "{E13859C4-1F24-5C44-A133-F17B4B050D7C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get is invoked" + }, + "details": { + "name": "get" + }, + "params": [ + { + "typeid": "{E13859C4-1F24-5C44-A133-F17B4B050D7C}", + "details": { + "name": "AZStd::shared_ptr" + } + } + ], + "results": [ + { + "typeid": "{6E2D31AF-5CB0-4A50-BD68-B00E2D2FD0A4}", + "details": { + "name": "Spline", + "tooltip": "Spline Data" + } + } + ] + } + ] + }, + { + "key": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{37F3A504-2009-552E-8122-0B917B5DCD05}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{DC13DC44-BB50-5CCB-985E-C611AE891575}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D9C83DDB-FD88-5D55-97E3-50ED4A4CF5B2}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{805FA2E4-1874-5919-A853-4EF984E5A82A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "any" + } + }, + { + "key": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{6B584E48-782D-5E63-B3D4-0A4A6AA33D5C}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{C7790D21-4BE7-5C18-A60D-01FCFE4E7E7A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector&" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector*" + } + } + ], + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "HasKey", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector&" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "Back", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector*" + } + } + ], + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "pop_back", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector*" + } + } + ] + }, + { + "key": "size", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector&" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "Empty", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector&" + } + } + ] + }, + { + "key": "push_back", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector&" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ], + "results": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector&" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "clear", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector*" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector&" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector&" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector&" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector&" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector*" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector&" + } + } + ], + "results": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector&" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector&" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "GetSize", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector&" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector&" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ], + "results": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector&" + } + } + ] + }, + { + "key": "PushBack", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "Reserve", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{1945B931-EBAA-5765-9C6C-265596AF68D5}", + "details": { + "name": "AZStd::vector&" + } + } + ], + "results": [ + { + "typeid": "{93F8A96C-BDBF-5E87-ACEB-81B6DC75B1AD}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "HasKey", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "Back", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "pop_back", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "Empty", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "clear", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "GetSize", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "Reserve", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{1B7AE681-F277-502F-8AD7-7DF51D4F94EC}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", + "details": { + "name": "Name" + } + } + ] + }, + { + "key": "HasKey", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", + "details": { + "name": "Name" + } + } + ] + }, + { + "key": "Back", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", + "details": { + "name": "Name" + } + } + ] + }, + { + "key": "pop_back", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", + "details": { + "name": "Name" + } + } + ] + }, + { + "key": "Empty", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", + "details": { + "name": "Name" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", + "details": { + "name": "Name" + } + } + ], + "results": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", + "details": { + "name": "Name" + } + } + ] + }, + { + "key": "clear", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", + "details": { + "name": "Name" + } + } + ] + }, + { + "key": "GetSize", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", + "details": { + "name": "Name" + } + } + ], + "results": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", + "details": { + "name": "Name" + } + } + ] + }, + { + "key": "Reserve", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{FB201A94-9D41-5E0C-B959-89A6E9C75C7D}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{0D0DE673-7BD3-5D5B-9CB5-95F69B531778}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9CA976B9-C166-5C5A-B544-746A06B9F534}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{B7CEA1B1-C931-5566-AECA-B8AF02138CAA}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{B7CEA1B1-C931-5566-AECA-B8AF02138CAA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{B7CEA1B1-C931-5566-AECA-B8AF02138CAA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{B7CEA1B1-C931-5566-AECA-B8AF02138CAA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{B7CEA1B1-C931-5566-AECA-B8AF02138CAA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{B7CEA1B1-C931-5566-AECA-B8AF02138CAA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{B7CEA1B1-C931-5566-AECA-B8AF02138CAA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{B7CEA1B1-C931-5566-AECA-B8AF02138CAA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{B7CEA1B1-C931-5566-AECA-B8AF02138CAA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{B7CEA1B1-C931-5566-AECA-B8AF02138CAA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{B7CEA1B1-C931-5566-AECA-B8AF02138CAA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{B7CEA1B1-C931-5566-AECA-B8AF02138CAA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{CACA8A44-7F2A-5917-8EAF-A735F06ED2BB}", + "details": { + "name": "Iterator_VM, allocator>, EntityId, AZStd::hash", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{E034EA83-C798-413D-ACE8-4923C51CF4F7}", + "details": { + "name": "Script Event", + "tooltip": "A script event's definition" + } + } + ] + }, + { + "key": "HasKey", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{E034EA83-C798-413D-ACE8-4923C51CF4F7}", + "details": { + "name": "Script Event", + "tooltip": "A script event's definition" + } + } + ] + }, + { + "key": "Back", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{E034EA83-C798-413D-ACE8-4923C51CF4F7}", + "details": { + "name": "Script Event", + "tooltip": "A script event's definition" + } + } + ] + }, + { + "key": "pop_back", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{E034EA83-C798-413D-ACE8-4923C51CF4F7}", + "details": { + "name": "Script Event", + "tooltip": "A script event's definition" + } + } + ] + }, + { + "key": "Empty", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{E034EA83-C798-413D-ACE8-4923C51CF4F7}", + "details": { + "name": "Script Event", + "tooltip": "A script event's definition" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{E034EA83-C798-413D-ACE8-4923C51CF4F7}", + "details": { + "name": "Script Event", + "tooltip": "A script event's definition" + } + } + ], + "results": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{E034EA83-C798-413D-ACE8-4923C51CF4F7}", + "details": { + "name": "Script Event", + "tooltip": "A script event's definition" + } + } + ] + }, + { + "key": "clear", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{E034EA83-C798-413D-ACE8-4923C51CF4F7}", + "details": { + "name": "Script Event", + "tooltip": "A script event's definition" + } + } + ] + }, + { + "key": "GetSize", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{E034EA83-C798-413D-ACE8-4923C51CF4F7}", + "details": { + "name": "Script Event", + "tooltip": "A script event's definition" + } + } + ], + "results": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{E034EA83-C798-413D-ACE8-4923C51CF4F7}", + "details": { + "name": "Script Event", + "tooltip": "A script event's definition" + } + } + ] + }, + { + "key": "Reserve", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{D9866B79-D11A-58E6-B974-0B45783F53A4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{9E4C781D-760F-50AA-90AF-B184D4E4BBF2}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Set", + "category": "Set", + "tooltip": "A dynamically sized container, where each element is unique." + }, + "methods": [ + { + "key": "Size", + "context": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "contains", + "context": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "details": { + "name": "AZStd::unordered_set" + } + } + ] + }, + { + "key": "GetSize", + "context": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Reserve", + "context": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{55D4A61B-688B-5C1C-A045-BCD835F1F604}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase", + "context": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "details": { + "name": "AZStd::unordered_set" + } + } + ] + }, + { + "key": "Clear", + "context": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "details": { + "name": "AZStd::unordered_set" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{6C8F8E52-AB4A-5C1F-8E56-9AC390290B94}", + "details": { + "name": "AZStd::unordered_set" + } + } + ] + } + ] + }, + { + "key": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{E352A189-3CB6-5EAC-BBD0-670A9155DF0B}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{4F67EE42-D330-55A1-85DC-E030EABC0407}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{7A7201B9-67B5-438B-B4EB-F3EEBB78C617}", + "details": { + "name": "SceneQueryHit" + } + } + ] + }, + { + "key": "HasKey", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{7A7201B9-67B5-438B-B4EB-F3EEBB78C617}", + "details": { + "name": "SceneQueryHit" + } + } + ] + }, + { + "key": "Back", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{7A7201B9-67B5-438B-B4EB-F3EEBB78C617}", + "details": { + "name": "SceneQueryHit" + } + } + ] + }, + { + "key": "pop_back", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{7A7201B9-67B5-438B-B4EB-F3EEBB78C617}", + "details": { + "name": "SceneQueryHit" + } + } + ] + }, + { + "key": "Empty", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{7A7201B9-67B5-438B-B4EB-F3EEBB78C617}", + "details": { + "name": "SceneQueryHit" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{7A7201B9-67B5-438B-B4EB-F3EEBB78C617}", + "details": { + "name": "SceneQueryHit" + } + } + ], + "results": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{7A7201B9-67B5-438B-B4EB-F3EEBB78C617}", + "details": { + "name": "SceneQueryHit" + } + } + ] + }, + { + "key": "clear", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{7A7201B9-67B5-438B-B4EB-F3EEBB78C617}", + "details": { + "name": "SceneQueryHit" + } + } + ] + }, + { + "key": "GetSize", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{7A7201B9-67B5-438B-B4EB-F3EEBB78C617}", + "details": { + "name": "SceneQueryHit" + } + } + ], + "results": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{7A7201B9-67B5-438B-B4EB-F3EEBB78C617}", + "details": { + "name": "SceneQueryHit" + } + } + ] + }, + { + "key": "Reserve", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{E3B6686C-306E-5C7F-9274-196CC18E1284}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{1B258652-6803-5BAC-BFDE-073AD3662234}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{0521985E-FC3D-5123-922A-E4011E605660}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{0521985E-FC3D-5123-922A-E4011E605660}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{0521985E-FC3D-5123-922A-E4011E605660}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{0521985E-FC3D-5123-922A-E4011E605660}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{0521985E-FC3D-5123-922A-E4011E605660}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{0521985E-FC3D-5123-922A-E4011E605660}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{0521985E-FC3D-5123-922A-E4011E605660}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{0521985E-FC3D-5123-922A-E4011E605660}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{0521985E-FC3D-5123-922A-E4011E605660}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{0521985E-FC3D-5123-922A-E4011E605660}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{0521985E-FC3D-5123-922A-E4011E605660}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{0521985E-FC3D-5123-922A-E4011E605660}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0242929-1EDC-57CD-9E7A-4F739086210C}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{0521985E-FC3D-5123-922A-E4011E605660}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{0521985E-FC3D-5123-922A-E4011E605660}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{0521985E-FC3D-5123-922A-E4011E605660}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{0521985E-FC3D-5123-922A-E4011E605660}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{0521985E-FC3D-5123-922A-E4011E605660}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{0521985E-FC3D-5123-922A-E4011E605660}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{0521985E-FC3D-5123-922A-E4011E605660}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{0521985E-FC3D-5123-922A-E4011E605660}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{0521985E-FC3D-5123-922A-E4011E605660}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{0521985E-FC3D-5123-922A-E4011E605660}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{0521985E-FC3D-5123-922A-E4011E605660}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{0521985E-FC3D-5123-922A-E4011E605660}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{0521985E-FC3D-5123-922A-E4011E605660}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{0521985E-FC3D-5123-922A-E4011E605660}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{0521985E-FC3D-5123-922A-E4011E605660}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{0521985E-FC3D-5123-922A-E4011E605660}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{0521985E-FC3D-5123-922A-E4011E605660}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{0521985E-FC3D-5123-922A-E4011E605660}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{0521985E-FC3D-5123-922A-E4011E605660}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{0521985E-FC3D-5123-922A-E4011E605660}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{0521985E-FC3D-5123-922A-E4011E605660}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{41DF6CCF-4B87-555F-B94F-D9586C804B67}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{2A1A28D5-E14E-5F25-B2EE-48722008285A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{70A62BBA-CDEE-5E92-A669-A668E75BDC7E}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6576DA9C-8949-513E-BA75-1DFFF648EDAF}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{92FC6941-F5F5-5141-97A4-1965FC8B09CD}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Outcome" + }, + "methods": [ + { + "key": "Failure", + "context": "{92FC6941-F5F5-5141-97A4-1965FC8B09CD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Failure" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Failure is invoked" + }, + "details": { + "name": "Failure" + }, + "results": [ + { + "typeid": "{92FC6941-F5F5-5141-97A4-1965FC8B09CD}", + "details": { + "name": "Outcome, allocator>, void>" + } + } + ] + }, + { + "key": "Success", + "context": "{92FC6941-F5F5-5141-97A4-1965FC8B09CD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Success" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Success is invoked" + }, + "details": { + "name": "Success" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{92FC6941-F5F5-5141-97A4-1965FC8B09CD}", + "details": { + "name": "Outcome, allocator>, void>" + } + } + ] + }, + { + "key": "GetValue", + "context": "{92FC6941-F5F5-5141-97A4-1965FC8B09CD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetValue" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetValue is invoked" + }, + "details": { + "name": "GetValue" + }, + "params": [ + { + "typeid": "{92FC6941-F5F5-5141-97A4-1965FC8B09CD}", + "details": { + "name": "Outcome, all" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "IsSuccess", + "context": "{92FC6941-F5F5-5141-97A4-1965FC8B09CD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsSuccess" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsSuccess is invoked" + }, + "details": { + "name": "IsSuccess" + }, + "params": [ + { + "typeid": "{92FC6941-F5F5-5141-97A4-1965FC8B09CD}", + "details": { + "name": "Outcome, all" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + }, + { + "key": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{FDFC3E51-96FA-5F29-BD18-5178D8EF5B68}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{230FE638-B7E6-5E7B-8D2F-B05D9313AC9F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + }, + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ], + "results": [ + { + "typeid": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{3DE678E1-1E8D-5CFA-AA1A-B22B4CB88458}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{BC52AD94-A35B-5837-A8D8-A99B2AF7D4B4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{BEB6AE51-5283-5019-A320-294202035F80}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{BEB6AE51-5283-5019-A320-294202035F80}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{BEB6AE51-5283-5019-A320-294202035F80}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{BEB6AE51-5283-5019-A320-294202035F80}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{BEB6AE51-5283-5019-A320-294202035F80}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{BEB6AE51-5283-5019-A320-294202035F80}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{BEB6AE51-5283-5019-A320-294202035F80}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{BEB6AE51-5283-5019-A320-294202035F80}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{BEB6AE51-5283-5019-A320-294202035F80}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{BEB6AE51-5283-5019-A320-294202035F80}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{BEB6AE51-5283-5019-A320-294202035F80}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{BEB6AE51-5283-5019-A320-294202035F80}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{380B6851-F428-5BDF-9DA4-BBFD4E1CA5BF}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{BEB6AE51-5283-5019-A320-294202035F80}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{BEB6AE51-5283-5019-A320-294202035F80}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{BEB6AE51-5283-5019-A320-294202035F80}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{BEB6AE51-5283-5019-A320-294202035F80}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{BEB6AE51-5283-5019-A320-294202035F80}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{BEB6AE51-5283-5019-A320-294202035F80}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{BEB6AE51-5283-5019-A320-294202035F80}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{BEB6AE51-5283-5019-A320-294202035F80}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{BEB6AE51-5283-5019-A320-294202035F80}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{BEB6AE51-5283-5019-A320-294202035F80}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{BEB6AE51-5283-5019-A320-294202035F80}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{BEB6AE51-5283-5019-A320-294202035F80}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{BEB6AE51-5283-5019-A320-294202035F80}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{BEB6AE51-5283-5019-A320-294202035F80}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{BEB6AE51-5283-5019-A320-294202035F80}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{BEB6AE51-5283-5019-A320-294202035F80}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{BEB6AE51-5283-5019-A320-294202035F80}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{BEB6AE51-5283-5019-A320-294202035F80}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{BEB6AE51-5283-5019-A320-294202035F80}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{BEB6AE51-5283-5019-A320-294202035F80}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{BEB6AE51-5283-5019-A320-294202035F80}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{2E879A16-9143-5862-A5B3-EDED931C60BC}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Shared", + "category": "Shared", + "tooltip": "A smart pointer which manages the life cycle of an object, and provides multiple points of ownership for the specified memory(The memory will remain active so long as any shared_ptr has a reference to it)." + }, + "methods": [ + { + "key": "get", + "context": "{2E879A16-9143-5862-A5B3-EDED931C60BC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get is invoked" + }, + "details": { + "name": "get" + }, + "params": [ + { + "typeid": "{2E879A16-9143-5862-A5B3-EDED931C60BC}", + "details": { + "name": "AZStd::shared_ptr" + } + } + ], + "results": [ + { + "typeid": "{F01C8BDD-6F24-4344-8945-521A8750B30B}", + "details": { + "name": "PolygonPrism", + "tooltip": "Polygon prism shape" + } + } + ] + } + ] + }, + { + "key": "{6CC7B2F9-F551-4CB8-A713-4149959AE337}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "MathColor_VM" + }, + "methods": [ + { + "key": "One", + "context": "{6CC7B2F9-F551-4CB8-A713-4149959AE337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke One" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after One is invoked" + }, + "details": { + "name": "One" + }, + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "LinearToGamma", + "context": "{6CC7B2F9-F551-4CB8-A713-4149959AE337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke LinearToGamma" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after LinearToGamma is invoked" + }, + "details": { + "name": "LinearToGamma" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "FromVector3", + "context": "{6CC7B2F9-F551-4CB8-A713-4149959AE337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromVector3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromVector3 is invoked" + }, + "details": { + "name": "FromVector3" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "MultiplyByNumber", + "context": "{6CC7B2F9-F551-4CB8-A713-4149959AE337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByNumber is invoked" + }, + "details": { + "name": "MultiplyByNumber" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "Negate", + "context": "{6CC7B2F9-F551-4CB8-A713-4149959AE337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Negate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Negate is invoked" + }, + "details": { + "name": "Negate" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "Dot3", + "context": "{6CC7B2F9-F551-4CB8-A713-4149959AE337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Dot3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Dot3 is invoked" + }, + "details": { + "name": "Dot3" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Dot", + "context": "{6CC7B2F9-F551-4CB8-A713-4149959AE337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Dot" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Dot is invoked" + }, + "details": { + "name": "Dot" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "FromValues", + "context": "{6CC7B2F9-F551-4CB8-A713-4149959AE337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromValues" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromValues is invoked" + }, + "details": { + "name": "FromValues" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "DivideByNumber", + "context": "{6CC7B2F9-F551-4CB8-A713-4149959AE337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DivideByNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DivideByNumber is invoked" + }, + "details": { + "name": "DivideByNumber" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "FromVector3AndNumber", + "context": "{6CC7B2F9-F551-4CB8-A713-4149959AE337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromVector3AndNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromVector3AndNumber is invoked" + }, + "details": { + "name": "FromVector3AndNumber" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "GammaToLinear", + "context": "{6CC7B2F9-F551-4CB8-A713-4149959AE337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GammaToLinear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GammaToLinear is invoked" + }, + "details": { + "name": "GammaToLinear" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "IsClose", + "context": "{6CC7B2F9-F551-4CB8-A713-4149959AE337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsClose" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsClose is invoked" + }, + "details": { + "name": "IsClose" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "IsZero", + "context": "{6CC7B2F9-F551-4CB8-A713-4149959AE337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsZero" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsZero is invoked" + }, + "details": { + "name": "IsZero" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "MultiplyByColor", + "context": "{6CC7B2F9-F551-4CB8-A713-4149959AE337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByColor is invoked" + }, + "details": { + "name": "MultiplyByColor" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "Add", + "context": "{6CC7B2F9-F551-4CB8-A713-4149959AE337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Add" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Add is invoked" + }, + "details": { + "name": "Add" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "Subtract", + "context": "{6CC7B2F9-F551-4CB8-A713-4149959AE337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Subtract" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Subtract is invoked" + }, + "details": { + "name": "Subtract" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + } + ] + }, + { + "key": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + }, + { + "typeid": "{C66E5214-A24B-4722-B7F0-5991E6F8F163}", + "details": { + "name": "AZ::Render::MaterialAssignment" + } + } + ], + "results": [ + { + "typeid": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{94AA4B8D-48FE-5938-9D61-36CD28672B6C}", + "details": { + "name": "Iterator_VM" + } + } + ] + }, + { + "key": "Size", + "context": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + } + ], + "results": [ + { + "typeid": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + } + ], + "results": [ + { + "typeid": "{C66E5214-A24B-4722-B7F0-5991E6F8F163}", + "details": { + "name": "AZ::Render::MaterialAssignment" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{50F6716F-698B-5A6C-AACD-940597FDEC24}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{B7B3058C-1E07-528C-A40D-F5C598CBF4EE}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{B7B3058C-1E07-528C-A40D-F5C598CBF4EE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{B7B3058C-1E07-528C-A40D-F5C598CBF4EE}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{B7B3058C-1E07-528C-A40D-F5C598CBF4EE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{B7B3058C-1E07-528C-A40D-F5C598CBF4EE}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{B7B3058C-1E07-528C-A40D-F5C598CBF4EE}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{B7B3058C-1E07-528C-A40D-F5C598CBF4EE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{B7B3058C-1E07-528C-A40D-F5C598CBF4EE}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{B7B3058C-1E07-528C-A40D-F5C598CBF4EE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{B7B3058C-1E07-528C-A40D-F5C598CBF4EE}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{B7B3058C-1E07-528C-A40D-F5C598CBF4EE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{B7B3058C-1E07-528C-A40D-F5C598CBF4EE}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{6DCC25CB-9729-5D3D-BBCF-1F3B08D247CB}", + "details": { + "name": "Iterator_VM, allocator>, Vector4, AZStd::hash", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + }, + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ], + "results": [ + { + "typeid": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{482A449C-CC28-50B2-AC24-47E309E4BA14}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{FDE6FB0D-D37B-58F4-9941-97F58D111A1B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{8CBDA3B7-9DCD-4A04-A12C-123C322CA63A}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "MathOBB_VM" + }, + "methods": [ + { + "key": "GetPosition", + "context": "{8CBDA3B7-9DCD-4A04-A12C-123C322CA63A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPosition" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPosition is invoked" + }, + "details": { + "name": "GetPosition" + }, + "params": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetAxisY", + "context": "{8CBDA3B7-9DCD-4A04-A12C-123C322CA63A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAxisY" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAxisY is invoked" + }, + "details": { + "name": "GetAxisY" + }, + "params": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetAxisX", + "context": "{8CBDA3B7-9DCD-4A04-A12C-123C322CA63A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAxisX" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAxisX is invoked" + }, + "details": { + "name": "GetAxisX" + }, + "params": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "FromAabb", + "context": "{8CBDA3B7-9DCD-4A04-A12C-123C322CA63A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromAabb" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromAabb is invoked" + }, + "details": { + "name": "FromAabb" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ], + "results": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ] + }, + { + "key": "FromPositionRotationAndHalfLengths", + "context": "{8CBDA3B7-9DCD-4A04-A12C-123C322CA63A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromPositionRotationAndHalfLengths" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromPositionRotationAndHalfLengths is invoked" + }, + "details": { + "name": "FromPositionRotationAndHalfLengths" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ] + }, + { + "key": "GetAxisZ", + "context": "{8CBDA3B7-9DCD-4A04-A12C-123C322CA63A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetAxisZ" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetAxisZ is invoked" + }, + "details": { + "name": "GetAxisZ" + }, + "params": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "IsFinite", + "context": "{8CBDA3B7-9DCD-4A04-A12C-123C322CA63A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsFinite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsFinite is invoked" + }, + "details": { + "name": "IsFinite" + }, + "params": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + }, + { + "key": "{781AD4B3-F61B-5C95-9447-F90AB07AB480}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Intrusive", + "category": "Intrusive", + "tooltip": "A smart pointer which manages the life cycle of an object, and guarantees a single point of ownership for the specified memory." + }, + "methods": [ + { + "key": "get", + "context": "{781AD4B3-F61B-5C95-9447-F90AB07AB480}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get is invoked" + }, + "details": { + "name": "get" + }, + "params": [ + { + "typeid": "{781AD4B3-F61B-5C95-9447-F90AB07AB480}", + "details": { + "name": "AZStd::intrusive_ptr*" + } + } + ], + "results": [ + { + "typeid": "{C99F75B2-8BD5-4CD8-8672-1E01EF0A04CF}", + "details": { + "name": "Material*" + } + } + ] + } + ] + }, + { + "key": "{33844DCE-75B0-5734-A1B7-7C44199D1D5E}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Tuple" + }, + "methods": [ + { + "key": "Get0", + "context": "{33844DCE-75B0-5734-A1B7-7C44199D1D5E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get0" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get0 is invoked" + }, + "details": { + "name": "Get0" + }, + "params": [ + { + "typeid": "{33844DCE-75B0-5734-A1B7-7C44199D1D5E}", + "details": { + "name": "tuple&" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Get1", + "context": "{33844DCE-75B0-5734-A1B7-7C44199D1D5E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get1" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get1 is invoked" + }, + "details": { + "name": "Get1" + }, + "params": [ + { + "typeid": "{33844DCE-75B0-5734-A1B7-7C44199D1D5E}", + "details": { + "name": "tuple&" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetSize", + "context": "{33844DCE-75B0-5734-A1B7-7C44199D1D5E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + } + ] + }, + { + "key": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D7439508-ED10-4395-9D48-1FC3D7815361}", + "details": { + "name": "Contact" + } + } + ] + }, + { + "key": "HasKey", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{D7439508-ED10-4395-9D48-1FC3D7815361}", + "details": { + "name": "Contact" + } + } + ] + }, + { + "key": "Back", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D7439508-ED10-4395-9D48-1FC3D7815361}", + "details": { + "name": "Contact" + } + } + ] + }, + { + "key": "pop_back", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{D7439508-ED10-4395-9D48-1FC3D7815361}", + "details": { + "name": "Contact" + } + } + ] + }, + { + "key": "Empty", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D7439508-ED10-4395-9D48-1FC3D7815361}", + "details": { + "name": "Contact" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D7439508-ED10-4395-9D48-1FC3D7815361}", + "details": { + "name": "Contact" + } + } + ], + "results": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{D7439508-ED10-4395-9D48-1FC3D7815361}", + "details": { + "name": "Contact" + } + } + ] + }, + { + "key": "clear", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{D7439508-ED10-4395-9D48-1FC3D7815361}", + "details": { + "name": "Contact" + } + } + ] + }, + { + "key": "GetSize", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{D7439508-ED10-4395-9D48-1FC3D7815361}", + "details": { + "name": "Contact" + } + } + ], + "results": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D7439508-ED10-4395-9D48-1FC3D7815361}", + "details": { + "name": "Contact" + } + } + ] + }, + { + "key": "Reserve", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{009022A1-16A5-50B0-958F-F69C729985A3}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{96B2283D-AEEE-567D-A0B6-749396C8509A}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{F8A7460C-2CC2-5755-AFDA-49B1109A751E}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{F8A7460C-2CC2-5755-AFDA-49B1109A751E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{F8A7460C-2CC2-5755-AFDA-49B1109A751E}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{F8A7460C-2CC2-5755-AFDA-49B1109A751E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{F8A7460C-2CC2-5755-AFDA-49B1109A751E}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{F8A7460C-2CC2-5755-AFDA-49B1109A751E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{F8A7460C-2CC2-5755-AFDA-49B1109A751E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{F8A7460C-2CC2-5755-AFDA-49B1109A751E}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{F8A7460C-2CC2-5755-AFDA-49B1109A751E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{F8A7460C-2CC2-5755-AFDA-49B1109A751E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{F8A7460C-2CC2-5755-AFDA-49B1109A751E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{F8A7460C-2CC2-5755-AFDA-49B1109A751E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{5D4F4ECD-117C-52F8-A21D-E6B06E499ED8}", + "details": { + "name": "Iterator_VM, allocator>, AZStd::basic_string", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{13FCDCBA-6F14-54F7-9105-34B8AA21D80C}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{65F4A570-CBE4-5E03-A397-7F0BD8DE3831}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "HasKey", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Back", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "pop_back", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Empty", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "clear", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetSize", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Reserve", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{309BAC28-3844-53C7-A952-EC55DFC7C3BB}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "details": { + "name": "Asset" + } + } + ] + }, + { + "key": "HasKey", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "details": { + "name": "Asset" + } + } + ] + }, + { + "key": "Back", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "details": { + "name": "Asset" + } + } + ] + }, + { + "key": "pop_back", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "details": { + "name": "Asset" + } + } + ] + }, + { + "key": "Empty", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "details": { + "name": "Asset" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "details": { + "name": "Asset" + } + } + ] + }, + { + "key": "clear", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "details": { + "name": "Asset" + } + } + ] + }, + { + "key": "GetSize", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{C73A5FA9-295B-57F8-97D0-947B74603D96}", + "details": { + "name": "Asset" + } + } + ] + }, + { + "key": "Reserve", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{5600E444-1E66-5CB4-81A9-053AD1F4453E}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{92764AA6-ABDB-51CC-8318-0BDE24A094CE}", + "details": { + "name": "Iterator_VM, allocator>>" + } + } + ] + } + ] + }, + { + "key": "{8B173592-95EA-56B6-AE88-33A58FDAF93E}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{8B173592-95EA-56B6-AE88-33A58FDAF93E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{8B173592-95EA-56B6-AE88-33A58FDAF93E}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{8B173592-95EA-56B6-AE88-33A58FDAF93E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{8B173592-95EA-56B6-AE88-33A58FDAF93E}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8B173592-95EA-56B6-AE88-33A58FDAF93E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{8B173592-95EA-56B6-AE88-33A58FDAF93E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{8B173592-95EA-56B6-AE88-33A58FDAF93E}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{8B173592-95EA-56B6-AE88-33A58FDAF93E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{8B173592-95EA-56B6-AE88-33A58FDAF93E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{8B173592-95EA-56B6-AE88-33A58FDAF93E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{8B173592-95EA-56B6-AE88-33A58FDAF93E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A43908D5-50DB-5D62-A519-AC5224EB1C78}", + "details": { + "name": "Iterator_VM, allocator>, Vector3, AZStd::hash", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ] + }, + { + "key": "HasKey", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ] + }, + { + "key": "Back", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ] + }, + { + "key": "pop_back", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ] + }, + { + "key": "Empty", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ], + "results": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ] + }, + { + "key": "clear", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ] + }, + { + "key": "GetSize", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ], + "results": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ] + }, + { + "key": "Reserve", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{E8EDFF6E-951E-584D-9D47-33F43F77D859}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{C172722C-0AA5-5611-A243-F610997BE645}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "HasKey", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "Back", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "pop_back", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "Empty", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "clear", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "GetSize", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "Reserve", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{82AC1A71-2EA7-5FBC-9B3B-72B1CCFDD292}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{9C9B85F9-B5F7-5FC9-BA83-B357A225AF71}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{0D5A4347-BCEC-58D6-A2D5-259F78FA0BF0}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Outcome" + }, + "methods": [ + { + "key": "Failure", + "context": "{0D5A4347-BCEC-58D6-A2D5-259F78FA0BF0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Failure" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Failure is invoked" + }, + "details": { + "name": "Failure" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{0D5A4347-BCEC-58D6-A2D5-259F78FA0BF0}", + "details": { + "name": "Outcome, allocator>>" + } + } + ] + }, + { + "key": "Success", + "context": "{0D5A4347-BCEC-58D6-A2D5-259F78FA0BF0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Success" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Success is invoked" + }, + "details": { + "name": "Success" + }, + "results": [ + { + "typeid": "{0D5A4347-BCEC-58D6-A2D5-259F78FA0BF0}", + "details": { + "name": "Outcome, allocator>>" + } + } + ] + }, + { + "key": "GetError", + "context": "{0D5A4347-BCEC-58D6-A2D5-259F78FA0BF0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetError" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetError is invoked" + }, + "details": { + "name": "GetError" + }, + "params": [ + { + "typeid": "{0D5A4347-BCEC-58D6-A2D5-259F78FA0BF0}", + "details": { + "name": "Outcome", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{CD60CE94-4843-57D1-B373-FCF94C6918A8}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{E77BCFE0-1C44-57B3-9651-CA647A4F4980}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{36AD4D04-5A5D-52DC-A864-7027D563EFA2}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Event" + }, + "methods": [ + { + "key": "HasHandlerConnected", + "context": "{36AD4D04-5A5D-52DC-A864-7027D563EFA2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke HasHandlerConnected" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after HasHandlerConnected is invoked" + }, + "details": { + "name": "HasHandlerConnected" + }, + "params": [ + { + "typeid": "{36AD4D04-5A5D-52DC-A864-7027D563EFA2}", + "details": { + "name": "Event" + }, + "methods": [ + { + "key": "Failure", + "context": "{D1FEE25B-F252-5625-863C-1312E1F822A0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Failure" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Failure is invoked" + }, + "details": { + "name": "Failure" + }, + "results": [ + { + "typeid": "{D1FEE25B-F252-5625-863C-1312E1F822A0}", + "details": { + "name": "AZ::Outcome" + } + } + ] + }, + { + "key": "Success", + "context": "{D1FEE25B-F252-5625-863C-1312E1F822A0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Success" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Success is invoked" + }, + "details": { + "name": "Success" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{D1FEE25B-F252-5625-863C-1312E1F822A0}", + "details": { + "name": "AZ::Outcome" + } + } + ] + }, + { + "key": "GetValue", + "context": "{D1FEE25B-F252-5625-863C-1312E1F822A0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetValue" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetValue is invoked" + }, + "details": { + "name": "GetValue" + }, + "params": [ + { + "typeid": "{D1FEE25B-F252-5625-863C-1312E1F822A0}", + "details": { + "name": "AZ::Outcome" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "IsSuccess", + "context": "{D1FEE25B-F252-5625-863C-1312E1F822A0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsSuccess" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsSuccess is invoked" + }, + "details": { + "name": "IsSuccess" + }, + "params": [ + { + "typeid": "{D1FEE25B-F252-5625-863C-1312E1F822A0}", + "details": { + "name": "AZ::Outcome" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + }, + { + "key": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "LightConfig" + } + } + ] + }, + { + "key": "HasKey", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "LightConfig" + } + } + ] + }, + { + "key": "Back", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "LightConfig" + } + } + ] + }, + { + "key": "pop_back", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "LightConfig" + } + } + ] + }, + { + "key": "Empty", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "LightConfig" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "LightConfig" + } + } + ], + "results": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "LightConfig" + } + } + ] + }, + { + "key": "clear", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "LightConfig" + } + } + ] + }, + { + "key": "GetSize", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "LightConfig" + } + } + ], + "results": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{02644F52-9483-47A8-9028-37671695C34E}", + "details": { + "name": "LightConfig" + } + } + ] + }, + { + "key": "Reserve", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{33492660-D9A8-5E84-9CFB-03CBCD87919F}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{25A6BFD4-18AE-53F0-A8E5-0BC534A956DF}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", + "details": { + "name": "Name" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", + "details": { + "name": "Name" + } + }, + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "any" + } + } + ], + "results": [ + { + "typeid": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D4C51D6C-76EE-5396-AA8F-297470208C1B}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{E7E44B3A-15C3-5420-A930-EB9ED7F0D7D9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", + "details": { + "name": "Name" + } + } + ], + "results": [ + { + "typeid": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", + "details": { + "name": "Name" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", + "details": { + "name": "Name" + } + } + ], + "results": [ + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "any" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6E6962E1-04C9-56F9-89C4-361031CC1384}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Set", + "category": "Set", + "tooltip": "A dynamically sized container, where each element is unique." + }, + "methods": [ + { + "key": "Size", + "context": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "contains", + "context": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "details": { + "name": "AZStd::unordered_set" + } + } + ] + }, + { + "key": "GetSize", + "context": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Reserve", + "context": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{C8C77E71-5B11-559E-BAC5-06C297CD422B}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase", + "context": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "details": { + "name": "AZStd::unordered_set" + } + } + ] + }, + { + "key": "Clear", + "context": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "details": { + "name": "AZStd::unordered_set" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{8A408689-0904-5A87-B6C4-FAB519089D8B}", + "details": { + "name": "AZStd::unordered_set" + } + } + ] + } + ] + }, + { + "key": "{C0311D23-97F1-556C-B6A4-ECD726543686}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Intrusive", + "category": "Intrusive", + "tooltip": "A smart pointer which manages the life cycle of an object, and guarantees a single point of ownership for the specified memory." + }, + "methods": [ + { + "key": "get", + "context": "{C0311D23-97F1-556C-B6A4-ECD726543686}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get is invoked" + }, + "details": { + "name": "get" + }, + "params": [ + { + "typeid": "{C0311D23-97F1-556C-B6A4-ECD726543686}", + "details": { + "name": "AZStd::intrusive_ptr" + } + } + ], + "results": [ + { + "typeid": "{4E4B1092-1BEE-4DC4-BE4B-8FBC83B0F48C}", + "details": { + "name": "Image*" + } + } + ] + } + ] + }, + { + "key": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A1A2345A-733D-5980-8523-612DF7C6A45A}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{41599134-C1BF-51A5-B66A-7351FFD5EF42}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{EEB1809B-78BA-5073-AEF8-8CC85F43DB4A}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{EEB1809B-78BA-5073-AEF8-8CC85F43DB4A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{EEB1809B-78BA-5073-AEF8-8CC85F43DB4A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{EEB1809B-78BA-5073-AEF8-8CC85F43DB4A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{EEB1809B-78BA-5073-AEF8-8CC85F43DB4A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{EEB1809B-78BA-5073-AEF8-8CC85F43DB4A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{EEB1809B-78BA-5073-AEF8-8CC85F43DB4A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{EEB1809B-78BA-5073-AEF8-8CC85F43DB4A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{EEB1809B-78BA-5073-AEF8-8CC85F43DB4A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{EEB1809B-78BA-5073-AEF8-8CC85F43DB4A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{EEB1809B-78BA-5073-AEF8-8CC85F43DB4A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{EEB1809B-78BA-5073-AEF8-8CC85F43DB4A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D93B89FE-719A-5E7D-8B2F-21CCF7964AD9}", + "details": { + "name": "Iterator_VM, allocator>, bool, AZStd::hash>" + }, + "methods": [ + { + "key": "remove_prefix", + "context": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke remove_prefix" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after remove_prefix is invoked" + }, + "details": { + "name": "remove_prefix" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>*" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "substr", + "context": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke substr" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after substr is invoked" + }, + "details": { + "name": "substr" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>*" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ], + "results": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>" + } + } + ] + }, + { + "key": "find", + "context": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke find" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after find is invoked" + }, + "details": { + "name": "find" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>*" + } + }, + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "length", + "context": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke length" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after length is invoked" + }, + "details": { + "name": "length" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>*" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "data", + "context": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke data" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after data is invoked" + }, + "details": { + "name": "data" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>*" + } + } + ], + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "ToString", + "context": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToString" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToString is invoked" + }, + "details": { + "name": "ToString" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "const AZStd::basic_string_view>&" + } + } + ], + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "size", + "context": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>*" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "remove_suffix", + "context": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke remove_suffix" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after remove_suffix is invoked" + }, + "details": { + "name": "remove_suffix" + }, + "params": [ + { + "typeid": "{7114E998-A8B4-519B-9342-A86D1587B4F7}", + "details": { + "name": "AZStd::basic_string_view>*" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + } + ] + }, + { + "key": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{B5A81D33-AD24-5FD1-A0F9-96E16EE04D2E}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{F17D3A96-7E22-5A6A-87D1-B0FB6E3A6C32}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{4BA06517-EDEC-59DC-B5FE-2FDE64BBEF6E}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Asset" + }, + "methods": [ + { + "key": "IsLoading", + "context": "{4BA06517-EDEC-59DC-B5FE-2FDE64BBEF6E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsLoading" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsLoading is invoked" + }, + "details": { + "name": "IsLoading" + }, + "params": [ + { + "typeid": "{4BA06517-EDEC-59DC-B5FE-2FDE64BBEF6E}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetType", + "context": "{4BA06517-EDEC-59DC-B5FE-2FDE64BBEF6E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetType is invoked" + }, + "details": { + "name": "GetType" + }, + "params": [ + { + "typeid": "{4BA06517-EDEC-59DC-B5FE-2FDE64BBEF6E}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + } + ] + }, + { + "key": "IsError", + "context": "{4BA06517-EDEC-59DC-B5FE-2FDE64BBEF6E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsError" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsError is invoked" + }, + "details": { + "name": "IsError" + }, + "params": [ + { + "typeid": "{4BA06517-EDEC-59DC-B5FE-2FDE64BBEF6E}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetHint", + "context": "{4BA06517-EDEC-59DC-B5FE-2FDE64BBEF6E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetHint" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetHint is invoked" + }, + "details": { + "name": "GetHint" + }, + "params": [ + { + "typeid": "{4BA06517-EDEC-59DC-B5FE-2FDE64BBEF6E}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetData", + "context": "{4BA06517-EDEC-59DC-B5FE-2FDE64BBEF6E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetData" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetData is invoked" + }, + "details": { + "name": "GetData" + }, + "params": [ + { + "typeid": "{4BA06517-EDEC-59DC-B5FE-2FDE64BBEF6E}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{AF3F7D32-1536-422A-89F3-A11E1F5B5A9C}", + "details": { + "name": "AssetData" + } + } + ] + }, + { + "key": "IsReady", + "context": "{4BA06517-EDEC-59DC-B5FE-2FDE64BBEF6E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsReady" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsReady is invoked" + }, + "details": { + "name": "IsReady" + }, + "params": [ + { + "typeid": "{4BA06517-EDEC-59DC-B5FE-2FDE64BBEF6E}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetStatus", + "context": "{4BA06517-EDEC-59DC-B5FE-2FDE64BBEF6E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetStatus" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetStatus is invoked" + }, + "details": { + "name": "GetStatus" + }, + "params": [ + { + "typeid": "{4BA06517-EDEC-59DC-B5FE-2FDE64BBEF6E}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetId", + "context": "{4BA06517-EDEC-59DC-B5FE-2FDE64BBEF6E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetId is invoked" + }, + "details": { + "name": "GetId" + }, + "params": [ + { + "typeid": "{4BA06517-EDEC-59DC-B5FE-2FDE64BBEF6E}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + } + ] + }, + { + "key": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map>", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + }, + { + "typeid": "{9F4210F0-9A8E-5536-A6FD-F3F55D854C0A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{041189DC-081D-5773-A986-A315539C058F}", + "details": { + "name": "Iterator_VM, allocator>," + } + } + ] + }, + { + "key": "GetKeys", + "context": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + } + ], + "results": [ + { + "typeid": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + } + ], + "results": [ + { + "typeid": "{9F4210F0-9A8E-5536-A6FD-F3F55D854C0A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{549C99B0-35FE-515D-9066-DFA9A1131500}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{D8B65A5B-38FF-4B41-9FA4-FCA080D75625}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "MathCrc32_VM" + }, + "methods": [ + { + "key": "FromString", + "context": "{D8B65A5B-38FF-4B41-9FA4-FCA080D75625}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromString" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromString is invoked" + }, + "details": { + "name": "FromString" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + } + ] + }, + { + "key": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "MathVector4_VM" + }, + "methods": [ + { + "key": "SetW", + "context": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetW" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetW is invoked" + }, + "details": { + "name": "SetW" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "SetX", + "context": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetX" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetX is invoked" + }, + "details": { + "name": "SetX" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "IsNormalized", + "context": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsNormalized" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsNormalized is invoked" + }, + "details": { + "name": "IsNormalized" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "LengthSquared", + "context": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke LengthSquared" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after LengthSquared is invoked" + }, + "details": { + "name": "LengthSquared" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "MultiplyByNumber", + "context": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByNumber is invoked" + }, + "details": { + "name": "MultiplyByNumber" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "Negate", + "context": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Negate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Negate is invoked" + }, + "details": { + "name": "Negate" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "Dot", + "context": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Dot" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Dot is invoked" + }, + "details": { + "name": "Dot" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "FromValues", + "context": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromValues" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromValues is invoked" + }, + "details": { + "name": "FromValues" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "IsFinite", + "context": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsFinite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsFinite is invoked" + }, + "details": { + "name": "IsFinite" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Length", + "context": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Length" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Length is invoked" + }, + "details": { + "name": "Length" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "MultiplyByVector", + "context": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByVector" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByVector is invoked" + }, + "details": { + "name": "MultiplyByVector" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "DirectionTo", + "context": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DirectionTo" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DirectionTo is invoked" + }, + "details": { + "name": "DirectionTo" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{F31AA4C4-5A73-510B-BFD3-20ACE0D9CE67}", + "details": { + "name": "tuple" + } + } + ] + }, + { + "key": "DivideByVector", + "context": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DivideByVector" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DivideByVector is invoked" + }, + "details": { + "name": "DivideByVector" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "LengthReciprocal", + "context": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke LengthReciprocal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after LengthReciprocal is invoked" + }, + "details": { + "name": "LengthReciprocal" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "SetZ", + "context": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetZ" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetZ is invoked" + }, + "details": { + "name": "SetZ" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "Normalize", + "context": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Normalize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Normalize is invoked" + }, + "details": { + "name": "Normalize" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "DivideByNumber", + "context": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DivideByNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DivideByNumber is invoked" + }, + "details": { + "name": "DivideByNumber" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "IsClose", + "context": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsClose" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsClose is invoked" + }, + "details": { + "name": "IsClose" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "IsZero", + "context": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsZero" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsZero is invoked" + }, + "details": { + "name": "IsZero" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Add", + "context": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Add" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Add is invoked" + }, + "details": { + "name": "Add" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "GetElement", + "context": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetElement" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetElement is invoked" + }, + "details": { + "name": "GetElement" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Reciprocal", + "context": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reciprocal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reciprocal is invoked" + }, + "details": { + "name": "Reciprocal" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "Subtract", + "context": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Subtract" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Subtract is invoked" + }, + "details": { + "name": "Subtract" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "Absolute", + "context": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Absolute" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Absolute is invoked" + }, + "details": { + "name": "Absolute" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "SetY", + "context": "{66027D7A-FCD1-4592-93E5-EB4B7F4BD671}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetY" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetY is invoked" + }, + "details": { + "name": "SetY" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + } + ] + }, + { + "key": "{36669095-4036-5479-B116-41A32E4E16EA}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Tuple" + }, + "methods": [ + { + "key": "Get0", + "context": "{36669095-4036-5479-B116-41A32E4E16EA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get0" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get0 is invoked" + }, + "details": { + "name": "Get0" + }, + "params": [ + { + "typeid": "{36669095-4036-5479-B116-41A32E4E16EA}", + "details": { + "name": "AZStd::tuple" + } + } + ], + "results": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + }, + { + "key": "Get1", + "context": "{36669095-4036-5479-B116-41A32E4E16EA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get1" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get1 is invoked" + }, + "details": { + "name": "Get1" + }, + "params": [ + { + "typeid": "{36669095-4036-5479-B116-41A32E4E16EA}", + "details": { + "name": "AZStd::tuple" + } + } + ], + "results": [ + { + "typeid": "{58422C0E-1E47-4854-98E6-34098F6FE12D}", + "details": { + "name": "AZ::s8" + } + } + ] + }, + { + "key": "GetSize", + "context": "{36669095-4036-5479-B116-41A32E4E16EA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + } + ] + }, + { + "key": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + }, + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ], + "results": [ + { + "typeid": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{BBBB6E86-5131-507E-810A-CE14E722DB6A}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{87C2A8D1-7954-5AF0-8E1A-B0BB94A6A291}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "HasKey", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Back", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "pop_back", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Empty", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "clear", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "GetSize", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Reserve", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{30E6B65F-7B30-5B32-903C-BBE8E5DED781}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "HasKey", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "Back", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "pop_back", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "Empty", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "clear", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetSize", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "Reserve", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{16FED0F7-1100-589D-BBDF-AC414DA04E52}", + "details": { + "name": "Iterator_VM, allocator>, allocator>>" + } + } + ] + } + ] + }, + { + "key": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "MathMatrix4x4_VM" + }, + "methods": [ + { + "key": "GetRow", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetRow" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetRow is invoked" + }, + "details": { + "name": "GetRow" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "FromRotationXDegrees", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromRotationXDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromRotationXDegrees is invoked" + }, + "details": { + "name": "FromRotationXDegrees" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "FromRotationZDegrees", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromRotationZDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromRotationZDegrees is invoked" + }, + "details": { + "name": "FromRotationZDegrees" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "FromRows", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromRows" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromRows is invoked" + }, + "details": { + "name": "FromRows" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "ToScale", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToScale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToScale is invoked" + }, + "details": { + "name": "ToScale" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "FromQuaternion", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromQuaternion" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromQuaternion is invoked" + }, + "details": { + "name": "FromQuaternion" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "FromScale", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromScale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromScale is invoked" + }, + "details": { + "name": "FromScale" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "FromTransform", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromTransform" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromTransform is invoked" + }, + "details": { + "name": "FromTransform" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "GetTranslation", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTranslation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTranslation is invoked" + }, + "details": { + "name": "GetTranslation" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "FromQuaternionAndTranslation", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromQuaternionAndTranslation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromQuaternionAndTranslation is invoked" + }, + "details": { + "name": "FromQuaternionAndTranslation" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "GetColumn", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetColumn" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetColumn is invoked" + }, + "details": { + "name": "GetColumn" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "GetDiagonal", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetDiagonal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetDiagonal is invoked" + }, + "details": { + "name": "GetDiagonal" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "Invert", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Invert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Invert is invoked" + }, + "details": { + "name": "Invert" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "IsClose", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsClose" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsClose is invoked" + }, + "details": { + "name": "IsClose" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + }, + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "FromMatrix3x3", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromMatrix3x3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromMatrix3x3 is invoked" + }, + "details": { + "name": "FromMatrix3x3" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "GetColumns", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetColumns" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetColumns is invoked" + }, + "details": { + "name": "GetColumns" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ], + "results": [ + { + "typeid": "{3750867E-BD2D-52A2-B93B-51032E86C4D4}", + "details": { + "name": "tuple" + } + } + ] + }, + { + "key": "GetRows", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetRows" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetRows is invoked" + }, + "details": { + "name": "GetRows" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ], + "results": [ + { + "typeid": "{3750867E-BD2D-52A2-B93B-51032E86C4D4}", + "details": { + "name": "tuple" + } + } + ] + }, + { + "key": "MultiplyByMatrix", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByMatrix" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByMatrix is invoked" + }, + "details": { + "name": "MultiplyByMatrix" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + }, + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "FromDiagonal", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromDiagonal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromDiagonal is invoked" + }, + "details": { + "name": "FromDiagonal" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "FromRotationYDegrees", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromRotationYDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromRotationYDegrees is invoked" + }, + "details": { + "name": "FromRotationYDegrees" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "GetElement", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetElement" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetElement is invoked" + }, + "details": { + "name": "GetElement" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Transpose", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Transpose" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Transpose is invoked" + }, + "details": { + "name": "Transpose" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "FromColumns", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromColumns" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromColumns is invoked" + }, + "details": { + "name": "FromColumns" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "FromTranslation", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromTranslation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromTranslation is invoked" + }, + "details": { + "name": "FromTranslation" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "IsFinite", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsFinite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsFinite is invoked" + }, + "details": { + "name": "IsFinite" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "MultiplyByVector", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByVector" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByVector is invoked" + }, + "details": { + "name": "MultiplyByVector" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "Zero", + "context": "{537AB179-E23C-492D-8EF7-53845A2DB163}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Zero" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Zero is invoked" + }, + "details": { + "name": "Zero" + }, + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + } + ] + }, + { + "key": "{C338C806-EBD9-5471-AB22-66F7584A5890}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{C338C806-EBD9-5471-AB22-66F7584A5890}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{C338C806-EBD9-5471-AB22-66F7584A5890}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{C338C806-EBD9-5471-AB22-66F7584A5890}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{C338C806-EBD9-5471-AB22-66F7584A5890}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ], + "results": [ + { + "typeid": "{C338C806-EBD9-5471-AB22-66F7584A5890}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{C338C806-EBD9-5471-AB22-66F7584A5890}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{C338C806-EBD9-5471-AB22-66F7584A5890}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{C338C806-EBD9-5471-AB22-66F7584A5890}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{C338C806-EBD9-5471-AB22-66F7584A5890}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{C338C806-EBD9-5471-AB22-66F7584A5890}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{C338C806-EBD9-5471-AB22-66F7584A5890}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{5C709DCE-E6E1-5536-A42E-6BE21C0A3BD8}", + "details": { + "name": "Iterator_VM, allocator>, Aabb, AZStd::hash", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{097C0043-AC31-5230-B07E-330022B002DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{097C0043-AC31-5230-B07E-330022B002DB}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{097C0043-AC31-5230-B07E-330022B002DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{097C0043-AC31-5230-B07E-330022B002DB}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{097C0043-AC31-5230-B07E-330022B002DB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{097C0043-AC31-5230-B07E-330022B002DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{097C0043-AC31-5230-B07E-330022B002DB}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{097C0043-AC31-5230-B07E-330022B002DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{097C0043-AC31-5230-B07E-330022B002DB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{097C0043-AC31-5230-B07E-330022B002DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{097C0043-AC31-5230-B07E-330022B002DB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{9B77797B-541C-5BA4-A6A8-CA3CBDC6AD8A}", + "details": { + "name": "Iterator_VM, allocator>, Color, AZStd::hash", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "HasKey", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "Back", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "pop_back", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "Empty", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ], + "results": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "clear", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "GetSize", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ], + "results": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "Reserve", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{240FCAC2-0B29-5CD9-9AFE-9E7A135428BB}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{24CAF71B-660D-5D37-ACBD-B05906EA3D30}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{D9DF1385-6C5C-4E41-94CA-8B10E9D8FAAF}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "MathRandom_VM" + }, + "methods": [ + { + "key": "RandomPointOnSphere", + "context": "{D9DF1385-6C5C-4E41-94CA-8B10E9D8FAAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomPointOnSphere" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomPointOnSphere is invoked" + }, + "details": { + "name": "RandomPointOnSphere" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "RandomPointInCircle", + "context": "{D9DF1385-6C5C-4E41-94CA-8B10E9D8FAAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomPointInCircle" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomPointInCircle is invoked" + }, + "details": { + "name": "RandomPointInCircle" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "RandomPointInSquare", + "context": "{D9DF1385-6C5C-4E41-94CA-8B10E9D8FAAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomPointInSquare" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomPointInSquare is invoked" + }, + "details": { + "name": "RandomPointInSquare" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "RandomUnitVector2", + "context": "{D9DF1385-6C5C-4E41-94CA-8B10E9D8FAAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomUnitVector2" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomUnitVector2 is invoked" + }, + "details": { + "name": "RandomUnitVector2" + }, + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "RandomVector2", + "context": "{D9DF1385-6C5C-4E41-94CA-8B10E9D8FAAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomVector2" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomVector2 is invoked" + }, + "details": { + "name": "RandomVector2" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "RandomPointInCylinder", + "context": "{D9DF1385-6C5C-4E41-94CA-8B10E9D8FAAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomPointInCylinder" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomPointInCylinder is invoked" + }, + "details": { + "name": "RandomPointInCylinder" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "RandomQuaternion", + "context": "{D9DF1385-6C5C-4E41-94CA-8B10E9D8FAAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomQuaternion" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomQuaternion is invoked" + }, + "details": { + "name": "RandomQuaternion" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "RandomVector4", + "context": "{D9DF1385-6C5C-4E41-94CA-8B10E9D8FAAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomVector4" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomVector4 is invoked" + }, + "details": { + "name": "RandomVector4" + }, + "params": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "RandomPointInBox", + "context": "{D9DF1385-6C5C-4E41-94CA-8B10E9D8FAAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomPointInBox" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomPointInBox is invoked" + }, + "details": { + "name": "RandomPointInBox" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "RandomPointOnCircle", + "context": "{D9DF1385-6C5C-4E41-94CA-8B10E9D8FAAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomPointOnCircle" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomPointOnCircle is invoked" + }, + "details": { + "name": "RandomPointOnCircle" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "RandomPointInEllipsoid", + "context": "{D9DF1385-6C5C-4E41-94CA-8B10E9D8FAAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomPointInEllipsoid" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomPointInEllipsoid is invoked" + }, + "details": { + "name": "RandomPointInEllipsoid" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "RandomInteger", + "context": "{D9DF1385-6C5C-4E41-94CA-8B10E9D8FAAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomInteger" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomInteger is invoked" + }, + "details": { + "name": "RandomInteger" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "RandomPointInWedge", + "context": "{D9DF1385-6C5C-4E41-94CA-8B10E9D8FAAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomPointInWedge" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomPointInWedge is invoked" + }, + "details": { + "name": "RandomPointInWedge" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "RandomGrayscale", + "context": "{D9DF1385-6C5C-4E41-94CA-8B10E9D8FAAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomGrayscale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomGrayscale is invoked" + }, + "details": { + "name": "RandomGrayscale" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "RandomPointInCone", + "context": "{D9DF1385-6C5C-4E41-94CA-8B10E9D8FAAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomPointInCone" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomPointInCone is invoked" + }, + "details": { + "name": "RandomPointInCone" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "RandomColor", + "context": "{D9DF1385-6C5C-4E41-94CA-8B10E9D8FAAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomColor" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomColor is invoked" + }, + "details": { + "name": "RandomColor" + }, + "params": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "RandomNumber", + "context": "{D9DF1385-6C5C-4E41-94CA-8B10E9D8FAAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomNumber is invoked" + }, + "details": { + "name": "RandomNumber" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "RandomPointInSphere", + "context": "{D9DF1385-6C5C-4E41-94CA-8B10E9D8FAAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomPointInSphere" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomPointInSphere is invoked" + }, + "details": { + "name": "RandomPointInSphere" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "RandomUnitVector3", + "context": "{D9DF1385-6C5C-4E41-94CA-8B10E9D8FAAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomUnitVector3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomUnitVector3 is invoked" + }, + "details": { + "name": "RandomUnitVector3" + }, + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "RandomVector3", + "context": "{D9DF1385-6C5C-4E41-94CA-8B10E9D8FAAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomVector3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomVector3 is invoked" + }, + "details": { + "name": "RandomVector3" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "RandomPointInArc", + "context": "{D9DF1385-6C5C-4E41-94CA-8B10E9D8FAAF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RandomPointInArc" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RandomPointInArc is invoked" + }, + "details": { + "name": "RandomPointInArc" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + } + ] + }, + { + "key": "{7352CD6D-91DA-536F-BFCC-BC513FB48B2D}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Tuple" + }, + "methods": [ + { + "key": "GetSize", + "context": "{7352CD6D-91DA-536F-BFCC-BC513FB48B2D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Get3", + "context": "{7352CD6D-91DA-536F-BFCC-BC513FB48B2D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get3 is invoked" + }, + "details": { + "name": "Get3" + }, + "params": [ + { + "typeid": "{7352CD6D-91DA-536F-BFCC-BC513FB48B2D}", + "details": { + "name": "tuple&" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Get2", + "context": "{7352CD6D-91DA-536F-BFCC-BC513FB48B2D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get2" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get2 is invoked" + }, + "details": { + "name": "Get2" + }, + "params": [ + { + "typeid": "{7352CD6D-91DA-536F-BFCC-BC513FB48B2D}", + "details": { + "name": "tuple&" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Get1", + "context": "{7352CD6D-91DA-536F-BFCC-BC513FB48B2D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get1" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get1 is invoked" + }, + "details": { + "name": "Get1" + }, + "params": [ + { + "typeid": "{7352CD6D-91DA-536F-BFCC-BC513FB48B2D}", + "details": { + "name": "tuple&" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Get0", + "context": "{7352CD6D-91DA-536F-BFCC-BC513FB48B2D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get0" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get0 is invoked" + }, + "details": { + "name": "Get0" + }, + "params": [ + { + "typeid": "{7352CD6D-91DA-536F-BFCC-BC513FB48B2D}", + "details": { + "name": "tuple&" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + } + ] + }, + { + "key": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{392AC7EE-72B6-50C2-8AD3-900E685DFBAF}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{34333904-F6D2-5090-9D5D-B52D135144EA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{E51F56F8-D4E9-5C9F-AE6F-3F9C5D28F4C6}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Shared", + "category": "Shared", + "tooltip": "A smart pointer which manages the life cycle of an object, and provides multiple points of ownership for the specified memory(The memory will remain active so long as any shared_ptr has a reference to it)." + }, + "methods": [ + { + "key": "get", + "context": "{E51F56F8-D4E9-5C9F-AE6F-3F9C5D28F4C6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get is invoked" + }, + "details": { + "name": "get" + }, + "params": [ + { + "typeid": "{E51F56F8-D4E9-5C9F-AE6F-3F9C5D28F4C6}", + "details": { + "name": "AZStd::shared_ptr*" + } + } + ], + "results": [ + { + "typeid": "{CBF5DC3C-A0A7-45F5-A207-06433A9A10C5}", + "details": { + "name": "Graph" + } + } + ] + } + ] + }, + { + "key": "{CD6328B1-6CC4-54CE-97F4-9D91F5A242F4}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Tuple" + }, + "methods": [ + { + "key": "Get0", + "context": "{CD6328B1-6CC4-54CE-97F4-9D91F5A242F4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get0" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get0 is invoked" + }, + "details": { + "name": "Get0" + }, + "params": [ + { + "typeid": "{CD6328B1-6CC4-54CE-97F4-9D91F5A242F4}", + "details": { + "name": "tuple&" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Get1", + "context": "{CD6328B1-6CC4-54CE-97F4-9D91F5A242F4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get1" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get1 is invoked" + }, + "details": { + "name": "Get1" + }, + "params": [ + { + "typeid": "{CD6328B1-6CC4-54CE-97F4-9D91F5A242F4}", + "details": { + "name": "tuple&" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "GetSize", + "context": "{CD6328B1-6CC4-54CE-97F4-9D91F5A242F4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + } + ] + }, + { + "key": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{B536054C-80E9-5EA7-972E-267BA65B4A4E}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{4A885DC2-5C26-52F0-BA83-61EEC0FB5E4E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{D0A15826-BEFB-5FBD-BEB4-609E7F2B67AD}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{D0A15826-BEFB-5FBD-BEB4-609E7F2B67AD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{D0A15826-BEFB-5FBD-BEB4-609E7F2B67AD}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{D0A15826-BEFB-5FBD-BEB4-609E7F2B67AD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{D0A15826-BEFB-5FBD-BEB4-609E7F2B67AD}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{D0A15826-BEFB-5FBD-BEB4-609E7F2B67AD}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{D0A15826-BEFB-5FBD-BEB4-609E7F2B67AD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{D0A15826-BEFB-5FBD-BEB4-609E7F2B67AD}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{D0A15826-BEFB-5FBD-BEB4-609E7F2B67AD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{D0A15826-BEFB-5FBD-BEB4-609E7F2B67AD}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{D0A15826-BEFB-5FBD-BEB4-609E7F2B67AD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{D0A15826-BEFB-5FBD-BEB4-609E7F2B67AD}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{65F2D63C-4E98-5EA5-8C8C-3C174C291388}", + "details": { + "name": "Iterator_VM, allocator>, double, AZStd::hash" + }, + "methods": [ + { + "key": "GetError", + "context": "{BC094BE5-5849-5E61-82B9-FB3B434F6BAD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetError" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetError is invoked" + }, + "details": { + "name": "GetError" + }, + "params": [ + { + "typeid": "{BC094BE5-5849-5E61-82B9-FB3B434F6BAD}", + "details": { + "name": "Outcome, allocator>>" + } + } + ] + }, + { + "key": "GetValue", + "context": "{BC094BE5-5849-5E61-82B9-FB3B434F6BAD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetValue" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetValue is invoked" + }, + "details": { + "name": "GetValue" + }, + "params": [ + { + "typeid": "{BC094BE5-5849-5E61-82B9-FB3B434F6BAD}", + "details": { + "name": "Outcome, allocator>>" + } + } + ] + } + ] + }, + { + "key": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{4A495587-E9C4-53F9-934B-87EA4AA35446}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D33569A9-EFFC-566C-8CCC-74D6E086A1B0}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ], + "results": [ + { + "typeid": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{73622B74-D33C-5B95-9931-09D2DCE531B6}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{E32B8C9D-F84C-54FF-91DA-84C99FBBB0B6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{1F24C807-BE2F-54C7-8F2B-498727236DF5}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Tuple" + }, + "methods": [ + { + "key": "Get0", + "context": "{1F24C807-BE2F-54C7-8F2B-498727236DF5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get0" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get0 is invoked" + }, + "details": { + "name": "Get0" + }, + "params": [ + { + "typeid": "{1F24C807-BE2F-54C7-8F2B-498727236DF5}", + "details": { + "name": "tuple&" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Get1", + "context": "{1F24C807-BE2F-54C7-8F2B-498727236DF5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get1" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get1 is invoked" + }, + "details": { + "name": "Get1" + }, + "params": [ + { + "typeid": "{1F24C807-BE2F-54C7-8F2B-498727236DF5}", + "details": { + "name": "tuple&" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetSize", + "context": "{1F24C807-BE2F-54C7-8F2B-498727236DF5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + } + ] + }, + { + "key": "{5B700838-21A2-4579-9303-F4A4822AFEF4}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "String_VM" + }, + "methods": [ + { + "key": "ToLower", + "context": "{5B700838-21A2-4579-9303-F4A4822AFEF4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToLower" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToLower is invoked" + }, + "details": { + "name": "ToLower" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "ToUpper", + "context": "{5B700838-21A2-4579-9303-F4A4822AFEF4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToUpper" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToUpper is invoked" + }, + "details": { + "name": "ToUpper" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "Substring", + "context": "{5B700838-21A2-4579-9303-F4A4822AFEF4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Substring" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Substring is invoked" + }, + "details": { + "name": "Substring" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + } + ] + }, + { + "key": "{79F6FAE7-FB1D-5030-91D5-766E5861D7D5}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{79F6FAE7-FB1D-5030-91D5-766E5861D7D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{79F6FAE7-FB1D-5030-91D5-766E5861D7D5}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{79F6FAE7-FB1D-5030-91D5-766E5861D7D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{79F6FAE7-FB1D-5030-91D5-766E5861D7D5}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{79F6FAE7-FB1D-5030-91D5-766E5861D7D5}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{79F6FAE7-FB1D-5030-91D5-766E5861D7D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{79F6FAE7-FB1D-5030-91D5-766E5861D7D5}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{79F6FAE7-FB1D-5030-91D5-766E5861D7D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{79F6FAE7-FB1D-5030-91D5-766E5861D7D5}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{79F6FAE7-FB1D-5030-91D5-766E5861D7D5}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{79F6FAE7-FB1D-5030-91D5-766E5861D7D5}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{FB9701BF-C92C-54AE-82C8-8B3BD620066F}", + "details": { + "name": "Iterator_VM, allocator>, AssetId, AZStd::hash" + } + } + ] + }, + { + "key": "FromOBB", + "context": "{AB0C2753-680E-47AD-8277-66B3AC01C659}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromOBB" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromOBB is invoked" + }, + "details": { + "name": "FromOBB" + }, + "params": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "Translate", + "context": "{AB0C2753-680E-47AD-8277-66B3AC01C659}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Translate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Translate is invoked" + }, + "details": { + "name": "Translate" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "ContainsVector3", + "context": "{AB0C2753-680E-47AD-8277-66B3AC01C659}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ContainsVector3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ContainsVector3 is invoked" + }, + "details": { + "name": "ContainsVector3" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Distance", + "context": "{AB0C2753-680E-47AD-8277-66B3AC01C659}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Distance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Distance is invoked" + }, + "details": { + "name": "Distance" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "FromPoint", + "context": "{AB0C2753-680E-47AD-8277-66B3AC01C659}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromPoint" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromPoint is invoked" + }, + "details": { + "name": "FromPoint" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "Null", + "context": "{AB0C2753-680E-47AD-8277-66B3AC01C659}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Null" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Null is invoked" + }, + "details": { + "name": "Null" + }, + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "YExtent", + "context": "{AB0C2753-680E-47AD-8277-66B3AC01C659}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke YExtent" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after YExtent is invoked" + }, + "details": { + "name": "YExtent" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Clamp", + "context": "{AB0C2753-680E-47AD-8277-66B3AC01C659}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clamp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clamp is invoked" + }, + "details": { + "name": "Clamp" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + }, + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "ContainsAABB", + "context": "{AB0C2753-680E-47AD-8277-66B3AC01C659}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ContainsAABB" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ContainsAABB is invoked" + }, + "details": { + "name": "ContainsAABB" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + }, + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Expand", + "context": "{AB0C2753-680E-47AD-8277-66B3AC01C659}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Expand" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Expand is invoked" + }, + "details": { + "name": "Expand" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "Extents", + "context": "{AB0C2753-680E-47AD-8277-66B3AC01C659}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Extents" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Extents is invoked" + }, + "details": { + "name": "Extents" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "FromCenterHalfExtents", + "context": "{AB0C2753-680E-47AD-8277-66B3AC01C659}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromCenterHalfExtents" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromCenterHalfExtents is invoked" + }, + "details": { + "name": "FromCenterHalfExtents" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "GetMin", + "context": "{AB0C2753-680E-47AD-8277-66B3AC01C659}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetMin" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetMin is invoked" + }, + "details": { + "name": "GetMin" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "ApplyTransform", + "context": "{AB0C2753-680E-47AD-8277-66B3AC01C659}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ApplyTransform" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ApplyTransform is invoked" + }, + "details": { + "name": "ApplyTransform" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "Center", + "context": "{AB0C2753-680E-47AD-8277-66B3AC01C659}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Center" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Center is invoked" + }, + "details": { + "name": "Center" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "FromMinMax", + "context": "{AB0C2753-680E-47AD-8277-66B3AC01C659}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromMinMax" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromMinMax is invoked" + }, + "details": { + "name": "FromMinMax" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "IsFinite", + "context": "{AB0C2753-680E-47AD-8277-66B3AC01C659}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsFinite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsFinite is invoked" + }, + "details": { + "name": "IsFinite" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "IsValid", + "context": "{AB0C2753-680E-47AD-8277-66B3AC01C659}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsValid" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsValid is invoked" + }, + "details": { + "name": "IsValid" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetMax", + "context": "{AB0C2753-680E-47AD-8277-66B3AC01C659}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetMax" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetMax is invoked" + }, + "details": { + "name": "GetMax" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "XExtent", + "context": "{AB0C2753-680E-47AD-8277-66B3AC01C659}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke XExtent" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after XExtent is invoked" + }, + "details": { + "name": "XExtent" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "AddPoint", + "context": "{AB0C2753-680E-47AD-8277-66B3AC01C659}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddPoint" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddPoint is invoked" + }, + "details": { + "name": "AddPoint" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "AddAABB", + "context": "{AB0C2753-680E-47AD-8277-66B3AC01C659}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AddAABB" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AddAABB is invoked" + }, + "details": { + "name": "AddAABB" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + }, + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "FromCenterRadius", + "context": "{AB0C2753-680E-47AD-8277-66B3AC01C659}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromCenterRadius" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromCenterRadius is invoked" + }, + "details": { + "name": "FromCenterRadius" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "ZExtent", + "context": "{AB0C2753-680E-47AD-8277-66B3AC01C659}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ZExtent" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ZExtent is invoked" + }, + "details": { + "name": "ZExtent" + }, + "params": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + } + ] + }, + { + "key": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "MathQuaternion_VM" + }, + "methods": [ + { + "key": "Subtract", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Subtract" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Subtract is invoked" + }, + "details": { + "name": "Subtract" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "RotationYDegrees", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RotationYDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RotationYDegrees is invoked" + }, + "details": { + "name": "RotationYDegrees" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "Normalize", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Normalize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Normalize is invoked" + }, + "details": { + "name": "Normalize" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "LengthReciprocal", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke LengthReciprocal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after LengthReciprocal is invoked" + }, + "details": { + "name": "LengthReciprocal" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "CreateFromEulerAngles", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke CreateFromEulerAngles" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after CreateFromEulerAngles is invoked" + }, + "details": { + "name": "CreateFromEulerAngles" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "IsIdentity", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsIdentity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsIdentity is invoked" + }, + "details": { + "name": "IsIdentity" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "FromTransform", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromTransform" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromTransform is invoked" + }, + "details": { + "name": "FromTransform" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "Lerp", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Lerp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Lerp is invoked" + }, + "details": { + "name": "Lerp" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "RotationZDegrees", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RotationZDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RotationZDegrees is invoked" + }, + "details": { + "name": "RotationZDegrees" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "ConvertTransformToRotation", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ConvertTransformToRotation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ConvertTransformToRotation is invoked" + }, + "details": { + "name": "ConvertTransformToRotation" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "ShortestArc", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ShortestArc" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ShortestArc is invoked" + }, + "details": { + "name": "ShortestArc" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "RotationXDegrees", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RotationXDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RotationXDegrees is invoked" + }, + "details": { + "name": "RotationXDegrees" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "IsZero", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsZero" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsZero is invoked" + }, + "details": { + "name": "IsZero" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "IsClose", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsClose" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsClose is invoked" + }, + "details": { + "name": "IsClose" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Length", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Length" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Length is invoked" + }, + "details": { + "name": "Length" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Conjugate", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Conjugate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Conjugate is invoked" + }, + "details": { + "name": "Conjugate" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "ToAngleDegrees", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToAngleDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToAngleDegrees is invoked" + }, + "details": { + "name": "ToAngleDegrees" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Dot", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Dot" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Dot is invoked" + }, + "details": { + "name": "Dot" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Negate", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Negate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Negate is invoked" + }, + "details": { + "name": "Negate" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "Add", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Add" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Add is invoked" + }, + "details": { + "name": "Add" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "MultiplyByNumber", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByNumber is invoked" + }, + "details": { + "name": "MultiplyByNumber" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "Slerp", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Slerp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Slerp is invoked" + }, + "details": { + "name": "Slerp" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "InvertFull", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke InvertFull" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after InvertFull is invoked" + }, + "details": { + "name": "InvertFull" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "FromMatrix4x4", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromMatrix4x4" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromMatrix4x4 is invoked" + }, + "details": { + "name": "FromMatrix4x4" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "RotateVector3", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RotateVector3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RotateVector3 is invoked" + }, + "details": { + "name": "RotateVector3" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "FromMatrix3x3", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromMatrix3x3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromMatrix3x3 is invoked" + }, + "details": { + "name": "FromMatrix3x3" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "Squad", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Squad" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Squad is invoked" + }, + "details": { + "name": "Squad" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "FromAxisAngleDegrees", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromAxisAngleDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromAxisAngleDegrees is invoked" + }, + "details": { + "name": "FromAxisAngleDegrees" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "LengthSquared", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke LengthSquared" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after LengthSquared is invoked" + }, + "details": { + "name": "LengthSquared" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "IsFinite", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsFinite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsFinite is invoked" + }, + "details": { + "name": "IsFinite" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "DivideByNumber", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DivideByNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DivideByNumber is invoked" + }, + "details": { + "name": "DivideByNumber" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "MultiplyByRotation", + "context": "{9BE75E2E-AA07-4767-9BF3-905C289EB38A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByRotation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByRotation is invoked" + }, + "details": { + "name": "MultiplyByRotation" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + } + ] + }, + { + "key": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + }, + { + "key": "HasKey", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + }, + { + "key": "Back", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + }, + { + "key": "pop_back", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + }, + { + "key": "Empty", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + }, + { + "key": "clear", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + }, + { + "key": "GetSize", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + }, + { + "key": "Reserve", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{5A369E7B-631B-510E-A11F-566A7A2C6CD1}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{C0E1DF8C-D1BE-4AF4-8100-5D71788399BA}", + "details": { + "name": "AZ::RPI::ShaderVariantListSourceData::VariantInfo" + } + } + ] + }, + { + "key": "HasKey", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{C0E1DF8C-D1BE-4AF4-8100-5D71788399BA}", + "details": { + "name": "AZ::RPI::ShaderVariantListSourceData::VariantInfo" + } + } + ] + }, + { + "key": "Back", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{C0E1DF8C-D1BE-4AF4-8100-5D71788399BA}", + "details": { + "name": "AZ::RPI::ShaderVariantListSourceData::VariantInfo" + } + } + ] + }, + { + "key": "pop_back", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{C0E1DF8C-D1BE-4AF4-8100-5D71788399BA}", + "details": { + "name": "AZ::RPI::ShaderVariantListSourceData::VariantInfo" + } + } + ] + }, + { + "key": "Empty", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{C0E1DF8C-D1BE-4AF4-8100-5D71788399BA}", + "details": { + "name": "AZ::RPI::ShaderVariantListSourceData::VariantInfo" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{C0E1DF8C-D1BE-4AF4-8100-5D71788399BA}", + "details": { + "name": "AZ::RPI::ShaderVariantListSourceData::VariantInfo" + } + } + ], + "results": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{C0E1DF8C-D1BE-4AF4-8100-5D71788399BA}", + "details": { + "name": "AZ::RPI::ShaderVariantListSourceData::VariantInfo" + } + } + ] + }, + { + "key": "clear", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{C0E1DF8C-D1BE-4AF4-8100-5D71788399BA}", + "details": { + "name": "AZ::RPI::ShaderVariantListSourceData::VariantInfo" + } + } + ] + }, + { + "key": "GetSize", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{C0E1DF8C-D1BE-4AF4-8100-5D71788399BA}", + "details": { + "name": "AZ::RPI::ShaderVariantListSourceData::VariantInfo" + } + } + ], + "results": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{C0E1DF8C-D1BE-4AF4-8100-5D71788399BA}", + "details": { + "name": "AZ::RPI::ShaderVariantListSourceData::VariantInfo" + } + } + ] + }, + { + "key": "Reserve", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{33D5748B-90F1-569F-8C3F-EF32C9747919}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{C6C60A04-2C5B-5576-A0D0-0DB6206D0C9F}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "AZStd::basic_string, allocator>" + }, + "methods": [ + { + "key": "Split", + "context": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Split" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Split is invoked" + }, + "details": { + "name": "Split" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Join", + "context": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Join" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Join is invoked" + }, + "details": { + "name": "Join" + }, + "params": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "Add", + "context": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Add" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Add is invoked" + }, + "details": { + "name": "Add" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "ToLower", + "context": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToLower" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToLower is invoked" + }, + "details": { + "name": "ToLower" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "Replace", + "context": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Replace" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Replace is invoked" + }, + "details": { + "name": "Replace" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "TrimRight", + "context": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke TrimRight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after TrimRight is invoked" + }, + "details": { + "name": "TrimRight" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "Equal", + "context": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Equal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Equal is invoked" + }, + "details": { + "name": "Equal" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Find", + "context": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Find" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Find is invoked" + }, + "details": { + "name": "Find" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Substring", + "context": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Substring" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Substring is invoked" + }, + "details": { + "name": "Substring" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "Length", + "context": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Length" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Length is invoked" + }, + "details": { + "name": "Length" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "ReplaceByIndex", + "context": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ReplaceByIndex" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ReplaceByIndex is invoked" + }, + "details": { + "name": "ReplaceByIndex" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "c_str", + "context": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke c_str" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after c_str is invoked" + }, + "details": { + "name": "c_str" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}", + "details": { + "name": "char" + } + } + ] + }, + { + "key": "TrimLeft", + "context": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke TrimLeft" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after TrimLeft is invoked" + }, + "details": { + "name": "TrimLeft" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "ToUpper", + "context": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToUpper" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToUpper is invoked" + }, + "details": { + "name": "ToUpper" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + } + ] + }, + { + "key": "{F0A3166F-115C-5C3E-8D65-28FBA4420028}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Event" + }, + "methods": [ + { + "key": "HasHandlerConnected", + "context": "{F0A3166F-115C-5C3E-8D65-28FBA4420028}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke HasHandlerConnected" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after HasHandlerConnected is invoked" + }, + "details": { + "name": "HasHandlerConnected" + }, + "params": [ + { + "typeid": "{F0A3166F-115C-5C3E-8D65-28FBA4420028}", + "details": { + "name": "Event*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + }, + { + "key": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Set", + "category": "Set", + "tooltip": "A dynamically sized container, where each element is unique." + }, + "methods": [ + { + "key": "Size", + "context": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "contains", + "context": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "details": { + "name": "AZStd::unordered_set" + } + } + ] + }, + { + "key": "GetSize", + "context": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Reserve", + "context": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{CCDD5049-D70F-57EB-9E4E-F0F063ECCBBC}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase", + "context": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "details": { + "name": "AZStd::unordered_set" + } + } + ] + }, + { + "key": "Clear", + "context": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "details": { + "name": "AZStd::unordered_set" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{93BBB90E-EBB4-507D-89B6-E4921FE44AFF}", + "details": { + "name": "AZStd::unordered_set" + } + } + ] + } + ] + }, + { + "key": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{8EDF80B5-A118-5323-B142-E567B1D31BCB}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{60CBD665-AE12-50ED-A0CF-D94E77C6292C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Asset" + }, + "methods": [ + { + "key": "IsLoading", + "context": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsLoading" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsLoading is invoked" + }, + "details": { + "name": "IsLoading" + }, + "params": [ + { + "typeid": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetType", + "context": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetType is invoked" + }, + "details": { + "name": "GetType" + }, + "params": [ + { + "typeid": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + } + ] + }, + { + "key": "IsError", + "context": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsError" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsError is invoked" + }, + "details": { + "name": "IsError" + }, + "params": [ + { + "typeid": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetHint", + "context": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetHint" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetHint is invoked" + }, + "details": { + "name": "GetHint" + }, + "params": [ + { + "typeid": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetData", + "context": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetData" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetData is invoked" + }, + "details": { + "name": "GetData" + }, + "params": [ + { + "typeid": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{AF3F7D32-1536-422A-89F3-A11E1F5B5A9C}", + "details": { + "name": "AssetData" + } + } + ] + }, + { + "key": "IsReady", + "context": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsReady" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsReady is invoked" + }, + "details": { + "name": "IsReady" + }, + "params": [ + { + "typeid": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetStatus", + "context": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetStatus" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetStatus is invoked" + }, + "details": { + "name": "GetStatus" + }, + "params": [ + { + "typeid": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetId", + "context": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetId is invoked" + }, + "details": { + "name": "GetId" + }, + "params": [ + { + "typeid": "{403A7CFE-B218-5D57-8540-BD58E734BCFE}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + } + ] + }, + { + "key": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ], + "results": [ + { + "typeid": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{3966F85B-7AF7-5622-98D6-BBEFA97E39BF}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{2D49E44A-E561-5108-B585-5392D40F9949}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{32EC831B-8AE7-5715-998B-C0C723CB61DA}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Set", + "category": "Set", + "tooltip": "A dynamically sized container, where each element is unique." + }, + "methods": [ + { + "key": "Size", + "context": "{32EC831B-8AE7-5715-998B-C0C723CB61DA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{32EC831B-8AE7-5715-998B-C0C723CB61DA}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{32EC831B-8AE7-5715-998B-C0C723CB61DA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{32EC831B-8AE7-5715-998B-C0C723CB61DA}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{99DAD0BC-740E-5E82-826B-8FC7968CC02C}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "contains", + "context": "{32EC831B-8AE7-5715-998B-C0C723CB61DA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{32EC831B-8AE7-5715-998B-C0C723CB61DA}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{32EC831B-8AE7-5715-998B-C0C723CB61DA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{32EC831B-8AE7-5715-998B-C0C723CB61DA}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{32EC831B-8AE7-5715-998B-C0C723CB61DA}", + "details": { + "name": "AZStd::unordered_set" + } + } + ] + }, + { + "key": "GetSize", + "context": "{32EC831B-8AE7-5715-998B-C0C723CB61DA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{32EC831B-8AE7-5715-998B-C0C723CB61DA}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Reserve", + "context": "{32EC831B-8AE7-5715-998B-C0C723CB61DA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{32EC831B-8AE7-5715-998B-C0C723CB61DA}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{32EC831B-8AE7-5715-998B-C0C723CB61DA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{32EC831B-8AE7-5715-998B-C0C723CB61DA}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{931B4926-886E-5BB7-A09A-B7D532F9DAAA}", + "details": { + "name": "Iterator_VM, allocator>, AZStd::hash", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + }, + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ], + "results": [ + { + "typeid": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{03427020-0827-58FD-B9E7-1F885F682E45}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{AD341397-E3C6-5C5F-92D6-EEAAA134FF68}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{C845E5EC-5580-4E12-A9B2-9AE7E5B7826F}", + "details": { + "name": "EntityComponentIdPair" + } + } + ] + }, + { + "key": "HasKey", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{C845E5EC-5580-4E12-A9B2-9AE7E5B7826F}", + "details": { + "name": "EntityComponentIdPair" + } + } + ] + }, + { + "key": "Back", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{C845E5EC-5580-4E12-A9B2-9AE7E5B7826F}", + "details": { + "name": "EntityComponentIdPair" + } + } + ] + }, + { + "key": "pop_back", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{C845E5EC-5580-4E12-A9B2-9AE7E5B7826F}", + "details": { + "name": "EntityComponentIdPair" + } + } + ] + }, + { + "key": "Empty", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{C845E5EC-5580-4E12-A9B2-9AE7E5B7826F}", + "details": { + "name": "EntityComponentIdPair" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{C845E5EC-5580-4E12-A9B2-9AE7E5B7826F}", + "details": { + "name": "EntityComponentIdPair" + } + } + ], + "results": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{C845E5EC-5580-4E12-A9B2-9AE7E5B7826F}", + "details": { + "name": "EntityComponentIdPair" + } + } + ] + }, + { + "key": "clear", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{C845E5EC-5580-4E12-A9B2-9AE7E5B7826F}", + "details": { + "name": "EntityComponentIdPair" + } + } + ] + }, + { + "key": "GetSize", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{C845E5EC-5580-4E12-A9B2-9AE7E5B7826F}", + "details": { + "name": "EntityComponentIdPair" + } + } + ], + "results": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{C845E5EC-5580-4E12-A9B2-9AE7E5B7826F}", + "details": { + "name": "EntityComponentIdPair" + } + } + ] + }, + { + "key": "Reserve", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{1378A8E9-E2C4-5831-8373-B384FEF5962F}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{5BAFAD11-D6AF-5946-B09B-6E0B72E1209C}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Tuple" + }, + "methods": [ + { + "key": "Get0", + "context": "{5BAFAD11-D6AF-5946-B09B-6E0B72E1209C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get0" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get0 is invoked" + }, + "details": { + "name": "Get0" + }, + "params": [ + { + "typeid": "{5BAFAD11-D6AF-5946-B09B-6E0B72E1209C}", + "details": { + "name": "tuple" + } + } + ] + }, + { + "key": "Subtract", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Subtract" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Subtract is invoked" + }, + "details": { + "name": "Subtract" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "Project", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Project" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Project is invoked" + }, + "details": { + "name": "Project" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "Distance", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Distance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Distance is invoked" + }, + "details": { + "name": "Distance" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "FromValues", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromValues" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromValues is invoked" + }, + "details": { + "name": "FromValues" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "Dot", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Dot" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Dot is invoked" + }, + "details": { + "name": "Dot" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Angle", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Angle" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Angle is invoked" + }, + "details": { + "name": "Angle" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "Negate", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Negate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Negate is invoked" + }, + "details": { + "name": "Negate" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "MultiplyByVector", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByVector" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByVector is invoked" + }, + "details": { + "name": "MultiplyByVector" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "Add", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Add" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Add is invoked" + }, + "details": { + "name": "Add" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "Clamp", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clamp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clamp is invoked" + }, + "details": { + "name": "Clamp" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "MultiplyByNumber", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByNumber is invoked" + }, + "details": { + "name": "MultiplyByNumber" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "Slerp", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Slerp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Slerp is invoked" + }, + "details": { + "name": "Slerp" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "IsZero", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsZero" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsZero is invoked" + }, + "details": { + "name": "IsZero" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetY", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetY" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetY is invoked" + }, + "details": { + "name": "SetY" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "IsClose", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsClose" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsClose is invoked" + }, + "details": { + "name": "IsClose" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "DivideByNumber", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DivideByNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DivideByNumber is invoked" + }, + "details": { + "name": "DivideByNumber" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "IsNormalized", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsNormalized" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsNormalized is invoked" + }, + "details": { + "name": "IsNormalized" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "LengthSquared", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke LengthSquared" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after LengthSquared is invoked" + }, + "details": { + "name": "LengthSquared" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "IsFinite", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsFinite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsFinite is invoked" + }, + "details": { + "name": "IsFinite" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "ToPerpendicular", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToPerpendicular" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToPerpendicular is invoked" + }, + "details": { + "name": "ToPerpendicular" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "Normalize", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Normalize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Normalize is invoked" + }, + "details": { + "name": "Normalize" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "Max", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Max" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Max is invoked" + }, + "details": { + "name": "Max" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "GetElement", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetElement" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetElement is invoked" + }, + "details": { + "name": "GetElement" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Absolute", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Absolute" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Absolute is invoked" + }, + "details": { + "name": "Absolute" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "SetX", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetX" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetX is invoked" + }, + "details": { + "name": "SetX" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "Min", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Min" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Min is invoked" + }, + "details": { + "name": "Min" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "DivideByVector", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DivideByVector" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DivideByVector is invoked" + }, + "details": { + "name": "DivideByVector" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "DistanceSquared", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DistanceSquared" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DistanceSquared is invoked" + }, + "details": { + "name": "DistanceSquared" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Length", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Length" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Length is invoked" + }, + "details": { + "name": "Length" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Lerp", + "context": "{FD1BFADF-BA1F-4AFC-819B-ABA1F22AE6E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Lerp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Lerp is invoked" + }, + "details": { + "name": "Lerp" + }, + "params": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + } + ] + }, + { + "key": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ], + "results": [ + { + "typeid": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{42AD6C02-30C0-59A1-81CB-AF236B419CA6}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{544C0867-6EF4-593D-97BD-A51F6EB8164E}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + }, + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ], + "results": [ + { + "typeid": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{43538A58-E138-51B1-BF5A-425CF0A542D8}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{873120A5-6F9A-543A-BE16-6ED846A8655C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{C188C7D1-8386-5310-8390-F5BE27CEFF57}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D653CC1C-3625-5EE4-9F96-A1D20E576E8D}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{F429F985-AF00-529B-8449-16E56694E5F9}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Event<>" + }, + "methods": [ + { + "key": "HasHandlerConnected", + "context": "{F429F985-AF00-529B-8449-16E56694E5F9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke HasHandlerConnected" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after HasHandlerConnected is invoked" + }, + "details": { + "name": "HasHandlerConnected" + }, + "params": [ + { + "typeid": "{F429F985-AF00-529B-8449-16E56694E5F9}", + "details": { + "name": "Event<>*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + }, + { + "key": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{EDA7E035-BF0F-5778-B5F6-38E1C917EE71}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{C408B3CC-9C42-5306-93BC-FAB670B2F860}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{C00D2478-E0F3-57A3-AB60-A04DFC515016}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Event const TriggerEvent& >" + }, + "methods": [ + { + "key": "HasHandlerConnected", + "context": "{C00D2478-E0F3-57A3-AB60-A04DFC515016}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke HasHandlerConnected" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after HasHandlerConnected is invoked" + }, + "details": { + "name": "HasHandlerConnected" + }, + "params": [ + { + "typeid": "{C00D2478-E0F3-57A3-AB60-A04DFC515016}", + "details": { + "name": "Event const TriggerEvent& >*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + }, + { + "key": "{9A6CD726-97FC-54C4-A34B-5996F6948697}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Shared", + "category": "Shared", + "tooltip": "A smart pointer which manages the life cycle of an object, and provides multiple points of ownership for the specified memory(The memory will remain active so long as any shared_ptr has a reference to it)." + }, + "methods": [ + { + "key": "get", + "context": "{9A6CD726-97FC-54C4-A34B-5996F6948697}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get is invoked" + }, + "details": { + "name": "get" + }, + "params": [ + { + "typeid": "{9A6CD726-97FC-54C4-A34B-5996F6948697}", + "details": { + "name": "AZStd::shared_ptr" + } + } + ], + "results": [ + { + "typeid": "{274B4495-FDBF-45A9-9BAD-9E90269F2B73}", + "details": { + "name": "Node" + } + } + ] + } + ] + }, + { + "key": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector&" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector*" + } + } + ], + "results": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "SliceInstantiationTicket" + } + } + ] + }, + { + "key": "HasKey", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector&" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "SliceInstantiationTicket" + } + } + ] + }, + { + "key": "Back", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector*" + } + } + ], + "results": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "SliceInstantiationTicket" + } + } + ] + }, + { + "key": "pop_back", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector*" + } + } + ] + }, + { + "key": "size", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector&" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "SliceInstantiationTicket" + } + } + ] + }, + { + "key": "Empty", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector&" + } + } + ] + }, + { + "key": "push_back", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "SliceInstantiationTicket" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector&" + } + }, + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "SliceInstantiationTicket" + } + } + ], + "results": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector&" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "SliceInstantiationTicket" + } + } + ] + }, + { + "key": "clear", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector*" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector&" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector&" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector&" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector&" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector*" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector&" + } + } + ], + "results": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector&" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector&" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "SliceInstantiationTicket" + } + } + ] + }, + { + "key": "GetSize", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector&" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector&" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "SliceInstantiationTicket" + } + } + ], + "results": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector&" + } + } + ] + }, + { + "key": "PushBack", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{E6E7C0C5-07C9-44BB-A38C-930431948667}", + "details": { + "name": "SliceInstantiationTicket" + } + } + ] + }, + { + "key": "Reserve", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{DCAD95EA-9447-5B13-AACC-6C7223E1C04D}", + "details": { + "name": "AZStd::vector&" + } + } + ], + "results": [ + { + "typeid": "{26E7C4EA-AEE5-57E0-8F90-3E4E01D9CB95}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Set", + "category": "Set", + "tooltip": "A dynamically sized container, where each element is unique." + }, + "methods": [ + { + "key": "Size", + "context": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "contains", + "context": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "details": { + "name": "AZStd::unordered_set" + } + } + ] + }, + { + "key": "GetSize", + "context": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Reserve", + "context": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{FB7FD37D-C9BD-5EA1-99CF-EE3BB84E1043}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase", + "context": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "details": { + "name": "AZStd::unordered_set" + } + } + ] + }, + { + "key": "Clear", + "context": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "details": { + "name": "AZStd::unordered_set" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{0D5E2C44-B2DE-57D6-B4B9-3F37C5D9B245}", + "details": { + "name": "AZStd::unordered_set" + } + } + ] + } + ] + }, + { + "key": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ], + "results": [ + { + "typeid": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{C0AF6CF6-19D7-5896-9BE6-FF48D31FFAB0}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{F0D71473-2358-53A0-A1B3-16A564B9A0BD}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{84290CFC-1335-5341-AD8B-0A3FE9FE46D0}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Event> >" + }, + "methods": [ + { + "key": "HasHandlerConnected", + "context": "{84290CFC-1335-5341-AD8B-0A3FE9FE46D0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke HasHandlerConnected" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after HasHandlerConnected is invoked" + }, + "details": { + "name": "HasHandlerConnected" + }, + "params": [ + { + "typeid": "{84290CFC-1335-5341-AD8B-0A3FE9FE46D0}", + "details": { + "name": "Event> " + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + }, + { + "key": "{444B2C18-8D7E-5B43-9524-0C9F6C351542}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Shared", + "category": "Shared", + "tooltip": "A smart pointer which manages the life cycle of an object, and provides multiple points of ownership for the specified memory(The memory will remain active so long as any shared_ptr has a reference to it)." + }, + "methods": [ + { + "key": "get", + "context": "{444B2C18-8D7E-5B43-9524-0C9F6C351542}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get is invoked" + }, + "details": { + "name": "get" + }, + "params": [ + { + "typeid": "{444B2C18-8D7E-5B43-9524-0C9F6C351542}", + "details": { + "name": "AZStd::shared_ptr" + } + } + ], + "results": [ + { + "typeid": "{50494867-04F1-4785-BB9C-9D6C96DCBFC9}", + "details": { + "name": "Slot" + } + } + ] + } + ] + }, + { + "key": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + }, + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ], + "results": [ + { + "typeid": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{DBE62AE7-476A-58FE-BEEB-946F971797FE}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{56026B1A-B142-5C80-B6F4-A0827B393370}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{B51CFD94-318D-5E30-BE18-6ACC6CFCC2EC}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Shared", + "category": "Shared", + "tooltip": "A smart pointer which manages the life cycle of an object, and provides multiple points of ownership for the specified memory(The memory will remain active so long as any shared_ptr has a reference to it)." + }, + "methods": [ + { + "key": "get", + "context": "{B51CFD94-318D-5E30-BE18-6ACC6CFCC2EC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get is invoked" + }, + "details": { + "name": "get" + }, + "params": [ + { + "typeid": "{B51CFD94-318D-5E30-BE18-6ACC6CFCC2EC}", + "details": { + "name": "AZStd::shared_ptr" + } + } + ], + "results": [ + { + "typeid": "{B4301AE1-98F4-474E-B0A1-18F27EEDB059}", + "details": { + "name": "Connection" + } + } + ] + } + ] + }, + { + "key": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{107D8379-4AD4-4547-BEE1-184B120F23E9}", + "details": { + "name": "AzToolsFramework::ComponentDetails" + } + } + ] + }, + { + "key": "HasKey", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{107D8379-4AD4-4547-BEE1-184B120F23E9}", + "details": { + "name": "AzToolsFramework::ComponentDetails" + } + } + ] + }, + { + "key": "Back", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{107D8379-4AD4-4547-BEE1-184B120F23E9}", + "details": { + "name": "AzToolsFramework::ComponentDetails" + } + } + ] + }, + { + "key": "pop_back", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{107D8379-4AD4-4547-BEE1-184B120F23E9}", + "details": { + "name": "AzToolsFramework::ComponentDetails" + } + } + ] + }, + { + "key": "Empty", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{107D8379-4AD4-4547-BEE1-184B120F23E9}", + "details": { + "name": "AzToolsFramework::ComponentDetails" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{107D8379-4AD4-4547-BEE1-184B120F23E9}", + "details": { + "name": "AzToolsFramework::ComponentDetails" + } + } + ], + "results": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{107D8379-4AD4-4547-BEE1-184B120F23E9}", + "details": { + "name": "AzToolsFramework::ComponentDetails" + } + } + ] + }, + { + "key": "clear", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{107D8379-4AD4-4547-BEE1-184B120F23E9}", + "details": { + "name": "AzToolsFramework::ComponentDetails" + } + } + ] + }, + { + "key": "GetSize", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{107D8379-4AD4-4547-BEE1-184B120F23E9}", + "details": { + "name": "AzToolsFramework::ComponentDetails" + } + } + ], + "results": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{107D8379-4AD4-4547-BEE1-184B120F23E9}", + "details": { + "name": "AzToolsFramework::ComponentDetails" + } + } + ] + }, + { + "key": "Reserve", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{D2AE76E7-D7AC-58C9-82C3-EE5F0BDCFACD}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{C7B41471-EB0D-5307-82E3-EAD8C1973B1F}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{7611972F-379B-5219-A082-2D4743B0F750}", + "details": { + "name": "Iterator_VM, allocator>, AZStd::hash, A" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F35DB06-62AD-55E0-9CDD-DF452612430C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{E9F4752C-BFCD-5F51-AA18-F47BDF358BFD}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Outcome" + }, + "methods": [ + { + "key": "GetError", + "context": "{E9F4752C-BFCD-5F51-AA18-F47BDF358BFD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetError" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetError is invoked" + }, + "details": { + "name": "GetError" + }, + "params": [ + { + "typeid": "{E9F4752C-BFCD-5F51-AA18-F47BDF358BFD}", + "details": { + "name": "Outcome, allocator>>" + } + } + ] + }, + { + "key": "GetValue", + "context": "{E9F4752C-BFCD-5F51-AA18-F47BDF358BFD}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetValue" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetValue is invoked" + }, + "details": { + "name": "GetValue" + }, + "params": [ + { + "typeid": "{E9F4752C-BFCD-5F51-AA18-F47BDF358BFD}", + "details": { + "name": "Outcome, allocator>>" + } + } + ] + } + ] + }, + { + "key": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "HasKey", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Back", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "pop_back", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Empty", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "clear", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetSize", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Reserve", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{4599647A-45DD-585B-AFC0-4BAD29EB49A7}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{65B7F9BE-6626-5683-A229-1548661F21D5}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{CAC409E1-5D4D-52F3-8D93-2E1B97C930EC}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{4039D1BB-DA00-5C6B-AC80-6B892003D35F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{BFB0DE1D-7E54-5AF9-8FCB-AFCD69B4A2CF}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{033C4408-7E4A-5382-81D8-102FC8336005}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{3750867E-BD2D-52A2-B93B-51032E86C4D4}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Tuple" + }, + "methods": [ + { + "key": "GetSize", + "context": "{3750867E-BD2D-52A2-B93B-51032E86C4D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Get3", + "context": "{3750867E-BD2D-52A2-B93B-51032E86C4D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get3 is invoked" + }, + "details": { + "name": "Get3" + }, + "params": [ + { + "typeid": "{3750867E-BD2D-52A2-B93B-51032E86C4D4}", + "details": { + "name": "tuple&" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "Get2", + "context": "{3750867E-BD2D-52A2-B93B-51032E86C4D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get2" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get2 is invoked" + }, + "details": { + "name": "Get2" + }, + "params": [ + { + "typeid": "{3750867E-BD2D-52A2-B93B-51032E86C4D4}", + "details": { + "name": "tuple&" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "Get1", + "context": "{3750867E-BD2D-52A2-B93B-51032E86C4D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get1" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get1 is invoked" + }, + "details": { + "name": "Get1" + }, + "params": [ + { + "typeid": "{3750867E-BD2D-52A2-B93B-51032E86C4D4}", + "details": { + "name": "tuple&" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "Get0", + "context": "{3750867E-BD2D-52A2-B93B-51032E86C4D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get0" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get0 is invoked" + }, + "details": { + "name": "Get0" + }, + "params": [ + { + "typeid": "{3750867E-BD2D-52A2-B93B-51032E86C4D4}", + "details": { + "name": "tuple&" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + } + ] + }, + { + "key": "{C9789111-6A18-4C6E-81A7-87D057D59D2C}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "EntityEntity_VM" + }, + "methods": [ + { + "key": "ToString", + "context": "{C9789111-6A18-4C6E-81A7-87D057D59D2C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToString" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToString is invoked" + }, + "details": { + "name": "ToString" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "IsValid", + "context": "{C9789111-6A18-4C6E-81A7-87D057D59D2C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsValid" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsValid is invoked" + }, + "details": { + "name": "IsValid" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetEntityForward", + "context": "{C9789111-6A18-4C6E-81A7-87D057D59D2C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEntityForward" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEntityForward is invoked" + }, + "details": { + "name": "GetEntityForward" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "IsActive", + "context": "{C9789111-6A18-4C6E-81A7-87D057D59D2C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsActive" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsActive is invoked" + }, + "details": { + "name": "IsActive" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetEntityRight", + "context": "{C9789111-6A18-4C6E-81A7-87D057D59D2C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEntityRight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEntityRight is invoked" + }, + "details": { + "name": "GetEntityRight" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetEntityUp", + "context": "{C9789111-6A18-4C6E-81A7-87D057D59D2C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetEntityUp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetEntityUp is invoked" + }, + "details": { + "name": "GetEntityUp" + }, + "params": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + } + ] + }, + { + "key": "{CC6E9A58-8CB0-540D-A06D-4337A8C4FE91}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{CC6E9A58-8CB0-540D-A06D-4337A8C4FE91}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{CC6E9A58-8CB0-540D-A06D-4337A8C4FE91}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{CC6E9A58-8CB0-540D-A06D-4337A8C4FE91}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{CC6E9A58-8CB0-540D-A06D-4337A8C4FE91}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{CC6E9A58-8CB0-540D-A06D-4337A8C4FE91}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{CC6E9A58-8CB0-540D-A06D-4337A8C4FE91}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{CC6E9A58-8CB0-540D-A06D-4337A8C4FE91}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{CC6E9A58-8CB0-540D-A06D-4337A8C4FE91}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{CC6E9A58-8CB0-540D-A06D-4337A8C4FE91}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{CC6E9A58-8CB0-540D-A06D-4337A8C4FE91}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{CC6E9A58-8CB0-540D-A06D-4337A8C4FE91}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{2F861214-1C7E-50A0-9CDF-0E6DFCE9C00C}", + "details": { + "name": "Iterator_VM, allocator>, Quaternion, AZStd::hash", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + }, + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ], + "results": [ + { + "typeid": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{F395BF38-F0A1-5058-95D1-7F73871EFE4B}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{3E047B85-9AA0-5540-9744-373DBD4AD4CA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{AE6BDE8F-93C9-51F8-9219-CF8C135AD729}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A2ED5341-A86D-5564-99AF-8BCDED62C751}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{B83ACCD0-46E7-50E2-951D-9654B8606BA4}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{EB781DCB-CD92-51EF-B490-3628FE48E880}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{6ACECB77-D489-52CF-8473-9116466ABC59}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Event, allocator> >" + }, + "methods": [ + { + "key": "HasHandlerConnected", + "context": "{6ACECB77-D489-52CF-8473-9116466ABC59}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke HasHandlerConnected" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after HasHandlerConnected is invoked" + }, + "details": { + "name": "HasHandlerConnected" + }, + "params": [ + { + "typeid": "{6ACECB77-D489-52CF-8473-9116466ABC59}", + "details": { + "name": "Event" + }, + "methods": [ + { + "key": "has_value", + "context": "{858A22B8-1B5E-5016-BF33-B2469DD9CAD3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke has_value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after has_value is invoked" + }, + "details": { + "name": "has_value" + }, + "params": [ + { + "typeid": "{858A22B8-1B5E-5016-BF33-B2469DD9CAD3}", + "details": { + "name": "AZStd::optional" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "__bool__", + "context": "{858A22B8-1B5E-5016-BF33-B2469DD9CAD3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke __bool__" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after __bool__ is invoked" + }, + "details": { + "name": "__bool__" + }, + "params": [ + { + "typeid": "{858A22B8-1B5E-5016-BF33-B2469DD9CAD3}", + "details": { + "name": "AZStd::optional" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "value", + "context": "{858A22B8-1B5E-5016-BF33-B2469DD9CAD3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after value is invoked" + }, + "details": { + "name": "value" + }, + "params": [ + { + "typeid": "{858A22B8-1B5E-5016-BF33-B2469DD9CAD3}", + "details": { + "name": "AZStd::optional" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "value_or", + "context": "{858A22B8-1B5E-5016-BF33-B2469DD9CAD3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke value_or" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after value_or is invoked" + }, + "details": { + "name": "value_or" + }, + "params": [ + { + "typeid": "{858A22B8-1B5E-5016-BF33-B2469DD9CAD3}", + "details": { + "name": "AZStd::optional" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + } + ] + }, + { + "key": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{BC94A0EC-1BB3-53FD-B546-BF5626FF225A}", + "details": { + "name": "Iterator_VM, allocator>, AZStd::hash, AZStd" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{C985C516-C64B-5821-9A82-06DBAE6734CA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ], + "results": [ + { + "typeid": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{5DA33F96-B4DD-56CC-9D0C-8A71119ECED5}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6BBF646F-D689-5D24-9596-05ED6A785D2F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "HasKey", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "Back", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "pop_back", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "Empty", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ], + "results": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "clear", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "GetSize", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ], + "results": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "Reserve", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{A16BD88A-8457-5717-B84E-977B1D176AE2}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{64C7527E-8367-5463-BD24-E790BEF88A78}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{834DC049-5EC3-5C29-B621-5F0046864DC4}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Asset" + }, + "methods": [ + { + "key": "IsLoading", + "context": "{834DC049-5EC3-5C29-B621-5F0046864DC4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsLoading" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsLoading is invoked" + }, + "details": { + "name": "IsLoading" + }, + "params": [ + { + "typeid": "{834DC049-5EC3-5C29-B621-5F0046864DC4}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetType", + "context": "{834DC049-5EC3-5C29-B621-5F0046864DC4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetType is invoked" + }, + "details": { + "name": "GetType" + }, + "params": [ + { + "typeid": "{834DC049-5EC3-5C29-B621-5F0046864DC4}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + } + ] + }, + { + "key": "IsError", + "context": "{834DC049-5EC3-5C29-B621-5F0046864DC4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsError" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsError is invoked" + }, + "details": { + "name": "IsError" + }, + "params": [ + { + "typeid": "{834DC049-5EC3-5C29-B621-5F0046864DC4}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetHint", + "context": "{834DC049-5EC3-5C29-B621-5F0046864DC4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetHint" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetHint is invoked" + }, + "details": { + "name": "GetHint" + }, + "params": [ + { + "typeid": "{834DC049-5EC3-5C29-B621-5F0046864DC4}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetData", + "context": "{834DC049-5EC3-5C29-B621-5F0046864DC4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetData" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetData is invoked" + }, + "details": { + "name": "GetData" + }, + "params": [ + { + "typeid": "{834DC049-5EC3-5C29-B621-5F0046864DC4}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{AF3F7D32-1536-422A-89F3-A11E1F5B5A9C}", + "details": { + "name": "AssetData" + } + } + ] + }, + { + "key": "IsReady", + "context": "{834DC049-5EC3-5C29-B621-5F0046864DC4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsReady" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsReady is invoked" + }, + "details": { + "name": "IsReady" + }, + "params": [ + { + "typeid": "{834DC049-5EC3-5C29-B621-5F0046864DC4}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetStatus", + "context": "{834DC049-5EC3-5C29-B621-5F0046864DC4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetStatus" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetStatus is invoked" + }, + "details": { + "name": "GetStatus" + }, + "params": [ + { + "typeid": "{834DC049-5EC3-5C29-B621-5F0046864DC4}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetId", + "context": "{834DC049-5EC3-5C29-B621-5F0046864DC4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetId is invoked" + }, + "details": { + "name": "GetId" + }, + "params": [ + { + "typeid": "{834DC049-5EC3-5C29-B621-5F0046864DC4}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + } + ] + }, + { + "key": "{B57176AF-63A1-5531-B77E-BD7337E66127}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Outcome" + }, + "methods": [ + { + "key": "GetError", + "context": "{B57176AF-63A1-5531-B77E-BD7337E66127}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetError" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetError is invoked" + }, + "details": { + "name": "GetError" + }, + "params": [ + { + "typeid": "{B57176AF-63A1-5531-B77E-BD7337E66127}", + "details": { + "name": "Outcome" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "IsSuccess", + "context": "{B57176AF-63A1-5531-B77E-BD7337E66127}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsSuccess" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsSuccess is invoked" + }, + "details": { + "name": "IsSuccess" + }, + "params": [ + { + "typeid": "{B57176AF-63A1-5531-B77E-BD7337E66127}", + "details": { + "name": "Outcome" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Success", + "context": "{B57176AF-63A1-5531-B77E-BD7337E66127}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Success" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Success is invoked" + }, + "details": { + "name": "Success" + }, + "params": [ + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "any" + } + } + ], + "results": [ + { + "typeid": "{B57176AF-63A1-5531-B77E-BD7337E66127}", + "details": { + "name": "Outcome, allocator>>" + } + } + ] + }, + { + "key": "GetValue", + "context": "{B57176AF-63A1-5531-B77E-BD7337E66127}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetValue" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetValue is invoked" + }, + "details": { + "name": "GetValue" + }, + "params": [ + { + "typeid": "{B57176AF-63A1-5531-B77E-BD7337E66127}", + "details": { + "name": "Outcome" + } + } + ], + "results": [ + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "any" + } + } + ] + }, + { + "key": "Failure", + "context": "{B57176AF-63A1-5531-B77E-BD7337E66127}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Failure" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Failure is invoked" + }, + "details": { + "name": "Failure" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{B57176AF-63A1-5531-B77E-BD7337E66127}", + "details": { + "name": "Outcome, allocator>>" + } + } + ] + } + ] + }, + { + "key": "{4C19E257-F929-524E-80E3-C910C5F3E2D9}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Event const CollisionEvent& >" + }, + "methods": [ + { + "key": "HasHandlerConnected", + "context": "{4C19E257-F929-524E-80E3-C910C5F3E2D9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke HasHandlerConnected" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after HasHandlerConnected is invoked" + }, + "details": { + "name": "HasHandlerConnected" + }, + "params": [ + { + "typeid": "{4C19E257-F929-524E-80E3-C910C5F3E2D9}", + "details": { + "name": "Event const CollisionEvent& >*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + }, + { + "key": "{BE75E564-1859-566D-821F-3343675C4977}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{BE75E564-1859-566D-821F-3343675C4977}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{BE75E564-1859-566D-821F-3343675C4977}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{BE75E564-1859-566D-821F-3343675C4977}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{BE75E564-1859-566D-821F-3343675C4977}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{BE75E564-1859-566D-821F-3343675C4977}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{BE75E564-1859-566D-821F-3343675C4977}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{BE75E564-1859-566D-821F-3343675C4977}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{BE75E564-1859-566D-821F-3343675C4977}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{BE75E564-1859-566D-821F-3343675C4977}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{BE75E564-1859-566D-821F-3343675C4977}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{BE75E564-1859-566D-821F-3343675C4977}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{2BBAF48D-E9B1-55D8-B3AE-395EDAAAE7FD}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{BE75E564-1859-566D-821F-3343675C4977}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{BE75E564-1859-566D-821F-3343675C4977}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{BE75E564-1859-566D-821F-3343675C4977}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{BE75E564-1859-566D-821F-3343675C4977}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{BE75E564-1859-566D-821F-3343675C4977}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{BE75E564-1859-566D-821F-3343675C4977}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{BE75E564-1859-566D-821F-3343675C4977}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{BE75E564-1859-566D-821F-3343675C4977}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{BE75E564-1859-566D-821F-3343675C4977}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{BE75E564-1859-566D-821F-3343675C4977}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{BE75E564-1859-566D-821F-3343675C4977}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{BE75E564-1859-566D-821F-3343675C4977}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{BE75E564-1859-566D-821F-3343675C4977}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{BE75E564-1859-566D-821F-3343675C4977}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{BE75E564-1859-566D-821F-3343675C4977}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{BE75E564-1859-566D-821F-3343675C4977}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{BE75E564-1859-566D-821F-3343675C4977}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{BE75E564-1859-566D-821F-3343675C4977}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{BE75E564-1859-566D-821F-3343675C4977}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{BE75E564-1859-566D-821F-3343675C4977}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{BE75E564-1859-566D-821F-3343675C4977}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{93942742-473F-5EE3-8420-D8F22C612221}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Tuple" + }, + "methods": [ + { + "key": "Get0", + "context": "{93942742-473F-5EE3-8420-D8F22C612221}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get0" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get0 is invoked" + }, + "details": { + "name": "Get0" + }, + "params": [ + { + "typeid": "{93942742-473F-5EE3-8420-D8F22C612221}", + "details": { + "name": "tuple&" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Get1", + "context": "{93942742-473F-5EE3-8420-D8F22C612221}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get1" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get1 is invoked" + }, + "details": { + "name": "Get1" + }, + "params": [ + { + "typeid": "{93942742-473F-5EE3-8420-D8F22C612221}", + "details": { + "name": "tuple&" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Get2", + "context": "{93942742-473F-5EE3-8420-D8F22C612221}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get2" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get2 is invoked" + }, + "details": { + "name": "Get2" + }, + "params": [ + { + "typeid": "{93942742-473F-5EE3-8420-D8F22C612221}", + "details": { + "name": "tuple&" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetSize", + "context": "{93942742-473F-5EE3-8420-D8F22C612221}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + } + ] + }, + { + "key": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{65F91C50-EE8C-51E5-9F3D-D01F083861E8}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{4A5210BF-A837-53B7-BB8C-1E74AF26D98B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{895CEA57-551B-5B79-A32B-B2DA0A912C87}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Asset" + }, + "methods": [ + { + "key": "IsLoading", + "context": "{895CEA57-551B-5B79-A32B-B2DA0A912C87}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsLoading" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsLoading is invoked" + }, + "details": { + "name": "IsLoading" + }, + "params": [ + { + "typeid": "{895CEA57-551B-5B79-A32B-B2DA0A912C87}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetType", + "context": "{895CEA57-551B-5B79-A32B-B2DA0A912C87}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetType is invoked" + }, + "details": { + "name": "GetType" + }, + "params": [ + { + "typeid": "{895CEA57-551B-5B79-A32B-B2DA0A912C87}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + } + ] + }, + { + "key": "IsError", + "context": "{895CEA57-551B-5B79-A32B-B2DA0A912C87}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsError" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsError is invoked" + }, + "details": { + "name": "IsError" + }, + "params": [ + { + "typeid": "{895CEA57-551B-5B79-A32B-B2DA0A912C87}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetHint", + "context": "{895CEA57-551B-5B79-A32B-B2DA0A912C87}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetHint" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetHint is invoked" + }, + "details": { + "name": "GetHint" + }, + "params": [ + { + "typeid": "{895CEA57-551B-5B79-A32B-B2DA0A912C87}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetData", + "context": "{895CEA57-551B-5B79-A32B-B2DA0A912C87}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetData" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetData is invoked" + }, + "details": { + "name": "GetData" + }, + "params": [ + { + "typeid": "{895CEA57-551B-5B79-A32B-B2DA0A912C87}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{AF3F7D32-1536-422A-89F3-A11E1F5B5A9C}", + "details": { + "name": "AssetData" + } + } + ] + }, + { + "key": "IsReady", + "context": "{895CEA57-551B-5B79-A32B-B2DA0A912C87}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsReady" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsReady is invoked" + }, + "details": { + "name": "IsReady" + }, + "params": [ + { + "typeid": "{895CEA57-551B-5B79-A32B-B2DA0A912C87}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetStatus", + "context": "{895CEA57-551B-5B79-A32B-B2DA0A912C87}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetStatus" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetStatus is invoked" + }, + "details": { + "name": "GetStatus" + }, + "params": [ + { + "typeid": "{895CEA57-551B-5B79-A32B-B2DA0A912C87}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetId", + "context": "{895CEA57-551B-5B79-A32B-B2DA0A912C87}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetId is invoked" + }, + "details": { + "name": "GetId" + }, + "params": [ + { + "typeid": "{895CEA57-551B-5B79-A32B-B2DA0A912C87}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + } + ] + }, + { + "key": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{73BC66AE-1DA0-5428-8294-F269A545005F}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9D83FE2E-68F4-5FDC-92AE-52C395FB5BFB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ], + "results": [ + { + "typeid": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A1DA2065-BCC0-5064-9695-C0A84818606E}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{FA8DBA11-EE9F-503E-99EA-C12757E5DCF4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{48C8234B-CE23-5CC4-9F37-00DB41BAB370}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{E9D62A8D-0092-5956-9DF4-22A087322834}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{A1F6761B-B5CA-59E6-89FF-EB0ABDF6BD68}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Asset" + }, + "methods": [ + { + "key": "IsLoading", + "context": "{A1F6761B-B5CA-59E6-89FF-EB0ABDF6BD68}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsLoading" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsLoading is invoked" + }, + "details": { + "name": "IsLoading" + }, + "params": [ + { + "typeid": "{A1F6761B-B5CA-59E6-89FF-EB0ABDF6BD68}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetType", + "context": "{A1F6761B-B5CA-59E6-89FF-EB0ABDF6BD68}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetType is invoked" + }, + "details": { + "name": "GetType" + }, + "params": [ + { + "typeid": "{A1F6761B-B5CA-59E6-89FF-EB0ABDF6BD68}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + } + ] + }, + { + "key": "IsError", + "context": "{A1F6761B-B5CA-59E6-89FF-EB0ABDF6BD68}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsError" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsError is invoked" + }, + "details": { + "name": "IsError" + }, + "params": [ + { + "typeid": "{A1F6761B-B5CA-59E6-89FF-EB0ABDF6BD68}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetHint", + "context": "{A1F6761B-B5CA-59E6-89FF-EB0ABDF6BD68}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetHint" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetHint is invoked" + }, + "details": { + "name": "GetHint" + }, + "params": [ + { + "typeid": "{A1F6761B-B5CA-59E6-89FF-EB0ABDF6BD68}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetData", + "context": "{A1F6761B-B5CA-59E6-89FF-EB0ABDF6BD68}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetData" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetData is invoked" + }, + "details": { + "name": "GetData" + }, + "params": [ + { + "typeid": "{A1F6761B-B5CA-59E6-89FF-EB0ABDF6BD68}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{AF3F7D32-1536-422A-89F3-A11E1F5B5A9C}", + "details": { + "name": "AssetData" + } + } + ] + }, + { + "key": "IsReady", + "context": "{A1F6761B-B5CA-59E6-89FF-EB0ABDF6BD68}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsReady" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsReady is invoked" + }, + "details": { + "name": "IsReady" + }, + "params": [ + { + "typeid": "{A1F6761B-B5CA-59E6-89FF-EB0ABDF6BD68}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetStatus", + "context": "{A1F6761B-B5CA-59E6-89FF-EB0ABDF6BD68}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetStatus" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetStatus is invoked" + }, + "details": { + "name": "GetStatus" + }, + "params": [ + { + "typeid": "{A1F6761B-B5CA-59E6-89FF-EB0ABDF6BD68}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetId", + "context": "{A1F6761B-B5CA-59E6-89FF-EB0ABDF6BD68}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetId is invoked" + }, + "details": { + "name": "GetId" + }, + "params": [ + { + "typeid": "{A1F6761B-B5CA-59E6-89FF-EB0ABDF6BD68}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + } + ] + }, + { + "key": "{7DCCB2BE-9664-504E-8585-ED46CD3FE97F}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{7DCCB2BE-9664-504E-8585-ED46CD3FE97F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{7DCCB2BE-9664-504E-8585-ED46CD3FE97F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{7DCCB2BE-9664-504E-8585-ED46CD3FE97F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{7DCCB2BE-9664-504E-8585-ED46CD3FE97F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{7DCCB2BE-9664-504E-8585-ED46CD3FE97F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{7DCCB2BE-9664-504E-8585-ED46CD3FE97F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{7DCCB2BE-9664-504E-8585-ED46CD3FE97F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{7DCCB2BE-9664-504E-8585-ED46CD3FE97F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{7DCCB2BE-9664-504E-8585-ED46CD3FE97F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{7DCCB2BE-9664-504E-8585-ED46CD3FE97F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{7DCCB2BE-9664-504E-8585-ED46CD3FE97F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{C920C1C1-DFC1-56A4-833A-CD1B260B17F8}", + "details": { + "name": "Iterator_VM, allocator>, AZStd::hash", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{12D220B0-B129-5D35-8C0A-CA014FB793C1}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{681B589F-DB42-5D86-B6FC-C4B62EBC5F19}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{1F0C2998-C47A-546C-A9A5-23155075A403}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{1F0C2998-C47A-546C-A9A5-23155075A403}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{1F0C2998-C47A-546C-A9A5-23155075A403}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{1F0C2998-C47A-546C-A9A5-23155075A403}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{1F0C2998-C47A-546C-A9A5-23155075A403}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ], + "results": [ + { + "typeid": "{1F0C2998-C47A-546C-A9A5-23155075A403}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{1F0C2998-C47A-546C-A9A5-23155075A403}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{1F0C2998-C47A-546C-A9A5-23155075A403}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{1F0C2998-C47A-546C-A9A5-23155075A403}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{1F0C2998-C47A-546C-A9A5-23155075A403}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{1F0C2998-C47A-546C-A9A5-23155075A403}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{1F0C2998-C47A-546C-A9A5-23155075A403}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{EA22509E-30D9-506B-BCE7-B832CF7DE5C0}", + "details": { + "name": "Iterator_VM, allocator>, Transform, AZStd::hash, allocator> bool >" + } + } + ] + }, + { + "key": "MultiplyAndAdd", + "context": "{76898795-2B30-4645-B6D4-67568ECC889F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyAndAdd" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyAndAdd is invoked" + }, + "details": { + "name": "MultiplyAndAdd" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "StringToNumber", + "context": "{76898795-2B30-4645-B6D4-67568ECC889F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke StringToNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after StringToNumber is invoked" + }, + "details": { + "name": "StringToNumber" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + } + ] + }, + { + "key": "{59E0EF87-352C-4CFB-A810-5B8752BDD1EF}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "MathTransform_VM" + }, + "methods": [ + { + "key": "RotationZDegrees", + "context": "{59E0EF87-352C-4CFB-A810-5B8752BDD1EF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RotationZDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RotationZDegrees is invoked" + }, + "details": { + "name": "RotationZDegrees" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "GetUp", + "context": "{59E0EF87-352C-4CFB-A810-5B8752BDD1EF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetUp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetUp is invoked" + }, + "details": { + "name": "GetUp" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetForward", + "context": "{59E0EF87-352C-4CFB-A810-5B8752BDD1EF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetForward" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetForward is invoked" + }, + "details": { + "name": "GetForward" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "IsClose", + "context": "{59E0EF87-352C-4CFB-A810-5B8752BDD1EF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsClose" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsClose is invoked" + }, + "details": { + "name": "IsClose" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "RotationXDegrees", + "context": "{59E0EF87-352C-4CFB-A810-5B8752BDD1EF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RotationXDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RotationXDegrees is invoked" + }, + "details": { + "name": "RotationXDegrees" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "FromTranslation", + "context": "{59E0EF87-352C-4CFB-A810-5B8752BDD1EF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromTranslation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromTranslation is invoked" + }, + "details": { + "name": "FromTranslation" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "IsFinite", + "context": "{59E0EF87-352C-4CFB-A810-5B8752BDD1EF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsFinite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsFinite is invoked" + }, + "details": { + "name": "IsFinite" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "MultiplyByUniformScale", + "context": "{59E0EF87-352C-4CFB-A810-5B8752BDD1EF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByUniformScale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByUniformScale is invoked" + }, + "details": { + "name": "MultiplyByUniformScale" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "MultiplyByTransform", + "context": "{59E0EF87-352C-4CFB-A810-5B8752BDD1EF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByTransform" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByTransform is invoked" + }, + "details": { + "name": "MultiplyByTransform" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "FromRotation", + "context": "{59E0EF87-352C-4CFB-A810-5B8752BDD1EF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromRotation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromRotation is invoked" + }, + "details": { + "name": "FromRotation" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "RotationYDegrees", + "context": "{59E0EF87-352C-4CFB-A810-5B8752BDD1EF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke RotationYDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after RotationYDegrees is invoked" + }, + "details": { + "name": "RotationYDegrees" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "FromRotationAndTranslation", + "context": "{59E0EF87-352C-4CFB-A810-5B8752BDD1EF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromRotationAndTranslation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromRotationAndTranslation is invoked" + }, + "details": { + "name": "FromRotationAndTranslation" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "MultiplyByVector3", + "context": "{59E0EF87-352C-4CFB-A810-5B8752BDD1EF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByVector3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByVector3 is invoked" + }, + "details": { + "name": "MultiplyByVector3" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "MultiplyByVector4", + "context": "{59E0EF87-352C-4CFB-A810-5B8752BDD1EF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByVector4" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByVector4 is invoked" + }, + "details": { + "name": "MultiplyByVector4" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "ToScale", + "context": "{59E0EF87-352C-4CFB-A810-5B8752BDD1EF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToScale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToScale is invoked" + }, + "details": { + "name": "ToScale" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "FromMatrix3x3", + "context": "{59E0EF87-352C-4CFB-A810-5B8752BDD1EF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromMatrix3x3" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromMatrix3x3 is invoked" + }, + "details": { + "name": "FromMatrix3x3" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "GetRight", + "context": "{59E0EF87-352C-4CFB-A810-5B8752BDD1EF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetRight" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetRight is invoked" + }, + "details": { + "name": "GetRight" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "IsOrthogonal", + "context": "{59E0EF87-352C-4CFB-A810-5B8752BDD1EF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsOrthogonal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsOrthogonal is invoked" + }, + "details": { + "name": "IsOrthogonal" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Orthogonalize", + "context": "{59E0EF87-352C-4CFB-A810-5B8752BDD1EF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Orthogonalize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Orthogonalize is invoked" + }, + "details": { + "name": "Orthogonalize" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "FromMatrix3x3AndTranslation", + "context": "{59E0EF87-352C-4CFB-A810-5B8752BDD1EF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromMatrix3x3AndTranslation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromMatrix3x3AndTranslation is invoked" + }, + "details": { + "name": "FromMatrix3x3AndTranslation" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "FromScale", + "context": "{59E0EF87-352C-4CFB-A810-5B8752BDD1EF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromScale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromScale is invoked" + }, + "details": { + "name": "FromScale" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "GetTranslation", + "context": "{59E0EF87-352C-4CFB-A810-5B8752BDD1EF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetTranslation" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetTranslation is invoked" + }, + "details": { + "name": "GetTranslation" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + } + ] + }, + { + "key": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + }, + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{CEE83D10-F7FF-53FB-93DD-017345D02DA1}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{F48E1596-F805-51F0-8BC4-E093F8517935}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "MathMatrix3x3_VM" + }, + "methods": [ + { + "key": "Transpose", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Transpose" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Transpose is invoked" + }, + "details": { + "name": "Transpose" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "Zero", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Zero" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Zero is invoked" + }, + "details": { + "name": "Zero" + }, + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "Subtract", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Subtract" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Subtract is invoked" + }, + "details": { + "name": "Subtract" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + }, + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "GetElement", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetElement" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetElement is invoked" + }, + "details": { + "name": "GetElement" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Invert", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Invert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Invert is invoked" + }, + "details": { + "name": "Invert" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "GetDiagonal", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetDiagonal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetDiagonal is invoked" + }, + "details": { + "name": "GetDiagonal" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetColumn", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetColumn" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetColumn is invoked" + }, + "details": { + "name": "GetColumn" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "MultiplyByVector", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByVector" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByVector is invoked" + }, + "details": { + "name": "MultiplyByVector" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Add", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Add" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Add is invoked" + }, + "details": { + "name": "Add" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + }, + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "IsFinite", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsFinite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsFinite is invoked" + }, + "details": { + "name": "IsFinite" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "DivideByNumber", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DivideByNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DivideByNumber is invoked" + }, + "details": { + "name": "DivideByNumber" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "ToAdjugate", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToAdjugate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToAdjugate is invoked" + }, + "details": { + "name": "ToAdjugate" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "IsClose", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsClose" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsClose is invoked" + }, + "details": { + "name": "IsClose" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + }, + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "MultiplyByMatrix", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByMatrix" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByMatrix is invoked" + }, + "details": { + "name": "MultiplyByMatrix" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + }, + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "IsOrthogonal", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsOrthogonal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsOrthogonal is invoked" + }, + "details": { + "name": "IsOrthogonal" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Orthogonalize", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Orthogonalize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Orthogonalize is invoked" + }, + "details": { + "name": "Orthogonalize" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "GetRows", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetRows" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetRows is invoked" + }, + "details": { + "name": "GetRows" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{93942742-473F-5EE3-8420-D8F22C612221}", + "details": { + "name": "tuple" + } + } + ] + }, + { + "key": "FromCrossProduct", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromCrossProduct" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromCrossProduct is invoked" + }, + "details": { + "name": "FromCrossProduct" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "GetColumns", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetColumns" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetColumns is invoked" + }, + "details": { + "name": "GetColumns" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{93942742-473F-5EE3-8420-D8F22C612221}", + "details": { + "name": "tuple" + } + } + ] + }, + { + "key": "FromTransform", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromTransform" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromTransform is invoked" + }, + "details": { + "name": "FromTransform" + }, + "params": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "FromScale", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromScale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromScale is invoked" + }, + "details": { + "name": "FromScale" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "ToScale", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToScale" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToScale is invoked" + }, + "details": { + "name": "ToScale" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "FromQuaternion", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromQuaternion" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromQuaternion is invoked" + }, + "details": { + "name": "FromQuaternion" + }, + "params": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "MultiplyByNumber", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByNumber is invoked" + }, + "details": { + "name": "MultiplyByNumber" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "GetRow", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetRow" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetRow is invoked" + }, + "details": { + "name": "GetRow" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "FromRotationYDegrees", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromRotationYDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromRotationYDegrees is invoked" + }, + "details": { + "name": "FromRotationYDegrees" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "FromRows", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromRows" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromRows is invoked" + }, + "details": { + "name": "FromRows" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "FromDiagonal", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromDiagonal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromDiagonal is invoked" + }, + "details": { + "name": "FromDiagonal" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "FromRotationZDegrees", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromRotationZDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromRotationZDegrees is invoked" + }, + "details": { + "name": "FromRotationZDegrees" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "FromMatrix4x4", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromMatrix4x4" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromMatrix4x4 is invoked" + }, + "details": { + "name": "FromMatrix4x4" + }, + "params": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "FromColumns", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromColumns" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromColumns is invoked" + }, + "details": { + "name": "FromColumns" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "FromRotationXDegrees", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromRotationXDegrees" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromRotationXDegrees is invoked" + }, + "details": { + "name": "FromRotationXDegrees" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "ToDeterminant", + "context": "{8C5F6959-C2C4-46D9-9FCD-4DC234E7732D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke ToDeterminant" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after ToDeterminant is invoked" + }, + "details": { + "name": "ToDeterminant" + }, + "params": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + } + ] + }, + { + "key": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ], + "results": [ + { + "typeid": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A583387A-F7F2-5C4B-87F1-1745876FDE24}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{B7141BE7-3946-56D1-8B31-CAD10C7C7D9C}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + }, + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{CF39F312-074C-5E55-8E3A-07998971A8D2}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{8EA123A3-72BE-5B00-A22E-BEF0AFB0B68B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{0E9C062F-96E1-58E9-BCE0-AB93C4C425A1}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Outcome" + }, + "methods": [ + { + "key": "GetError", + "context": "{0E9C062F-96E1-58E9-BCE0-AB93C4C425A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetError" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetError is invoked" + }, + "details": { + "name": "GetError" + }, + "params": [ + { + "typeid": "{0E9C062F-96E1-58E9-BCE0-AB93C4C425A1}", + "details": { + "name": "Outcome, allocator>>" + } + } + ] + }, + { + "key": "GetValue", + "context": "{0E9C062F-96E1-58E9-BCE0-AB93C4C425A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetValue" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetValue is invoked" + }, + "details": { + "name": "GetValue" + }, + "params": [ + { + "typeid": "{0E9C062F-96E1-58E9-BCE0-AB93C4C425A1}", + "details": { + "name": "Outcome, allocator>>" + } + } + ] + } + ] + }, + { + "key": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "HasKey", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "Back", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "pop_back", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "Empty", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ], + "results": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "clear", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "GetSize", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ], + "results": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ] + }, + { + "key": "Reserve", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{7FF36F26-644E-5051-84BB-AE54534C84D4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{5B12BB74-5E3F-5449-A4F3-6DA4F43354E6}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector&" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector*" + } + } + ], + "results": [ + { + "typeid": "{6054EDCB-4C04-4D96-BF26-704999FFB725}", + "details": { + "name": "SceneAPI::Events::ExportProduct&" + } + } + ] + }, + { + "key": "HasKey", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector&" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{6054EDCB-4C04-4D96-BF26-704999FFB725}", + "details": { + "name": "SceneAPI::Events::ExportProduct&" + } + } + ] + }, + { + "key": "Back", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector*" + } + } + ], + "results": [ + { + "typeid": "{6054EDCB-4C04-4D96-BF26-704999FFB725}", + "details": { + "name": "SceneAPI::Events::ExportProduct&" + } + } + ] + }, + { + "key": "pop_back", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector*" + } + } + ] + }, + { + "key": "size", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector&" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{6054EDCB-4C04-4D96-BF26-704999FFB725}", + "details": { + "name": "SceneAPI::Events::ExportProduct&" + } + } + ] + }, + { + "key": "Empty", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector&" + } + } + ] + }, + { + "key": "push_back", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{6054EDCB-4C04-4D96-BF26-704999FFB725}", + "details": { + "name": "const SceneAPI::Events::ExportProduct&" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector&" + } + }, + { + "typeid": "{6054EDCB-4C04-4D96-BF26-704999FFB725}", + "details": { + "name": "const SceneAPI::Events::ExportProduct&" + } + } + ], + "results": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector&" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{6054EDCB-4C04-4D96-BF26-704999FFB725}", + "details": { + "name": "SceneAPI::Events::ExportProduct&" + } + } + ] + }, + { + "key": "clear", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector*" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector&" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector&" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector&" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector&" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector*" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector&" + } + } + ], + "results": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector&" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector&" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{6054EDCB-4C04-4D96-BF26-704999FFB725}", + "details": { + "name": "SceneAPI::Events::ExportProduct&" + } + } + ] + }, + { + "key": "GetSize", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector&" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector&" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{6054EDCB-4C04-4D96-BF26-704999FFB725}", + "details": { + "name": "const SceneAPI::Events::ExportProduct&" + } + } + ], + "results": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector&" + } + } + ] + }, + { + "key": "PushBack", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{6054EDCB-4C04-4D96-BF26-704999FFB725}", + "details": { + "name": "const SceneAPI::Events::ExportProduct&" + } + } + ] + }, + { + "key": "Reserve", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{BFBA17B6-CDE2-5239-AEE0-58DF7FA14E3C}", + "details": { + "name": "AZStd::vector&" + } + } + ], + "results": [ + { + "typeid": "{CD91071F-DA6D-5F76-9507-CAE09DD9C338}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{EAFB8DE5-772D-50B0-ADB1-7E384E09108C}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{5AEF7C62-0529-57B0-859D-97C69E910729}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector&" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector*" + } + } + ], + "results": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + } + ] + }, + { + "key": "HasKey", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector&" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + } + ] + }, + { + "key": "Back", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector*" + } + } + ], + "results": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + } + ] + }, + { + "key": "pop_back", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector*" + } + } + ] + }, + { + "key": "size", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector&" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + } + ] + }, + { + "key": "Empty", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector&" + } + } + ] + }, + { + "key": "push_back", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector&" + } + }, + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + } + ], + "results": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector&" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + } + ] + }, + { + "key": "clear", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector*" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector&" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector&" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector&" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector&" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector*" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector&" + } + } + ], + "results": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector&" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector&" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + } + ] + }, + { + "key": "GetSize", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector&" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector&" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + } + ], + "results": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector&" + } + } + ] + }, + { + "key": "PushBack", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{EB603581-4654-4C17-B6DE-AE61E79EDA97}", + "details": { + "name": "AZ::Render::MaterialAssignmentId" + } + } + ] + }, + { + "key": "Reserve", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector*" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{7770AD3E-BABE-5F1C-B322-DE5DEAE94974}", + "details": { + "name": "AZStd::vector&" + } + } + ], + "results": [ + { + "typeid": "{F13815CB-DBCA-5DF2-B424-B99865E0B78D}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{B0D91084-263A-54B9-A4F3-7C5F4240E248}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "optional" + }, + "methods": [ + { + "key": "has_value", + "context": "{B0D91084-263A-54B9-A4F3-7C5F4240E248}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke has_value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after has_value is invoked" + }, + "details": { + "name": "has_value" + }, + "params": [ + { + "typeid": "{B0D91084-263A-54B9-A4F3-7C5F4240E248}", + "details": { + "name": "AZStd::optional" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "__bool__", + "context": "{B0D91084-263A-54B9-A4F3-7C5F4240E248}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke __bool__" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after __bool__ is invoked" + }, + "details": { + "name": "__bool__" + }, + "params": [ + { + "typeid": "{B0D91084-263A-54B9-A4F3-7C5F4240E248}", + "details": { + "name": "AZStd::optional" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "value", + "context": "{B0D91084-263A-54B9-A4F3-7C5F4240E248}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after value is invoked" + }, + "details": { + "name": "value" + }, + "params": [ + { + "typeid": "{B0D91084-263A-54B9-A4F3-7C5F4240E248}", + "details": { + "name": "AZStd::optional" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "value_or", + "context": "{B0D91084-263A-54B9-A4F3-7C5F4240E248}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke value_or" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after value_or is invoked" + }, + "details": { + "name": "value_or" + }, + "params": [ + { + "typeid": "{B0D91084-263A-54B9-A4F3-7C5F4240E248}", + "details": { + "name": "AZStd::optional" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + } + ] + }, + { + "key": "{3A98C3C6-91C4-5B49-8559-1C4C9EA9BCB8}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Tuple" + }, + "methods": [ + { + "key": "Get0", + "context": "{3A98C3C6-91C4-5B49-8559-1C4C9EA9BCB8}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get0" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get0 is invoked" + }, + "details": { + "name": "Get0" + }, + "params": [ + { + "typeid": "{3A98C3C6-91C4-5B49-8559-1C4C9EA9BCB8}", + "details": { + "name": "tuple&" + } + } + ], + "results": [ + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ] + }, + { + "key": "Get1", + "context": "{3A98C3C6-91C4-5B49-8559-1C4C9EA9BCB8}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get1" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get1 is invoked" + }, + "details": { + "name": "Get1" + }, + "params": [ + { + "typeid": "{3A98C3C6-91C4-5B49-8559-1C4C9EA9BCB8}", + "details": { + "name": "tuple&" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "GetSize", + "context": "{3A98C3C6-91C4-5B49-8559-1C4C9EA9BCB8}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + } + ] + }, + { + "key": "{AE62FC16-F824-5FD2-90BE-1ECF60E08A7F}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Outcome" + }, + "methods": [ + { + "key": "GetError", + "context": "{AE62FC16-F824-5FD2-90BE-1ECF60E08A7F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetError" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetError is invoked" + }, + "details": { + "name": "GetError" + }, + "params": [ + { + "typeid": "{AE62FC16-F824-5FD2-90BE-1ECF60E08A7F}", + "details": { + "name": "Outcome, allocator>>" + } + } + ] + }, + { + "key": "GetValue", + "context": "{AE62FC16-F824-5FD2-90BE-1ECF60E08A7F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetValue" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetValue is invoked" + }, + "details": { + "name": "GetValue" + }, + "params": [ + { + "typeid": "{AE62FC16-F824-5FD2-90BE-1ECF60E08A7F}", + "details": { + "name": "Outcome, allocator>>" + } + } + ] + } + ] + }, + { + "key": "{4B687295-2381-5741-AA96-F7441F09267B}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Outcome, String>" + }, + "methods": [ + { + "key": "GetError", + "context": "{4B687295-2381-5741-AA96-F7441F09267B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetError" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetError is invoked" + }, + "details": { + "name": "GetError" + }, + "params": [ + { + "typeid": "{4B687295-2381-5741-AA96-F7441F09267B}", + "details": { + "name": "Outcome, AZStd:" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "IsSuccess", + "context": "{4B687295-2381-5741-AA96-F7441F09267B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsSuccess" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsSuccess is invoked" + }, + "details": { + "name": "IsSuccess" + }, + "params": [ + { + "typeid": "{4B687295-2381-5741-AA96-F7441F09267B}", + "details": { + "name": "Outcome, AZStd:" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Success", + "context": "{4B687295-2381-5741-AA96-F7441F09267B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Success" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Success is invoked" + }, + "details": { + "name": "Success" + }, + "params": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{4B687295-2381-5741-AA96-F7441F09267B}", + "details": { + "name": "Outcome, AZStd::basic_string, allocator>>" + } + } + ] + }, + { + "key": "GetValue", + "context": "{4B687295-2381-5741-AA96-F7441F09267B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetValue" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetValue is invoked" + }, + "details": { + "name": "GetValue" + }, + "params": [ + { + "typeid": "{4B687295-2381-5741-AA96-F7441F09267B}", + "details": { + "name": "Outcome, AZStd:" + } + } + ], + "results": [ + { + "typeid": "{43147344-44F8-597D-9F8C-B97DFC20C337}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Failure", + "context": "{4B687295-2381-5741-AA96-F7441F09267B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Failure" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Failure is invoked" + }, + "details": { + "name": "Failure" + }, + "params": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{4B687295-2381-5741-AA96-F7441F09267B}", + "details": { + "name": "Outcome, AZStd::basic_string, allocator>>" + } + } + ] + } + ] + }, + { + "key": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{EBF35E25-DA5E-5E26-81D3-69A0F2D57C44}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{BCE9535C-B250-56FE-97DF-36D4E06C6172}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + }, + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ], + "results": [ + { + "typeid": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{EFDC4015-9AB5-5E3E-8976-D75019A8E385}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A54C2B36-D5B8-46A1-A529-4EBDBD2450E7}", + "details": { + "name": "Aabb" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{401CAC93-74F8-5025-81EF-63F124BC87AF}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "HasKey", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "Back", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "pop_back", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "Empty", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "clear", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "GetSize", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "Reserve", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{16DCF0FE-97AD-54FE-8796-74CE2156240B}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{8F6B8AB1-3007-5606-A92E-7B22B2A25F55}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "HasKey", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "Back", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "pop_back", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "Empty", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "clear", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "GetSize", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "Reserve", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{046E08E1-D526-50F6-8EB8-5119B62F083F}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "HasKey", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "Back", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "pop_back", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "Empty", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "clear", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "GetSize", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "Reserve", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{5CBE5640-DF5C-5A49-9195-D790881A0747}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{9848C445-2C04-5750-8E19-8C973EB50980}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{60A9A069-9C3D-465A-B7AD-0D6CC803990A}", + "details": { + "name": "BehaviorComponentId" + } + } + ] + }, + { + "key": "HasKey", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{60A9A069-9C3D-465A-B7AD-0D6CC803990A}", + "details": { + "name": "BehaviorComponentId" + } + } + ] + }, + { + "key": "Back", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{60A9A069-9C3D-465A-B7AD-0D6CC803990A}", + "details": { + "name": "BehaviorComponentId" + } + } + ] + }, + { + "key": "pop_back", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{60A9A069-9C3D-465A-B7AD-0D6CC803990A}", + "details": { + "name": "BehaviorComponentId" + } + } + ] + }, + { + "key": "Empty", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{60A9A069-9C3D-465A-B7AD-0D6CC803990A}", + "details": { + "name": "BehaviorComponentId" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{60A9A069-9C3D-465A-B7AD-0D6CC803990A}", + "details": { + "name": "BehaviorComponentId" + } + } + ], + "results": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{60A9A069-9C3D-465A-B7AD-0D6CC803990A}", + "details": { + "name": "BehaviorComponentId" + } + } + ] + }, + { + "key": "clear", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{60A9A069-9C3D-465A-B7AD-0D6CC803990A}", + "details": { + "name": "BehaviorComponentId" + } + } + ] + }, + { + "key": "GetSize", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{60A9A069-9C3D-465A-B7AD-0D6CC803990A}", + "details": { + "name": "BehaviorComponentId" + } + } + ], + "results": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{60A9A069-9C3D-465A-B7AD-0D6CC803990A}", + "details": { + "name": "BehaviorComponentId" + } + } + ] + }, + { + "key": "Reserve", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{8293031B-ABC3-5CD2-A1CB-1DB6792ADD5C}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{B1D4472E-8121-5F97-A8E2-7B5C8826D4AB}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{EC800112-2225-5C10-8540-B7CD6E5BB276}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A9AF6811-A281-5484-9A1B-4D036F173054}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "HasKey", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "Back", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "pop_back", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "Empty", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ], + "results": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "clear", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "GetSize", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ], + "results": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", + "details": { + "name": "unsigned int" + } + } + ] + }, + { + "key": "Reserve", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{3349AACD-BE04-50BC-9478-528BF2ACFD55}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{2C13CD4A-D167-5D3F-AA1B-83C0B745C0C5}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{910FF3A3-EF9F-5E05-B979-B99C671D2D64}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{C6B5A66B-6C0C-5D91-9CEE-88A5AEE507DC}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{B042898F-3652-5A4A-9C49-518470A7E8EF}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{2B02AB33-C406-5E1C-9416-740FD3BD03A1}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{53C0CD3E-D0FC-5D90-9E9B-EF364D430B08}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Tuple" + }, + "methods": [ + { + "key": "Get0", + "context": "{53C0CD3E-D0FC-5D90-9E9B-EF364D430B08}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get0" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get0 is invoked" + }, + "details": { + "name": "Get0" + }, + "params": [ + { + "typeid": "{53C0CD3E-D0FC-5D90-9E9B-EF364D430B08}", + "details": { + "name": "AZStd::tuple" + } + } + ], + "results": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + }, + { + "key": "Get1", + "context": "{53C0CD3E-D0FC-5D90-9E9B-EF364D430B08}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get1" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get1 is invoked" + }, + "details": { + "name": "Get1" + }, + "params": [ + { + "typeid": "{53C0CD3E-D0FC-5D90-9E9B-EF364D430B08}", + "details": { + "name": "AZStd::tuple" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetSize", + "context": "{53C0CD3E-D0FC-5D90-9E9B-EF364D430B08}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + } + ] + }, + { + "key": "{F2C799DF-2CC1-4DD8-91DC-18C2D517BAB0}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "MathPlane_VM" + }, + "methods": [ + { + "key": "GetPlaneEquationCoefficients", + "context": "{F2C799DF-2CC1-4DD8-91DC-18C2D517BAB0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetPlaneEquationCoefficients" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetPlaneEquationCoefficients is invoked" + }, + "details": { + "name": "GetPlaneEquationCoefficients" + }, + "params": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ], + "results": [ + { + "typeid": "{7352CD6D-91DA-536F-BFCC-BC513FB48B2D}", + "details": { + "name": "tuple" + } + } + ] + }, + { + "key": "GetDistance", + "context": "{F2C799DF-2CC1-4DD8-91DC-18C2D517BAB0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetDistance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetDistance is invoked" + }, + "details": { + "name": "GetDistance" + }, + "params": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Project", + "context": "{F2C799DF-2CC1-4DD8-91DC-18C2D517BAB0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Project" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Project is invoked" + }, + "details": { + "name": "Project" + }, + "params": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "FromNormalAndPoint", + "context": "{F2C799DF-2CC1-4DD8-91DC-18C2D517BAB0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromNormalAndPoint" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromNormalAndPoint is invoked" + }, + "details": { + "name": "FromNormalAndPoint" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ] + }, + { + "key": "IsFinite", + "context": "{F2C799DF-2CC1-4DD8-91DC-18C2D517BAB0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsFinite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsFinite is invoked" + }, + "details": { + "name": "IsFinite" + }, + "params": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Transform", + "context": "{F2C799DF-2CC1-4DD8-91DC-18C2D517BAB0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Transform" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Transform is invoked" + }, + "details": { + "name": "Transform" + }, + "params": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + }, + { + "typeid": "{5D9958E9-9F1E-4985-B532-FFFDE75FEDFD}", + "details": { + "name": "Transform" + } + } + ], + "results": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ] + }, + { + "key": "DistanceToPoint", + "context": "{F2C799DF-2CC1-4DD8-91DC-18C2D517BAB0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DistanceToPoint" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DistanceToPoint is invoked" + }, + "details": { + "name": "DistanceToPoint" + }, + "params": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "FromCoefficients", + "context": "{F2C799DF-2CC1-4DD8-91DC-18C2D517BAB0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromCoefficients" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromCoefficients is invoked" + }, + "details": { + "name": "FromCoefficients" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ] + }, + { + "key": "FromNormalAndDistance", + "context": "{F2C799DF-2CC1-4DD8-91DC-18C2D517BAB0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromNormalAndDistance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromNormalAndDistance is invoked" + }, + "details": { + "name": "FromNormalAndDistance" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ] + }, + { + "key": "GetNormal", + "context": "{F2C799DF-2CC1-4DD8-91DC-18C2D517BAB0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetNormal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetNormal is invoked" + }, + "details": { + "name": "GetNormal" + }, + "params": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + } + ] + }, + { + "key": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{E554EA1E-4896-5819-B5A0-970CC10B3660}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{24BA43F8-220C-589A-AA28-EAF5949C48F3}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{07B9E2F7-5408-49E9-904D-CC1A9C33230E}", + "details": { + "name": "AZ::RPI::ShaderOptionDescriptor" + } + } + ] + }, + { + "key": "HasKey", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{07B9E2F7-5408-49E9-904D-CC1A9C33230E}", + "details": { + "name": "AZ::RPI::ShaderOptionDescriptor" + } + } + ] + }, + { + "key": "Back", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{07B9E2F7-5408-49E9-904D-CC1A9C33230E}", + "details": { + "name": "AZ::RPI::ShaderOptionDescriptor" + } + } + ] + }, + { + "key": "pop_back", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{07B9E2F7-5408-49E9-904D-CC1A9C33230E}", + "details": { + "name": "AZ::RPI::ShaderOptionDescriptor" + } + } + ] + }, + { + "key": "Empty", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{07B9E2F7-5408-49E9-904D-CC1A9C33230E}", + "details": { + "name": "AZ::RPI::ShaderOptionDescriptor" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{07B9E2F7-5408-49E9-904D-CC1A9C33230E}", + "details": { + "name": "AZ::RPI::ShaderOptionDescriptor" + } + } + ], + "results": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{07B9E2F7-5408-49E9-904D-CC1A9C33230E}", + "details": { + "name": "AZ::RPI::ShaderOptionDescriptor" + } + } + ] + }, + { + "key": "clear", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{07B9E2F7-5408-49E9-904D-CC1A9C33230E}", + "details": { + "name": "AZ::RPI::ShaderOptionDescriptor" + } + } + ] + }, + { + "key": "GetSize", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{07B9E2F7-5408-49E9-904D-CC1A9C33230E}", + "details": { + "name": "AZ::RPI::ShaderOptionDescriptor" + } + } + ], + "results": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{07B9E2F7-5408-49E9-904D-CC1A9C33230E}", + "details": { + "name": "AZ::RPI::ShaderOptionDescriptor" + } + } + ] + }, + { + "key": "Reserve", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{13D041F6-75FA-5093-AD85-827A2CEA1646}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{FF1BF722-91DF-5420-9819-DD2DC7036625}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{3127F618-4C25-512D-97E2-888640B6303D}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{3127F618-4C25-512D-97E2-888640B6303D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{3127F618-4C25-512D-97E2-888640B6303D}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{3127F618-4C25-512D-97E2-888640B6303D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{3127F618-4C25-512D-97E2-888640B6303D}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{3127F618-4C25-512D-97E2-888640B6303D}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{3127F618-4C25-512D-97E2-888640B6303D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{3127F618-4C25-512D-97E2-888640B6303D}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{3127F618-4C25-512D-97E2-888640B6303D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{3127F618-4C25-512D-97E2-888640B6303D}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{3127F618-4C25-512D-97E2-888640B6303D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{3127F618-4C25-512D-97E2-888640B6303D}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{7781AFC8-827E-56AA-B4F1-16CAF308CADC}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{3127F618-4C25-512D-97E2-888640B6303D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{3127F618-4C25-512D-97E2-888640B6303D}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{3127F618-4C25-512D-97E2-888640B6303D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{3127F618-4C25-512D-97E2-888640B6303D}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{3127F618-4C25-512D-97E2-888640B6303D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{3127F618-4C25-512D-97E2-888640B6303D}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{3127F618-4C25-512D-97E2-888640B6303D}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{3127F618-4C25-512D-97E2-888640B6303D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{3127F618-4C25-512D-97E2-888640B6303D}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{3127F618-4C25-512D-97E2-888640B6303D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{3127F618-4C25-512D-97E2-888640B6303D}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{3127F618-4C25-512D-97E2-888640B6303D}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{3127F618-4C25-512D-97E2-888640B6303D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{3127F618-4C25-512D-97E2-888640B6303D}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{3127F618-4C25-512D-97E2-888640B6303D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{3127F618-4C25-512D-97E2-888640B6303D}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{3127F618-4C25-512D-97E2-888640B6303D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{3127F618-4C25-512D-97E2-888640B6303D}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{3127F618-4C25-512D-97E2-888640B6303D}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{3127F618-4C25-512D-97E2-888640B6303D}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{3127F618-4C25-512D-97E2-888640B6303D}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{EC31903C-334D-5991-99E1-6B9A94A31423}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{EC31903C-334D-5991-99E1-6B9A94A31423}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{EC31903C-334D-5991-99E1-6B9A94A31423}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{EC31903C-334D-5991-99E1-6B9A94A31423}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{EC31903C-334D-5991-99E1-6B9A94A31423}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ], + "results": [ + { + "typeid": "{EC31903C-334D-5991-99E1-6B9A94A31423}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{EC31903C-334D-5991-99E1-6B9A94A31423}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{EC31903C-334D-5991-99E1-6B9A94A31423}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{EC31903C-334D-5991-99E1-6B9A94A31423}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{EC31903C-334D-5991-99E1-6B9A94A31423}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{EC31903C-334D-5991-99E1-6B9A94A31423}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{EC31903C-334D-5991-99E1-6B9A94A31423}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{4D1248C7-A5C7-566F-8874-8649FB1A4379}", + "details": { + "name": "Iterator_VM, allocator>, Obb, AZStd::hash" + }, + "methods": [ + { + "key": "Get0", + "context": "{F31AA4C4-5A73-510B-BFD3-20ACE0D9CE67}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get0" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get0 is invoked" + }, + "details": { + "name": "Get0" + }, + "params": [ + { + "typeid": "{F31AA4C4-5A73-510B-BFD3-20ACE0D9CE67}", + "details": { + "name": "tuple&" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "Get1", + "context": "{F31AA4C4-5A73-510B-BFD3-20ACE0D9CE67}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Get1" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Get1 is invoked" + }, + "details": { + "name": "Get1" + }, + "params": [ + { + "typeid": "{F31AA4C4-5A73-510B-BFD3-20ACE0D9CE67}", + "details": { + "name": "tuple&" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "GetSize", + "context": "{F31AA4C4-5A73-510B-BFD3-20ACE0D9CE67}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + } + ] + }, + { + "key": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + }, + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ], + "results": [ + { + "typeid": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A87248F2-3B54-57C4-B054-A53C43A7DDEE}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{5FF88453-CF6E-5859-BF56-4F29CCBD73D4}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{E1CD6BDA-AB0E-5B5A-8DDA-AFEF7A94FD06}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{E1CD6BDA-AB0E-5B5A-8DDA-AFEF7A94FD06}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{E1CD6BDA-AB0E-5B5A-8DDA-AFEF7A94FD06}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{E1CD6BDA-AB0E-5B5A-8DDA-AFEF7A94FD06}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{E1CD6BDA-AB0E-5B5A-8DDA-AFEF7A94FD06}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{E1CD6BDA-AB0E-5B5A-8DDA-AFEF7A94FD06}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{E1CD6BDA-AB0E-5B5A-8DDA-AFEF7A94FD06}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{E1CD6BDA-AB0E-5B5A-8DDA-AFEF7A94FD06}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{E1CD6BDA-AB0E-5B5A-8DDA-AFEF7A94FD06}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{E1CD6BDA-AB0E-5B5A-8DDA-AFEF7A94FD06}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{E1CD6BDA-AB0E-5B5A-8DDA-AFEF7A94FD06}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{E1CD6BDA-AB0E-5B5A-8DDA-AFEF7A94FD06}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{9F3F2E3C-39C3-58E7-AFA1-D6D4782D1D65}", + "details": { + "name": "Iterator_VM, allocator>, Crc32, AZStd::hash" + }, + "methods": [ + { + "key": "IsLoading", + "context": "{C3B16018-28FB-5CFE-B871-25B6E2F0B110}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsLoading" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsLoading is invoked" + }, + "details": { + "name": "IsLoading" + }, + "params": [ + { + "typeid": "{C3B16018-28FB-5CFE-B871-25B6E2F0B110}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetType", + "context": "{C3B16018-28FB-5CFE-B871-25B6E2F0B110}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetType" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetType is invoked" + }, + "details": { + "name": "GetType" + }, + "params": [ + { + "typeid": "{C3B16018-28FB-5CFE-B871-25B6E2F0B110}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + } + ] + }, + { + "key": "IsError", + "context": "{C3B16018-28FB-5CFE-B871-25B6E2F0B110}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsError" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsError is invoked" + }, + "details": { + "name": "IsError" + }, + "params": [ + { + "typeid": "{C3B16018-28FB-5CFE-B871-25B6E2F0B110}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetHint", + "context": "{C3B16018-28FB-5CFE-B871-25B6E2F0B110}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetHint" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetHint is invoked" + }, + "details": { + "name": "GetHint" + }, + "params": [ + { + "typeid": "{C3B16018-28FB-5CFE-B871-25B6E2F0B110}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ] + }, + { + "key": "GetData", + "context": "{C3B16018-28FB-5CFE-B871-25B6E2F0B110}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetData" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetData is invoked" + }, + "details": { + "name": "GetData" + }, + "params": [ + { + "typeid": "{C3B16018-28FB-5CFE-B871-25B6E2F0B110}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{AF3F7D32-1536-422A-89F3-A11E1F5B5A9C}", + "details": { + "name": "AssetData" + } + } + ] + }, + { + "key": "IsReady", + "context": "{C3B16018-28FB-5CFE-B871-25B6E2F0B110}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsReady" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsReady is invoked" + }, + "details": { + "name": "IsReady" + }, + "params": [ + { + "typeid": "{C3B16018-28FB-5CFE-B871-25B6E2F0B110}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "GetStatus", + "context": "{C3B16018-28FB-5CFE-B871-25B6E2F0B110}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetStatus" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetStatus is invoked" + }, + "details": { + "name": "GetStatus" + }, + "params": [ + { + "typeid": "{C3B16018-28FB-5CFE-B871-25B6E2F0B110}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetId", + "context": "{C3B16018-28FB-5CFE-B871-25B6E2F0B110}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetId" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetId is invoked" + }, + "details": { + "name": "GetId" + }, + "params": [ + { + "typeid": "{C3B16018-28FB-5CFE-B871-25B6E2F0B110}", + "details": { + "name": "Asset" + } + } + ], + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + } + ] + }, + { + "key": "{D96F5CA8-E7CE-5786-8C89-9D779A263909}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{D96F5CA8-E7CE-5786-8C89-9D779A263909}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{D96F5CA8-E7CE-5786-8C89-9D779A263909}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{D96F5CA8-E7CE-5786-8C89-9D779A263909}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{D96F5CA8-E7CE-5786-8C89-9D779A263909}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{D96F5CA8-E7CE-5786-8C89-9D779A263909}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{D96F5CA8-E7CE-5786-8C89-9D779A263909}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{D96F5CA8-E7CE-5786-8C89-9D779A263909}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{D96F5CA8-E7CE-5786-8C89-9D779A263909}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{D96F5CA8-E7CE-5786-8C89-9D779A263909}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{D96F5CA8-E7CE-5786-8C89-9D779A263909}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{D96F5CA8-E7CE-5786-8C89-9D779A263909}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{455B89A5-92FE-56C9-A9EF-E282F4481DAA}", + "details": { + "name": "Iterator_VM, allocator>, Matrix3x3, AZStd::hash", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{05740A20-4CB4-59B1-A6D1-65785C0E8758}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9EB5F5B2-ED76-5142-A631-4FF058C1B1F9}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "MathVector3_VM" + }, + "methods": [ + { + "key": "Reciprocal", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reciprocal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reciprocal is invoked" + }, + "details": { + "name": "Reciprocal" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Subtract", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Subtract" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Subtract is invoked" + }, + "details": { + "name": "Subtract" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Project", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Project" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Project is invoked" + }, + "details": { + "name": "Project" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Normalize", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Normalize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Normalize is invoked" + }, + "details": { + "name": "Normalize" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Distance", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Distance" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Distance is invoked" + }, + "details": { + "name": "Distance" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "SetZ", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetZ" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetZ is invoked" + }, + "details": { + "name": "SetZ" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Max", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Max" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Max is invoked" + }, + "details": { + "name": "Max" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "GetElement", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetElement" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetElement is invoked" + }, + "details": { + "name": "GetElement" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Absolute", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Absolute" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Absolute is invoked" + }, + "details": { + "name": "Absolute" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "BuildTangentBasis", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BuildTangentBasis" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BuildTangentBasis is invoked" + }, + "details": { + "name": "BuildTangentBasis" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{1F24C807-BE2F-54C7-8F2B-498727236DF5}", + "details": { + "name": "tuple" + } + } + ] + }, + { + "key": "Clamp", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clamp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clamp is invoked" + }, + "details": { + "name": "Clamp" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "MultiplyByNumber", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByNumber is invoked" + }, + "details": { + "name": "MultiplyByNumber" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Slerp", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Slerp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Slerp is invoked" + }, + "details": { + "name": "Slerp" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "IsZero", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsZero" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsZero is invoked" + }, + "details": { + "name": "IsZero" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "SetY", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetY" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetY is invoked" + }, + "details": { + "name": "SetY" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "IsClose", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsClose" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsClose is invoked" + }, + "details": { + "name": "IsClose" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Cross", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Cross" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Cross is invoked" + }, + "details": { + "name": "Cross" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "DirectionTo", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DirectionTo" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DirectionTo is invoked" + }, + "details": { + "name": "DirectionTo" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{CD6328B1-6CC4-54CE-97F4-9D91F5A242F4}", + "details": { + "name": "tuple" + } + } + ] + }, + { + "key": "MultiplyByVector", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke MultiplyByVector" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after MultiplyByVector is invoked" + }, + "details": { + "name": "MultiplyByVector" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Negate", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Negate" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Negate is invoked" + }, + "details": { + "name": "Negate" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Add", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Add" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Add is invoked" + }, + "details": { + "name": "Add" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "IsPerpendicular", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsPerpendicular" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsPerpendicular is invoked" + }, + "details": { + "name": "IsPerpendicular" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "IsFinite", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsFinite" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsFinite is invoked" + }, + "details": { + "name": "IsFinite" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "DivideByNumber", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DivideByNumber" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DivideByNumber is invoked" + }, + "details": { + "name": "DivideByNumber" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "IsNormalized", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke IsNormalized" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after IsNormalized is invoked" + }, + "details": { + "name": "IsNormalized" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "LengthSquared", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke LengthSquared" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after LengthSquared is invoked" + }, + "details": { + "name": "LengthSquared" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "FromValues", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke FromValues" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after FromValues is invoked" + }, + "details": { + "name": "FromValues" + }, + "params": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Dot", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Dot" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Dot is invoked" + }, + "details": { + "name": "Dot" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "SetX", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke SetX" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after SetX is invoked" + }, + "details": { + "name": "SetX" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "LengthReciprocal", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke LengthReciprocal" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after LengthReciprocal is invoked" + }, + "details": { + "name": "LengthReciprocal" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Min", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Min" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Min is invoked" + }, + "details": { + "name": "Min" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "DistanceSquared", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DistanceSquared" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DistanceSquared is invoked" + }, + "details": { + "name": "DistanceSquared" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "Length", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Length" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Length is invoked" + }, + "details": { + "name": "Length" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "DivideByVector", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke DivideByVector" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after DivideByVector is invoked" + }, + "details": { + "name": "DivideByVector" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + }, + { + "key": "Lerp", + "context": "{53EA7604-E3AE-4E88-BE0E-66CBC488A7DB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Lerp" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Lerp is invoked" + }, + "details": { + "name": "Lerp" + }, + "params": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{8379EB7D-01FA-4538-B64B-A6543B4BE73D}", + "details": { + "name": "Vector3" + } + } + ] + } + ] + }, + { + "key": "{4985DFB0-7CD9-5B28-980B-BA2C701BE3D6}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Event const Vector3& >" + }, + "methods": [ + { + "key": "HasHandlerConnected", + "context": "{4985DFB0-7CD9-5B28-980B-BA2C701BE3D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke HasHandlerConnected" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after HasHandlerConnected is invoked" + }, + "details": { + "name": "HasHandlerConnected" + }, + "params": [ + { + "typeid": "{4985DFB0-7CD9-5B28-980B-BA2C701BE3D6}", + "details": { + "name": "Event const Vector3& >*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + }, + { + "key": "{2F556390-49B3-5F20-8206-21D323D977E6}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{2F556390-49B3-5F20-8206-21D323D977E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{2F556390-49B3-5F20-8206-21D323D977E6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{2F556390-49B3-5F20-8206-21D323D977E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{2F556390-49B3-5F20-8206-21D323D977E6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{3D80F623-C85C-4741-90D0-E4E66164E6BF}", + "details": { + "name": "Vector2" + } + } + ], + "results": [ + { + "typeid": "{2F556390-49B3-5F20-8206-21D323D977E6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{2F556390-49B3-5F20-8206-21D323D977E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{2F556390-49B3-5F20-8206-21D323D977E6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{2F556390-49B3-5F20-8206-21D323D977E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{2F556390-49B3-5F20-8206-21D323D977E6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{2F556390-49B3-5F20-8206-21D323D977E6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{2F556390-49B3-5F20-8206-21D323D977E6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{4D2F842F-38F6-5488-8DA1-6E57C9BF9611}", + "details": { + "name": "Iterator_VM, allocator>, Vector2, AZStd::hash", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + }, + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ], + "results": [ + { + "typeid": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{9E546749-74A3-545B-80D8-33EF72AD7AE2}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{0CE9FA36-1E3A-4C06-9254-B7C73A732053}", + "details": { + "name": "Vector4" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{180562CD-DF5B-5AC3-B867-9FBFB3A2539A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{9F4210F0-9A8E-5536-A6FD-F3F55D854C0A}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{9F4210F0-9A8E-5536-A6FD-F3F55D854C0A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{9F4210F0-9A8E-5536-A6FD-F3F55D854C0A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{9F4210F0-9A8E-5536-A6FD-F3F55D854C0A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{9F4210F0-9A8E-5536-A6FD-F3F55D854C0A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{03AAAB3F-5C47-5A66-9EBC-D5FA4DB353C9}", + "details": { + "name": "AZStd::string" + } + }, + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "any" + } + } + ], + "results": [ + { + "typeid": "{9F4210F0-9A8E-5536-A6FD-F3F55D854C0A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{9F4210F0-9A8E-5536-A6FD-F3F55D854C0A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{9F4210F0-9A8E-5536-A6FD-F3F55D854C0A}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{9F4210F0-9A8E-5536-A6FD-F3F55D854C0A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{9F4210F0-9A8E-5536-A6FD-F3F55D854C0A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{9F4210F0-9A8E-5536-A6FD-F3F55D854C0A}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{9F4210F0-9A8E-5536-A6FD-F3F55D854C0A}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{1BE6A4D0-2299-539B-A07E-538C6D2749DB}", + "details": { + "name": "Iterator_VM, allocator>, any, AZStd::hash", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{37CCB023-4B5E-5C6E-AC3C-4BB5E5EEDFDD}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{0764BFDD-6E1D-5F12-B746-219C67028B25}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ], + "results": [ + { + "typeid": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{4E0F9C19-E98E-5009-A180-F54F78564C87}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{0D825FF8-6E54-5ADD-93B0-93496090CEFA}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "any" + } + } + ] + }, + { + "key": "HasKey", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "any" + } + } + ] + }, + { + "key": "Back", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "any" + } + } + ] + }, + { + "key": "pop_back", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "any" + } + } + ] + }, + { + "key": "Empty", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "any" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "any" + } + } + ], + "results": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "any" + } + } + ] + }, + { + "key": "clear", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "any" + } + } + ] + }, + { + "key": "GetSize", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "any" + } + } + ], + "results": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{03924488-C7F4-4D6D-948B-ABC2D1AE2FD3}", + "details": { + "name": "any" + } + } + ] + }, + { + "key": "Reserve", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{FA815A11-0F6B-5BB9-8C9F-71669EB6D4B0}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{B9B5B5B4-6801-533A-90D7-B747D42FFE50}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{2B7F6107-B177-5C17-9408-823396E6D8B8}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Intrusive", + "category": "Intrusive", + "tooltip": "A smart pointer which manages the life cycle of an object, and guarantees a single point of ownership for the specified memory." + }, + "methods": [ + { + "key": "get", + "context": "{2B7F6107-B177-5C17-9408-823396E6D8B8}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke get" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after get is invoked" + }, + "details": { + "name": "get" + }, + "params": [ + { + "typeid": "{2B7F6107-B177-5C17-9408-823396E6D8B8}", + "details": { + "name": "AZStd::intrusive_ptr*" + } + } + ], + "results": [ + { + "typeid": "{C30F5522-B381-4B38-BBAF-6E0B1885C8B9}", + "details": { + "name": "Model*" + } + } + ] + } + ] + }, + { + "key": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{0DA4809B-08A6-49DC-9024-F81645D97FAC}", + "details": { + "name": "A Script Event's method parameter", + "tooltip": "A parameter to a Script Event's event definition" + } + } + ] + }, + { + "key": "HasKey", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{0DA4809B-08A6-49DC-9024-F81645D97FAC}", + "details": { + "name": "A Script Event's method parameter", + "tooltip": "A parameter to a Script Event's event definition" + } + } + ] + }, + { + "key": "Back", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{0DA4809B-08A6-49DC-9024-F81645D97FAC}", + "details": { + "name": "A Script Event's method parameter", + "tooltip": "A parameter to a Script Event's event definition" + } + } + ] + }, + { + "key": "pop_back", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{0DA4809B-08A6-49DC-9024-F81645D97FAC}", + "details": { + "name": "A Script Event's method parameter", + "tooltip": "A parameter to a Script Event's event definition" + } + } + ] + }, + { + "key": "Empty", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{0DA4809B-08A6-49DC-9024-F81645D97FAC}", + "details": { + "name": "A Script Event's method parameter", + "tooltip": "A parameter to a Script Event's event definition" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{0DA4809B-08A6-49DC-9024-F81645D97FAC}", + "details": { + "name": "A Script Event's method parameter", + "tooltip": "A parameter to a Script Event's event definition" + } + } + ], + "results": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{0DA4809B-08A6-49DC-9024-F81645D97FAC}", + "details": { + "name": "A Script Event's method parameter", + "tooltip": "A parameter to a Script Event's event definition" + } + } + ] + }, + { + "key": "clear", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{0DA4809B-08A6-49DC-9024-F81645D97FAC}", + "details": { + "name": "A Script Event's method parameter", + "tooltip": "A parameter to a Script Event's event definition" + } + } + ] + }, + { + "key": "GetSize", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{0DA4809B-08A6-49DC-9024-F81645D97FAC}", + "details": { + "name": "A Script Event's method parameter", + "tooltip": "A parameter to a Script Event's event definition" + } + } + ], + "results": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{0DA4809B-08A6-49DC-9024-F81645D97FAC}", + "details": { + "name": "A Script Event's method parameter", + "tooltip": "A parameter to a Script Event's event definition" + } + } + ] + }, + { + "key": "Reserve", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{6ED13EA7-791B-57A8-A4F1-560B5F35B472}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{44F6AC46-CCBE-5FC0-BEEC-1401AD7B4502}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + }, + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ], + "results": [ + { + "typeid": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{379F2288-1C1D-55DE-99E5-4453234FDA64}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{B505B05D-57BF-5A45-9113-B3A2784E2CD7}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{157193C7-B673-4A2B-8B43-5681DCC3DEC3}", + "details": { + "name": "Matrix4x4" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9ABF5933-C8FC-53CD-A518-B6AF433CF496}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D35AE682-D78E-5D7C-9729-DE8A932A745E}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D9EF6EA6-B182-5A36-A7FF-E376FD0C05C7}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + }, + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ], + "results": [ + { + "typeid": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{4E4F7D81-68EA-5DCB-82F6-3314742F9B14}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{AF6D8DD5-0386-5E48-86B0-86131BC0D2D6}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "HasKey", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "Back", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "pop_back", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "Empty", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "clear", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "GetSize", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ], + "results": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{7894072A-9050-4F0F-901B-34B1A0D29417}", + "details": { + "name": "Color" + } + } + ] + }, + { + "key": "Reserve", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{24A1B3FF-51E3-5699-9ED7-49D835DE1DED}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{F0896DD2-703F-5888-ADAB-45C5AB03726F}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{20B7ADCD-9320-5889-B380-1D471F8E96F8}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6965E71B-A623-5D36-98D9-3758EF2E8045}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + }, + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ], + "results": [ + { + "typeid": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{E756CE52-B602-5073-8842-0C9C1B1FC299}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{4841CFF0-7A5C-519C-BD16-D3625E99605E}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{6383F1D3-BB27-4E6B-A49A-6409B2059EAA}", + "details": { + "name": "EntityId", + "tooltip": "Entity Unique Id" + } + } + ], + "results": [ + { + "typeid": "{73103120-3DD3-4873-BAB3-9713FA2804FB}", + "details": { + "name": "Quaternion" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{641B736D-7467-5446-9083-EC81DC8E6E5B}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{945E2425-9BFA-5DC4-915D-8822B4D2BD4C}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{12AE825D-565E-5717-A7A2-6C8AADABE08F}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{8FE8A00F-5FE8-54A1-A314-346843AD21B6}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "optional" + }, + "methods": [ + { + "key": "has_value", + "context": "{8FE8A00F-5FE8-54A1-A314-346843AD21B6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke has_value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after has_value is invoked" + }, + "details": { + "name": "has_value" + }, + "params": [ + { + "typeid": "{8FE8A00F-5FE8-54A1-A314-346843AD21B6}", + "details": { + "name": "AZStd::optional*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "__bool__", + "context": "{8FE8A00F-5FE8-54A1-A314-346843AD21B6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke __bool__" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after __bool__ is invoked" + }, + "details": { + "name": "__bool__" + }, + "params": [ + { + "typeid": "{8FE8A00F-5FE8-54A1-A314-346843AD21B6}", + "details": { + "name": "AZStd::optional*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "value", + "context": "{8FE8A00F-5FE8-54A1-A314-346843AD21B6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after value is invoked" + }, + "details": { + "name": "value" + }, + "params": [ + { + "typeid": "{8FE8A00F-5FE8-54A1-A314-346843AD21B6}", + "details": { + "name": "AZStd::optional*" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + }, + { + "key": "value_or", + "context": "{8FE8A00F-5FE8-54A1-A314-346843AD21B6}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke value_or" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after value_or is invoked" + }, + "details": { + "name": "value_or" + }, + "params": [ + { + "typeid": "{8FE8A00F-5FE8-54A1-A314-346843AD21B6}", + "details": { + "name": "AZStd::optional*" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ] + } + ] + }, + { + "key": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{581E4D22-2800-5F5C-BC36-00916AD8FA17}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{F31F64EA-E384-5536-ACD6-8F01849730FC}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{110C4B14-11A8-4E9D-8638-5051013A56AC}", + "details": { + "name": "double" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D03054C0-295C-5B7A-9997-5B2EE7B1B2B9}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{8E0A7AC1-C649-56B4-99CF-8BE08EEFC47B}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "optional" + }, + "methods": [ + { + "key": "has_value", + "context": "{8E0A7AC1-C649-56B4-99CF-8BE08EEFC47B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke has_value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after has_value is invoked" + }, + "details": { + "name": "has_value" + }, + "params": [ + { + "typeid": "{8E0A7AC1-C649-56B4-99CF-8BE08EEFC47B}", + "details": { + "name": "AZStd::optional*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "__bool__", + "context": "{8E0A7AC1-C649-56B4-99CF-8BE08EEFC47B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke __bool__" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after __bool__ is invoked" + }, + "details": { + "name": "__bool__" + }, + "params": [ + { + "typeid": "{8E0A7AC1-C649-56B4-99CF-8BE08EEFC47B}", + "details": { + "name": "AZStd::optional*" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "value", + "context": "{8E0A7AC1-C649-56B4-99CF-8BE08EEFC47B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after value is invoked" + }, + "details": { + "name": "value" + }, + "params": [ + { + "typeid": "{8E0A7AC1-C649-56B4-99CF-8BE08EEFC47B}", + "details": { + "name": "AZStd::optional*" + } + } + ], + "results": [ + { + "typeid": "{70D8A282-A1EA-462D-9D04-51EDE81FAC2F}", + "details": { + "name": "AZ::s64" + } + } + ] + }, + { + "key": "value_or", + "context": "{8E0A7AC1-C649-56B4-99CF-8BE08EEFC47B}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke value_or" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after value_or is invoked" + }, + "details": { + "name": "value_or" + }, + "params": [ + { + "typeid": "{8E0A7AC1-C649-56B4-99CF-8BE08EEFC47B}", + "details": { + "name": "AZStd::optional*" + } + }, + { + "typeid": "{70D8A282-A1EA-462D-9D04-51EDE81FAC2F}", + "details": { + "name": "AZ::s64" + } + } + ], + "results": [ + { + "typeid": "{70D8A282-A1EA-462D-9D04-51EDE81FAC2F}", + "details": { + "name": "AZ::s64" + } + } + ] + } + ] + }, + { + "key": "{0170062C-2E7E-5CEB-BAB8-F7663BEF7B3E}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "optional" + }, + "methods": [ + { + "key": "has_value", + "context": "{0170062C-2E7E-5CEB-BAB8-F7663BEF7B3E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke has_value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after has_value is invoked" + }, + "details": { + "name": "has_value" + }, + "params": [ + { + "typeid": "{0170062C-2E7E-5CEB-BAB8-F7663BEF7B3E}", + "details": { + "name": "AZStd::optional" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "__bool__", + "context": "{0170062C-2E7E-5CEB-BAB8-F7663BEF7B3E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke __bool__" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after __bool__ is invoked" + }, + "details": { + "name": "__bool__" + }, + "params": [ + { + "typeid": "{0170062C-2E7E-5CEB-BAB8-F7663BEF7B3E}", + "details": { + "name": "AZStd::optional" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "value", + "context": "{0170062C-2E7E-5CEB-BAB8-F7663BEF7B3E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke value" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after value is invoked" + }, + "details": { + "name": "value" + }, + "params": [ + { + "typeid": "{0170062C-2E7E-5CEB-BAB8-F7663BEF7B3E}", + "details": { + "name": "AZStd::optional" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "value_or", + "context": "{0170062C-2E7E-5CEB-BAB8-F7663BEF7B3E}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke value_or" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after value_or is invoked" + }, + "details": { + "name": "value_or" + }, + "params": [ + { + "typeid": "{0170062C-2E7E-5CEB-BAB8-F7663BEF7B3E}", + "details": { + "name": "AZStd::optional" + } + }, + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + } + ] + }, + { + "key": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Map", + "category": "Map", + "tooltip": "A collection of Key/Value pairs, where each Key value must be unique." + }, + "methods": [ + { + "key": "contains", + "context": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + }, + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ], + "results": [ + { + "typeid": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "Reserve", + "context": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "GetSize", + "context": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{12668852-2E13-5B48-9C0D-6BF6E8674D78}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{287CEE87-6FF3-52FC-9D32-38255E2C7FE9}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "Size", + "context": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Erase", + "context": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Clear", + "context": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + }, + { + "key": "At", + "context": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}", + "details": { + "name": "Crc32" + } + } + ], + "results": [ + { + "typeid": "{847DD984-9DBF-4789-8E25-E0334402E8AD}", + "details": { + "name": "Plane" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "details": { + "name": "AZStd::unordered_map" + } + }, + { + "typeid": "{9E069E13-E1B2-5178-9219-52C9F0BFC0AB}", + "details": { + "name": "AZStd::unordered_map" + } + } + ] + } + ] + }, + { + "key": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "HasKey", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "Back", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "pop_back", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "Empty", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "clear", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "GetSize", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ], + "results": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{15A4332F-7C3F-4A58-AC35-50E1CE53FB9C}", + "details": { + "name": "Matrix3x3" + } + } + ] + }, + { + "key": "Reserve", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{14E8FE40-1072-5691-9F23-E3600A9C4614}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{80735D54-8EFE-5E2C-88DF-6E67CF677132}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Set", + "category": "Set", + "tooltip": "A dynamically sized container, where each element is unique." + }, + "methods": [ + { + "key": "Size", + "context": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "GetKeys", + "context": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetKeys" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetKeys is invoked" + }, + "details": { + "name": "GetKeys" + }, + "params": [ + { + "typeid": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{877C4A33-39B5-51D7-948D-F97DB81372A1}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "contains", + "context": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke contains" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after contains is invoked" + }, + "details": { + "name": "contains" + }, + "params": [ + { + "typeid": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Insert", + "context": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "details": { + "name": "AZStd::unordered_set" + } + } + ] + }, + { + "key": "GetSize", + "context": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Reserve", + "context": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{E7C36C85-6DDA-5F7B-83D6-C8501974DF13}", + "details": { + "name": "Iterator_VM, AZStd::equal_to, allocator>>" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase", + "context": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase is invoked" + }, + "details": { + "name": "Erase" + }, + "params": [ + { + "typeid": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{652ED536-3402-439B-AEBE-4A5DBC554085}", + "details": { + "name": "AssetId" + } + } + ], + "results": [ + { + "typeid": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "details": { + "name": "AZStd::unordered_set" + } + } + ] + }, + { + "key": "Clear", + "context": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "details": { + "name": "AZStd::unordered_set" + } + } + ] + }, + { + "key": "BucketCount", + "context": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke BucketCount" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after BucketCount is invoked" + }, + "details": { + "name": "BucketCount" + }, + "params": [ + { + "typeid": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Empty", + "context": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "details": { + "name": "AZStd::unordered_set" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "details": { + "name": "AZStd::unordered_set" + } + }, + { + "typeid": "{DB1EB3E5-F953-53A7-B8F9-9121E6A77F85}", + "details": { + "name": "AZStd::unordered_set" + } + } + ] + } + ] + }, + { + "key": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ] + }, + { + "key": "HasKey", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ] + }, + { + "key": "Back", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ] + }, + { + "key": "pop_back", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ] + }, + { + "key": "Empty", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ], + "results": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ] + }, + { + "key": "clear", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ] + }, + { + "key": "GetSize", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ], + "results": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{004ABD25-CF14-4EB3-BD41-022C247C07FA}", + "details": { + "name": "Obb" + } + } + ] + }, + { + "key": "Reserve", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{8E8D109E-EB62-5F13-8C2C-1D857EEE4FB4}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{750C38DE-C1FA-5536-8447-1BF6F946DDDD}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + }, + { + "key": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "context": "OnDemandReflected", + "variant": "", + "details": { + "name": "Array", + "category": "Array", + "tooltip": "A dynamically sized container of elements." + }, + "methods": [ + { + "key": "Size", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Size is invoked" + }, + "details": { + "name": "Size" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Front", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Front" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Front is invoked" + }, + "details": { + "name": "Front" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + } + ] + }, + { + "key": "HasKey", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Has Key" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Has Key is invoked" + }, + "details": { + "name": "Has Key" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Resize", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Resize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Resize is invoked" + }, + "details": { + "name": "Resize" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "at", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke at" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after at is invoked" + }, + "details": { + "name": "at" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + } + ] + }, + { + "key": "Back", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Back is invoked" + }, + "details": { + "name": "Back" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + } + ] + }, + { + "key": "pop_back", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke pop_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after pop_back is invoked" + }, + "details": { + "name": "pop_back" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "size", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke size" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after size is invoked" + }, + "details": { + "name": "size" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "At", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke At" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after At is invoked" + }, + "details": { + "name": "At" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + } + ] + }, + { + "key": "Empty", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Empty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Empty is invoked" + }, + "details": { + "name": "Empty" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Swap", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Swap" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Swap is invoked" + }, + "details": { + "name": "Swap" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "push_back", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke push_back" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after push_back is invoked" + }, + "details": { + "name": "push_back" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + } + ] + }, + { + "key": "PushBack_VM", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack_VM is invoked" + }, + "details": { + "name": "PushBack_VM" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + } + ], + "results": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AtUnchecked", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AtUnchecked" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AtUnchecked is invoked" + }, + "details": { + "name": "AtUnchecked" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + } + ] + }, + { + "key": "clear", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after clear is invoked" + }, + "details": { + "name": "clear" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "NotEmpty", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke NotEmpty" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after NotEmpty is invoked" + }, + "details": { + "name": "NotEmpty" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Erase_VM", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Erase_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Erase_VM is invoked" + }, + "details": { + "name": "Erase_VM" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "EraseCheck_VM", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke EraseCheck_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after EraseCheck_VM is invoked" + }, + "details": { + "name": "EraseCheck_VM" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ], + "results": [ + { + "typeid": "{A0CA880C-AFE4-43CB-926C-59AC48496112}", + "details": { + "name": "bool" + } + } + ] + }, + { + "key": "Capacity", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Capacity" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Capacity is invoked" + }, + "details": { + "name": "Capacity" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Clear", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Clear" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Clear is invoked" + }, + "details": { + "name": "Clear" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "AssignAt", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke AssignAt" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after AssignAt is invoked" + }, + "details": { + "name": "AssignAt" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + } + ] + }, + { + "key": "GetSize", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke GetSize" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after GetSize is invoked" + }, + "details": { + "name": "GetSize" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{72039442-EB38-4D42-A1AD-CB68F7E0EEF6}", + "details": { + "name": "int" + } + } + ] + }, + { + "key": "Insert", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Insert" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Insert is invoked" + }, + "details": { + "name": "Insert" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + }, + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + } + ], + "results": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + } + ] + }, + { + "key": "PushBack", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke PushBack" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after PushBack is invoked" + }, + "details": { + "name": "PushBack" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{E152C105-A133-4D03-BBF8-3D4B2FBA3E2A}", + "details": { + "name": "AZ::Uuid" + } + } + ] + }, + { + "key": "Reserve", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Reserve" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Reserve is invoked" + }, + "details": { + "name": "Reserve" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + }, + { + "typeid": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", + "details": { + "name": "AZ::u64" + } + } + ] + }, + { + "key": "Iterate_VM", + "context": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "entry": { + "name": "In", + "tooltip": "When signaled, this will invoke Iterate_VM" + }, + "exit": { + "name": "Out", + "tooltip": "Signaled after Iterate_VM is invoked" + }, + "details": { + "name": "Iterate_VM" + }, + "params": [ + { + "typeid": "{3A9E52F9-1A46-5FC6-822A-249BBFB50C90}", + "details": { + "name": "AZStd::vector" + } + } + ], + "results": [ + { + "typeid": "{C796F74B-8496-5018-9303-F525A8B22E4F}", + "details": { + "name": "Iterator_VM>" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Gems/ScriptCanvas/Code/CMakeLists.txt b/Gems/ScriptCanvas/Code/CMakeLists.txt index c126d343ed..9bdacde4df 100644 --- a/Gems/ScriptCanvas/Code/CMakeLists.txt +++ b/Gems/ScriptCanvas/Code/CMakeLists.txt @@ -137,6 +137,7 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS) . Editor/Include Editor/Static/Include + Editor/Assets BUILD_DEPENDENCIES PRIVATE AZ::AzCore @@ -155,6 +156,7 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS) scriptcanvasgem_editor_files.cmake scriptcanvasgem_editor_asset_files.cmake scriptcanvasgem_editor_builder_files.cmake + scriptcanvasgem_editor_tools_files.cmake COMPILE_DEFINITIONS PUBLIC SCRIPTCANVAS_ERRORS_ENABLED @@ -165,6 +167,7 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS) PRIVATE . Editor + Tools Editor/Include ${SCRIPT_CANVAS_AUTOGEN_BUILD_DIR} BUILD_DEPENDENCIES diff --git a/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasAssetTracker.cpp b/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasAssetTracker.cpp index 6d9799ee7f..b24e91889e 100644 --- a/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasAssetTracker.cpp +++ b/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasAssetTracker.cpp @@ -252,6 +252,17 @@ namespace ScriptCanvasEditor m_assetsInUse.erase(assetId); } + void AssetTracker::RefreshAll() + { + for (const auto& asset : m_assetsInUse) + { + auto id = asset.second->GetScriptCanvasId(); + ScriptCanvasEditor::EditorGraphRequestBus::Event(id, &ScriptCanvasEditor::EditorGraphRequests::ClearGraphCanvasScene); + ScriptCanvasEditor::EditorGraphRequestBus::Event(id, &ScriptCanvasEditor::EditorGraphRequests::CreateGraphCanvasScene); + ScriptCanvasEditor::EditorGraphRequestBus::Event(id, &ScriptCanvasEditor::EditorGraphRequests::DisplayGraphCanvasScene); + } + } + void AssetTracker::CreateView(AZ::Data::AssetId assetId, QWidget* parent) { assetId = CheckAssetId(assetId); diff --git a/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasAssetTracker.h b/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasAssetTracker.h index 4850e669ff..78e85651e1 100644 --- a/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasAssetTracker.h +++ b/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasAssetTracker.h @@ -61,6 +61,7 @@ namespace ScriptCanvasEditor void CreateView(AZ::Data::AssetId assetId, QWidget* parent) override; void ClearView(AZ::Data::AssetId assetId) override; void UntrackAsset(AZ::Data::AssetId assetId) override; + void RefreshAll() override; // Getters diff --git a/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasAssetTrackerBus.h b/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasAssetTrackerBus.h index 990eeecac5..3fecb0aac9 100644 --- a/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasAssetTrackerBus.h +++ b/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasAssetTrackerBus.h @@ -79,6 +79,9 @@ namespace ScriptCanvasEditor //! Used to make sure assets that are unloaded also get removed from tracking virtual void UntrackAsset([[maybe_unused]] AZ::Data::AssetId assetId) {} + //! Recreates the view for all tracked assets + virtual void RefreshAll() {} + using AssetList = AZStd::vector; // Accessors diff --git a/Gems/ScriptCanvas/Code/Editor/Components/EditorGraph.cpp b/Gems/ScriptCanvas/Code/Editor/Components/EditorGraph.cpp index 78325e9a90..ec6e7d8f4c 100644 --- a/Gems/ScriptCanvas/Code/Editor/Components/EditorGraph.cpp +++ b/Gems/ScriptCanvas/Code/Editor/Components/EditorGraph.cpp @@ -1932,7 +1932,7 @@ namespace ScriptCanvasEditor } OnSaveDataDirtied(graphCanvasNodeId); - Nodes::CopySlotTranslationKeyedNamesToDatums(graphCanvasNodeId); + Nodes::UpdateSlotDatumLabels(graphCanvasNodeId); } m_wrappedNodeGroupings.clear(); @@ -1950,7 +1950,7 @@ namespace ScriptCanvasEditor for (AZ::EntityId graphCanvasNodeId : graphCanvasNodeIds) { - Nodes::CopySlotTranslationKeyedNamesToDatums(graphCanvasNodeId); + Nodes::UpdateSlotDatumLabels(graphCanvasNodeId); } GraphCanvas::ViewId viewId; diff --git a/Gems/ScriptCanvas/Code/Editor/GraphCanvas/Components/NodeDescriptors/EBusHandlerEventNodeDescriptorComponent.cpp b/Gems/ScriptCanvas/Code/Editor/GraphCanvas/Components/NodeDescriptors/EBusHandlerEventNodeDescriptorComponent.cpp index 82c764e2ef..29db0c52cc 100644 --- a/Gems/ScriptCanvas/Code/Editor/GraphCanvas/Components/NodeDescriptors/EBusHandlerEventNodeDescriptorComponent.cpp +++ b/Gems/ScriptCanvas/Code/Editor/GraphCanvas/Components/NodeDescriptors/EBusHandlerEventNodeDescriptorComponent.cpp @@ -148,8 +148,6 @@ namespace ScriptCanvasEditor AZ::Entity* entity = nullptr; AZ::ComponentApplicationBus::BroadcastResult(entity, &AZ::ComponentApplicationBus::Events::FindEntity, scriptCanvasId); - AZStd::string ebusContextName = TranslationHelper::GetEbusHandlerContext(m_busName); - if (entity) { ScriptCanvas::Nodes::Core::EBusEventHandler* eventHandler = AZ::EntityUtils::FindFirstDerivedComponent(entity); @@ -190,52 +188,63 @@ namespace ScriptCanvasEditor if (scriptCanvasSlot && scriptCanvasSlot->IsVisible()) { - AZ::EntityId slotId = Nodes::DisplayScriptCanvasSlot(GetEntityId(), (*scriptCanvasSlot)); + auto graphCanvasSlotId = Nodes::DisplayScriptCanvasSlot(GetEntityId(), (*scriptCanvasSlot)); - GraphCanvas::SlotRequestBus::Event(slotId, &GraphCanvas::SlotRequests::SetTranslationKeyedName, TranslationHelper::GetEBusHandlerOnEventTriggeredNameKey()); - GraphCanvas::SlotRequestBus::Event(slotId, &GraphCanvas::SlotRequests::SetTranslationKeyedTooltip, TranslationHelper::GetEBusHandlerOnEventTriggeredTooltipKey()); + GraphCanvas::TranslationKey key; + key << "EBusHandler" << eventHandler->GetEBusName() << "methods" << m_eventName; + if (scriptCanvasSlot->IsExecution() && scriptCanvasSlot->IsOutput()) + { + key << "exit"; + } + else + { + key << "details"; + } + + GraphCanvas::TranslationRequests::Details details; + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details); + GraphCanvas::SlotRequestBus::Event(graphCanvasSlotId, &GraphCanvas::SlotRequests::SetName, details.m_name); + GraphCanvas::SlotRequestBus::Event(graphCanvasSlotId, &GraphCanvas::SlotRequests::SetTooltip, details.m_tooltip); } // // inputCount and outputCount work because the order of the slots is maintained from the BehaviorContext, if this changes // in the future then we should consider storing the actual offset or key name at that time. // - int inputCount = 0; - int outputCount = 0; + int paramIndex = 0; + int outputIndex = 0; for (const auto& slotId : myEvent.m_parameterSlotIds) { scriptCanvasSlot = eventHandler->GetSlot(slotId); if (scriptCanvasSlot && scriptCanvasSlot->IsVisible()) { - AZ::EntityId graphCanvasSlotId = Nodes::DisplayScriptCanvasSlot(GetEntityId(), (*scriptCanvasSlot)); + auto graphCanvasSlotId = Nodes::DisplayScriptCanvasSlot(GetEntityId(), (*scriptCanvasSlot)); + int& index = (scriptCanvasSlot->IsData() && scriptCanvasSlot->IsOutput()) ? paramIndex : outputIndex; - TranslationItemType itemType = TranslationHelper::GetItemType(scriptCanvasSlot->GetDescriptor()); + GraphCanvas::TranslationRequests::Details details; - GraphCanvas::TranslationKeyedString slotNameKeyedString(scriptCanvasSlot->GetName()); - slotNameKeyedString.m_context = ebusContextName; + if (scriptCanvasSlot->IsData()) + { + GraphCanvas::TranslationKey key; + key = "EBusHandler"; + key << eventHandler->GetEBusName() << "methods" << m_eventName << "params" << index << "details"; - GraphCanvas::TranslationKeyedString slotTooltipKeyedString(scriptCanvasSlot->GetToolTip()); - slotTooltipKeyedString.m_context = ebusContextName; + details.m_name = scriptCanvasSlot->GetName(); - slotNameKeyedString.SetFallback(scriptCanvasSlot->GetName()); - slotTooltipKeyedString.SetFallback(scriptCanvasSlot->GetToolTip()); + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details); + GraphCanvas::SlotRequestBus::Event(graphCanvasSlotId, &GraphCanvas::SlotRequests::SetName, details.m_name); + GraphCanvas::SlotRequestBus::Event(graphCanvasSlotId, &GraphCanvas::SlotRequests::SetTooltip, details.m_tooltip); + } if (scriptCanvasSlot->GetDescriptor() == ScriptCanvas::SlotDescriptors::DataOut()) { - slotNameKeyedString.m_key = TranslationHelper::GetEBusHandlerSlotKey(m_busName, m_eventName, itemType, TranslationKeyId::Name, outputCount); - slotTooltipKeyedString.m_key = TranslationHelper::GetEBusHandlerSlotKey(m_busName, m_eventName, itemType, TranslationKeyId::Tooltip, outputCount); - ++outputCount; + ++outputIndex; } else { - slotNameKeyedString.m_key = TranslationHelper::GetEBusHandlerSlotKey(m_busName, m_eventName, itemType, TranslationKeyId::Name, inputCount); - slotTooltipKeyedString.m_key = TranslationHelper::GetEBusHandlerSlotKey(m_busName, m_eventName, itemType, TranslationKeyId::Tooltip, inputCount); - ++inputCount; + ++paramIndex; } - - GraphCanvas::SlotRequestBus::Event(graphCanvasSlotId, &GraphCanvas::SlotRequests::SetTranslationKeyedName, slotNameKeyedString); - GraphCanvas::SlotRequestBus::Event(graphCanvasSlotId, &GraphCanvas::SlotRequests::SetTranslationKeyedTooltip, slotTooltipKeyedString); } } @@ -245,18 +254,7 @@ namespace ScriptCanvasEditor if (scriptCanvasSlot && scriptCanvasSlot->IsVisible()) { - AZ::EntityId graphCanvasSlotId = Nodes::DisplayScriptCanvasSlot(GetEntityId(), (*scriptCanvasSlot)); - - TranslationItemType itemType = TranslationHelper::GetItemType(scriptCanvasSlot->GetDescriptor()); - - GraphCanvas::TranslationKeyedString slotNameKeyedString(scriptCanvasSlot->GetName(), ebusContextName); - slotNameKeyedString.m_key = slotNameKeyedString.m_key = TranslationHelper::GetKey(TranslationContextGroup::EbusHandler, m_busName, m_eventName, itemType, TranslationKeyId::Name); - - GraphCanvas::TranslationKeyedString slotTooltipKeyedString(TranslationHelper::GetSafeTypeName(scriptCanvasSlot->GetDataType()), ebusContextName); - slotTooltipKeyedString.m_key = TranslationHelper::GetKey(TranslationContextGroup::EbusHandler, m_busName, m_eventName, itemType, TranslationKeyId::Tooltip); - - GraphCanvas::SlotRequestBus::Event(graphCanvasSlotId, &GraphCanvas::SlotRequests::SetTranslationKeyedName, slotNameKeyedString); - GraphCanvas::SlotRequestBus::Event(graphCanvasSlotId, &GraphCanvas::SlotRequests::SetTranslationKeyedTooltip, slotTooltipKeyedString); + Nodes::DisplayScriptCanvasSlot(GetEntityId(), (*scriptCanvasSlot)); } } @@ -345,9 +343,6 @@ namespace ScriptCanvasEditor if (connectionType == GraphCanvas::ConnectionType::CT_Output) { - GraphCanvas::SlotRequestBus::Event(slotId, &GraphCanvas::SlotRequests::SetTranslationKeyedName, TranslationHelper::GetEBusHandlerOnEventTriggeredNameKey()); - GraphCanvas::SlotRequestBus::Event(slotId, &GraphCanvas::SlotRequests::SetTranslationKeyedTooltip, TranslationHelper::GetEBusHandlerOnEventTriggeredTooltipKey()); - break; } } diff --git a/Gems/ScriptCanvas/Code/Editor/GraphCanvas/Components/NodeDescriptors/EBusHandlerNodeDescriptorComponent.cpp b/Gems/ScriptCanvas/Code/Editor/GraphCanvas/Components/NodeDescriptors/EBusHandlerNodeDescriptorComponent.cpp index 20ee9272d4..9e3e5d2b8e 100644 --- a/Gems/ScriptCanvas/Code/Editor/GraphCanvas/Components/NodeDescriptors/EBusHandlerNodeDescriptorComponent.cpp +++ b/Gems/ScriptCanvas/Code/Editor/GraphCanvas/Components/NodeDescriptors/EBusHandlerNodeDescriptorComponent.cpp @@ -210,10 +210,10 @@ namespace ScriptCanvasEditor { if (m_eventTypeToId.find(eventId) == m_eventTypeToId.end()) { - AZStd::string eventName; + AZStd::string eventName; for (const HandlerEventConfiguration& testEventConfiguration : eventConfigurations) - { + { if (testEventConfiguration.m_eventId == eventId) { eventName = testEventConfiguration.m_eventName; @@ -540,8 +540,11 @@ namespace ScriptCanvasEditor if (slotType == GraphCanvas::SlotTypes::DataSlot) { - GraphCanvas::SlotRequestBus::Event(testSlotId, &GraphCanvas::SlotRequests::SetTranslationKeyedName, TranslationHelper::GetEBusHandlerBusIdNameKey()); - GraphCanvas::SlotRequestBus::Event(testSlotId, &GraphCanvas::SlotRequests::SetTranslationKeyedTooltip, TranslationHelper::GetEBusHandlerBusIdTooltipKey()); + GraphCanvas::TranslationKey key; + key << Translation::GlobalKeys::EBusHandlerIDKey << ".details"; + GraphCanvas::TranslationRequests::Details details; + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details); + GraphCanvas::SlotRequestBus::Event(testSlotId, &GraphCanvas::SlotRequests::SetDetails, details.m_name, details.m_tooltip); break; } } diff --git a/Gems/ScriptCanvas/Code/Editor/GraphCanvas/Components/NodeDescriptors/EBusSenderNodeDescriptorComponent.cpp b/Gems/ScriptCanvas/Code/Editor/GraphCanvas/Components/NodeDescriptors/EBusSenderNodeDescriptorComponent.cpp index 5872925b39..7876e44140 100644 --- a/Gems/ScriptCanvas/Code/Editor/GraphCanvas/Components/NodeDescriptors/EBusSenderNodeDescriptorComponent.cpp +++ b/Gems/ScriptCanvas/Code/Editor/GraphCanvas/Components/NodeDescriptors/EBusSenderNodeDescriptorComponent.cpp @@ -68,9 +68,6 @@ namespace ScriptCanvasEditor if (currentSlotId == slotId) { - GraphCanvas::SlotRequestBus::Event(graphCanvasId, &GraphCanvas::SlotRequests::SetTranslationKeyedName, TranslationHelper::GetEBusSenderBusIdNameKey()); - GraphCanvas::SlotRequestBus::Event(graphCanvasId, &GraphCanvas::SlotRequests::SetTranslationKeyedTooltip, TranslationHelper::GetEBusSenderBusIdTooltipKey()); - break; } } diff --git a/Gems/ScriptCanvas/Code/Editor/GraphCanvas/Components/NodeDescriptors/ScriptEventReceiverEventNodeDescriptorComponent.cpp b/Gems/ScriptCanvas/Code/Editor/GraphCanvas/Components/NodeDescriptors/ScriptEventReceiverEventNodeDescriptorComponent.cpp index 3e0a97254f..7881a9886b 100644 --- a/Gems/ScriptCanvas/Code/Editor/GraphCanvas/Components/NodeDescriptors/ScriptEventReceiverEventNodeDescriptorComponent.cpp +++ b/Gems/ScriptCanvas/Code/Editor/GraphCanvas/Components/NodeDescriptors/ScriptEventReceiverEventNodeDescriptorComponent.cpp @@ -142,8 +142,6 @@ namespace ScriptCanvasEditor m_ebusWrapper.m_graphCanvasId = wrappingNode; m_ebusWrapper.m_scriptCanvasId = scriptCanvasId; - AZStd::string ebusContextName = TranslationHelper::GetEbusHandlerContext(m_busName); - ScriptCanvas::Nodes::Core::ReceiveScriptEvent* eventHandler = AZ::EntityUtils::FindFirstDerivedComponent(scriptCanvasId); if (eventHandler) { @@ -179,49 +177,20 @@ namespace ScriptCanvasEditor if (scriptCanvasSlot && scriptCanvasSlot->IsVisible()) { - AZ::EntityId slotId = Nodes::DisplayScriptCanvasSlot(GetEntityId(), (*scriptCanvasSlot)); - - GraphCanvas::SlotRequestBus::Event(slotId, &GraphCanvas::SlotRequests::SetTranslationKeyedName, TranslationHelper::GetEBusHandlerOnEventTriggeredNameKey()); - GraphCanvas::SlotRequestBus::Event(slotId, &GraphCanvas::SlotRequests::SetTranslationKeyedTooltip, TranslationHelper::GetEBusHandlerOnEventTriggeredTooltipKey()); + Nodes::DisplayScriptCanvasSlot(GetEntityId(), (*scriptCanvasSlot)); } // // inputCount and outputCount work because the order of the slots is maintained from the BehaviorContext, if this changes // in the future then we should consider storing the actual offset or key name at that time. // - int inputCount = 0; - int outputCount = 0; for (const auto& slotId : myEvent.m_parameterSlotIds) { scriptCanvasSlot = eventHandler->GetSlot(slotId); if (scriptCanvasSlot && scriptCanvasSlot->IsVisible()) { - AZ::EntityId graphCanvasSlotId = Nodes::DisplayScriptCanvasSlot(GetEntityId(), (*scriptCanvasSlot)); - - TranslationItemType itemType = TranslationHelper::GetItemType(scriptCanvasSlot->GetDescriptor()); - - GraphCanvas::TranslationKeyedString slotNameKeyedString(scriptCanvasSlot->GetName()); - slotNameKeyedString.m_context = ebusContextName; - - GraphCanvas::TranslationKeyedString slotTooltipKeyedString(scriptCanvasSlot->GetToolTip()); - slotTooltipKeyedString.m_context = ebusContextName; - - if (scriptCanvasSlot->GetDescriptor() == ScriptCanvas::SlotDescriptors::DataOut()) - { - slotNameKeyedString.m_key = TranslationHelper::GetEBusHandlerSlotKey(m_busName, m_eventName, itemType, TranslationKeyId::Name, outputCount); - slotTooltipKeyedString.m_key = TranslationHelper::GetEBusHandlerSlotKey(m_busName, m_eventName, itemType, TranslationKeyId::Tooltip, outputCount); - ++outputCount; - } - else - { - slotNameKeyedString.m_key = TranslationHelper::GetEBusHandlerSlotKey(m_busName, m_eventName, itemType, TranslationKeyId::Name, inputCount); - slotTooltipKeyedString.m_key = TranslationHelper::GetEBusHandlerSlotKey(m_busName, m_eventName, itemType, TranslationKeyId::Tooltip, inputCount); - ++inputCount; - } - - GraphCanvas::SlotRequestBus::Event(graphCanvasSlotId, &GraphCanvas::SlotRequests::SetTranslationKeyedName, slotNameKeyedString); - GraphCanvas::SlotRequestBus::Event(graphCanvasSlotId, &GraphCanvas::SlotRequests::SetTranslationKeyedTooltip, slotTooltipKeyedString); + Nodes::DisplayScriptCanvasSlot(GetEntityId(), (*scriptCanvasSlot)); } } @@ -231,18 +200,7 @@ namespace ScriptCanvasEditor if (scriptCanvasSlot && scriptCanvasSlot->IsVisible()) { - AZ::EntityId graphCanvasSlotId = Nodes::DisplayScriptCanvasSlot(GetEntityId(), (*scriptCanvasSlot)); - - TranslationItemType itemType = TranslationHelper::GetItemType(scriptCanvasSlot->GetDescriptor()); - - GraphCanvas::TranslationKeyedString slotNameKeyedString(scriptCanvasSlot->GetName(), ebusContextName); - slotNameKeyedString.m_key = slotNameKeyedString.m_key = TranslationHelper::GetKey(TranslationContextGroup::EbusHandler, m_busName, m_eventName, itemType, TranslationKeyId::Name); - - GraphCanvas::TranslationKeyedString slotTooltipKeyedString(TranslationHelper::GetSafeTypeName(scriptCanvasSlot->GetDataType()), ebusContextName); - slotTooltipKeyedString.m_key = TranslationHelper::GetKey(TranslationContextGroup::EbusHandler, m_busName, m_eventName, itemType, TranslationKeyId::Tooltip); - - GraphCanvas::SlotRequestBus::Event(graphCanvasSlotId, &GraphCanvas::SlotRequests::SetTranslationKeyedName, slotNameKeyedString); - GraphCanvas::SlotRequestBus::Event(graphCanvasSlotId, &GraphCanvas::SlotRequests::SetTranslationKeyedTooltip, slotTooltipKeyedString); + Nodes::DisplayScriptCanvasSlot(GetEntityId(), (*scriptCanvasSlot)); } } @@ -367,9 +325,6 @@ namespace ScriptCanvasEditor if (connectionType == GraphCanvas::ConnectionType::CT_Output) { - GraphCanvas::SlotRequestBus::Event(slotId, &GraphCanvas::SlotRequests::SetTranslationKeyedName, TranslationHelper::GetEBusHandlerOnEventTriggeredNameKey()); - GraphCanvas::SlotRequestBus::Event(slotId, &GraphCanvas::SlotRequests::SetTranslationKeyedTooltip, TranslationHelper::GetEBusHandlerOnEventTriggeredTooltipKey()); - break; } } diff --git a/Gems/ScriptCanvas/Code/Editor/GraphCanvas/Components/NodeDescriptors/ScriptEventReceiverNodeDescriptorComponent.cpp b/Gems/ScriptCanvas/Code/Editor/GraphCanvas/Components/NodeDescriptors/ScriptEventReceiverNodeDescriptorComponent.cpp index dea7612b05..d8c31e3745 100644 --- a/Gems/ScriptCanvas/Code/Editor/GraphCanvas/Components/NodeDescriptors/ScriptEventReceiverNodeDescriptorComponent.cpp +++ b/Gems/ScriptCanvas/Code/Editor/GraphCanvas/Components/NodeDescriptors/ScriptEventReceiverNodeDescriptorComponent.cpp @@ -560,8 +560,11 @@ namespace ScriptCanvasEditor if (slotType == GraphCanvas::SlotTypes::DataSlot) { - GraphCanvas::SlotRequestBus::Event(testSlotId, &GraphCanvas::SlotRequests::SetTranslationKeyedName, TranslationHelper::GetEBusHandlerBusIdNameKey()); - GraphCanvas::SlotRequestBus::Event(testSlotId, &GraphCanvas::SlotRequests::SetTranslationKeyedTooltip, TranslationHelper::GetEBusHandlerBusIdTooltipKey()); + GraphCanvas::TranslationKey key; + key << Translation::GlobalKeys::EBusHandlerIDKey << "details"; + GraphCanvas::TranslationRequests::Details details; + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details); + GraphCanvas::SlotRequestBus::Event(testSlotId, &GraphCanvas::SlotRequests::SetDetails, details.m_name, details.m_tooltip); break; } } diff --git a/Gems/ScriptCanvas/Code/Editor/GraphCanvas/Components/NodeDescriptors/ScriptEventSenderNodeDescriptorComponent.cpp b/Gems/ScriptCanvas/Code/Editor/GraphCanvas/Components/NodeDescriptors/ScriptEventSenderNodeDescriptorComponent.cpp index 9bf18ec9ac..a213de4a9d 100644 --- a/Gems/ScriptCanvas/Code/Editor/GraphCanvas/Components/NodeDescriptors/ScriptEventSenderNodeDescriptorComponent.cpp +++ b/Gems/ScriptCanvas/Code/Editor/GraphCanvas/Components/NodeDescriptors/ScriptEventSenderNodeDescriptorComponent.cpp @@ -118,9 +118,6 @@ namespace ScriptCanvasEditor if (currentSlotId == slotId) { - GraphCanvas::SlotRequestBus::Event(graphCanvasId, &GraphCanvas::SlotRequests::SetTranslationKeyedName, TranslationHelper::GetEBusSenderBusIdNameKey()); - GraphCanvas::SlotRequestBus::Event(graphCanvasId, &GraphCanvas::SlotRequests::SetTranslationKeyedTooltip, TranslationHelper::GetEBusSenderBusIdTooltipKey()); - break; } } diff --git a/Gems/ScriptCanvas/Code/Editor/Nodes/NodeDisplayUtils.cpp b/Gems/ScriptCanvas/Code/Editor/Nodes/NodeDisplayUtils.cpp index 8d616f0a68..cba39afe81 100644 --- a/Gems/ScriptCanvas/Code/Editor/Nodes/NodeDisplayUtils.cpp +++ b/Gems/ScriptCanvas/Code/Editor/Nodes/NodeDisplayUtils.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -45,6 +46,8 @@ #include #include +#include + namespace ScriptCanvasEditor::Nodes::SlotDisplayHelper { AZ::EntityId DisplayPropertySlot(AZ::EntityId graphCanvasNodeId, const ScriptCanvas::VisualExtensionSlotConfiguration& propertyConfiguration); @@ -101,37 +104,56 @@ namespace ScriptCanvasEditor::Nodes *graphCanvasUserData = node->GetEntityId(); } - GraphCanvas::TranslationKeyedString nodeKeyedString(nodeConfiguration.m_titleFallback, nodeConfiguration.m_translationContext); - nodeKeyedString.m_key = TranslationHelper::GetKey(nodeConfiguration.m_translationGroup, nodeConfiguration.m_translationKeyContext, nodeConfiguration.m_translationKeyName, TranslationItemType::Node, TranslationKeyId::Name); + GraphCanvas::TranslationKey key; + key << "ScriptCanvas::Node" << azrtti_typeid(node).ToString() << "details"; - AZStd::string nodeName = nodeKeyedString.GetDisplayString(); - - int paramIndex = 0; - int outputIndex = 0; + GraphCanvas::TranslationRequests::Details details; + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details); // Create the GraphCanvas slots for (const auto& slot : node->GetSlots()) { + GraphCanvas::TranslationKey slotKey; + slotKey << "ScriptCanvas::Node" << azrtti_typeid(node).ToString() << "slots"; + if (slot.IsVisible()) { - AZ::EntityId graphCanvasSlotId = DisplayScriptCanvasSlot(graphCanvasEntity->GetId(), slot); - - GraphCanvas::TranslationKeyedString slotNameKeyedString(slot.GetName(), nodeKeyedString.m_context); - GraphCanvas::TranslationKeyedString slotTooltipKeyedString(slot.GetToolTip(), nodeKeyedString.m_context); - - TranslationItemType itemType = TranslationHelper::GetItemType(slot.GetDescriptor()); - - if (itemType == TranslationItemType::ParamDataSlot || itemType == TranslationItemType::ReturnDataSlot) + AZStd::string slotKeyStr; + if (slot.IsData()) { - int& index = (itemType == TranslationItemType::ParamDataSlot) ? paramIndex : outputIndex; - - slotNameKeyedString.m_key = TranslationHelper::GetKey(nodeConfiguration.m_translationGroup, nodeConfiguration.m_translationKeyContext, nodeConfiguration.m_translationKeyName, itemType, TranslationKeyId::Name, index); - slotTooltipKeyedString.m_key = TranslationHelper::GetKey(nodeConfiguration.m_translationGroup, nodeConfiguration.m_translationKeyContext, nodeConfiguration.m_translationKeyName, itemType, TranslationKeyId::Tooltip, index); - index++; + slotKeyStr.append("Data"); } - GraphCanvas::SlotRequestBus::Event(graphCanvasSlotId, &GraphCanvas::SlotRequests::SetTranslationKeyedName, slotNameKeyedString); - GraphCanvas::SlotRequestBus::Event(graphCanvasSlotId, &GraphCanvas::SlotRequests::SetTranslationKeyedTooltip, slotTooltipKeyedString); + if (slot.GetConnectionType() == ScriptCanvas::ConnectionType::Input) + { + slotKeyStr.append("Input_"); + } + else + { + slotKeyStr.append("Output_"); + } + + slotKeyStr.append(slot.GetName()); + + slotKey << slotKeyStr << "details"; + + GraphCanvas::TranslationRequests::Details slotDetails; + GraphCanvas::TranslationRequestBus::BroadcastResult(slotDetails, &GraphCanvas::TranslationRequests::GetDetails, slotKey, slotDetails); + + if (slotDetails.m_name.empty()) + { + slotDetails.m_name = slot.GetName(); + } + + if (slotDetails.m_tooltip.empty()) + { + slotDetails.m_tooltip = slot.GetToolTip(); + } + + AZ::EntityId graphCanvasSlotId = DisplayScriptCanvasSlot(graphCanvasEntity->GetId(), slot); + + GraphCanvas::SlotRequestBus::Event(graphCanvasSlotId, &GraphCanvas::SlotRequests::SetName, slotDetails.m_name); + GraphCanvas::SlotRequestBus::Event(graphCanvasSlotId, &GraphCanvas::SlotRequests::SetTooltip, slotDetails.m_tooltip); } } @@ -142,25 +164,25 @@ namespace ScriptCanvasEditor::Nodes SlotDisplayHelper::DisplayVisualExtensionSlot(graphCanvasEntity->GetId(), extensionConfiguration); } - GraphCanvas::TranslationKeyedString subtitleKeyedString(nodeConfiguration.m_subtitleFallback, nodeConfiguration.m_translationContext); - subtitleKeyedString.m_key = TranslationHelper::GetKey(nodeConfiguration.m_translationGroup, nodeConfiguration.m_translationKeyContext, nodeConfiguration.m_translationKeyName, TranslationItemType::Node, TranslationKeyId::Category); + graphCanvasEntity->SetName(AZStd::string::format("GC-Node(%s)", details.m_name.c_str())); - graphCanvasEntity->SetName(AZStd::string::format("GC-Node(%s)", nodeKeyedString.GetDisplayString().c_str())); + GraphCanvas::NodeTitleRequestBus::Event(graphCanvasEntity->GetId(), &GraphCanvas::NodeTitleRequests::SetTitle, details.m_name); + GraphCanvas::NodeTitleRequestBus::Event(graphCanvasEntity->GetId(), &GraphCanvas::NodeTitleRequests::SetSubTitle, details.m_category); - GraphCanvas::NodeTitleRequestBus::Event(graphCanvasEntity->GetId(), &GraphCanvas::NodeTitleRequests::SetTranslationKeyedTitle, nodeKeyedString); - GraphCanvas::NodeTitleRequestBus::Event(graphCanvasEntity->GetId(), &GraphCanvas::NodeTitleRequests::SetTranslationKeyedSubTitle, subtitleKeyedString); + // Add to the tooltip the C++ class for reference + if (!details.m_tooltip.empty()) + { + details.m_tooltip.append("\n"); + } + details.m_tooltip.append(AZStd::string::format("[C++] %s", node->GetNodeTypeName().c_str())); + + GraphCanvas::NodeRequestBus::Event(graphCanvasEntity->GetId(), &GraphCanvas::NodeRequests::SetTooltip, details.m_tooltip); if (!nodeConfiguration.m_titlePalette.empty()) { GraphCanvas::NodeTitleRequestBus::Event(graphCanvasEntity->GetId(), &GraphCanvas::NodeTitleRequests::SetPaletteOverride, nodeConfiguration.m_titlePalette); } - // Set the name - GraphCanvas::TranslationKeyedString tooltipKeyedString(nodeConfiguration.m_tooltipFallback, nodeConfiguration.m_translationContext); - tooltipKeyedString.m_key = TranslationHelper::GetKey(TranslationContextGroup::ClassMethod, nodeConfiguration.m_translationKeyContext, nodeConfiguration.m_translationKeyName, TranslationItemType::Node, TranslationKeyId::Tooltip); - - GraphCanvas::NodeRequestBus::Event(graphCanvasEntity->GetId(), &GraphCanvas::NodeRequests::SetTranslationKeyedTooltip, tooltipKeyedString); - EditorNodeNotificationBus::Event(node->GetEntityId(), &EditorNodeNotifications::OnGraphCanvasNodeDisplayed, graphCanvasEntity->GetId()); return graphCanvasEntity->GetId(); @@ -193,22 +215,6 @@ namespace ScriptCanvasEditor::Nodes if (classData) { - AZStd::string nodeContext = GetContextName(*classData); - nodeConfiguration.m_translationContext = TranslationHelper::GetUserDefinedContext(nodeContext); - - nodeConfiguration.m_titleFallback = (classData->m_editData && classData->m_editData->m_name) ? classData->m_editData->m_name : classData->m_name; - nodeConfiguration.m_tooltipFallback = (classData->m_editData && classData->m_editData->m_description) ? classData->m_editData->m_description : ""; - - GraphCanvas::TranslationKeyedString subtitleKeyedString(nodeContext, nodeConfiguration.m_translationContext); - subtitleKeyedString.m_key = TranslationHelper::GetUserDefinedNodeKey(nodeContext, nodeConfiguration.m_titleFallback, ScriptCanvasEditor::TranslationKeyId::Category); - - nodeConfiguration.m_subtitleFallback = subtitleKeyedString.GetDisplayString(); - - nodeConfiguration.m_translationKeyName = nodeConfiguration.m_titleFallback; - nodeConfiguration.m_translationKeyContext = nodeContext; - - nodeConfiguration.m_translationGroup = TranslationContextGroup::ClassMethod; - if (classData->m_editData) { const AZ::Edit::ElementData* elementData = classData->m_editData->FindElementData(AZ::Edit::ClassElements::EditorData); @@ -260,20 +266,19 @@ namespace ScriptCanvasEditor::Nodes graphCanvasEntity->CreateComponent(methodNode->GetEntityId()); graphCanvasEntity->CreateComponent(methodNode->GetEntityId()); - TranslationContextGroup contextGroup = TranslationContextGroup::Invalid; - + bool isAccessor = false; switch (methodNode->GetMethodType()) { case ScriptCanvas::MethodType::Event: graphCanvasEntity->CreateComponent(); - contextGroup = TranslationContextGroup::EbusSender; break; - case ScriptCanvas::MethodType::Member: case ScriptCanvas::MethodType::Getter: case ScriptCanvas::MethodType::Setter: case ScriptCanvas::MethodType::Free: + isAccessor = true; + case ScriptCanvas::MethodType::Member: graphCanvasEntity->CreateComponent(); - contextGroup = TranslationContextGroup::ClassMethod; + break; break; default: AZ_Error("ScriptCanvas", false, "Invalid method node type, node creation failed. This node needs to be deleted."); @@ -292,19 +297,72 @@ namespace ScriptCanvasEditor::Nodes *graphCanvasUserData = methodNode->GetEntityId(); } + const bool isEBusSender = (methodNode->GetMethodType() == ScriptCanvas::MethodType::Event); const AZStd::string& className = methodNode->GetMethodClassName(); - const AZStd::string& methodName = methodNode->GetName(); + AZStd::string methodName = methodNode->GetName(); - AZStd::string translationContext = TranslationHelper::GetContextName(contextGroup, className); + GraphCanvas::TranslationKey key; - GraphCanvas::TranslationKeyedString nodeKeyedString(methodName, translationContext); - nodeKeyedString.m_key = TranslationHelper::GetKey(contextGroup, className, methodName, TranslationItemType::Node, TranslationKeyId::Name); + if (isAccessor) + { + AZ::StringFunc::Replace(methodName, "::Getter", ""); + AZ::StringFunc::Replace(methodName, "::Setter", ""); + } - GraphCanvas::TranslationKeyedString classKeyedString(className, translationContext); - classKeyedString.m_key = TranslationHelper::GetClassKey(contextGroup, className, TranslationKeyId::Name); + GraphCanvas::TranslationRequests::Details details; + details.m_name = methodName; - GraphCanvas::TranslationKeyedString tooltipKeyedString(AZStd::string(), translationContext); - tooltipKeyedString.m_key = TranslationHelper::GetKey(contextGroup, className, methodName, TranslationItemType::Node, TranslationKeyId::Tooltip); + AZStd::string context; + if (methodNode->GetMethodType() == ScriptCanvas::MethodType::Free) + { + context = "Constant"; + } + else + { + context = isEBusSender ? "EBusSender" : "BehaviorClass"; + } + key << context << className; + + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key + ".details", details); + + // Set the class' name as the subtitle fallback + details.m_subtitle = details.m_name; + + // Get the method's text data + GraphCanvas::TranslationRequests::Details methodDetails; + methodDetails.m_name = details.m_name; // fallback + key << "methods"; + AZStd::string updatedMethodName = methodName; + if (isAccessor) + { + if (methodNode->GetMethodType() == ScriptCanvas::MethodType::Getter) + { + updatedMethodName = "Get"; + } + else + { + updatedMethodName = "Set"; + } + updatedMethodName.append(methodName); + } + key << updatedMethodName; + GraphCanvas::TranslationRequestBus::BroadcastResult(methodDetails, &GraphCanvas::TranslationRequests::GetDetails, key + ".details", methodDetails); + + + if (methodDetails.m_subtitle.empty()) + { + methodDetails.m_subtitle = details.m_name; + } + + // Add to the tooltip the C++ class for reference + if (!methodDetails.m_tooltip.empty()) + { + methodDetails.m_tooltip.append("\n"); + } + methodDetails.m_tooltip.append(AZStd::string::format("[C++] %s", className.c_str())); + + GraphCanvas::NodeTitleRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::SetDetails, methodDetails.m_name, methodDetails.m_subtitle); + GraphCanvas::NodeRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeRequests::SetTooltip, methodDetails.m_tooltip); int paramIndex = 0; int outputIndex = 0; @@ -312,37 +370,51 @@ namespace ScriptCanvasEditor::Nodes auto busId = methodNode->GetBusSlotId(); for (const auto& slot : methodNode->GetSlots()) { + GraphCanvas::TranslationKey slotKey = key; + if (slot.IsVisible()) { AZ::EntityId graphCanvasSlotId = DisplayScriptCanvasSlot(graphCanvasNodeId, slot); - GraphCanvas::TranslationKeyedString slotNameKeyedString(slot.GetName(), translationContext); - GraphCanvas::TranslationKeyedString slotTooltipKeyedString(slot.GetToolTip(), translationContext); + details.m_name = slot.GetName(); + details.m_tooltip = slot.GetToolTip(); if (methodNode->HasBusID() && busId == slot.GetId() && slot.GetDescriptor() == ScriptCanvas::SlotDescriptors::DataIn()) { - slotNameKeyedString = TranslationHelper::GetEBusSenderBusIdNameKey(); - slotTooltipKeyedString = TranslationHelper::GetEBusSenderBusIdTooltipKey(); + key = Translation::GlobalKeys::EBusSenderIDKey; + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key + ".details", details); } else { - TranslationItemType itemType = TranslationHelper::GetItemType(slot.GetDescriptor()); + int& index = (slot.IsData() && slot.IsInput()) ? paramIndex : outputIndex; - int& index = (itemType == TranslationItemType::ParamDataSlot) ? paramIndex : outputIndex; - - slotNameKeyedString.m_key = TranslationHelper::GetKey(contextGroup, className, methodName, itemType, TranslationKeyId::Name, index); - slotTooltipKeyedString.m_key = TranslationHelper::GetKey(contextGroup, className, methodName, itemType, TranslationKeyId::Tooltip, index); - - if ((itemType == TranslationItemType::ParamDataSlot) || (itemType == TranslationItemType::ReturnDataSlot)) + if (slot.IsData()) { + key.clear(); + key << context << className << "methods" << updatedMethodName; + if (slot.IsData() && slot.IsInput()) + { + key << "params"; + } + else + { + key << "results"; + } + key << index; + + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key + ".details", details); + } + + if (slot.IsData()) + { index++; } } - GraphCanvas::SlotRequestBus::Event(graphCanvasSlotId, &GraphCanvas::SlotRequests::SetTranslationKeyedName, slotNameKeyedString); - GraphCanvas::SlotRequestBus::Event(graphCanvasSlotId, &GraphCanvas::SlotRequests::SetTranslationKeyedTooltip, slotTooltipKeyedString); + GraphCanvas::SlotRequestBus::Event(graphCanvasSlotId, &GraphCanvas::SlotRequests::SetDetails, details.m_name, details.m_tooltip); + + UpdateSlotDatumLabel(graphCanvasNodeId, slot.GetId(), details.m_name); - CopyTranslationKeyedNameToDatumLabel(graphCanvasNodeId, slot.GetId(), graphCanvasSlotId); } } @@ -350,10 +422,6 @@ namespace ScriptCanvasEditor::Nodes AZStd::string displayName = methodNode->GetName(); graphCanvasEntity->SetName(AZStd::string::format("GC-Node(%s)", displayName.c_str())); - GraphCanvas::NodeRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeRequests::SetTranslationKeyedTooltip, tooltipKeyedString); - - GraphCanvas::NodeTitleRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::SetTranslationKeyedTitle, nodeKeyedString); - GraphCanvas::NodeTitleRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::SetTranslationKeyedSubTitle, classKeyedString); GraphCanvas::NodeTitleRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::SetPaletteOverride, "MethodNodeTitlePalette"); // Override the title if it has the Setter or Getter suffixes @@ -420,24 +488,37 @@ namespace ScriptCanvasEditor::Nodes if (busNode->IsIDRequired() && slot->GetDescriptor() == ScriptCanvas::SlotDescriptors::DataIn()) { - GraphCanvas::SlotRequestBus::Event(gcSlotId, &GraphCanvas::SlotRequests::SetTranslationKeyedName, TranslationHelper::GetEBusHandlerBusIdNameKey()); - GraphCanvas::SlotRequestBus::Event(gcSlotId, &GraphCanvas::SlotRequests::SetTranslationKeyedTooltip, TranslationHelper::GetEBusHandlerBusIdTooltipKey()); + GraphCanvas::TranslationKey key; + key << Translation::GlobalKeys::EBusHandlerIDKey << "details"; + GraphCanvas::TranslationRequests::Details details; + details.m_name = slot->GetName(); + details.m_tooltip = slot->GetToolTip(); + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details); + + GraphCanvas::SlotRequestBus::Event(gcSlotId, &GraphCanvas::SlotRequests::SetDetails, details.m_name, details.m_tooltip); } } } - GraphCanvas::TranslationKeyedString nodeKeyedString(busName); - nodeKeyedString.m_context = TranslationHelper::GetEbusHandlerContext(busName); - nodeKeyedString.m_key = TranslationHelper::GetEbusHandlerKey(busName, TranslationKeyId::Name); - - GraphCanvas::TranslationKeyedString tooltipKeyedString(AZStd::string(), nodeKeyedString.m_context); - tooltipKeyedString.m_key = TranslationHelper::GetEbusHandlerKey(busName, TranslationKeyId::Tooltip); - // Set the name graphCanvasEntity->SetName(AZStd::string::format("GC-BusNode: %s", busName.data())); - GraphCanvas::NodeRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeRequests::SetTranslationKeyedTooltip, tooltipKeyedString); - GraphCanvas::NodeTitleRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::SetTranslationKeyedTitle, nodeKeyedString); + GraphCanvas::TranslationKey key; + key << "EBusHandler" << busName << "details"; + + GraphCanvas::TranslationRequests::Details details; + details.m_name = busName; + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details); + + // Add to the tooltip the C++ class for reference + if (!details.m_tooltip.empty()) + { + details.m_tooltip.append("\n"); + } + details.m_tooltip.append(AZStd::string::format("[C++] %s", busName.c_str())); + + GraphCanvas::NodeRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeRequests::SetTooltip, details.m_tooltip); + GraphCanvas::NodeTitleRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::SetTitle, details.m_name); GraphCanvas::NodeTitleRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::SetDefaultPalette, "HandlerWrapperNodeTitlePalette"); return graphCanvasNodeId; @@ -462,19 +543,27 @@ namespace ScriptCanvasEditor::Nodes AZStd::string decoratedName = AZStd::string::format("%s::%s", busName.c_str(), eventName.c_str()); - GraphCanvas::TranslationKeyedString nodeKeyedString(eventName); - nodeKeyedString.m_context = TranslationHelper::GetEbusHandlerContext(busName); - nodeKeyedString.m_key = TranslationHelper::GetEbusHandlerEventKey(busName, eventName, TranslationKeyId::Name); + GraphCanvas::TranslationKey key; + key << "EBusHandler" << busName << "methods" << eventName << "details"; - GraphCanvas::TranslationKeyedString tooltipKeyedString(AZStd::string(), nodeKeyedString.m_context); - tooltipKeyedString.m_key = TranslationHelper::GetEbusHandlerEventKey(busName, eventName, TranslationKeyId::Tooltip); + GraphCanvas::TranslationRequests::Details details; + details.m_name = eventName; + details.m_subtitle = busName; + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details); // Set the name graphCanvasEntity->SetName(AZStd::string::format("GC-Node(%s)", decoratedName.c_str())); - GraphCanvas::NodeRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeRequests::SetTranslationKeyedTooltip, tooltipKeyedString); + // Add to the tooltip the C++ class for reference + if (!details.m_tooltip.empty()) + { + details.m_tooltip.append("\n"); + } + details.m_tooltip.append(AZStd::string::format("[C++] %s", busName.c_str())); - GraphCanvas::NodeTitleRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::SetTranslationKeyedTitle, nodeKeyedString); + GraphCanvas::NodeRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeRequests::SetTooltip, details.m_tooltip); + + GraphCanvas::NodeTitleRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::SetTitle, details.m_name); GraphCanvas::NodeTitleRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::SetPaletteOverride, "HandlerNodeTitlePalette"); return graphCanvasNodeId; @@ -512,76 +601,27 @@ namespace ScriptCanvasEditor::Nodes if (slot.IsVisible()) { AZ::EntityId gcSlotId = DisplayScriptCanvasSlot(graphCanvasNodeId, slot, group); - if (slot.GetId() == azEventEntry.m_azEventInputSlotId) - { - GraphCanvas::TranslationKeyedString slotTranslationEntry(azEventEntry.m_eventName); - slotTranslationEntry.m_context = TranslationHelper::GetAzEventHandlerContextKey(); - // The translation key in this case acts like a json pointer referencing a particular - // json string within a hypothetical json document - AZ::StackedString azEventHandlerNodeKey = TranslationHelper::GetAzEventHandlerRootPointer(azEventEntry.m_eventName); - azEventHandlerNodeKey.Push("Name"); - slotTranslationEntry.m_key = AZStd::string_view{ azEventHandlerNodeKey }; - GraphCanvas::SlotRequestBus::Event(gcSlotId, &GraphCanvas::SlotRequests::SetTranslationKeyedName, slotTranslationEntry); - azEventHandlerNodeKey.Pop(); - azEventHandlerNodeKey.Push("Tooltip"); - slotTranslationEntry.m_key = AZStd::string_view{ azEventHandlerNodeKey }; - GraphCanvas::SlotRequestBus::Event(gcSlotId, &GraphCanvas::SlotRequests::SetTranslationKeyedTooltip, slotTranslationEntry); - } - else - { - GraphCanvas::TranslationKeyedString slotTranslationEntry(slot.GetName()); - slotTranslationEntry.m_context = TranslationHelper::GetAzEventHandlerContextKey(); - // The translation key in this case acts like a json pointer referencing a particular - // json string within a hypothetical json document - // translation key is rooted at /AzEventHandler/${EventName}/Slots/${SlotName}/{In,Out,Param,Return} - AZ::StackedString azEventHandlerNodeKey = TranslationHelper::GetAzEventHandlerRootPointer(azEventEntry.m_eventName); - azEventHandlerNodeKey.Push("Slots"); - azEventHandlerNodeKey.Push(slot.GetName()); - switch(TranslationHelper::GetItemType(slot.GetDescriptor())) - { - case TranslationItemType::ExecutionInSlot: - azEventHandlerNodeKey.Push("In"); - break; - case TranslationItemType::ExecutionOutSlot: - azEventHandlerNodeKey.Push("Out"); - break; - case TranslationItemType::ParamDataSlot: - azEventHandlerNodeKey.Push("Param"); - break; - case TranslationItemType::ReturnDataSlot: - azEventHandlerNodeKey.Push("Return"); - break; - default: - // Slot is not an execution or data slot, do nothing - break; - } + GraphCanvas::TranslationKey key; + key << "AZEventHandler" << azEventNode->GetNodeName() << "slots" << slot.GetName() << "details"; - azEventHandlerNodeKey.Push("Name"); - slotTranslationEntry.m_key = AZStd::string_view{ azEventHandlerNodeKey }; - GraphCanvas::SlotRequestBus::Event(gcSlotId, &GraphCanvas::SlotRequests::SetTranslationKeyedName, slotTranslationEntry); - azEventHandlerNodeKey.Pop(); - azEventHandlerNodeKey.Push("Tooltip"); - slotTranslationEntry.m_key = AZStd::string_view{ azEventHandlerNodeKey }; - GraphCanvas::SlotRequestBus::Event(gcSlotId, &GraphCanvas::SlotRequests::SetTranslationKeyedTooltip, slotTranslationEntry); - } + GraphCanvas::TranslationRequests::Details details; + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details); + + GraphCanvas::SlotRequestBus::Event(gcSlotId, &GraphCanvas::SlotRequests::SetName, details.m_name); + GraphCanvas::SlotRequestBus::Event(gcSlotId, &GraphCanvas::SlotRequests::SetTooltip, details.m_tooltip);; } } - GraphCanvas::TranslationKeyedString nodeTranslationEntry(azEventEntry.m_eventName); - nodeTranslationEntry.m_context = TranslationHelper::GetAzEventHandlerContextKey(); - // The translation key in this case acts like a json pointer referencing a particular - // json string within a hypothetical json document - AZ::StackedString azEventHandlerNodeKey = TranslationHelper::GetAzEventHandlerRootPointer(azEventEntry.m_eventName); - azEventHandlerNodeKey.Push("Name"); - nodeTranslationEntry.m_key = AZStd::string_view{ azEventHandlerNodeKey }; - GraphCanvas::NodeTitleRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::SetTranslationKeyedTitle, nodeTranslationEntry); - azEventHandlerNodeKey.Pop(); - azEventHandlerNodeKey.Push("Tooltip"); - nodeTranslationEntry.m_key = AZStd::string_view{ azEventHandlerNodeKey }; - GraphCanvas::NodeRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeRequests::SetTranslationKeyedTooltip, nodeTranslationEntry); + GraphCanvas::TranslationKey key; + key << "AZEventHandler" << azEventEntry.m_eventName << "details"; + + GraphCanvas::TranslationRequests::Details details; + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details); + + GraphCanvas::NodeTitleRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::SetTitle, details.m_name); + GraphCanvas::NodeRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeRequests::SetTooltip, details.m_tooltip); - // Set the name graphCanvasEntity->SetName(AZStd::string::format("GC-EventNode: %s", azEventEntry.m_eventName.c_str())); GraphCanvas::NodeTitleRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::SetPaletteOverride, "HandlerNodeTitlePalette"); @@ -652,8 +692,11 @@ namespace ScriptCanvasEditor::Nodes if (busNode->IsIDRequired() && slot->GetDescriptor() == ScriptCanvas::SlotDescriptors::DataIn()) { - GraphCanvas::SlotRequestBus::Event(gcSlotId, &GraphCanvas::SlotRequests::SetTranslationKeyedName, TranslationHelper::GetEBusHandlerBusIdNameKey()); - GraphCanvas::SlotRequestBus::Event(gcSlotId, &GraphCanvas::SlotRequests::SetTranslationKeyedTooltip, TranslationHelper::GetEBusHandlerBusIdTooltipKey()); + GraphCanvas::TranslationKey key; + key << Translation::GlobalKeys::EBusHandlerIDKey << "details"; + GraphCanvas::TranslationRequests::Details details; + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details); + GraphCanvas::SlotRequestBus::Event(gcSlotId, &GraphCanvas::SlotRequests::SetDetails, details.m_name, details.m_tooltip); } } } @@ -718,11 +761,7 @@ namespace ScriptCanvasEditor::Nodes graphCanvasEntity->CreateComponent(ScriptCanvas::Nodes::Core::Method::RTTI_Type()); graphCanvasEntity->CreateComponent(senderNode->GetEntityId()); graphCanvasEntity->CreateComponent(senderNode->GetEntityId()); - - TranslationContextGroup contextGroup = TranslationContextGroup::Invalid; - graphCanvasEntity->CreateComponent(senderNode->GetAssetId(), senderNode->GetEventId()); - contextGroup = TranslationContextGroup::EbusSender; graphCanvasEntity->Init(); graphCanvasEntity->Activate(); @@ -753,7 +792,7 @@ namespace ScriptCanvasEditor::Nodes GraphCanvas::SlotRequestBus::Event(graphCanvasSlotId, &GraphCanvas::SlotRequests::SetName, slot.GetName()); GraphCanvas::SlotRequestBus::Event(graphCanvasSlotId, &GraphCanvas::SlotRequests::SetTooltip, slot.GetToolTip()); - CopyTranslationKeyedNameToDatumLabel(graphCanvasNodeId, slot.GetId(), graphCanvasSlotId); + UpdateSlotDatumLabel(graphCanvasNodeId, slot.GetId(), slot.GetName()); } } @@ -766,7 +805,7 @@ namespace ScriptCanvasEditor::Nodes return graphCanvasNodeId; } -// Function Nodes + // Function Nodes AZ::EntityId DisplayFunctionNode(AZ::EntityId graphCanvasGraphId, const ScriptCanvas::Nodes::Core::FunctionCallNode* functionNode) { return DisplayFunctionNode(graphCanvasGraphId, const_cast(functionNode)); @@ -811,11 +850,23 @@ namespace ScriptCanvasEditor::Nodes { AZ_Error("Script Canvas", false, "Script Canvas Function asset (%s) is not loaded, unable to display the node.", functionNode->GetAssetId().ToString().c_str()); - GraphCanvas::TranslationKeyedString errorTitle("ERROR!"); - GraphCanvas::TranslationKeyedString errorSubstring("Missing Script Canvas Function Asset!"); + GraphCanvas::TranslationKey key; + key = "Globals.MissingFunctionAsset.Title.details.m_name"; - GraphCanvas::NodeTitleRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::SetTranslationKeyedTitle, errorTitle); - GraphCanvas::NodeTitleRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::SetTranslationKeyedSubTitle, errorSubstring); + bool success = false; + AZStd::string result = "Error!"; + GraphCanvas::TranslationRequestBus::BroadcastResult(success, &GraphCanvas::TranslationRequests::Get, key = "Globals.MissingFunctionAsset.Title.details.m_name", result); + if (success) + { + GraphCanvas::NodeTitleRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::SetTitle, result); + } + + result = "Missing Script Canvas Function Asset"; + GraphCanvas::TranslationRequestBus::BroadcastResult(success, &GraphCanvas::TranslationRequests::Get, key = "Globals.MissingFunctionAsset.Title.details.tooltip", result); + if (success) + { + GraphCanvas::NodeTitleRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::SetSubTitle, result); + } return graphCanvasNodeId; } @@ -827,7 +878,7 @@ namespace ScriptCanvasEditor::Nodes GraphCanvas::SlotRequestBus::Event(graphCanvasSlotId, &GraphCanvas::SlotRequests::SetName, slot.GetName()); GraphCanvas::SlotRequestBus::Event(graphCanvasSlotId, &GraphCanvas::SlotRequests::SetTooltip, slot.GetToolTip()); - CopyTranslationKeyedNameToDatumLabel(graphCanvasNodeId, slot.GetId(), graphCanvasSlotId); + UpdateSlotDatumLabel(graphCanvasNodeId, slot.GetId(), slot.GetName()); } if (asset) @@ -866,31 +917,11 @@ namespace ScriptCanvasEditor::Nodes if (const AZ::SerializeContext::ClassData* classData = serializeContext->FindClassData(azrtti_typeid(functionDefinitionNode))) { - AZStd::string nodeContext = GetContextName(*classData); - nodeConfiguration.m_translationContext = TranslationHelper::GetUserDefinedContext(nodeContext); - - nodeConfiguration.m_titleFallback = (classData->m_editData && classData->m_editData->m_name) ? classData->m_editData->m_name : classData->m_name; - nodeConfiguration.m_tooltipFallback = (classData->m_editData && classData->m_editData->m_description) ? classData->m_editData->m_description : ""; - - GraphCanvas::TranslationKeyedString subtitleKeyedString(nodeContext, nodeConfiguration.m_translationContext); - subtitleKeyedString.m_key = TranslationHelper::GetUserDefinedNodeKey(nodeContext, nodeConfiguration.m_titleFallback, ScriptCanvasEditor::TranslationKeyId::Category); - - nodeConfiguration.m_subtitleFallback = subtitleKeyedString.GetDisplayString(); - - nodeConfiguration.m_translationKeyName = nodeConfiguration.m_titleFallback; - nodeConfiguration.m_translationKeyContext = nodeContext; - - nodeConfiguration.m_translationGroup = TranslationContextGroup::ClassMethod; - - ScriptCanvas::GraphScopedNodeId nodelingId; nodelingId.m_identifier = nodeConfiguration.m_scriptCanvasId; nodelingId.m_scriptCanvasId = functionDefinitionNode->GetOwningScriptCanvasId(); - AZStd::string nodelingName; - ScriptCanvas::NodelingRequestBus::EventResult(nodelingName, nodelingId, &ScriptCanvas::NodelingRequests::GetDisplayName); - if (classData->m_editData) { const AZ::Edit::ElementData* elementData = classData->m_editData->FindElementData(AZ::Edit::ClassElements::EditorData); @@ -908,15 +939,12 @@ namespace ScriptCanvasEditor::Nodes } } - nodeConfiguration.m_subtitleFallback = ""; - // Because of how the extender slots are registered, there isn't an easy way to only create one or the other based on // the type of nodeling, so instead they both get created and we need to remove the inapplicable one GraphCanvas::ConnectionType typeToRemove = (functionDefinitionNode->IsExecutionEntry()) ? GraphCanvas::CT_Input : GraphCanvas::CT_Output; AZ::EntityId graphCanvasNodeId = DisplayGeneralScriptCanvasNode(graphCanvasGraphId, functionDefinitionNode, nodeConfiguration); - AZStd::vector extenderSlotIds, executionSlotIds; GraphCanvas::NodeRequestBus::EventResult(extenderSlotIds, graphCanvasNodeId, &GraphCanvas::NodeRequests::FindVisibleSlotIdsByType, typeToRemove, GraphCanvas::SlotTypes::ExtenderSlot); if (!extenderSlotIds.empty()) @@ -960,22 +988,6 @@ namespace ScriptCanvasEditor::Nodes if (classData) { - AZStd::string nodeContext = GetContextName(*classData); - nodeConfiguration.m_translationContext = TranslationHelper::GetUserDefinedContext(nodeContext); - - nodeConfiguration.m_titleFallback = (classData->m_editData && classData->m_editData->m_name) ? classData->m_editData->m_name : classData->m_name; - nodeConfiguration.m_tooltipFallback = (classData->m_editData && classData->m_editData->m_description) ? classData->m_editData->m_description : ""; - - GraphCanvas::TranslationKeyedString subtitleKeyedString(nodeContext, nodeConfiguration.m_translationContext); - subtitleKeyedString.m_key = TranslationHelper::GetUserDefinedNodeKey(nodeContext, nodeConfiguration.m_titleFallback, ScriptCanvasEditor::TranslationKeyId::Category); - - nodeConfiguration.m_subtitleFallback = subtitleKeyedString.GetDisplayString(); - - nodeConfiguration.m_translationKeyName = nodeConfiguration.m_titleFallback; - nodeConfiguration.m_translationKeyContext = nodeContext; - - nodeConfiguration.m_translationGroup = TranslationContextGroup::ClassMethod; - if (classData->m_editData) { const AZ::Edit::ElementData* elementData = classData->m_editData->FindElementData(AZ::Edit::ClassElements::EditorData); @@ -993,8 +1005,6 @@ namespace ScriptCanvasEditor::Nodes } } - nodeConfiguration.m_subtitleFallback = ""; - return DisplayGeneralScriptCanvasNode(graphCanvasGraphId, nodeling, nodeConfiguration); } @@ -1008,19 +1018,6 @@ namespace ScriptCanvasEditor::Nodes nodeConfiguration.m_titlePalette = "GetVariableNodeTitlePalette"; nodeConfiguration.m_scriptCanvasId = variableNode->GetEntityId(); - // - nodeConfiguration.m_translationContext = TranslationHelper::GetContextName(TranslationContextGroup::ClassMethod, "CORE"); - - nodeConfiguration.m_translationKeyContext = "CORE"; - nodeConfiguration.m_translationKeyName = "GETVARIABLE"; - - nodeConfiguration.m_titleFallback = "Get Variable"; - nodeConfiguration.m_subtitleFallback = ""; - nodeConfiguration.m_tooltipFallback = "Gets the specified Variable or one of it's properties."; - - nodeConfiguration.m_translationGroup = TranslationContextGroup::ClassMethod; - // - AZ::EntityId graphCanvasNodeId = DisplayGeneralScriptCanvasNode(graphCanvasGraphId, variableNode, nodeConfiguration); GraphCanvas::SlotLayoutRequestBus::Event(graphCanvasNodeId, &GraphCanvas::SlotLayoutRequests::ConfigureSlotGroup, GraphCanvas::SlotGroups::ExecutionGroup, GraphCanvas::SlotGroupConfiguration(0)); @@ -1040,20 +1037,6 @@ namespace ScriptCanvasEditor::Nodes nodeConfiguration.m_titlePalette = "SetVariableNodeTitlePalette"; nodeConfiguration.m_scriptCanvasId = variableNode->GetEntityId(); - // - - nodeConfiguration.m_translationContext = TranslationHelper::GetContextName(TranslationContextGroup::ClassMethod, "CORE"); - - nodeConfiguration.m_translationKeyContext = "CORE"; - nodeConfiguration.m_translationKeyName = "SETVARIABLE"; - - nodeConfiguration.m_titleFallback = "Set Variable"; - nodeConfiguration.m_subtitleFallback = ""; - nodeConfiguration.m_tooltipFallback = "Sets the specified Variable."; - - nodeConfiguration.m_translationGroup = TranslationContextGroup::ClassMethod; - // - AZ::EntityId graphCanvasId = DisplayGeneralScriptCanvasNode(graphCanvasGraphId, variableNode, nodeConfiguration); GraphCanvas::SlotLayoutRequestBus::Event(graphCanvasId, &GraphCanvas::SlotLayoutRequests::ConfigureSlotGroup, GraphCanvas::SlotGroups::ExecutionGroup, GraphCanvas::SlotGroupConfiguration(0)); @@ -1242,8 +1225,45 @@ namespace ScriptCanvasEditor::Nodes if (slotEntity) { + GraphCanvas::TranslationKey slotKey; + slotKey << "ScriptCanvas::Node" << azrtti_typeid(slot.GetNode()).ToString() << "slots"; + + AZStd::string slotKeyStr; + if (slot.IsData()) + { + slotKeyStr.append("Data"); + } + + if (slot.GetConnectionType() == ScriptCanvas::ConnectionType::Input) + { + slotKeyStr.append("Input_"); + } + else + { + slotKeyStr.append("Output_"); + } + + slotKeyStr.append(slot.GetName()); + slotKey << slotKeyStr << "details"; + + GraphCanvas::TranslationRequests::Details slotDetails; + GraphCanvas::TranslationRequestBus::BroadcastResult(slotDetails, &GraphCanvas::TranslationRequests::GetDetails, slotKey, slotDetails); + + if (slotDetails.m_name.empty()) + { + slotDetails.m_name = slot.GetName(); + } + + if (slotDetails.m_tooltip.empty()) + { + slotDetails.m_tooltip = slot.GetToolTip(); + } + + GraphCanvas::SlotRequestBus::Event(slotEntity->GetId(), &GraphCanvas::SlotRequests::SetName, slotDetails.m_name); + GraphCanvas::SlotRequestBus::Event(slotEntity->GetId(), &GraphCanvas::SlotRequests::SetTooltip, slotDetails.m_tooltip); + RegisterAndActivateGraphCanvasSlot(graphCanvasNodeId, slot.GetId(), slotEntity); - CopyTranslationKeyedNameToDatumLabel(graphCanvasNodeId, slot.GetId(), slotEntity->GetId()); + UpdateSlotDatumLabel(graphCanvasNodeId, slot.GetId(), slot.GetName()); return slotEntity->GetId(); } else diff --git a/Gems/ScriptCanvas/Code/Editor/Nodes/NodeUtils.cpp b/Gems/ScriptCanvas/Code/Editor/Nodes/NodeUtils.cpp index 3c5e74cbeb..262ea8c061 100644 --- a/Gems/ScriptCanvas/Code/Editor/Nodes/NodeUtils.cpp +++ b/Gems/ScriptCanvas/Code/Editor/Nodes/NodeUtils.cpp @@ -16,18 +16,8 @@ namespace ScriptCanvasEditor::Nodes { - void CopyTranslationKeyedNameToDatumLabel(const AZ::EntityId& graphCanvasNodeId, - ScriptCanvas::SlotId scSlotId, - const AZ::EntityId& graphCanvasSlotId) + void UpdateSlotDatumLabel(const AZ::EntityId& graphCanvasNodeId, ScriptCanvas::SlotId scSlotId, const AZStd::string& name) { - GraphCanvas::TranslationKeyedString name; - GraphCanvas::SlotRequestBus::EventResult(name, graphCanvasSlotId, &GraphCanvas::SlotRequests::GetTranslationKeyedName); - if (name.GetDisplayString().empty()) - { - return; - } - - // GC node -> SC node. AZStd::any* userData = nullptr; GraphCanvas::NodeRequestBus::EventResult(userData, graphCanvasNodeId, &GraphCanvas::NodeRequests::GetUserData); AZ::EntityId scNodeEntityId = userData && userData->is() ? *AZStd::any_cast(userData) : AZ::EntityId(); @@ -36,11 +26,11 @@ namespace ScriptCanvasEditor::Nodes ScriptCanvas::ModifiableDatumView datumView; ScriptCanvas::NodeRequestBus::Event(scNodeEntityId, &ScriptCanvas::NodeRequests::FindModifiableDatumView, scSlotId, datumView); - datumView.RelabelDatum(name.GetDisplayString()); + datumView.RelabelDatum(name); } } - void CopySlotTranslationKeyedNamesToDatums(AZ::EntityId graphCanvasNodeId) + void UpdateSlotDatumLabels(AZ::EntityId graphCanvasNodeId) { AZStd::vector graphCanvasSlotIds; GraphCanvas::NodeRequestBus::EventResult(graphCanvasSlotIds, graphCanvasNodeId, &GraphCanvas::NodeRequests::GetSlotIds); @@ -51,47 +41,10 @@ namespace ScriptCanvasEditor::Nodes if (auto scriptCanvasSlotId = AZStd::any_cast(slotUserData)) { - CopyTranslationKeyedNameToDatumLabel(graphCanvasNodeId, *scriptCanvasSlotId, graphCanvasSlotId); + AZStd::string slotName; + GraphCanvas::SlotRequestBus::EventResult(slotName, graphCanvasSlotId, &GraphCanvas::SlotRequests::GetName); + UpdateSlotDatumLabel(graphCanvasNodeId, *scriptCanvasSlotId, slotName); } } } - - ////////////////////// - // NodeConfiguration - ////////////////////// - AZStd::string GetCategoryName(const AZ::SerializeContext::ClassData& classData) - { - if (auto editorDataElement = classData.m_editData->FindElementData(AZ::Edit::ClassElements::EditorData)) - { - if (auto attribute = editorDataElement->FindAttribute(AZ::Edit::Attributes::Category)) - { - if (auto data = azrtti_cast*>(attribute)) - { - return data->Get(nullptr); - } - } - } - - return {}; - } - - AZStd::string GetContextName(const AZ::SerializeContext::ClassData& classData) - { - if (auto editorDataElement = classData.m_editData ? classData.m_editData->FindElementData(AZ::Edit::ClassElements::EditorData) : nullptr) - { - if (auto attribute = editorDataElement->FindAttribute(AZ::Edit::Attributes::Category)) - { - if (auto data = azrtti_cast*>(attribute)) - { - AZStd::string fullCategoryName = data->Get(nullptr); - AZStd::string delimiter = "/"; - AZStd::vector results; - AZStd::tokenize(fullCategoryName, delimiter, results); - return results.back(); - } - } - } - - return {}; - } } diff --git a/Gems/ScriptCanvas/Code/Editor/Nodes/NodeUtils.h b/Gems/ScriptCanvas/Code/Editor/Nodes/NodeUtils.h index f99ae745b5..0f1ae151a6 100644 --- a/Gems/ScriptCanvas/Code/Editor/Nodes/NodeUtils.h +++ b/Gems/ScriptCanvas/Code/Editor/Nodes/NodeUtils.h @@ -71,18 +71,6 @@ namespace ScriptCanvasEditor AZStd::string m_titlePalette; AZStd::vector< AZ::Uuid > m_customComponents; - // Translation Information for the Node - AZStd::string m_translationContext; - - AZStd::string m_translationKeyName; - AZStd::string m_translationKeyContext; - - TranslationContextGroup m_translationGroup; - - AZStd::string m_titleFallback; - AZStd::string m_subtitleFallback; - AZStd::string m_tooltipFallback; - AZ::EntityId m_scriptCanvasId; }; @@ -92,16 +80,9 @@ namespace ScriptCanvasEditor AZStd::string m_titlePalette; }; - AZStd::string GetContextName(const AZ::SerializeContext::ClassData& classData); - AZStd::string GetCategoryName(const AZ::SerializeContext::ClassData& classData); - - void CopySlotTranslationKeyedNamesToDatums(AZ::EntityId graphCanvasNodeId); - - // Copies the the translated key name to the ScriptCanvas Data Slot which matches - // the scSlotId - void CopyTranslationKeyedNameToDatumLabel(const AZ::EntityId& graphCanvasNodeId, - ScriptCanvas::SlotId scSlotId, - const AZ::EntityId& graphCanvasSlotId); + // Copies the slot name to the underlying ScriptCanvas Data Slot which matches the slot Id + void UpdateSlotDatumLabels(AZ::EntityId graphCanvasNodeId); + void UpdateSlotDatumLabel(const AZ::EntityId& graphCanvasNodeId, ScriptCanvas::SlotId scSlotId, const AZStd::string& name); template NodeType* GetNode(AZ::EntityId scriptCanvasGraphId, NodeIdPair nodeIdPair) diff --git a/Gems/ScriptCanvas/Code/Editor/Settings.cpp b/Gems/ScriptCanvas/Code/Editor/Settings.cpp index fd745fa257..8d24a30aab 100644 --- a/Gems/ScriptCanvas/Code/Editor/Settings.cpp +++ b/Gems/ScriptCanvas/Code/Editor/Settings.cpp @@ -395,6 +395,7 @@ namespace ScriptCanvasEditor ->Field("ShowUpgradeDialog", &ScriptCanvasEditorSettings::m_showUpgradeDialog) ->Field("ZoomSettings", &ScriptCanvasEditorSettings::m_zoomSettings) ->Field("ExperimentalSettings", &ScriptCanvasEditorSettings::m_experimentalSettings) + ->Field("SceneContextMenuNodePaletteWidth", &ScriptCanvasEditorSettings::m_sceneContextMenuNodePaletteWidth) ; AZ::EditContext* editContext = serialize->GetEditContext(); @@ -467,13 +468,13 @@ namespace ScriptCanvasEditor ->Attribute(AZ::Edit::Attributes::Visibility, AZ_CRC("PropertyVisibility_ShowChildrenOnly", 0xef428f20)) ->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_snapDistance, "Connection Snap Distance", "The distance from a slot under which connections will snap to it.") ->Attribute(AZ::Edit::Attributes::Min, 10.0) - ->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_enableGroupDoubleClickCollapse, "Double Click to Collapse/Uncollapse Group", "Enables the user to decide whether you can double click on a group to collapse/uncollapse a group.") + ->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_enableGroupDoubleClickCollapse, "Double Click to Collapse/Expand Group", "Enables the user to decide whether you can double click on a group to collapse/expand a group.") ->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_allowBookmarkViewpointControl, "Bookmark Zooming", "Will cause the bookmarks to force the viewport into the state determined by the bookmark type\nBookmark Anchors - The viewport that exists when the bookmark is created.\nNode Groups - The area the Node Group covers") ->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_dragNodeCouplingConfig, "Node Coupling Configuration", "Controls for managing Node Coupling.\nNode Coupling is when you are dragging a node and leave it hovered over another Node, we will try to connect the sides you overlapped with each other.") ->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_dragNodeSplicingConfig, "Drag Node Splicing Configuration", "Controls for managing Node Splicing on a Drag.\nNode Splicing on a Drag will let you drag a node onto a connection, and splice that node onto the specified connection.") ->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_dropNodeSplicingConfig, "Drop Node Splicing Configuration", "Controls for managing Node Splicing on a Drag.\nNode Splicing on a drop will let you drop a node onto a connection from the Node Palette, and splice that node onto the specified connection.") ->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_autoSaveConfig, "AutoSave Configuration", "Controls for managing Auto Saving.\nAuto Saving will occur after the specified time of inactivity on a graph.") - ->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_shakeDespliceConfig, "Shake To Desplice", "Settings that controls various parameters of the Shake to Desplice feature") + ->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_shakeDespliceConfig, "Shake To De-splice", "Settings that controls various parameters of the Shake to De-splice feature") ->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_allowNodeNudging, "Allow Node Nudging", "Controls whether or not nodes will attempt to nudge each other out of the way under various interactions.") ->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_alignmentTimeMS, "Alignment Time", "Controls the amount of time nodes will take to slide into place when performing alignment commands") ->Attribute(AZ::Edit::Attributes::Min, 0) @@ -485,8 +486,10 @@ namespace ScriptCanvasEditor ->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_experimentalSettings, "Experimental Settings", "Settings that will control elements that are under development and may not work as expected") ->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_saveRawTranslationOuputToFile, "Save Translation File", "Save out the raw result of translation for debug purposes") ->Attribute(AZ::Edit::Attributes::ChangeNotify, &SettingsCpp::UpdateProcessingSettings) - ->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_printAbstractCodeModel, "Print Abstract Modeld", "Print out the Abstract Code Model to the console at the end of parsing for debug purposes") + ->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_printAbstractCodeModel, "Print Abstract Model", "Print out the Abstract Code Model to the console at the end of parsing for debug purposes") ->Attribute(AZ::Edit::Attributes::ChangeNotify, &SettingsCpp::UpdateProcessingSettings) + ->DataElement(AZ::Edit::UIHandlers::Default, &ScriptCanvasEditorSettings::m_sceneContextMenuNodePaletteWidth, "Context Menu Width", "Allows you to configure the width of the context menu that opens on a Script Canvas graph") + ->Attribute(AZ::Edit::Attributes::Min, 120) ; editContext->Class("Experimental", "Settings for features under development that may not behave as expected yet.") diff --git a/Gems/ScriptCanvas/Code/Editor/Settings.h b/Gems/ScriptCanvas/Code/Editor/Settings.h index eefb7454c3..dee55f8272 100644 --- a/Gems/ScriptCanvas/Code/Editor/Settings.h +++ b/Gems/ScriptCanvas/Code/Editor/Settings.h @@ -357,6 +357,8 @@ namespace ScriptCanvasEditor AZ::u32 m_alignmentTimeMS; StylingSettings m_stylingSettings; + + AZ::u32 m_sceneContextMenuNodePaletteWidth = 300; }; } } diff --git a/Gems/ScriptCanvas/Code/Editor/Translation/TranslationHelper.h b/Gems/ScriptCanvas/Code/Editor/Translation/TranslationHelper.h index bd6f097485..189b665647 100644 --- a/Gems/ScriptCanvas/Code/Editor/Translation/TranslationHelper.h +++ b/Gems/ScriptCanvas/Code/Editor/Translation/TranslationHelper.h @@ -15,6 +15,63 @@ #include #include +#include +#include +#include + +namespace Translation +{ + namespace GlobalKeys + { + static constexpr const char* EBusSenderIDKey = "Globals.EBusSenderBusId"; + static constexpr const char* EBusHandlerIDKey = "Globals.EBusHandlerBusId"; + static constexpr const char* MissingFunctionKey = "Globals.MissingFunction"; + static constexpr const char* EBusHandlerOutSlot = "Globals.EBusHandler.OutSlot"; + } + + static inline bool GetValue(const AZStd::string key, AZStd::string& value) + { + GraphCanvas::TranslationKey tkey; + tkey = key; + + bool result = false; + GraphCanvas::TranslationRequestBus::BroadcastResult(result, &GraphCanvas::TranslationRequests::Get, key, value); + return result; + } +} + + +namespace GraphCanvasAttributeHelper +{ + template + AZStd::string GetStringAttribute(const T* source, const AZ::Crc32& attribute) + { + AZStd::string attributeValue = ""; + if (auto attributeItem = azrtti_cast*>(AZ::FindAttribute(attribute, source->m_attributes))) + { + attributeValue = attributeItem->Get(nullptr); + } + return attributeValue; + } + + inline AZStd::string ReadStringAttribute(const AZ::AttributeArray& attributes, const AZ::Crc32& attribute) + { + AZStd::string attributeValue = ""; + if (auto attributeItem = azrtti_cast*>(AZ::FindAttribute(attribute, attributes))) + { + attributeValue = attributeItem->Get(nullptr); + return attributeValue; + } + + if (auto attributeItem = azrtti_cast*>(AZ::FindAttribute(attribute, attributes))) + { + attributeValue = attributeItem->Get(nullptr); + return attributeValue; + } + + return {}; + } +} namespace ScriptCanvasEditor { @@ -47,6 +104,20 @@ namespace ScriptCanvasEditor Invalid }; + + namespace TranslationKeyParts + { + const char* const handler = "HANDLER_"; + const char* const name = "NAME"; + const char* const tooltip = "TOOLTIP"; + const char* const category = "CATEGORY"; + const char* const in = "IN"; + const char* const out = "OUT"; + const char* const param = "PARAM"; + const char* const output = "OUTPUT"; + const char* const busid = "BUSID"; + } + namespace TranslationContextGroupParts { const char* const ebusSender = "EBus"; @@ -55,19 +126,6 @@ namespace ScriptCanvasEditor constexpr const char* const globalMethod = "GlobalMethod"; }; - namespace TranslationKeyParts - { - const char* const handler = "HANDLER_"; - const char* const name = "NAME"; - const char* const tooltip = "TOOLTIP"; - const char* const category = "CATEGORY"; - const char* const in = "IN"; - const char* const out = "OUT"; - const char* const param = "PARAM"; - const char* const output = "OUTPUT"; - const char* const busid = "BUSID"; - } - // The context name and keys generated by TranslationHelper should match the keys // being exported by the TSGenerateAction.cpp in the ScriptCanvasDeveloper Gem. class TranslationHelper @@ -109,47 +167,10 @@ namespace ScriptCanvasEditor } // UserDefined - static AZStd::string GetUserDefinedContext(AZStd::string_view contextName) - { - return GetContextName(TranslationContextGroup::ClassMethod, contextName); - } - - static AZStd::string GetUserDefinedKey(AZStd::string_view contextName, TranslationKeyId keyId) - { - return GetClassKey(TranslationContextGroup::ClassMethod, contextName, keyId); - } - static AZStd::string GetUserDefinedNodeKey(AZStd::string_view contextName, AZStd::string_view nodeName, TranslationKeyId keyId) { return GetKey(TranslationContextGroup::ClassMethod, contextName, nodeName, TranslationItemType::Node, keyId); } - - static AZStd::string GetUserDefinedNodeSlotKey(AZStd::string_view contextName, AZStd::string_view nodeName, TranslationItemType itemType, TranslationKeyId keyId, int slotIndex) - { - return GetKey(TranslationContextGroup::ClassMethod, contextName, nodeName, itemType, keyId, slotIndex); - } - //// - - // EBusEvent - static AZStd::string GetEbusHandlerContext(AZStd::string_view busName) - { - return GetContextName(TranslationContextGroup::EbusHandler, busName); - } - - static AZStd::string GetEbusHandlerKey(AZStd::string_view busName, TranslationKeyId keyId) - { - return GetClassKey(TranslationContextGroup::EbusHandler, busName, keyId); - } - - static AZStd::string GetEbusHandlerEventKey(AZStd::string_view busName, AZStd::string_view eventName, TranslationKeyId keyId) - { - return GetKey(TranslationContextGroup::EbusHandler, busName, eventName, TranslationItemType::Node, keyId); - } - - static AZStd::string GetEBusHandlerSlotKey(AZStd::string_view busName, AZStd::string_view eventName, TranslationItemType type, TranslationKeyId keyId, int paramIndex) - { - return GetKey(TranslationContextGroup::EbusHandler, busName, eventName, type, keyId, paramIndex); - } //// static AZStd::string GetKey(TranslationContextGroup group, AZStd::string_view keyBase, AZStd::string_view keyName, TranslationItemType type, TranslationKeyId keyId, int paramIndex = 0) @@ -436,72 +457,6 @@ namespace ScriptCanvasEditor return translated; } - static GraphCanvas::TranslationKeyedString GetEBusHandlerBusIdNameKey() - { - GraphCanvas::TranslationKeyedString keyedString; - keyedString.m_context = "Globals"; - keyedString.m_key = "DEFAULTS_EBUSHANDLER_BUSID_NAME"; - keyedString.SetFallback("BusId"); - - return keyedString; - } - - static GraphCanvas::TranslationKeyedString GetEBusHandlerBusIdTooltipKey() - { - GraphCanvas::TranslationKeyedString keyedString; - keyedString.m_context = "Globals"; - keyedString.m_key = "DEFAULTS_EBUSHANDLER_BUSID_TOOLTIP"; - keyedString.SetFallback("BusId"); - - return keyedString; - } - - static GraphCanvas::TranslationKeyedString GetEBusHandlerOnEventTriggeredNameKey() - { - GraphCanvas::TranslationKeyedString keyedString; - keyedString.m_context = "Globals"; - keyedString.m_key = "DEFAULTS_EBUSHANDLER_ONTRIGGERED_NAME"; - keyedString.SetFallback("Out"); - - return keyedString; - } - - static GraphCanvas::TranslationKeyedString GetEBusHandlerOnEventTriggeredTooltipKey() - { - GraphCanvas::TranslationKeyedString keyedString; - keyedString.m_context = "Globals"; - keyedString.m_key = "DEFAULTS_EBUSHANDLER_ONTRIGGERED_TOOLTIP"; - keyedString.SetFallback("Out"); - - return keyedString; - } - - static GraphCanvas::TranslationKeyedString GetEBusSenderBusIdNameKey() - { - GraphCanvas::TranslationKeyedString keyedString; - keyedString.m_context = "Globals"; - keyedString.m_key = "DEFAULTS_EBUSSENDER_BUSID_NAME"; - keyedString.SetFallback("BusId"); - - return keyedString; - } - - static GraphCanvas::TranslationKeyedString GetEBusSenderBusIdTooltipKey() - { - GraphCanvas::TranslationKeyedString keyedString; - keyedString.m_context = "Globals"; - keyedString.m_key = "DEFAULTS_EBUSSENDER_BUSID_TOOLTIP"; - keyedString.SetFallback("BusId"); - - return keyedString; - } - - // Use the StackedString to index the translation keys as a Json Pointer - static constexpr AZStd::string_view GetAzEventHandlerContextKey() - { - return { "AzEventHandler" }; - } - // Use the StackedString to index the translation keys as a Json Pointer static AZ::StackedString GetAzEventHandlerRootPointer(AZStd::string_view eventName) { @@ -510,5 +465,10 @@ namespace ScriptCanvasEditor return path; } + + + }; + + } diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/CanvasWidget.cpp b/Gems/ScriptCanvas/Code/Editor/View/Widgets/CanvasWidget.cpp index e448f3ea40..dfa39b0047 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/CanvasWidget.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/CanvasWidget.cpp @@ -84,9 +84,10 @@ namespace ScriptCanvasEditor { m_assetId = assetId; - EditorGraphRequests* editorGraphRequests = EditorGraphRequestBus::FindFirstHandler(m_scriptCanvasId); - - editorGraphRequests->SetAssetId(m_assetId); + if (EditorGraphRequests* editorGraphRequests = EditorGraphRequestBus::FindFirstHandler(m_scriptCanvasId)) + { + editorGraphRequests->SetAssetId(m_assetId); + } } const GraphCanvas::ViewId& CanvasWidget::GetViewId() const diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/EBusNodePaletteTreeItemTypes.cpp b/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/EBusNodePaletteTreeItemTypes.cpp index 1af3401f1e..1298911ed5 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/EBusNodePaletteTreeItemTypes.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/EBusNodePaletteTreeItemTypes.cpp @@ -97,23 +97,17 @@ namespace ScriptCanvasEditor , m_isOverload(isOverload) , m_propertyStatus(propertyStatus) { - AZStd::string displayEventName = TranslationHelper::GetKeyTranslation(TranslationContextGroup::EbusSender, m_busName.toUtf8().data(), m_eventName.toUtf8().data(), TranslationItemType::Node, TranslationKeyId::Name); + GraphCanvas::TranslationKey key; + key << "EBusSender" << busName << "methods" << eventName << "details"; - if (displayEventName.empty()) - { - SetName(m_eventName); - } - else - { - SetName(displayEventName.c_str()); - } + GraphCanvas::TranslationRequests::Details details; + details.m_name = eventName; + details.m_subtitle = busName; - AZStd::string displayEventTooltip = TranslationHelper::GetKeyTranslation(TranslationContextGroup::EbusSender, m_busName.toUtf8().data(), m_eventName.toUtf8().data(), TranslationItemType::Node, TranslationKeyId::Tooltip); + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details); - if (!displayEventTooltip.empty()) - { - SetToolTip(displayEventTooltip.c_str()); - } + SetName(details.m_name.c_str()); + SetToolTip(details.m_tooltip.c_str()); SetTitlePalette("MethodNodeTitlePalette"); } @@ -302,23 +296,19 @@ namespace ScriptCanvasEditor , m_busId(busId) , m_eventId(eventId) { - AZStd::string displayEventName = TranslationHelper::GetKeyTranslation(TranslationContextGroup::EbusHandler, m_busName.c_str(), m_eventName.c_str(), TranslationItemType::Node, TranslationKeyId::Name); + GraphCanvas::TranslationKey key; + key << "EBusHandler" << busName << "methods" << eventName << "details"; - if (displayEventName.empty()) + GraphCanvas::TranslationRequests::Details details; + details.m_name = m_eventName; + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details); + if (details.m_name.empty()) { - SetName(m_eventName.c_str()); - } - else - { - SetName(displayEventName.c_str()); + details.m_name = m_eventName; } - AZStd::string displayEventTooltip = TranslationHelper::GetKeyTranslation(TranslationContextGroup::EbusHandler, m_busName.c_str(), m_eventName.c_str(), TranslationItemType::Node, TranslationKeyId::Tooltip); - - if (!displayEventTooltip.empty()) - { - SetToolTip(displayEventTooltip.c_str()); - } + SetName(details.m_name.c_str()); + SetToolTip(details.m_tooltip.c_str()); SetTitlePalette("HandlerNodeTitlePalette"); } diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/EBusNodePaletteTreeItemTypes.h b/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/EBusNodePaletteTreeItemTypes.h index a02b53f5eb..41b2dfdd79 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/EBusNodePaletteTreeItemTypes.h +++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/EBusNodePaletteTreeItemTypes.h @@ -11,6 +11,7 @@ #include "CreateNodeMimeEvent.h" #include +#include "TranslationGeneration.h" namespace ScriptCanvasEditor { @@ -62,6 +63,24 @@ namespace ScriptCanvasEditor ScriptCanvas::PropertyStatus GetPropertyStatus() const; + AZ::IO::Path GetTranslationDataPath() const override + { + return AZ::IO::Path("EBus\\Senders") / GetBusName(); + } + + void GenerateTranslationData() override + { + AZ::BehaviorContext* behaviorContext{}; + AZ::ComponentApplicationBus::BroadcastResult(behaviorContext, &AZ::ComponentApplicationRequests::GetBehaviorContext); + + const char* ebusName = m_busName.toUtf8().data(); + auto behaviorEbus = behaviorContext->m_ebuses.find(ebusName); + + ScriptCanvasEditorTools::TranslationGeneration translation; + translation.TranslateEBus(behaviorEbus->second); + } + + private: bool m_isOverload; QString m_busName; @@ -154,6 +173,22 @@ namespace ScriptCanvasEditor ScriptCanvas::EBusBusId GetBusId() const; ScriptCanvas::EBusEventId GetEventId() const; + AZ::IO::Path GetTranslationDataPath() const override + { + return AZ::IO::Path("EBus\\Handlers") / GetBusName(); + } + + void GenerateTranslationData() override + { + AZ::BehaviorContext* behaviorContext{}; + AZ::ComponentApplicationBus::BroadcastResult(behaviorContext, &AZ::ComponentApplicationRequests::GetBehaviorContext); + + auto behaviorEbus = behaviorContext->m_ebuses.find(m_busName.c_str()); + + ScriptCanvasEditorTools::TranslationGeneration translation; + translation.TranslateEBus(behaviorEbus->second); + } + private: AZStd::string m_busName; AZStd::string m_eventName; diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/GeneralNodePaletteTreeItemTypes.cpp b/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/GeneralNodePaletteTreeItemTypes.cpp index b22264523e..b6bd26fa6c 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/GeneralNodePaletteTreeItemTypes.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/GeneralNodePaletteTreeItemTypes.cpp @@ -82,32 +82,26 @@ namespace ScriptCanvasEditor , m_isOverload(isOverload) , m_propertyStatus(propertyStatus) { - AZStd::string displayMethodName = TranslationHelper::GetKeyTranslation(TranslationContextGroup::ClassMethod, m_className.toUtf8().data(), m_methodName.toUtf8().data(), TranslationItemType::Node, TranslationKeyId::Name); + GraphCanvas::TranslationKey key; - if (displayMethodName.empty()) - { - SetName(m_methodName); - } - else - { - SetName(displayMethodName.c_str()); - } - if (propertyStatus == ScriptCanvas::PropertyStatus::Getter) + AZStd::string updatedMethodName; + if (propertyStatus != ScriptCanvas::PropertyStatus::None) { - SetName(AZStd::string::format("Get %s", GetName().toUtf8().data()).data()); - } - else if (propertyStatus == ScriptCanvas::PropertyStatus::Setter) - { - SetName(AZStd::string::format("Set %s", GetName().toUtf8().data()).data()); + updatedMethodName = (propertyStatus == ScriptCanvas::PropertyStatus::Getter) ? "Get" : "Set"; } + updatedMethodName.append(methodName); - AZStd::string displayEventTooltip = TranslationHelper::GetKeyTranslation(TranslationContextGroup::ClassMethod, m_className.toUtf8().data(), m_methodName.toUtf8().data(), TranslationItemType::Node, TranslationKeyId::Tooltip); + key << "BehaviorClass" << className << "methods" << updatedMethodName << "details"; - if (!displayEventTooltip.empty()) - { - SetToolTip(displayEventTooltip.c_str()); - } + GraphCanvas::TranslationRequests::Details details; + details.m_name = methodName; + details.m_subtitle = className; + + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details); + + SetName(details.m_name.c_str()); + SetToolTip(details.m_tooltip.c_str()); SetTitlePalette("MethodNodeTitlePalette"); } @@ -166,13 +160,14 @@ namespace ScriptCanvasEditor : DraggableNodePaletteTreeItem(nodeModelInformation.m_methodName, ScriptCanvasEditor::AssetEditorId) , m_methodName{ nodeModelInformation.m_methodName } { - SetToolTip(QString::fromUtf8(nodeModelInformation.m_displayName.data(), - aznumeric_cast(nodeModelInformation.m_displayName.size()))); - SetToolTip(QString::fromUtf8(nodeModelInformation.m_toolTip.data(), aznumeric_cast(nodeModelInformation.m_toolTip.size()))); SetTitlePalette("MethodNodeTitlePalette"); + if (!nodeModelInformation.m_displayName.empty()) + { + SetName(nodeModelInformation.m_displayName.c_str()); + } } GraphCanvas::GraphCanvasMimeEvent* GlobalMethodEventPaletteTreeItem::CreateMimeEvent() const @@ -186,6 +181,27 @@ namespace ScriptCanvasEditor return m_methodName; } + AZ::IO::Path GlobalMethodEventPaletteTreeItem::GetTranslationDataPath() const + { + AZStd::string propertyName = m_methodName; + AZ::StringFunc::Replace(propertyName, "::Getter", ""); + AZ::StringFunc::Replace(propertyName, "::Setter", ""); + + AZStd::string filename = GraphCanvas::TranslationKey::Sanitize(propertyName); + + return AZ::IO::Path("Properties") / filename; + } + + void GlobalMethodEventPaletteTreeItem::GenerateTranslationData() + { + AZStd::string propertyName = m_methodName; + AZ::StringFunc::Replace(propertyName, "::Getter", ""); + AZ::StringFunc::Replace(propertyName, "::Setter", ""); + + ScriptCanvasEditorTools::TranslationGeneration translation; + translation.TranslateBehaviorProperty(propertyName); + } + ////////////////////////////// // CreateCustomNodeMimeEvent ////////////////////////////// @@ -230,9 +246,10 @@ namespace ScriptCanvasEditor // CustomNodePaletteTreeItem ////////////////////////////// - CustomNodePaletteTreeItem::CustomNodePaletteTreeItem(const AZ::Uuid& typeId, AZStd::string_view nodeName) - : DraggableNodePaletteTreeItem(nodeName, ScriptCanvasEditor::AssetEditorId) - , m_typeId(typeId) + CustomNodePaletteTreeItem::CustomNodePaletteTreeItem(const ScriptCanvasEditor::CustomNodeModelInformation& info) + : DraggableNodePaletteTreeItem(info.m_displayName, ScriptCanvasEditor::AssetEditorId) + , m_info(info) + , m_typeId(info.m_typeId) { } diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/GeneralNodePaletteTreeItemTypes.h b/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/GeneralNodePaletteTreeItemTypes.h index 38eef7980b..65a5e10cf7 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/GeneralNodePaletteTreeItemTypes.h +++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/GeneralNodePaletteTreeItemTypes.h @@ -10,6 +10,9 @@ #include #include "CreateNodeMimeEvent.h" +#include "NodePaletteModel.h" +#include +#include "TranslationGeneration.h" namespace ScriptCanvasEditor { @@ -56,6 +59,23 @@ namespace ScriptCanvasEditor bool IsOverload() const; ScriptCanvas::PropertyStatus GetPropertyStatus() const; + AZ::IO::Path GetTranslationDataPath() const override + { + return AZ::IO::Path("Classes") / GetClassMethodName(); + } + + void GenerateTranslationData() override + { + AZ::BehaviorContext* behaviorContext{}; + AZ::ComponentApplicationBus::BroadcastResult(behaviorContext, &AZ::ComponentApplicationRequests::GetBehaviorContext); + + const char* className = m_className.toUtf8().data(); + auto behaviorClass = behaviorContext->m_classes.find(className); + + ScriptCanvasEditorTools::TranslationGeneration translation; + translation.TranslateBehaviorClass(behaviorClass->second); + } + private: bool m_isOverload = false; QString m_className; @@ -101,6 +121,10 @@ namespace ScriptCanvasEditor const AZStd::string& GetMethodName() const; + AZ::IO::Path GetTranslationDataPath() const override; + void GenerateTranslationData() override; + + private: AZStd::string m_methodName; }; @@ -137,15 +161,31 @@ namespace ScriptCanvasEditor AZ_CLASS_ALLOCATOR(CustomNodePaletteTreeItem, AZ::SystemAllocator, 0); AZ_RTTI(CustomNodePaletteTreeItem, "{50E75C4D-F59C-4AF6-A6A3-5BAD557E335C}", GraphCanvas::DraggableNodePaletteTreeItem); - CustomNodePaletteTreeItem(const AZ::Uuid& typeId, AZStd::string_view nodeName); + explicit CustomNodePaletteTreeItem(const ScriptCanvasEditor::CustomNodeModelInformation&); ~CustomNodePaletteTreeItem() = default; GraphCanvas::GraphCanvasMimeEvent* CreateMimeEvent() const override; AZ::Uuid GetTypeId() const; + const ScriptCanvasEditor::CustomNodeModelInformation& GetInfo() const { return m_info; } + + AZ::IO::Path GetTranslationDataPath() const override + { + AZStd::string filename = AZStd::string::format("%s_%s", GetInfo().m_categoryPath.c_str(), GetName().toUtf8().data()); + filename = GraphCanvas::TranslationKey::Sanitize(filename); + + return AZ::IO::Path("Nodes") / filename; + } + + void GenerateTranslationData() override + { + ScriptCanvasEditorTools::TranslationGeneration translation; + translation.TranslateNode(m_typeId); + } private: AZ::Uuid m_typeId; + ScriptCanvasEditor::CustomNodeModelInformation m_info; }; // diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/NodePaletteModel.cpp b/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/NodePaletteModel.cpp index 047a07cd0b..f128537e1a 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/NodePaletteModel.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/NodePaletteModel.cpp @@ -32,6 +32,8 @@ #include +AZ_DEFINE_BUDGET(NodePaletteModel); + namespace { // Various Helper Methods @@ -82,11 +84,6 @@ namespace return false; } - bool MethodHasAttribute(const AZ::BehaviorMethod* method, AZ::Crc32 attribute) - { - return AZ::FindAttribute(attribute, method->m_attributes) != nullptr; // warning C4800: 'AZ::Attribute *': forcing value to bool 'true' or 'false' (performance warning) - } - // Checks for and returns the Category attribute from an AZ::AttributeArray AZStd::string GetCategoryPath(const AZ::AttributeArray& attributes, const AZ::BehaviorContext& behaviorContext) { @@ -116,6 +113,9 @@ namespace , ScriptCanvas::PropertyStatus propertyStatus , bool isOverloaded) { + + AZ_PROFILE_SCOPE(NodePaletteModel, "RegisterMethod"); + if (IsDeprecated(method.m_attributes)) { return; @@ -150,6 +150,9 @@ namespace void RegisterGlobalMethod(ScriptCanvasEditor::NodePaletteModel& nodePaletteModel, const AZ::BehaviorContext& behaviorContext, const AZ::BehaviorMethod& behaviorMethod) { + + AZ_PROFILE_SCOPE(NodePaletteModel, "RegisterGlobalMethod"); + const auto isExposableOutcome = ScriptCanvas::IsExposable(behaviorMethod); if (!isExposableOutcome.IsSuccess()) { @@ -176,6 +179,8 @@ namespace //! Retrieve the list of EBuses t hat should not be exposed in the ScriptCanvasEditor Node Palette AZStd::unordered_set GetEBusExcludeSet(const AZ::BehaviorContext& behaviorContext) { + AZ_PROFILE_SCOPE(NodePaletteModel, "GetEBusExcludeSet"); + // We will skip buses that are ONLY registered on classes that derive from EditorComponentBase, // because they don't have a runtime implementation. Buses such as the TransformComponent which // is implemented by both an EditorComponentBase derived class and a Component derived class @@ -252,6 +257,8 @@ namespace void PopulateScriptCanvasDerivedNodes(ScriptCanvasEditor::NodePaletteModel& nodePaletteModel, const AZ::SerializeContext& serializeContext) { + AZ_PROFILE_SCOPE(NodePaletteModel, "PopulateScriptCanvasDerivedNodes"); + // Get all the types. auto EnumerateLibraryDefintionNodes = [&nodePaletteModel, &serializeContext]( const AZ::SerializeContext::ClassData* classData, const AZ::Uuid&) -> bool @@ -333,6 +340,8 @@ namespace void PopulateVariablePalette() { + AZ_PROFILE_SCOPE(NodePaletteModel, "PopulateVariablePalette"); + auto dataRegistry = ScriptCanvas::GetDataRegistry(); for (auto& type : dataRegistry->m_creatableTypes) @@ -347,6 +356,8 @@ namespace void PopulateBehaviorContextGlobalMethods(ScriptCanvasEditor::NodePaletteModel& nodePaletteModel, const AZ::BehaviorContext& behaviorContext) { + AZ_PROFILE_SCOPE(NodePaletteModel, "PopulateBehaviorContextGlobalMethods"); + // BehaviorMethods are not associated with a class // therefore the Uuid is set to Null const AZ::Uuid behaviorMethodUuid = AZ::Uuid::CreateNull(); @@ -377,6 +388,8 @@ namespace void PopulateBehaviorContextGlobalProperties(ScriptCanvasEditor::NodePaletteModel& nodePaletteModel, const AZ::BehaviorContext& behaviorContext) { + AZ_PROFILE_SCOPE(NodePaletteModel, "PopulateBehaviorContextGlobalProperties"); + const AZ::Uuid behaviorMethodUuid = AZ::Uuid::CreateNull(); for (const auto& [propertyName, behaviorProperty] : behaviorContext.m_properties) { @@ -398,7 +411,7 @@ namespace if (behaviorProperty->m_getter && !behaviorProperty->m_setter) { - nodePaletteModel.RegisterGlobalConstant(behaviorContext, *behaviorProperty->m_getter); + nodePaletteModel.RegisterGlobalConstant(behaviorContext, behaviorProperty , *behaviorProperty->m_getter); } else { @@ -419,6 +432,8 @@ namespace void PopulateBehaviorContextClassMethods(ScriptCanvasEditor::NodePaletteModel& nodePaletteModel, const AZ::BehaviorContext& behaviorContext) { + AZ_PROFILE_SCOPE(NodePaletteModel, "PopulateBehaviorContextClassMethods"); + AZ::SerializeContext* serializeContext{}; AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); @@ -456,21 +471,17 @@ namespace { AZStd::string categoryPath; - AZStd::string translationContext = ScriptCanvasEditor::TranslationHelper::GetContextName(ScriptCanvasEditor::TranslationContextGroup::ClassMethod, behaviorClass->m_name); - AZStd::string translationKey = ScriptCanvasEditor::TranslationHelper::GetClassKey(ScriptCanvasEditor::TranslationContextGroup::ClassMethod, behaviorClass->m_name, ScriptCanvasEditor::TranslationKeyId::Category); - AZStd::string translatedCategory = QCoreApplication::translate(translationContext.c_str(), translationKey.c_str()).toUtf8().data(); + GraphCanvas::TranslationKey key; + key << "BehaviorClass" << behaviorClass->m_name.c_str() << "details"; - if (translatedCategory != translationKey) + GraphCanvas::TranslationRequests::Details details; + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details); + + categoryPath = details.m_category; + + if (categoryPath.empty()) { - categoryPath = translatedCategory; - } - else - { - AZStd::string behaviorContextCategory = GetCategoryPath(behaviorClass->m_attributes, behaviorContext); - if (!behaviorContextCategory.empty()) - { - categoryPath = behaviorContextCategory; - } + categoryPath = GetCategoryPath(behaviorClass->m_attributes, behaviorContext); } auto dataRegistry = ScriptCanvas::GetDataRegistry(); @@ -507,15 +518,13 @@ namespace categoryPath.append("/"); - AZStd::string displayName = ScriptCanvasEditor::TranslationHelper::GetClassKeyTranslation(ScriptCanvasEditor::TranslationContextGroup::ClassMethod, classIter.first, ScriptCanvasEditor::TranslationKeyId::Name); - - if (displayName.empty()) + if (details.m_name.empty()) { categoryPath.append(classNamePretty.c_str()); } else { - categoryPath.append(displayName.c_str()); + categoryPath.append(details.m_name.c_str()); } for (auto property : behaviorClass->m_properties) @@ -552,6 +561,9 @@ namespace void PopulateBehaviorContextOverloadedMethods(ScriptCanvasEditor::NodePaletteModel& nodePaletteModel, const AZ::BehaviorContext& behaviorContext) { + AZ_PROFILE_SCOPE(NodePaletteModel, "PopulateBehaviorContextOverloadedMethods"); + + for (const AZ::ExplicitOverloadInfo& explicitOverload : behaviorContext.m_explicitOverloads) { RegisterMethod(nodePaletteModel, behaviorContext, explicitOverload.m_categoryPath, nullptr, explicitOverload.m_name, *explicitOverload.m_overloads.begin()->first, ScriptCanvas::PropertyStatus::None, true); @@ -561,6 +573,8 @@ namespace void PopulateBehaviorContextEBusHandler(ScriptCanvasEditor::NodePaletteModel& nodePaletteModel, const AZ::BehaviorContext& behaviorContext, const AZ::BehaviorEBus& behaviorEbus) { + AZ_PROFILE_SCOPE(NodePaletteModel, "PopulateBehaviorContextEBusHandler"); + if (AZ::ScopedBehaviorEBusHandler handler{ behaviorEbus }; handler) { auto excludeEbusAttributeData = azdynamic_cast*>( @@ -573,32 +587,17 @@ namespace const AZ::BehaviorEBusHandler::EventArray& events(handler->GetEvents()); if (!events.empty()) { - AZStd::string translationContext = ScriptCanvasEditor::TranslationHelper::GetContextName(ScriptCanvasEditor::TranslationContextGroup::EbusHandler, behaviorEbus.m_name); - AZStd::string categoryPath; + GraphCanvas::TranslationKey key; + key << "EBusHandler" << behaviorEbus.m_name.c_str() << "details"; + + GraphCanvas::TranslationRequests::Details details; + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details); + + AZStd::string categoryPath = details.m_category.empty() ? GetCategoryPath(behaviorEbus.m_attributes, behaviorContext) : details.m_category; + + // Treat the EBusHandler name as a Category key in order to allow multiple buses to be merged into a single Category. { - AZStd::string translationKey = ScriptCanvasEditor::TranslationHelper::GetClassKey(ScriptCanvasEditor::TranslationContextGroup::EbusHandler, behaviorEbus.m_name, ScriptCanvasEditor::TranslationKeyId::Category); - AZStd::string translatedCategory = QCoreApplication::translate(translationContext.c_str(), translationKey.c_str()).toUtf8().data(); - - if (translatedCategory != translationKey) - { - categoryPath = translatedCategory; - } - else - { - AZStd::string behaviourContextCategory = GetCategoryPath(behaviorEbus.m_attributes, behaviorContext); - if (!behaviourContextCategory.empty()) - { - categoryPath = behaviourContextCategory; - } - } - } - - // Treat the EBusHandler name as a Category key in order to allow multiple busses to be merged into a single Category. - { - AZStd::string translationKey = ScriptCanvasEditor::TranslationHelper::GetClassKey(ScriptCanvasEditor::TranslationContextGroup::EbusHandler, behaviorEbus.m_name, ScriptCanvasEditor::TranslationKeyId::Name); - AZStd::string translatedName = QCoreApplication::translate(translationContext.c_str(), translationKey.c_str()).toUtf8().data(); - if (!categoryPath.empty()) { categoryPath.append("/"); @@ -608,9 +607,9 @@ namespace categoryPath = "Other/"; } - if (translatedName != translationKey) + if (!details.m_name.empty()) { - categoryPath.append(translatedName.c_str()); + categoryPath.append(details.m_name.c_str()); } else { @@ -629,31 +628,22 @@ namespace void PopulateBehaviorContextEBusEventMethods(ScriptCanvasEditor::NodePaletteModel& nodePaletteModel, const AZ::BehaviorContext& behaviorContext, const AZ::BehaviorEBus& behaviorEbus) { + AZ_PROFILE_SCOPE(NodePaletteModel, "PopulateBehaviorContextEBusEventMethods"); + if (!behaviorEbus.m_events.empty()) { - AZStd::string categoryPath; + GraphCanvas::TranslationKey key; + key << "EBusSender" << behaviorEbus.m_name.c_str() << "details"; - AZStd::string translationContext = ScriptCanvasEditor::TranslationHelper::GetContextName(ScriptCanvasEditor::TranslationContextGroup::EbusSender, behaviorEbus.m_name); - AZStd::string translationKey = ScriptCanvasEditor::TranslationHelper::GetClassKey(ScriptCanvasEditor::TranslationContextGroup::EbusSender, behaviorEbus.m_name, ScriptCanvasEditor::TranslationKeyId::Category); - AZStd::string translatedCategory = QCoreApplication::translate(translationContext.c_str(), translationKey.c_str()).toUtf8().data(); + GraphCanvas::TranslationRequests::Details details; + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details); - if (translatedCategory != translationKey) - { - categoryPath = translatedCategory; - } - else - { - AZStd::string behaviourContextCategory = GetCategoryPath(behaviorEbus.m_attributes, behaviorContext); - if (!behaviourContextCategory.empty()) - { - categoryPath = behaviourContextCategory; - } - } + AZStd::string categoryPath = details.m_category.empty() ? GetCategoryPath(behaviorEbus.m_attributes, behaviorContext) : details.m_category; // Parent - AZStd::string displayName = ScriptCanvasEditor::TranslationHelper::GetClassKeyTranslation(ScriptCanvasEditor::TranslationContextGroup::EbusSender, behaviorEbus.m_name, ScriptCanvasEditor::TranslationKeyId::Name); + AZStd::string displayName = details.m_name; - // Treat the EBus name as a Category key in order to allow multiple busses to be merged into a single Category. + // Treat the EBus name as a Category key in order to allow multiple buses to be merged into a single Category. if (!categoryPath.empty()) { categoryPath.append("/"); @@ -663,18 +653,18 @@ namespace categoryPath = "Other/"; } - if (displayName.empty()) + if (!details.m_name.empty()) { - categoryPath.append(behaviorEbus.m_name.c_str()); + categoryPath.append(details.m_name.c_str()); } else { - categoryPath.append(displayName.c_str()); + categoryPath.append(behaviorEbus.m_name.c_str()); } ScriptCanvasEditor::CategoryInformation ebusCategoryInformation; - ebusCategoryInformation.m_tooltip = ScriptCanvasEditor::TranslationHelper::GetClassKeyTranslation(ScriptCanvasEditor::TranslationContextGroup::EbusSender, behaviorEbus.m_name, ScriptCanvasEditor::TranslationKeyId::Tooltip); + ebusCategoryInformation.m_tooltip = details.m_tooltip; nodePaletteModel.RegisterCategoryInformation(categoryPath, ebusCategoryInformation); @@ -700,6 +690,7 @@ namespace void PopulateBehaviorContextEBuses(ScriptCanvasEditor::NodePaletteModel& nodePaletteModel, const AZ::BehaviorContext& behaviorContext) { + AZ_PROFILE_SCOPE(NodePaletteModel, "PopulateBehaviorContextEBuses"); AZStd::unordered_set skipBuses = GetEBusExcludeSet(behaviorContext); for (const auto& [ebusName, behaviorEbus] : behaviorContext.m_ebuses) @@ -758,10 +749,13 @@ namespace } } + // Helper function for populating the node palette model. // Pulled out just to make the tabbing a bit nicer, since it's a huge method. void PopulateNodePaletteModel(ScriptCanvasEditor::NodePaletteModel& nodePaletteModel) { + AZ_PROFILE_SCOPE(NodePaletteModel, "PopulateNodePaletteModel"); + AZ::SerializeContext* serializeContext = nullptr; AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); @@ -791,8 +785,10 @@ namespace // Populates the NodePalette with EBus Event method nodes and EBus Event handler nodes PopulateBehaviorContextEBuses(nodePaletteModel, *behaviorContext); + // Populates the NodePalette with Methods reflected directly on the BehaviorContext PopulateBehaviorContextGlobalMethods(nodePaletteModel, *behaviorContext); + // Populates the NodePalette with Properties reflected directly on the BehaviorContext PopulateBehaviorContextGlobalProperties(nodePaletteModel, *behaviorContext); } @@ -881,6 +877,7 @@ namespace ScriptCanvasEditor void NodePaletteModel::RepopulateModel() { + AZ_PROFILE_FUNCTION(ScriptCanvas); ClearRegistry(); PopulateNodePaletteModel((*this)); @@ -895,6 +892,8 @@ namespace ScriptCanvasEditor void NodePaletteModel::RegisterCustomNode(AZStd::string_view categoryPath, const AZ::Uuid& uuid, AZStd::string_view name, const AZ::SerializeContext::ClassData* classData) { + + AZ_PROFILE_SCOPE(NodePaletteModel, "NodePaletteModel::RegisterCustomNode"); ScriptCanvas::NodeTypeIdentifier nodeIdentifier = ScriptCanvas::NodeUtils::ConstructCustomNodeIdentifier(uuid); auto mapIter = m_registeredNodes.find(nodeIdentifier); @@ -905,47 +904,38 @@ namespace ScriptCanvasEditor customNodeInformation->m_nodeIdentifier = nodeIdentifier; customNodeInformation->m_typeId = uuid; - customNodeInformation->m_displayName = name; + customNodeInformation->m_categoryPath = categoryPath; bool isDeprecated(false); if (classData && classData->m_editData && classData->m_editData->m_name) { - auto nodeContextName = ScriptCanvasEditor::Nodes::GetContextName(*classData); - auto contextName = ScriptCanvasEditor::TranslationHelper::GetContextName(ScriptCanvasEditor::TranslationContextGroup::ClassMethod, nodeContextName); + GraphCanvas::TranslationKey key; + key << "ScriptCanvas::Node" << classData->m_typeId.ToString().c_str() << "details"; - GraphCanvas::TranslationKeyedString nodeKeyedString({}, contextName); - nodeKeyedString.m_key = ScriptCanvasEditor::TranslationHelper::GetKey(ScriptCanvasEditor::TranslationContextGroup::ClassMethod, nodeContextName, classData->m_editData->m_name, ScriptCanvasEditor::TranslationItemType::Node, ScriptCanvasEditor::TranslationKeyId::Name); - customNodeInformation->m_displayName = nodeKeyedString.GetDisplayString(); + GraphCanvas::TranslationRequests::Details details; + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details); - GraphCanvas::TranslationKeyedString tooltipKeyedString(AZStd::string(), nodeKeyedString.m_context); - tooltipKeyedString.m_key = ScriptCanvasEditor::TranslationHelper::GetKey(ScriptCanvasEditor::TranslationContextGroup::ClassMethod, nodeContextName, classData->m_editData->m_name, ScriptCanvasEditor::TranslationItemType::Node, ScriptCanvasEditor::TranslationKeyId::Tooltip); + if (details.m_name.empty()) + { + details.m_name = classData->m_editData->m_name; + details.m_tooltip = classData->m_editData->m_description; + } - customNodeInformation->m_toolTip = tooltipKeyedString.GetDisplayString(); + customNodeInformation->m_displayName = details.m_name; + customNodeInformation->m_toolTip = details.m_tooltip; + + if (!details.m_category.empty()) + { + customNodeInformation->m_categoryPath = details.m_category; + } if (customNodeInformation->m_displayName.empty()) { customNodeInformation->m_displayName = classData->m_editData->m_name; } - GraphCanvas::TranslationKeyedString categoryKeyedString(ScriptCanvasEditor::Nodes::GetCategoryName(*classData), nodeKeyedString.m_context); - categoryKeyedString.m_key = ScriptCanvasEditor::TranslationHelper::GetKey(ScriptCanvasEditor::TranslationContextGroup::ClassMethod, nodeContextName, classData->m_editData->m_name, ScriptCanvasEditor::TranslationItemType::Node, ScriptCanvasEditor::TranslationKeyId::Category); - - customNodeInformation->m_categoryPath = categoryKeyedString.GetDisplayString(); - - if (customNodeInformation->m_categoryPath.empty()) - { - if (contextName.empty()) - { - customNodeInformation->m_categoryPath = categoryPath; - } - else - { - customNodeInformation->m_categoryPath = contextName; - } - } - auto editorDataElement = classData->m_editData->FindElementData(AZ::Edit::ClassElements::EditorData); if (editorDataElement) @@ -1003,11 +993,13 @@ namespace ScriptCanvasEditor ( const AZStd::string& categoryPath , const AZStd::string& methodClass , const AZStd::string& methodName - , const AZ::BehaviorMethod* behaviorMethod - , const AZ::BehaviorContext* behaviorContext + , const AZ::BehaviorMethod* + , const AZ::BehaviorContext* , ScriptCanvas::PropertyStatus propertyStatus , bool isOverload) { + AZ_PROFILE_SCOPE(NodePaletteModel, "NodePaletteModel::RegisterClassNode"); + ScriptCanvas::NodeTypeIdentifier nodeIdentifier = isOverload ? ScriptCanvas::NodeUtils::ConstructMethodOverloadedNodeIdentifier(methodName) : ScriptCanvas::NodeUtils::ConstructMethodNodeIdentifier(methodClass, methodName, propertyStatus); auto registerIter = m_registeredNodes.find(nodeIdentifier); @@ -1022,44 +1014,41 @@ namespace ScriptCanvasEditor methodModelInformation->m_propertyStatus = propertyStatus; methodModelInformation->m_titlePaletteOverride = "MethodNodeTitlePalette"; - methodModelInformation->m_displayName = TranslationHelper::GetKeyTranslation(TranslationContextGroup::ClassMethod, methodClass.c_str(), methodName.c_str(), TranslationItemType::Node, TranslationKeyId::Name); + GraphCanvas::TranslationKey catkey; + catkey << "BehaviorClass" << methodClass.c_str() << "details"; + GraphCanvas::TranslationRequests::Details catdetails; + GraphCanvas::TranslationRequestBus::BroadcastResult(catdetails, &GraphCanvas::TranslationRequests::GetDetails, catkey, catdetails); - if (methodModelInformation->m_displayName.empty()) + GraphCanvas::TranslationKey key; + + AZStd::string updatedMethodName; + if (propertyStatus != ScriptCanvas::PropertyStatus::None) { - methodModelInformation->m_displayName = methodName; + updatedMethodName = (propertyStatus == ScriptCanvas::PropertyStatus::Getter) ? "Get" : "Set"; } + updatedMethodName += methodName; + key << "BehaviorClass" << methodClass.c_str() << "methods" << updatedMethodName << "details"; - methodModelInformation->m_toolTip = TranslationHelper::GetKeyTranslation(TranslationContextGroup::ClassMethod, methodClass.c_str(), methodName.c_str(), TranslationItemType::Node, TranslationKeyId::Tooltip); + GraphCanvas::TranslationRequests::Details details; + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details); - GraphCanvas::TranslationKeyedString methodCategoryString; - methodCategoryString.m_context = ScriptCanvasEditor::TranslationHelper::GetContextName(ScriptCanvasEditor::TranslationContextGroup::ClassMethod, methodClass.c_str()); - methodCategoryString.m_key = ScriptCanvasEditor::TranslationHelper::GetKey(ScriptCanvasEditor::TranslationContextGroup::ClassMethod, methodClass.c_str(), methodName.c_str(), ScriptCanvasEditor::TranslationItemType::Node, ScriptCanvasEditor::TranslationKeyId::Category); - - methodModelInformation->m_categoryPath = methodCategoryString.GetDisplayString(); + methodModelInformation->m_displayName = details.m_name.empty() ? updatedMethodName : details.m_name; + methodModelInformation->m_toolTip = details.m_tooltip; + methodModelInformation->m_categoryPath = categoryPath; if (methodModelInformation->m_categoryPath.empty()) { - if (!MethodHasAttribute(behaviorMethod, AZ::ScriptCanvasAttributes::FloatingFunction)) - { - methodModelInformation->m_categoryPath = categoryPath; - } - else if (MethodHasAttribute(behaviorMethod, AZ::Script::Attributes::Category)) - { - methodModelInformation->m_categoryPath = GetCategoryPath(behaviorMethod->m_attributes, (*behaviorContext)); - } - - if (methodModelInformation->m_categoryPath.empty()) - { - methodModelInformation->m_categoryPath = "Other"; - } + methodModelInformation->m_categoryPath = "Other"; } m_registeredNodes.emplace(AZStd::make_pair(nodeIdentifier, methodModelInformation)); } } - void NodePaletteModel::RegisterGlobalConstant(const AZ::BehaviorContext& behaviorContext, const AZ::BehaviorMethod& behaviorMethod) + void NodePaletteModel::RegisterGlobalConstant(const AZ::BehaviorContext&, const AZ::BehaviorProperty* behaviorProperty, const AZ::BehaviorMethod& behaviorMethod) { + AZ_PROFILE_SCOPE(NodePaletteModel, "NodePaletteModel::RegisterGlobalConstant"); + // Construct Node Identifier using the BehaviorMethod name and the ScriptCanvas Method typeid ScriptCanvas::NodeTypeIdentifier nodeIdentifier = ScriptCanvas::NodeUtils::ConstructGlobalMethodNodeIdentifier(behaviorMethod.m_name); @@ -1068,40 +1057,39 @@ namespace ScriptCanvasEditor if (auto registerIter = m_registeredNodes.find(nodeIdentifier); registerIter == m_registeredNodes.end()) { auto methodModelInformation = AZStd::make_unique(); - methodModelInformation->m_methodName = behaviorMethod.m_name; methodModelInformation->m_nodeIdentifier = nodeIdentifier; + methodModelInformation->m_methodName = behaviorMethod.m_name; methodModelInformation->m_titlePaletteOverride = "MethodNodeTitlePalette"; - methodModelInformation->m_displayName = TranslationHelper::GetGlobalMethodKeyTranslation(methodModelInformation->m_methodName, - TranslationItemType::Node, TranslationKeyId::Name); - methodModelInformation->m_toolTip = TranslationHelper::GetGlobalMethodKeyTranslation(methodModelInformation->m_methodName, - TranslationItemType::Node, TranslationKeyId::Tooltip); - methodModelInformation->m_categoryPath = TranslationHelper::GetGlobalMethodKeyTranslation(methodModelInformation->m_methodName, - TranslationItemType::Node, TranslationKeyId::Category); + AZStd::string name = behaviorProperty->m_name; + AZ::StringFunc::Replace(name, "::Getter", ""); + AZ::StringFunc::Replace(name, "::Setter", ""); - if (methodModelInformation->m_displayName.empty()) - { - methodModelInformation->m_displayName = methodModelInformation->m_methodName; - } + GraphCanvas::TranslationKey key; + key << "Constant" << name << "details"; + + GraphCanvas::TranslationRequests::Details details; + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details); + + + methodModelInformation->m_displayName = details.m_name; + methodModelInformation->m_toolTip = details.m_tooltip; + methodModelInformation->m_categoryPath = details.m_category; if (methodModelInformation->m_categoryPath.empty()) { - methodModelInformation->m_categoryPath = GetCategoryPath(behaviorMethod.m_attributes, behaviorContext); - // Default to making the Category for Global Methods to be informative that the method - // is registered with the Behavior Context - if (methodModelInformation->m_categoryPath.empty()) - { - methodModelInformation->m_categoryPath = "Constants"; - } + methodModelInformation->m_categoryPath = "Constants"; } m_registeredNodes.emplace(nodeIdentifier, methodModelInformation.release()); } } - void NodePaletteModel::RegisterMethodNode(const AZ::BehaviorContext& behaviorContext, const AZ::BehaviorMethod& behaviorMethod) + void NodePaletteModel::RegisterMethodNode(const AZ::BehaviorContext&, const AZ::BehaviorMethod& behaviorMethod) { + AZ_PROFILE_SCOPE(NodePaletteModel, "NodePaletteModel::RegisterMethodNode"); + // Construct Node Identifier using the BehaviorMethod name and the ScriptCanvas Method typeid ScriptCanvas::NodeTypeIdentifier nodeIdentifier = ScriptCanvas::NodeUtils::ConstructGlobalMethodNodeIdentifier(behaviorMethod.m_name); @@ -1112,31 +1100,17 @@ namespace ScriptCanvasEditor auto methodModelInformation = AZStd::make_unique(); methodModelInformation->m_methodName = behaviorMethod.m_name; methodModelInformation->m_nodeIdentifier = nodeIdentifier; - methodModelInformation->m_titlePaletteOverride = "MethodNodeTitlePalette"; - methodModelInformation->m_displayName = TranslationHelper::GetGlobalMethodKeyTranslation(methodModelInformation->m_methodName, - TranslationItemType::Node, TranslationKeyId::Name); - methodModelInformation->m_toolTip = TranslationHelper::GetGlobalMethodKeyTranslation(methodModelInformation->m_methodName, - TranslationItemType::Node, TranslationKeyId::Tooltip); - methodModelInformation->m_categoryPath = TranslationHelper::GetGlobalMethodKeyTranslation(methodModelInformation->m_methodName, - TranslationItemType::Node, TranslationKeyId::Category); + GraphCanvas::TranslationKey key; + key << "BehaviorMethod" << behaviorMethod.m_name.c_str() << "details"; - if (methodModelInformation->m_displayName.empty()) - { - methodModelInformation->m_displayName = methodModelInformation->m_methodName; - } + GraphCanvas::TranslationRequests::Details details; + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details); - if (methodModelInformation->m_categoryPath.empty()) - { - methodModelInformation->m_categoryPath = GetCategoryPath(behaviorMethod.m_attributes, behaviorContext); - // Default to making the Category for Global Methods to be informative that the method - // is registered with the Behavior Context - if (methodModelInformation->m_categoryPath.empty()) - { - methodModelInformation->m_categoryPath = "Behavior Context: Global Methods"; - } - } + methodModelInformation->m_displayName = details.m_name.empty() ? behaviorMethod.m_name : details.m_name; + methodModelInformation->m_toolTip = details.m_tooltip.empty() ? "" : details.m_tooltip; + methodModelInformation->m_categoryPath = details.m_category.empty() ? "Behavior Context: Global Methods" : details.m_category; m_registeredNodes.emplace(nodeIdentifier, methodModelInformation.release()); } @@ -1144,6 +1118,8 @@ namespace ScriptCanvasEditor void NodePaletteModel::RegisterEBusHandlerNodeModelInformation(AZStd::string_view categoryPath, AZStd::string_view busName, AZStd::string_view eventName, const ScriptCanvas::EBusBusId& busId, const AZ::BehaviorEBusHandler::BusForwarderEvent& forwardEvent) { + + AZ_PROFILE_SCOPE(NodePaletteModel, "NodePaletteModel::RegisterEBusHandlerNodeModelInformation"); ScriptCanvas::NodeTypeIdentifier nodeIdentifier = ScriptCanvas::NodeUtils::ConstructEBusEventReceiverIdentifier(busId, forwardEvent.m_eventId); auto nodeIter = m_registeredNodes.find(nodeIdentifier); @@ -1161,18 +1137,14 @@ namespace ScriptCanvasEditor handlerInformation->m_busId = busId; handlerInformation->m_eventId = forwardEvent.m_eventId; - AZStd::string displayEventName = TranslationHelper::GetKeyTranslation(TranslationContextGroup::EbusHandler, busName.data(), eventName.data(), TranslationItemType::Node, TranslationKeyId::Name); + GraphCanvas::TranslationKey key; + key << "EBusHandler" << busName << "methods" << eventName << "details"; - if (displayEventName.empty()) - { - handlerInformation->m_displayName = eventName; - } - else - { - handlerInformation->m_displayName = displayEventName; - } + GraphCanvas::TranslationRequests::Details details; + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details); - handlerInformation->m_toolTip = TranslationHelper::GetKeyTranslation(TranslationContextGroup::EbusHandler, busName.data(), eventName.data(), TranslationItemType::Node, TranslationKeyId::Tooltip); + handlerInformation->m_displayName = details.m_name.empty() ? eventName : details.m_name.c_str(); + handlerInformation->m_toolTip = details.m_tooltip.empty() ? "" : details.m_tooltip; m_registeredNodes.emplace(AZStd::make_pair(nodeIdentifier, handlerInformation)); } @@ -1188,6 +1160,8 @@ namespace ScriptCanvasEditor , ScriptCanvas::PropertyStatus propertyStatus , bool isOverload) { + AZ_PROFILE_SCOPE(NodePaletteModel, "NodePaletteModel::RegisterEBusSenderNodeModelInformation"); + ScriptCanvas::NodeTypeIdentifier nodeIdentifier = isOverload ? ScriptCanvas::NodeUtils::ConstructEBusEventSenderOverloadedIdentifier(busId, eventId) : ScriptCanvas::NodeUtils::ConstructEBusEventSenderIdentifier(busId, eventId); auto nodeIter = m_registeredNodes.find(nodeIdentifier); @@ -1207,18 +1181,14 @@ namespace ScriptCanvasEditor senderInformation->m_busId = busId; senderInformation->m_eventId = eventId; - AZStd::string displayEventName = TranslationHelper::GetKeyTranslation(TranslationContextGroup::EbusSender, busName.data(), eventName.data(), TranslationItemType::Node, TranslationKeyId::Name); + GraphCanvas::TranslationKey key; + key << "EBusSender" << busName << "methods" << eventName << "details"; - if (displayEventName.empty()) - { - senderInformation->m_displayName = eventName; - } - else - { - senderInformation->m_displayName = displayEventName; - } + GraphCanvas::TranslationRequests::Details details; + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details); - senderInformation->m_toolTip = TranslationHelper::GetKeyTranslation(TranslationContextGroup::EbusSender, busName.data(), eventName.data(), TranslationItemType::Node, TranslationKeyId::Tooltip); + senderInformation->m_displayName = details.m_name.empty() ? eventName : details.m_name.c_str(); + senderInformation->m_toolTip = details.m_tooltip.empty() ? "" : details.m_tooltip; m_registeredNodes.emplace(AZStd::make_pair(nodeIdentifier, senderInformation)); } @@ -1226,6 +1196,8 @@ namespace ScriptCanvasEditor AZStd::vector NodePaletteModel::RegisterScriptEvent(ScriptEvents::ScriptEventsAsset* scriptEventAsset) { + + AZ_PROFILE_SCOPE(NodePaletteModel, "NodePaletteModel::RegisterScriptEvent"); const ScriptEvents::ScriptEvent& scriptEvent = scriptEventAsset->m_definition; ScriptCanvas::EBusBusId busId = scriptEventAsset->GetBusId(); @@ -1236,7 +1208,7 @@ namespace ScriptCanvasEditor AZStd::vector identifiers; - // Each event has a handler and a reciever + // Each event has a handler and a receiver identifiers.reserve(methods.size() * 2); for (const auto& method : methods) @@ -1444,6 +1416,8 @@ namespace ScriptCanvasEditor AZStd::vector NodePaletteModel::ProcessAsset(AzToolsFramework::AssetBrowser::AssetBrowserEntry* entry) { + AZ_PROFILE_SCOPE(NodePaletteModel, "NodePaletteModel::RegisterScriptEvent"); + AZStd::lock_guard myLocker(m_mutex); if (entry) diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/NodePaletteModel.h b/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/NodePaletteModel.h index 28d627af01..b228650d58 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/NodePaletteModel.h +++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/NodePaletteModel.h @@ -80,7 +80,8 @@ namespace ScriptCanvasEditor void RegisterCustomNode(AZStd::string_view categoryPath, const AZ::Uuid& uuid, AZStd::string_view name, const AZ::SerializeContext::ClassData* classData); void RegisterClassNode(const AZStd::string& categoryPath, const AZStd::string& methodClass, const AZStd::string& methodName, const AZ::BehaviorMethod* behaviorMethod, const AZ::BehaviorContext* behaviorContext, ScriptCanvas::PropertyStatus propertyStatus, bool isOverload); void RegisterMethodNode(const AZ::BehaviorContext& behaviorContext, const AZ::BehaviorMethod& behaviorMethod); - void RegisterGlobalConstant(const AZ::BehaviorContext& behaviorContext, const AZ::BehaviorMethod& behaviorMethod); + void RegisterGlobalConstant(const AZ::BehaviorContext& behaviorContext, const AZ::BehaviorProperty* behaviorProperty, const AZ::BehaviorMethod& behaviorMethod); + void RegisterEBusHandlerNodeModelInformation(AZStd::string_view categoryPath, AZStd::string_view busName, AZStd::string_view eventName, const ScriptCanvas::EBusBusId& busId, const AZ::BehaviorEBusHandler::BusForwarderEvent& forwardEvent); void RegisterEBusSenderNodeModelInformation(AZStd::string_view categoryPath, AZStd::string_view busName, AZStd::string_view eventName, const ScriptCanvas::EBusBusId& busId, const ScriptCanvas::EBusEventId& eventId, const AZ::BehaviorEBusEventSender& eventSender, ScriptCanvas::PropertyStatus propertyStatus, bool isOverload); diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/ScriptCanvasNodePaletteDockWidget.cpp b/Gems/ScriptCanvas/Code/Editor/View/Widgets/ScriptCanvasNodePaletteDockWidget.cpp index 9e51c1896f..9b97d707d0 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/ScriptCanvasNodePaletteDockWidget.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/ScriptCanvasNodePaletteDockWidget.cpp @@ -63,6 +63,7 @@ #include #include #include +#include "AzQtComponents/Utilities/DesktopUtilities.h" namespace ScriptCanvasEditor { @@ -99,7 +100,7 @@ namespace ScriptCanvasEditor if (auto customModelInformation = azrtti_cast(modelInformation)) { - createdItem = parentItem->CreateChildNode(customModelInformation->m_typeId, customModelInformation->m_displayName); + createdItem = parentItem->CreateChildNode(*customModelInformation); createdItem->SetToolTip(QString(customModelInformation->m_toolTip.c_str())); } else if (auto methodNodeModelInformation = azrtti_cast(modelInformation)) @@ -660,6 +661,11 @@ namespace ScriptCanvasEditor , m_previousCycleAction(nullptr) , m_ignoreSelectionChanged(false) { + + GraphCanvas::NodePaletteTreeView* treeView = GetTreeView(); + + treeView->setContextMenuPolicy(Qt::ContextMenuPolicy::ActionsContextMenu); + if (!paletteConfig.m_isInContextMenu) { QMenu* creationMenu = new QMenu(); @@ -677,10 +683,11 @@ namespace ScriptCanvasEditor AddSearchCustomizationWidget(m_newCustomEvent); - GraphCanvas::NodePaletteTreeView* treeView = GetTreeView(); + { m_nextCycleAction = new QAction(treeView); + m_nextCycleAction->setText(tr("Next Instance in Graph")); m_nextCycleAction->setShortcut(QKeySequence(Qt::Key_F8)); treeView->addAction(m_nextCycleAction); @@ -690,6 +697,7 @@ namespace ScriptCanvasEditor { m_previousCycleAction = new QAction(treeView); + m_previousCycleAction->setText(tr("Previous Instance in Graph")); m_previousCycleAction->setShortcut(QKeySequence(Qt::Key_F7)); treeView->addAction(m_previousCycleAction); @@ -699,6 +707,23 @@ namespace ScriptCanvasEditor QObject::connect(treeView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &NodePaletteDockWidget::OnTreeSelectionChanged); QObject::connect(treeView, &GraphCanvas::NodePaletteTreeView::OnTreeItemDoubleClicked, this, &NodePaletteDockWidget::HandleTreeItemDoubleClicked); + + { + m_openTranslationData = new QAction(treeView); + m_openTranslationData->setText("Explore Translation Data"); + treeView->addAction(m_openTranslationData); + + QObject::connect(m_openTranslationData, &QAction::triggered, this, &NodePaletteDockWidget::OpenTranslationData); + } + + { + m_generateTranslation = new QAction(treeView); + m_generateTranslation->setText("Generate Translation"); + treeView->addAction(m_generateTranslation); + + QObject::connect(m_generateTranslation, &QAction::triggered, this, &NodePaletteDockWidget::GenerateTranslation); + } + } ConfigureSearchCustomizationMargins(QMargins(0, 0, 0, 0), 0); @@ -781,6 +806,7 @@ namespace ScriptCanvasEditor { m_nextCycleAction->setEnabled(true); m_previousCycleAction->setEnabled(true); + m_openTranslationData->setEnabled(true); } } @@ -793,6 +819,7 @@ namespace ScriptCanvasEditor { m_nextCycleAction->setEnabled(false); m_previousCycleAction->setEnabled(false); + m_openTranslationData->setEnabled(false); } } @@ -816,6 +843,84 @@ namespace ScriptCanvasEditor CycleToNextNode(); } + static AZStd::string GetGemPath(const AZStd::string& gemName) + { + if (auto settingsRegistry = AZ::Interface::Get(); settingsRegistry != nullptr) + { + AZ::IO::Path gemSourceAssetDirectories; + AZStd::vector gemInfos; + if (AzFramework::GetGemsInfo(gemInfos, *settingsRegistry)) + { + auto FindGemByName = [gemName](const AzFramework::GemInfo& gemInfo) + { + return gemInfo.m_gemName == gemName; + }; + // Gather unique list of Gem Paths from the Settings Registry + + auto foundIt = AZStd::find_if(gemInfos.begin(), gemInfos.end(), FindGemByName); + if (foundIt != gemInfos.end()) + { + const AzFramework::GemInfo& gemInfo = *foundIt; + for (const AZ::IO::Path& absoluteSourcePath : gemInfo.m_absoluteSourcePaths) + { + gemSourceAssetDirectories = (absoluteSourcePath / gemInfo.GetGemAssetFolder()); + } + + return gemSourceAssetDirectories.c_str(); + } + } + } + return ""; + } + + void NodePaletteDockWidget::GenerateTranslation() + { + QModelIndexList indexList = GetTreeView()->selectionModel()->selectedRows(); + + if (indexList.size() == 1) + { + QSortFilterProxyModel* filterModel = static_cast(GetTreeView()->model()); + + for (const QModelIndex& index : indexList) + { + QModelIndex sourceIndex = filterModel->mapToSource(index); + + GraphCanvas::NodePaletteTreeItem* nodePaletteItem = static_cast(sourceIndex.internalPointer()); + nodePaletteItem->GenerateTranslationData(); + } + } + } + + void NodePaletteDockWidget::OpenTranslationData() + { + QModelIndexList indexList = GetTreeView()->selectionModel()->selectedRows(); + + if (indexList.size() == 1) + { + QSortFilterProxyModel* filterModel = static_cast(GetTreeView()->model()); + + for (const QModelIndex& index : indexList) + { + QModelIndex sourceIndex = filterModel->mapToSource(index); + + GraphCanvas::NodePaletteTreeItem* nodePaletteItem = static_cast(sourceIndex.internalPointer()); + if (nodePaletteItem) + { + AZ::IO::Path gemPath = GetGemPath("ScriptCanvas.Editor"); + gemPath = gemPath / AZ::IO::Path("TranslationAssets"); + gemPath = gemPath / nodePaletteItem->GetTranslationDataPath(); + gemPath.ReplaceExtension(".names"); + + AZ::IO::FileIOBase* fileIO = AZ::IO::FileIOBase::GetInstance(); + if (fileIO->Exists(gemPath.c_str())) + { + AzQtComponents::ShowFileOnDesktop(gemPath.c_str()); + } + } + } + } + } + void NodePaletteDockWidget::ConfigureHelper() { if (!m_cyclingHelper.IsConfigured() && !m_cyclingIdentifiers.empty()) diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/ScriptCanvasNodePaletteDockWidget.h b/Gems/ScriptCanvas/Code/Editor/View/Widgets/ScriptCanvasNodePaletteDockWidget.h index 45645ceb33..9f5fa0511f 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/ScriptCanvasNodePaletteDockWidget.h +++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/ScriptCanvasNodePaletteDockWidget.h @@ -193,8 +193,6 @@ namespace ScriptCanvasEditor void OnSelectionChanged() override; //// - - protected: GraphCanvas::GraphCanvasTreeItem* CreatePaletteRoot() const override; @@ -209,6 +207,8 @@ namespace ScriptCanvasEditor private: void HandleTreeItemDoubleClicked(GraphCanvas::GraphCanvasTreeItem* treeItem); + void OpenTranslationData(); + void GenerateTranslation(); void ConfigureHelper(); void ParseCycleTargets(GraphCanvas::GraphCanvasTreeItem* treeItem); @@ -225,6 +225,10 @@ namespace ScriptCanvasEditor QAction* m_previousCycleAction; bool m_ignoreSelectionChanged; + + QMenu* m_contextMenu; + QAction* m_openTranslationData; + QAction* m_generateTranslation; }; } } diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/VariablePanel/VariableDockWidget.cpp b/Gems/ScriptCanvas/Code/Editor/View/Widgets/VariablePanel/VariableDockWidget.cpp index eb2f92f42c..68176d6b95 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/VariablePanel/VariableDockWidget.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/VariablePanel/VariableDockWidget.cpp @@ -52,6 +52,7 @@ #include #include #include +#include "GraphCanvas/Components/Slots/Data/DataSlotBus.h" namespace ScriptCanvasEditor { @@ -886,6 +887,7 @@ namespace ScriptCanvasEditor ScriptCanvas::NodeRequestBus::EventResult(removedReferences, memberPair.m_scriptCanvasId, &ScriptCanvas::NodeRequests::RemoveVariableReferences, variableIds); + // If we didn't remove the references. Just delete the node. if (!removedReferences) { diff --git a/Gems/ScriptCanvas/Code/Editor/View/Windows/EBusHandlerActionMenu.cpp b/Gems/ScriptCanvas/Code/Editor/View/Windows/EBusHandlerActionMenu.cpp index b2cffdb7fe..58f2ad7cee 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Windows/EBusHandlerActionMenu.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Windows/EBusHandlerActionMenu.cpp @@ -113,16 +113,14 @@ namespace ScriptCanvasEditor actionItem.m_name = QString(eventConfigurations[i].m_eventName.c_str()); actionItem.m_eventId = eventConfigurations[i].m_eventId; - AZStd::string translatedName = TranslationHelper::GetKeyTranslation(TranslationContextGroup::EbusHandler, m_busName, eventConfigurations[i].m_eventName, TranslationItemType::Node, TranslationKeyId::Name); + GraphCanvas::TranslationKey key; + key << "EBusHandler" << m_busName.c_str() << "methods" << eventConfigurations[i].m_eventName << "details"; - if (translatedName.empty()) - { - actionItem.m_displayName = actionItem.m_name; - } - else - { - actionItem.m_displayName = QString(translatedName.c_str()); - } + GraphCanvas::TranslationRequests::Details details; + details.m_name = actionItem.m_name.toUtf8().data(); + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details); + + actionItem.m_displayName = QString(details.m_name.c_str()); actionItem.m_index = i; diff --git a/Gems/ScriptCanvas/Code/Editor/View/Windows/MainWindow.cpp b/Gems/ScriptCanvas/Code/Editor/View/Windows/MainWindow.cpp index 1ad8b58317..e61b015aae 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Windows/MainWindow.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Windows/MainWindow.cpp @@ -428,6 +428,8 @@ namespace ScriptCanvasEditor , m_closeCurrentGraphAfterSave(false) , m_styleManager(ScriptCanvasEditor::AssetEditorId, "ScriptCanvas/StyleSheet/graphcanvas_style.json") { + AZ_PROFILE_FUNCTION(ScriptCanvas); + VariablePaletteRequestBus::Handler::BusConnect(); GraphCanvas::AssetEditorAutomationRequestBus::Handler::BusConnect(ScriptCanvasEditor::AssetEditorId); diff --git a/Gems/ScriptCanvas/Code/Editor/View/Windows/ScriptCanvasContextMenus.cpp b/Gems/ScriptCanvas/Code/Editor/View/Windows/ScriptCanvasContextMenus.cpp index e4a95d7d19..6402a24b3a 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Windows/ScriptCanvasContextMenus.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Windows/ScriptCanvasContextMenus.cpp @@ -12,6 +12,8 @@ #include #include +#include + #include #include @@ -41,6 +43,8 @@ #include #include "ScriptCanvasContextMenus.h" +#include "Settings.h" + #include #include #include @@ -53,6 +57,7 @@ #include #include + namespace ScriptCanvasEditor { //////////////////////////// @@ -805,6 +810,13 @@ namespace ScriptCanvasEditor SceneContextMenu::SceneContextMenu(const NodePaletteModel& paletteModel, AzToolsFramework::AssetBrowser::AssetBrowserFilterModel* assetModel) : GraphCanvas::SceneContextMenu(ScriptCanvasEditor::AssetEditorId) { + + auto userSettings = AZ::UserSettings::CreateFind(AZ_CRC("ScriptCanvasPreviewSettings", 0x1c5a2965), AZ::UserSettings::CT_LOCAL); + if (userSettings) + { + m_userNodePaletteWidth = userSettings->m_sceneContextMenuNodePaletteWidth; + } + const bool inContextMenu = true; Widget::ScriptCanvasNodePaletteConfig paletteConfig(paletteModel, assetModel, inContextMenu); AddNodePaletteMenuAction(paletteConfig); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Asset/RuntimeAsset.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Asset/RuntimeAsset.cpp index 0dcd8ebbbd..d55fcf7838 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Asset/RuntimeAsset.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Asset/RuntimeAsset.cpp @@ -59,6 +59,7 @@ namespace ScriptCanvas m_script = AZStd::move(other.m_script); m_requiredAssets = AZStd::move(other.m_requiredAssets); m_requiredScriptEvents = AZStd::move(other.m_requiredScriptEvents); + m_areStaticsInitialized = AZStd::move(other.m_areStaticsInitialized); } return *this; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Asset/RuntimeAsset.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Asset/RuntimeAsset.h index 24c83b20a1..8c5da5ac07 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Asset/RuntimeAsset.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Asset/RuntimeAsset.h @@ -76,6 +76,9 @@ namespace ScriptCanvas AZStd::vector m_activationInputStorage; Execution::ActivationInputRange m_activationInputRange; + // used to initialize statics only once, and not necessarily on the loading thread + bool m_areStaticsInitialized = false; + bool RequiresStaticInitialization() const; bool RequiresDependencyConstructionParameters() const; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Asset/RuntimeAssetHandler.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Asset/RuntimeAssetHandler.cpp index df7b07d37b..05b6f4397b 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Asset/RuntimeAssetHandler.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Asset/RuntimeAssetHandler.cpp @@ -94,7 +94,6 @@ namespace ScriptCanvas RuntimeAsset* runtimeAsset = asset.GetAs(); AZ_Assert(runtimeAsset, "RuntimeAssetHandler::InitAsset This should be a Script Canvas runtime asset, as this is the only type this handler processes!"); Execution::Context::InitializeActivationData(runtimeAsset->GetData()); - Execution::InitializeInterpretedStatics(runtimeAsset->GetData()); } } @@ -157,4 +156,5 @@ namespace ScriptCanvas } } } + } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/MethodConfiguration.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/MethodConfiguration.cpp index 24609ee81d..67f947004b 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/MethodConfiguration.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/MethodConfiguration.cpp @@ -13,6 +13,7 @@ #include #include +#include "../../GraphCanvas/Code/Source/Translation/TranslationBus.h" namespace ScriptCanvas { @@ -55,13 +56,30 @@ namespace ScriptCanvas { const Data::Type outputType = (unpackedTypes.size() == 1 && AZ::BehaviorContextHelper::IsStringParameter(*result)) ? Data::Type::String() : Data::FromAZType(unpackedTypes[resultIndex]); - const AZStd::string resultSlotName(AZStd::string::format("Result: %s", Data::GetName(outputType).data())); + AZStd::string resultSlotName(Data::GetName(outputType)); + + AZStd::string className = outputConfig.config.m_className ? *outputConfig.config.m_className : ""; + if (className.empty()) + { + className = outputConfig.config.m_prettyClassName; + } + + GraphCanvas::TranslationKey key; + key << "BehaviorClass" << className << "methods" << *outputConfig.config.m_lookupName << "results" << resultIndex << "details"; + + GraphCanvas::TranslationRequests::Details details; + GraphCanvas::TranslationRequestBus::BroadcastResult(details, &GraphCanvas::TranslationRequests::GetDetails, key, details); + + if (!details.m_name.empty()) + { + resultSlotName = details.m_name; + } + SlotId addedSlotId; if (outputConfig.isReturnValueOverloaded) { DynamicDataSlotConfiguration slotConfiguration; - //slotConfiguration.m_name = outputConfig.outputNamePrefix + resultSlotName; slotConfiguration.m_dynamicDataType = outputConfig.methodNode->GetOverloadedOutputType(resultIndex); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Node.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Node.cpp index 2ae37b1253..c4143e7295 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Node.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Node.cpp @@ -1160,8 +1160,8 @@ namespace ScriptCanvas if (!slot->IsDynamicSlot() || slot->HasDisplayType()) { InitializeVariableReference((*slot), {}); - } - } + } + } else { ModifiableDatumView datumView; @@ -2391,7 +2391,8 @@ namespace ScriptCanvas if (variableIds.count(variableId) > 0) { - InitializeVariableReference(slot, variableIds); + slot.ClearVariableReference(); + NodeNotificationsBus::Event(GetEntityId(), &NodeNotifications::OnSlotInputChanged, slot.GetId()); } } @@ -2962,6 +2963,11 @@ namespace ScriptCanvas } } + AZStd::string Node::GetNodeTypeName() const + { + return RTTI_GetTypeName(); + } + AZStd::string Node::GetDebugName() const { if (GetEntityId().IsValid()) diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Node.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Node.h index a54f330e18..97916c8af6 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Node.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Node.h @@ -525,6 +525,7 @@ namespace ScriptCanvas void SignalDeserialized(); + virtual AZStd::string GetNodeTypeName() const; virtual AZStd::string GetDebugName() const; virtual AZStd::string GetNodeName() const; @@ -886,6 +887,8 @@ protected: // The SlotIterator& parameter is populated with an iterator to the inserted or found slot within the slot list AZ::Outcome FindOrInsertSlot(AZ::s64 index, const SlotConfiguration& slotConfig, SlotIterator& iterOut); + public: + // This function is only called once, when the node is added to a graph, as opposed to Init(), which will be called // soon after construction, or after deserialization. So the functionality in configure does not need to be idempotent. void Configure(); @@ -1091,7 +1094,7 @@ protected: { DataSlotConfiguration slotConfiguration; - slotConfiguration.m_name = AZStd::string::format("%s: %s", t_Traits::GetResultName(0), Data::GetName(Data::FromAZType>()).data()); + slotConfiguration.m_name = t_Traits::GetResultName(0); slotConfiguration.SetType(Data::FromAZType>()); slotConfiguration.SetConnectionType(ConnectionType::Output); @@ -1113,7 +1116,7 @@ protected: { DataSlotConfiguration slotConfiguration; - slotConfiguration.m_name = AZStd::string::format("%s: %s", t_Traits::GetResultName(Index), Data::GetName(Data::FromAZType>>()).data()); + slotConfiguration.m_name = t_Traits::GetResultName(Index); slotConfiguration.SetType(Data::FromAZType>>()); slotConfiguration.SetConnectionType(connectionType); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/NodeFunctionGeneric.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/NodeFunctionGeneric.h index cb6c4bf942..549c56d07d 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/NodeFunctionGeneric.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/NodeFunctionGeneric.h @@ -94,7 +94,7 @@ namespace ScriptCanvas }\ \ static const char* GetDependency() { return CATEGORY; }\ - static const char* GetCategory() { if (ISDEPRECATED) return AZ_STRINGIZE(CATEGORY /Deprecated); else return CATEGORY; };\ + static const char* GetCategory() { if (IsDeprecated()) return "Deprecated"; else return CATEGORY; };\ static const char* GetDescription() { return DESCRIPTION; };\ static const char* GetNodeName() { return #NODE_NAME; };\ static bool IsDeprecated() { return ISDEPRECATED; };\ @@ -256,7 +256,7 @@ namespace ScriptCanvas { DataSlotConfiguration slotConfiguration; - slotConfiguration.m_name = AZStd::string::format("%s: %s", Data::Traits::GetName().data(), t_Traits::GetArgName(Index)); + slotConfiguration.m_name = t_Traits::GetArgName(Index); slotConfiguration.ConfigureDatum(AZStd::move(Datum(Data::FromAZType(Data::Traits::GetAZType()), Datum::eOriginality::Copy))); slotConfiguration.SetConnectionType(connectionType); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Data/PropertyTraits.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Data/PropertyTraits.h index ad49f7bb86..aadecb57e9 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Data/PropertyTraits.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Data/PropertyTraits.h @@ -25,6 +25,7 @@ namespace ScriptCanvas GetterFunction m_getterFunction; Data::Type m_propertyType; AZStd::string m_propertyName; + AZStd::string m_displayName; }; using GetterContainer = AZStd::unordered_map; @@ -35,6 +36,7 @@ namespace ScriptCanvas SetterFunction m_setterFunction; Data::Type m_propertyType; AZStd::string m_propertyName; + AZStd::string m_displayName; }; using SetterContainer = AZStd::unordered_map; @@ -84,7 +86,7 @@ namespace ScriptCanvas using PropertyType = AZStd::decay_t>; static_assert(!AZStd::is_void::value, "Getter function must return a non-void type"); - static GetterWrapper Callback(AZStd::string_view propertyName, const FunctionType& propertyGetter) + static GetterWrapper Callback(AZStd::string_view propertyName, const FunctionType& propertyGetter, AZStd::string_view displayName) { GetterFunction getterWrapper = [propertyGetter](const Datum& thisDatum) -> AZ::Outcome { @@ -97,7 +99,7 @@ namespace ScriptCanvas return AZ::Success(Datum(AZStd::invoke(propertyGetter, thisObject))); }; - return { getterWrapper, Data::FromAZType(), propertyName }; + return { getterWrapper, Data::FromAZType(), propertyName, displayName }; } }; @@ -107,7 +109,7 @@ namespace ScriptCanvas static_assert(!AZStd::is_void::value, "Setter function must be either a member function pointer that accepts 1 arguments or an invokable object that accepts 2 argument"); static_assert(!AZStd::is_void::value, "Property being set must be a non-void type"); - static SetterWrapper Callback(AZStd::string_view propertyName, const FunctionType& propertySetter) + static SetterWrapper Callback(AZStd::string_view propertyName, const FunctionType& propertySetter, AZStd::string_view displayName) { SetterFunction setterWrapper = [propertySetter](Datum& thisDatum, const Datum& propertyDatum) -> AZ::Outcome { @@ -128,7 +130,7 @@ namespace ScriptCanvas return AZ::Success(); }; - return { setterWrapper, Data::FromAZType(), propertyName }; + return { setterWrapper, Data::FromAZType(), propertyName, displayName }; } }; } @@ -178,20 +180,20 @@ namespace ScriptCanvas static GetterContainer GetGetterWrappers(const Data::Type&) { GetterContainer getterFunctions; - getterFunctions.emplace("x", WrapGetter::Callback("x", &Data::QuaternionType::GetX)); - getterFunctions.emplace("y", WrapGetter::Callback("y", &Data::QuaternionType::GetY)); - getterFunctions.emplace("z", WrapGetter::Callback("z", &Data::QuaternionType::GetZ)); - getterFunctions.emplace("w", WrapGetter::Callback("w", &Data::QuaternionType::GetW)); + getterFunctions.emplace("x", WrapGetter::Callback("x", &Data::QuaternionType::GetX, "X")); + getterFunctions.emplace("y", WrapGetter::Callback("y", &Data::QuaternionType::GetY, "Y")); + getterFunctions.emplace("z", WrapGetter::Callback("z", &Data::QuaternionType::GetZ, "Z")); + getterFunctions.emplace("w", WrapGetter::Callback("w", &Data::QuaternionType::GetW, "W")); return getterFunctions; } static SetterContainer GetSetterWrappers(const Data::Type&) { SetterContainer setterFunctions; - setterFunctions.emplace("x", WrapSetter::Callback("x", &Data::QuaternionType::SetX)); - setterFunctions.emplace("y", WrapSetter::Callback("y", &Data::QuaternionType::SetY)); - setterFunctions.emplace("z", WrapSetter::Callback("z", &Data::QuaternionType::SetZ)); - setterFunctions.emplace("w", WrapSetter::Callback("w", &Data::QuaternionType::SetW)); + setterFunctions.emplace("x", WrapSetter::Callback("x", &Data::QuaternionType::SetX, "X")); + setterFunctions.emplace("y", WrapSetter::Callback("y", &Data::QuaternionType::SetY, "Y")); + setterFunctions.emplace("z", WrapSetter::Callback("z", &Data::QuaternionType::SetZ, "Z")); + setterFunctions.emplace("w", WrapSetter::Callback("w", &Data::QuaternionType::SetW, "W")); return setterFunctions; } }; @@ -202,16 +204,16 @@ namespace ScriptCanvas static GetterContainer GetGetterWrappers(const Data::Type&) { GetterContainer getterFunctions; - getterFunctions.emplace("x", WrapGetter::Callback("x", &Data::Vector2Type::GetX)); - getterFunctions.emplace("y", WrapGetter::Callback("y", &Data::Vector2Type::GetY)); + getterFunctions.emplace("x", WrapGetter::Callback("x", &Data::Vector2Type::GetX, "X")); + getterFunctions.emplace("y", WrapGetter::Callback("y", &Data::Vector2Type::GetY, "Y")); return getterFunctions; } static SetterContainer GetSetterWrappers(const Data::Type&) { SetterContainer setterFunctions; - setterFunctions.emplace("x", WrapSetter::Callback("x", &Data::Vector2Type::SetX)); - setterFunctions.emplace("y", WrapSetter::Callback("y", &Data::Vector2Type::SetY)); + setterFunctions.emplace("x", WrapSetter::Callback("x", &Data::Vector2Type::SetX, "X")); + setterFunctions.emplace("y", WrapSetter::Callback("y", &Data::Vector2Type::SetY, "Y")); return setterFunctions; } }; @@ -222,18 +224,18 @@ namespace ScriptCanvas static GetterContainer GetGetterWrappers(const Data::Type&) { GetterContainer getterFunctions; - getterFunctions.emplace("x", WrapGetter::Callback("x", &Data::Vector3Type::GetX)); - getterFunctions.emplace("y", WrapGetter::Callback("y", &Data::Vector3Type::GetY)); - getterFunctions.emplace("z", WrapGetter::Callback("z", &Data::Vector3Type::GetZ)); + getterFunctions.emplace("x", WrapGetter::Callback("x", &Data::Vector3Type::GetX, "X")); + getterFunctions.emplace("y", WrapGetter::Callback("y", &Data::Vector3Type::GetY, "Y")); + getterFunctions.emplace("z", WrapGetter::Callback("z", &Data::Vector3Type::GetZ, "Z")); return getterFunctions; } static SetterContainer GetSetterWrappers(const Data::Type&) { SetterContainer setterFunctions; - setterFunctions.emplace("x", WrapSetter::Callback("x", &Data::Vector3Type::SetX)); - setterFunctions.emplace("y", WrapSetter::Callback("y", &Data::Vector3Type::SetY)); - setterFunctions.emplace("z", WrapSetter::Callback("z", &Data::Vector3Type::SetZ)); + setterFunctions.emplace("x", WrapSetter::Callback("x", &Data::Vector3Type::SetX, "X")); + setterFunctions.emplace("y", WrapSetter::Callback("y", &Data::Vector3Type::SetY, "Y")); + setterFunctions.emplace("z", WrapSetter::Callback("z", &Data::Vector3Type::SetZ, "Z")); return setterFunctions; } }; @@ -244,20 +246,20 @@ namespace ScriptCanvas static GetterContainer GetGetterWrappers(const Data::Type&) { GetterContainer getterFunctions; - getterFunctions.emplace("x", WrapGetter::Callback("x", &Data::Vector4Type::GetX)); - getterFunctions.emplace("y", WrapGetter::Callback("y", &Data::Vector4Type::GetY)); - getterFunctions.emplace("z", WrapGetter::Callback("z", &Data::Vector4Type::GetZ)); - getterFunctions.emplace("w", WrapGetter::Callback("w", &Data::Vector4Type::GetW)); + getterFunctions.emplace("x", WrapGetter::Callback("x", &Data::Vector4Type::GetX, "X")); + getterFunctions.emplace("y", WrapGetter::Callback("y", &Data::Vector4Type::GetY, "Y")); + getterFunctions.emplace("z", WrapGetter::Callback("z", &Data::Vector4Type::GetZ, "Z")); + getterFunctions.emplace("w", WrapGetter::Callback("w", &Data::Vector4Type::GetW, "W")); return getterFunctions; } static SetterContainer GetSetterWrappers(const Data::Type&) { SetterContainer setterFunctions; - setterFunctions.emplace("x", WrapSetter::Callback("x", &Data::Vector4Type::SetX)); - setterFunctions.emplace("y", WrapSetter::Callback("y", &Data::Vector4Type::SetY)); - setterFunctions.emplace("z", WrapSetter::Callback("z", &Data::Vector4Type::SetZ)); - setterFunctions.emplace("w", WrapSetter::Callback("w", &Data::Vector4Type::SetW)); + setterFunctions.emplace("x", WrapSetter::Callback("x", &Data::Vector4Type::SetX, "X")); + setterFunctions.emplace("y", WrapSetter::Callback("y", &Data::Vector4Type::SetY, "Y")); + setterFunctions.emplace("z", WrapSetter::Callback("z", &Data::Vector4Type::SetZ, "Z")); + setterFunctions.emplace("w", WrapSetter::Callback("w", &Data::Vector4Type::SetW, "W")); return setterFunctions; } }; @@ -268,20 +270,20 @@ namespace ScriptCanvas static GetterContainer GetGetterWrappers(const Data::Type&) { GetterContainer getterFunctions; - getterFunctions.emplace("r", WrapGetter::Callback("r", &Data::ColorType::GetR)); - getterFunctions.emplace("g", WrapGetter::Callback("g", &Data::ColorType::GetG)); - getterFunctions.emplace("b", WrapGetter::Callback("b", &Data::ColorType::GetB)); - getterFunctions.emplace("a", WrapGetter::Callback("a", &Data::ColorType::GetA)); + getterFunctions.emplace("r", WrapGetter::Callback("r", &Data::ColorType::GetR, "Red")); + getterFunctions.emplace("g", WrapGetter::Callback("g", &Data::ColorType::GetG, "Green")); + getterFunctions.emplace("b", WrapGetter::Callback("b", &Data::ColorType::GetB, "Blue")); + getterFunctions.emplace("a", WrapGetter::Callback("a", &Data::ColorType::GetA, "Alpha")); return getterFunctions; } static SetterContainer GetSetterWrappers(const Data::Type&) { SetterContainer setterFunctions; - setterFunctions.emplace("r", WrapSetter::Callback("r", &Data::ColorType::SetR)); - setterFunctions.emplace("g", WrapSetter::Callback("g", &Data::ColorType::SetG)); - setterFunctions.emplace("b", WrapSetter::Callback("b", &Data::ColorType::SetB)); - setterFunctions.emplace("a", WrapSetter::Callback("a", &Data::ColorType::SetA)); + setterFunctions.emplace("r", WrapSetter::Callback("r", &Data::ColorType::SetR, "Red")); + setterFunctions.emplace("g", WrapSetter::Callback("g", &Data::ColorType::SetG, "Green")); + setterFunctions.emplace("b", WrapSetter::Callback("b", &Data::ColorType::SetB, "Blue")); + setterFunctions.emplace("a", WrapSetter::Callback("a", &Data::ColorType::SetA, "Alpha")); return setterFunctions; } }; @@ -292,16 +294,16 @@ namespace ScriptCanvas static GetterContainer GetGetterWrappers(const Data::Type&) { GetterContainer getterFunctions; - getterFunctions.emplace("normal", WrapGetter::Callback("normal", &Data::PlaneType::GetNormal)); - getterFunctions.emplace("distance", WrapGetter::Callback("distance", &Data::PlaneType::GetDistance)); + getterFunctions.emplace("mormal", WrapGetter::Callback("normal", &Data::PlaneType::GetNormal, "Normal")); + getterFunctions.emplace("distance", WrapGetter::Callback("distance", &Data::PlaneType::GetDistance, "Distance")); return getterFunctions; } static SetterContainer GetSetterWrappers(const Data::Type&) { SetterContainer setterFunctions; - setterFunctions.emplace("normal", WrapSetter::Callback("normal", &Data::PlaneType::SetNormal)); - setterFunctions.emplace("distance", WrapSetter::Callback("distance", &Data::PlaneType::SetDistance)); + setterFunctions.emplace("normal", WrapSetter::Callback("normal", &Data::PlaneType::SetNormal, "Normal")); + setterFunctions.emplace("distance", WrapSetter::Callback("distance", &Data::PlaneType::SetDistance, "Distance")); return setterFunctions; } }; @@ -312,17 +314,17 @@ namespace ScriptCanvas static GetterContainer GetGetterWrappers(const Data::Type&) { GetterContainer getterFunctions; - getterFunctions.emplace("basisX", WrapGetter::Callback("basisX", &Data::TransformType::GetBasisX)); - getterFunctions.emplace("basisY", WrapGetter::Callback("basisY", &Data::TransformType::GetBasisY)); - getterFunctions.emplace("basisZ", WrapGetter::Callback("basisZ", &Data::TransformType::GetBasisZ)); - getterFunctions.emplace("translation", WrapGetter::Callback("translation", &Data::TransformType::GetTranslation)); + getterFunctions.emplace("basisX", WrapGetter::Callback("basisX", &Data::TransformType::GetBasisX, "X Axis")); + getterFunctions.emplace("basisY", WrapGetter::Callback("basisY", &Data::TransformType::GetBasisY, "Y Axis")); + getterFunctions.emplace("basisZ", WrapGetter::Callback("basisZ", &Data::TransformType::GetBasisZ, "Z Axis")); + getterFunctions.emplace("translation", WrapGetter::Callback("translation", &Data::TransformType::GetTranslation, "Translation")); return getterFunctions; } static SetterContainer GetSetterWrappers(const Data::Type&) { SetterContainer setterFunctions; - setterFunctions.emplace("translation", WrapSetter::Callback("translation", &Data::TransformType::SetTranslation)); + setterFunctions.emplace("translation", WrapSetter::Callback("translation", &Data::TransformType::SetTranslation, "Translation")); return setterFunctions; } }; @@ -333,16 +335,16 @@ namespace ScriptCanvas static GetterContainer GetGetterWrappers(const Data::Type&) { GetterContainer getterFunctions; - getterFunctions.emplace("min", WrapGetter::Callback("min", &Data::AABBType::GetMin)); - getterFunctions.emplace("max", WrapGetter::Callback("max", &Data::AABBType::GetMax)); + getterFunctions.emplace("min", WrapGetter::Callback("min", &Data::AABBType::GetMin, "Minimum")); + getterFunctions.emplace("max", WrapGetter::Callback("max", &Data::AABBType::GetMax, "Maximum")); return getterFunctions; } static SetterContainer GetSetterWrappers(const Data::Type&) { SetterContainer setterFunctions; - setterFunctions.emplace("min", WrapSetter::Callback("min", &Data::AABBType::SetMin)); - setterFunctions.emplace("max", WrapSetter::Callback("max", &Data::AABBType::SetMax)); + setterFunctions.emplace("min", WrapSetter::Callback("min", &Data::AABBType::SetMin, "Minimum")); + setterFunctions.emplace("max", WrapSetter::Callback("max", &Data::AABBType::SetMax, "Maximum")); return setterFunctions; } }; @@ -353,23 +355,23 @@ namespace ScriptCanvas static GetterContainer GetGetterWrappers(const Data::Type&) { GetterContainer getterFunctions; - getterFunctions.emplace("axisX", WrapGetter::Callback("axisX", &Data::OBBType::GetAxisX)); - getterFunctions.emplace("axisY", WrapGetter::Callback("axisY", &Data::OBBType::GetAxisY)); - getterFunctions.emplace("axisZ", WrapGetter::Callback("axisZ", &Data::OBBType::GetAxisZ)); - getterFunctions.emplace("halfLengthX", WrapGetter::Callback("halfLengthX", &Data::OBBType::GetHalfLengthX)); - getterFunctions.emplace("halfLengthY", WrapGetter::Callback("halfLengthY", &Data::OBBType::GetHalfLengthY)); - getterFunctions.emplace("halfLengthZ", WrapGetter::Callback("halfLengthZ", &Data::OBBType::GetHalfLengthZ)); - getterFunctions.emplace("position", WrapGetter::Callback("position", &Data::OBBType::GetPosition)); + getterFunctions.emplace("axisX", WrapGetter::Callback("axisX", &Data::OBBType::GetAxisX, "X Axis")); + getterFunctions.emplace("axisY", WrapGetter::Callback("axisY", &Data::OBBType::GetAxisY, "Y Axis")); + getterFunctions.emplace("Z Axis", WrapGetter::Callback("axisZ", &Data::OBBType::GetAxisZ, "Z Axis")); + getterFunctions.emplace("halfLengthX", WrapGetter::Callback("halfLengthX", &Data::OBBType::GetHalfLengthX, "Half Length X")); + getterFunctions.emplace("halfLengthY", WrapGetter::Callback("halfLengthY", &Data::OBBType::GetHalfLengthY, "Half Length Y")); + getterFunctions.emplace("halfLengthZ", WrapGetter::Callback("halfLengthZ", &Data::OBBType::GetHalfLengthZ, "Half Length Z")); + getterFunctions.emplace("position", WrapGetter::Callback("position", &Data::OBBType::GetPosition, "Position")); return getterFunctions; } static SetterContainer GetSetterWrappers(const Data::Type&) { SetterContainer setterFunctions; - setterFunctions.emplace("halfLengthX", WrapSetter::Callback("halfLengthX", &Data::OBBType::SetHalfLengthX)); - setterFunctions.emplace("halfLengthY", WrapSetter::Callback("halfLengthY", &Data::OBBType::SetHalfLengthY)); - setterFunctions.emplace("halfLengthZ", WrapSetter::Callback("halfLengthZ", &Data::OBBType::SetHalfLengthZ)); - setterFunctions.emplace("position", WrapSetter::Callback("position", &Data::OBBType::SetPosition)); + setterFunctions.emplace("halfLengthX", WrapSetter::Callback("halfLengthX", &Data::OBBType::SetHalfLengthX, "Half Length X")); + setterFunctions.emplace("halfLengthY", WrapSetter::Callback("halfLengthY", &Data::OBBType::SetHalfLengthY, "Half Length Y")); + setterFunctions.emplace("halfLengthZ", WrapSetter::Callback("halfLengthZ", &Data::OBBType::SetHalfLengthZ, "Half Length Z")); + setterFunctions.emplace("position", WrapSetter::Callback("position", &Data::OBBType::SetPosition, "Position")); return setterFunctions; } }; @@ -380,18 +382,18 @@ namespace ScriptCanvas static GetterContainer GetGetterWrappers(const Data::Type&) { GetterContainer getterFunctions; - getterFunctions.emplace("basisX", WrapGetter::Callback("basisX", &Data::Matrix3x3Type::GetBasisX)); - getterFunctions.emplace("basisY", WrapGetter::Callback("basisY", &Data::Matrix3x3Type::GetBasisY)); - getterFunctions.emplace("basisZ", WrapGetter::Callback("basisZ", &Data::Matrix3x3Type::GetBasisZ)); + getterFunctions.emplace("basisX", WrapGetter::Callback("basisX", &Data::Matrix3x3Type::GetBasisX, "Position")); + getterFunctions.emplace("basisY", WrapGetter::Callback("basisY", &Data::Matrix3x3Type::GetBasisY, "Position")); + getterFunctions.emplace("basisZ", WrapGetter::Callback("basisZ", &Data::Matrix3x3Type::GetBasisZ, "Position")); return getterFunctions; } static SetterContainer GetSetterWrappers(const Data::Type&) { SetterContainer setterFunctions; - setterFunctions.emplace("basisX", WrapSetter::Callback("basisX", &Data::Matrix3x3Type::SetBasisX)); - setterFunctions.emplace("basisY", WrapSetter::Callback("basisY", &Data::Matrix3x3Type::SetBasisY)); - setterFunctions.emplace("basisZ", WrapSetter::Callback("basisZ", &Data::Matrix3x3Type::SetBasisZ)); + setterFunctions.emplace("basisX", WrapSetter::Callback("basisX", &Data::Matrix3x3Type::SetBasisX, "X Axis")); + setterFunctions.emplace("basisY", WrapSetter::Callback("basisY", &Data::Matrix3x3Type::SetBasisY, "Y Axis")); + setterFunctions.emplace("basisZ", WrapSetter::Callback("basisZ", &Data::Matrix3x3Type::SetBasisZ, "Z Axis")); return setterFunctions; } }; @@ -402,20 +404,20 @@ namespace ScriptCanvas static GetterContainer GetGetterWrappers(const Data::Type&) { GetterContainer getterFunctions; - getterFunctions.emplace("basisX", WrapGetter::Callback("basisX", &Data::Matrix4x4Type::GetBasisX)); - getterFunctions.emplace("basisY", WrapGetter::Callback("basisY", &Data::Matrix4x4Type::GetBasisY)); - getterFunctions.emplace("basisZ", WrapGetter::Callback("basisZ", &Data::Matrix4x4Type::GetBasisZ)); - getterFunctions.emplace("translation", WrapGetter::Callback("translation", &Data::Matrix4x4Type::GetTranslation)); + getterFunctions.emplace("basisX", WrapGetter::Callback("basisX", &Data::Matrix4x4Type::GetBasisX, "X Axis")); + getterFunctions.emplace("basisY", WrapGetter::Callback("basisY", &Data::Matrix4x4Type::GetBasisY, "Y Axis")); + getterFunctions.emplace("basisZ", WrapGetter::Callback("basisZ", &Data::Matrix4x4Type::GetBasisZ, "Z Axis")); + getterFunctions.emplace("Translation", WrapGetter::Callback("translation", &Data::Matrix4x4Type::GetTranslation, "Translation")); return getterFunctions; } static SetterContainer GetSetterWrappers(const Data::Type&) { SetterContainer setterFunctions; - setterFunctions.emplace("basisX", WrapSetter::Callback("basisX", &Data::Matrix4x4Type::SetBasisX)); - setterFunctions.emplace("basisY", WrapSetter::Callback("basisY", &Data::Matrix4x4Type::SetBasisY)); - setterFunctions.emplace("basisZ", WrapSetter::Callback("basisZ", &Data::Matrix4x4Type::SetBasisZ)); - setterFunctions.emplace("translation", WrapSetter::Callback("translation", &Data::Matrix4x4Type::SetTranslation)); + setterFunctions.emplace("basisX", WrapSetter::Callback("basisX", &Data::Matrix4x4Type::SetBasisX, "X Axis")); + setterFunctions.emplace("basisY", WrapSetter::Callback("basisY", &Data::Matrix4x4Type::SetBasisY, "Y Axis")); + setterFunctions.emplace("basisZ", WrapSetter::Callback("basisZ", &Data::Matrix4x4Type::SetBasisZ, "Z Axis")); + setterFunctions.emplace("translation", WrapSetter::Callback("translation", &Data::Matrix4x4Type::SetTranslation, "Translation")); return setterFunctions; } }; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/ExecutionState.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/ExecutionState.h index 8c2f0a67c4..89ddf178f3 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/ExecutionState.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/ExecutionState.h @@ -19,6 +19,10 @@ #include #include +#if !defined(_RELEASE) +#define SCRIPT_CANVAS_RUNTIME_ASSET_CHECK +#endif + namespace AZ { class ReflectContext; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/Interpreted/ExecutionInterpretedAPI.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/Interpreted/ExecutionInterpretedAPI.cpp index 4d7c8a2cda..bba56847ce 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/Interpreted/ExecutionInterpretedAPI.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/Interpreted/ExecutionInterpretedAPI.cpp @@ -506,6 +506,8 @@ namespace ScriptCanvas #if defined(AZ_PROFILE_BUILD) || defined(AZ_DEBUG_BUILD) Execution::InitializeFromLuaStackFunctions(const_cast(runtimeData.m_debugMap)); #endif + AZ_WarningOnce("ScriptCanvas", !runtimeData.m_areStaticsInitialized, "ScriptCanvas runtime data already initalized"); + if (runtimeData.RequiresStaticInitialization()) { AZ::ScriptLoadResult result{}; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/Interpreted/ExecutionStateInterpreted.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/Interpreted/ExecutionStateInterpreted.cpp index 9224d4f9a4..a92c13ac63 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/Interpreted/ExecutionStateInterpreted.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/Interpreted/ExecutionStateInterpreted.cpp @@ -6,14 +6,13 @@ * */ -#include "ExecutionStateInterpreted.h" - #include #include #include - -#include "Execution/Interpreted/ExecutionStateInterpretedUtility.h" -#include "Execution/RuntimeComponent.h" +#include +#include +#include +#include namespace ExecutionStateInterpretedCpp { @@ -33,7 +32,29 @@ namespace ScriptCanvas ExecutionStateInterpreted::ExecutionStateInterpreted(const ExecutionStateConfig& config) : ExecutionState(config) , m_interpretedAsset(config.runtimeData.m_script) - {} + { + RuntimeAsset* runtimeAsset = config.asset.Get(); + +#if defined(SCRIPT_CANVAS_RUNTIME_ASSET_CHECK) + if (!runtimeAsset) + { + AZ_Error("ScriptCanvas", false + , "ExecutionStateInterpreted created with ExecutionStateConfig that contained bad runtime asset data. %s" + , config.asset.GetId().ToString().data()); + return; + } +#else + AZ_Assert(false + , "ExecutionStateInterpreted created with ExecutionStateConfig that contained bad runtime asset data. %s" + , config.asset.GetId().ToString().data()); +#endif + + if (!runtimeAsset->GetData().m_areStaticsInitialized) + { + runtimeAsset->GetData().m_areStaticsInitialized = true; + Execution::InitializeInterpretedStatics(runtimeAsset->GetData()); + } + } void ExecutionStateInterpreted::ClearLuaRegistryIndex() { diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/RuntimeComponent.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/RuntimeComponent.cpp index 5fe5c32a48..930b84abe4 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/RuntimeComponent.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Execution/RuntimeComponent.cpp @@ -19,9 +19,8 @@ #include #include -#if !defined(_RELEASE) -#define SCRIPT_CANVAS_RUNTIME_ASSET_CHECK -#endif +#include +#include AZ_DECLARE_BUDGET(ScriptCanvas); @@ -112,11 +111,13 @@ namespace ScriptCanvas #if defined(SCRIPT_CANVAS_RUNTIME_ASSET_CHECK) if (!m_runtimeOverrides.m_runtimeAsset.Get()) { - AZ_Error("ScriptCanvas", false, "RuntimeComponent::m_runtimeAsset AssetId: %s was valid, but the data was not pre-loaded, so this script will not run", m_runtimeOverrides.m_runtimeAsset.GetId().ToString().data()); + AZ_Error("ScriptCanvas", false, "RuntimeComponent::m_runtimeAsset AssetId: %s was valid, but the data was not pre-loaded, so this script will not run" + , m_runtimeOverrides.m_runtimeAsset.GetId().ToString().data()); return; } #else - AZ_Assert(m_runtimeOverrides.m_runtimeAsset.Get(), "RuntimeComponent::m_runtimeAsset AssetId: %s was valid, but the data was not pre-loaded, so this script will not run", m_runtimeOverrides.m_runtimeAsset.GetId().ToString().data()); + AZ_Assert(m_runtimeOverrides.m_runtimeAsset.Get(), "RuntimeComponent::m_runtimeAsset AssetId: %s was valid, but the data was not pre-loaded, so this script will not run" + , m_runtimeOverrides.m_runtimeAsset.GetId().ToString().data()); #endif AZ_PROFILE_SCOPE(ScriptCanvas, "RuntimeComponent::InitializeExecution (%s)", m_runtimeOverrides.m_runtimeAsset.GetId().ToString().c_str()); @@ -126,11 +127,13 @@ namespace ScriptCanvas #if defined(SCRIPT_CANVAS_RUNTIME_ASSET_CHECK) if (!m_executionState) { - AZ_Error("ScriptCanvas", false, "RuntimeComponent::m_runtimeAsset AssetId: %s failed to create an execution state, possibly due to missing dependent asset, script will not run", m_runtimeOverrides.m_runtimeAsset.GetId().ToString().data()); + AZ_Error("ScriptCanvas", false, "RuntimeComponent::m_runtimeAsset AssetId: %s failed to create an execution state, possibly due to missing dependent asset, script will not run" + , m_runtimeOverrides.m_runtimeAsset.GetId().ToString().data()); return; } #else - AZ_Assert(m_executionState, "RuntimeComponent::m_runtimeAsset AssetId: %s failed to create an execution state, possibly due to missing dependent asset, script will not run", m_runtimeOverrides.m_runtimeAsset.GetId().ToString().data()); + AZ_Assert(m_executionState, "RuntimeComponent::m_runtimeAsset AssetId: %s failed to create an execution state, possibly due to missing dependent asset, script will not run" + , m_runtimeOverrides.m_runtimeAsset.GetId().ToString().data()); #endif AZ::EntityBus::Handler::BusConnect(GetEntityId()); @@ -179,4 +182,3 @@ namespace ScriptCanvas } } -#undef SCRIPT_CANVAS_RUNTIME_ASSET_CHECK diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/BinaryOperator.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/BinaryOperator.cpp index 02755af49b..1b512ee0cf 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/BinaryOperator.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/BinaryOperator.cpp @@ -132,7 +132,7 @@ namespace ScriptCanvas void BooleanExpression::InitializeBooleanExpression() { - AZ_Assert(false, "InitializeBooleanExpression must be overridden"); + AZ_Error("Script Canvas", false, "InitializeBooleanExpression implementation should be provided"); } void BooleanExpression::OnInit() diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/EBusEventHandler.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/EBusEventHandler.cpp index a2ccfd46f2..65d1f21518 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/EBusEventHandler.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/EBusEventHandler.cpp @@ -518,7 +518,7 @@ namespace ScriptCanvas { const AZ::BehaviorParameter& argument(event.m_parameters[AZ::eBehaviorBusForwarderEventIndices::Result]); Data::Type inputType(AZ::BehaviorContextHelper::IsStringParameter(argument) ? Data::Type::String() : Data::FromAZType(argument.m_typeId)); - const AZStd::string argName(AZStd::string::format("Result: %s", Data::GetName(inputType).data()).data()); + const AZStd::string argName(Data::GetName(inputType)); DataSlotConfiguration resultConfiguration; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/ExtractProperty.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/ExtractProperty.cpp index 25a5733ffc..71e2d338d6 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/ExtractProperty.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/ExtractProperty.cpp @@ -5,6 +5,7 @@ * SPDX-License-Identifier: Apache-2.0 OR MIT * */ + #include #include @@ -183,6 +184,10 @@ namespace ScriptCanvas DataSlotConfiguration config; AZStd::string slotName = AZStd::string::format("%s: %s", propertyName.data(), Data::GetName(getterWrapper.m_propertyType).data()); + if (!getterWrapper.m_displayName.empty()) + { + slotName = getterWrapper.m_displayName; + } if (existingSlots.find(slotName) == existingSlots.end()) { diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/GetVariable.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/GetVariable.cpp index 566b9dc992..c907c47c78 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/GetVariable.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/GetVariable.cpp @@ -193,7 +193,7 @@ namespace ScriptCanvas { DataSlotConfiguration slotConfiguration; - slotConfiguration.m_name = AZStd::string::format("%s: %s", propertyName.data(), Data::GetName(getterWrapper.m_propertyType).data()); + slotConfiguration.m_name = (getterWrapper.m_displayName.empty()) ? propertyName.data() : getterWrapper.m_displayName; slotConfiguration.SetType(getterWrapper.m_propertyType); slotConfiguration.SetConnectionType(ConnectionType::Output); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/Method.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/Method.cpp index ca57824b78..ccdf15a111 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/Method.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/Method.cpp @@ -14,6 +14,7 @@ #include #include #include +#include namespace MethodCPP { @@ -389,6 +390,9 @@ namespace ScriptCanvas MethodConfiguration config(*method, MethodType::Free); config.m_namespaces = &m_namespaces; config.m_lookupName = &methodName; + config.m_prettyClassName = methodName; + AZ::StringFunc::Replace(config.m_prettyClassName, "::Getter", ""); + AZ::StringFunc::Replace(config.m_prettyClassName, "::Setter", ""); InitializeMethod(config); } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/ReceiveScriptEvent.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/ReceiveScriptEvent.cpp index c548176af5..14397d2be9 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/ReceiveScriptEvent.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/ReceiveScriptEvent.cpp @@ -204,7 +204,7 @@ namespace ScriptCanvas DataSlotConfiguration slotConfiguration; - slotConfiguration.m_name = AZStd::string::format("Result: %s", argumentTypeName.c_str()); + slotConfiguration.m_name = argumentTypeName; slotConfiguration.SetConnectionType(ConnectionType::Input); slotConfiguration.ConfigureDatum(AZStd::move(Datum(inputType, Datum::eOriginality::Copy, nullptr, AZ::Uuid::CreateNull()))); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/SendScriptEvent.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/SendScriptEvent.cpp index 8569380d99..26a9b4fc96 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/SendScriptEvent.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/SendScriptEvent.cpp @@ -272,7 +272,7 @@ namespace ScriptCanvas Data::Type outputType(AZ::BehaviorContextHelper::IsStringParameter(*result) ? Data::Type::String() : Data::FromAZType(result->m_typeId)); // multiple outs will need out value names - const AZStd::string resultSlotName(AZStd::string::format("Result: %s", Data::GetName(outputType).c_str())); + const AZStd::string resultSlotName(Data::GetName(outputType)); DataSlotConfiguration slotConfiguration; @@ -343,7 +343,7 @@ namespace ScriptCanvas { Data::Type outputType(AZ::BehaviorContextHelper::IsStringParameter(*result) ? Data::Type::String() : Data::FromAZType(result->m_typeId)); // multiple outs will need out value names - const AZStd::string resultSlotName(AZStd::string::format("Result: %s", Data::GetName(outputType).c_str())); + const AZStd::string resultSlotName(Data::GetName(outputType)); Slot* slot = GetSlotByName(resultSlotName); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/SetVariable.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/SetVariable.cpp index 40eb550b1f..8c53b0d1b4 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/SetVariable.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/SetVariable.cpp @@ -294,7 +294,7 @@ namespace ScriptCanvas { DataSlotConfiguration slotConfiguration; - slotConfiguration.m_name = AZStd::string::format("%s: %s", propertyName.data(), Data::GetName(getterWrapper.m_propertyType).data()); + slotConfiguration.m_name = (getterWrapper.m_displayName.empty()) ? propertyName.data() : getterWrapper.m_displayName; slotConfiguration.SetType(getterWrapper.m_propertyType); slotConfiguration.SetConnectionType(ConnectionType::Output); diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Entity/EntityNodes.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Entity/EntityNodes.h index 191635757c..ccbe5b12dc 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Entity/EntityNodes.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Entity/EntityNodes.h @@ -21,7 +21,7 @@ namespace ScriptCanvas namespace EntityNodes { using namespace Data; - static const char* k_categoryName = "Entity/Entity"; + static constexpr const char* k_categoryName = "Entity/Entity"; template AZ_INLINE void DefaultScale(Node& node) { SetDefaultValuesByIndex::_(node, Data::One()); } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/AABBNodes.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/AABBNodes.h index 198ff0c421..5ffd919a87 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/AABBNodes.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/AABBNodes.h @@ -19,7 +19,7 @@ namespace ScriptCanvas { using namespace Data; using namespace MathNodeUtilities; - static const char* k_categoryName = "Math/AABB"; + static constexpr const char* k_categoryName = "Math/AABB"; AZ_INLINE AABBType AddAABB(AABBType a, const AABBType& b) { diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/CRCNodes.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/CRCNodes.h index 933fb9dc1b..93f3a6fdcc 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/CRCNodes.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/CRCNodes.h @@ -15,7 +15,7 @@ namespace ScriptCanvas { namespace CRCNodes { - static const char* k_categoryName = "Math/Crc32"; + static constexpr const char* k_categoryName = "Math/Crc32"; AZ_INLINE Data::CRCType FromString(Data::StringType value) { diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/ColorNodes.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/ColorNodes.h index ad1b729ea4..625531b0d7 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/ColorNodes.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/ColorNodes.h @@ -19,7 +19,7 @@ namespace ScriptCanvas { using namespace Data; using namespace MathNodeUtilities; - static const char* k_categoryName = "Math/Color"; + static constexpr const char* k_categoryName = "Math/Color"; AZ_INLINE ColorType Add(ColorType a, ColorType b) { diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/MathGenerics.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/MathGenerics.h index 8f613867b2..cb625019ee 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/MathGenerics.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/MathGenerics.h @@ -14,7 +14,7 @@ namespace ScriptCanvas { namespace MathNodes { - static const char* k_categoryName = "Math"; + static constexpr const char* k_categoryName = "Math"; AZ_INLINE Data::NumberType MultiplyAndAdd(Data::NumberType multiplicand, Data::NumberType multiplier, Data::NumberType addend) { diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/MathRandom.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/MathRandom.h index 25a61b956f..01a666b730 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/MathRandom.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/MathRandom.h @@ -15,7 +15,7 @@ namespace ScriptCanvas { namespace RandomNodes { - static const char* k_categoryName = "Math/Random"; + static constexpr const char* k_categoryName = "Math/Random"; // RandomColor AZ_INLINE void SetRandomColorDefaults(Node& node) diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Matrix3x3Nodes.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Matrix3x3Nodes.h index 28eb91519c..b5f1f75dfb 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Matrix3x3Nodes.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Matrix3x3Nodes.h @@ -15,7 +15,7 @@ namespace ScriptCanvas { namespace Matrix3x3Nodes { - static const char* k_categoryName = "Math/Matrix3x3"; + static constexpr const char* k_categoryName = "Math/Matrix3x3"; AZ_INLINE Data::Matrix3x3Type Add(const Data::Matrix3x3Type& lhs, const Data::Matrix3x3Type& rhs) { diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Matrix4x4Nodes.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Matrix4x4Nodes.h index 8a2bf4393c..4c8c9275b4 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Matrix4x4Nodes.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Matrix4x4Nodes.h @@ -14,7 +14,7 @@ namespace ScriptCanvas { namespace Matrix4x4Nodes { - static const char* k_categoryName = "Math/Matrix4x4"; + static constexpr const char* k_categoryName = "Math/Matrix4x4"; AZ_INLINE Data::Matrix4x4Type FromColumns(const Data::Vector4Type& col0, const Data::Vector4Type& col1, const Data::Vector4Type& col2, const Data::Vector4Type& col3) { diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/OBBNodes.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/OBBNodes.h index 5b1bcc3493..1a4d769627 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/OBBNodes.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/OBBNodes.h @@ -19,7 +19,7 @@ namespace ScriptCanvas { using namespace Data; using namespace MathNodeUtilities; - static const char* k_categoryName = "Math/OBB"; + static constexpr const char* k_categoryName = "Math/OBB"; AZ_INLINE OBBType FromAabb(const AABBType& source) { diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/PlaneNodes.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/PlaneNodes.h index 0829004512..103aa90491 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/PlaneNodes.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/PlaneNodes.h @@ -19,7 +19,7 @@ namespace ScriptCanvas { using namespace Data; using namespace MathNodeUtilities; - static const char* k_categoryName = "Math/Plane"; + static constexpr const char* k_categoryName = "Math/Plane"; AZ_INLINE NumberType DistanceToPoint(PlaneType source, Vector3Type point) { diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/RotationNodes.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/RotationNodes.h index c7d1883e75..58c649fa3f 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/RotationNodes.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/RotationNodes.h @@ -20,7 +20,7 @@ namespace ScriptCanvas { using namespace Data; using namespace MathNodeUtilities; - static const char* k_categoryName = "Math/Quaternion"; + static constexpr const char* k_categoryName = "Math/Quaternion"; AZ_INLINE QuaternionType Add(QuaternionType a, QuaternionType b) { diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/TransformNodes.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/TransformNodes.h index 8af9ee8ca2..18d04c8e92 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/TransformNodes.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/TransformNodes.h @@ -20,7 +20,7 @@ namespace ScriptCanvas { using namespace Data; using namespace MathNodeUtilities; - static const char* k_categoryName = "Math/Transform"; + static constexpr const char* k_categoryName = "Math/Transform"; AZ_INLINE std::tuple ExtractUniformScale(TransformType source) { diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Vector2Nodes.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Vector2Nodes.h index c815470540..9a389404a2 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Vector2Nodes.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Vector2Nodes.h @@ -19,7 +19,7 @@ namespace ScriptCanvas { using namespace MathNodeUtilities; using namespace Data; - static const char* k_categoryName = "Math/Vector2"; + static constexpr const char* k_categoryName = "Math/Vector2"; AZ_INLINE Vector2Type Absolute(const Vector2Type source) { diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Vector3Nodes.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Vector3Nodes.h index 3e70d1fed7..f5e09ef78f 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Vector3Nodes.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Vector3Nodes.h @@ -21,7 +21,7 @@ namespace ScriptCanvas { using namespace MathNodeUtilities; using namespace Data; - static const char* k_categoryName = "Math/Vector3"; + static constexpr const char* k_categoryName = "Math/Vector3"; AZ_INLINE Vector3Type Absolute(const Vector3Type source) { diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Vector4Nodes.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Vector4Nodes.h index d7bee1f940..30e1b691bf 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Vector4Nodes.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Math/Vector4Nodes.h @@ -19,7 +19,7 @@ namespace ScriptCanvas { using namespace MathNodeUtilities; using namespace Data; - static const char* k_categoryName = "Math/Vector4"; + static constexpr const char* k_categoryName = "Math/Vector4"; AZ_INLINE Vector4Type Absolute(const Vector4Type source) { diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/StringGenerics.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/StringGenerics.h index d5ee52cdb1..67f1e7f0c4 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/StringGenerics.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/String/StringGenerics.h @@ -14,7 +14,7 @@ namespace ScriptCanvas { namespace StringNodes { - static const char* k_categoryName = "String"; + static constexpr const char* k_categoryName = "String"; AZ_INLINE Data::StringType ToLower(Data::StringType sourceString) { diff --git a/Gems/ScriptCanvas/Code/Tests/ScriptCanvasBuilderTests.cpp b/Gems/ScriptCanvas/Code/Tests/ScriptCanvasBuilderTests.cpp index cba14feac6..33982bbcd7 100644 --- a/Gems/ScriptCanvas/Code/Tests/ScriptCanvasBuilderTests.cpp +++ b/Gems/ScriptCanvas/Code/Tests/ScriptCanvasBuilderTests.cpp @@ -89,7 +89,6 @@ protected: AZ::SerializeContext* GetSerializeContext() override { return m_serializeContext; } AZ::BehaviorContext* GetBehaviorContext() override { return nullptr; } AZ::JsonRegistrationContext* GetJsonRegistrationContext() override { return nullptr; } - const char* GetAppRoot() const override { return nullptr; } const char* GetEngineRoot() const override { return nullptr; } const char* GetExecutableFolder() const override { return nullptr; } void EnumerateEntities(const AZ::ComponentApplicationRequests::EntityCallback& /*callback*/) override {} diff --git a/Gems/ScriptCanvas/Code/Tools/TranslationGeneration.cpp b/Gems/ScriptCanvas/Code/Tools/TranslationGeneration.cpp new file mode 100644 index 0000000000..c0a0f41e95 --- /dev/null +++ b/Gems/ScriptCanvas/Code/Tools/TranslationGeneration.cpp @@ -0,0 +1,1481 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include "TranslationGeneration.h" + +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include + +#include +#include + +namespace ScriptCanvasEditorTools +{ + namespace Helpers + { + //! Convenience function that writes a key/value string pair into a given JSON value + void WriteString(rapidjson::Value& owner, const AZStd::string& key, const AZStd::string& value, rapidjson::Document& document); + } + + TranslationGeneration::TranslationGeneration() + { + AZ::ComponentApplicationBus::BroadcastResult(m_serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); + AZ::ComponentApplicationBus::BroadcastResult(m_behaviorContext, &AZ::ComponentApplicationRequests::GetBehaviorContext); + } + + void TranslationGeneration::TranslateBehaviorClasses() + { + for (const auto& behaviorClassPair : m_behaviorContext->m_classes) + { + TranslateBehaviorClass(behaviorClassPair.second); + } + } + + void TranslationGeneration::TranslateEBus(const AZ::BehaviorEBus* behaviorEBus) + { + if (ShouldSkip(behaviorEBus)) + { + return; + } + + TranslationFormat translationRoot; + + // Get the handlers + if (!TranslateEBusHandler(behaviorEBus, translationRoot)) + { + if (behaviorEBus->m_events.empty()) + { + return; + } + + Entry entry; + + // Generate the translation file + entry.m_key = behaviorEBus->m_name; + entry.m_details.m_category = Helpers::GetStringAttribute(behaviorEBus, AZ::Script::Attributes::Category);; + entry.m_details.m_tooltip = behaviorEBus->m_toolTip; + entry.m_details.m_name = behaviorEBus->m_name; + entry.m_context = "EBusSender"; + + AZStd::string prettyName = Helpers::GetStringAttribute(behaviorEBus, AZ::ScriptCanvasAttributes::PrettyName); + if (!prettyName.empty()) + { + entry.m_details.m_name = prettyName; + } + + SplitCamelCase(entry.m_details.m_name); + + for (auto event : behaviorEBus->m_events) + { + const AZ::BehaviorEBusEventSender& ebusSender = event.second; + + AZ::BehaviorMethod* method = ebusSender.m_event; + if (!method) + { + method = ebusSender.m_broadcast; + } + + if (!method) + { + AZ_Warning("Script Canvas", false, "Failed to find method: %s", event.first.c_str()); + continue; + } + + Method eventEntry; + const char* eventName = event.first.c_str(); + + eventEntry.m_key = eventName; + + prettyName = Helpers::GetStringAttribute(behaviorEBus, AZ::ScriptCanvasAttributes::PrettyName); + eventEntry.m_details.m_name = prettyName.empty() ? eventName : prettyName; + eventEntry.m_details.m_tooltip = Helpers::ReadStringAttribute(event.second.m_attributes, AZ::Script::Attributes::ToolTip); + + SplitCamelCase(eventEntry.m_details.m_name); + + eventEntry.m_entry.m_name = "In"; + eventEntry.m_entry.m_tooltip = AZStd::string::format("When signaled, this will invoke %s", eventEntry.m_details.m_name.c_str()); + eventEntry.m_exit.m_name = "Out"; + eventEntry.m_exit.m_tooltip = AZStd::string::format("Signaled after %s is invoked", eventEntry.m_details.m_name.c_str()); + + size_t start = method->HasBusId() ? 1 : 0; + for (size_t i = start; i < method->GetNumArguments(); ++i) + { + Argument argument; + auto argumentType = method->GetArgument(i)->m_typeId; + + // Check the BC for metadata + + Helpers::GetTypeNameAndDescription(argumentType, argument.m_details.m_name, argument.m_details.m_tooltip); + + auto name = method->GetArgumentName(i); + if (name && !name->empty()) + { + argument.m_details.m_name = *name; + } + + auto tooltip = method->GetArgumentToolTip(i); + if (tooltip && !tooltip->empty()) + { + argument.m_details.m_tooltip = *tooltip; + } + + argument.m_typeId = argumentType.ToString(); + + SplitCamelCase(argument.m_details.m_name); + + eventEntry.m_arguments.push_back(argument); + } + + if (method->HasResult()) + { + Argument result; + + auto resultType = method->GetResult()->m_typeId; + + Helpers::GetTypeNameAndDescription(resultType, result.m_details.m_name, result.m_details.m_tooltip); + + auto tooltip = method->GetArgumentToolTip(0); + if (tooltip && !tooltip->empty()) + { + result.m_details.m_tooltip = *tooltip; + } + + result.m_typeId = resultType.ToString(); + + SplitCamelCase(result.m_details.m_name); + + eventEntry.m_results.push_back(result); + } + + entry.m_methods.push_back(eventEntry); + + } + + translationRoot.m_entries.push_back(entry); + + SaveJSONData(AZStd::string::format("EBus/Senders/%s", behaviorEBus->m_name.c_str()), translationRoot); + } + else + { + SaveJSONData(AZStd::string::format("EBus/Handlers/%s", behaviorEBus->m_name.c_str()), translationRoot); + } + } + + AZ::Entity* TranslationGeneration::TranslateAZEvent(const AZ::BehaviorMethod& method) + { + // Make sure the method returns an AZ::Event by reference or pointer + if (AZ::MethodReturnsAzEventByReferenceOrPointer(method)) + { + // Read in AZ Event Description data to retrieve the event name and parameter names + AZ::Attribute* azEventDescAttribute = AZ::FindAttribute(AZ::Script::Attributes::AzEventDescription, method.m_attributes); + AZ::BehaviorAzEventDescription behaviorAzEventDesc; + AZ::AttributeReader azEventDescAttributeReader(nullptr, azEventDescAttribute); + azEventDescAttributeReader.Read(behaviorAzEventDesc); + if (behaviorAzEventDesc.m_eventName.empty()) + { + AZ_Error("NodeUtils", false, "Cannot create an AzEvent node with empty event name") + } + + auto scriptCanvasEntity = aznew AZ::Entity{ AZStd::string::format("SC-EventNode(%s)", behaviorAzEventDesc.m_eventName.c_str()) }; + scriptCanvasEntity->Init(); + auto azEventHandler = scriptCanvasEntity->CreateComponent(); + + azEventHandler->InitEventFromMethod(method); + + return scriptCanvasEntity; + } + + return nullptr; + } + + bool TranslationGeneration::TranslateBehaviorClass(const AZ::BehaviorClass* behaviorClass) + { + if (ShouldSkip(behaviorClass)) + { + return false; + } + + AZStd::string className = behaviorClass->m_name; + AZStd::string prettyName = Helpers::GetStringAttribute(behaviorClass, AZ::ScriptCanvasAttributes::PrettyName); + if (!prettyName.empty()) + { + className = prettyName; + } + + TranslationFormat translationRoot; + + Entry entry; + entry.m_context = "BehaviorClass"; + entry.m_key = behaviorClass->m_name; + + EntryDetails& details = entry.m_details; + details.m_name = className; + details.m_category = Helpers::GetStringAttribute(behaviorClass, AZ::Script::Attributes::Category); + details.m_tooltip = Helpers::GetStringAttribute(behaviorClass, AZ::Script::Attributes::ToolTip); + + SplitCamelCase(details.m_name); + + if (!behaviorClass->m_methods.empty()) + { + for (const auto& methodPair : behaviorClass->m_methods) + { + const AZ::BehaviorMethod* behaviorMethod = methodPair.second; + + Method methodEntry; + + AZStd::string cleanName = GraphCanvas::TranslationKey::Sanitize(methodPair.first); + + methodEntry.m_key = cleanName; + methodEntry.m_context = className; + + methodEntry.m_details.m_category = ""; + methodEntry.m_details.m_tooltip = ""; + methodEntry.m_details.m_name = methodPair.second->m_name; + + AZStd::string prefix = className + "::"; + AZ::StringFunc::Replace(methodEntry.m_details.m_name, prefix.c_str(), ""); + SplitCamelCase(methodEntry.m_details.m_name); + + methodEntry.m_entry.m_name = "In"; + methodEntry.m_entry.m_tooltip = AZStd::string::format("When signaled, this will invoke %s", methodEntry.m_details.m_name.c_str()); + methodEntry.m_exit.m_name = "Out"; + methodEntry.m_exit.m_tooltip = AZStd::string::format("Signaled after %s is invoked", methodEntry.m_details.m_name.c_str()); + + if (!Helpers::MethodHasAttribute(behaviorMethod, AZ::ScriptCanvasAttributes::FloatingFunction)) + { + methodEntry.m_details.m_category = details.m_category; + } + else if (Helpers::MethodHasAttribute(behaviorMethod, AZ::Script::Attributes::Category)) + { + methodEntry.m_details.m_category = Helpers::ReadStringAttribute(behaviorMethod->m_attributes, AZ::Script::Attributes::Category); + } + + // Arguments (Input Slots) + if (behaviorMethod->GetNumArguments() > 0) + { + for (size_t argIndex = 0; argIndex < behaviorMethod->GetNumArguments(); ++argIndex) + { + const AZ::BehaviorParameter* parameter = behaviorMethod->GetArgument(argIndex); + + Argument argument; + + AZStd::string argumentKey = parameter->m_typeId.ToString(); + AZStd::string argumentName = parameter->m_name; + AZStd::string argumentDescription = ""; + + Helpers::GetTypeNameAndDescription(parameter->m_typeId, argumentName, argumentDescription); + + argument.m_typeId = argumentKey; + argument.m_details.m_name = parameter->m_name; + argument.m_details.m_category = ""; + argument.m_details.m_tooltip = argumentDescription; + + SplitCamelCase(argument.m_details.m_name); + + methodEntry.m_arguments.push_back(argument); + } + } + + // Results (Output Slots) + const AZ::BehaviorParameter* resultParameter = behaviorMethod->HasResult() ? behaviorMethod->GetResult() : nullptr; + if (resultParameter) + { + Argument result; + + AZStd::string resultKey = resultParameter->m_typeId.ToString(); + AZStd::string resultName = resultParameter->m_name; + AZStd::string resultDescription = ""; + + Helpers::GetTypeNameAndDescription(resultParameter->m_typeId, resultName, resultDescription); + + result.m_typeId = resultKey; + result.m_details.m_name = resultParameter->m_name; + result.m_details.m_tooltip = resultDescription; + + SplitCamelCase(result.m_details.m_name); + + methodEntry.m_results.push_back(result); + } + + entry.m_methods.push_back(methodEntry); + } + } + + // Behavior Class properties + if (!behaviorClass->m_properties.empty()) + { + for (const auto& propertyEntry : behaviorClass->m_properties) + { + AZ::BehaviorProperty* behaviorProperty = propertyEntry.second; + if (behaviorProperty) + { + TranslateBehaviorProperty(behaviorProperty, behaviorClass->m_name, "BehaviorClass", &entry); + } + } + } + + translationRoot.m_entries.push_back(entry); + + AZStd::string sanitizedFilename = GraphCanvas::TranslationKey::Sanitize(className); + AZStd::string fileName = AZStd::string::format("Classes/%s", sanitizedFilename.c_str()); + + SaveJSONData(fileName, translationRoot); + + return true; + } + + void TranslationGeneration::TranslateAZEvents() + { + GraphCanvas::TranslationKey translationKey; + AZStd::vector nodes; + + // Methods + for (const auto& behaviorMethod : m_behaviorContext->m_methods) + { + const auto& method = *behaviorMethod.second; + AZ::Entity* node = TranslateAZEvent(method); + if (node) + { + nodes.push_back(node); + } + } + + // Methods in classes + for (auto behaviorClass : m_behaviorContext->m_classes) + { + for (auto behaviorMethod : behaviorClass.second->m_methods) + { + const auto& method = *behaviorMethod.second; + AZ::Entity* node = TranslateAZEvent(method); + if (node) + { + nodes.push_back(node); + } + } + } + + TranslationFormat translationRoot; + + for (auto& node : nodes) + { + ScriptCanvas::Nodes::Core::AzEventHandler* nodeComponent = node->FindComponent(); + nodeComponent->Init(); + nodeComponent->Configure(); + + const ScriptCanvas::Nodes::Core::AzEventEntry& azEventEntry{ nodeComponent->GetEventEntry() }; + + Entry entry; + entry.m_key = azEventEntry.m_eventName; + entry.m_context = "AZEventHandler"; + entry.m_details.m_name = azEventEntry.m_eventName; + + SplitCamelCase(entry.m_details.m_name); + + for (const ScriptCanvas::Slot& slot : nodeComponent->GetSlots()) + { + Slot slotEntry; + + if (slot.IsVisible()) + { + slotEntry.m_key = slot.GetName(); + + if (slot.GetId() == azEventEntry.m_azEventInputSlotId) + { + slotEntry.m_details.m_name = azEventEntry.m_eventName; + } + else + { + slotEntry.m_details.m_name = slot.GetName(); + } + + entry.m_slots.push_back(slotEntry); + } + } + + translationRoot.m_entries.push_back(entry); + + // delete the node, don't need to keep it beyond this point + delete node; + + + AZStd::string filename = GraphCanvas::TranslationKey::Sanitize(entry.m_key); + + AZStd::string targetFile = AZStd::string::format("AZEvents/%s", filename.c_str()); + + SaveJSONData(targetFile, translationRoot); + + translationRoot.m_entries.clear(); + } + } + + void TranslationGeneration::TranslateNodes() + { + GraphCanvas::TranslationKey translationKey; + AZStd::vector nodes; + + auto getNodeClasses = [this, &nodes](const AZ::SerializeContext::ClassData*, const AZ::Uuid& type) + { + bool foundBaseClass = false; + auto baseClassVisitorFn = [&nodes, &type, &foundBaseClass](const AZ::SerializeContext::ClassData* reflectedBase, const AZ::TypeId& /*rttiBase*/) + { + if (!reflectedBase) + { + foundBaseClass = false; + return false; // stop iterating + } + + foundBaseClass = (reflectedBase->m_typeId == azrtti_typeid()); + if (foundBaseClass) + { + nodes.push_back(type); + return false; // we have a base, stop iterating + } + + return true; // keep iterating + }; + + AZ::EntityUtils::EnumerateBaseRecursive(m_serializeContext, baseClassVisitorFn, type); + + return true; + }; + + m_serializeContext->EnumerateAll(getNodeClasses); + + for (auto& node : nodes) + { + TranslateNode(node); + } + } + + void TranslationGeneration::TranslateNode(const AZ::TypeId& nodeTypeId) + { + TranslationFormat translationRoot; + + if (const AZ::SerializeContext::ClassData* classData = m_serializeContext->FindClassData(nodeTypeId)) + { + Entry entry; + entry.m_key = classData->m_typeId.ToString(); + entry.m_context = "ScriptCanvas::Node"; + + EntryDetails& details = entry.m_details; + + AZStd::string cleanName = GraphCanvas::TranslationKey::Sanitize(classData->m_name); + + if (classData->m_editData) + { + details.m_name = classData->m_editData->m_name; + } + else + { + details.m_name = cleanName; + } + + SplitCamelCase(details.m_name); + + // Tooltip attribute takes priority over the edit data description + AZStd::string tooltip = Helpers::GetStringAttribute(classData, AZ::Script::Attributes::ToolTip); + if (!tooltip.empty()) + { + details.m_tooltip = tooltip; + } + else + { + details.m_tooltip = classData->m_editData ? classData->m_editData->m_description : ""; + } + + details.m_category = Helpers::GetStringAttribute(classData, AZ::Script::Attributes::Category); + if (details.m_subtitle.empty()) + { + details.m_subtitle = details.m_category; + } + + if (details.m_category.empty()) + { + details.m_category = Helpers::GetStringAttribute(classData, AZ::Script::Attributes::Category); + if (details.m_category.empty() && classData->m_editData) + { + details.m_category = Helpers::GetCategory(classData); + + if (details.m_category.empty()) + { + auto elementData = classData->m_editData->FindElementData(AZ::Edit::ClassElements::EditorData); + const AZStd::string categoryAttribute = Helpers::ReadStringAttribute(elementData->m_attributes, AZ::Script::Attributes::Category); + if (!categoryAttribute.empty()) + { + details.m_category = categoryAttribute; + } + } + } + } + + if (details.m_category.empty()) + { + // Get the library's name as the category + details.m_category = Helpers::GetLibraryCategory(*m_serializeContext, classData->m_name); + } + + if (ScriptCanvas::Node* nodeComponent = reinterpret_cast(classData->m_factory->Create(classData->m_name))) + { + nodeComponent->Init(); + nodeComponent->Configure(); + + int inputIndex = 0; + int outputIndex = 0; + + const auto& allSlots = nodeComponent->GetAllSlots(); + for (const auto& slot : allSlots) + { + Slot slotEntry; + + if (slot->GetDescriptor().IsExecution()) + { + if (slot->GetDescriptor().IsInput()) + { + slotEntry.m_key = AZStd::string::format("Input_%s", slot->GetName().c_str()); + inputIndex++; + + slotEntry.m_details.m_name = slot->GetName(); + slotEntry.m_details.m_tooltip = slot->GetToolTip(); + } + else if (slot->GetDescriptor().IsOutput()) + { + slotEntry.m_key = AZStd::string::format("Output_%s", slot->GetName().c_str()); + outputIndex++; + + slotEntry.m_details.m_name = slot->GetName(); + slotEntry.m_details.m_tooltip = slot->GetToolTip(); + } + + entry.m_slots.push_back(slotEntry); + } + else + { + AZStd::string slotTypeKey = slot->GetDataType().IsValid() ? ScriptCanvas::Data::GetName(slot->GetDataType()) : ""; + if (slotTypeKey.empty()) + { + if (!slot->GetDataType().GetAZType().IsNull()) + { + slotTypeKey = slot->GetDataType().GetAZType().ToString(); + } + } + + if (slotTypeKey.empty()) + { + if (slot->GetDynamicDataType() == ScriptCanvas::DynamicDataType::Container) + { + slotTypeKey = "Container"; + } + else if (slot->GetDynamicDataType() == ScriptCanvas::DynamicDataType::Value) + { + slotTypeKey = "Value"; + } + else if (slot->GetDynamicDataType() == ScriptCanvas::DynamicDataType::Any) + { + slotTypeKey = "Any"; + } + } + + Argument& argument = slotEntry.m_data; + + if (slot->GetDescriptor().IsInput()) + { + slotEntry.m_key = AZStd::string::format("DataInput_%s", slot->GetName().c_str()); + inputIndex++; + + AZStd::string argumentKey = slotTypeKey; + AZStd::string argumentName = slot->GetName(); + AZStd::string argumentDescription = slot->GetToolTip(); + + argument.m_typeId = argumentKey; + argument.m_details.m_name = argumentName; + argument.m_details.m_tooltip = argumentDescription; + + } + else if (slot->GetDescriptor().IsOutput()) + { + slotEntry.m_key = AZStd::string::format("DataOutput_%s", slot->GetName().c_str()); + outputIndex++; + + AZStd::string resultKey = slotTypeKey; + AZStd::string resultName = slot->GetName(); + AZStd::string resultDescription = slot->GetToolTip(); + + argument.m_typeId = resultKey; + argument.m_details.m_name = resultName; + argument.m_details.m_tooltip = resultDescription; + } + + entry.m_slots.push_back(slotEntry); + } + } + + delete nodeComponent; + } + + translationRoot.m_entries.push_back(entry); + + if (details.m_category.empty()) + { + details.m_category = "Uncategorized"; + } + + AZStd::string prefix = GraphCanvas::TranslationKey::Sanitize(details.m_category); + AZStd::string filename = GraphCanvas::TranslationKey::Sanitize(details.m_name); + + AZStd::string targetFile = AZStd::string::format("Nodes/%s_%s", prefix.c_str(), filename.c_str()); + + SaveJSONData(targetFile, translationRoot); + + translationRoot.m_entries.clear(); + + } + } + + void TranslationGeneration::TranslateOnDemandReflectedTypes(TranslationFormat& translationRoot) + { + AZStd::vector onDemandReflectedTypes; + + for (auto& typePair : m_behaviorContext->m_typeToClassMap) + { + if (m_behaviorContext->IsOnDemandTypeReflected(typePair.first)) + { + onDemandReflectedTypes.push_back(typePair.first); + } + + // Check for methods that come from node generics + if (typePair.second->HasAttribute(AZ::ScriptCanvasAttributes::Internal::ImplementedAsNodeGeneric)) + { + onDemandReflectedTypes.push_back(typePair.first); + } + } + + // Now that I know all the on demand reflected, I'll dump it out + for (auto& onDemandReflectedType : onDemandReflectedTypes) + { + AZ::BehaviorClass* behaviorClass = m_behaviorContext->m_typeToClassMap[onDemandReflectedType]; + if (behaviorClass) + { + Entry entry; + + EntryDetails& details = entry.m_details; + details.m_name = behaviorClass->m_name; + SplitCamelCase(details.m_name); + + // Get the pretty name + AZStd::string prettyName; + if (AZ::Attribute* prettyNameAttribute = AZ::FindAttribute(AZ::ScriptCanvasAttributes::PrettyName, behaviorClass->m_attributes)) + { + AZ::AttributeReader(nullptr, prettyNameAttribute).Read(prettyName, *m_behaviorContext); + } + + entry.m_context = "OnDemandReflected"; + entry.m_key = behaviorClass->m_typeId.ToString().c_str(); + + if (!prettyName.empty()) + { + details.m_name = prettyName; + } + + details.m_category = Helpers::GetStringAttribute(behaviorClass, AZ::Script::Attributes::Category); + details.m_tooltip = Helpers::GetStringAttribute(behaviorClass, AZ::Script::Attributes::ToolTip); + + for (auto& methodPair : behaviorClass->m_methods) + { + AZ::BehaviorMethod* behaviorMethod = methodPair.second; + if (behaviorMethod) + { + Method methodEntry; + + AZStd::string cleanName = GraphCanvas::TranslationKey::Sanitize(methodPair.first); + + methodEntry.m_key = cleanName; + methodEntry.m_context = entry.m_key; + + methodEntry.m_details.m_tooltip = Helpers::GetStringAttribute(behaviorMethod, AZ::Script::Attributes::ToolTip); + methodEntry.m_details.m_name = methodPair.second->m_name; + SplitCamelCase(methodEntry.m_details.m_name); + + // Strip the className from the methodName + AZStd::string qualifiedName = behaviorClass->m_name + "::"; + AzFramework::StringFunc::Replace(methodEntry.m_details.m_name, qualifiedName.c_str(), ""); + + AZStd::string cleanMethodName = methodEntry.m_details.m_name; + + methodEntry.m_entry.m_name = "In"; + methodEntry.m_entry.m_tooltip = AZStd::string::format("When signaled, this will invoke %s", methodEntry.m_details.m_name.c_str()); + methodEntry.m_exit.m_name = "Out"; + methodEntry.m_exit.m_tooltip = AZStd::string::format("Signaled after %s is invoked", methodEntry.m_details.m_name.c_str()); + + // Arguments (Input Slots) + if (behaviorMethod->GetNumArguments() > 0) + { + for (size_t argIndex = 0; argIndex < behaviorMethod->GetNumArguments(); ++argIndex) + { + const AZ::BehaviorParameter* parameter = behaviorMethod->GetArgument(argIndex); + + Argument argument; + + AZStd::string argumentKey = parameter->m_typeId.ToString(); + AZStd::string argumentName = parameter->m_name; + AZStd::string argumentDescription = ""; + + Helpers::GetTypeNameAndDescription(parameter->m_typeId, argumentName, argumentDescription); + + argument.m_typeId = argumentKey; + argument.m_details.m_name = argumentName; + argument.m_details.m_category = ""; + argument.m_details.m_tooltip = argumentDescription; + + SplitCamelCase(argument.m_details.m_name); + + methodEntry.m_arguments.push_back(argument); + } + } + + const AZ::BehaviorParameter* resultParameter = behaviorMethod->HasResult() ? behaviorMethod->GetResult() : nullptr; + if (resultParameter) + { + Argument result; + + AZStd::string resultKey = resultParameter->m_typeId.ToString(); + + AZStd::string resultName = resultParameter->m_name; + AZStd::string resultDescription = ""; + + Helpers::GetTypeNameAndDescription(resultParameter->m_typeId, resultName, resultDescription); + + result.m_typeId = resultKey; + result.m_details.m_name = resultName; + result.m_details.m_tooltip = resultDescription; + + SplitCamelCase(result.m_details.m_name); + + methodEntry.m_results.push_back(result); + } + + entry.m_methods.push_back(methodEntry); + } + } + + translationRoot.m_entries.push_back(entry); + } + } + + SaveJSONData("Types/OnDemandReflectedTypes", translationRoot); + } + + void TranslationGeneration::TranslateBehaviorGlobals() + { + for (const auto& [propertyName, behaviorProperty] : m_behaviorContext->m_properties) + { + TranslateBehaviorProperty(propertyName); + } + } + + void TranslationGeneration::TranslateBehaviorProperty(const AZStd::string& propertyName) + { + const auto behaviorPropertyEntry = m_behaviorContext->m_properties.find(propertyName); + if (behaviorPropertyEntry == m_behaviorContext->m_properties.end()) + { + return; + } + + const AZ::BehaviorProperty* behaviorProperty = behaviorPropertyEntry->second; + + Entry entry; + + TranslateBehaviorProperty(behaviorProperty, propertyName, "Constant", &entry); + + TranslationFormat translationRoot; + translationRoot.m_entries.push_back(entry); + + AZStd::string cleanName = GraphCanvas::TranslationKey::Sanitize(behaviorProperty->m_name); + AZStd::string fileName = AZStd::string::format("Properties/%s", cleanName.c_str()); + SaveJSONData(fileName, translationRoot); + } + + void TranslationGeneration::TranslateMethod(AZ::BehaviorMethod* behaviorMethod, Method& methodEntry) + { + // Arguments (Input Slots) + if (behaviorMethod->GetNumArguments() > 0) + { + for (size_t argIndex = 0; argIndex < behaviorMethod->GetNumArguments(); ++argIndex) + { + const AZ::BehaviorParameter* parameter = behaviorMethod->GetArgument(argIndex); + + Argument argument; + + AZStd::string argumentKey = parameter->m_typeId.ToString(); + AZStd::string argumentName = parameter->m_name; + AZStd::string argumentDescription = ""; + + Helpers::GetTypeNameAndDescription(parameter->m_typeId, argumentName, argumentDescription); + + argument.m_typeId = argumentKey; + argument.m_details.m_name = parameter->m_name; + argument.m_details.m_category = ""; + argument.m_details.m_tooltip = argumentDescription; + + SplitCamelCase(argument.m_details.m_name); + + methodEntry.m_arguments.push_back(argument); + } + } + + // Results (Output Slots) + const AZ::BehaviorParameter* resultParameter = behaviorMethod->HasResult() ? behaviorMethod->GetResult() : nullptr; + if (resultParameter) + { + Argument result; + + AZStd::string resultKey = resultParameter->m_typeId.ToString(); + AZStd::string resultName = resultParameter->m_name; + AZStd::string resultDescription = ""; + + Helpers::GetTypeNameAndDescription(resultParameter->m_typeId, resultName, resultDescription); + + result.m_typeId = resultKey; + result.m_details.m_name = resultParameter->m_name; + result.m_details.m_tooltip = resultDescription; + + SplitCamelCase(result.m_details.m_name); + + methodEntry.m_results.push_back(result); + } + } + + void TranslationGeneration::TranslateBehaviorProperty(const AZ::BehaviorProperty* behaviorProperty, const AZStd::string& className, const AZStd::string& context, Entry* entry) + { + if (!behaviorProperty->m_getter && !behaviorProperty->m_setter) + { + return; + } + + Entry localEntry; + if (!entry) + { + entry = &localEntry; + } + else if (entry->m_key.empty()) + { + entry->m_key = className; + entry->m_context = context; + } + + if (behaviorProperty->m_getter) + { + AZStd::string cleanName = behaviorProperty->m_name; + AZ::StringFunc::Replace(cleanName, "::Getter", ""); + + Method method; + + AZStd::string methodName = "Get"; + methodName.append(cleanName); + method.m_key = methodName; + method.m_details.m_name = methodName; + method.m_details.m_tooltip = behaviorProperty->m_getter->m_debugDescription ? behaviorProperty->m_getter->m_debugDescription : ""; + + SplitCamelCase(method.m_details.m_name); + + TranslateMethod(behaviorProperty->m_getter, method); + + entry->m_methods.push_back(method); + + } + + if (behaviorProperty->m_setter) + { + AZStd::string cleanName = behaviorProperty->m_name; + AZ::StringFunc::Replace(cleanName, "::Setter", ""); + + Method method; + + AZStd::string methodName = "Set"; + methodName.append(cleanName); + + method.m_key = methodName; + method.m_details.m_name = methodName; + method.m_details.m_tooltip = behaviorProperty->m_setter->m_debugDescription ? behaviorProperty->m_getter->m_debugDescription : ""; + + SplitCamelCase(method.m_details.m_name); + + TranslateMethod(behaviorProperty->m_setter, method); + + entry->m_methods.push_back(method); + } + + } + + bool TranslationGeneration::TranslateEBusHandler(const AZ::BehaviorEBus* behaviorEbus, TranslationFormat& translationRoot) + { + // Must be a valid ebus handler + if (!behaviorEbus || !behaviorEbus->m_createHandler || !behaviorEbus->m_destroyHandler) + { + return false; + } + + // Create the handler in order to get information out of it + AZ::BehaviorEBusHandler* handler(nullptr); + if (behaviorEbus->m_createHandler->InvokeResult(handler)) + { + Entry entry; + + // Generate the translation file + entry.m_key = behaviorEbus->m_name; + entry.m_context = "EBusHandler"; + + entry.m_details.m_name = behaviorEbus->m_name; + entry.m_details.m_tooltip = behaviorEbus->m_toolTip; + entry.m_details.m_category = "EBus Handlers"; + + SplitCamelCase(entry.m_details.m_name); + + for (const AZ::BehaviorEBusHandler::BusForwarderEvent& event : handler->GetEvents()) + { + Method methodEntry; + + AZStd::string cleanName = GraphCanvas::TranslationKey::Sanitize(event.m_name); + methodEntry.m_key = cleanName; + methodEntry.m_details.m_category = ""; + methodEntry.m_details.m_tooltip = ""; + methodEntry.m_details.m_name = event.m_name; + + SplitCamelCase(methodEntry.m_details.m_name); + + // Arguments (Input Slots) + if (!event.m_parameters.empty()) + { + for (size_t argIndex = AZ::eBehaviorBusForwarderEventIndices::ParameterFirst; argIndex < event.m_parameters.size(); ++argIndex) + { + const AZ::BehaviorParameter& parameter = event.m_parameters[argIndex]; + + Argument argument; + + AZStd::string argumentKey = parameter.m_typeId.ToString(); + AZStd::string argumentName = event.m_name; + AZStd::string argumentDescription = ""; + + if (!event.m_metadataParameters.empty() && event.m_metadataParameters.size() > argIndex) + { + argumentName = event.m_metadataParameters[argIndex].m_name; + argumentDescription = event.m_metadataParameters[argIndex].m_toolTip; + } + + if (argumentName.empty()) + { + Helpers::GetTypeNameAndDescription(parameter.m_typeId, argumentName, argumentDescription); + } + + if (!event.m_metadataParameters.empty() && event.m_metadataParameters.size() > argIndex) + { + auto name = event.m_metadataParameters[argIndex].m_name; + auto tooltip = event.m_metadataParameters[argIndex].m_toolTip; + + if (!name.empty()) + { + argumentName = name; + } + + if (!tooltip.empty()) + { + argumentDescription = tooltip; + } + } + + argument.m_typeId = argumentKey; + argument.m_details.m_name = argumentName; + argument.m_details.m_tooltip = argumentDescription; + + SplitCamelCase(argument.m_details.m_name); + + methodEntry.m_arguments.push_back(argument); + } + } + + auto resultIndex = AZ::eBehaviorBusForwarderEventIndices::Result; + const AZ::BehaviorParameter* resultParameter = event.HasResult() ? &event.m_parameters[resultIndex] : nullptr; + if (resultParameter) + { + Argument result; + + AZStd::string resultKey = resultParameter->m_typeId.ToString(); + + AZStd::string resultName = event.m_name; + AZStd::string resultDescription = ""; + + if (!event.m_metadataParameters.empty() && event.m_metadataParameters.size() > resultIndex) + { + resultName = event.m_metadataParameters[resultIndex].m_name; + resultDescription = event.m_metadataParameters[resultIndex].m_toolTip; + } + + if (resultName.empty()) + { + Helpers::GetTypeNameAndDescription(resultParameter->m_typeId, resultName, resultDescription); + } + + result.m_typeId = resultKey; + result.m_details.m_name = resultName; + result.m_details.m_tooltip = resultDescription; + + SplitCamelCase(result.m_details.m_name); + + methodEntry.m_results.push_back(result); + } + + entry.m_methods.push_back(methodEntry); + + } + + behaviorEbus->m_destroyHandler->Invoke(handler); // Destroys the Created EbusHandler + + translationRoot.m_entries.push_back(entry); + } + + if (!translationRoot.m_entries.empty()) + { + return true; + } + + return false; + } + + void TranslationGeneration::SaveJSONData(const AZStd::string& filename, TranslationFormat& translationRoot) + { + rapidjson_ly::Document document; + document.SetObject(); + rapidjson_ly::Value entries(rapidjson_ly::kArrayType); + + // Here I'll need to parse translationRoot myself and produce the JSON + for (const auto& entrySource : translationRoot.m_entries) + { + rapidjson_ly::Value entry(rapidjson_ly::kObjectType); + rapidjson_ly::Value value(rapidjson_ly::kStringType); + + value.SetString(entrySource.m_key.c_str(), document.GetAllocator()); + entry.AddMember("key", value, document.GetAllocator()); + + value.SetString(entrySource.m_context.c_str(), document.GetAllocator()); + entry.AddMember("context", value, document.GetAllocator()); + + value.SetString(entrySource.m_variant.c_str(), document.GetAllocator()); + entry.AddMember("variant", value, document.GetAllocator()); + + rapidjson_ly::Value details(rapidjson_ly::kObjectType); + value.SetString(entrySource.m_details.m_name.c_str(), document.GetAllocator()); + details.AddMember("name", value, document.GetAllocator()); + + Helpers::WriteString(details, "category", entrySource.m_details.m_category, document); + Helpers::WriteString(details, "tooltip", entrySource.m_details.m_tooltip, document); + Helpers::WriteString(details, "subtitle", entrySource.m_details.m_subtitle, document); + + entry.AddMember("details", details, document.GetAllocator()); + + if (!entrySource.m_methods.empty()) + { + rapidjson_ly::Value methods(rapidjson_ly::kArrayType); + + for (const auto& methodSource : entrySource.m_methods) + { + rapidjson_ly::Value theMethod(rapidjson_ly::kObjectType); + + value.SetString(methodSource.m_key.c_str(), document.GetAllocator()); + theMethod.AddMember("key", value, document.GetAllocator()); + + if (!methodSource.m_context.empty()) + { + value.SetString(methodSource.m_context.c_str(), document.GetAllocator()); + theMethod.AddMember("context", value, document.GetAllocator()); + } + + if (!methodSource.m_entry.m_name.empty()) + { + rapidjson_ly::Value entrySlot(rapidjson_ly::kObjectType); + value.SetString(methodSource.m_entry.m_name.c_str(), document.GetAllocator()); + entrySlot.AddMember("name", value, document.GetAllocator()); + + Helpers::WriteString(entrySlot, "tooltip", methodSource.m_entry.m_tooltip, document); + + theMethod.AddMember("entry", entrySlot, document.GetAllocator()); + } + + if (!methodSource.m_exit.m_name.empty()) + { + rapidjson_ly::Value exitSlot(rapidjson_ly::kObjectType); + value.SetString(methodSource.m_exit.m_name.c_str(), document.GetAllocator()); + exitSlot.AddMember("name", value, document.GetAllocator()); + + Helpers::WriteString(exitSlot, "tooltip", methodSource.m_exit.m_tooltip, document); + + theMethod.AddMember("exit", exitSlot, document.GetAllocator()); + } + + rapidjson_ly::Value methodDetails(rapidjson_ly::kObjectType); + + value.SetString(methodSource.m_details.m_name.c_str(), document.GetAllocator()); + methodDetails.AddMember("name", value, document.GetAllocator()); + + Helpers::WriteString(methodDetails, "category", methodSource.m_details.m_category, document); + Helpers::WriteString(methodDetails, "tooltip", methodSource.m_details.m_tooltip, document); + + theMethod.AddMember("details", methodDetails, document.GetAllocator()); + + if (!methodSource.m_arguments.empty()) + { + rapidjson_ly::Value methodArguments(rapidjson_ly::kArrayType); + + [[maybe_unused]] size_t index = 0; + for (const auto& argSource : methodSource.m_arguments) + { + rapidjson_ly::Value argument(rapidjson_ly::kObjectType); + rapidjson_ly::Value argumentDetails(rapidjson_ly::kObjectType); + + value.SetString(argSource.m_typeId.c_str(), document.GetAllocator()); + argument.AddMember("typeid", value, document.GetAllocator()); + + value.SetString(argSource.m_details.m_name.c_str(), document.GetAllocator()); + argumentDetails.AddMember("name", value, document.GetAllocator()); + + Helpers::WriteString(argumentDetails, "category", argSource.m_details.m_category, document); + Helpers::WriteString(argumentDetails, "tooltip", argSource.m_details.m_tooltip, document); + + + argument.AddMember("details", argumentDetails, document.GetAllocator()); + + methodArguments.PushBack(argument, document.GetAllocator()); + + } + + theMethod.AddMember("params", methodArguments, document.GetAllocator()); + + } + + if (!methodSource.m_results.empty()) + { + rapidjson_ly::Value methodArguments(rapidjson_ly::kArrayType); + + for (const auto& argSource : methodSource.m_results) + { + rapidjson_ly::Value argument(rapidjson_ly::kObjectType); + rapidjson_ly::Value argumentDetails(rapidjson_ly::kObjectType); + + value.SetString(argSource.m_typeId.c_str(), document.GetAllocator()); + argument.AddMember("typeid", value, document.GetAllocator()); + + value.SetString(argSource.m_details.m_name.c_str(), document.GetAllocator()); + argumentDetails.AddMember("name", value, document.GetAllocator()); + + Helpers::WriteString(argumentDetails, "category", argSource.m_details.m_category, document); + Helpers::WriteString(argumentDetails, "tooltip", argSource.m_details.m_tooltip, document); + + argument.AddMember("details", argumentDetails, document.GetAllocator()); + + methodArguments.PushBack(argument, document.GetAllocator()); + } + + + theMethod.AddMember("results", methodArguments, document.GetAllocator()); + + } + + methods.PushBack(theMethod, document.GetAllocator()); + } + + entry.AddMember("methods", methods, document.GetAllocator()); + } + + if (!entrySource.m_slots.empty()) + { + rapidjson_ly::Value slotsArray(rapidjson_ly::kArrayType); + + for (const auto& slotSource : entrySource.m_slots) + { + rapidjson_ly::Value theSlot(rapidjson_ly::kObjectType); + + value.SetString(slotSource.m_key.c_str(), document.GetAllocator()); + theSlot.AddMember("key", value, document.GetAllocator()); + + rapidjson_ly::Value sloDetails(rapidjson_ly::kObjectType); + if (!slotSource.m_details.m_name.empty()) + { + Helpers::WriteString(sloDetails, "name", slotSource.m_details.m_name, document); + Helpers::WriteString(sloDetails, "tooltip", slotSource.m_details.m_tooltip, document); + theSlot.AddMember("details", sloDetails, document.GetAllocator()); + } + + if (!slotSource.m_data.m_details.m_name.empty()) + { + rapidjson_ly::Value slotDataDetails(rapidjson_ly::kObjectType); + Helpers::WriteString(slotDataDetails, "name", slotSource.m_data.m_details.m_name, document); + theSlot.AddMember("details", slotDataDetails, document.GetAllocator()); + } + + slotsArray.PushBack(theSlot, document.GetAllocator()); + } + + entry.AddMember("slots", slotsArray, document.GetAllocator()); + } + + entries.PushBack(entry, document.GetAllocator()); + } + + document.AddMember("entries", entries, document.GetAllocator()); + + AZ::IO::Path gemPath = Helpers::GetGemPath("ScriptCanvas.Editor"); + gemPath = gemPath / AZ::IO::Path("TranslationAssets"); + gemPath = gemPath / filename; + gemPath.ReplaceExtension(".names"); + + AZStd::string folderPath; + + AZ::StringFunc::Path::GetFolderPath(gemPath.c_str(), folderPath); + + if (!AZ::IO::FileIOBase::GetInstance()->Exists(folderPath.c_str())) + { + if (AZ::IO::FileIOBase::GetInstance()->CreatePath(folderPath.c_str()) != AZ::IO::ResultCode::Success) + { + AZ_Error("Translation", false, "Failed to create output folder"); + return; + } + } + + char resolvedBuffer[AZ_MAX_PATH_LEN] = { 0 }; + AZ::IO::FileIOBase::GetInstance()->ResolvePath(gemPath.c_str(), resolvedBuffer, AZ_MAX_PATH_LEN); + AZStd::string endPath = resolvedBuffer; + AZ::StringFunc::Path::Normalize(endPath); + + AZ::IO::SystemFile outputFile; + if (!outputFile.Open(endPath.c_str(), + AZ::IO::SystemFile::OpenMode::SF_OPEN_CREATE | + AZ::IO::SystemFile::OpenMode::SF_OPEN_CREATE_PATH | + AZ::IO::SystemFile::OpenMode::SF_OPEN_WRITE_ONLY)) + { + AZ_Error("Translation", false, "Failed to open file for writing: %s", filename.c_str()); + return; + } + + rapidjson_ly::StringBuffer scratchBuffer; + + rapidjson_ly::PrettyWriter writer(scratchBuffer); + document.Accept(writer); + + outputFile.Write(scratchBuffer.GetString(), scratchBuffer.GetSize()); + outputFile.Close(); + + scratchBuffer.Clear(); + + AzQtComponents::ShowFileOnDesktop(endPath.c_str()); + + } + + void TranslationGeneration::SplitCamelCase(AZStd::string& text) + { + AZStd::regex splitRegex(R"(/[a-z]+|[0-9]+|(?:[A-Z][a-z]+)|(?:[A-Z]+(?=(?:[A-Z][a-z])|[^AZa-z]|[$\d\n]))/g)"); + text = AZStd::regex_replace(text, splitRegex, " $&"); + text = AZ::StringFunc::LStrip(text); + } + + namespace Helpers + { + AZStd::string ReadStringAttribute(const AZ::AttributeArray& attributes, const AZ::Crc32& attribute) + { + AZStd::string attributeValue = ""; + if (auto attributeItem = azrtti_cast*>(AZ::FindAttribute(attribute, attributes))) + { + attributeValue = attributeItem->Get(nullptr); + return attributeValue; + } + + if (auto attributeItem = azrtti_cast*>(AZ::FindAttribute(attribute, attributes))) + { + attributeValue = attributeItem->Get(nullptr); + return attributeValue; + } + + return {}; + } + + bool MethodHasAttribute(const AZ::BehaviorMethod* method, AZ::Crc32 attribute) + { + return AZ::FindAttribute(attribute, method->m_attributes) != nullptr; // warning C4800: 'AZ::Attribute *': forcing value to bool 'true' or 'false' (performance warning) + } + + void GetTypeNameAndDescription(AZ::TypeId typeId, AZStd::string& outName, AZStd::string& outDescription) + { + AZ::SerializeContext* serializeContext{}; + AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); + AZ_Assert(serializeContext, "Serialize Context is required"); + + if (const AZ::SerializeContext::ClassData* classData = serializeContext->FindClassData(typeId)) + { + if (classData->m_editData) + { + outName = classData->m_editData->m_name ? classData->m_editData->m_name : classData->m_name; + outDescription = classData->m_editData->m_description ? classData->m_editData->m_description : ""; + } + else + { + outName = classData->m_name; + } + } + } + + AZStd::string GetGemPath(const AZStd::string& gemName) + { + if (auto settingsRegistry = AZ::Interface::Get(); settingsRegistry != nullptr) + { + AZ::IO::Path gemSourceAssetDirectories; + AZStd::vector gemInfos; + if (AzFramework::GetGemsInfo(gemInfos, *settingsRegistry)) + { + auto FindGemByName = [gemName](const AzFramework::GemInfo& gemInfo) + { + return gemInfo.m_gemName == gemName; + }; + + // Gather unique list of Gem Paths from the Settings Registry + auto foundIt = AZStd::find_if(gemInfos.begin(), gemInfos.end(), FindGemByName); + if (foundIt != gemInfos.end()) + { + const AzFramework::GemInfo& gemInfo = *foundIt; + for (const AZ::IO::Path& absoluteSourcePath : gemInfo.m_absoluteSourcePaths) + { + gemSourceAssetDirectories = (absoluteSourcePath / gemInfo.GetGemAssetFolder()); + } + + return gemSourceAssetDirectories.c_str(); + } + } + } + return ""; + } + + AZStd::string GetCategory(const AZ::SerializeContext::ClassData* classData) + { + AZStd::string categoryPath; + + if (classData->m_editData) + { + auto editorElementData = classData->m_editData->FindElementData(AZ::Edit::ClassElements::EditorData); + if (editorElementData) + { + if (auto categoryAttribute = editorElementData->FindAttribute(AZ::Edit::Attributes::Category)) + { + if (auto categoryAttributeData = azdynamic_cast*>(categoryAttribute)) + { + categoryPath = categoryAttributeData->Get(nullptr); + } + } + } + } + + return categoryPath; + } + + AZStd::string GetLibraryCategory(const AZ::SerializeContext& serializeContext, const AZStd::string& nodeName) + { + AZStd::string category; + + // Get all the types. + auto EnumerateLibraryDefintionNodes = [&nodeName, &category, &serializeContext]( + const AZ::SerializeContext::ClassData* classData, const AZ::Uuid&) -> bool + { + AZStd::string categoryPath = classData->m_editData ? classData->m_editData->m_name : classData->m_name; + + if (classData->m_editData) + { + auto editorElementData = classData->m_editData->FindElementData(AZ::Edit::ClassElements::EditorData); + if (editorElementData) + { + if (auto categoryAttribute = editorElementData->FindAttribute(AZ::Edit::Attributes::Category)) + { + if (auto categoryAttributeData = azdynamic_cast*>(categoryAttribute)) + { + categoryPath = categoryAttributeData->Get(nullptr); + } + } + } + } + + // Children + for (auto& node : ScriptCanvas::Library::LibraryDefinition::GetNodes(classData->m_typeId)) + { + // Pass in the associated class data so we can do more intensive lookups? + const AZ::SerializeContext::ClassData* nodeClassData = serializeContext.FindClassData(node.first); + + if (nodeClassData == nullptr) + { + continue; + } + + // Skip over some of our more dynamic nodes that we want to populate using different means + else if (nodeClassData->m_azRtti && nodeClassData->m_azRtti->IsTypeOf()) + { + continue; + } + else if (nodeClassData->m_azRtti && nodeClassData->m_azRtti->IsTypeOf()) + { + continue; + } + else + { + if (node.second == nodeName) + { + category = categoryPath; + return false; + } + } + } + + return true; + }; + + const AZ::TypeId& libraryDefTypeId = azrtti_typeid(); + serializeContext.EnumerateDerived(EnumerateLibraryDefintionNodes, libraryDefTypeId, libraryDefTypeId); + + return category; + } + + void WriteString(rapidjson_ly::Value& owner, const AZStd::string& key, const AZStd::string& value, rapidjson_ly::Document& document) + { + if (key.empty() || value.empty()) + { + return; + } + + rapidjson_ly::Value item(rapidjson_ly::kStringType); + item.SetString(value.c_str(), document.GetAllocator()); + + rapidjson_ly::Value keyVal(rapidjson_ly::kStringType); + keyVal.SetString(key.c_str(), document.GetAllocator()); + + owner.AddMember(keyVal, item, document.GetAllocator()); + } + + } +} diff --git a/Gems/ScriptCanvas/Code/Tools/TranslationGeneration.h b/Gems/ScriptCanvas/Code/Tools/TranslationGeneration.h new file mode 100644 index 0000000000..0f84c48b22 --- /dev/null +++ b/Gems/ScriptCanvas/Code/Tools/TranslationGeneration.h @@ -0,0 +1,203 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#pragma once + +#include +#include + +#include +#include +#include +#include + +namespace AZ +{ + class BehaviorClass; + class BehaviorContext; + class BehaviorEBus; + class BehaviorMethod; + class BehaviorProperty; + class Entity; + class SerializeContext; +} + +namespace ScriptCanvasEditorTools +{ + //! Utility structures for generating the JSON files used for names of elements in Script Canvas + struct EntryDetails + { + AZStd::string m_name; + AZStd::string m_tooltip; + AZStd::string m_category; + AZStd::string m_subtitle; + }; + using EntryDetailsList = AZStd::vector; + + //! Utility structure that represents a method's argument + struct Argument + { + AZStd::string m_typeId; + EntryDetails m_details; + }; + + //! Utility structure that represents a method + struct Method + { + AZStd::string m_key; + AZStd::string m_context; + + EntryDetails m_details; + + EntryDetails m_entry; + EntryDetails m_exit; + + AZStd::vector m_arguments; + AZStd::vector m_results; + }; + + //! Utility structure that represents a Script Canvas slot + struct Slot + { + AZStd::string m_key; + + EntryDetails m_details; + + Argument m_data; + }; + + //! Utility structure that represents an reflected element + struct Entry + { + AZStd::string m_key; + AZStd::string m_context; + AZStd::string m_variant; + + EntryDetails m_details; + + AZStd::vector m_methods; + AZStd::vector m_slots; + }; + + // The root level JSON object + struct TranslationFormat + { + AZStd::vector m_entries; + }; + + + //! Class the wraps all the generation of translation data for all scripting types. + class TranslationGeneration + { + public: + + TranslationGeneration(); + + //! Generate the translation data for a given BehaviorClass + bool TranslateBehaviorClass(const AZ::BehaviorClass* behaviorClass); + + //! Generate the translation data for all Behavior Context classes + void TranslateBehaviorClasses(); + + //! Generate the translation data for Behavior Ebus, handles both Handlers and Senders + void TranslateEBus(const AZ::BehaviorEBus* behaviorEBus); + + //! Generate the translation data for a specific AZ::Event + AZ::Entity* TranslateAZEvent(const AZ::BehaviorMethod& method); + + //! Generate the translation data for AZ::Events + void TranslateAZEvents(); + + //! Generate the translation data for all ScriptCanvas::Node types + void TranslateNodes(); + + //! Generate the translation data for the specified TypeId (must inherit from ScriptCanvas::Node) + void TranslateNode(const AZ::TypeId& nodeTypeId); + + //! Generate the translation data for on-demand reflected types + void TranslateOnDemandReflectedTypes(TranslationFormat& translationRoot); + + //! Generates the translation data for all global properties and methods in the BehaviorContext + void TranslateBehaviorGlobals(); + + //! Generates the translation data for the specified property in the BehaviorContext (global, by name) + void TranslateBehaviorProperty(const AZStd::string& propertyName); + + //! Generates the translation data for the specified property in the BehaviorContext + void TranslateBehaviorProperty(const AZ::BehaviorProperty* behaviorProperty, const AZStd::string& className, const AZStd::string& context, Entry* entry = nullptr); + + private: + + //! Utility to populate a BehaviorMethod's translation data + void TranslateMethod(AZ::BehaviorMethod* behaviorMethod, Method& methodEntry); + + //! Generates the translation data for a BehaviorEBus that has an BehaviorEBusHandler + bool TranslateEBusHandler(const AZ::BehaviorEBus* behaviorEbus, TranslationFormat& translationRoot); + + //! Utility function that saves a TranslationFormat object in the desired JSON format + void SaveJSONData(const AZStd::string& filename, TranslationFormat& translationRoot); + + //! Utility function that splits camel-case syntax string into separate words + void SplitCamelCase(AZStd::string&); + + //! Evaluates if the specified object has exclusion flags and should be skipped from generation + template + bool ShouldSkip(const T* object) const + { + using namespace AZ::Script::Attributes; + + // Check for "ignore" attribute for ScriptCanvas + const auto& excludeClassAttributeData = azdynamic_cast*>(AZ::FindAttribute(ExcludeFrom, object->m_attributes)); + const bool excludeClass = excludeClassAttributeData && (static_cast(excludeClassAttributeData->Get(nullptr)) & static_cast(ExcludeFlags::List | ExcludeFlags::Documentation)); + + if (excludeClass) + { + return true; // skip this class + } + + return false; + } + + AZ::SerializeContext* m_serializeContext; + AZ::BehaviorContext* m_behaviorContext; + }; + + namespace Helpers + { + //! Generic function that fetches from a valid type that has attributes a string attribute + template + AZStd::string GetStringAttribute(const T* source, const AZ::Crc32& attribute) + { + AZStd::string attributeValue = ""; + if (auto attributeItem = azrtti_cast*>(AZ::FindAttribute(attribute, source->m_attributes))) + { + attributeValue = attributeItem->Get(nullptr); + } + return attributeValue; + } + + //! Utility function that fetches from an AttributeArray a string attribute whether it's an AZStd::string or a const char* + AZStd::string ReadStringAttribute(const AZ::AttributeArray& attributes, const AZ::Crc32& attribute); + + //! Utility function to verify if a BehaviorMethod has the specified attribute + bool MethodHasAttribute(const AZ::BehaviorMethod* method, AZ::Crc32 attribute); + + //! Utility function to find a valid name from the ClassData/EditContext + void GetTypeNameAndDescription(AZ::TypeId typeId, AZStd::string& outName, AZStd::string& outDescription); + + //! Utility function to get the path to the specified gem + AZStd::string GetGemPath(const AZStd::string& gemName); + + //! Get the category attribute for a given ClassData + AZStd::string GetCategory(const AZ::SerializeContext::ClassData* classData); + + //! Get the category for a ScriptCanvas node library + AZStd::string GetLibraryCategory(const AZ::SerializeContext& serializeContext, const AZStd::string& nodeName); + } + +} diff --git a/Gems/ScriptCanvas/Code/scriptcanvasgem_editor_tools_files.cmake b/Gems/ScriptCanvas/Code/scriptcanvasgem_editor_tools_files.cmake new file mode 100644 index 0000000000..d665a2c645 --- /dev/null +++ b/Gems/ScriptCanvas/Code/scriptcanvasgem_editor_tools_files.cmake @@ -0,0 +1,12 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +set(FILES + Tools/TranslationGeneration.h + Tools/TranslationGeneration.cpp +) diff --git a/Gems/ScriptCanvas/Registry/AssetProcessorPlatformConfig.setreg b/Gems/ScriptCanvas/Registry/AssetProcessorPlatformConfig.setreg new file mode 100644 index 0000000000..be8841986a --- /dev/null +++ b/Gems/ScriptCanvas/Registry/AssetProcessorPlatformConfig.setreg @@ -0,0 +1,13 @@ +{ + "Amazon": { + "AssetProcessor": { + "Settings": { + "RC names": { + "glob": "*.names", + "params": "copy", + "productAssetType": "{6A1A3B00-3DF2-4297-96BB-3BA067A978E6}" + } + } + } + } +} diff --git a/Gems/ScriptCanvasDeveloper/Code/Editor/Include/ScriptCanvasDeveloperEditor/TSGenerateAction.h b/Gems/ScriptCanvasDeveloper/Code/Editor/Include/ScriptCanvasDeveloperEditor/TSGenerateAction.h index 64d3aeab5c..87847d71b0 100644 --- a/Gems/ScriptCanvasDeveloper/Code/Editor/Include/ScriptCanvasDeveloperEditor/TSGenerateAction.h +++ b/Gems/ScriptCanvasDeveloper/Code/Editor/Include/ScriptCanvasDeveloperEditor/TSGenerateAction.h @@ -8,13 +8,12 @@ #pragma once -class QAction; +class QWidget; class QMenu; +class QAction; namespace ScriptCanvasDeveloperEditor { - namespace TSGenerateAction - { - QAction* SetupTSFileAction(QMenu* mainWindow); - }; + //! The Qt action for translation database options + QAction* TranslationDatabaseFileAction(QMenu* mainMenu, QWidget* mainWindow); } diff --git a/Gems/ScriptCanvasDeveloper/Code/Editor/Source/ScriptCanvasDeveloperEditorComponent.cpp b/Gems/ScriptCanvasDeveloper/Code/Editor/Source/ScriptCanvasDeveloperEditorComponent.cpp index 6e8e8a7c6d..9193556624 100644 --- a/Gems/ScriptCanvasDeveloper/Code/Editor/Source/ScriptCanvasDeveloperEditorComponent.cpp +++ b/Gems/ScriptCanvasDeveloper/Code/Editor/Source/ScriptCanvasDeveloperEditorComponent.cpp @@ -99,10 +99,11 @@ namespace ScriptCanvasDeveloperEditor developerMenu->addSeparator(); NodeListDumpAction::CreateNodeListDumpAction(developerMenu); - TSGenerateAction::SetupTSFileAction(developerMenu); developerMenu->addSeparator(); + TranslationDatabaseFileAction(developerMenu, mainWindow); + QAction* action = developerMenu->addAction("Open Menu Test"); QObject::connect(action, &QAction::triggered, [mainWindow]() diff --git a/Gems/ScriptCanvasDeveloper/Code/Editor/Source/TSGenerateAction.cpp b/Gems/ScriptCanvasDeveloper/Code/Editor/Source/TSGenerateAction.cpp index 191d987555..56168f6f56 100644 --- a/Gems/ScriptCanvasDeveloper/Code/Editor/Source/TSGenerateAction.cpp +++ b/Gems/ScriptCanvasDeveloper/Code/Editor/Source/TSGenerateAction.cpp @@ -6,434 +6,37 @@ * */ - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - +#if !defined(Q_MOC_RUN) +#include #include -#include -#include -#include +#include #include +#endif + +#include namespace ScriptCanvasDeveloperEditor { - namespace TSGenerateAction + void ReloadText(QWidget*) { - void GenerateTSFile(); - void DumpBehaviorContextMethods(const XMLDocPtr& doc); - void DumpBehaviorContextEbuses(const XMLDocPtr& doc); - void DumpBehaviorContextEBusHandlers(const XMLDocPtr& doc, AZ::BehaviorEBus* ebus, const AZStd::string& categoryName); - bool StartContext(const XMLDocPtr& doc, const AZStd::string& contextType, const AZStd::string& contextName, const AZStd::string& toolTip, const AZStd::string& categoryName, bool addContextTypeToKey= false); - void AddMessageNode(const XMLDocPtr& doc, const AZStd::string& classorbusName, const AZStd::string& eventormethodName, const AZStd::string& toolTip, const AZStd::string& categoryName, const AZ::BehaviorEBusHandler::BusForwarderEvent& event); - void AddMessageNode(const XMLDocPtr& doc, const AZStd::string& classorbusName, const AZStd::string& eventormethodName, const AZStd::string& toolTip, const AZStd::string& categoryName, const AZ::BehaviorMethod* method); - - QAction* SetupTSFileAction(QMenu* mainMenu) - { - QAction* qAction = nullptr; - - if (mainMenu) - { - qAction = mainMenu->addAction(QAction::tr("Create EBus Localization File")); - qAction->setAutoRepeat(false); - qAction->setToolTip("Creates a QT .TS file of all EBus nodes(their inputs and outputs) to a file in the current folder."); - qAction->setShortcut(QKeySequence(QAction::tr("Ctrl+Alt+X", "Debug|Build EBus .TS file"))); - - QObject::connect(qAction, &QAction::triggered, &GenerateTSFile); - } - - return qAction; - } - - void GenerateTSFile() - { - auto translationScriptPath = AZ::IO::FixedMaxPath(AZ::Utils::GetEnginePath()) / - "Assets" / "Editor" / "Translation" / "scriptcanvas_en_us.ts"; - - XMLDocPtr tsDoc(XMLDoc::LoadFromDisk(translationScriptPath.c_str())); - - if (tsDoc == nullptr) - { - tsDoc = XMLDoc::Alloc("ScriptCanvas"); - } - - DumpBehaviorContextMethods(tsDoc); - DumpBehaviorContextEbuses(tsDoc); - - tsDoc->WriteToDisk(translationScriptPath.c_str()); - } - - void DumpBehaviorContextMethods(const XMLDocPtr& doc) - { - AZ::SerializeContext* serializeContext{}; - AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); - - AZ::BehaviorContext* behaviorContext{}; - AZ::ComponentApplicationBus::BroadcastResult(behaviorContext, &AZ::ComponentApplicationRequests::GetBehaviorContext); - - if (serializeContext == nullptr || behaviorContext == nullptr) - { - return; - } - - for (const auto& classIter : behaviorContext->m_classes) - { - const AZ::BehaviorClass* behaviorClass = classIter.second; - - // Check for "ignore" attribute for ScriptCanvas - auto excludeClassAttributeData = azdynamic_cast*>(AZ::FindAttribute(AZ::Script::Attributes::ExcludeFrom, behaviorClass->m_attributes)); - const bool excludeClass = excludeClassAttributeData && static_cast(excludeClassAttributeData->Get(nullptr)) & static_cast(AZ::Script::Attributes::ExcludeFlags::Documentation); - if (excludeClass) - { - continue; // skip this class - } - - AZStd::string categoryName; - if (auto categoryAttribute = azrtti_cast*>(AZ::FindAttribute(AZ::Script::Attributes::Category, behaviorClass->m_attributes))) - { - categoryName = categoryAttribute->Get(nullptr); - } - - AZStd::string methodToolTip; - if (auto methodToolTipAttribute = azrtti_cast*>(AZ::FindAttribute(AZ::Script::Attributes::ToolTip, behaviorClass->m_attributes))) - { - methodToolTip = methodToolTipAttribute->Get(nullptr); - } - - bool addContext = false; - - for (auto methodPair : behaviorClass->m_methods) - { - // Check for "ignore" attribute for ScriptCanvas - auto excludeMethodAttributeData = azdynamic_cast*>(AZ::FindAttribute(AZ::Script::Attributes::ExcludeFrom, methodPair.second->m_attributes)); - const bool excludeMethod = excludeMethodAttributeData && static_cast(excludeMethodAttributeData->Get(nullptr)) & static_cast(AZ::Script::Attributes::ExcludeFlags::Documentation); - if (excludeMethod) - { - continue; // skip this method - } - - if( !addContext ) - { - StartContext(doc, "Method", classIter.first, methodToolTip, categoryName); - addContext = true; - } - - AZStd::string toolTip; - if (auto toolTipAttribute = azrtti_cast*>(AZ::FindAttribute(AZ::Script::Attributes::ToolTip, methodPair.second->m_attributes))) - { - toolTip = toolTipAttribute->Get(nullptr); - } - - AZStd::string nodeCategoryName; - if (auto attribute = azrtti_cast*>(AZ::FindAttribute(AZ::Script::Attributes::Category, methodPair.second->m_attributes))) - { - nodeCategoryName = attribute->Get(nullptr); - } - - AddMessageNode(doc, classIter.first, methodPair.first, toolTip, nodeCategoryName, methodPair.second); - } - } - } - - void DumpBehaviorContextEbuses(const XMLDocPtr& doc) - { - AZ::SerializeContext* serializeContext{}; - AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); - - AZ::BehaviorContext* behaviorContext{}; - AZ::ComponentApplicationBus::BroadcastResult(behaviorContext, &AZ::ComponentApplicationRequests::GetBehaviorContext); - - if (serializeContext == nullptr || behaviorContext == nullptr) - { - return; - } - - // We will skip buses that are ONLY registered on classes that derive from EditorComponentBase, - // because they don't have a runtime implementation. Buses such as the TransformComponent which - // is implemented by both an EditorComponentBase derived class and a Component derived class - // will still appear - AZStd::unordered_set skipBuses; - AZStd::unordered_set potentialSkipBuses; - AZStd::unordered_set nonSkipBuses; - - for (const auto& classIter : behaviorContext->m_classes) - { - const AZ::BehaviorClass* behaviorClass = classIter.second; - - // Check for "ignore" attribute for ScriptCanvas - auto excludeClassAttributeData = azdynamic_cast*>(AZ::FindAttribute(AZ::Script::Attributes::ExcludeFrom, behaviorClass->m_attributes)); - const bool excludeClass = excludeClassAttributeData && static_cast(excludeClassAttributeData->Get(nullptr)) & static_cast(AZ::Script::Attributes::ExcludeFlags::Documentation); - if (excludeClass) - { - for (const auto& requestBus : behaviorClass->m_requestBuses) - { - skipBuses.insert(AZ::Crc32(requestBus.c_str())); - } - continue; // skip this class - } - - auto baseClass = AZStd::find(behaviorClass->m_baseClasses.begin(), - behaviorClass->m_baseClasses.end(), - AzToolsFramework::Components::EditorComponentBase::TYPEINFO_Uuid()); - - if (baseClass != behaviorClass->m_baseClasses.end()) - { - for (const auto& requestBus : behaviorClass->m_requestBuses) - { - potentialSkipBuses.insert(AZ::Crc32(requestBus.c_str())); - } - } - // If the Ebus does not inherit from EditorComponentBase then do not skip it - else - { - for (const auto& requestBus : behaviorClass->m_requestBuses) - { - nonSkipBuses.insert(AZ::Crc32(requestBus.c_str())); - } - } - } - - // Add buses which are not on the non-skip list to the skipBuses set - for (auto potentialSkipBus : potentialSkipBuses) - { - if (nonSkipBuses.find(potentialSkipBus) == nonSkipBuses.end()) - { - skipBuses.insert(potentialSkipBus); - } - } - - for (const auto& ebusIter : behaviorContext->m_ebuses) - { - bool addContext = false; - AZ::BehaviorEBus* ebus = ebusIter.second; - - if (ebus == nullptr) - { - continue; - } - - auto excludeEbusAttributeData = azdynamic_cast*>(AZ::FindAttribute(AZ::Script::Attributes::ExcludeFrom, ebusIter.second->m_attributes)); - const bool excludeBus = excludeEbusAttributeData && static_cast(excludeEbusAttributeData->Get(nullptr)) & static_cast(AZ::Script::Attributes::ExcludeFlags::Documentation); - - auto skipBusIterator = skipBuses.find(AZ::Crc32(ebusIter.first.c_str())); - if (!ebus || skipBusIterator != skipBuses.end() || excludeBus) - { - continue; - } - - AZStd::string categoryName; - if (auto categoryAttribute = azrtti_cast*>(AZ::FindAttribute(AZ::Script::Attributes::Category, ebus->m_attributes))) - { - auto categoryAttribName = categoryAttribute->Get(nullptr); - - if (categoryAttribName != nullptr) - { - categoryName = categoryAttribName; - } - } - - DumpBehaviorContextEBusHandlers(doc, ebus, categoryName); - - for (const auto& eventIter : ebus->m_events) - { - const AZ::BehaviorMethod* const method = (eventIter.second.m_event != nullptr) ? eventIter.second.m_event : eventIter.second.m_broadcast; - if (!method || AZ::FindAttribute(AZ::Script::Attributes::ExcludeFrom, eventIter.second.m_attributes)) - { - continue; - } - - if( !addContext ) - { - StartContext(doc, "EBus", ebusIter.first, ebusIter.second->m_toolTip, categoryName); - addContext = true; - } - - AZStd::string toolTip; - if (auto toolTipAttribute = azrtti_cast*>(AZ::FindAttribute(AZ::Script::Attributes::ToolTip, eventIter.second.m_attributes))) - { - toolTip = toolTipAttribute->Get(nullptr); - } - - AZStd::string nodeCategoryName; - if (auto attribute = azrtti_cast*>(AZ::FindAttribute(AZ::Script::Attributes::Category, eventIter.second.m_attributes))) - { - nodeCategoryName = attribute->Get(nullptr); - } - - AddMessageNode(doc, ebusIter.first, eventIter.first, toolTip, nodeCategoryName, method); - } - } - } - - void DumpBehaviorContextEBusHandlers(const XMLDocPtr& doc, AZ::BehaviorEBus* ebus, const AZStd::string& categoryName) - { - if (!ebus) - { - return; - } - - if (!ebus->m_createHandler || !ebus->m_destroyHandler) - { - return; - } - - AZ::BehaviorContext* behaviorContext{}; - AZ::ComponentApplicationBus::BroadcastResult(behaviorContext, &AZ::ComponentApplicationRequests::GetBehaviorContext); - - bool addContext = false; - - AZ::BehaviorEBusHandler* handler(nullptr); - if (ebus->m_createHandler->InvokeResult(handler)) - { - for (const AZ::BehaviorEBusHandler::BusForwarderEvent& event : handler->GetEvents()) - { - if (!addContext) - { - StartContext(doc, "Handler", ebus->m_name, ebus->m_toolTip, categoryName, true); - addContext = true; - } - - AddMessageNode(doc, ebus->m_name, event.m_name, "", categoryName, event); - } - - ebus->m_destroyHandler->Invoke(handler); // Destroys the Created EbusHandler - } - } - - AZStd::string GetBaseID(const AZStd::string& classorbusName, const AZStd::string& eventormethodName) - { - AZStd::string p1(classorbusName); - AZStd::string p2(eventormethodName); - - AZStd::to_upper(p1.begin(), p1.end()); - AZStd::to_upper(p2.begin(), p2.end()); - - return p1 + "_" + p2; - } - - void AddCommonNodeElements(const XMLDocPtr& doc, const AZStd::string& baseID, const AZStd::string& classorbusName, const AZStd::string& eventormethodName, const AZStd::string& toolTip, const AZStd::string& categoryName) - { - doc->AddToContext(baseID + "_NAME", eventormethodName, AZStd::string::format("Class/Bus: %s Event/Method: %s", classorbusName.c_str(), eventormethodName.c_str())); - doc->AddToContext(baseID + "_TOOLTIP", toolTip); - doc->AddToContext(baseID + "_CATEGORY", categoryName); - doc->AddToContext(baseID + "_OUT_NAME"); - doc->AddToContext(baseID + "_OUT_TOOLTIP"); - doc->AddToContext(baseID + "_IN_NAME"); - doc->AddToContext(baseID + "_IN_TOOLTIP"); - } - - void AddResultElements(const XMLDocPtr& doc, const AZStd::string& baseID, const AZ::Uuid& typeId, const AZStd::string& name, const AZStd::string& toolTip) - { - ScriptCanvas::Data::Type outputType(ScriptCanvas::Data::FromAZType(typeId)); - - doc->AddToContext(baseID + "_OUTPUT0_NAME", ScriptCanvas::Data::GetName(outputType), "C++ Type: " + name); - doc->AddToContext(baseID + "_OUTPUT0_TOOLTIP", toolTip); - } - - void AddParameterElements(const XMLDocPtr& doc, const AZStd::string& baseID, size_t index, const AZ::Uuid& typeId, const AZStd::string& argName, const AZStd::string& argToolTip, const AZStd::string& cppType) - { - AZStd::string paramID(AZStd::string::format("%s_PARAM%zu_", baseID.c_str(), index)); - - ScriptCanvas::Data::Type outputType(ScriptCanvas::Data::FromAZType(typeId)); - - doc->AddToContext(paramID + "NAME", argName, AZStd::string::format("Simple Type: %s C++ Type: %s", ScriptCanvas::Data::GetName(outputType).c_str(), cppType.c_str())); - doc->AddToContext(paramID + "TOOLTIP", argToolTip); - } - - void AddOutputElements(const XMLDocPtr& doc, const AZStd::string& baseID, size_t index, const AZ::Uuid& typeId, const AZStd::string& argName, const AZStd::string& argToolTip, const AZStd::string& cppType) - { - AZStd::string paramID(AZStd::string::format("%s_OUTPUT%zu_", baseID.c_str(), index)); - - ScriptCanvas::Data::Type outputType(ScriptCanvas::Data::FromAZType(typeId)); - - doc->AddToContext(paramID + "NAME", argName, AZStd::string::format("Simple Type: %s C++ Type: %s", ScriptCanvas::Data::GetName(outputType).c_str(), cppType.c_str())); - doc->AddToContext(paramID + "TOOLTIP", argToolTip); - } - - bool StartContext(const XMLDocPtr& doc, const AZStd::string& contextType, const AZStd::string& contextName, const AZStd::string& toolTip, const AZStd::string& categoryName, bool addContextTypeToKey/* = false*/) - { - bool isNewContext = doc->StartContext(contextType + ": " + contextName); - - if( isNewContext ) - { - AZStd::string p1(contextName); - - if(addContextTypeToKey) - { - p1 = contextType + "_" + p1; - } - - p1 += "_"; - - AZStd::to_upper(p1.begin(), p1.end()); - - doc->AddToContext(p1 + "NAME", contextName); - doc->AddToContext(p1 + "TOOLTIP", toolTip); - doc->AddToContext(p1 + "CATEGORY", categoryName); - } - - return isNewContext; - } - - void AddMessageNode(const XMLDocPtr& doc, const AZStd::string& classorbusName, const AZStd::string& eventormethodName, const AZStd::string& toolTip, const AZStd::string& categoryName, const AZ::BehaviorEBusHandler::BusForwarderEvent& event) - { - AZStd::string baseID( "HANDLER_" + GetBaseID(classorbusName, eventormethodName)); - - if( !doc->MethodFamilyExists(baseID) ) - { - AddCommonNodeElements(doc, baseID, classorbusName, eventormethodName, toolTip, categoryName); - - if ( event.HasResult() ) - { - const AZStd::string name = event.m_metadataParameters[AZ::eBehaviorBusForwarderEventIndices::Result].m_name.empty() ? event.m_parameters[AZ::eBehaviorBusForwarderEventIndices::Result].m_name : event.m_parameters[AZ::eBehaviorBusForwarderEventIndices::Result].m_name; - - AddParameterElements(doc, baseID, 0, event.m_parameters[AZ::eBehaviorBusForwarderEventIndices::Result].m_typeId, name, event.m_metadataParameters[AZ::eBehaviorBusForwarderEventIndices::Result].m_toolTip, ""); - - AZ_TracePrintf("ScriptCanvas", "EBusHandler Index: 0 CategoryName: %s Ebus: %s Event: %s Name: %s", categoryName.c_str(), classorbusName.c_str(), eventormethodName.c_str(), name.c_str()); - } - - size_t outputIndex = 0; - for (size_t i = AZ::eBehaviorBusForwarderEventIndices::ParameterFirst; i < event.m_parameters.size(); ++i) - { - const AZ::BehaviorParameter& argParam = event.m_parameters[i]; - - AddOutputElements(doc, baseID, outputIndex++, argParam.m_typeId, event.m_metadataParameters[i].m_name, event.m_metadataParameters[i].m_toolTip, argParam.m_name); - } - } - } - - void AddMessageNode(const XMLDocPtr& doc, const AZStd::string& classorbusName, const AZStd::string& eventormethodName, const AZStd::string& toolTip, const AZStd::string& categoryName, const AZ::BehaviorMethod* method) - { - AZStd::string baseID( GetBaseID(classorbusName, eventormethodName) ); - - if (!doc->MethodFamilyExists(baseID)) - { - AddCommonNodeElements(doc, baseID, classorbusName, eventormethodName, toolTip, categoryName); - - const auto result = method->HasResult() ? method->GetResult() : nullptr; - if (result) - { - AddResultElements(doc, baseID, result->m_typeId, result->m_name, ""); - } - - size_t start = method->HasBusId() ? 1 : 0; - for (size_t i = start; i < method->GetNumArguments(); ++i) - { - if (const AZ::BehaviorParameter* argument = method->GetArgument(i)) - { - AddParameterElements(doc, baseID, i-start, argument->m_typeId, *method->GetArgumentName(i), *method->GetArgumentToolTip(i), argument->m_name); - } - } - } - } + GraphCanvas::TranslationRequestBus::Broadcast(&GraphCanvas::TranslationRequests::Restore); } -} + + QAction* TranslationDatabaseFileAction(QMenu* mainMenu, QWidget* mainWindow) + { + QAction* qAction = nullptr; + + if (mainWindow) + { + qAction = mainMenu->addAction(QAction::tr("Reload Text")); + qAction->setAutoRepeat(false); + qAction->setToolTip("Reloads all the text data used by Script Canvas for titles, tooltips, etc."); + qAction->setShortcut(QAction::tr("Ctrl+Alt+R", "Developer|Reload Text")); + QObject::connect(qAction, &QAction::triggered, [mainWindow]() { ReloadText(mainWindow); }); + + } + + return qAction; + } + +} // ScriptCanvasDeveloperEditor diff --git a/Gems/ScriptCanvasDeveloper/Code/scriptcanvasdeveloper_gem_editor_files.cmake b/Gems/ScriptCanvasDeveloper/Code/scriptcanvasdeveloper_gem_editor_files.cmake index 4ba5ea2714..1d34b5484a 100644 --- a/Gems/ScriptCanvasDeveloper/Code/scriptcanvasdeveloper_gem_editor_files.cmake +++ b/Gems/ScriptCanvasDeveloper/Code/scriptcanvasdeveloper_gem_editor_files.cmake @@ -7,6 +7,8 @@ # set(FILES + +# EditorAutomation Editor/Include/ScriptCanvasDeveloperEditor/EditorAutomation/EditorAutomationAction.h Editor/Include/ScriptCanvasDeveloperEditor/EditorAutomation/EditorAutomationModelIds.h Editor/Include/ScriptCanvasDeveloperEditor/EditorAutomation/EditorAutomationTest.h @@ -27,6 +29,8 @@ set(FILES Editor/Include/ScriptCanvasDeveloperEditor/EditorAutomation/EditorAutomationStates/GraphStates.h Editor/Include/ScriptCanvasDeveloperEditor/EditorAutomation/EditorAutomationStates/UtilityStates.h Editor/Include/ScriptCanvasDeveloperEditor/EditorAutomation/EditorAutomationStates/VariableStates.h + +# Includes Editor/Include/ScriptCanvasDeveloperEditor/Developer.h Editor/Include/ScriptCanvasDeveloperEditor/DeveloperUtils.h Editor/Include/ScriptCanvasDeveloperEditor/ScriptCanvasDeveloperEditorComponent.h @@ -37,6 +41,8 @@ set(FILES Editor/Include/ScriptCanvasDeveloperEditor/WrapperMock.h Editor/Include/ScriptCanvasDeveloperEditor/AutomationActions/DynamicSlotFullCreation.h Editor/Include/ScriptCanvasDeveloperEditor/AutomationActions/VariableListFullCreation.h + +# Source Editor/Source/Developer.cpp Editor/Source/DeveloperUtils.cpp Editor/Source/EditorAutomationTestDialog.h @@ -49,9 +55,13 @@ set(FILES Editor/Source/WrapperMock.cpp Editor/Source/XMLDoc.cpp Editor/Source/XMLDoc.h + +# AutomationActions Editor/Source/AutomationActions/DynamicSlotFullCreation.cpp Editor/Source/AutomationActions/NodePaletteFullCreation.cpp Editor/Source/AutomationActions/VariableListFullCreation.cpp + +# EditorAutomation Editor/Source/EditorAutomation/EditorAutomationTest.cpp Editor/Source/EditorAutomation/EditorAutomationActions/ScriptCanvasActions/ConnectionActions.cpp Editor/Source/EditorAutomation/EditorAutomationActions/ScriptCanvasActions/CreateElementsActions.cpp @@ -70,6 +80,8 @@ set(FILES Editor/Source/EditorAutomation/EditorAutomationStates/GraphStates.cpp Editor/Source/EditorAutomation/EditorAutomationStates/UtilityStates.cpp Editor/Source/EditorAutomation/EditorAutomationStates/VariableStates.cpp + +# EditorAutomationTests Editor/Source/EditorAutomationTests/EditorAutomationTests.h Editor/Source/EditorAutomationTests/GraphCreationTests.h Editor/Source/EditorAutomationTests/GraphCreationTests.cpp diff --git a/Gems/ScriptCanvasPhysics/Code/Source/WorldNodes.h b/Gems/ScriptCanvasPhysics/Code/Source/WorldNodes.h index c84435e505..96a15a9d29 100644 --- a/Gems/ScriptCanvasPhysics/Code/Source/WorldNodes.h +++ b/Gems/ScriptCanvasPhysics/Code/Source/WorldNodes.h @@ -60,7 +60,7 @@ namespace ScriptCanvasPhysics AZStd::vector /*list of entityIds*/ >; - static const char* k_categoryName = "PhysX/World"; + static constexpr const char* k_categoryName = "PhysX/World"; AZ_INLINE Result RayCastWorldSpaceWithGroup(const AZ::Vector3& start, const AZ::Vector3& direction, diff --git a/Gems/ScriptCanvasTesting/Code/Source/Framework/ScriptCanvasTestFixture.h b/Gems/ScriptCanvasTesting/Code/Source/Framework/ScriptCanvasTestFixture.h index f45b74d4f1..6e38f71eec 100644 --- a/Gems/ScriptCanvasTesting/Code/Source/Framework/ScriptCanvasTestFixture.h +++ b/Gems/ScriptCanvasTesting/Code/Source/Framework/ScriptCanvasTestFixture.h @@ -91,14 +91,6 @@ namespace ScriptCanvasTests AZ::IO::FileIOBase* fileIO = AZ::IO::FileIOBase::GetInstance(); AZ_Assert(fileIO, "SC unit tests require filehandling"); - if (!fileIO->GetAlias("@engroot@")) - { - const char* engineRoot = nullptr; - AzFramework::ApplicationRequests::Bus::BroadcastResult(engineRoot, &AzFramework::ApplicationRequests::GetEngineRoot); - AZ_Assert(engineRoot, "null engine root"); - fileIO->SetAlias("@engroot@", engineRoot); - } - s_setupSucceeded = fileIO->GetAlias("@engroot@") != nullptr; AZ::TickBus::AllowFunctionQueuing(true); diff --git a/Gems/ScriptCanvasTesting/Code/Source/Nodes/BehaviorContextObjectTestNode.h b/Gems/ScriptCanvasTesting/Code/Source/Nodes/BehaviorContextObjectTestNode.h index cc7bda1c95..da07ac64a2 100644 --- a/Gems/ScriptCanvasTesting/Code/Source/Nodes/BehaviorContextObjectTestNode.h +++ b/Gems/ScriptCanvasTesting/Code/Source/Nodes/BehaviorContextObjectTestNode.h @@ -48,6 +48,7 @@ namespace ScriptCanvasTestingNodes if (AZ::BehaviorContext* behaviorContext = azrtti_cast(context)) { behaviorContext->Class() + ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All) ->Attribute(AZ::Script::Attributes::Category, "Tests/Behavior Context") ->Method("SetString", &BehaviorContextObjectTest::SetString) ->Method("GetString", &BehaviorContextObjectTest::GetString) diff --git a/Gems/ScriptCanvasTesting/Code/Source/ScriptCanvasTestBus.cpp b/Gems/ScriptCanvasTesting/Code/Source/ScriptCanvasTestBus.cpp index c8db1169ed..0a0f71bead 100644 --- a/Gems/ScriptCanvasTesting/Code/Source/ScriptCanvasTestBus.cpp +++ b/Gems/ScriptCanvasTesting/Code/Source/ScriptCanvasTestBus.cpp @@ -111,6 +111,7 @@ namespace ScriptCanvasTesting modVoidDesc.m_eventName = "OnEvent-ZeroParam"; behaviorContext->EBus("GlobalEBus") + ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All) ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common) ->Handler() ->Event("AppendSweet", &GlobalEBus::Events::AppendSweet) @@ -193,6 +194,7 @@ namespace ScriptCanvasTesting if (AZ::BehaviorContext* behaviorContext = azrtti_cast(context)) { behaviorContext->EBus("PerformanceStressEBus") + ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All) ->Handler() ->Event("ForceStringCompare0", &PerformanceStressEBus::Events::ForceStringCompare0) ->Event("ForceStringCompare1", &PerformanceStressEBus::Events::ForceStringCompare1) @@ -248,6 +250,7 @@ namespace ScriptCanvasTesting if (AZ::BehaviorContext* behaviorContext = azrtti_cast(context)) { behaviorContext->EBus("LocalEBus") + ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All) ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common) ->Handler() ->Event("AppendSweet", &LocalEBus::Events::AppendSweet) @@ -262,6 +265,7 @@ namespace ScriptCanvasTesting if (AZ::BehaviorContext* behaviorContext = azrtti_cast(context)) { behaviorContext->EBus("NativeHandlingOnlyEBus") + ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All) ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common) ->Event("AppendSweet", &NativeHandlingOnlyEBus::Events::AppendSweet) ->Event("Increment", &NativeHandlingOnlyEBus::Events::Increment) diff --git a/Gems/StartingPointCamera/Code/Include/StartingPointCamera/StartingPointCameraConstants.h b/Gems/StartingPointCamera/Code/Include/StartingPointCamera/StartingPointCameraConstants.h index 849a462ab2..9a36cf5222 100644 --- a/Gems/StartingPointCamera/Code/Include/StartingPointCamera/StartingPointCameraConstants.h +++ b/Gems/StartingPointCamera/Code/Include/StartingPointCamera/StartingPointCameraConstants.h @@ -24,17 +24,6 @@ namespace Camera Z_Axis = 2 }; - ////////////////////////////////////////////////////////////////////////// - /// These are intended to be used as an index and needs to be implicitly - /// convertible to int. See StartingPointCameraUtilities.h for examples - enum VectorComponentType : int - { - X_Component = 0, - Y_Component = 1, - Z_Component = 2, - None = 3, - }; - ////////////////////////////////////////////////////////////////////////// /// These are intended to be used as an index and needs to be implicitly /// convertible to int. See StartingPointCameraUtilities.h for examples diff --git a/Gems/StartingPointCamera/Code/Include/StartingPointCamera/StartingPointCameraUtilities.h b/Gems/StartingPointCamera/Code/Include/StartingPointCamera/StartingPointCameraUtilities.h index eec86059c5..c565bf9379 100644 --- a/Gems/StartingPointCamera/Code/Include/StartingPointCamera/StartingPointCameraUtilities.h +++ b/Gems/StartingPointCamera/Code/Include/StartingPointCamera/StartingPointCameraUtilities.h @@ -16,24 +16,16 @@ namespace Camera { const char* GetNameFromUuid(const AZ::Uuid& uuid); - ////////////////////////////////////////////////////////////////////////// - /// This methods will 0 out a vector component and re-normalize it - ////////////////////////////////////////////////////////////////////////// - void MaskComponentFromNormalizedVector(AZ::Vector3& v, VectorComponentType vectorComponentType); + //! This methods will 0 out specified vector components and re-normalize it + void MaskComponentFromNormalizedVector(AZ::Vector3& v, bool ignoreX, bool ignoreY, bool ignoreZ); - ////////////////////////////////////////////////////////////////////////// - /// This will calculate the requested Euler angle from a given AZ::Quaternion - ////////////////////////////////////////////////////////////////////////// + //! This will calculate the requested Euler angle from a given AZ::Quaternion float GetEulerAngleFromTransform(const AZ::Transform& rotation, EulerAngleType eulerAngleType); - ////////////////////////////////////////////////////////////////////////// - /// This will calculate an AZ::Transform based on an Euler angle - ////////////////////////////////////////////////////////////////////////// + //! This will calculate an AZ::Transform based on an Euler angle AZ::Transform CreateRotationFromEulerAngle(EulerAngleType rotationType, float radians); - ////////////////////////////////////////////////////////////////////////// - /// Creates the Quaternion representing the rotation looking down the vector - ////////////////////////////////////////////////////////////////////////// + //! Creates the Quaternion representing the rotation looking down the vector AZ::Quaternion CreateQuaternionFromViewVector(const AZ::Vector3 lookVector); } //namespace Camera diff --git a/Gems/StartingPointCamera/Code/Source/CameraLookAtBehaviors/SlideAlongAxisBasedOnAngle.cpp b/Gems/StartingPointCamera/Code/Source/CameraLookAtBehaviors/SlideAlongAxisBasedOnAngle.cpp index d7fcc771f4..1d8d6adf6c 100644 --- a/Gems/StartingPointCamera/Code/Source/CameraLookAtBehaviors/SlideAlongAxisBasedOnAngle.cpp +++ b/Gems/StartingPointCamera/Code/Source/CameraLookAtBehaviors/SlideAlongAxisBasedOnAngle.cpp @@ -9,8 +9,8 @@ #include "SlideAlongAxisBasedOnAngle.h" #include "StartingPointCamera/StartingPointCameraUtilities.h" #include -#include #include +#include namespace Camera { @@ -20,48 +20,79 @@ namespace Camera if (serializeContext) { serializeContext->Class() - ->Version(1) + ->Version(2) ->Field("Axis to slide along", &SlideAlongAxisBasedOnAngle::m_axisToSlideAlong) ->Field("Angle Type", &SlideAlongAxisBasedOnAngle::m_angleTypeToChangeFor) - ->Field("Vector Component To Ignore", &SlideAlongAxisBasedOnAngle::m_vectorComponentToIgnore) + ->Field("Ignore X Component", &SlideAlongAxisBasedOnAngle::m_ignoreX) + ->Field("Ignore Y Component", &SlideAlongAxisBasedOnAngle::m_ignoreY) + ->Field("Ignore Z Component", &SlideAlongAxisBasedOnAngle::m_ignoreZ) ->Field("Max Positive Slide Distance", &SlideAlongAxisBasedOnAngle::m_maximumPositiveSlideDistance) ->Field("Max Negative Slide Distance", &SlideAlongAxisBasedOnAngle::m_maximumNegativeSlideDistance); AZ::EditContext* editContext = serializeContext->GetEditContext(); if (editContext) { - editContext->Class("SlideAlongAxisBasedOnAngle", "Slide 0..SlideDistance along Axis based on Angle Type. Maps from 90..-90 degrees") - ->ClassElement(AZ::Edit::ClassElements::EditorData, "") - ->DataElement(AZ::Edit::UIHandlers::ComboBox, &SlideAlongAxisBasedOnAngle::m_axisToSlideAlong, "Axis to slide along", "The Axis to slide along") - ->EnumAttribute(RelativeAxisType::ForwardBackward, "Forwards and Backwards") - ->EnumAttribute(RelativeAxisType::LeftRight, "Right and Left") - ->EnumAttribute(RelativeAxisType::UpDown, "Up and Down") - ->DataElement(AZ::Edit::UIHandlers::ComboBox, &SlideAlongAxisBasedOnAngle::m_angleTypeToChangeFor, "Angle Type", "The angle type to base the slide off of") - ->EnumAttribute(EulerAngleType::Pitch, "Pitch") - ->EnumAttribute(EulerAngleType::Roll, "Roll") - ->EnumAttribute(EulerAngleType::Yaw, "Yaw") - ->DataElement(AZ::Edit::UIHandlers::ComboBox, &SlideAlongAxisBasedOnAngle::m_vectorComponentToIgnore, "Vector Component To Ignore", "The Vector Component To Ignore") - ->EnumAttribute(VectorComponentType::None, "None") - ->EnumAttribute(VectorComponentType::X_Component, "X") - ->EnumAttribute(VectorComponentType::Y_Component, "Y") - ->EnumAttribute(VectorComponentType::Z_Component, "Z") - ->DataElement(0, &SlideAlongAxisBasedOnAngle::m_maximumPositiveSlideDistance, "Max Positive Slide Distance", "The maximum distance to slide in the positive") - ->Attribute(AZ::Edit::Attributes::Suffix, "m") - ->DataElement(0, &SlideAlongAxisBasedOnAngle::m_maximumNegativeSlideDistance, "Max Negative Slide Distance", "The maximum distance to slide in the negative") - ->Attribute(AZ::Edit::Attributes::Suffix, "m"); + editContext->Class("SlideAlongAxisBasedOnAngle", + "Slide 0..SlideDistance along Axis based on Angle Type. Maps from 90..-90 degrees") + ->ClassElement(AZ::Edit::ClassElements::EditorData, "") + ->DataElement(AZ::Edit::UIHandlers::ComboBox, &SlideAlongAxisBasedOnAngle::m_axisToSlideAlong, "Axis to slide along", + "The Axis to slide along") + ->EnumAttribute(RelativeAxisType::ForwardBackward, "Forwards and Backwards") + ->EnumAttribute(RelativeAxisType::LeftRight, "Right and Left") + ->EnumAttribute(RelativeAxisType::UpDown, "Up and Down") + ->DataElement(AZ::Edit::UIHandlers::ComboBox, &SlideAlongAxisBasedOnAngle::m_angleTypeToChangeFor, "Angle Type", + "The angle type to base the slide off of") + ->EnumAttribute(EulerAngleType::Pitch, "Pitch") + ->EnumAttribute(EulerAngleType::Roll, "Roll") + ->EnumAttribute(EulerAngleType::Yaw, "Yaw") + ->DataElement(0, &SlideAlongAxisBasedOnAngle::m_maximumPositiveSlideDistance, "Max Positive Slide Distance", + "The maximum distance to slide in the positive") + ->Attribute(AZ::Edit::Attributes::Suffix, "m") + ->DataElement(0, &SlideAlongAxisBasedOnAngle::m_maximumNegativeSlideDistance, "Max Negative Slide Distance", + "The maximum distance to slide in the negative") + ->Attribute(AZ::Edit::Attributes::Suffix, "m") + ->ClassElement(AZ::Edit::ClassElements::Group, "Vector Components To Ignore") + ->Attribute(AZ::Edit::Attributes::AutoExpand, true) + ->DataElement(0, &SlideAlongAxisBasedOnAngle::m_ignoreX, "X", "When active, the X Component will be ignored.") + ->Attribute(AZ::Edit::Attributes::ReadOnly, &SlideAlongAxisBasedOnAngle::YAndZIgnored) + ->Attribute(AZ::Edit::Attributes::ChangeNotify, AZ::Edit::PropertyRefreshLevels::AttributesAndValues) + ->DataElement(0, &SlideAlongAxisBasedOnAngle::m_ignoreY, "Y", "When active, the Y Component will be ignored.") + ->Attribute(AZ::Edit::Attributes::ReadOnly, &SlideAlongAxisBasedOnAngle::XAndZIgnored) + ->Attribute(AZ::Edit::Attributes::ChangeNotify, AZ::Edit::PropertyRefreshLevels::AttributesAndValues) + ->DataElement(0, &SlideAlongAxisBasedOnAngle::m_ignoreZ, "Z", "When active, the Z Component will be ignored.") + ->Attribute(AZ::Edit::Attributes::ReadOnly, &SlideAlongAxisBasedOnAngle::XAndYIgnored) + ->Attribute(AZ::Edit::Attributes::ChangeNotify, AZ::Edit::PropertyRefreshLevels::AttributesAndValues) + ; } } } - void SlideAlongAxisBasedOnAngle::AdjustLookAtTarget([[maybe_unused]] float deltaTime, [[maybe_unused]] const AZ::Transform& targetTransform, AZ::Transform& outLookAtTargetTransform) + void SlideAlongAxisBasedOnAngle::AdjustLookAtTarget( + [[maybe_unused]] float deltaTime, [[maybe_unused]] const AZ::Transform& targetTransform, AZ::Transform& outLookAtTargetTransform) { float angle = GetEulerAngleFromTransform(outLookAtTargetTransform, m_angleTypeToChangeFor); float currentPositionOnRange = -angle / AZ::Constants::HalfPi; float slideScale = currentPositionOnRange > 0.0f ? m_maximumPositiveSlideDistance : m_maximumNegativeSlideDistance; AZ::Vector3 basis = outLookAtTargetTransform.GetBasis(m_axisToSlideAlong); - MaskComponentFromNormalizedVector(basis, m_vectorComponentToIgnore); + MaskComponentFromNormalizedVector(basis, m_ignoreX, m_ignoreY, m_ignoreZ); outLookAtTargetTransform.SetTranslation(outLookAtTargetTransform.GetTranslation() + basis * currentPositionOnRange * slideScale); } -} + + bool SlideAlongAxisBasedOnAngle::XAndYIgnored() const + { + return m_ignoreX && m_ignoreY; + } + + bool SlideAlongAxisBasedOnAngle::XAndZIgnored() const + { + return m_ignoreX && m_ignoreZ; + } + + bool SlideAlongAxisBasedOnAngle::YAndZIgnored() const + { + return m_ignoreY && m_ignoreZ; + } + +} // namespace Camera diff --git a/Gems/StartingPointCamera/Code/Source/CameraLookAtBehaviors/SlideAlongAxisBasedOnAngle.h b/Gems/StartingPointCamera/Code/Source/CameraLookAtBehaviors/SlideAlongAxisBasedOnAngle.h index 3558fd7272..e517b6ffbd 100644 --- a/Gems/StartingPointCamera/Code/Source/CameraLookAtBehaviors/SlideAlongAxisBasedOnAngle.h +++ b/Gems/StartingPointCamera/Code/Source/CameraLookAtBehaviors/SlideAlongAxisBasedOnAngle.h @@ -6,11 +6,11 @@ * */ #pragma once -#include -#include -#include #include "StartingPointCamera/StartingPointCameraConstants.h" +#include #include +#include +#include namespace Camera { @@ -38,13 +38,19 @@ namespace Camera void Activate(AZ::EntityId) override {} void Deactivate() override {} + bool XAndYIgnored() const; + bool XAndZIgnored() const; + bool YAndZIgnored() const; + private: ////////////////////////////////////////////////////////////////////////// // Reflected data RelativeAxisType m_axisToSlideAlong = ForwardBackward; EulerAngleType m_angleTypeToChangeFor = Pitch; - VectorComponentType m_vectorComponentToIgnore = None; float m_maximumPositiveSlideDistance = 0.0f; float m_maximumNegativeSlideDistance = 0.0f; + bool m_ignoreX = false; + bool m_ignoreY = false; + bool m_ignoreZ = false; }; } // namespace Camera diff --git a/Gems/StartingPointCamera/Code/Source/StartingPointCamera/StartingPointCameraUtilities.cpp b/Gems/StartingPointCamera/Code/Source/StartingPointCamera/StartingPointCameraUtilities.cpp index b8f0945c55..0831ef26e0 100644 --- a/Gems/StartingPointCamera/Code/Source/StartingPointCamera/StartingPointCameraUtilities.cpp +++ b/Gems/StartingPointCamera/Code/Source/StartingPointCamera/StartingPointCameraUtilities.cpp @@ -26,38 +26,32 @@ namespace Camera return ""; } - ////////////////////////////////////////////////////////////////////////// - /// This methods will 0 out a vector component and re-normalize it - ////////////////////////////////////////////////////////////////////////// - void MaskComponentFromNormalizedVector(AZ::Vector3& v, VectorComponentType vectorComponentType) + void MaskComponentFromNormalizedVector(AZ::Vector3& v, bool ignoreX, bool ignoreY, bool ignoreZ) { - switch (vectorComponentType) - { - case X_Component: + + if (ignoreX) { v.SetX(0.f); - break; } - case Y_Component: + + if (ignoreY) { v.SetY(0.f); - break; } - case Z_Component: + + if (ignoreZ) { v.SetZ(0.f); - break; } - default: - AZ_Assert(false, "MaskComponentFromNormalizedVector: VectorComponentType - unexpected value"); - break; + + if (v.IsZero()) + { + AZ_Warning("StartingPointCameraUtilities", false, "MaskComponentFromNormalizedVector: trying to normalize zero vector.") + return; } v.Normalize(); } - ////////////////////////////////////////////////////////////////////////// - /// This will calculate the requested Euler angle from a given AZ::Quaternion - ////////////////////////////////////////////////////////////////////////// float GetEulerAngleFromTransform(const AZ::Transform& rotation, EulerAngleType eulerAngleType) { AZ::Vector3 angles = rotation.GetEulerDegrees(); @@ -70,14 +64,11 @@ namespace Camera case Yaw: return angles.GetZ(); default: - AZ_Warning("", false, "GetEulerAngleFromRotation: eulerAngleType - value not supported"); + AZ_Warning("StartingPointCameraUtilities", false, "GetEulerAngleFromRotation: eulerAngleType - value not supported"); return 0.f; } } - ////////////////////////////////////////////////////////////////////////// - /// This will calculate an AZ::Transform based on an Euler angle - ////////////////////////////////////////////////////////////////////////// AZ::Transform CreateRotationFromEulerAngle(EulerAngleType rotationType, float radians) { switch (rotationType) @@ -89,14 +80,11 @@ namespace Camera case Yaw: return AZ::Transform::CreateRotationZ(radians); default: - AZ_Warning("", false, "CreateRotationFromEulerAngle: rotationType - value not supported"); + AZ_Warning("StartingPointCameraUtilities", false, "CreateRotationFromEulerAngle: rotationType - value not supported"); return AZ::Transform::Identity(); } } - ////////////////////////////////////////////////////////////////////////// - /// Creates the Quaternion representing the rotation looking down the vector - ////////////////////////////////////////////////////////////////////////// AZ::Quaternion CreateQuaternionFromViewVector(const AZ::Vector3 lookVector) { float twoDimensionLength = AZ::Vector2(lookVector.GetX(), lookVector.GetY()).GetLength(); diff --git a/Gems/SurfaceData/Code/Tests/SurfaceDataTest.cpp b/Gems/SurfaceData/Code/Tests/SurfaceDataTest.cpp index b25c428cfb..d5384161ad 100644 --- a/Gems/SurfaceData/Code/Tests/SurfaceDataTest.cpp +++ b/Gems/SurfaceData/Code/Tests/SurfaceDataTest.cpp @@ -7,7 +7,6 @@ */ #include -#include #include #include #include @@ -31,7 +30,6 @@ struct MockGlobalEnvironment { MockGlobalEnvironment() { - m_stubEnv.pTimer = &m_stubTimer; m_stubEnv.pCryPak = &m_stubPak; m_stubEnv.pConsole = &m_stubConsole; m_stubEnv.pSystem = &m_stubSystem; @@ -45,7 +43,6 @@ struct MockGlobalEnvironment private: SSystemGlobalEnvironment m_stubEnv; - testing::NiceMock m_stubTimer; testing::NiceMock m_stubPak; testing::NiceMock m_stubConsole; testing::NiceMock m_stubSystem; diff --git a/Gems/Terrain/Assets/Editor/Icons/Components/TerrainHeight.svg b/Gems/Terrain/Assets/Editor/Icons/Components/TerrainHeight.svg index 57835e9c20..78af20cc2d 100644 --- a/Gems/Terrain/Assets/Editor/Icons/Components/TerrainHeight.svg +++ b/Gems/Terrain/Assets/Editor/Icons/Components/TerrainHeight.svg @@ -1,7 +1,5 @@ - - - icon / Environmental / Terrain Height - - - - \ No newline at end of file + + + + + diff --git a/Gems/Terrain/Assets/Editor/Icons/Components/TerrainLayerSpawner.svg b/Gems/Terrain/Assets/Editor/Icons/Components/TerrainLayerSpawner.svg index df73d78276..ad7403d976 100644 --- a/Gems/Terrain/Assets/Editor/Icons/Components/TerrainLayerSpawner.svg +++ b/Gems/Terrain/Assets/Editor/Icons/Components/TerrainLayerSpawner.svg @@ -1,7 +1,5 @@ - - - icon / Environmental / Generate Terrian - - - - \ No newline at end of file + + + + + diff --git a/Gems/Terrain/Assets/Editor/Icons/Components/TerrainMacroMaterial.svg b/Gems/Terrain/Assets/Editor/Icons/Components/TerrainMacroMaterial.svg new file mode 100644 index 0000000000..9a694bfbf7 --- /dev/null +++ b/Gems/Terrain/Assets/Editor/Icons/Components/TerrainMacroMaterial.svg @@ -0,0 +1,3 @@ + + + diff --git a/Gems/Terrain/Assets/Editor/Icons/Components/TerrainPhysicsCollider.svg b/Gems/Terrain/Assets/Editor/Icons/Components/TerrainPhysicsCollider.svg new file mode 100644 index 0000000000..56ffb05464 --- /dev/null +++ b/Gems/Terrain/Assets/Editor/Icons/Components/TerrainPhysicsCollider.svg @@ -0,0 +1,3 @@ + + + diff --git a/Gems/Terrain/Assets/Editor/Icons/Components/TerrainSurfaceGradientList.svg b/Gems/Terrain/Assets/Editor/Icons/Components/TerrainSurfaceGradientList.svg new file mode 100644 index 0000000000..c4e8ce79d2 --- /dev/null +++ b/Gems/Terrain/Assets/Editor/Icons/Components/TerrainSurfaceGradientList.svg @@ -0,0 +1,3 @@ + + + diff --git a/Gems/Terrain/Assets/Editor/Icons/Components/TerrainSurfaceMaterials.svg b/Gems/Terrain/Assets/Editor/Icons/Components/TerrainSurfaceMaterials.svg new file mode 100644 index 0000000000..5a25cb3be9 --- /dev/null +++ b/Gems/Terrain/Assets/Editor/Icons/Components/TerrainSurfaceMaterials.svg @@ -0,0 +1,3 @@ + + + diff --git a/Gems/Terrain/Assets/Editor/Icons/Components/TerrainWorld.svg b/Gems/Terrain/Assets/Editor/Icons/Components/TerrainWorld.svg index c6388d6215..f3c17f66e4 100644 --- a/Gems/Terrain/Assets/Editor/Icons/Components/TerrainWorld.svg +++ b/Gems/Terrain/Assets/Editor/Icons/Components/TerrainWorld.svg @@ -1,8 +1,5 @@ - - - icon / Environmental / Terrain Refactor - - - - - \ No newline at end of file + + + + + diff --git a/Gems/Terrain/Assets/Editor/Icons/Components/TerrainWorldDebugger.svg b/Gems/Terrain/Assets/Editor/Icons/Components/TerrainWorldDebugger.svg index bd1512afda..b128d0f316 100644 --- a/Gems/Terrain/Assets/Editor/Icons/Components/TerrainWorldDebugger.svg +++ b/Gems/Terrain/Assets/Editor/Icons/Components/TerrainWorldDebugger.svg @@ -1,8 +1,5 @@ - - - icon / Environmental / Terrain World Debugger - - - - - \ No newline at end of file + + + + + diff --git a/Gems/Terrain/Assets/Editor/Icons/Components/TerrainWorldRenderer.svg b/Gems/Terrain/Assets/Editor/Icons/Components/TerrainWorldRenderer.svg index ab3716ad5d..de97c005fc 100644 --- a/Gems/Terrain/Assets/Editor/Icons/Components/TerrainWorldRenderer.svg +++ b/Gems/Terrain/Assets/Editor/Icons/Components/TerrainWorldRenderer.svg @@ -1,8 +1,5 @@ - - - icon / Environmental / Terrain World Renderer - - - - - \ No newline at end of file + + + + + diff --git a/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainHeight.svg b/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainHeight.svg index b87a0b4d7e..87a2d199bd 100644 --- a/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainHeight.svg +++ b/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainHeight.svg @@ -1,25 +1,22 @@ - - - icon / Environmental / Terrain Height - box - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + diff --git a/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainLayerSpawner.svg b/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainLayerSpawner.svg index c078d32fe5..a89186819f 100644 --- a/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainLayerSpawner.svg +++ b/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainLayerSpawner.svg @@ -1,25 +1,22 @@ - - - icon / Environmental / Generate Terrian - box - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + diff --git a/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainMacroMaterial.svg b/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainMacroMaterial.svg new file mode 100644 index 0000000000..177469e46e --- /dev/null +++ b/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainMacroMaterial.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainPhysicsCollider.svg b/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainPhysicsCollider.svg new file mode 100644 index 0000000000..302e585f6e --- /dev/null +++ b/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainPhysicsCollider.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainSurfaceGradientList.svg b/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainSurfaceGradientList.svg new file mode 100644 index 0000000000..19cb144936 --- /dev/null +++ b/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainSurfaceGradientList.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainSurfaceMaterials.svg b/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainSurfaceMaterials.svg new file mode 100644 index 0000000000..5179f61867 --- /dev/null +++ b/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainSurfaceMaterials.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainWorld.svg b/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainWorld.svg index 2aee65f2a8..5466395141 100644 --- a/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainWorld.svg +++ b/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainWorld.svg @@ -1,25 +1,22 @@ - - - icon / Environmental / Terrain Refactor - box - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + diff --git a/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainWorldDebugger.svg b/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainWorldDebugger.svg index 1b729ab73f..ea9935fefb 100644 --- a/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainWorldDebugger.svg +++ b/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainWorldDebugger.svg @@ -1,25 +1,22 @@ - - - icon / Environmental / Terrain World Debugger - box - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + diff --git a/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainWorldRenderer.svg b/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainWorldRenderer.svg index 4287508f10..af235047db 100644 --- a/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainWorldRenderer.svg +++ b/Gems/Terrain/Assets/Editor/Icons/Components/Viewport/TerrainWorldRenderer.svg @@ -1,25 +1,22 @@ - - - icon / Environmental / Terrain World Renderer - box - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + diff --git a/Gems/Terrain/Assets/Materials/Terrain/DefaultPbrTerrain.material b/Gems/Terrain/Assets/Materials/Terrain/DefaultPbrTerrain.material index d2acc2516a..7cf249a10d 100644 --- a/Gems/Terrain/Assets/Materials/Terrain/DefaultPbrTerrain.material +++ b/Gems/Terrain/Assets/Materials/Terrain/DefaultPbrTerrain.material @@ -2,23 +2,5 @@ "description": "", "materialType": "PbrTerrain.materialtype", "parentMaterial": "", - "propertyLayoutVersion": 1, - "properties": { - "baseColor": { - "color": [ 0.18, 0.18, 0.18 ], - "useTexture": false - }, - "normal": - { - "useTexture": false - }, - "roughness": - { - "useTexture": false - }, - "specularF0": - { - "useTexture": false - } - } + "propertyLayoutVersion": 1 } diff --git a/Gems/Terrain/Assets/Materials/Terrain/PbrTerrain.materialtype b/Gems/Terrain/Assets/Materials/Terrain/PbrTerrain.materialtype index 235079d95e..a20ac23e17 100644 --- a/Gems/Terrain/Assets/Materials/Terrain/PbrTerrain.materialtype +++ b/Gems/Terrain/Assets/Materials/Terrain/PbrTerrain.materialtype @@ -89,61 +89,6 @@ } ], "settings": [ - { - "id": "heightmapImage", - "displayName": "Heightmap Image", - "description": "Heightmap of the terrain. Controlled by the runtime.", - "visibility": "Hidden", - "type": "Image", - "connection": { - "type": "ShaderInput", - "id": "m_heightmapImage" - } - }, - { - "id": "detailMaterialIdImage", - "displayName": "Detail Material Id Image", - "description": "Texture containing detail material Ids and weights. Controlled by the runtime.", - "visibility": "Hidden", - "type": "Image", - "connection": { - "type": "ShaderInput", - "id": "m_detailMaterialIdImage" - } - }, - { - "id": "detailMaterialIdCenter", - "displayName": "Detail Material Id Image Center", - "description": "The center position of the detail material Id image. Controlled by the runtime.", - "visibility": "Hidden", - "type": "Vector2", - "connection": { - "type": "ShaderInput", - "id": "m_detailMaterialIdImageCenter" - } - }, - { - "id": "detailAabb", - "displayName": "Detail material bounds in 2d", - "description": "The 2d world space bounds of the detail id material. Controlled by the runtime.", - "visibility": "Hidden", - "type": "Vector4", - "connection": { - "type": "ShaderInput", - "id": "m_detailAabb" - } - }, - { - "id": "detailHalfPixelUv", - "displayName": "Detail texture half pixel uv size", - "description": "Uv size of a half pixel in the detail material id texture. Controlled by the runtime.", - "visibility": "Hidden", - "type": "float", - "connection": { - "type": "ShaderInput", - "id": "m_detailHalfPixelUv" - } - }, { "id": "detailTextureMultiplier", "displayName": "Detail Texture UV Multiplier", @@ -177,178 +122,6 @@ "id": "m_detailFadeLength" } } - ], - "baseColor": [ - { - "id": "color", - "displayName": "Color", - "description": "Color is displayed as sRGB but the values are stored as linear color.", - "type": "Color", - "defaultValue": [ 1.0, 1.0, 1.0 ], - "connection": { - "type": "ShaderInput", - "id": "m_baseColor" - } - }, - { - "id": "factor", - "displayName": "Factor", - "description": "Strength factor for scaling the base color values. Zero (0.0) is black, white (1.0) is full color.", - "type": "Float", - "defaultValue": 1.0, - "min": 0.0, - "max": 1.0, - "connection": { - "type": "ShaderInput", - "id": "m_baseColorFactor" - } - }, - { - "id": "textureMap", - "displayName": "Texture", - "description": "Base color texture map", - "type": "Image", - "connection": { - "type": "ShaderInput", - "id": "m_baseColorMap" - } - }, - { - "id": "useTexture", - "displayName": "Use Texture", - "description": "Whether to use the texture.", - "type": "Bool", - "defaultValue": true - }, - { - "id": "textureBlendMode", - "displayName": "Texture Blend Mode", - "description": "Selects the equation to use when combining Color, Factor, and Texture.", - "type": "Enum", - "enumValues": [ "Multiply", "LinearLight", "Lerp", "Overlay" ], - "defaultValue": "Overlay", - "connection": { - "type": "ShaderOption", - "id": "o_baseColorTextureBlendMode" - } - } - ], - "normal": [ - { - "id": "textureMap", - "displayName": "Texture", - "description": "Texture for defining surface normal direction.", - "type": "Image", - "connection": { - "type": "ShaderInput", - "id": "m_normalMap" - } - }, - { - "id": "useTexture", - "displayName": "Use Texture", - "description": "Whether to use the texture, or just rely on vertex normals.", - "type": "Bool", - "defaultValue": true - }, - { - "id": "flipX", - "displayName": "Flip X Channel", - "description": "Flip tangent direction for this normal map.", - "type": "Bool", - "defaultValue": false, - "connection": { - "type": "ShaderInput", - "id": "m_flipNormalX" - } - }, - { - "id": "flipY", - "displayName": "Flip Y Channel", - "description": "Flip bitangent direction for this normal map.", - "type": "Bool", - "defaultValue": false, - "connection": { - "type": "ShaderInput", - "id": "m_flipNormalY" - } - }, - { - "id": "factor", - "displayName": "Factor", - "description": "Strength factor for scaling the values", - "type": "Float", - "defaultValue": 1.0, - "min": 0.0, - "softMax": 2.0, - "connection": { - "type": "ShaderInput", - "id": "m_normalFactor" - } - } - ], - "roughness": [ - { - "id": "textureMap", - "displayName": "Texture", - "description": "Texture for defining surface roughness.", - "type": "Image", - "connection": { - "type": "ShaderInput", - "id": "m_roughnessMap" - } - }, - { - "id": "useTexture", - "description": "Whether to use the texture, or just default to the Factor value.", - "type": "Bool", - "defaultValue": true - }, - { - "id": "factor", - "displayName": "Factor", - "description": "Controls the roughness value", - "type": "Float", - "defaultValue": 1.0, - "min": 0.0, - "max": 1.0, - "connection": { - "type": "ShaderInput", - "id": "m_roughnessFactor" - } - } - ], - "specularF0": [ - { - "id": "textureMap", - "displayName": "Texture", - "description": "Texture for defining surface reflectance.", - "type": "Image", - "connection": { - "type": "ShaderInput", - "id": "m_specularF0Map" - } - }, - { - "id": "useTexture", - "displayName": "Use Texture", - "description": "Whether to use the texture, or just default to the Factor value.", - "type": "Bool", - "defaultValue": true - }, - { - "id": "factor", - "displayName": "Factor", - "description": "The default IOR is 1.5, which gives you 0.04 (4% of light reflected at 0 degree angle for dielectric materials). F0 values lie in the range 0-0.08, so that is why the default F0 slider is set on 0.5.", - "type": "Float", - "defaultValue": 0.5, - "min": 0.0, - "max": 1.0, - "connection": { - "type": "ShaderInput", - "id": "m_specularF0Factor" - } - } ] } }, @@ -364,39 +137,5 @@ } ], "functors": [ - { - "type": "UseTexture", - "args": { - "textureProperty": "baseColor.textureMap", - "useTextureProperty": "baseColor.useTexture", - "dependentProperties": ["baseColor.textureBlendMode"], - "shaderOption": "o_baseColor_useTexture" - } - }, - { - "type": "UseTexture", - "args": { - "textureProperty": "specularF0.textureMap", - "useTextureProperty": "specularF0.useTexture", - "shaderOption": "o_specularF0_useTexture" - } - }, - { - "type": "UseTexture", - "args": { - "textureProperty": "normal.textureMap", - "useTextureProperty": "normal.useTexture", - "dependentProperties": ["normal.factor", "normal.flipX", "normal.flipY"], - "shaderOption": "o_normal_useTexture" - } - }, - { - "type": "UseTexture", - "args": { - "textureProperty": "roughness.textureMap", - "useTextureProperty": "roughness.useTexture", - "shaderOption": "o_roughness_useTexture" - } - } ] } diff --git a/Gems/Terrain/Assets/Shaders/Terrain/TerrainCommon.azsli b/Gems/Terrain/Assets/Shaders/Terrain/TerrainCommon.azsli index b97bbab669..f5af598435 100644 --- a/Gems/Terrain/Assets/Shaders/Terrain/TerrainCommon.azsli +++ b/Gems/Terrain/Assets/Shaders/Terrain/TerrainCommon.azsli @@ -15,8 +15,6 @@ ShaderResourceGroup ObjectSrg : SRG_PerObject { - row_major float3x4 m_modelToWorld; - struct TerrainData { float2 m_uvMin; @@ -36,6 +34,8 @@ ShaderResourceGroup ObjectSrg : SRG_PerObject uint m_mapsInUse; }; + row_major float3x4 m_modelToWorld; + TerrainData m_terrainData; MacroMaterialData m_macroMaterialData[4]; @@ -43,7 +43,7 @@ ShaderResourceGroup ObjectSrg : SRG_PerObject Texture2D m_macroColorMap[4]; Texture2D m_macroNormalMap[4]; - + // The below shouldn't be in this SRG but needs to be for now because the lighting functions depend on them. //! Reflection Probe (smallest probe volume that overlaps the object position) @@ -56,6 +56,7 @@ ShaderResourceGroup ObjectSrg : SRG_PerObject float m_padding; bool m_useReflectionProbe; bool m_useParallaxCorrection; + float m_exposure; }; ReflectionProbeData m_reflectionProbeData; @@ -92,26 +93,10 @@ ShaderResourceGroup ObjectSrg : SRG_PerObject ShaderResourceGroup TerrainMaterialSrg : SRG_PerMaterial { - Texture2D m_heightmapImage; - Texture2D m_detailMaterialIdImage; - float2 m_detailMaterialIdImageCenter; float m_detailTextureMultiplier; float m_detailFadeDistance; float m_detailFadeLength; - float4 m_detailAabb; - float m_detailHalfPixelUv; - - Sampler HeightmapSampler - { - MinFilter = Linear; - MagFilter = Linear; - MipFilter = Point; - AddressU = Clamp; - AddressV = Clamp; - AddressW = Clamp; - }; - Sampler m_sampler { AddressU = Wrap; @@ -122,15 +107,6 @@ ShaderResourceGroup TerrainMaterialSrg : SRG_PerMaterial MaxAnisotropy = 16; }; - Sampler m_detailSampler - { - AddressU = Wrap; - AddressV = Wrap; - MinFilter = Point; - MagFilter = Point; - MipFilter = Point; - }; - // Base Color float3 m_baseColor; float m_baseColorFactor; @@ -152,11 +128,6 @@ ShaderResourceGroup TerrainMaterialSrg : SRG_PerMaterial } option bool o_useTerrainSmoothing = false; -option bool o_baseColor_useTexture = true; -option bool o_specularF0_useTexture = true; -option bool o_normal_useTexture = true; -option bool o_roughness_useTexture = true; -option TextureBlendMode o_baseColorTextureBlendMode = TextureBlendMode::Multiply; struct VertexInput { @@ -239,12 +210,12 @@ float GetHeight(float2 origUv) if (o_useTerrainSmoothing) { float2 textureSize; - TerrainMaterialSrg::m_heightmapImage.GetDimensions(textureSize.x, textureSize.y); - height = SampleBSpline5Tap(TerrainMaterialSrg::m_heightmapImage, TerrainMaterialSrg::HeightmapSampler, uv, textureSize, rcp(textureSize)); + ViewSrg::m_heightmapImage.GetDimensions(textureSize.x, textureSize.y); + height = SampleBSpline5Tap(ViewSrg::m_heightmapImage, ViewSrg::HeightmapSampler, uv, textureSize, rcp(textureSize)); } else { - height = TerrainMaterialSrg::m_heightmapImage.SampleLevel(TerrainMaterialSrg::HeightmapSampler, uv, 0).r; + height = ViewSrg::m_heightmapImage.SampleLevel(ViewSrg::HeightmapSampler, uv, 0).r; } return ObjectSrg::m_terrainData.m_heightScale * (height - 0.5f); diff --git a/Gems/Terrain/Assets/Shaders/Terrain/TerrainDetailHelpers.azsli b/Gems/Terrain/Assets/Shaders/Terrain/TerrainDetailHelpers.azsli new file mode 100644 index 0000000000..e5d5ff688d --- /dev/null +++ b/Gems/Terrain/Assets/Shaders/Terrain/TerrainDetailHelpers.azsli @@ -0,0 +1,250 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#pragma once + +#include + +enum DetailTextureFlags +{ + UseTextureBaseColor = 0x00000001, //0b0000'0000'0000'0000'0000'0000'0000'0001 + UseTextureNormal = 0x00000002, //0b0000'0000'0000'0000'0000'0000'0000'0010 + UseTextureMetallic = 0x00000004, //0b0000'0000'0000'0000'0000'0000'0000'0100 + UseTextureRoughness = 0x00000008, //0b0000'0000'0000'0000'0000'0000'0000'1000 + UseTextureOcclusion = 0x00000010, //0b0000'0000'0000'0000'0000'0000'0001'0000 + UseTextureHeight = 0x00000020, //0b0000'0000'0000'0000'0000'0000'0010'0000 + UseTextureSpecularF0 = 0x00000040, //0b0000'0000'0000'0000'0000'0000'0100'0000 + + FlipNormalX = 0x00010000, //0b0000'0000'0000'0001'0000'0000'0000'0000 + FlipNormalY = 0x00020000, //0b0000'0000'0000'0010'0000'0000'0000'0000 + + BlendModeMask = 0x000C0000, //0b0000'0000'0000'1100'0000'0000'0000'0000 + BlendModeLerp = 0x00000000, //0b0000'0000'0000'0000'0000'0000'0000'0000 + BlendModeLinearLight = 0x00040000, //0b0000'0000'0000'0100'0000'0000'0000'0000 + BlendModeMultiply = 0x00080000, //0b0000'0000'0000'1000'0000'0000'0000'0000 + BlendModeOverlay = 0x000C0000, //0b0000'0000'0000'1100'0000'0000'0000'0000 +}; + +struct DetailSurface +{ + float3 m_color; + float3 m_normal; + float m_roughness; + float m_specularF0; + float m_metalness; + float m_occlusion; + float m_height; +}; + +option bool o_debugDetailMaterialIds = false; + +DetailSurface GetDefaultDetailSurface() +{ + DetailSurface surface; + + surface.m_color = float3(0.5, 0.5, 0.5); + surface.m_normal = float3(0.0, 0.0, 1.0); + surface.m_roughness = 1.0; + surface.m_specularF0 = 0.5; + surface.m_metalness = 0.0; + surface.m_occlusion = 1.0; + surface.m_height = 0.5; + + return surface; +} + +// Detail material index getters +uint GetDetailColorIndex(TerrainSrg::DetailMaterialData materialData) +{ + return materialData.m_colorNormalImageIndices & 0x0000FFFF; +} + +uint GetDetailNormalIndex(TerrainSrg::DetailMaterialData materialData) +{ + return materialData.m_colorNormalImageIndices >> 16; +} + +uint GetDetailRoughnessIndex(TerrainSrg::DetailMaterialData materialData) +{ + return materialData.m_roughnessMetalnessImageIndices & 0x0000FFFF; +} + +uint GetDetailMetalnessIndex(TerrainSrg::DetailMaterialData materialData) +{ + return materialData.m_roughnessMetalnessImageIndices >> 16; +} + +uint GetDetailSpecularF0Index(TerrainSrg::DetailMaterialData materialData) +{ + return materialData.m_specularF0OcclusionImageIndices & 0x0000FFFF; +} + +uint GetDetailOcclusionIndex(TerrainSrg::DetailMaterialData materialData) +{ + return materialData.m_specularF0OcclusionImageIndices >> 16; +} + +uint GetDetailHeightIndex(TerrainSrg::DetailMaterialData materialData) +{ + return materialData.m_heightImageIndex & 0x0000FFFF; +} + +// Detail material value getters + +float3 GetDetailColor(TerrainSrg::DetailMaterialData materialData, float2 uv) +{ + float3 color = materialData.m_baseColor; + if ((materialData.m_flags & DetailTextureFlags::UseTextureBaseColor) > 0) + { + color = TerrainSrg::m_detailTextures[GetDetailColorIndex(materialData)].Sample(TerrainMaterialSrg::m_sampler, uv).rgb; + } + return color * materialData.m_baseColorFactor; +} + +float3 GetDetailNormal(TerrainSrg::DetailMaterialData materialData, float2 uv) +{ + float2 normal = float2(0.0, 0.0); + if ((materialData.m_flags & DetailTextureFlags::UseTextureNormal) > 0) + { + normal = TerrainSrg::m_detailTextures[GetDetailNormalIndex(materialData)].Sample(TerrainMaterialSrg::m_sampler, uv).rg; + } + + // X and Y are inverted here to be consistent with SampleNormalXY in NormalInput.azsli. + if(materialData.m_flags & DetailTextureFlags::FlipNormalX) + { + normal.y = -normal.y; + } + if(materialData.m_flags & DetailTextureFlags::FlipNormalY) + { + normal.x = -normal.x; + } + return GetTangentSpaceNormal(normal, materialData.m_normalFactor); +} + +float GetDetailRoughness(TerrainSrg::DetailMaterialData materialData, float2 uv) +{ + float roughness = materialData.m_roughnessScale; + if ((materialData.m_flags & DetailTextureFlags::UseTextureRoughness) > 0) + { + roughness = TerrainSrg::m_detailTextures[GetDetailRoughnessIndex(materialData)].Sample(TerrainMaterialSrg::m_sampler, uv).r; + roughness = materialData.m_roughnessBias + roughness * materialData.m_roughnessScale; + } + return roughness; +} + +float GetDetailMetalness(TerrainSrg::DetailMaterialData materialData, float2 uv) +{ + float metalness = 1.0; + if ((materialData.m_flags & DetailTextureFlags::UseTextureMetallic) > 0) + { + metalness = TerrainSrg::m_detailTextures[GetDetailMetalnessIndex(materialData)].Sample(TerrainMaterialSrg::m_sampler, uv).r; + } + return metalness * materialData.m_metalFactor; +} + +float GetDetailSpecularF0(TerrainSrg::DetailMaterialData materialData, float2 uv) +{ + float specularF0 = 1.0; + if ((materialData.m_flags & DetailTextureFlags::UseTextureSpecularF0) > 0) + { + specularF0 = TerrainSrg::m_detailTextures[GetDetailSpecularF0Index(materialData)].Sample(TerrainMaterialSrg::m_sampler, uv).r; + } + return specularF0 * materialData.m_specularF0Factor; +} + +float GetDetailOcclusion(TerrainSrg::DetailMaterialData materialData, float2 uv) +{ + float occlusion = 1.0; + if ((materialData.m_flags & DetailTextureFlags::UseTextureOcclusion) > 0) + { + occlusion = TerrainSrg::m_detailTextures[GetDetailOcclusionIndex(materialData)].Sample(TerrainMaterialSrg::m_sampler, uv).r; + } + return occlusion * materialData.m_occlusionFactor; +} + +float GetDetailHeight(TerrainSrg::DetailMaterialData materialData, float2 uv) +{ + float height = materialData.m_heightFactor; + if ((materialData.m_flags & DetailTextureFlags::UseTextureHeight) > 0) + { + height = TerrainSrg::m_detailTextures[GetDetailHeightIndex(materialData)].Sample(TerrainMaterialSrg::m_sampler, uv).r; + height = materialData.m_heightOffset + height * materialData.m_heightFactor; + } + return height; +} + +void GetDetailSurfaceForMaterial(inout DetailSurface surface, uint materialId, float2 uv) +{ + TerrainSrg::DetailMaterialData detailMaterialData = TerrainSrg::m_detailMaterialData[materialId]; + + surface.m_color = GetDetailColor(detailMaterialData, uv); + surface.m_normal = GetDetailNormal(detailMaterialData, uv); + surface.m_roughness = GetDetailRoughness(detailMaterialData, uv); + surface.m_specularF0 = GetDetailSpecularF0(detailMaterialData, uv); + surface.m_metalness = GetDetailMetalness(detailMaterialData, uv); + surface.m_occlusion = GetDetailOcclusion(detailMaterialData, uv); + surface.m_height = GetDetailHeight(detailMaterialData, uv); +} + +void GetDebugDetailSurface(inout DetailSurface surface, uint material1, uint material2, float blend, float2 idUv) +{ + float3 material1Color = float3(0.1, 0.1, 0.1); + float3 material2Color = float3(0.1, 0.1, 0.1); + + // Get a reasonably random hue for the material id + if (material1 != 255) + { + float hue1 = (material1 * 25043 % 256) / 256.0; + material1Color = HsvToRgb(float3(hue1, 1.0, 1.0)); + } + if (material2 != 255) + { + float hue2 = (material2 * 25043 % 256) / 256.0; + material2Color = HsvToRgb(float3(hue2, 1.0, 1.0)); + } + + surface.m_color = lerp(material1Color, material2Color, blend); + float seamBlend = 0.0; + const float halfLineWidth = 1.0 / 2048.0; + if (any(abs(idUv) % 1.0 < halfLineWidth) || any(abs(idUv) % 1.0 > 1.0 - halfLineWidth)) + { + seamBlend = 1.0; + } + surface.m_color = lerp(surface.m_color, float3(0.0, 0.0, 0.0), seamBlend); // draw texture seams + surface.m_color = pow(surface.m_color , 2.2); + + surface.m_normal = float3(0.0, 0.0, 1.0); + surface.m_roughness = 1.0; + surface.m_specularF0 = 0.5; + surface.m_metalness = 0.0; + surface.m_occlusion = 1.0; + surface.m_height = 0.5; +} + +bool GetDetailSurface(inout DetailSurface surface, float2 idUv, float2 uv) +{ + uint4 material1 = TerrainSrg::m_detailMaterialIdImage.GatherRed(TerrainSrg::DetailSampler, idUv, 0).xyzw; + uint4 material2 = TerrainSrg::m_detailMaterialIdImage.GatherGreen(TerrainSrg::DetailSampler, idUv, 0).xyzw; + + const float maxBlendAmount = 0xFF; + // convert integer of 0-255 to float of 0-1. + float4 blends = float4(TerrainSrg::m_detailMaterialIdImage.GatherBlue(TerrainSrg::DetailSampler, idUv, 0).xyzw) / maxBlendAmount; + + if (o_debugDetailMaterialIds) + { + GetDebugDetailSurface(surface, material1.x, material2.x, blends.x, idUv); + return true; + } + + if (material1.x == 0xFF) + { + return false; + } + + GetDetailSurfaceForMaterial(surface, material1.x, uv); + return true; +} diff --git a/Gems/Terrain/Assets/Shaders/Terrain/TerrainPBR_ForwardPass.azsl b/Gems/Terrain/Assets/Shaders/Terrain/TerrainPBR_ForwardPass.azsl index 5a43fe1c37..6b68336a3f 100644 --- a/Gems/Terrain/Assets/Shaders/Terrain/TerrainPBR_ForwardPass.azsl +++ b/Gems/Terrain/Assets/Shaders/Terrain/TerrainPBR_ForwardPass.azsl @@ -7,8 +7,11 @@ */ #include + #include +#include #include +#include #include #include #include @@ -17,7 +20,6 @@ #include #include #include -#include struct VSOutput { @@ -28,8 +30,6 @@ struct VSOutput float3 m_shadowCoords[ViewSrg::MaxCascadeCount] : UV2; }; -option bool o_debugDetailMaterialIds = false; - VSOutput TerrainPBR_MainPassVS(VertexInput IN) { VSOutput OUT; @@ -71,9 +71,9 @@ ForwardPassOutput TerrainPBR_MainPassPS(VSOutput IN) { // ------- Surface ------- Surface surface; - - // Position surface.position = IN.m_worldPosition.xyz; + surface.vertexNormal = normalize(IN.m_normal); + float viewDistance = length(ViewSrg::m_worldPosition - surface.position); float detailFactor = saturate((viewDistance - TerrainMaterialSrg::m_detailFadeDistance) / max(TerrainMaterialSrg::m_detailFadeLength, EPSILON)); float2 detailUv = IN.m_uv * TerrainMaterialSrg::m_detailTextureMultiplier; @@ -83,92 +83,80 @@ ForwardPassOutput TerrainPBR_MainPassPS(VSOutput IN) // ------- Macro Color / Normal ------- float3 macroColor = TerrainMaterialSrg::m_baseColor.rgb; - [unroll] for (uint i = 0; i < 4 && (i < ObjectSrg::m_macroMaterialCount); ++i) + + // There's a bug that shows up with an NVidia GTX 1660 Super card happening on driver versions as recent as 496.49 (10/26/21) in which + // the IN.m_uv values will intermittently "flicker" to 0.0 after entering and exiting game mode. + // (See https://github.com/o3de/o3de/issues/5014) + // This bug has only shown up on PCs when using the DX12 RHI. It doesn't show up with Vulkan or when capturing frames with PIX or + // RenderDoc. Our best guess is that it is a driver bug. The workaround is to use the IN.m_uv values in a calculation prior to the + // point that we actually use them for macroUv below. The "if(any(!isnan(IN.m_uv)))" seems to be sufficient for the workaround. The + // if statement will always be true, but just the act of reading these values in the if statement makes the values stable. Removing + // the if statement causes the flickering to occur using the steps documented in the bug. + if (any(!isnan(IN.m_uv))) { - float2 macroUvMin = ObjectSrg::m_macroMaterialData[i].m_uvMin; - float2 macroUvMax = ObjectSrg::m_macroMaterialData[i].m_uvMax; - float2 macroUv = lerp(macroUvMin, macroUvMax, IN.m_uv); - if (macroUv.x >= 0.0 && macroUv.x <= 1.0 && macroUv.y >= 0.0 && macroUv.y <= 1.0) + [unroll] for (uint i = 0; i < 4 && (i < ObjectSrg::m_macroMaterialCount); ++i) { - if ((ObjectSrg::m_macroMaterialData[i].m_mapsInUse & 1) > 0) + float2 macroUvMin = ObjectSrg::m_macroMaterialData[i].m_uvMin; + float2 macroUvMax = ObjectSrg::m_macroMaterialData[i].m_uvMax; + float2 macroUv = lerp(macroUvMin, macroUvMax, IN.m_uv); + if (macroUv.x >= 0.0 && macroUv.x <= 1.0 && macroUv.y >= 0.0 && macroUv.y <= 1.0) { - macroColor = GetBaseColorInput(ObjectSrg::m_macroColorMap[i], TerrainMaterialSrg::m_sampler, macroUv, macroColor, true); + if ((ObjectSrg::m_macroMaterialData[i].m_mapsInUse & 1) > 0) + { + macroColor = GetBaseColorInput(ObjectSrg::m_macroColorMap[i], TerrainMaterialSrg::m_sampler, macroUv, macroColor, true); + } + if ((ObjectSrg::m_macroMaterialData[i].m_mapsInUse & 2) > 0) + { + bool flipX = ObjectSrg::m_macroMaterialData[i].m_flipNormalX; + bool flipY = ObjectSrg::m_macroMaterialData[i].m_flipNormalY; + bool factor = ObjectSrg::m_macroMaterialData[i].m_normalFactor; + macroNormal = GetNormalInputTS(ObjectSrg::m_macroNormalMap[i], TerrainMaterialSrg::m_sampler, + macroUv, flipX, flipY, CreateIdentity3x3(), true, factor); + } + break; } - if ((ObjectSrg::m_macroMaterialData[i].m_mapsInUse & 2) > 0) - { - bool flipX = ObjectSrg::m_macroMaterialData[i].m_flipNormalX; - bool flipY = ObjectSrg::m_macroMaterialData[i].m_flipNormalY; - bool factor = ObjectSrg::m_macroMaterialData[i].m_normalFactor; - macroNormal = GetNormalInputTS(ObjectSrg::m_macroNormalMap[i], TerrainMaterialSrg::m_sampler, - macroUv, flipX, flipY, CreateIdentity3x3(), true, factor); - } - break; } } - - float3 detailNormal = GetNormalInputTS(TerrainMaterialSrg::m_normalMap, TerrainMaterialSrg::m_sampler, - detailUv, TerrainMaterialSrg::m_flipNormalX, TerrainMaterialSrg::m_flipNormalY, CreateIdentity3x3(), o_normal_useTexture, TerrainMaterialSrg::m_normalFactor); - - detailNormal = ReorientTangentSpaceNormal(macroNormal, detailNormal); - surface.normal = lerp(detailNormal, macroNormal, detailFactor); - surface.normal = normalize(surface.normal); - surface.vertexNormal = normalize(IN.m_normal); - + // ------- Base Color ------- - float3 detailColor = GetBaseColorInput(TerrainMaterialSrg::m_baseColorMap, TerrainMaterialSrg::m_sampler, detailUv, TerrainMaterialSrg::m_baseColor.rgb, o_baseColor_useTexture); - float3 blendedColor = BlendBaseColor(lerp(detailColor, TerrainMaterialSrg::m_baseColor.rgb, detailFactor), macroColor, TerrainMaterialSrg::m_baseColorFactor, o_baseColorTextureBlendMode, o_baseColor_useTexture); - // ------- Debug detail materials using random colors ------- - // This assigns a random color to each material, turns off any kind of distance fading, and draws a black line at the texture edges. - if (o_debugDetailMaterialIds) + DetailSurface detailSurface = GetDefaultDetailSurface(); + float2 detailRegionMin = TerrainSrg::m_detailAabb.xy; + float2 detailRegionMax = TerrainSrg::m_detailAabb.zw; + float2 detailRegionUv = (surface.position.xy - detailRegionMin) / (detailRegionMax - detailRegionMin); + bool hasDetailSurface = false; + + // Check to make sure we're inside the detail texture's bounds and within where detail textures should be drawn. + if (detailFactor < 1.0 && all(detailRegionUv > TerrainSrg::m_detailHalfPixelUv) && all(detailRegionUv < 1.0 - TerrainSrg::m_detailHalfPixelUv)) { - float2 detailRegionMin = TerrainMaterialSrg::m_detailAabb.xy; - float2 detailRegionMax = TerrainMaterialSrg::m_detailAabb.zw; - float2 detailRegionUv = (surface.position.xy - detailRegionMin) / (detailRegionMax - detailRegionMin); - if (all(detailRegionUv > TerrainMaterialSrg::m_detailHalfPixelUv) && all(detailRegionUv < 1.0 - TerrainMaterialSrg::m_detailHalfPixelUv)) - { - detailRegionUv += TerrainMaterialSrg::m_detailMaterialIdImageCenter - (0.5); - - uint material1 = TerrainMaterialSrg::m_detailMaterialIdImage.GatherRed(TerrainMaterialSrg::m_detailSampler, detailRegionUv, 0).r; - uint material2 = TerrainMaterialSrg::m_detailMaterialIdImage.GatherGreen(TerrainMaterialSrg::m_detailSampler, detailRegionUv, 0).r; - float blend = float(TerrainMaterialSrg::m_detailMaterialIdImage.GatherBlue(TerrainMaterialSrg::m_detailSampler, detailRegionUv, 0).r) / 0xFF; - - float3 material1Color = float3(0.1, 0.1, 0.1); - float3 material2Color = float3(0.1, 0.1, 0.1); - - // Get a reasonably random hue for the material id - if (material1 != 255) - { - float hue1 = (material1 * 25043 % 256) / 256.0; - material1Color = HsvToRgb(float3(hue1, 1.0, 1.0)); - } - if (material2 != 255) - { - float hue2 = (material2 * 25043 % 256) / 256.0; - material2Color = HsvToRgb(float3(hue2, 1.0, 1.0)); - } - - blendedColor = lerp(material1Color, material2Color, blend); - float seamBlend = 0.0; - const float halfLineWidth = 1.0 / 2048.0; - if (any(abs(detailRegionUv) % 1.0 < halfLineWidth) || any(abs(detailRegionUv) % 1.0 > 1.0 - halfLineWidth)) - { - seamBlend = 1.0; - } - blendedColor = lerp(blendedColor, float3(0.0, 0.0, 0.0), seamBlend); // draw texture seams - blendedColor = pow(blendedColor , 2.2); - } + detailRegionUv += TerrainSrg::m_detailMaterialIdImageCenter - (0.5); + hasDetailSurface = GetDetailSurface(detailSurface, detailRegionUv, detailUv); } - // ------- Specular ------- - float specularF0Factor = GetSpecularInput(TerrainMaterialSrg::m_specularF0Map, TerrainMaterialSrg::m_sampler, detailUv, TerrainMaterialSrg::m_specularF0Factor, o_specularF0_useTexture); - specularF0Factor = lerp(specularF0Factor, 0.5, detailFactor); - surface.SetAlbedoAndSpecularF0(blendedColor, specularF0Factor, 0.0); + const float macroRoughness = 1.0; + const float macroSpecularF0 = 0.5; + const float macroMetalness = 0.0; - // ------- Roughness ------- - surface.roughnessLinear = GetRoughnessInput(TerrainMaterialSrg::m_roughnessMap, TerrainMaterialSrg::m_sampler, detailUv, TerrainMaterialSrg::m_roughnessFactor, 0.0, 1.0, o_roughness_useTexture); - surface.roughnessLinear = lerp(surface.roughnessLinear, 1.0, detailFactor); - surface.CalculateRoughnessA(); + if (hasDetailSurface) + { + float3 blendedColor = lerp(detailSurface.m_color, macroColor, detailFactor); + float blendedSpecularF0 = lerp(detailSurface.m_specularF0, macroSpecularF0, detailFactor); + surface.SetAlbedoAndSpecularF0(blendedColor, blendedSpecularF0, detailSurface.m_metalness * (1.0 - detailFactor)); + + surface.roughnessLinear = lerp(detailSurface.m_roughness, macroRoughness, detailFactor); + surface.CalculateRoughnessA(); + + detailSurface.m_normal = ReorientTangentSpaceNormal(macroNormal, detailSurface.m_normal); + surface.normal = lerp(detailSurface.m_normal, macroNormal, detailFactor); + surface.normal = normalize(surface.normal); + } + else + { + surface.normal = macroNormal; + surface.SetAlbedoAndSpecularF0(macroColor, macroSpecularF0, macroMetalness); + surface.roughnessLinear = macroRoughness; + surface.CalculateRoughnessA(); + } // Clear Coat, Transmission (Not used for terrain) surface.clearCoat.InitializeToZero(); @@ -184,6 +172,7 @@ ForwardPassOutput TerrainPBR_MainPassPS(VSOutput IN) // Shadow, Occlusion lightingData.shadowCoords = IN.m_shadowCoords; + lightingData.diffuseAmbientOcclusion = detailSurface.m_occlusion; // Diffuse and Specular response lightingData.specularResponse = FresnelSchlickWithRoughness(lightingData.NdotV, surface.specularF0, surface.roughnessLinear); diff --git a/Gems/Terrain/Assets/Shaders/Terrain/TerrainSrg.azsli b/Gems/Terrain/Assets/Shaders/Terrain/TerrainSrg.azsli new file mode 100644 index 0000000000..c8ab04a5bc --- /dev/null +++ b/Gems/Terrain/Assets/Shaders/Terrain/TerrainSrg.azsli @@ -0,0 +1,74 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#pragma once + +#include + +ShaderResourceGroupSemantic SRG_Terrain +{ + FrequencyId = 7; +}; + +ShaderResourceGroup TerrainSrg : SRG_Terrain +{ + + Sampler DetailSampler + { + AddressU = Wrap; + AddressV = Wrap; + MinFilter = Point; + MagFilter = Point; + MipFilter = Point; + }; + + struct DetailMaterialData + { + // Uv + row_major float3x4 m_uvTransform; + + float3 m_baseColor; + + // Factor / Scale / Bias for input textures + float m_baseColorFactor; + + float m_normalFactor; + float m_metalFactor; + float m_roughnessScale; + float m_roughnessBias; + + float m_specularF0Factor; + float m_occlusionFactor; + float m_heightFactor; + float m_heightOffset; + + float m_heightBlendFactor; + + // Flags + uint m_flags; // see DetailTextureFlags + + // Image indices + uint m_colorNormalImageIndices; + uint m_roughnessMetalnessImageIndices; + + uint m_specularF0OcclusionImageIndices; + uint m_heightImageIndex; // only first 16 bits used + + // 16 byte aligned + uint2 m_padding; + }; + + Texture2D m_detailMaterialIdImage; + StructuredBuffer m_detailMaterialData; + Texture2D m_detailTextures[]; // bindless array of all textures for detail materials + + float2 m_detailMaterialIdImageCenter; + float m_detailHalfPixelUv; + float4 m_detailAabb; + +} diff --git a/Gems/Terrain/Assets/Shaders/Terrain/ViewSrg.azsli b/Gems/Terrain/Assets/Shaders/Terrain/ViewSrg.azsli new file mode 100644 index 0000000000..144f2abf6b --- /dev/null +++ b/Gems/Terrain/Assets/Shaders/Terrain/ViewSrg.azsli @@ -0,0 +1,80 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#ifndef AZ_COLLECTING_PARTIAL_SRGS +#error Do not include this file directly. Include the main .srgi file instead. +#endif + +partial ShaderResourceGroup ViewSrg +{ + Sampler HeightmapSampler + { + MinFilter = Linear; + MagFilter = Linear; + MipFilter = Point; + AddressU = Clamp; + AddressV = Clamp; + AddressW = Clamp; + }; + + Sampler DetailSampler + { + AddressU = Wrap; + AddressV = Wrap; + MinFilter = Point; + MagFilter = Point; + MipFilter = Point; + }; + + struct DetailMaterialData + { + // Uv + row_major float3x4 m_uvTransform; + + float3 m_baseColor; + + // Factor / Scale / Bias for input textures + float m_baseColorFactor; + + float m_normalFactor; + float m_metalFactor; + float m_roughnessScale; + float m_roughnessBias; + + float m_specularF0Factor; + float m_occlusionFactor; + float m_heightFactor; + float m_heightOffset; + + float m_heightBlendFactor; + + // Flags + uint m_flags; // see DetailTextureFlags + + // Image indices + uint m_colorNormalImageIndices; + uint m_roughnessMetalnessImageIndices; + + uint m_specularF0OcclusionImageIndices; + uint m_heightImageIndex; // only first 16 bits used + + // 16 byte aligned + uint2 m_padding; + }; + + Texture2D m_heightmapImage; + Texture2D m_detailMaterialIdImage; + StructuredBuffer m_detailMaterialData; + + Texture2D m_detailTextures[]; // bindless array of all textures for detail materials + + float2 m_detailMaterialIdImageCenter; + float m_detailHalfPixelUv; + + float4 m_detailAabb; +} diff --git a/Gems/Terrain/Code/CMakeLists.txt b/Gems/Terrain/Code/CMakeLists.txt index 4b2f32e172..d532284350 100644 --- a/Gems/Terrain/Code/CMakeLists.txt +++ b/Gems/Terrain/Code/CMakeLists.txt @@ -26,8 +26,6 @@ ly_add_target( Gem::GradientSignal Gem::SurfaceData Gem::LmbrCentral - - ) ly_add_target( @@ -49,14 +47,14 @@ ly_add_target( ) # the above module is for use in all client/server types -ly_create_alias(NAME Terrain.Servers NAMESPACE Gem TARGETS Gem::Terrain) -ly_create_alias(NAME Terrain.Clients NAMESPACE Gem TARGETS Gem::Terrain) +ly_create_alias(NAME Terrain.Servers NAMESPACE Gem TARGETS Gem::Terrain Gem::SurfaceData.Servers Gem::GradientSignal.Servers) +ly_create_alias(NAME Terrain.Clients NAMESPACE Gem TARGETS Gem::Terrain Gem::SurfaceData.Clients Gem::GradientSignal.Clients) # If we are on a host platform, we want to add the host tools targets like the Terrain.Editor target which # will also depend on Terrain.Static if(PAL_TRAIT_BUILD_HOST_TOOLS) ly_add_target( - NAME Terrain.Editor MODULE + NAME Terrain.Editor GEM_MODULE NAMESPACE Gem AUTOMOC FILES_CMAKE @@ -78,8 +76,8 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS) ) # the above module is for use in dev tool situations - ly_create_alias(NAME Terrain.Builders NAMESPACE Gem TARGETS Gem::Terrain.Editor) - ly_create_alias(NAME Terrain.Tools NAMESPACE Gem TARGETS Gem::Terrain.Editor) + ly_create_alias(NAME Terrain.Builders NAMESPACE Gem TARGETS Gem::Terrain.Editor Gem::SurfaceData.Builders Gem::GradientSignal.Builders) + ly_create_alias(NAME Terrain.Tools NAMESPACE Gem TARGETS Gem::Terrain.Editor Gem::SurfaceData.Tools Gem::GradientSignal.Tools) endif() ################################################################################ diff --git a/Gems/Terrain/Code/Source/Components/TerrainPhysicsColliderComponent.cpp b/Gems/Terrain/Code/Source/Components/TerrainPhysicsColliderComponent.cpp index e9c235c1bd..6c76e90fd0 100644 --- a/Gems/Terrain/Code/Source/Components/TerrainPhysicsColliderComponent.cpp +++ b/Gems/Terrain/Code/Source/Components/TerrainPhysicsColliderComponent.cpp @@ -185,12 +185,28 @@ namespace Terrain void TerrainPhysicsColliderComponent::GetHeightfieldHeightBounds(float& minHeightBounds, float& maxHeightBounds) const { - AZ::Aabb heightfieldAabb = GetHeightfieldAabb(); + const AZ::Aabb heightfieldAabb = GetHeightfieldAabb(); // Because our terrain heights are relative to the center of the bounding box, the min and max allowable heights are also // relative to the center. They are also clamped to the size of the bounding box. - minHeightBounds = -(heightfieldAabb.GetZExtent() / 2.0f); maxHeightBounds = heightfieldAabb.GetZExtent() / 2.0f; + minHeightBounds = -maxHeightBounds; + } + + float TerrainPhysicsColliderComponent::GetHeightfieldMinHeight() const + { + float minHeightBounds{ 0.0f }; + float maxHeightBounds{ 0.0f }; + GetHeightfieldHeightBounds(minHeightBounds, maxHeightBounds); + return minHeightBounds; + } + + float TerrainPhysicsColliderComponent::GetHeightfieldMaxHeight() const + { + float minHeightBounds{ 0.0f }; + float maxHeightBounds{ 0.0f }; + GetHeightfieldHeightBounds(minHeightBounds, maxHeightBounds); + return maxHeightBounds; } AZ::Transform TerrainPhysicsColliderComponent::GetHeightfieldTransform() const @@ -199,9 +215,7 @@ namespace Terrain AZ::Vector3 translate; AZ::TransformBus::EventResult(translate, GetEntityId(), &AZ::TransformBus::Events::GetWorldTranslation); - AZ::Transform transform = AZ::Transform::CreateTranslation(translate); - - return transform; + return AZ::Transform::CreateTranslation(translate); } void TerrainPhysicsColliderComponent::GenerateHeightsInBounds(AZStd::vector& heights) const @@ -298,6 +312,24 @@ namespace Terrain numRows = aznumeric_cast((bounds.GetMax().GetY() - bounds.GetMin().GetY()) / gridResolution.GetY()); } + int32_t TerrainPhysicsColliderComponent::GetHeightfieldGridColumns() const + { + int32_t numColumns{ 0 }; + int32_t numRows{ 0 }; + + GetHeightfieldGridSize(numColumns, numRows); + return numColumns; + } + + int32_t TerrainPhysicsColliderComponent::GetHeightfieldGridRows() const + { + int32_t numColumns{ 0 }; + int32_t numRows{ 0 }; + + GetHeightfieldGridSize(numColumns, numRows); + return numRows; + } + AZStd::vector TerrainPhysicsColliderComponent::GetMaterialList() const { return AZStd::vector(); diff --git a/Gems/Terrain/Code/Source/Components/TerrainPhysicsColliderComponent.h b/Gems/Terrain/Code/Source/Components/TerrainPhysicsColliderComponent.h index e268223689..6462909c89 100644 --- a/Gems/Terrain/Code/Source/Components/TerrainPhysicsColliderComponent.h +++ b/Gems/Terrain/Code/Source/Components/TerrainPhysicsColliderComponent.h @@ -58,7 +58,11 @@ namespace Terrain // HeightfieldProviderRequestsBus AZ::Vector2 GetHeightfieldGridSpacing() const override; void GetHeightfieldGridSize(int32_t& numColumns, int32_t& numRows) const override; + int32_t GetHeightfieldGridColumns() const override; + int32_t GetHeightfieldGridRows() const override; void GetHeightfieldHeightBounds(float& minHeightBounds, float& maxHeightBounds) const override; + float GetHeightfieldMinHeight() const override; + float GetHeightfieldMaxHeight() const override; AZ::Aabb GetHeightfieldAabb() const override; AZ::Transform GetHeightfieldTransform() const override; AZStd::vector GetMaterialList() const override; diff --git a/Gems/Terrain/Code/Source/EditorComponents/EditorTerrainPhysicsColliderComponent.h b/Gems/Terrain/Code/Source/EditorComponents/EditorTerrainPhysicsColliderComponent.h index d2254161a0..924426c262 100644 --- a/Gems/Terrain/Code/Source/EditorComponents/EditorTerrainPhysicsColliderComponent.h +++ b/Gems/Terrain/Code/Source/EditorComponents/EditorTerrainPhysicsColliderComponent.h @@ -25,8 +25,8 @@ namespace Terrain static constexpr auto s_categoryName = "Terrain"; static constexpr auto s_componentName = "Terrain Physics Heightfield Collider"; static constexpr auto s_componentDescription = "Provides terrain data to a physics collider in the form of a heightfield and surface->material mapping."; - static constexpr auto s_icon = "Editor/Icons/Components/TerrainLayerSpawner.svg"; - static constexpr auto s_viewportIcon = "Editor/Icons/Components/Viewport/TerrainLayerSpawner.svg"; + static constexpr auto s_icon = "Editor/Icons/Components/TerrainPhysicsCollider.svg"; + static constexpr auto s_viewportIcon = "Editor/Icons/Components/Viewport/TerrainPhysicsCollider.svg"; static constexpr auto s_helpUrl = ""; }; } diff --git a/Gems/Terrain/Code/Source/EditorComponents/EditorTerrainSurfaceGradientListComponent.h b/Gems/Terrain/Code/Source/EditorComponents/EditorTerrainSurfaceGradientListComponent.h index e2c5f1b280..3cf9e7fc47 100644 --- a/Gems/Terrain/Code/Source/EditorComponents/EditorTerrainSurfaceGradientListComponent.h +++ b/Gems/Terrain/Code/Source/EditorComponents/EditorTerrainSurfaceGradientListComponent.h @@ -25,8 +25,8 @@ namespace Terrain static constexpr const char* const s_categoryName = "Terrain"; static constexpr const char* const s_componentName = "Terrain Surface Gradient List"; static constexpr const char* const s_componentDescription = "Provides a mapping between gradients and surface tags for use by the terrain system."; - static constexpr const char* const s_icon = "Editor/Icons/Components/TerrainLayerSpawner.svg"; - static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/TerrainLayerSpawner.svg"; + static constexpr const char* const s_icon = "Editor/Icons/Components/TerrainSurfaceGradientList.svg"; + static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/TerrainSurfaceGradientList.svg"; static constexpr const char* const s_helpUrl = ""; }; } diff --git a/Gems/Terrain/Code/Source/TerrainRenderer/Components/TerrainSurfaceMaterialsListComponent.cpp b/Gems/Terrain/Code/Source/TerrainRenderer/Components/TerrainSurfaceMaterialsListComponent.cpp index 3c6a213b02..5f2a50f903 100644 --- a/Gems/Terrain/Code/Source/TerrainRenderer/Components/TerrainSurfaceMaterialsListComponent.cpp +++ b/Gems/Terrain/Code/Source/TerrainRenderer/Components/TerrainSurfaceMaterialsListComponent.cpp @@ -74,7 +74,7 @@ namespace Terrain ->DataElement( AZ::Edit::UIHandlers::Default, &TerrainSurfaceMaterialsListConfig::m_surfaceMaterials, - "Gradient to Material Mappings", "Maps surfaces to materials."); + "Material Mappings", "Maps surfaces to materials."); } } } @@ -134,12 +134,12 @@ namespace Terrain void TerrainSurfaceMaterialsListComponent::Deactivate() { TerrainAreaMaterialRequestBus::Handler::BusDisconnect(); - AZ::Data::AssetBus::MultiHandler::BusDisconnect(); for (auto& surfaceMaterialMapping : m_configuration.m_surfaceMaterials) { if (surfaceMaterialMapping.m_materialAsset.GetId().IsValid()) { + AZ::Data::AssetBus::MultiHandler::BusDisconnect(surfaceMaterialMapping.m_materialAsset.GetId()); surfaceMaterialMapping.m_materialAsset.Release(); surfaceMaterialMapping.m_materialInstance.reset(); surfaceMaterialMapping.m_activeMaterialAssetId = AZ::Data::AssetId(); @@ -241,7 +241,7 @@ namespace Terrain // All materials have been deactivated, stop listening for requests and notifications. m_cachedAabb = AZ::Aabb::CreateNull(); LmbrCentral::ShapeComponentNotificationsBus::Handler::BusDisconnect(); - TerrainAreaMaterialRequestBus::Handler::BusConnect(GetEntityId()); + TerrainAreaMaterialRequestBus::Handler::BusDisconnect(); } } diff --git a/Gems/Terrain/Code/Source/TerrainRenderer/EditorComponents/EditorTerrainMacroMaterialComponent.h b/Gems/Terrain/Code/Source/TerrainRenderer/EditorComponents/EditorTerrainMacroMaterialComponent.h index a2fddf5768..67897b7dec 100644 --- a/Gems/Terrain/Code/Source/TerrainRenderer/EditorComponents/EditorTerrainMacroMaterialComponent.h +++ b/Gems/Terrain/Code/Source/TerrainRenderer/EditorComponents/EditorTerrainMacroMaterialComponent.h @@ -25,8 +25,8 @@ namespace Terrain static constexpr const char* const s_categoryName = "Terrain"; static constexpr const char* const s_componentName = "Terrain Macro Material"; static constexpr const char* const s_componentDescription = "Provides a macro material for a region to the terrain renderer"; - static constexpr const char* const s_icon = "Editor/Icons/Components/TerrainLayerRenderer.svg"; - static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/TerrainLayerRenderer.svg"; + static constexpr const char* const s_icon = "Editor/Icons/Components/TerrainMacroMaterial.svg"; + static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/TerrainMacroMaterial.svg"; static constexpr const char* const s_helpUrl = ""; }; } diff --git a/Gems/Terrain/Code/Source/TerrainRenderer/EditorComponents/EditorTerrainSurfaceMaterialsListComponent.h b/Gems/Terrain/Code/Source/TerrainRenderer/EditorComponents/EditorTerrainSurfaceMaterialsListComponent.h index f0d03a6082..7fe8c82522 100644 --- a/Gems/Terrain/Code/Source/TerrainRenderer/EditorComponents/EditorTerrainSurfaceMaterialsListComponent.h +++ b/Gems/Terrain/Code/Source/TerrainRenderer/EditorComponents/EditorTerrainSurfaceMaterialsListComponent.h @@ -25,8 +25,8 @@ namespace Terrain static constexpr const char* const s_categoryName = "Terrain"; static constexpr const char* const s_componentName = "Terrain Surface Materials List"; static constexpr const char* const s_componentDescription = "Provides a mapping between surface tags and render materials."; - static constexpr const char* const s_icon = "Editor/Icons/Components/TerrainHeight.svg"; - static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/TerrainHeight.svg"; + static constexpr const char* const s_icon = "Editor/Icons/Components/TerrainSurfaceMaterials.svg"; + static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/TerrainSurfaceMaterials.svg"; static constexpr const char* const s_helpUrl = ""; }; } diff --git a/Gems/Terrain/Code/Source/TerrainRenderer/TerrainFeatureProcessor.cpp b/Gems/Terrain/Code/Source/TerrainRenderer/TerrainFeatureProcessor.cpp index 716c900f9b..9f83844243 100644 --- a/Gems/Terrain/Code/Source/TerrainRenderer/TerrainFeatureProcessor.cpp +++ b/Gems/Terrain/Code/Source/TerrainRenderer/TerrainFeatureProcessor.cpp @@ -31,6 +31,9 @@ #include #include #include +#include +#include +#include #include #include @@ -50,18 +53,24 @@ namespace Terrain const char* TerrainDetailChars = "TerrainDetail"; } - namespace MaterialInputs + namespace ViewSrgInputs { - // Terrain material - static const char* const HeightmapImage("settings.heightmapImage"); - static const char* const DetailMaterialIdImage("settings.detailMaterialIdImage"); - static const char* const DetailCenter("settings.detailMaterialIdCenter"); - static const char* const DetailAabb("settings.detailAabb"); - static const char* const DetailHalfPixelUv("settings.detailHalfPixelUv"); + static const char* const HeightmapImage("m_heightmapImage"); + } + + namespace TerrainSrgInputs + { + static const char* const DetailMaterialIdImage("m_detailMaterialIdImage"); + static const char* const DetailMaterialData("m_detailMaterialData"); + static const char* const DetailMaterialIdImageCenter("m_detailMaterialIdImageCenter"); + static const char* const DetailHalfPixelUv("m_detailHalfPixelUv"); + static const char* const DetailAabb("m_detailAabb"); + static const char* const DetailTextures("m_detailTextures"); } namespace DetailMaterialInputs { + static const char* const BaseColorColor("baseColor.color"); static const char* const BaseColorMap("baseColor.textureMap"); static const char* const BaseColorUseTexture("baseColor.useTexture"); static const char* const BaseColorFactor("baseColor.factor"); @@ -72,8 +81,8 @@ namespace Terrain static const char* const RoughnessMap("roughness.textureMap"); static const char* const RoughnessUseTexture("roughness.useTexture"); static const char* const RoughnessFactor("roughness.factor"); - static const char* const RoughnessUpperBound("roughness.lowerBound"); - static const char* const RoughnessLowerBound("roughness.upperBound"); + static const char* const RoughnessLowerBound("roughness.lowerBound"); + static const char* const RoughnessUpperBound("roughness.upperBound"); static const char* const SpecularF0Map("specularF0.textureMap"); static const char* const SpecularF0UseTexture("specularF0.useTexture"); static const char* const SpecularF0Factor("specularF0.factor"); @@ -126,6 +135,9 @@ namespace Terrain void TerrainFeatureProcessor::Activate() { + EnableSceneNotification(); + CacheForwardPass(); + Initialize(); AzFramework::Terrain::TerrainDataNotificationBus::Handler::BusConnect(); @@ -138,6 +150,13 @@ namespace Terrain void TerrainFeatureProcessor::Initialize() { + // Load indices for the View Srg. + + auto viewSrgLayout = AZ::RPI::RPISystemInterface::Get()->GetViewSrgLayout(); + + m_heightmapPropertyIndex = viewSrgLayout->FindShaderInputImageIndex(AZ::Name(ViewSrgInputs::HeightmapImage)); + AZ_Error(TerrainFPName, m_heightmapPropertyIndex.IsValid(), "Failed to find view srg input constant %s.", ViewSrgInputs::HeightmapImage); + // Load the terrain material asynchronously const AZStd::string materialFilePath = "Materials/Terrain/DefaultPbrTerrain.azmaterial"; m_materialAssetLoader = AZStd::make_unique(); @@ -166,6 +185,7 @@ namespace Terrain return; } OnTerrainDataChanged(AZ::Aabb::CreateNull(), TerrainDataChangedMask::HeightData); + } void TerrainFeatureProcessor::Deactivate() @@ -173,6 +193,8 @@ namespace Terrain TerrainMacroMaterialNotificationBus::Handler::BusDisconnect(); AzFramework::Terrain::TerrainDataNotificationBus::Handler::BusDisconnect(); AZ::RPI::MaterialReloadNotificationBus::Handler::BusDisconnect(); + + DisableSceneNotification(); m_patchModel = {}; m_areaData = {}; @@ -181,6 +203,7 @@ namespace Terrain m_macroMaterials.Clear(); m_materialAssetLoader = {}; m_materialInstance = {}; + } void TerrainFeatureProcessor::Render(const AZ::RPI::FeatureProcessor::RenderPacket& packet) @@ -339,9 +362,47 @@ namespace Terrain uint16_t detailMaterialId = CreateOrUpdateDetailMaterial(material); materialRegion.m_materialsForSurfaces.push_back({ surfaceTag, detailMaterialId }); + m_detailMaterials.GetData(detailMaterialId).refCount++; m_dirtyDetailRegion.AddAabb(materialRegion.m_region); } + void TerrainFeatureProcessor::OnRenderPipelinePassesChanged([[maybe_unused]] AZ::RPI::RenderPipeline* renderPipeline) + { + CacheForwardPass(); + } + + void TerrainFeatureProcessor::CheckDetailMaterialForDeletion(uint16_t detailMaterialId) + { + auto& detailMaterialData = m_detailMaterials.GetData(detailMaterialId); + if (--detailMaterialData.refCount == 0) + { + uint16_t bufferIndex = detailMaterialData.m_detailMaterialBufferIndex; + DetailMaterialShaderData& shaderData = m_detailMaterialShaderData.GetElement(bufferIndex); + + for (uint16_t imageIndex : + { + shaderData.m_colorImageIndex, + shaderData.m_normalImageIndex, + shaderData.m_roughnessImageIndex, + shaderData.m_metalnessImageIndex, + shaderData.m_specularF0ImageIndex, + shaderData.m_occlusionImageIndex, + shaderData.m_heightImageIndex + }) + { + if (imageIndex != InvalidDetailImageIndex) + { + m_detailImageViews.at(imageIndex) = AZ::RPI::ImageSystemInterface::Get()->GetSystemImage(AZ::RPI::SystemImage::Magenta)->GetImageView(); + m_detailImageViewFreeList.push_back(imageIndex); + m_detailImagesNeedUpdate = true; + } + } + + m_detailMaterialShaderData.Release(bufferIndex); + m_detailMaterials.RemoveIndex(detailMaterialId); + } + } + void TerrainFeatureProcessor::OnTerrainSurfaceMaterialMappingDestroyed(AZ::EntityId entityId, SurfaceData::SurfaceTag surfaceTag) { DetailMaterialListRegion& materialRegion = FindOrCreateByEntityId(entityId, m_detailMaterialRegions); @@ -350,6 +411,8 @@ namespace Terrain { if (surface.m_surfaceTag == surfaceTag) { + CheckDetailMaterialForDeletion(surface.m_detailMaterialId); + if (surface.m_surfaceTag != materialRegion.m_materialsForSurfaces.back().m_surfaceTag) { AZStd::swap(surface, materialRegion.m_materialsForSurfaces.back()); @@ -373,13 +436,19 @@ namespace Terrain if (surface.m_surfaceTag == surfaceTag) { found = true; - surface.m_detailMaterialId = materialId; + if (surface.m_detailMaterialId != materialId) + { + ++m_detailMaterials.GetData(materialId).refCount; + CheckDetailMaterialForDeletion(surface.m_detailMaterialId); + surface.m_detailMaterialId = materialId; + } break; } } if (!found) { + ++m_detailMaterials.GetData(materialId).refCount; materialRegion.m_materialsForSurfaces.push_back({ surfaceTag, materialId }); } m_dirtyDetailRegion.AddAabb(materialRegion.m_region); @@ -398,138 +467,196 @@ namespace Terrain static constexpr uint16_t InvalidDetailMaterial = 0xFFFF; uint16_t detailMaterialId = InvalidDetailMaterial; - for (DetailMaterialData& detailMaterial : m_detailMaterials.GetDataVector()) + for (auto& detailMaterialData : m_detailMaterials.GetDataVector()) { - if (detailMaterial.m_assetId == material->GetAssetId()) + if (detailMaterialData.m_assetId == material->GetAssetId()) { - UpdateDetailMaterialData(detailMaterial, material); - detailMaterialId = m_detailMaterials.GetIndexForData(&detailMaterial); + detailMaterialId = m_detailMaterials.GetIndexForData(&detailMaterialData); + UpdateDetailMaterialData(detailMaterialId, material); break; } } - if (detailMaterialId == InvalidDetailMaterial) + AZ_Assert(m_detailMaterialShaderData.GetSize() < 0xFF, "Only 255 detail materials supported."); + + if (detailMaterialId == InvalidDetailMaterial && m_detailMaterialShaderData.GetSize() < 0xFF) { detailMaterialId = m_detailMaterials.GetFreeSlotIndex(); - UpdateDetailMaterialData(m_detailMaterials.GetData(detailMaterialId), material); + auto& detailMaterialData = m_detailMaterials.GetData(detailMaterialId); + detailMaterialData.m_detailMaterialBufferIndex = aznumeric_cast(m_detailMaterialShaderData.Reserve()); + UpdateDetailMaterialData(detailMaterialId, material); } return detailMaterialId; } - void TerrainFeatureProcessor::UpdateDetailMaterialData(DetailMaterialData& materialData, MaterialInstance material) + void TerrainFeatureProcessor::UpdateDetailMaterialData(uint16_t detailMaterialIndex, MaterialInstance material) { - if (materialData.m_materialChangeId != material->GetCurrentChangeId()) + DetailMaterialData& materialData = m_detailMaterials.GetData(detailMaterialIndex); + DetailMaterialShaderData& shaderData = m_detailMaterialShaderData.GetElement(materialData.m_detailMaterialBufferIndex); + + if (materialData.m_materialChangeId == material->GetCurrentChangeId()) { - materialData = DetailMaterialData(); - DetailTextureFlags& flags = materialData.m_properties.m_flags; - materialData.m_materialChangeId = material->GetCurrentChangeId(); - materialData.m_assetId = material->GetAssetId(); - - auto getIndex = [&](const char* const indexName) -> AZ::RPI::MaterialPropertyIndex - { - const AZ::RPI::MaterialPropertyIndex index = material->FindPropertyIndex(AZ::Name(indexName)); - AZ_Warning(TerrainFPName, index.IsValid(), "Failed to find shader input constant %s.", indexName); - return index; - }; - - auto applyProperty = [&](const char* const indexName, auto& ref) -> void - { - const auto index = getIndex(indexName); - if (index.IsValid()) - { - using TypeRefRemoved = AZStd::remove_cvref_t; - ref = material->GetPropertyValue(index).GetValue(); - } - }; - - auto applyFlag = [&](const char* const indexName, DetailTextureFlags flagToSet) -> void - { - const auto index = getIndex(indexName); - if (index.IsValid()) - { - bool flagValue = material->GetPropertyValue(index).GetValue(); - flags = DetailTextureFlags(flagValue ? flags | flagToSet : flags); - } - }; - - auto getEnumName = [&](const char* const indexName) -> const AZStd::string_view - { - const auto index = getIndex(indexName); - if (index.IsValid()) - { - uint32_t enumIndex = material->GetPropertyValue(index).GetValue(); - const AZ::Name& enumName = material->GetMaterialPropertiesLayout()->GetPropertyDescriptor(index)->GetEnumName(enumIndex); - return enumName.GetStringView(); - } - return ""; - }; - - using namespace DetailMaterialInputs; - applyProperty(BaseColorMap, materialData.m_colorImage); - applyFlag(BaseColorUseTexture, DetailTextureFlags::UseTextureBaseColor); - applyProperty(BaseColorFactor, materialData.m_properties.m_baseColorFactor); - - const AZStd::string_view& blendModeString = getEnumName(BaseColorBlendMode); - if (blendModeString == "Multiply") - { - flags = DetailTextureFlags(flags | DetailTextureFlags::BlendModeMultiply); - } - else if (blendModeString == "LinearLight") - { - flags = DetailTextureFlags(flags | DetailTextureFlags::BlendModeLinearLight); - } - else if (blendModeString == "Lerp") - { - flags = DetailTextureFlags(flags | DetailTextureFlags::BlendModeLerp); - } - else if (blendModeString == "Overlay") - { - flags = DetailTextureFlags(flags | DetailTextureFlags::BlendModeOverlay); - } - - applyProperty(MetallicMap, materialData.m_metalnessImage); - applyFlag(MetallicUseTexture, DetailTextureFlags::UseTextureMetallic); - applyProperty(MetallicFactor, materialData.m_properties.m_metalFactor); - - applyProperty(RoughnessMap, materialData.m_roughnessImage); - applyFlag(RoughnessUseTexture, DetailTextureFlags::UseTextureRoughness); - - if ((flags & DetailTextureFlags::UseTextureRoughness) > 0) - { - float lowerBound = 0.0; - float upperBound = 1.0; - applyProperty(RoughnessLowerBound, lowerBound); - applyProperty(RoughnessUpperBound, upperBound); - materialData.m_properties.m_roughnessBias = lowerBound; - materialData.m_properties.m_roughnessScale = upperBound - lowerBound; - } - else - { - materialData.m_properties.m_roughnessBias = 0.0; - applyProperty(RoughnessFactor, materialData.m_properties.m_roughnessScale); - } - - applyProperty(SpecularF0Map, materialData.m_specularF0Image); - applyFlag(SpecularF0UseTexture, DetailTextureFlags::UseTextureSpecularF0); - applyProperty(SpecularF0Factor, materialData.m_properties.m_specularF0Factor); - - applyProperty(NormalMap, materialData.m_normalImage); - applyFlag(NormalUseTexture, DetailTextureFlags::UseTextureNormal); - applyProperty(NormalFactor, materialData.m_properties.m_normalFactor); - applyFlag(NormalFlipX, DetailTextureFlags::FlipNormalX); - applyFlag(NormalFlipY, DetailTextureFlags::FlipNormalY); - - applyProperty(DiffuseOcclusionMap, materialData.m_occlusionImage); - applyFlag(DiffuseOcclusionUseTexture, DetailTextureFlags::UseTextureOcclusion); - applyProperty(DiffuseOcclusionFactor, materialData.m_properties.m_occlusionFactor); - - applyProperty(HeightMap, materialData.m_heightImage); - applyFlag(HeightUseTexture, DetailTextureFlags::UseTextureHeight); - applyProperty(HeightFactor, materialData.m_properties.m_heightFactor); - applyProperty(HeightOffset, materialData.m_properties.m_heightOffset); - applyProperty(HeightBlendFactor, materialData.m_properties.m_heightBlendFactor); - + return; // material hasn't changed, nothing to do } + + materialData.m_materialChangeId = material->GetCurrentChangeId(); + materialData.m_assetId = material->GetAssetId(); + + DetailTextureFlags& flags = shaderData.m_flags; + + auto getIndex = [&](const char* const indexName) -> AZ::RPI::MaterialPropertyIndex + { + const AZ::RPI::MaterialPropertyIndex index = material->FindPropertyIndex(AZ::Name(indexName)); + AZ_Warning(TerrainFPName, index.IsValid(), "Failed to find shader input constant %s.", indexName); + return index; + }; + + auto applyProperty = [&](const char* const indexName, auto& ref) -> void + { + const auto index = getIndex(indexName); + if (index.IsValid()) + { + // GetValue() expects the actaul type, not a reference type, so the reference needs to be removed. + using TypeRefRemoved = AZStd::remove_cvref_t; + ref = material->GetPropertyValue(index).GetValue(); + } + }; + + auto applyImage = [&](const char* const indexName, AZ::Data::Instance& ref, const char* const usingFlagName, DetailTextureFlags flagToSet, uint16_t& imageIndex) -> void + { + // Determine if an image exists and if its using flag allows it to be used. + const auto index = getIndex(indexName); + const auto useTextureIndex = getIndex(usingFlagName); + bool useTextureValue = true; + if (useTextureIndex.IsValid()) + { + useTextureValue = material->GetPropertyValue(useTextureIndex).GetValue(); + } + if (index.IsValid() && useTextureValue) + { + ref = material->GetPropertyValue(index).GetValue>(); + } + useTextureValue = useTextureValue && ref; + flags = DetailTextureFlags(useTextureValue ? (flags | flagToSet) : (flags & ~flagToSet)); + + // Update queues to add/remove textures depending on if the image is used + if (ref) + { + if (imageIndex == InvalidDetailImageIndex) + { + if (m_detailImageViewFreeList.size() > 0) + { + imageIndex = m_detailImageViewFreeList.back(); + m_detailImageViewFreeList.pop_back(); + } + else + { + imageIndex = aznumeric_cast(m_detailImageViews.size()); + m_detailImageViews.push_back(); + } + } + m_detailImageViews.at(imageIndex) = ref->GetImageView(); + m_detailImagesNeedUpdate = true; + } + else if (imageIndex != InvalidDetailImageIndex) + { + m_detailImageViews.at(imageIndex) = AZ::RPI::ImageSystemInterface::Get()->GetSystemImage(AZ::RPI::SystemImage::Magenta)->GetImageView(); + m_detailImageViewFreeList.push_back(imageIndex); + m_detailImagesNeedUpdate = true; + imageIndex = InvalidDetailImageIndex; + } + }; + + auto applyFlag = [&](const char* const indexName, DetailTextureFlags flagToSet) -> void + { + const auto index = getIndex(indexName); + if (index.IsValid()) + { + bool flagValue = material->GetPropertyValue(index).GetValue(); + flags = DetailTextureFlags(flagValue ? flags | flagToSet : flags); + } + }; + + auto getEnumName = [&](const char* const indexName) -> const AZStd::string_view + { + const auto index = getIndex(indexName); + if (index.IsValid()) + { + uint32_t enumIndex = material->GetPropertyValue(index).GetValue(); + const AZ::Name& enumName = material->GetMaterialPropertiesLayout()->GetPropertyDescriptor(index)->GetEnumName(enumIndex); + return enumName.GetStringView(); + } + return ""; + }; + + using namespace DetailMaterialInputs; + applyImage(BaseColorMap, materialData.m_colorImage, BaseColorUseTexture, DetailTextureFlags::UseTextureBaseColor, shaderData.m_colorImageIndex); + applyProperty(BaseColorFactor, shaderData.m_baseColorFactor); + + const auto index = getIndex(BaseColorColor); + if (index.IsValid()) + { + AZ::Color baseColor = material->GetPropertyValue(index).GetValue(); + shaderData.m_baseColorRed = baseColor.GetR(); + shaderData.m_baseColorGreen = baseColor.GetG(); + shaderData.m_baseColorBlue = baseColor.GetB(); + } + + const AZStd::string_view& blendModeString = getEnumName(BaseColorBlendMode); + if (blendModeString == "Multiply") + { + flags = DetailTextureFlags(flags | DetailTextureFlags::BlendModeMultiply); + } + else if (blendModeString == "LinearLight") + { + flags = DetailTextureFlags(flags | DetailTextureFlags::BlendModeLinearLight); + } + else if (blendModeString == "Lerp") + { + flags = DetailTextureFlags(flags | DetailTextureFlags::BlendModeLerp); + } + else if (blendModeString == "Overlay") + { + flags = DetailTextureFlags(flags | DetailTextureFlags::BlendModeOverlay); + } + + applyImage(MetallicMap, materialData.m_metalnessImage, MetallicUseTexture, DetailTextureFlags::UseTextureMetallic, shaderData.m_metalnessImageIndex); + applyProperty(MetallicFactor, shaderData.m_metalFactor); + + applyImage(RoughnessMap, materialData.m_roughnessImage, RoughnessUseTexture, DetailTextureFlags::UseTextureRoughness, shaderData.m_roughnessImageIndex); + + if ((flags & DetailTextureFlags::UseTextureRoughness) > 0) + { + float lowerBound = 0.0; + float upperBound = 1.0; + applyProperty(RoughnessLowerBound, lowerBound); + applyProperty(RoughnessUpperBound, upperBound); + shaderData.m_roughnessBias = lowerBound; + shaderData.m_roughnessScale = upperBound - lowerBound; + } + else + { + shaderData.m_roughnessBias = 0.0; + applyProperty(RoughnessFactor, shaderData.m_roughnessScale); + } + + applyImage(SpecularF0Map, materialData.m_specularF0Image, SpecularF0UseTexture, DetailTextureFlags::UseTextureSpecularF0, shaderData.m_specularF0ImageIndex); + applyProperty(SpecularF0Factor, shaderData.m_specularF0Factor); + + applyImage(NormalMap, materialData.m_normalImage, NormalUseTexture, DetailTextureFlags::UseTextureNormal, shaderData.m_normalImageIndex); + applyProperty(NormalFactor, shaderData.m_normalFactor); + applyFlag(NormalFlipX, DetailTextureFlags::FlipNormalX); + applyFlag(NormalFlipY, DetailTextureFlags::FlipNormalY); + + applyImage(DiffuseOcclusionMap, materialData.m_occlusionImage, DiffuseOcclusionUseTexture, DetailTextureFlags::UseTextureOcclusion, shaderData.m_occlusionImageIndex); + applyProperty(DiffuseOcclusionFactor, shaderData.m_occlusionFactor); + + applyImage(HeightMap, materialData.m_heightImage, HeightUseTexture, DetailTextureFlags::UseTextureHeight, shaderData.m_heightImageIndex); + applyProperty(HeightFactor, shaderData.m_heightFactor); + applyProperty(HeightOffset, shaderData.m_heightOffset); + applyProperty(HeightBlendFactor, shaderData.m_heightBlendFactor); + + m_updateDetailMaterialBuffer = true; } void TerrainFeatureProcessor::CheckUpdateDetailTexture(const Aabb2i& newBounds, const Vector2i& newCenter) @@ -765,7 +892,7 @@ namespace Terrain { if (materialSurface.m_surfaceTag == surfaceType) { - return materialSurface.m_detailMaterialId; + return m_detailMaterials.GetData(materialSurface.m_detailMaterialId).m_detailMaterialBufferIndex; } } } @@ -801,6 +928,7 @@ namespace Terrain // World size changed, so the whole height map needs updating. m_dirtyRegion = worldBounds; + m_imagesNeedUpdate = true; } int32_t xStart = aznumeric_cast(AZStd::ceilf(m_dirtyRegion.GetMin().GetX() / queryResolution)); @@ -889,21 +1017,48 @@ namespace Terrain m_macroNormalMapIndex = layout->FindShaderInputImageIndex(AZ::Name(ShaderInputs::MacroNormalMap)); AZ_Error(TerrainFPName, m_macroNormalMapIndex.IsValid(), "Failed to find shader input constant %s.", ShaderInputs::MacroNormalMap); - - m_heightmapPropertyIndex = m_materialInstance->GetMaterialPropertiesLayout()->FindPropertyIndex(AZ::Name(MaterialInputs::HeightmapImage)); - AZ_Error(TerrainFPName, m_heightmapPropertyIndex.IsValid(), "Failed to find material input constant %s.", MaterialInputs::HeightmapImage); - - m_detailMaterialIdPropertyIndex = m_materialInstance->GetMaterialPropertiesLayout()->FindPropertyIndex(AZ::Name(MaterialInputs::DetailMaterialIdImage)); - AZ_Error(TerrainFPName, m_detailMaterialIdPropertyIndex.IsValid(), "Failed to find material input constant %s.", MaterialInputs::DetailMaterialIdImage); - - m_detailCenterPropertyIndex = m_materialInstance->GetMaterialPropertiesLayout()->FindPropertyIndex(AZ::Name(MaterialInputs::DetailCenter)); - AZ_Error(TerrainFPName, m_detailCenterPropertyIndex.IsValid(), "Failed to find material input constant %s.", MaterialInputs::DetailCenter); - m_detailAabbPropertyIndex = m_materialInstance->GetMaterialPropertiesLayout()->FindPropertyIndex(AZ::Name(MaterialInputs::DetailAabb)); - AZ_Error(TerrainFPName, m_detailAabbPropertyIndex.IsValid(), "Failed to find material input constant %s.", MaterialInputs::DetailAabb); + m_terrainSrg = {}; + for (auto& shaderItem : m_materialInstance->GetShaderCollection()) + { + if (shaderItem.GetShaderAsset()->GetDrawListName() == AZ::Name("forward")) + { + const auto& shaderAsset = shaderItem.GetShaderAsset(); + m_terrainSrg = AZ::RPI::ShaderResourceGroup::Create(shaderItem.GetShaderAsset(), shaderAsset->GetSupervariantIndex(AZ::Name()), AZ::Name{"TerrainSrg"}); + AZ_Error(TerrainFPName, m_terrainSrg, "Failed to create Terrain shader resource group"); + break; + } + } + + AZ_Error(TerrainFPName, m_terrainSrg, "Terrain Srg not found on any shader in the terrain material"); + + if (m_terrainSrg) + { + const AZ::RHI::ShaderResourceGroupLayout* terrainSrgLayout = m_terrainSrg->GetLayout(); + + m_detailMaterialIdPropertyIndex = terrainSrgLayout->FindShaderInputImageIndex(AZ::Name(TerrainSrgInputs::DetailMaterialIdImage)); + AZ_Error(TerrainFPName, m_detailMaterialIdPropertyIndex.IsValid(), "Failed to find view srg input constant %s.", TerrainSrgInputs::DetailMaterialIdImage); - m_detailHalfPixelUvPropertyIndex = m_materialInstance->GetMaterialPropertiesLayout()->FindPropertyIndex(AZ::Name(MaterialInputs::DetailHalfPixelUv)); - AZ_Error(TerrainFPName, m_detailHalfPixelUvPropertyIndex.IsValid(), "Failed to find material input constant %s.", MaterialInputs::DetailHalfPixelUv); + m_detailCenterPropertyIndex = terrainSrgLayout->FindShaderInputConstantIndex(AZ::Name(TerrainSrgInputs::DetailMaterialIdImageCenter)); + AZ_Error(TerrainFPName, m_detailCenterPropertyIndex.IsValid(), "Failed to find view srg input constant %s.", TerrainSrgInputs::DetailMaterialIdImageCenter); + + m_detailHalfPixelUvPropertyIndex = terrainSrgLayout->FindShaderInputConstantIndex(AZ::Name(TerrainSrgInputs::DetailHalfPixelUv)); + AZ_Error(TerrainFPName, m_detailHalfPixelUvPropertyIndex.IsValid(), "Failed to find view srg input constant %s.", TerrainSrgInputs::DetailHalfPixelUv); + + m_detailAabbPropertyIndex = terrainSrgLayout->FindShaderInputConstantIndex(AZ::Name(TerrainSrgInputs::DetailAabb)); + AZ_Error(TerrainFPName, m_detailAabbPropertyIndex.IsValid(), "Failed to find view srg input constant %s.", TerrainSrgInputs::DetailAabb); + + m_detailTexturesIndex = terrainSrgLayout->FindShaderInputImageUnboundedArrayIndex(AZ::Name(TerrainSrgInputs::DetailTextures)); + AZ_Error(TerrainFPName, m_detailTexturesIndex.IsValid(), "Failed to find view srg input constant %s.", TerrainSrgInputs::DetailTextures); + + // Set up the gpu buffer for detail material data + AZ::Render::GpuBufferHandler::Descriptor desc; + desc.m_bufferName = "Detail Material Data"; + desc.m_bufferSrgName = TerrainSrgInputs::DetailMaterialData; + desc.m_elementSize = sizeof(DetailMaterialShaderData); + desc.m_srgLayout = terrainSrgLayout; + m_detailMaterialDataBuffer = AZ::Render::GpuBufferHandler(desc); + } // Find any macro materials that have already been created. TerrainMacroMaterialRequestBus::EnumerateHandlers( @@ -987,7 +1142,7 @@ namespace Terrain auto objectSrg = AZ::RPI::ShaderResourceGroup::Create(shaderAsset, materialAsset->GetObjectSrgLayout()->GetName()); if (!objectSrg) { - AZ_Warning("TerrainFeatureProcessor", false, "Failed to create a new shader resource group, skipping."); + AZ_Warning(TerrainFPName, false, "Failed to create a new shader resource group, skipping."); continue; } @@ -1003,7 +1158,7 @@ namespace Terrain // set the shader option to select forward pass IBL specular if necessary if (!drawPacket.SetShaderOption(AZ::Name("o_meshUseForwardPassIBLSpecular"), AZ::RPI::ShaderOptionValue{ false })) { - AZ_Warning("MeshDrawPacket", false, "Failed to set o_meshUseForwardPassIBLSpecular on mesh draw packet"); + AZ_Warning(TerrainFPName, false, "Failed to set o_meshUseForwardPassIBLSpecular on mesh draw packet"); } const uint8_t stencilRef = AZ::Render::StencilRefs::UseDiffuseGIPass | AZ::Render::StencilRefs::UseIBLSpecularPass; drawPacket.SetStencilRef(stencilRef); @@ -1053,11 +1208,14 @@ namespace Terrain if (m_areaData.m_heightmapUpdated) { UpdateTerrainData(); - - const AZ::Data::Instance heightmapImage = m_areaData.m_heightmapImage; // cast StreamingImage to Image - m_materialInstance->SetPropertyValue(m_heightmapPropertyIndex, heightmapImage); } + if (m_updateDetailMaterialBuffer) + { + m_updateDetailMaterialBuffer = false; + m_detailMaterialDataBuffer.UpdateBuffer(m_detailMaterialShaderData.GetRawData(), aznumeric_cast(m_detailMaterialShaderData.GetSize())); + } + AZ::Vector3 cameraPosition = AZ::Vector3::CreateZero(); for (auto& view : process.m_views) { @@ -1068,7 +1226,7 @@ namespace Terrain } } - if (m_dirtyDetailRegion.IsValid() || !cameraPosition.IsClose(m_previousCameraPosition)) + if (m_dirtyDetailRegion.IsValid() || !cameraPosition.IsClose(m_previousCameraPosition) || m_detailImagesNeedUpdate) { int32_t newDetailTexturePosX = aznumeric_cast(AZStd::roundf(cameraPosition.GetX() / DetailTextureScale)); int32_t newDetailTexturePosY = aznumeric_cast(AZStd::roundf(cameraPosition.GetY() / DetailTextureScale)); @@ -1091,8 +1249,6 @@ namespace Terrain m_dirtyDetailRegion = AZ::Aabb::CreateNull(); m_previousCameraPosition = cameraPosition; - const AZ::Data::Instance detailTextureImage = m_detailTextureImage; // cast StreamingImage to Image - m_materialInstance->SetPropertyValue(m_detailMaterialIdPropertyIndex, detailTextureImage); AZ::Vector4 detailAabb = AZ::Vector4( m_detailTextureBounds.m_min.m_x * DetailTextureScale, @@ -1100,11 +1256,16 @@ namespace Terrain m_detailTextureBounds.m_max.m_x * DetailTextureScale, m_detailTextureBounds.m_max.m_y * DetailTextureScale ); - m_materialInstance->SetPropertyValue(m_detailAabbPropertyIndex, detailAabb); - m_materialInstance->SetPropertyValue(m_detailHalfPixelUvPropertyIndex, 0.5f / DetailTextureSize); - AZ::Vector2 detailUvOffset = AZ::Vector2(float(newCenter.m_x) / DetailTextureSize, float(newCenter.m_y) / DetailTextureSize); - m_materialInstance->SetPropertyValue(m_detailCenterPropertyIndex, detailUvOffset); + + if (m_terrainSrg) + { + m_terrainSrg->SetConstant(m_detailAabbPropertyIndex, detailAabb); + m_terrainSrg->SetConstant(m_detailHalfPixelUvPropertyIndex, 0.5f / DetailTextureSize); + m_terrainSrg->SetConstant(m_detailCenterPropertyIndex, detailUvOffset); + + m_detailMaterialDataBuffer.UpdateSrg(m_terrainSrg.get()); + } } if (m_areaData.m_heightmapUpdated || m_areaData.m_macroMaterialsUpdated) @@ -1195,6 +1356,15 @@ namespace Terrain sectorData.m_srg->Compile(); } } + + // Currently there seems to be a bug in unbounded image arrays where flickering can occur if this isn't updated every frame. + if (m_terrainSrg/* && m_detailImagesUpdated*/) + { + AZStd::array_view imageViews(m_detailImageViews.data(), m_detailImageViews.size()); + [[maybe_unused]] bool result = m_terrainSrg->SetImageViewUnboundedArray(m_detailTexturesIndex, imageViews); + AZ_Error(TerrainFPName, result, "Failed to set image view unbounded array into shader resource group."); + m_detailImagesNeedUpdate = false; + } } for (auto& sectorData : m_sectorData) @@ -1236,10 +1406,30 @@ namespace Terrain } } + if (m_detailTextureImage && m_areaData.m_heightmapImage && m_imagesNeedUpdate) + { + m_imagesNeedUpdate = false; + for (auto& view : process.m_views) + { + auto viewSrg = view->GetShaderResourceGroup(); + viewSrg->SetImage(m_heightmapPropertyIndex, m_areaData.m_heightmapImage); + } + if (m_terrainSrg) + { + m_terrainSrg->SetImage(m_detailMaterialIdPropertyIndex, m_detailTextureImage); + } + } + if (m_materialInstance) { m_materialInstance->Compile(); } + + if (m_terrainSrg && m_forwardPass) + { + m_terrainSrg->Compile(); + m_forwardPass->BindSrg(m_terrainSrg->GetRHIShaderResourceGroup()); + } } void TerrainFeatureProcessor::InitializeTerrainPatch(uint16_t gridSize, float gridSpacing, PatchData& patchdata) @@ -1368,6 +1558,7 @@ namespace Terrain void TerrainFeatureProcessor::OnMaterialReinitialized([[maybe_unused]] const MaterialInstance& material) { + PrepareMaterialData(); for (auto& sectorData : m_sectorData) { for (auto& drawPacket : sectorData.m_drawPackets) @@ -1375,6 +1566,8 @@ namespace Terrain drawPacket.Update(*GetParentScene()); } } + m_imagesNeedUpdate = true; + m_detailImagesNeedUpdate = true; } void TerrainFeatureProcessor::SetWorldSize([[maybe_unused]] AZ::Vector2 sizeInMeters) @@ -1438,6 +1631,27 @@ namespace Terrain } } } + + void TerrainFeatureProcessor::CacheForwardPass() + { + auto rasterPassFilter = AZ::RPI::PassFilter::CreateWithPassClass(); + rasterPassFilter.SetOwnerScene(GetParentScene()); + AZ::RHI::RHISystemInterface* rhiSystem = AZ::RHI::RHISystemInterface::Get(); + AZ::RHI::DrawListTag forwardTag = rhiSystem->GetDrawListTagRegistry()->AcquireTag(AZ::Name("forward")); + AZ::RPI::PassSystemInterface::Get()->ForEachPass(rasterPassFilter, + [&](AZ::RPI::Pass* pass) -> AZ::RPI::PassFilterExecutionFlow + { + auto* rasterPass = azrtti_cast(pass); + + if (rasterPass && rasterPass->GetDrawListTag() == forwardTag) + { + m_forwardPass = rasterPass; + return AZ::RPI::PassFilterExecutionFlow::StopVisitingPasses; + } + return AZ::RPI::PassFilterExecutionFlow::ContinueVisitingPasses; + } + ); + } auto TerrainFeatureProcessor::Vector2i::operator+(const Vector2i& rhs) const -> Vector2i { diff --git a/Gems/Terrain/Code/Source/TerrainRenderer/TerrainFeatureProcessor.h b/Gems/Terrain/Code/Source/TerrainRenderer/TerrainFeatureProcessor.h index 9b66881ec6..7d68e6b185 100644 --- a/Gems/Terrain/Code/Source/TerrainRenderer/TerrainFeatureProcessor.h +++ b/Gems/Terrain/Code/Source/TerrainRenderer/TerrainFeatureProcessor.h @@ -19,7 +19,9 @@ #include #include #include +#include #include +#include namespace AZ::RPI { @@ -29,6 +31,7 @@ namespace AZ::RPI } class Material; class Model; + class RenderPass; class StreamingImage; } @@ -125,17 +128,19 @@ namespace Terrain UseTextureHeight = 0b0000'0000'0000'0000'0000'0000'0010'0000, UseTextureSpecularF0 = 0b0000'0000'0000'0000'0000'0000'0100'0000, - FlipNormalX = 0b0000'0000'0000'0000'0000'0000'1000'0000, - FlipNormalY = 0b0000'0000'0000'0000'0000'0001'0000'0000, + FlipNormalX = 0b0000'0000'0000'0001'0000'0000'0000'0000, + FlipNormalY = 0b0000'0000'0000'0010'0000'0000'0000'0000, - BlendModeMask = 0b0000'0000'0000'0000'0000'0110'0000'0000, + BlendModeMask = 0b0000'0000'0000'1100'0000'0000'0000'0000, BlendModeLerp = 0b0000'0000'0000'0000'0000'0000'0000'0000, - BlendModeLinearLight = 0b0000'0000'0000'0000'0000'0010'0000'0000, - BlendModeMultiply = 0b0000'0000'0000'0000'0000'0100'0000'0000, - BlendModeOverlay = 0b0000'0000'0000'0000'0000'0110'0000'0000, + BlendModeLinearLight = 0b0000'0000'0000'0100'0000'0000'0000'0000, + BlendModeMultiply = 0b0000'0000'0000'1000'0000'0000'0000'0000, + BlendModeOverlay = 0b0000'0000'0000'1100'0000'0000'0000'0000, }; - struct DetailMaterialShaderProperties + static constexpr uint16_t InvalidDetailImageIndex = 0xFFFF; + + struct DetailMaterialShaderData { // Uv AZStd::array m_uvTransform @@ -145,30 +150,50 @@ namespace Terrain 0.0, 0.0, 1.0, 0.0, }; + float m_baseColorRed{ 1.0f }; + float m_baseColorGreen{ 1.0f }; + float m_baseColorBlue{ 1.0f }; + // Factor / Scale / Bias for input textures float m_baseColorFactor{ 1.0f }; + float m_normalFactor{ 1.0f }; float m_metalFactor{ 1.0f }; float m_roughnessScale{ 1.0f }; - float m_roughnessBias{ 0.0f }; + float m_specularF0Factor{ 1.0f }; float m_occlusionFactor{ 1.0f }; float m_heightFactor{ 1.0f }; - float m_heightOffset{ 0.0f }; + float m_heightBlendFactor{ 0.5f }; // Flags DetailTextureFlags m_flags{ 0 }; - float m_padding; // 16 byte aligned + // Image indices + uint16_t m_colorImageIndex{ InvalidDetailImageIndex }; + uint16_t m_normalImageIndex{ InvalidDetailImageIndex }; + uint16_t m_roughnessImageIndex{ InvalidDetailImageIndex }; + uint16_t m_metalnessImageIndex{ InvalidDetailImageIndex }; + + uint16_t m_specularF0ImageIndex{ InvalidDetailImageIndex }; + uint16_t m_occlusionImageIndex{ InvalidDetailImageIndex }; + uint16_t m_heightImageIndex{ InvalidDetailImageIndex }; + + // 16 byte aligned + uint16_t m_padding1; + uint32_t m_padding2; + uint32_t m_padding3; }; struct DetailMaterialData { AZ::Data::AssetId m_assetId; AZ::RPI::Material::ChangeId m_materialChangeId{AZ::RPI::Material::DEFAULT_CHANGE_ID}; + uint32_t refCount = 0; + uint16_t m_detailMaterialBufferIndex{ 0xFFFF }; AZ::Data::Instance m_colorImage; AZ::Data::Instance m_normalImage; @@ -177,8 +202,6 @@ namespace Terrain AZ::Data::Instance m_specularF0Image; AZ::Data::Instance m_occlusionImage; AZ::Data::Instance m_heightImage; - - DetailMaterialShaderProperties m_properties; // maps directly to shader }; struct DetailMaterialSurface @@ -217,6 +240,12 @@ namespace Terrain Aabb2i GetClamped(Aabb2i rhs) const; bool IsValid() const; }; + + struct DetailTextureLocation + { + uint16_t m_index; + AZ::Data::Instance m_image; + }; // AZ::RPI::MaterialReloadNotificationBus::Handler overrides... void OnMaterialReinitialized(const MaterialInstance& material) override; @@ -237,6 +266,9 @@ namespace Terrain void OnTerrainSurfaceMaterialMappingChanged(AZ::EntityId entityId, SurfaceData::SurfaceTag surfaceTag, MaterialInstance material) override; void OnTerrainSurfaceMaterialMappingRegionChanged(AZ::EntityId entityId, const AZ::Aabb& oldRegion, const AZ::Aabb& newRegion) override; + // AZ::RPI::SceneNotificationBus overrides... + void OnRenderPipelinePassesChanged(AZ::RPI::RenderPipeline* renderPipeline) override; + void Initialize(); void InitializeTerrainPatch(uint16_t gridSize, float gridSpacing, PatchData& patchdata); bool InitializePatchModel(); @@ -249,7 +281,8 @@ namespace Terrain void TerrainSurfaceDataUpdated(const AZ::Aabb& dirtyRegion); uint16_t CreateOrUpdateDetailMaterial(MaterialInstance material); - void UpdateDetailMaterialData(DetailMaterialData& materialData, MaterialInstance material); + void CheckDetailMaterialForDeletion(uint16_t detailMaterialId); + void UpdateDetailMaterialData(uint16_t detailMaterialIndex, MaterialInstance material); void CheckUpdateDetailTexture(const Aabb2i& newBounds, const Vector2i& newCenter); void UpdateDetailTexture(const Aabb2i& updateArea, const Aabb2i& textureBounds, const Vector2i& centerPixel); uint16_t GetDetailMaterialForSurfaceTypeAndPosition(AZ::Crc32 surfaceType, const AZ::Vector2& position); @@ -271,6 +304,8 @@ namespace Terrain AZ::Outcome> CreateBufferAsset( const void* data, const AZ::RHI::BufferViewDescriptor& bufferViewDescriptor, const AZStd::string& bufferName); + void CacheForwardPass(); + // System-level parameters static constexpr float GridSpacing{ 1.0f }; static constexpr int32_t GridSize{ 64 }; // number of terrain quads (vertices are m_gridSize + 1) @@ -281,6 +316,7 @@ namespace Terrain AZStd::unique_ptr m_materialAssetLoader; MaterialInstance m_materialInstance; + AZ::Data::Instance m_terrainSrg; AZ::RHI::ShaderInputConstantIndex m_modelToWorldIndex; AZ::RHI::ShaderInputConstantIndex m_terrainDataIndex; @@ -288,11 +324,13 @@ namespace Terrain AZ::RHI::ShaderInputConstantIndex m_macroMaterialCountIndex; AZ::RHI::ShaderInputImageIndex m_macroColorMapIndex; AZ::RHI::ShaderInputImageIndex m_macroNormalMapIndex; - AZ::RPI::MaterialPropertyIndex m_heightmapPropertyIndex; - AZ::RPI::MaterialPropertyIndex m_detailMaterialIdPropertyIndex; - AZ::RPI::MaterialPropertyIndex m_detailCenterPropertyIndex; - AZ::RPI::MaterialPropertyIndex m_detailAabbPropertyIndex; - AZ::RPI::MaterialPropertyIndex m_detailHalfPixelUvPropertyIndex; + AZ::RHI::ShaderInputImageIndex m_heightmapPropertyIndex; + AZ::RHI::ShaderInputImageIndex m_detailMaterialIdPropertyIndex; + AZ::RHI::ShaderInputBufferIndex m_detailMaterialDataIndex; + AZ::RHI::ShaderInputConstantIndex m_detailCenterPropertyIndex; + AZ::RHI::ShaderInputConstantIndex m_detailAabbPropertyIndex; + AZ::RHI::ShaderInputConstantIndex m_detailHalfPixelUvPropertyIndex; + AZ::RHI::ShaderInputImageUnboundedArrayIndex m_detailTexturesIndex; AZ::Data::Instance m_patchModel; AZ::Vector3 m_previousCameraPosition = AZ::Vector3(AZStd::numeric_limits::max(), 0.0, 0.0); @@ -312,17 +350,26 @@ namespace Terrain TerrainAreaData m_areaData; AZ::Aabb m_dirtyRegion{ AZ::Aabb::CreateNull() }; AZ::Aabb m_dirtyDetailRegion{ AZ::Aabb::CreateNull() }; + bool m_updateDetailMaterialBuffer{ false }; Aabb2i m_detailTextureBounds; Vector2i m_detailTextureCenter; AZ::Data::Instance m_detailTextureImage; AZ::RPI::ShaderSystemInterface::GlobalShaderOptionUpdatedEvent::Handler m_handleGlobalShaderOptionUpdate; - bool m_forceRebuildDrawPackets = false; + bool m_forceRebuildDrawPackets{ false }; + bool m_imagesNeedUpdate{ false }; AZStd::vector m_sectorData; AZ::Render::IndexedDataVector m_macroMaterials; AZ::Render::IndexedDataVector m_detailMaterials; AZ::Render::IndexedDataVector m_detailMaterialRegions; + AZ::Render::SparseVector m_detailMaterialShaderData; + AZ::Render::GpuBufferHandler m_detailMaterialDataBuffer; + AZ::RPI::RenderPass* m_forwardPass; + + AZStd::vector m_detailImageViews; + AZStd::vector m_detailImageViewFreeList; + bool m_detailImagesNeedUpdate{ false }; }; } diff --git a/Gems/Terrain/Code/Tests/LayerSpawnerTests.cpp b/Gems/Terrain/Code/Tests/LayerSpawnerTests.cpp index 3778ba860f..9de441eecf 100644 --- a/Gems/Terrain/Code/Tests/LayerSpawnerTests.cpp +++ b/Gems/Terrain/Code/Tests/LayerSpawnerTests.cpp @@ -6,15 +6,13 @@ * */ +#include + #include #include #include -#include - #include -#include -#include #include #include @@ -23,21 +21,12 @@ using ::testing::NiceMock; using ::testing::AtLeast; using ::testing::_; -using ::testing::NiceMock; -using ::testing::AtLeast; -using ::testing::_; - class LayerSpawnerComponentTest : public ::testing::Test { protected: AZ::ComponentApplication m_app; - AZStd::unique_ptr m_entity; - Terrain::TerrainLayerSpawnerComponent* m_layerSpawnerComponent; - UnitTest::MockAxisAlignedBoxShapeComponent* m_shapeComponent; - AZStd::unique_ptr> m_terrainSystem; - void SetUp() override { AZ::ComponentApplication::Descriptor appDesc; @@ -50,78 +39,86 @@ protected: void TearDown() override { - m_entity.reset(); - m_terrainSystem.reset(); m_app.Destroy(); } - void CreateEntity() + AZStd::unique_ptr CreateEntity() { - m_entity = AZStd::make_unique(); - m_entity->Init(); + auto entity = AZStd::make_unique(); + entity->Init(); - ASSERT_TRUE(m_entity); + return entity; } - void AddLayerSpawnerAndShapeComponentToEntity() + Terrain::TerrainLayerSpawnerComponent* AddLayerSpawnerToEntity(AZ::Entity* entity, const Terrain::TerrainLayerSpawnerConfig& config) { - AddLayerSpawnerAndShapeComponentToEntity(Terrain::TerrainLayerSpawnerConfig()); + auto layerSpawnerComponent = entity->CreateComponent(config); + m_app.RegisterComponentDescriptor(layerSpawnerComponent->CreateDescriptor()); + + return layerSpawnerComponent; } - void AddLayerSpawnerAndShapeComponentToEntity(const Terrain::TerrainLayerSpawnerConfig& config) + UnitTest::MockAxisAlignedBoxShapeComponent* AddShapeComponentToEntity(AZ::Entity* entity) { - m_layerSpawnerComponent = m_entity->CreateComponent(config); - m_app.RegisterComponentDescriptor(m_layerSpawnerComponent->CreateDescriptor()); + UnitTest::MockAxisAlignedBoxShapeComponent* shapeComponent = entity->CreateComponent(); + m_app.RegisterComponentDescriptor(shapeComponent->CreateDescriptor()); - m_shapeComponent = m_entity->CreateComponent(); - m_app.RegisterComponentDescriptor(m_shapeComponent->CreateDescriptor()); - - ASSERT_TRUE(m_layerSpawnerComponent); - ASSERT_TRUE(m_shapeComponent); - } - - void CreateMockTerrainSystem() - { - m_terrainSystem = AZStd::make_unique>(); + return shapeComponent; } }; -TEST_F(LayerSpawnerComponentTest, ActivatEntityActivateSuccess) +TEST_F(LayerSpawnerComponentTest, ActivateEntityWithoutShapeFails) { - CreateEntity(); - AddLayerSpawnerAndShapeComponentToEntity(); + auto entity = CreateEntity(); - m_entity->Activate(); - EXPECT_EQ(m_entity->GetState(), AZ::Entity::State::Active); - - m_entity->Deactivate(); + AddLayerSpawnerToEntity(entity.get(), Terrain::TerrainLayerSpawnerConfig()); + + const AZ::Entity::DependencySortOutcome sortOutcome = entity->EvaluateDependenciesGetDetails(); + EXPECT_FALSE(sortOutcome.IsSuccess()); + + entity.reset(); +} + +TEST_F(LayerSpawnerComponentTest, ActivateEntityActivateSuccess) +{ + auto entity = CreateEntity(); + + AddLayerSpawnerToEntity(entity.get(), Terrain::TerrainLayerSpawnerConfig()); + AddShapeComponentToEntity(entity.get()); + + entity->Activate(); + EXPECT_EQ(entity->GetState(), AZ::Entity::State::Active); + + entity.reset(); } TEST_F(LayerSpawnerComponentTest, LayerSpawnerDefaultValuesCorrect) { - CreateEntity(); - AddLayerSpawnerAndShapeComponentToEntity(); + auto entity = CreateEntity(); + AddLayerSpawnerToEntity(entity.get(), Terrain::TerrainLayerSpawnerConfig()); + AddShapeComponentToEntity(entity.get()); - m_entity->Activate(); + entity->Activate(); AZ::u32 priority = 999, layer = 999; - Terrain::TerrainSpawnerRequestBus::Event(m_entity->GetId(), &Terrain::TerrainSpawnerRequestBus::Events::GetPriority, layer, priority); + Terrain::TerrainSpawnerRequestBus::Event(entity->GetId(), &Terrain::TerrainSpawnerRequestBus::Events::GetPriority, layer, priority); EXPECT_EQ(0, priority); EXPECT_EQ(1, layer); bool useGroundPlane = false; - Terrain::TerrainSpawnerRequestBus::EventResult(useGroundPlane, m_entity->GetId(), &Terrain::TerrainSpawnerRequestBus::Events::GetUseGroundPlane); + Terrain::TerrainSpawnerRequestBus::EventResult( + useGroundPlane, entity->GetId(), &Terrain::TerrainSpawnerRequestBus::Events::GetUseGroundPlane); EXPECT_TRUE(useGroundPlane); - m_entity->Deactivate(); + entity.reset(); } TEST_F(LayerSpawnerComponentTest, LayerSpawnerConfigValuesCorrect) { - CreateEntity(); + auto entity = CreateEntity(); constexpr static AZ::u32 testPriority = 15; constexpr static AZ::u32 testLayer = 0; @@ -131,12 +128,13 @@ TEST_F(LayerSpawnerComponentTest, LayerSpawnerConfigValuesCorrect) config.m_priority = testPriority; config.m_useGroundPlane = false; - AddLayerSpawnerAndShapeComponentToEntity(config); + AddLayerSpawnerToEntity(entity.get(), config); + AddShapeComponentToEntity(entity.get()); - m_entity->Activate(); + entity->Activate(); AZ::u32 priority = 999, layer = 999; - Terrain::TerrainSpawnerRequestBus::Event(m_entity->GetId(), &Terrain::TerrainSpawnerRequestBus::Events::GetPriority, layer, priority); + Terrain::TerrainSpawnerRequestBus::Event(entity->GetId(), &Terrain::TerrainSpawnerRequestBus::Events::GetPriority, layer, priority); EXPECT_EQ(testPriority, priority); EXPECT_EQ(testLayer, layer); @@ -144,82 +142,86 @@ TEST_F(LayerSpawnerComponentTest, LayerSpawnerConfigValuesCorrect) bool useGroundPlane = true; Terrain::TerrainSpawnerRequestBus::EventResult( - useGroundPlane, m_entity->GetId(), &Terrain::TerrainSpawnerRequestBus::Events::GetUseGroundPlane); + useGroundPlane, entity->GetId(), &Terrain::TerrainSpawnerRequestBus::Events::GetUseGroundPlane); EXPECT_FALSE(useGroundPlane); - m_entity->Deactivate(); + entity.reset(); } TEST_F(LayerSpawnerComponentTest, LayerSpawnerRegisterAreaUpdatesTerrainSystem) { - CreateEntity(); + auto entity = CreateEntity(); - CreateMockTerrainSystem(); + NiceMock terrainSystem; // The Activate call should register the area. - EXPECT_CALL(*m_terrainSystem, RegisterArea(_)).Times(1); + EXPECT_CALL(terrainSystem, RegisterArea(_)).Times(1); - AddLayerSpawnerAndShapeComponentToEntity(); + AddLayerSpawnerToEntity(entity.get(), Terrain::TerrainLayerSpawnerConfig()); + AddShapeComponentToEntity(entity.get()); - m_entity->Activate(); + entity->Activate(); - m_entity->Deactivate(); + entity.reset(); } TEST_F(LayerSpawnerComponentTest, LayerSpawnerUnregisterAreaUpdatesTerrainSystem) { - CreateEntity(); + auto entity = CreateEntity(); - CreateMockTerrainSystem(); + NiceMock terrainSystem; // The Deactivate call should unregister the area. - EXPECT_CALL(*m_terrainSystem, UnregisterArea(_)).Times(1); + EXPECT_CALL(terrainSystem, UnregisterArea(_)).Times(1); - AddLayerSpawnerAndShapeComponentToEntity(); + AddLayerSpawnerToEntity(entity.get(), Terrain::TerrainLayerSpawnerConfig()); + AddShapeComponentToEntity(entity.get()); - m_entity->Activate(); + entity->Activate(); - m_entity->Deactivate(); + entity.reset(); } TEST_F(LayerSpawnerComponentTest, LayerSpawnerTransformChangedUpdatesTerrainSystem) { - CreateEntity(); + auto entity = CreateEntity(); - CreateMockTerrainSystem(); + NiceMock terrainSystem; // The TransformChanged call should refresh the area. - EXPECT_CALL(*m_terrainSystem, RefreshArea(_, _)).Times(1); + EXPECT_CALL(terrainSystem, RefreshArea(_, _)).Times(1); - AddLayerSpawnerAndShapeComponentToEntity(); + AddLayerSpawnerToEntity(entity.get(), Terrain::TerrainLayerSpawnerConfig()); + AddShapeComponentToEntity(entity.get()); - m_entity->Activate(); + entity->Activate(); // The component gets transform change notifications via the shape bus. LmbrCentral::ShapeComponentNotificationsBus::Event( - m_entity->GetId(), &LmbrCentral::ShapeComponentNotificationsBus::Events::OnShapeChanged, + entity->GetId(), &LmbrCentral::ShapeComponentNotificationsBus::Events::OnShapeChanged, LmbrCentral::ShapeComponentNotifications::ShapeChangeReasons::TransformChanged); - m_entity->Deactivate(); + entity.reset(); } TEST_F(LayerSpawnerComponentTest, LayerSpawnerShapeChangedUpdatesTerrainSystem) { - CreateEntity(); + auto entity = CreateEntity(); - CreateMockTerrainSystem(); + NiceMock terrainSystem; // The ShapeChanged call should refresh the area. - EXPECT_CALL(*m_terrainSystem, RefreshArea(_, _)).Times(1); + EXPECT_CALL(terrainSystem, RefreshArea(_, _)).Times(1); - AddLayerSpawnerAndShapeComponentToEntity(); + AddLayerSpawnerToEntity(entity.get(), Terrain::TerrainLayerSpawnerConfig()); + AddShapeComponentToEntity(entity.get()); - m_entity->Activate(); + entity->Activate(); - LmbrCentral::ShapeComponentNotificationsBus::Event( - m_entity->GetId(), &LmbrCentral::ShapeComponentNotificationsBus::Events::OnShapeChanged, + LmbrCentral::ShapeComponentNotificationsBus::Event( + entity->GetId(), &LmbrCentral::ShapeComponentNotificationsBus::Events::OnShapeChanged, LmbrCentral::ShapeComponentNotifications::ShapeChangeReasons::ShapeChanged); - m_entity->Deactivate(); + entity.reset(); } diff --git a/Gems/Terrain/Code/Tests/SurfaceMaterialsListTest.cpp b/Gems/Terrain/Code/Tests/SurfaceMaterialsListTest.cpp index 686ca349f5..a9abc333f1 100644 --- a/Gems/Terrain/Code/Tests/SurfaceMaterialsListTest.cpp +++ b/Gems/Terrain/Code/Tests/SurfaceMaterialsListTest.cpp @@ -63,8 +63,10 @@ namespace UnitTest } }; - TEST_F(TerrainSurfaceMaterialsListTest, SurfaceGradientListRequiresShapeToActivate) + TEST_F(TerrainSurfaceMaterialsListTest, SurfaceMaterialsListRequiresShapeToActivate) { + // Check that the component requires a shape service to activate: trying to Activate the entity will cause the test to fail, so + // use the EvaluateDependenciesGetDetails function to check the dependencies are met. auto entity = CreateEntity(); AddSurfaceMaterialListComponent(entity.get()); @@ -75,7 +77,7 @@ namespace UnitTest entity.reset(); } - TEST_F(TerrainSurfaceMaterialsListTest, SurfaceGradientListActivatesSuccessfully) + TEST_F(TerrainSurfaceMaterialsListTest, SurfaceMaterialsListActivatesSuccessfully) { auto entity = CreateEntityWithShapeComponents(); diff --git a/Gems/Terrain/Code/Tests/TerrainHeightGradientListTests.cpp b/Gems/Terrain/Code/Tests/TerrainHeightGradientListTests.cpp index ec500d6ada..89fc714c3c 100644 --- a/Gems/Terrain/Code/Tests/TerrainHeightGradientListTests.cpp +++ b/Gems/Terrain/Code/Tests/TerrainHeightGradientListTests.cpp @@ -19,7 +19,6 @@ #include using ::testing::_; -using ::testing::AtLeast; using ::testing::Mock; using ::testing::NiceMock; using ::testing::Return; @@ -29,8 +28,6 @@ class TerrainHeightGradientListComponentTest : public ::testing::Test protected: AZ::ComponentApplication m_app; - AZStd::unique_ptr m_entity; - void SetUp() override { AZ::ComponentApplication::Descriptor appDesc; @@ -46,47 +43,70 @@ protected: m_app.Destroy(); } - void CreateEntity() + AZStd::unique_ptr CreateEntity() { - m_entity = AZStd::make_unique(); - ASSERT_TRUE(m_entity); - - // Create the required box component. - UnitTest::MockAxisAlignedBoxShapeComponent* boxComponent = m_entity->CreateComponent(); - m_app.RegisterComponentDescriptor(boxComponent->CreateDescriptor()); + auto entity = AZStd::make_unique(); + entity->Init(); + return entity; + } + Terrain::TerrainHeightGradientListComponent* AddHeightGradientListToEntity(AZ::Entity* entity) + { // Create the TerrainHeightGradientListComponent with an entity in its configuration. Terrain::TerrainHeightGradientListConfig config; - config.m_gradientEntities.push_back(m_entity->GetId()); + config.m_gradientEntities.push_back(entity->GetId()); - Terrain::TerrainHeightGradientListComponent* heightGradientListComponent = m_entity->CreateComponent(config); + auto heightGradientListComponent = entity->CreateComponent(config); m_app.RegisterComponentDescriptor(heightGradientListComponent->CreateDescriptor()); - // Create a MockTerrainLayerSpawnerComponent to provide the required TerrainAreaService. - UnitTest::MockTerrainLayerSpawnerComponent* layerSpawner = m_entity->CreateComponent(); - m_app.RegisterComponentDescriptor(layerSpawner->CreateDescriptor()); + return heightGradientListComponent; + } - m_entity->Init(); + void AddRequiredComponetsToEntity(AZ::Entity* entity) + { + // Create the required box component. + UnitTest::MockAxisAlignedBoxShapeComponent* boxComponent = entity->CreateComponent(); + m_app.RegisterComponentDescriptor(boxComponent->CreateDescriptor()); + + // Create a MockTerrainLayerSpawnerComponent to provide the required TerrainAreaService. + UnitTest::MockTerrainLayerSpawnerComponent* layerSpawner = entity->CreateComponent(); + m_app.RegisterComponentDescriptor(layerSpawner->CreateDescriptor()); } }; +TEST_F(TerrainHeightGradientListComponentTest, MissingRequiredComponentsActivateFailure) +{ + auto entity = CreateEntity(); + + AddHeightGradientListToEntity(entity.get()); + + const AZ::Entity::DependencySortOutcome sortOutcome = entity->EvaluateDependenciesGetDetails(); + EXPECT_FALSE(sortOutcome.IsSuccess()); +} + TEST_F(TerrainHeightGradientListComponentTest, ActivateEntityActivateSuccess) { // Check that the entity activates. - CreateEntity(); + auto entity = CreateEntity(); - m_entity->Activate(); - EXPECT_EQ(m_entity->GetState(), AZ::Entity::State::Active); + AddHeightGradientListToEntity(entity.get()); - m_entity.reset(); + AddRequiredComponetsToEntity(entity.get()); + + entity->Activate(); + EXPECT_EQ(entity->GetState(), AZ::Entity::State::Active); } TEST_F(TerrainHeightGradientListComponentTest, TerrainHeightGradientRefreshesTerrainSystem) { // Check that the HeightGradientListComponent informs the TerrainSystem when the composition changes. - CreateEntity(); + auto entity = CreateEntity(); - m_entity->Activate(); + AddHeightGradientListToEntity(entity.get()); + + AddRequiredComponetsToEntity(entity.get()); + + entity->Activate(); NiceMock terrainSystem; @@ -95,32 +115,34 @@ TEST_F(TerrainHeightGradientListComponentTest, TerrainHeightGradientRefreshesTer // and once when the HeightGradientListComponent gets the OnCompositionChanged directly through the DependencyNotificationBus. EXPECT_CALL(terrainSystem, RefreshArea(_, _)).Times(2); - LmbrCentral::DependencyNotificationBus::Event(m_entity->GetId(), &LmbrCentral::DependencyNotificationBus::Events::OnCompositionChanged); + LmbrCentral::DependencyNotificationBus::Event(entity->GetId(), &LmbrCentral::DependencyNotificationBus::Events::OnCompositionChanged); // Stop the EXPECT_CALL check now, as OnCompositionChanged will get called twice again during the reset. Mock::VerifyAndClearExpectations(&terrainSystem); - - m_entity.reset(); } TEST_F(TerrainHeightGradientListComponentTest, TerrainHeightGradientListReturnsHeights) { // Check that the HeightGradientListComponent returns expected height values. - CreateEntity(); + auto entity = CreateEntity(); - NiceMock heightfieldRequestBus(m_entity->GetId()); + AddHeightGradientListToEntity(entity.get()); - m_entity->Activate(); + AddRequiredComponetsToEntity(entity.get()); + + NiceMock heightfieldRequestBus(entity->GetId()); + + entity->Activate(); const float mockGradientValue = 0.25f; - NiceMock gradientRequests(m_entity->GetId()); + NiceMock gradientRequests(entity->GetId()); ON_CALL(gradientRequests, GetValue).WillByDefault(Return(mockGradientValue)); // Setup a mock to provide the encompassing Aabb to the HeightGradientListComponent. const float min = 0.0f; const float max = 1000.0f; const AZ::Aabb aabb = AZ::Aabb::CreateFromMinMax(AZ::Vector3(min), AZ::Vector3(max)); - NiceMock mockShapeRequests(m_entity->GetId()); + NiceMock mockShapeRequests(entity->GetId()); ON_CALL(mockShapeRequests, GetEncompassingAabb).WillByDefault(Return(aabb)); const float worldMax = 10000.0f; @@ -130,17 +152,16 @@ TEST_F(TerrainHeightGradientListComponentTest, TerrainHeightGradientListReturnsH ON_CALL(mockterrainDataRequests, GetTerrainAabb).WillByDefault(Return(worldAabb)); // Ensure the cached values in the HeightGradientListComponent are up to date. - LmbrCentral::DependencyNotificationBus::Event(m_entity->GetId(), &LmbrCentral::DependencyNotificationBus::Events::OnCompositionChanged); + LmbrCentral::DependencyNotificationBus::Event(entity->GetId(), &LmbrCentral::DependencyNotificationBus::Events::OnCompositionChanged); const AZ::Vector3 inPosition = AZ::Vector3::CreateZero(); AZ::Vector3 outPosition = AZ::Vector3::CreateZero(); bool terrainExists = false; - Terrain::TerrainAreaHeightRequestBus::Event(m_entity->GetId(), &Terrain::TerrainAreaHeightRequestBus::Events::GetHeight, inPosition, outPosition, terrainExists); + Terrain::TerrainAreaHeightRequestBus::Event( + entity->GetId(), &Terrain::TerrainAreaHeightRequestBus::Events::GetHeight, inPosition, outPosition, terrainExists); const float height = outPosition.GetZ(); EXPECT_NEAR(height, mockGradientValue * max, 0.01f); - - m_entity.reset(); } diff --git a/Gems/Terrain/Code/Tests/TerrainSurfaceGradientListTests.cpp b/Gems/Terrain/Code/Tests/TerrainSurfaceGradientListTests.cpp index dea861bda5..71f5d64fa8 100644 --- a/Gems/Terrain/Code/Tests/TerrainSurfaceGradientListTests.cpp +++ b/Gems/Terrain/Code/Tests/TerrainSurfaceGradientListTests.cpp @@ -11,8 +11,6 @@ #include using ::testing::NiceMock; -using ::testing::AtLeast; -using ::testing::_; using ::testing::Return; namespace UnitTest @@ -22,10 +20,6 @@ namespace UnitTest protected: AZ::ComponentApplication m_app; - AZStd::unique_ptr m_entity; - UnitTest::MockTerrainLayerSpawnerComponent* m_layerSpawnerComponent = nullptr; - AZStd::unique_ptr m_gradientEntity1, m_gradientEntity2; - const AZStd::string surfaceTag1 = "testtag1"; const AZStd::string surfaceTag2 = "testtag2"; @@ -37,81 +31,76 @@ namespace UnitTest appDesc.m_stackRecordLevels = 20; m_app.Create(appDesc); - - CreateEntities(); } void TearDown() override { - m_gradientEntity2.reset(); - m_gradientEntity1.reset(); - m_entity.reset(); - m_app.Destroy(); } - void CreateEntities() + AZStd::unique_ptr CreateEntity() { - m_entity = AZStd::make_unique(); - ASSERT_TRUE(m_entity); - - m_entity->Init(); - - m_gradientEntity1 = AZStd::make_unique(); - ASSERT_TRUE(m_gradientEntity1); - - m_gradientEntity1->Init(); - - m_gradientEntity2 = AZStd::make_unique(); - ASSERT_TRUE(m_gradientEntity2); - - m_gradientEntity2->Init(); + auto entity = AZStd::make_unique(); + entity->Init(); + return entity; } - void AddSurfaceGradientListToEntities() + UnitTest::MockTerrainLayerSpawnerComponent* AddRequiredComponentsToEntity(AZ::Entity* entity) { - m_layerSpawnerComponent = m_entity->CreateComponent(); - m_app.RegisterComponentDescriptor(m_layerSpawnerComponent->CreateDescriptor()); + auto layerSpawnerComponent = entity->CreateComponent(); + m_app.RegisterComponentDescriptor(layerSpawnerComponent->CreateDescriptor()); - Terrain::TerrainSurfaceGradientListConfig config; - - Terrain::TerrainSurfaceGradientMapping mapping1; - mapping1.m_gradientEntityId = m_gradientEntity1->GetId(); - mapping1.m_surfaceTag = SurfaceData::SurfaceTag(surfaceTag1); - config.m_gradientSurfaceMappings.emplace_back(mapping1); - - Terrain::TerrainSurfaceGradientMapping mapping2; - mapping2.m_gradientEntityId = m_gradientEntity2->GetId(); - mapping2.m_surfaceTag = SurfaceData::SurfaceTag(surfaceTag2); - config.m_gradientSurfaceMappings.emplace_back(mapping2); - - Terrain::TerrainSurfaceGradientListComponent* terrainSurfaceGradientListComponent = - m_entity->CreateComponent(config); - m_app.RegisterComponentDescriptor(terrainSurfaceGradientListComponent->CreateDescriptor()); + return layerSpawnerComponent; } }; + TEST_F(TerrainSurfaceGradientListTest, SurfaceGradientMissingRequirementsActivateFails) + { + auto entity = CreateEntity(); + + auto terrainSurfaceGradientListComponent = entity->CreateComponent(); + m_app.RegisterComponentDescriptor(terrainSurfaceGradientListComponent->CreateDescriptor()); + + const AZ::Entity::DependencySortOutcome sortOutcome = entity->EvaluateDependenciesGetDetails(); + EXPECT_FALSE(sortOutcome.IsSuccess()); + } + + TEST_F(TerrainSurfaceGradientListTest, SurfaceGradientActivateSuccess) + { + auto entity = CreateEntity(); + + AddRequiredComponentsToEntity(entity.get()); + + auto terrainSurfaceGradientListComponent = entity->CreateComponent(); + m_app.RegisterComponentDescriptor(terrainSurfaceGradientListComponent->CreateDescriptor()); + + entity->Activate(); + + EXPECT_EQ(entity->GetState(), AZ::Entity::State::Active); + } + TEST_F(TerrainSurfaceGradientListTest, SurfaceGradientReturnsSurfaceWeights) { // When there is more than one surface/weight defined and added to the component, they should all // be returned. The component isn't required to return them in descending order. - AddSurfaceGradientListToEntities(); + auto entity = CreateEntity(); - m_entity->Activate(); - m_gradientEntity1->Activate(); - m_gradientEntity2->Activate(); + AddRequiredComponentsToEntity(entity.get()); + + auto gradientEntity1 = CreateEntity(); + auto gradientEntity2 = CreateEntity(); const float gradient1Value = 0.3f; - NiceMock mockGradientRequests1(m_gradientEntity1->GetId()); + NiceMock mockGradientRequests1(gradientEntity1->GetId()); ON_CALL(mockGradientRequests1, GetValue).WillByDefault(Return(gradient1Value)); const float gradient2Value = 1.0f; - NiceMock mockGradientRequests2(m_gradientEntity2->GetId()); + NiceMock mockGradientRequests2(gradientEntity2->GetId()); ON_CALL(mockGradientRequests2, GetValue).WillByDefault(Return(gradient2Value)); AzFramework::SurfaceData::SurfaceTagWeightList weightList; Terrain::TerrainAreaSurfaceRequestBus::Event( - m_entity->GetId(), &Terrain::TerrainAreaSurfaceRequestBus::Events::GetSurfaceWeights, AZ::Vector3::CreateZero(), weightList); + entity->GetId(), &Terrain::TerrainAreaSurfaceRequestBus::Events::GetSurfaceWeights, AZ::Vector3::CreateZero(), weightList); AZ::Crc32 expectedCrcList[] = { AZ::Crc32(surfaceTag1), AZ::Crc32(surfaceTag2) }; const float expectedWeightList[] = { gradient1Value, gradient2Value }; diff --git a/Gems/UiBasics/Assets/UI/Slices/Library/Button.slice b/Gems/UiBasics/Assets/UI/Slices/Library/Button.slice index 276d181ad6..020db8367a 100644 --- a/Gems/UiBasics/Assets/UI/Slices/Library/Button.slice +++ b/Gems/UiBasics/Assets/UI/Slices/Library/Button.slice @@ -112,7 +112,7 @@ - + @@ -158,7 +158,7 @@ - + diff --git a/Gems/UiBasics/Assets/UI/Slices/Library/Checkbox.slice b/Gems/UiBasics/Assets/UI/Slices/Library/Checkbox.slice index 9334903463..74e7bb1c2b 100644 --- a/Gems/UiBasics/Assets/UI/Slices/Library/Checkbox.slice +++ b/Gems/UiBasics/Assets/UI/Slices/Library/Checkbox.slice @@ -30,7 +30,7 @@ - + @@ -55,7 +55,7 @@ - + @@ -74,7 +74,7 @@ - + @@ -234,7 +234,7 @@ - + @@ -311,7 +311,7 @@ - + diff --git a/Gems/UiBasics/Assets/UI/Slices/Library/Dropdown.slice b/Gems/UiBasics/Assets/UI/Slices/Library/Dropdown.slice index e73c53e0d5..4185e80332 100644 --- a/Gems/UiBasics/Assets/UI/Slices/Library/Dropdown.slice +++ b/Gems/UiBasics/Assets/UI/Slices/Library/Dropdown.slice @@ -231,7 +231,7 @@ - + @@ -383,7 +383,7 @@ - + @@ -1218,7 +1218,7 @@ - + diff --git a/Gems/UiBasics/Assets/UI/Slices/Library/Textinput.slice b/Gems/UiBasics/Assets/UI/Slices/Library/Textinput.slice index cb9eaeb213..f57d307543 100644 --- a/Gems/UiBasics/Assets/UI/Slices/Library/Textinput.slice +++ b/Gems/UiBasics/Assets/UI/Slices/Library/Textinput.slice @@ -75,7 +75,7 @@ - + @@ -233,7 +233,7 @@ - + diff --git a/Gems/UiBasics/Assets/UI/Slices/Library/TooltipDisplay.slice b/Gems/UiBasics/Assets/UI/Slices/Library/TooltipDisplay.slice index e92f722837..5c9aa5cbf2 100644 --- a/Gems/UiBasics/Assets/UI/Slices/Library/TooltipDisplay.slice +++ b/Gems/UiBasics/Assets/UI/Slices/Library/TooltipDisplay.slice @@ -79,7 +79,7 @@ - + diff --git a/Gems/Vegetation/Code/Source/InstanceSystemComponent.cpp b/Gems/Vegetation/Code/Source/InstanceSystemComponent.cpp index dd38daa633..85ba4bda61 100644 --- a/Gems/Vegetation/Code/Source/InstanceSystemComponent.cpp +++ b/Gems/Vegetation/Code/Source/InstanceSystemComponent.cpp @@ -15,9 +15,6 @@ #include #include -#include -#include - #include #include #include diff --git a/Gems/WhiteBox/Code/Source/Components/EditorWhiteBoxColliderComponent.cpp b/Gems/WhiteBox/Code/Source/Components/EditorWhiteBoxColliderComponent.cpp index c22be6f072..c245f60fed 100644 --- a/Gems/WhiteBox/Code/Source/Components/EditorWhiteBoxColliderComponent.cpp +++ b/Gems/WhiteBox/Code/Source/Components/EditorWhiteBoxColliderComponent.cpp @@ -180,11 +180,11 @@ namespace WhiteBox // fill vertex position array size_t index = 0; const auto faceHandles = Api::MeshFaceHandles(whiteBox); - for (const auto faceHandle : faceHandles) + for (const auto& faceHandle : faceHandles) { const auto faceHalfedgeHandles = Api::FaceHalfedgeHandles(whiteBox, faceHandle); - for (const auto halfEdgeHandle : faceHalfedgeHandles) + for (const auto& halfEdgeHandle : faceHalfedgeHandles) { const auto vh = Api::HalfedgeVertexHandleAtTip(whiteBox, halfEdgeHandle); vertices[index] = Api::VertexPosition(whiteBox, vh); diff --git a/Gems/WhiteBox/Code/Source/Core/WhiteBoxToolApi.cpp b/Gems/WhiteBox/Code/Source/Core/WhiteBoxToolApi.cpp index afba511603..8d5078dacd 100644 --- a/Gems/WhiteBox/Code/Source/Core/WhiteBoxToolApi.cpp +++ b/Gems/WhiteBox/Code/Source/Core/WhiteBoxToolApi.cpp @@ -426,10 +426,6 @@ namespace WhiteBox Mesh::TexCoord2D(0.0f, 0.0f), }; - // indices related to halfedges - start iterating on first halfedge, pointing to - // vertex 0, then follow next to get vertex 2 and then 3 (anti-clockwise winding) - const int g_indices[] = {0, 1, 2, 0, 2, 3}; - // conversion functions between OpenMesh and AZ types // convert WhiteBox face handle to OpenMesh face handle @@ -600,7 +596,7 @@ namespace WhiteBox VertexHandles vertexHandles; vertexHandles.reserve(whiteBox.mesh.n_vertices()); - for (const auto vertexHandle : whiteBox.mesh.vertices()) + for (const auto& vertexHandle : whiteBox.mesh.vertices()) { vertexHandles.push_back(wb_vh(vertexHandle)); } @@ -614,7 +610,7 @@ namespace WhiteBox FaceHandles faceHandles; faceHandles.reserve(whiteBox.mesh.n_faces()); - for (const auto faceHandle : whiteBox.mesh.faces()) + for (const auto& faceHandle : whiteBox.mesh.faces()) { faceHandles.push_back(wb_fh(faceHandle)); } @@ -660,7 +656,7 @@ namespace WhiteBox EdgeHandles orderedEdgeHandles; orderedEdgeHandles.reserve(halfedgeHandles.size()); - for (const auto halfedgeHandle : halfedgeHandles) + for (const auto& halfedgeHandle : halfedgeHandles) { orderedEdgeHandles.push_back(HalfedgeEdgeHandle(whiteBox, halfedgeHandle)); } @@ -712,7 +708,7 @@ namespace WhiteBox EdgeHandles edgeHandles; edgeHandles.reserve(whiteBox.mesh.n_edges()); - for (const auto edgeHandle : whiteBox.mesh.edges()) + for (const auto& edgeHandle : whiteBox.mesh.edges()) { edgeHandles.push_back(wb_eh(edgeHandle)); } @@ -771,7 +767,7 @@ namespace WhiteBox EdgeHandles edgeHandles; edgeHandles.reserve(3); - for (const auto halfedgeHandle : FaceHalfedgeHandles(whiteBox, faceHandle)) + for (const auto& halfedgeHandle : FaceHalfedgeHandles(whiteBox, faceHandle)) { edgeHandles.push_back(HalfedgeEdgeHandle(whiteBox, halfedgeHandle)); } @@ -789,7 +785,7 @@ namespace WhiteBox VertexHandles vertexHandles; vertexHandles.reserve(3); - for (const auto halfedgeHandle : FaceHalfedgeHandles(whiteBox, faceHandle)) + for (const auto& halfedgeHandle : FaceHalfedgeHandles(whiteBox, faceHandle)) { vertexHandles.emplace_back(HalfedgeVertexHandleAtTip(whiteBox, halfedgeHandle)); } @@ -809,7 +805,7 @@ namespace WhiteBox AZStd::vector triangles; triangles.reserve(faceHandles.size() * 3); - for (const auto faceHandle : faceHandles) + for (const auto& faceHandle : faceHandles) { const auto corners = FaceVertexPositions(whiteBox, faceHandle); triangles.insert(triangles.end(), corners.begin(), corners.end()); @@ -953,7 +949,7 @@ namespace WhiteBox // all halfedges for a given face const auto halfedges = FaceHalfedgeHandles(whiteBox, faceHandle); - for (const HalfedgeHandle halfedgeHandle : halfedges) + for (const HalfedgeHandle& halfedgeHandle : halfedges) { const FaceHandle oppositeFaceHandle = OppositeFaceHandle(whiteBox, halfedgeHandle); @@ -983,15 +979,15 @@ namespace WhiteBox // build all possible halfedge handles HalfedgeHandles halfedgeHandles; - for (const auto faceHandle : faceHandles) + for (const auto& faceHandle : faceHandles) { // find all vertices for a given face const auto vertexHandles = FaceVertexHandles(whiteBox, faceHandle); - for (const auto vertexHandle : vertexHandles) + for (const auto& vertexHandle : vertexHandles) { // find all outgoing halfedges from vertex const auto outgoingHalfedgeHandles = VertexOutgoingHalfedgeHandles(whiteBox, vertexHandle); - for (const auto halfedgeHandle : outgoingHalfedgeHandles) + for (const auto& halfedgeHandle : outgoingHalfedgeHandles) { // find what face corresponds to this halfedge const FaceHandle halfedgeFaceHandle = HalfedgeFaceHandle(whiteBox, halfedgeHandle); @@ -1098,7 +1094,7 @@ namespace WhiteBox VertexHandles orderedVertexHandles; orderedVertexHandles.reserve(halfedgeHandles.size()); - for (const auto halfedgeHandle : halfedgeHandles) + for (const auto& halfedgeHandle : halfedgeHandles) { orderedVertexHandles.push_back(HalfedgeVertexHandleAtTip(whiteBox, halfedgeHandle)); } @@ -1121,10 +1117,10 @@ namespace WhiteBox AZ_PROFILE_FUNCTION(AzToolsFramework); VertexHandles vertexHandles; - for (const FaceHandle faceHandle : faceHandles) + for (const FaceHandle& faceHandle : faceHandles) { const auto faceVertexHandles = FaceVertexHandles(whiteBox, faceHandle); - for (const VertexHandle faceVertexHandle : faceVertexHandles) + for (const VertexHandle& faceVertexHandle : faceVertexHandles) { const auto* const vertexIt = AZStd::find(vertexHandles.cbegin(), vertexHandles.cend(), faceVertexHandle); @@ -1318,10 +1314,10 @@ namespace WhiteBox visitedVertexHandles.push_back(vertexHandle); // for all connected vertex handles to this edge - for (const auto vertexEdgeHandle : VertexEdgeHandles(whiteBox, vertexHandle)) + for (const auto& vertexEdgeHandle : VertexEdgeHandles(whiteBox, vertexHandle)) { // check all halfedges in the edge - for (const auto halfedgeHandle : EdgeHalfedgeHandles(whiteBox, vertexEdgeHandle)) + for (const auto& halfedgeHandle : EdgeHalfedgeHandles(whiteBox, vertexEdgeHandle)) { // only track the edge if it's a 'user' edge (selectable - not a 'mesh' edge) if (!EdgeIsUser(whiteBox, halfedgeHandle, vertexEdgeHandle)) @@ -1339,7 +1335,7 @@ namespace WhiteBox // store the edge to the grouping edgeGrouping.push_back(vertexEdgeHandle); - for (const auto nextVertexHandle : Api::EdgeVertexHandles(whiteBox, vertexEdgeHandle)) + for (const auto& nextVertexHandle : Api::EdgeVertexHandles(whiteBox, vertexEdgeHandle)) { // if we haven't seen this vertex yet, add it to // the vertex handles to explore @@ -1978,7 +1974,7 @@ namespace WhiteBox Faces faces; faces.reserve(MeshFaceCount(whiteBox)); - for (const auto faceHandle : MeshFaceHandles(whiteBox)) + for (const auto& faceHandle : MeshFaceHandles(whiteBox)) { const auto halfEdgeHandles = FaceHalfedgeHandles(whiteBox, faceHandle); @@ -2002,14 +1998,13 @@ namespace WhiteBox AZ_PROFILE_FUNCTION(AzToolsFramework); auto& mesh = whiteBox.mesh; - for (const auto faceHandle : faceHandles) + for (const auto& faceHandle : faceHandles) { for (Mesh::ConstFaceHalfedgeCCWIter faceHalfedgeIt = mesh.fh_ccwiter(om_fh(faceHandle)); faceHalfedgeIt.is_valid(); ++faceHalfedgeIt) { const Mesh::HalfedgeHandle heh = *faceHalfedgeIt; const Mesh::VertexHandle vh = mesh.to_vertex_handle(heh); - const Mesh::FaceHandle fh = mesh.face_handle(heh); const AZ::Vector3 position = mesh.point(vh); const AZ::Vector3 normal = FaceNormal(whiteBox, faceHandle); @@ -2064,7 +2059,7 @@ namespace WhiteBox polygonHandle.m_faceHandles.push_back(faceHandleToVisit); // for all halfedges - for (const auto faceHalfedgeHandle : faceHalfedges) + for (const auto& faceHalfedgeHandle : faceHalfedges) { const EdgeHandle edgeHandle = HalfedgeEdgeHandle(whiteBox, faceHalfedgeHandle); // if we haven't seen this halfedge before and we want to track it, @@ -2092,10 +2087,10 @@ namespace WhiteBox static void PopulatePolygonProps(FaceHandlePolygonMapping& polygonProps, const FaceHandles& faceHandles) { - for (const auto faceHandle : faceHandles) + for (const auto& faceHandle : faceHandles) { auto polygonIt = polygonProps.find(om_fh(faceHandle)); - for (const auto innerFaceHandle : faceHandles) + for (const auto& innerFaceHandle : faceHandles) { polygonIt->second.push_back(om_fh(innerFaceHandle)); } @@ -2104,7 +2099,7 @@ namespace WhiteBox static void ClearPolygonProps(FaceHandlePolygonMapping& polygonProps, const FaceHandles& faceHandles) { - for (const auto faceHandle : faceHandles) + for (const auto& faceHandle : faceHandles) { if (auto polygonIt = polygonProps.find(om_fh(faceHandle)); polygonIt != polygonProps.end()) { @@ -2116,9 +2111,9 @@ namespace WhiteBox // restore all vertices along the restored edges (after creating a new polygon) static void RestoreVertexHandlesForEdges(WhiteBoxMesh& whiteBox, const EdgeHandles& restoredEdgeHandles) { - for (const auto edgeHandle : restoredEdgeHandles) + for (const auto& edgeHandle : restoredEdgeHandles) { - for (const auto vertexHandle : EdgeVertexHandles(whiteBox, edgeHandle)) + for (const auto& vertexHandle : EdgeVertexHandles(whiteBox, edgeHandle)) { RestoreVertex(whiteBox, vertexHandle); } @@ -2280,19 +2275,19 @@ namespace WhiteBox auto& polygonProps = whiteBox.mesh.property(polygonPropsHandle); // update all face handles to refer to the new face handles in the group - for (const auto faceHandle : combinedFaceHandles) + for (const auto& faceHandle : combinedFaceHandles) { auto polygonIt = polygonProps.find(om_fh(faceHandle)); polygonIt->second.clear(); - for (const auto innerFaceHandle : combinedFaceHandles) + for (const auto& innerFaceHandle : combinedFaceHandles) { polygonIt->second.push_back(om_fh(innerFaceHandle)); } } // hide any vertices that are not connected to a 'user' edge - for (const auto vertexHandle : firstPolygonVertexHandles) + for (const auto& vertexHandle : firstPolygonVertexHandles) { if (VertexIsIsolated(whiteBox, vertexHandle)) { @@ -2339,7 +2334,7 @@ namespace WhiteBox omFaceHandles.erase(AZStd::unique(omFaceHandles.begin(), omFaceHandles.end()), omFaceHandles.end()); // update all face handles to point to the new polygon grouping - for (const auto omFaceHandle2 : omFaceHandles) + for (const auto& omFaceHandle2 : omFaceHandles) { polygonProps[omFaceHandle2] = omFaceHandles; } @@ -2413,7 +2408,7 @@ namespace WhiteBox omExistingPolygonHandle.push_back(om_fh(newFaceHandle)); // update all face handles to point to the new polygon grouping - for (const Mesh::FaceHandle faceHandle : omExistingPolygonHandle) + for (const Mesh::FaceHandle& faceHandle : omExistingPolygonHandle) { polygonProps[faceHandle] = omExistingPolygonHandle; } @@ -2510,7 +2505,7 @@ namespace WhiteBox auto& polygonProps = whiteBox.mesh.property(polygonPropsHandle); // multiple face handles map to a polygon handle - for (const auto faceHandle : polygon) + for (const auto& faceHandle : polygon) { polygonProps[faceHandle] = polygon; } @@ -2658,7 +2653,7 @@ namespace WhiteBox { AZ_PROFILE_FUNCTION(AzToolsFramework); - for (const Mesh::FaceHandle faceHandle : whiteBox.mesh.faces()) + for (const Mesh::FaceHandle& faceHandle : whiteBox.mesh.faces()) { for (Mesh::FaceHalfedgeCCWIter faceHalfedgeIt = whiteBox.mesh.fh_ccwiter(faceHandle); faceHalfedgeIt.is_valid(); ++faceHalfedgeIt) @@ -2705,7 +2700,7 @@ namespace WhiteBox AZ_PROFILE_FUNCTION(AzToolsFramework); AzToolsFramework::MidpointCalculator midpointCalculator; - for (const auto vertexHandle : vertexHandles) + for (const auto& vertexHandle : vertexHandles) { midpointCalculator.AddPosition(VertexPosition(whiteBox, vertexHandle)); } @@ -2723,7 +2718,7 @@ namespace WhiteBox const auto adjacentPolygonEdgeHandles = PolygonBorderEdgeHandlesFlattened(whiteBox, adjacentPolygonHandle); // iterate over all halfedges in the adjacent polygon - for (const auto edgeHandle : adjacentPolygonEdgeHandles) + for (const auto& edgeHandle : adjacentPolygonEdgeHandles) { const auto* const foundEdgeHandleInSelectedPolygon = AZStd::find(selectedPolygonEdgeHandles.cbegin(), selectedPolygonEdgeHandles.cend(), edgeHandle); @@ -2732,7 +2727,7 @@ namespace WhiteBox if (foundEdgeHandleInSelectedPolygon == selectedPolygonEdgeHandles.cend()) { // find outgoing edge handles - for (const auto halfedgeHandle : + for (const auto& halfedgeHandle : VertexOutgoingHalfedgeHandles(whiteBox, vertexHandlePair.m_existing)) { // attempt to find one of the outgoing halfedge handles in the adjacent polygon @@ -2793,7 +2788,7 @@ namespace WhiteBox FaceVertHandlesCollection& vertsForLinkingAdjacentPolygons) { // find all faces connected to this edge - for (const auto faceHandle : EdgeFaceHandles(whiteBox, edgeHandle)) + for (const auto& faceHandle : EdgeFaceHandles(whiteBox, edgeHandle)) { // find a face that is _not_ part of the polygon being appended/selected if (AZStd::find( @@ -2934,7 +2929,7 @@ namespace WhiteBox // erase face handles from the polygon map and // delete the faces from OpenMesh - for (const auto faceHandle : faceHandles) + for (const auto& faceHandle : faceHandles) { polygonProps.erase(om_fh(faceHandle)); whiteBox.mesh.delete_face(om_fh(faceHandle), false); @@ -2975,10 +2970,9 @@ namespace WhiteBox using ModifiedFaceHandle = AZStd::pair; using ModifiedFaceHandles = AZStd::vector; - // find all face handles that no longer match (where garbage_collect has invalidated the handles) - const ModifiedFaceHandles modifiedFaceHandles = std::transform_reduce( - faceHandlesCopy.cbegin(), faceHandlesCopy.cend(), faceHandlePtrs.cbegin(), ModifiedFaceHandles{}, - // reduce + const ModifiedFaceHandles modifiedFaceHandles = AZStd::inner_product( + faceHandlesCopy.begin(), faceHandlesCopy.end(), faceHandlePtrs.begin(), ModifiedFaceHandles{}, + //reduce [](ModifiedFaceHandles modifiedFaceHandles, const ModifiedFaceHandle& fh) { if (fh.first.is_valid()) @@ -2988,7 +2982,7 @@ namespace WhiteBox return modifiedFaceHandles; }, - // transform + //transform [](const Mesh::FaceHandle lhs, const Mesh::FaceHandle* rhs) { // if any of the faceHandlePtrs differ, we know the handles @@ -3030,14 +3024,14 @@ namespace WhiteBox faces.reserve(existingFaces.size()); // for each face - for (const FaceHandle faceHandle : existingFaces) + for (const FaceHandle& faceHandle : existingFaces) { VertexHandles vertexHandlesForFace; vertexHandlesForFace.reserve(3); const auto vertexHandles = FaceVertexHandles(whiteBox, faceHandle); // for each vertex handle - for (const VertexHandle vertexHandle : vertexHandles) + for (const VertexHandle& vertexHandle : vertexHandles) { // find vertex handle in vertices list const auto* const vertexHandlePairIt = AZStd::find_if( @@ -3092,11 +3086,11 @@ namespace WhiteBox Internal::AppendedVerts appendedVerts; appendedVerts.m_vertexHandlePairs.reserve(existingVertexHandles.size()); - for (const VertexHandle existingVertexHandle : existingVertexHandles) + for (const VertexHandle& existingVertexHandle : existingVertexHandles) { bool vertexHandleAdded = false; // visit all connected halfedge handles - for (const auto halfedgeHandle : VertexHalfedgeHandles(whiteBox, existingVertexHandle)) + for (const auto& halfedgeHandle : VertexHalfedgeHandles(whiteBox, existingVertexHandle)) { const auto edgeHandle = HalfedgeEdgeHandle(whiteBox, halfedgeHandle); const bool boundaryEdge = EdgeIsBoundary(whiteBox, edgeHandle); @@ -3372,7 +3366,7 @@ namespace WhiteBox AZ_PROFILE_FUNCTION(AzToolsFramework); const AZ::Transform polygonSpace = PolygonSpace(whiteBox, polygonHandle, pivot); - for (const auto vertexHandle : PolygonVertexHandles(whiteBox, polygonHandle)) + for (const auto& vertexHandle : PolygonVertexHandles(whiteBox, polygonHandle)) { SetVertexPosition( whiteBox, vertexHandle, diff --git a/Gems/WhiteBox/Code/Source/EditorWhiteBoxComponent.cpp b/Gems/WhiteBox/Code/Source/EditorWhiteBoxComponent.cpp index ee0052d5b9..5c6fa73bb2 100644 --- a/Gems/WhiteBox/Code/Source/EditorWhiteBoxComponent.cpp +++ b/Gems/WhiteBox/Code/Source/EditorWhiteBoxComponent.cpp @@ -92,7 +92,7 @@ namespace WhiteBox }; const auto faceHandles = Api::MeshFaceHandles(whiteBox); - for (const auto faceHandle : faceHandles) + for (const auto& faceHandle : faceHandles) { faceData.push_back(createWhiteBoxFaceFromHandle(faceHandle)); } @@ -817,7 +817,7 @@ namespace WhiteBox debugDisplay.DepthTestOn(); - for (const auto faceHandle : Api::MeshFaceHandles(whiteBoxMesh)) + for (const auto& faceHandle : Api::MeshFaceHandles(whiteBoxMesh)) { const auto faceHalfedgeHandles = Api::FaceHalfedgeHandles(whiteBoxMesh, faceHandle); @@ -832,7 +832,7 @@ namespace WhiteBox }) / 3.0f; - for (const auto halfedgeHandle : faceHalfedgeHandles) + for (const auto& halfedgeHandle : faceHalfedgeHandles) { const Api::VertexHandle vertexHandleAtTip = Api::HalfedgeVertexHandleAtTip(whiteBoxMesh, halfedgeHandle); @@ -887,7 +887,7 @@ namespace WhiteBox if (cl_whiteBoxDebugEdgeHandles) { - for (const auto edgeHandle : Api::MeshEdgeHandles(whiteBoxMesh)) + for (const auto& edgeHandle : Api::MeshEdgeHandles(whiteBoxMesh)) { const AZ::Vector3 localEdgeMidpoint = Api::EdgeMidpoint(whiteBoxMesh, edgeHandle); const AZ::Vector3 worldEdgeMidpoint = worldFromLocal.TransformPoint(localEdgeMidpoint); diff --git a/Gems/WhiteBox/Code/Source/EditorWhiteBoxComponentMode.cpp b/Gems/WhiteBox/Code/Source/EditorWhiteBoxComponentMode.cpp index 4bca7a9c96..de0fdf4cf9 100644 --- a/Gems/WhiteBox/Code/Source/EditorWhiteBoxComponentMode.cpp +++ b/Gems/WhiteBox/Code/Source/EditorWhiteBoxComponentMode.cpp @@ -25,8 +25,6 @@ namespace WhiteBox { AZ_CLASS_ALLOCATOR_IMPL(EditorWhiteBoxComponentMode, AZ::SystemAllocator, 0) - static const int DefaultWidgetBottomMargin = 5; - // helper function to return what modifier keys move us to restore mode static bool RestoreModifier(AzToolsFramework::ViewportInteraction::KeyboardModifiers modifiers) { @@ -410,7 +408,7 @@ namespace WhiteBox }(); // all edges that are valid to interact with at this time - for (const auto edgeHandle : edgeHandles) + for (const auto& edgeHandle : edgeHandles) { const auto edge = Api::EdgeVertexPositions(*whiteBox, edgeHandle); m_intersectionAndRenderData->m_whiteBoxIntersectionData.m_edgeBounds.emplace_back( @@ -418,14 +416,14 @@ namespace WhiteBox } // handle drawing 'user' and 'mesh' edges slightly differently - for (const auto edgeHandle : edgeHandlesPair.m_user) + for (const auto& edgeHandle : edgeHandlesPair.m_user) { const auto edge = Api::EdgeVertexPositions(*whiteBox, edgeHandle); m_intersectionAndRenderData->m_whiteBoxEdgeRenderData.m_bounds.m_user.emplace_back( EdgeBoundWithHandle{EdgeBound{edge[0], edge[1], cl_whiteBoxEdgeSelectionWidth}, edgeHandle}); } - for (const auto edgeHandle : edgeHandlesPair.m_mesh) + for (const auto& edgeHandle : edgeHandlesPair.m_mesh) { const auto edge = Api::EdgeVertexPositions(*whiteBox, edgeHandle); m_intersectionAndRenderData->m_whiteBoxEdgeRenderData.m_bounds.m_mesh.emplace_back( diff --git a/Gems/WhiteBox/Code/Source/Platform/Linux/PAL_linux.cmake b/Gems/WhiteBox/Code/Source/Platform/Linux/PAL_linux.cmake index 3927f19061..13b045e67a 100644 --- a/Gems/WhiteBox/Code/Source/Platform/Linux/PAL_linux.cmake +++ b/Gems/WhiteBox/Code/Source/Platform/Linux/PAL_linux.cmake @@ -6,4 +6,4 @@ # # -set(PAL_TRAIT_WHITEBOX_SUPPORTED FALSE) +set(PAL_TRAIT_WHITEBOX_SUPPORTED TRUE) diff --git a/Gems/WhiteBox/Code/Source/Rendering/Atom/WhiteBoxBuffer.h b/Gems/WhiteBox/Code/Source/Rendering/Atom/WhiteBoxBuffer.h index a96ccd98be..671e2f290d 100644 --- a/Gems/WhiteBox/Code/Source/Rendering/Atom/WhiteBoxBuffer.h +++ b/Gems/WhiteBox/Code/Source/Rendering/Atom/WhiteBoxBuffer.h @@ -10,6 +10,7 @@ #include "PackedFloat2.h" +#include #include #include #include diff --git a/Gems/WhiteBox/Code/Source/SubComponentModes/EditorWhiteBoxEdgeRestoreMode.cpp b/Gems/WhiteBox/Code/Source/SubComponentModes/EditorWhiteBoxEdgeRestoreMode.cpp index fee23811a8..977b725b84 100644 --- a/Gems/WhiteBox/Code/Source/SubComponentModes/EditorWhiteBoxEdgeRestoreMode.cpp +++ b/Gems/WhiteBox/Code/Source/SubComponentModes/EditorWhiteBoxEdgeRestoreMode.cpp @@ -155,7 +155,7 @@ namespace WhiteBox // special handling for edges in the process of being restored - an edge may be clicked // and remain 'orphaned' from a polygon until another connection (loop) can be made. - for (const Api::EdgeHandle edgeHandleRestore : m_edgeHandlesBeingRestored) + for (const Api::EdgeHandle& edgeHandleRestore : m_edgeHandlesBeingRestored) { if (AZStd::any_of( interactiveEdgeHandles.begin(), interactiveEdgeHandles.end(), diff --git a/Gems/WhiteBox/Code/Source/Viewport/WhiteBoxEdgeTranslationModifier.cpp b/Gems/WhiteBox/Code/Source/Viewport/WhiteBoxEdgeTranslationModifier.cpp index fb9d790111..2ce8bd4764 100644 --- a/Gems/WhiteBox/Code/Source/Viewport/WhiteBoxEdgeTranslationModifier.cpp +++ b/Gems/WhiteBox/Code/Source/Viewport/WhiteBoxEdgeTranslationModifier.cpp @@ -14,7 +14,8 @@ #include "Viewport/WhiteBoxViewportConstants.h" #include "WhiteBoxEdgeTranslationModifier.h" #include "WhiteBoxManipulatorViews.h" - +#include +#include #include #include #include @@ -65,19 +66,17 @@ namespace WhiteBox // (ensure to remove duplicates as vertices will be shared across edges) static Api::VertexHandles VertexHandlesForEdges(const WhiteBoxMesh& whiteBox, const Api::EdgeHandles& edgeHandles) { - auto vertexHandles = std::reduce( + Api::VertexHandles vertexHandles = AZStd::accumulate( edgeHandles.cbegin(), edgeHandles.cend(), Api::VertexHandles{}, - [&whiteBox](Api::VertexHandles vertexHandles, const Api::EdgeHandle edgeHandle) + [&whiteBox](Api::VertexHandles vertexHandles, const Api::EdgeHandle edgeHandle) { const auto edgeVertexHandles = Api::EdgeVertexHandles(whiteBox, edgeHandle); - vertexHandles.push_back(edgeVertexHandles[0]); - vertexHandles.push_back(edgeVertexHandles[1]); + vertexHandles.insert(vertexHandles.end(), edgeVertexHandles.begin(), edgeVertexHandles.end()); return vertexHandles; }); - - std::sort(vertexHandles.begin(), vertexHandles.end()); - vertexHandles.erase(std::unique(vertexHandles.begin(), vertexHandles.end()), vertexHandles.end()); - + + AZStd::sort(vertexHandles.begin(), vertexHandles.end()); + vertexHandles.erase(AZStd::unique(vertexHandles.begin(), vertexHandles.end()), vertexHandles.end()); return vertexHandles; } @@ -208,7 +207,7 @@ namespace WhiteBox const AZ::Vector3 displacement = position - sharedState->m_prevPosition; // have to make sure we don't move verts more than once - for (const auto vertexHandle : VertexHandlesForEdges(*whiteBox, m_edgeHandles)) + for (const auto& vertexHandle : VertexHandlesForEdges(*whiteBox, m_edgeHandles)) { SetVertexPosition( *whiteBox, vertexHandle, VertexPosition(*whiteBox, vertexHandle) + displacement); diff --git a/Gems/WhiteBox/Code/Source/Viewport/WhiteBoxPolygonTranslationModifier.cpp b/Gems/WhiteBox/Code/Source/Viewport/WhiteBoxPolygonTranslationModifier.cpp index c4e106cba0..3e166e9d72 100644 --- a/Gems/WhiteBox/Code/Source/Viewport/WhiteBoxPolygonTranslationModifier.cpp +++ b/Gems/WhiteBox/Code/Source/Viewport/WhiteBoxPolygonTranslationModifier.cpp @@ -169,7 +169,7 @@ namespace WhiteBox sharedState->m_appendStage == AppendStage::Complete) { size_t vertexIndex = 0; - for (const Api::VertexHandle vertexHandle : m_vertexHandles) + for (const Api::VertexHandle& vertexHandle : m_vertexHandles) { const AZ::Vector3 vertexPosition = sharedState->m_vertexPositions[vertexIndex++] + action.LocalPositionOffset() - sharedState->m_activeAppendOffset; diff --git a/Gems/WhiteBox/Code/Source/Viewport/WhiteBoxVertexTranslationModifier.cpp b/Gems/WhiteBox/Code/Source/Viewport/WhiteBoxVertexTranslationModifier.cpp index daa81c9aa3..c4613e24c7 100644 --- a/Gems/WhiteBox/Code/Source/Viewport/WhiteBoxVertexTranslationModifier.cpp +++ b/Gems/WhiteBox/Code/Source/Viewport/WhiteBoxVertexTranslationModifier.cpp @@ -148,7 +148,7 @@ namespace WhiteBox m_localPositionAtMouseDown = m_translationManipulator->GetLocalPosition(); - for (const auto edgeHandle : Api::VertexUserEdgeHandles(*whiteBox, m_vertexHandle)) + for (const auto& edgeHandle : Api::VertexUserEdgeHandles(*whiteBox, m_vertexHandle)) { const auto edgeVertexPositions = Api::EdgeVertexPositions(*whiteBox, edgeHandle); sharedState->m_edgeBeginEnds.push_back( diff --git a/Gems/WhiteBox/Code/Tests/WhiteBoxTest.cpp b/Gems/WhiteBox/Code/Tests/WhiteBoxTest.cpp index 056c85512f..aa5d4645ae 100644 --- a/Gems/WhiteBox/Code/Tests/WhiteBoxTest.cpp +++ b/Gems/WhiteBox/Code/Tests/WhiteBoxTest.cpp @@ -563,7 +563,7 @@ namespace UnitTest const auto polygonHandle = Api::InitializeAsUnitQuad(*m_whiteBox); const auto edgeHandles = Api::PolygonBorderEdgeHandlesFlattened(*m_whiteBox, polygonHandle); - for (const auto edgeHandle : edgeHandles) + for (const auto& edgeHandle : edgeHandles) { // when const auto tail = Api::HalfedgeVertexPositionAtTail( @@ -702,7 +702,7 @@ namespace UnitTest // given const auto edgeHandles = Api::MeshEdgeHandles(*m_whiteBox); - for (const auto edgeHandle : edgeHandles) + for (const auto& edgeHandle : edgeHandles) { const auto firstHalfedgeHandle = Api::EdgeHalfedgeHandle(*m_whiteBox, edgeHandle, Api::EdgeHalfedge::First); const auto secondHalfedgeHandle = @@ -992,7 +992,7 @@ namespace UnitTest const auto polygonHandles = Api::InitializeAsUnitCube(*m_whiteBox); // hide all 'logical'/'visible' edges (those that define the bounds of a polygon) - for (const auto edgeHandle : + for (const auto& edgeHandle : {Api::EdgeHandle{1}, Api::EdgeHandle{3}, Api::EdgeHandle{4}, Api::EdgeHandle{0}, Api::EdgeHandle{6}}) { Api::HideEdge(*m_whiteBox, edgeHandle); @@ -1024,7 +1024,7 @@ namespace UnitTest *m_whiteBox, Api::PolygonHandle{Api::FaceHandles{{Api::FaceHandle{4}, Api::FaceHandle{5}}}}, -0.25f); // hide all 'logical'/'visible' edges for scale appended face - for (const auto edgeHandle : {Api::EdgeHandle{25}, Api::EdgeHandle{27}, Api::EdgeHandle{24}}) + for (const auto& edgeHandle : {Api::EdgeHandle{25}, Api::EdgeHandle{27}, Api::EdgeHandle{24}}) { Api::HideEdge(*m_whiteBox, edgeHandle); } @@ -1065,7 +1065,7 @@ namespace UnitTest Api::InitializeAsUnitCube(*m_whiteBox); // hide all vertical 'logical'/'visible' edges - for (const auto edgeHandle : {Api::EdgeHandle{13}, Api::EdgeHandle{15}, Api::EdgeHandle{12}}) + for (const auto& edgeHandle : {Api::EdgeHandle{13}, Api::EdgeHandle{15}, Api::EdgeHandle{12}}) { Api::HideEdge(*m_whiteBox, edgeHandle); } @@ -1138,7 +1138,7 @@ namespace UnitTest int restoreCount = 0; Api::EdgeHandles restoringEdgeHandles; // inout param AZStd::optional> splitPolygons; - for (const Api::EdgeHandle edgeHandleToRestore : edgeHandlesToRestore) + for (const Api::EdgeHandle& edgeHandleToRestore : edgeHandlesToRestore) { splitPolygons = Api::RestoreEdge(*m_whiteBox, edgeHandleToRestore, restoringEdgeHandles); restoreCount++; @@ -1792,14 +1792,14 @@ namespace UnitTest Api::InitializeAsUnitCube(*m_whiteBox); // hide all top vertices - for (const auto vertexHandle : + for (const auto& vertexHandle : {Api::VertexHandle{0}, Api::VertexHandle{1}, Api::VertexHandle{2}, Api::VertexHandle{3}}) { Api::HideVertex(*m_whiteBox, vertexHandle); } // hide all vertical edges - for (const auto edgeHandle : + for (const auto& edgeHandle : {Api::EdgeHandle{15}, Api::EdgeHandle{13}, Api::EdgeHandle{12}, Api::EdgeHandle{10}}) { Api::HideEdge(*m_whiteBox, edgeHandle); @@ -2116,7 +2116,7 @@ namespace UnitTest bool edgeRestored = false; Api::EdgeHandles restoringEdgeHandles; // inout param - for (const Api::EdgeHandle edgeHandleToRestore : edgeHandlesToRestore) + for (const Api::EdgeHandle& edgeHandleToRestore : edgeHandlesToRestore) { if (Api::RestoreEdge(*m_whiteBox, edgeHandleToRestore, restoringEdgeHandles)) { diff --git a/Gems/WhiteBox/Code/Tests/WhiteBoxTestRailsAutomation.cpp b/Gems/WhiteBox/Code/Tests/WhiteBoxTestRailsAutomation.cpp index 8db48ca0aa..c173f7b6a9 100644 --- a/Gems/WhiteBox/Code/Tests/WhiteBoxTestRailsAutomation.cpp +++ b/Gems/WhiteBox/Code/Tests/WhiteBoxTestRailsAutomation.cpp @@ -158,8 +158,6 @@ namespace UnitTest // the initial starting position of the entity (in front and to the left of the camera) const AZ::Transform initialEntityTransformWorld = AZ::Transform::CreateTranslation(AZ::Vector3(-10.0f, 10.0f, 0.0f)); - // world space delta we will be moving the polygon face - const auto worldTranslationDelta = AZ::Vector3::CreateAxisX(20.0f); // the face handle we will use to get the parent polygon from const int faceHandle = 7; // the polygon vertex handle we will be dragging diff --git a/Templates/CMakeLists.txt b/Templates/CMakeLists.txt index 9735907a6a..5f5d561a9f 100644 --- a/Templates/CMakeLists.txt +++ b/Templates/CMakeLists.txt @@ -14,5 +14,6 @@ ly_install_directory( DefaultGem DefaultProject MinimalProject + GemRepo VERBATIM ) diff --git a/Templates/DefaultProject/Template/cmake/CompilerSettings.cmake b/Templates/DefaultProject/Template/cmake/CompilerSettings.cmake index cf6614e4a5..60bda1d45b 100644 --- a/Templates/DefaultProject/Template/cmake/CompilerSettings.cmake +++ b/Templates/DefaultProject/Template/cmake/CompilerSettings.cmake @@ -9,5 +9,5 @@ # File to tweak compiler settings before compiler detection happens (before project() is called) # We dont have PAL enabled at this point, so we can only use pure-CMake variables if("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Linux") - include(cmake/Platform/${CMAKE_HOST_SYSTEM_NAME}/CompilerSettings.cmake) + include(cmake/Platform/Linux/CompilerSettings_linux.cmake) endif() diff --git a/Templates/DefaultProject/Template/cmake/EngineFinder.cmake b/Templates/DefaultProject/Template/cmake/EngineFinder.cmake index 98ad61bae8..15b96eb8a9 100644 --- a/Templates/DefaultProject/Template/cmake/EngineFinder.cmake +++ b/Templates/DefaultProject/Template/cmake/EngineFinder.cmake @@ -13,8 +13,8 @@ include_guard() # Read the engine name from the project_json file -file(READ ${CMAKE_CURRENT_LIST_DIR}/project.json project_json) -set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${CMAKE_CURRENT_LIST_DIR}/project.json) +file(READ ${CMAKE_CURRENT_SOURCE_DIR}/project.json project_json) +set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/project.json) string(JSON LY_ENGINE_NAME_TO_USE ERROR_VARIABLE json_error GET ${project_json} engine) if(json_error) diff --git a/Templates/MinimalProject/Template/cmake/Platform/Linux/CompilerSettings.cmake b/Templates/DefaultProject/Template/cmake/Platform/Linux/CompilerSettings_linux.cmake similarity index 100% rename from Templates/MinimalProject/Template/cmake/Platform/Linux/CompilerSettings.cmake rename to Templates/DefaultProject/Template/cmake/Platform/Linux/CompilerSettings_linux.cmake diff --git a/Templates/DefaultProject/template.json b/Templates/DefaultProject/template.json index a36926f632..fcffafcb34 100644 --- a/Templates/DefaultProject/template.json +++ b/Templates/DefaultProject/template.json @@ -193,8 +193,8 @@ "isOptional": false }, { - "file": "cmake/Platform/Linux/CompilerSettings.cmake", - "origin": "cmake/Platform/Linux/CompilerSettings.cmake", + "file": "cmake/Platform/Linux/CompilerSettings_linux.cmake", + "origin": "cmake/Platform/Linux/CompilerSettings_linux.cmake", "isTemplated": false, "isOptional": false }, diff --git a/Templates/GemRepo/Template/gem.json b/Templates/GemRepo/Template/gem.json new file mode 100644 index 0000000000..292681b2b5 --- /dev/null +++ b/Templates/GemRepo/Template/gem.json @@ -0,0 +1,19 @@ +{ + "gem_name": "${Name}Gem", + "display_name": "${Name}Gem", + "license": "What license ${Name}Gem uses goes here: i.e. Apache-2.0 Or MIT", + "license_url": "", + "origin": "The primary repo for ${Name}Gem goes here: i.e. http://www.mydomain.com", + "summary": "A short description of ${Name}Gem which is zipped up in an archive named gem.zip in the root of the Gem Repo. Though not required, it is recommended that the sha256 of the gem.zip file should be placed in the sha256 field of this gem.json so the download can be verified.", + "origin_uri": "${RepoURI}/gem.zip", + "sha256": "", + "type": "Code", + "canonical_tags": [ + "Gem" + ], + "user_tags": [ + "${Name}Gem" + ], + "icon_path": "preview.png", + "requirements": "" +} diff --git a/Templates/GemRepo/Template/repo.json b/Templates/GemRepo/Template/repo.json new file mode 100644 index 0000000000..2af1fcfd2a --- /dev/null +++ b/Templates/GemRepo/Template/repo.json @@ -0,0 +1,11 @@ +{ + "repo_name":"${Name}", + "origin":"Origin for the ${Name} Gem Repository", + "repo_uri": "${RepoURI}", + "summary": "A Gem Repository with a single Gem in the root of the repository.", + "additional_info": "Additional info for ${Name}", + "last_updated": "", + "gems": [ + "${RepoURI}" + ] +} diff --git a/Templates/GemRepo/preview.png b/Templates/GemRepo/preview.png new file mode 100644 index 0000000000..78a2a735d2 --- /dev/null +++ b/Templates/GemRepo/preview.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ae503ec99c8358991dc3c6e50737844d3602b81a49abbbed7d697d7238547c0 +size 28026 diff --git a/Templates/GemRepo/template.json b/Templates/GemRepo/template.json new file mode 100644 index 0000000000..88123a9dae --- /dev/null +++ b/Templates/GemRepo/template.json @@ -0,0 +1,27 @@ +{ + "template_name": "GemRepo", + "origin": "The primary repo for GemRepo goes here: i.e. http://www.mydomain.com", + "license": "What license GemRepo uses goes here: i.e. https://opensource.org/licenses/MIT", + "display_name": "GemRepo", + "summary": "A Gem Repository that contains a single Gem.", + "canonical_tags": [], + "user_tags": [ + "GemRepo" + ], + "icon_path": "preview.png", + "copyFiles": [ + { + "file": "gem.json", + "origin": "gem.json", + "isTemplated": true, + "isOptional": false + }, + { + "file": "repo.json", + "origin": "repo.json", + "isTemplated": true, + "isOptional": false + } + ], + "createDirectories": [] +} diff --git a/Templates/MinimalProject/Template/cmake/CompilerSettings.cmake b/Templates/MinimalProject/Template/cmake/CompilerSettings.cmake index cf6614e4a5..60bda1d45b 100644 --- a/Templates/MinimalProject/Template/cmake/CompilerSettings.cmake +++ b/Templates/MinimalProject/Template/cmake/CompilerSettings.cmake @@ -9,5 +9,5 @@ # File to tweak compiler settings before compiler detection happens (before project() is called) # We dont have PAL enabled at this point, so we can only use pure-CMake variables if("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Linux") - include(cmake/Platform/${CMAKE_HOST_SYSTEM_NAME}/CompilerSettings.cmake) + include(cmake/Platform/Linux/CompilerSettings_linux.cmake) endif() diff --git a/Templates/MinimalProject/Template/cmake/EngineFinder.cmake b/Templates/MinimalProject/Template/cmake/EngineFinder.cmake index 98ad61bae8..15b96eb8a9 100644 --- a/Templates/MinimalProject/Template/cmake/EngineFinder.cmake +++ b/Templates/MinimalProject/Template/cmake/EngineFinder.cmake @@ -13,8 +13,8 @@ include_guard() # Read the engine name from the project_json file -file(READ ${CMAKE_CURRENT_LIST_DIR}/project.json project_json) -set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${CMAKE_CURRENT_LIST_DIR}/project.json) +file(READ ${CMAKE_CURRENT_SOURCE_DIR}/project.json project_json) +set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/project.json) string(JSON LY_ENGINE_NAME_TO_USE ERROR_VARIABLE json_error GET ${project_json} engine) if(json_error) diff --git a/cmake/Platform/Linux/CompilerSettings.cmake b/Templates/MinimalProject/Template/cmake/Platform/Linux/CompilerSettings_linux.cmake similarity index 100% rename from cmake/Platform/Linux/CompilerSettings.cmake rename to Templates/MinimalProject/Template/cmake/Platform/Linux/CompilerSettings_linux.cmake diff --git a/Templates/MinimalProject/template.json b/Templates/MinimalProject/template.json index 4260e71527..7d6a4f9b94 100644 --- a/Templates/MinimalProject/template.json +++ b/Templates/MinimalProject/template.json @@ -185,8 +185,8 @@ "isOptional": false }, { - "file": "cmake/Platform/Linux/CompilerSettings.cmake", - "origin": "cmake/Platform/Linux/CompilerSettings.cmake", + "file": "cmake/Platform/Linux/CompilerSettings_linux.cmake", + "origin": "cmake/Platform/Linux/CompilerSettings_linux.cmake", "isTemplated": false, "isOptional": false }, diff --git a/Templates/PythonToolGem/Template/Code/CMakeLists.txt b/Templates/PythonToolGem/Template/Code/CMakeLists.txt index a6044e717b..b90f2d7703 100644 --- a/Templates/PythonToolGem/Template/Code/CMakeLists.txt +++ b/Templates/PythonToolGem/Template/Code/CMakeLists.txt @@ -53,6 +53,8 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS) BUILD_DEPENDENCIES PUBLIC Gem::${Name}.Editor.Static + RUNTIME_DEPENDENCIES + Gem::QtForPython.Editor ) # By default, we will specify that the above target ${Name} would be used by diff --git a/Templates/PythonToolGem/Template/Code/Source/${Name}EditorModule.cpp b/Templates/PythonToolGem/Template/Code/Source/${Name}EditorModule.cpp index 0027af011a..fdd971440e 100644 --- a/Templates/PythonToolGem/Template/Code/Source/${Name}EditorModule.cpp +++ b/Templates/PythonToolGem/Template/Code/Source/${Name}EditorModule.cpp @@ -10,6 +10,7 @@ #include <${Name}ModuleInterface.h> #include <${Name}EditorSystemComponent.h> +#include void Init${SanitizedCppName}Resources() { @@ -21,6 +22,7 @@ namespace ${SanitizedCppName} { class ${SanitizedCppName}EditorModule : public ${SanitizedCppName}ModuleInterface + , public AzToolsFramework::EmbeddedPython::PythonLoader { public: AZ_RTTI(${SanitizedCppName}EditorModule, "${ModuleClassId}", ${SanitizedCppName}ModuleInterface); diff --git a/Templates/PythonToolGem/Template/gem.json b/Templates/PythonToolGem/Template/gem.json index d4ff637bee..84f5b65a3e 100644 --- a/Templates/PythonToolGem/Template/gem.json +++ b/Templates/PythonToolGem/Template/gem.json @@ -13,5 +13,8 @@ "${Name}" ], "icon_path": "preview.png", - "requirements": "" + "requirements": "", + "dependencies": [ + "QtForPython" + ] } diff --git a/Tools/LyTestTools/ly_test_tools/_internal/managers/abstract_resource_locator.py b/Tools/LyTestTools/ly_test_tools/_internal/managers/abstract_resource_locator.py index fccc94bdcc..4ff71a5b31 100755 --- a/Tools/LyTestTools/ly_test_tools/_internal/managers/abstract_resource_locator.py +++ b/Tools/LyTestTools/ly_test_tools/_internal/managers/abstract_resource_locator.py @@ -378,7 +378,7 @@ class AbstractResourceLocator(object): def editor_log(self): """ Return path to the project's editor log dir using the builds project and platform - :return: path to editor.log + :return: path to Editor.log """ raise NotImplementedError( "editor_log() is not implemented on the base AbstractResourceLocator() class. " diff --git a/Tools/LyTestTools/ly_test_tools/_internal/managers/platforms/linux.py b/Tools/LyTestTools/ly_test_tools/_internal/managers/platforms/linux.py index fea60cc9cb..151a4a3e2b 100644 --- a/Tools/LyTestTools/ly_test_tools/_internal/managers/platforms/linux.py +++ b/Tools/LyTestTools/ly_test_tools/_internal/managers/platforms/linux.py @@ -49,9 +49,9 @@ class _LinuxResourceManager(AbstractResourceLocator): def editor_log(self): """ - :return: path to editor.log + :return: path to Editor.log """ - return os.path.join(self.project_log(), "editor.log") + return os.path.join(self.project_log(), "Editor.log") class LinuxWorkspaceManager(AbstractWorkspaceManager): diff --git a/Tools/LyTestTools/ly_test_tools/_internal/managers/platforms/mac.py b/Tools/LyTestTools/ly_test_tools/_internal/managers/platforms/mac.py index cc8f23f0e1..4a187b188c 100755 --- a/Tools/LyTestTools/ly_test_tools/_internal/managers/platforms/mac.py +++ b/Tools/LyTestTools/ly_test_tools/_internal/managers/platforms/mac.py @@ -58,9 +58,9 @@ class _MacResourceLocator(AbstractResourceLocator): def editor_log(self): """ Return path to the project's editor log dir using the builds project and platform - :return: path to editor.log + :return: path to Editor.log """ - return os.path.join(self.project_log(), "editor.log") + return os.path.join(self.project_log(), "Editor.log") class MacWorkspaceManager(AbstractWorkspaceManager): diff --git a/Tools/LyTestTools/ly_test_tools/_internal/managers/platforms/windows.py b/Tools/LyTestTools/ly_test_tools/_internal/managers/platforms/windows.py index 1fad15acce..29289166d4 100755 --- a/Tools/LyTestTools/ly_test_tools/_internal/managers/platforms/windows.py +++ b/Tools/LyTestTools/ly_test_tools/_internal/managers/platforms/windows.py @@ -64,9 +64,9 @@ class _WindowsResourceLocator(AbstractResourceLocator): def editor_log(self): """ Return path to the project's editor log dir using the builds project and platform - :return: path to editor.log + :return: path to Editor.log """ - return os.path.join(self.project_log(), "editor.log") + return os.path.join(self.project_log(), "Editor.log") class WindowsWorkspaceManager(AbstractWorkspaceManager): diff --git a/Tools/LyTestTools/ly_test_tools/environment/file_system.py b/Tools/LyTestTools/ly_test_tools/environment/file_system.py index d8ecd7d908..c67ecc5b23 100755 --- a/Tools/LyTestTools/ly_test_tools/environment/file_system.py +++ b/Tools/LyTestTools/ly_test_tools/environment/file_system.py @@ -219,7 +219,8 @@ def unlock_file(file_name): :return: True if unlock succeeded, else False """ if not os.access(file_name, os.W_OK): - os.chmod(file_name, stat.S_IWRITE) + file_stat = os.stat(file_name) + os.chmod(file_name, file_stat.st_mode | stat.S_IWRITE) logger.warning(f'Clearing write lock for file {file_name}.') return True else: @@ -235,7 +236,8 @@ def lock_file(file_name): :return: True if lock succeeded, else False """ if os.access(file_name, os.W_OK): - os.chmod(file_name, stat.S_IREAD) + file_stat = os.stat(file_name) + os.chmod(file_name, file_stat.st_mode & (~stat.S_IWRITE)) logger.warning(f'Write locking file {file_name}') return True else: diff --git a/Tools/LyTestTools/ly_test_tools/environment/process_utils.py b/Tools/LyTestTools/ly_test_tools/environment/process_utils.py index f8245495fa..44288203da 100755 --- a/Tools/LyTestTools/ly_test_tools/environment/process_utils.py +++ b/Tools/LyTestTools/ly_test_tools/environment/process_utils.py @@ -20,6 +20,7 @@ _PROCESS_OUTPUT_ENCODING = 'utf-8' # Default list of processes names to kill LY_PROCESS_KILL_LIST = [ + 'AssetBuilder', 'AssetProcessor', 'AssetProcessorBatch', 'CrySCompileServer', 'Editor', 'Profiler', 'RemoteConsole', 'rc' # Resource Compiler @@ -376,18 +377,18 @@ def _safe_kill_processes(processes): logger.info(f"Terminating process '{proc.name()}' with id '{proc.pid}'") proc.kill() except psutil.AccessDenied: - logger.warning("Termination failed, Access Denied", exc_info=True) + logger.warning("Termination failed, Access Denied with stacktrace:", exc_info=True) except psutil.NoSuchProcess: - logger.debug("Termination request ignored, process was already terminated during iteration", exc_info=True) + logger.debug("Termination request ignored, process was already terminated during iteration with stacktrace:", exc_info=True) except Exception: # purposefully broad - logger.warning("Unexpected exception ignored while terminating process", exc_info=True) + logger.debug("Unexpected exception ignored while terminating process, with stacktrace:", exc_info=True) def on_terminate(proc): logger.info(f"process '{proc.name()}' with id '{proc.pid}' terminated with exit code {proc.returncode}") try: psutil.wait_procs(processes, timeout=30, callback=on_terminate) except Exception: # purposefully broad - logger.warning("Unexpected exception while waiting for processes to terminate", exc_info=True) + logger.debug("Unexpected exception while waiting for processes to terminate, with stacktrace:", exc_info=True) def _terminate_and_confirm_dead(proc): diff --git a/Tools/LyTestTools/ly_test_tools/o3de/asset_processor.py b/Tools/LyTestTools/ly_test_tools/o3de/asset_processor.py index 9f8ee9649e..65319e05de 100644 --- a/Tools/LyTestTools/ly_test_tools/o3de/asset_processor.py +++ b/Tools/LyTestTools/ly_test_tools/o3de/asset_processor.py @@ -416,13 +416,8 @@ class AssetProcessor(object): self.restore_ap_settings() def process_exists(self): - try: - my_pid = self.get_pid() - if my_pid == -1: - return False - return psutil.pid_exists(my_pid) - except psutil.NoSuchProcess: - pass + if self._ap_proc: + return self._ap_proc.poll() is None return False def batch_process(self, timeout=DEFAULT_TIMEOUT_SECONDS, fastscan=True, capture_output=False, platforms=None, diff --git a/Tools/LyTestTools/ly_test_tools/o3de/editor_test_utils.py b/Tools/LyTestTools/ly_test_tools/o3de/editor_test_utils.py index 35fbe93d37..9f1e01342c 100644 --- a/Tools/LyTestTools/ly_test_tools/o3de/editor_test_utils.py +++ b/Tools/LyTestTools/ly_test_tools/o3de/editor_test_utils.py @@ -126,9 +126,9 @@ def retrieve_editor_log_content(run_id: int, log_name: str, workspace: AbstractW with open(editor_log) as f: editor_info = "" for line in f: - editor_info += f"[editor.log] {line}" + editor_info += f"[{log_name}] {line}" except Exception as ex: - editor_info = f"-- Error reading editor.log: {str(ex)} --" + editor_info = f"-- Error reading {log_name}: {str(ex)} --" return editor_info def retrieve_last_run_test_index_from_output(test_spec_list: list[EditorTestBase], output: str) -> int: diff --git a/Tools/LyTestTools/tests/unit/test_editor_test_utils.py b/Tools/LyTestTools/tests/unit/test_editor_test_utils.py index bf7fae7189..cd361d9e8a 100644 --- a/Tools/LyTestTools/tests/unit/test_editor_test_utils.py +++ b/Tools/LyTestTools/tests/unit/test_editor_test_utils.py @@ -74,9 +74,9 @@ class TestEditorTestUtils(unittest.TestCase): def test_RetrieveCrashOutput_CrashLogNotExists_ReturnsError(self, mock_retrieve_log_path): mock_retrieve_log_path.return_value = 'mock_log_path' mock_workspace = mock.MagicMock() - expected = "-- No crash log available --\n[Errno 2] No such file or directory: 'mock_log_path\\\\error.log'" + error_message = "No crash log available" - assert expected == editor_test_utils.retrieve_crash_output(0, mock_workspace, 0) + assert error_message in editor_test_utils.retrieve_crash_output(0, mock_workspace, 0) @mock.patch('os.path.getmtime', mock.MagicMock()) @mock.patch('os.rename') @@ -119,7 +119,7 @@ class TestEditorTestUtils(unittest.TestCase): mock_log = 'mock log info' with mock.patch('builtins.open', mock.mock_open(read_data=mock_log)) as mock_file: - assert f'[editor.log] {mock_log}' == editor_test_utils.retrieve_editor_log_content(0, mock_logname, mock_workspace) + assert f'[{mock_logname}] {mock_log}' == editor_test_utils.retrieve_editor_log_content(0, mock_logname, mock_workspace) @mock.patch('ly_test_tools.o3de.editor_test_utils.retrieve_log_path') @mock.patch('ly_test_tools.environment.waiter.wait_for', mock.MagicMock()) @@ -127,7 +127,7 @@ class TestEditorTestUtils(unittest.TestCase): mock_retrieve_log_path.return_value = 'mock_log_path' mock_logname = 'mock_log.log' mock_workspace = mock.MagicMock() - expected = f"-- Error reading editor.log" + expected = f"-- Error reading {mock_logname}" assert expected in editor_test_utils.retrieve_editor_log_content(0, mock_logname, mock_workspace) diff --git a/Tools/LyTestTools/tests/unit/test_file_system.py b/Tools/LyTestTools/tests/unit/test_file_system.py index 53ca5a700e..2ddd3f8934 100755 --- a/Tools/LyTestTools/tests/unit/test_file_system.py +++ b/Tools/LyTestTools/tests/unit/test_file_system.py @@ -8,6 +8,7 @@ SPDX-License-Identifier: Apache-2.0 OR MIT import errno import logging import os +import stat import psutil import subprocess import sys @@ -454,24 +455,33 @@ class TestChangePermissions(unittest.TestCase): self.assertEqual(file_system.change_permissions('.', 0o777), False) +class MockStatResult(): + def __init__(self, st_mode): + self.st_mode = st_mode + class TestUnlockFile(unittest.TestCase): def setUp(self): self.file_name = 'file' + @mock.patch('os.stat') @mock.patch('os.chmod') @mock.patch('os.access') - def test_UnlockFile_WriteLocked_UnlockFile(self, mock_access, mock_chmod): + def test_UnlockFile_WriteLocked_UnlockFile(self, mock_access, mock_chmod, mock_stat): mock_access.return_value = False + os.stat.return_value = MockStatResult(stat.S_IREAD) success = file_system.unlock_file(self.file_name) + mock_chmod.assert_called_once_with(self.file_name, stat.S_IREAD | stat.S_IWRITE) self.assertTrue(success) + @mock.patch('os.stat') @mock.patch('os.chmod') @mock.patch('os.access') - def test_UnlockFile_AlreadyUnlocked_LogAlreadyUnlocked(self, mock_access, mock_chmod): + def test_UnlockFile_AlreadyUnlocked_LogAlreadyUnlocked(self, mock_access, mock_chmod, mock_stat): mock_access.return_value = True + os.stat.return_value = MockStatResult(stat.S_IREAD | stat.S_IWRITE) success = file_system.unlock_file(self.file_name) @@ -483,19 +493,24 @@ class TestLockFile(unittest.TestCase): def setUp(self): self.file_name = 'file' + @mock.patch('os.stat') @mock.patch('os.chmod') @mock.patch('os.access') - def test_UnlockFile_UnlockedFile_FileLockedSuccessReturnsTrue(self, mock_access, mock_chmod): + def test_LockFile_UnlockedFile_FileLockedSuccessReturnsTrue(self, mock_access, mock_chmod, mock_stat): mock_access.return_value = True + os.stat.return_value = MockStatResult(stat.S_IREAD | stat.S_IWRITE) success = file_system.lock_file(self.file_name) + mock_chmod.assert_called_once_with(self.file_name, stat.S_IREAD) self.assertTrue(success) + @mock.patch('os.stat') @mock.patch('os.chmod') @mock.patch('os.access') - def test_UnlockFile_AlreadyLocked_FileLockedFailedReturnsFalse(self, mock_access, mock_chmod): + def test_LockFile_AlreadyLocked_FileLockedFailedReturnsFalse(self, mock_access, mock_chmod, mock_stat): mock_access.return_value = False + os.stat.return_value = MockStatResult(stat.S_IREAD) success = file_system.lock_file(self.file_name) diff --git a/Tools/LyTestTools/tests/unit/test_manager_platforms_mac.py b/Tools/LyTestTools/tests/unit/test_manager_platforms_mac.py index e91b810f9d..e195aa5796 100755 --- a/Tools/LyTestTools/tests/unit/test_manager_platforms_mac.py +++ b/Tools/LyTestTools/tests/unit/test_manager_platforms_mac.py @@ -76,7 +76,7 @@ class TestMacResourceLocator(object): mock_project) expected = os.path.join( mac_resource_locator.project_log(), - 'editor.log') + 'Editor.log') assert mac_resource_locator.editor_log() == expected diff --git a/Tools/LyTestTools/tests/unit/test_manager_platforms_windows.py b/Tools/LyTestTools/tests/unit/test_manager_platforms_windows.py index 7e30289da0..b7cc8edf40 100755 --- a/Tools/LyTestTools/tests/unit/test_manager_platforms_windows.py +++ b/Tools/LyTestTools/tests/unit/test_manager_platforms_windows.py @@ -80,7 +80,7 @@ class TestWindowsResourceLocator(object): mock_build_directory, mock_project) expected = os.path.join( windows_resource_locator.project_log(), - 'editor.log') + 'Editor.log') assert windows_resource_locator.editor_log() == expected diff --git a/Tools/LyTestTools/tests/unit/test_process_utils.py b/Tools/LyTestTools/tests/unit/test_process_utils.py index bd6a79fb09..87b5790b78 100755 --- a/Tools/LyTestTools/tests/unit/test_process_utils.py +++ b/Tools/LyTestTools/tests/unit/test_process_utils.py @@ -371,15 +371,15 @@ class TestProcessMatching(unittest.TestCase): mock_log_warn.assert_called() @mock.patch('psutil.wait_procs') - @mock.patch('logging.Logger.warning') - def test_SafeKillProcList_RaisesError_NoRaiseAndLogsError(self, mock_log_warn, mock_wait_procs): + @mock.patch('logging.Logger.debug') + def test_SafeKillProcList_RaisesError_NoRaiseAndLogsError(self, mock_log, mock_wait_procs): mock_wait_procs.side_effect = psutil.PermissionError() proc_mock = mock.MagicMock() process_utils._safe_kill_processes(proc_mock) mock_wait_procs.assert_called() - mock_log_warn.assert_called() + mock_log.assert_called() @mock.patch('psutil.process_iter') @mock.patch('logging.Logger.debug') diff --git a/cmake/3rdParty/Platform/Android/BuiltInPackages_android.cmake b/cmake/3rdParty/Platform/Android/BuiltInPackages_android.cmake index 9dbdbbd8aa..16478b2f35 100644 --- a/cmake/3rdParty/Platform/Android/BuiltInPackages_android.cmake +++ b/cmake/3rdParty/Platform/Android/BuiltInPackages_android.cmake @@ -20,7 +20,7 @@ ly_associate_package(PACKAGE_NAME tiff-4.2.0.15-rev4-android TARGETS TIF ly_associate_package(PACKAGE_NAME freetype-2.10.4.16-android TARGETS freetype PACKAGE_HASH df9e4d559ea0f03b0666b48c79813b1cd4d9624429148a249865de9f5c2c11cd) ly_associate_package(PACKAGE_NAME AWSNativeSDK-1.9.50-rev1-android TARGETS AWSNativeSDK PACKAGE_HASH 33771499f9080cbaab613459927e52911e68f94fa356397885e85005efbd1490) ly_associate_package(PACKAGE_NAME Lua-5.3.5-rev5-android TARGETS Lua PACKAGE_HASH 1f638e94a17a87fe9e588ea456d5893876094b4db191234380e4c4eb9e06c300) -ly_associate_package(PACKAGE_NAME PhysX-4.1.2.29882248-rev3-android TARGETS PhysX PACKAGE_HASH b8cb6aa46b2a21671f6cb1f6a78713a3ba88824d0447560ff5ce6c01014b9f43) +ly_associate_package(PACKAGE_NAME PhysX-4.1.2.29882248-rev4-android TARGETS PhysX PACKAGE_HASH 60777cbd5279a45dd9d9ee65525f662ce32253b88359162e54e4bb8581a4a262) ly_associate_package(PACKAGE_NAME mikkelsen-1.0.0.4-android TARGETS mikkelsen PACKAGE_HASH 075e8e4940884971063b5a9963014e2e517246fa269c07c7dc55b8cf2cd99705) ly_associate_package(PACKAGE_NAME googletest-1.8.1-rev4-android TARGETS googletest PACKAGE_HASH 95671be75287a61c9533452835c3647e9c1b30f81b34b43bcb0ec1997cc23894) ly_associate_package(PACKAGE_NAME googlebenchmark-1.5.0-rev2-android TARGETS GoogleBenchmark PACKAGE_HASH 20b46e572211a69d7d94ddad1c89ec37bb958711d6ad4025368ac89ea83078fb) diff --git a/cmake/3rdParty/Platform/Linux/BuiltInPackages_linux.cmake b/cmake/3rdParty/Platform/Linux/BuiltInPackages_linux.cmake index 25424a348c..3ad49c6d7a 100644 --- a/cmake/3rdParty/Platform/Linux/BuiltInPackages_linux.cmake +++ b/cmake/3rdParty/Platform/Linux/BuiltInPackages_linux.cmake @@ -27,7 +27,7 @@ ly_associate_package(PACKAGE_NAME tiff-4.2.0.15-rev3-linux ly_associate_package(PACKAGE_NAME freetype-2.10.4.16-linux TARGETS freetype PACKAGE_HASH 3f10c703d9001ecd2bb51a3bd003d3237c02d8f947ad0161c0252fdc54cbcf97) ly_associate_package(PACKAGE_NAME AWSNativeSDK-1.7.167-rev6-linux TARGETS AWSNativeSDK PACKAGE_HASH 490291e4c8057975c3ab86feb971b8a38871c58bac5e5d86abdd1aeb7141eec4) ly_associate_package(PACKAGE_NAME Lua-5.3.5-rev5-linux TARGETS Lua PACKAGE_HASH 1adc812abe3dd0dbb2ca9756f81d8f0e0ba45779ac85bf1d8455b25c531a38b0) -ly_associate_package(PACKAGE_NAME PhysX-4.1.2.29882248-rev3-linux TARGETS PhysX PACKAGE_HASH a110249cbef4f266b0002c4ee9a71f59f373040cefbe6b82f1e1510c811edde6) +ly_associate_package(PACKAGE_NAME PhysX-4.1.2.29882248-rev4-linux TARGETS PhysX PACKAGE_HASH a5cba1c7e1f3df37869008ef18d99bdd15f8e9a44cbe259cf79374696f2b6515) ly_associate_package(PACKAGE_NAME mcpp-2.7.2_az.2-rev1-linux TARGETS mcpp PACKAGE_HASH df7a998d0bc3fedf44b5bdebaf69ddad6033355b71a590e8642445ec77bc6c41) ly_associate_package(PACKAGE_NAME mikkelsen-1.0.0.4-linux TARGETS mikkelsen PACKAGE_HASH 5973b1e71a64633588eecdb5b5c06ca0081f7be97230f6ef64365cbda315b9c8) ly_associate_package(PACKAGE_NAME googletest-1.8.1-rev4-linux TARGETS googletest PACKAGE_HASH 7b7ad330f369450c316a4c4592d17fbb4c14c731c95bd8f37757203e8c2bbc1b) @@ -43,6 +43,7 @@ ly_associate_package(PACKAGE_NAME SPIRVCross-2021.04.29-rev1-linux ly_associate_package(PACKAGE_NAME azslc-1.7.34-rev1-linux TARGETS azslc PACKAGE_HASH 6d7dc671936c34ff70d2632196107ca1b8b2b41acdd021bfbc69a9fd56215c22) ly_associate_package(PACKAGE_NAME zlib-1.2.11-rev5-linux TARGETS ZLIB PACKAGE_HASH 9be5ea85722fc27a8645a9c8a812669d107c68e6baa2ca0740872eaeb6a8b0fc) ly_associate_package(PACKAGE_NAME squish-ccr-deb557d-rev1-linux TARGETS squish-ccr PACKAGE_HASH 85fecafbddc6a41a27c5f59ed4a5dfb123a94cb4666782cf26e63c0a4724c530) -ly_associate_package(PACKAGE_NAME astc-encoder-3.2-rev1-linux TARGETS astc-encoder PACKAGE_HASH 2ba97a06474d609945f0ab4419af1f6bbffdd294ca6b869f5fcebec75c573c0f) +ly_associate_package(PACKAGE_NAME astc-encoder-3.2-rev2-linux TARGETS astc-encoder PACKAGE_HASH 71549d1ca9e4d48391b92a89ea23656d3393810e6777879f6f8a9def2db1610c) ly_associate_package(PACKAGE_NAME ISPCTexComp-36b80aa-rev1-linux TARGETS ISPCTexComp PACKAGE_HASH 065fd12abe4247dde247330313763cf816c3375c221da030bdec35024947f259) ly_associate_package(PACKAGE_NAME lz4-1.9.3-vcpkg-rev4-linux TARGETS lz4 PACKAGE_HASH 5de3dbd3e2a3537c6555d759b3c5bb98e5456cf85c74ff6d046f809b7087290d) +ly_associate_package(PACKAGE_NAME pyside2-5.15.2-rev2-linux TARGETS pyside2 PACKAGE_HASH 7589c397c8224d0c3ad691ff02e1afd55d9a1f9de1967c14eb8105dd2b0c4dd1) diff --git a/cmake/3rdParty/Platform/Mac/BuiltInPackages_mac.cmake b/cmake/3rdParty/Platform/Mac/BuiltInPackages_mac.cmake index 1ac7568a98..c10cc3e461 100644 --- a/cmake/3rdParty/Platform/Mac/BuiltInPackages_mac.cmake +++ b/cmake/3rdParty/Platform/Mac/BuiltInPackages_mac.cmake @@ -28,7 +28,7 @@ ly_associate_package(PACKAGE_NAME tiff-4.2.0.15-rev3-mac ly_associate_package(PACKAGE_NAME freetype-2.10.4.16-mac TARGETS freetype PACKAGE_HASH f159b346ac3251fb29cb8dd5f805c99b0015ed7fdb3887f656945ca701a61d0d) ly_associate_package(PACKAGE_NAME AWSNativeSDK-1.7.167-rev5-mac TARGETS AWSNativeSDK PACKAGE_HASH ffb890bd9cf23afb429b9214ad9bac1bf04696f07a0ebb93c42058c482ab2f01) ly_associate_package(PACKAGE_NAME Lua-5.3.5-rev6-mac TARGETS Lua PACKAGE_HASH b9079fd35634774c9269028447562c6b712dbc83b9c64975c095fd423ff04c08) -ly_associate_package(PACKAGE_NAME PhysX-4.1.2.29882248-rev3-mac TARGETS PhysX PACKAGE_HASH 5e092a11d5c0a50c4dd99bb681a04b566a4f6f29aa08443d9bffc8dc12c27c8e) +ly_associate_package(PACKAGE_NAME PhysX-4.1.2.29882248-rev4-mac TARGETS PhysX PACKAGE_HASH 5f65e798059ea945b53e8f308c0594f195118a64e3ce873f2fff971f4e207b4d) ly_associate_package(PACKAGE_NAME mcpp-2.7.2_az.2-rev1-mac TARGETS mcpp PACKAGE_HASH be9558905c9c49179ef3d7d84f0a5472415acdf7fe2d76eb060d9431723ddf2e) ly_associate_package(PACKAGE_NAME mikkelsen-1.0.0.4-mac TARGETS mikkelsen PACKAGE_HASH 83af99ca8bee123684ad254263add556f0cf49486c0b3e32e6d303535714e505) ly_associate_package(PACKAGE_NAME googletest-1.8.1-rev4-mac TARGETS googletest PACKAGE_HASH cbf020d5ef976c5db8b6e894c6c63151ade85ed98e7c502729dd20172acae5a8) @@ -40,7 +40,7 @@ ly_associate_package(PACKAGE_NAME libpng-1.6.37-mac ly_associate_package(PACKAGE_NAME libsamplerate-0.2.1-rev2-mac TARGETS libsamplerate PACKAGE_HASH b912af40c0ac197af9c43d85004395ba92a6a859a24b7eacd920fed5854a97fe) ly_associate_package(PACKAGE_NAME zlib-1.2.11-rev5-mac TARGETS ZLIB PACKAGE_HASH b6fea9c79b8bf106d4703b67fecaa133f832ad28696c2ceef45fb5f20013c096) ly_associate_package(PACKAGE_NAME squish-ccr-deb557d-rev1-mac TARGETS squish-ccr PACKAGE_HASH 155bfbfa17c19a9cd2ef025de14c5db598f4290045d5b0d83ab58cb345089a77) -ly_associate_package(PACKAGE_NAME astc-encoder-3.2-rev1-mac TARGETS astc-encoder PACKAGE_HASH 96f6ea8c3e45ec7fe525230c7c53ca665c8300d8e28456cc19bb3159ce6f8dcc) +ly_associate_package(PACKAGE_NAME astc-encoder-3.2-rev2-mac TARGETS astc-encoder PACKAGE_HASH 06f129d26995845824f1fb906a5135b2c71d44d66c768342af85fa28a175906f) ly_associate_package(PACKAGE_NAME ISPCTexComp-36b80aa-rev1-mac TARGETS ISPCTexComp PACKAGE_HASH 8a4e93277b8face6ea2fd57c6d017bdb55643ed3d6387110bc5f6b3b884dd169) ly_associate_package(PACKAGE_NAME lz4-1.9.3-vcpkg-rev4-mac TARGETS lz4 PACKAGE_HASH 891ff630bf34f7ab1d8eaee2ea0a8f1fca89dbdc63fca41ee592703dd488a73b) ly_associate_package(PACKAGE_NAME azslc-1.7.34-rev1-mac TARGETS azslc PACKAGE_HASH a9d81946b42ffa55c0d14d6a9249b3340e59a8fb8835e7a96c31df80f14723bc) diff --git a/cmake/3rdParty/Platform/Windows/BuiltInPackages_windows.cmake b/cmake/3rdParty/Platform/Windows/BuiltInPackages_windows.cmake index 3189625611..23892c6d7d 100644 --- a/cmake/3rdParty/Platform/Windows/BuiltInPackages_windows.cmake +++ b/cmake/3rdParty/Platform/Windows/BuiltInPackages_windows.cmake @@ -29,7 +29,7 @@ ly_associate_package(PACKAGE_NAME tiff-4.2.0.15-rev3-windows ly_associate_package(PACKAGE_NAME freetype-2.10.4.16-windows TARGETS freetype PACKAGE_HASH 9809255f1c59b07875097aa8d8c6c21c97c47a31fb35e30f2bb93188e99a85ff) ly_associate_package(PACKAGE_NAME AWSNativeSDK-1.7.167-rev4-windows TARGETS AWSNativeSDK PACKAGE_HASH a900e80f7259e43aed5c847afee2599ada37f29db70505481397675bcbb6c76c) ly_associate_package(PACKAGE_NAME Lua-5.3.5-rev5-windows TARGETS Lua PACKAGE_HASH 136faccf1f73891e3fa3b95f908523187792e56f5b92c63c6a6d7e72d1158d40) -ly_associate_package(PACKAGE_NAME PhysX-4.1.2.29882248-rev3-windows TARGETS PhysX PACKAGE_HASH 0c5ffbd9fa588e5cf7643721a7cfe74d0fe448bf82252d39b3a96d06dfca2298) +ly_associate_package(PACKAGE_NAME PhysX-4.1.2.29882248-rev4-windows TARGETS PhysX PACKAGE_HASH 4591647debc80f9fd1db003206b25aeef0f0036fc4dba05b494558dcf045021b) ly_associate_package(PACKAGE_NAME mcpp-2.7.2_az.2-rev1-windows TARGETS mcpp PACKAGE_HASH 794789aba639bfe2f4e8fcb4424d679933dd6290e523084aa0a4e287ac44acb2) ly_associate_package(PACKAGE_NAME mikkelsen-1.0.0.4-windows TARGETS mikkelsen PACKAGE_HASH 872c4d245a1c86139aa929f2b465b63ea4ea55b04ced50309135dd4597457a4e) ly_associate_package(PACKAGE_NAME googletest-1.8.1-rev4-windows TARGETS googletest PACKAGE_HASH 7e8f03ae8a01563124e3daa06386f25a2b311c10bb95bff05cae6c41eff83837) @@ -46,7 +46,7 @@ ly_associate_package(PACKAGE_NAME OpenSSL-1.1.1b-rev2-windows ly_associate_package(PACKAGE_NAME Crashpad-0.8.0-rev1-windows TARGETS Crashpad PACKAGE_HASH d162aa3070147bc0130a44caab02c5fe58606910252caf7f90472bd48d4e31e2) ly_associate_package(PACKAGE_NAME zlib-1.2.11-rev5-windows TARGETS ZLIB PACKAGE_HASH 8847112429744eb11d92c44026fc5fc53caa4a06709382b5f13978f3c26c4cbd) ly_associate_package(PACKAGE_NAME squish-ccr-deb557d-rev1-windows TARGETS squish-ccr PACKAGE_HASH 5c3d9fa491e488ccaf802304ad23b932268a2b2846e383f088779962af2bfa84) -ly_associate_package(PACKAGE_NAME astc-encoder-3.2-rev1-windows TARGETS astc-encoder PACKAGE_HASH 3addc6fc1a7eb0d6b7f3d530e962af967e6d92b3825ef485da243346357cf78e) +ly_associate_package(PACKAGE_NAME astc-encoder-3.2-rev2-windows TARGETS astc-encoder PACKAGE_HASH 17249bfa438afb34e21449865d9c9297471174ae0cea9b2f9def2ee206038295) ly_associate_package(PACKAGE_NAME ISPCTexComp-36b80aa-rev1-windows TARGETS ISPCTexComp PACKAGE_HASH b6fa6ea28a2808a9a5524c72c37789c525925e435770f2d94eb2d387360fa2d0) ly_associate_package(PACKAGE_NAME lz4-1.9.3-vcpkg-rev4-windows TARGETS lz4 PACKAGE_HASH 4ea457b833cd8cfaf8e8e06ed6df601d3e6783b606bdbc44a677f77e19e0db16) ly_associate_package(PACKAGE_NAME azslc-1.7.34-rev1-windows TARGETS azslc PACKAGE_HASH 44eb2e0fc4b0f1c75d0fb6f24c93a5753655b84dbc3e6ad45389ed3b9cf7a4b0) diff --git a/cmake/3rdParty/Platform/iOS/BuiltInPackages_ios.cmake b/cmake/3rdParty/Platform/iOS/BuiltInPackages_ios.cmake index 8042c888c7..978f26d1f8 100644 --- a/cmake/3rdParty/Platform/iOS/BuiltInPackages_ios.cmake +++ b/cmake/3rdParty/Platform/iOS/BuiltInPackages_ios.cmake @@ -21,7 +21,7 @@ ly_associate_package(PACKAGE_NAME tiff-4.2.0.15-rev3-ios TARGETS TIFF ly_associate_package(PACKAGE_NAME freetype-2.10.4.16-ios TARGETS freetype PACKAGE_HASH 3ac3c35e056ae4baec2e40caa023d76a7a3320895ef172b6655e9261b0dc2e29) ly_associate_package(PACKAGE_NAME AWSNativeSDK-1.7.167-rev4-ios TARGETS AWSNativeSDK PACKAGE_HASH d10e7496ca705577032821011beaf9f2507689f23817bfa0ed4d2a2758afcd02) ly_associate_package(PACKAGE_NAME Lua-5.3.5-rev5-ios TARGETS Lua PACKAGE_HASH c2d3c4e67046c293049292317a7d60fdb8f23effeea7136aefaef667163e5ffe) -ly_associate_package(PACKAGE_NAME PhysX-4.1.2.29882248-rev3-ios TARGETS PhysX PACKAGE_HASH b1bbc1fc068d2c6e1eb18eecd4e8b776adc516833e8da3dcb1970cef2a8f0cbd) +ly_associate_package(PACKAGE_NAME PhysX-4.1.2.29882248-rev4-ios TARGETS PhysX PACKAGE_HASH fb2295974eccd7a05b62efd774c5c4b1ce2b7e45ba65c0b9c1f59c0dab0d34f9) ly_associate_package(PACKAGE_NAME mikkelsen-1.0.0.4-ios TARGETS mikkelsen PACKAGE_HASH 976aaa3ccd8582346132a10af253822ccc5d5bcc9ea5ba44d27848f65ee88a8a) ly_associate_package(PACKAGE_NAME googletest-1.8.1-rev4-ios TARGETS googletest PACKAGE_HASH 2f121ad9784c0ab73dfaa58e1fee05440a82a07cc556bec162eeb407688111a7) ly_associate_package(PACKAGE_NAME googlebenchmark-1.5.0-rev2-ios TARGETS GoogleBenchmark PACKAGE_HASH c2ffaed2b658892b1bcf81dee4b44cd1cb09fc78d55584ef5cb8ab87f2d8d1ae) diff --git a/cmake/3rdPartyPackages.cmake b/cmake/3rdPartyPackages.cmake index efe67b4d24..a3f15bdb22 100644 --- a/cmake/3rdPartyPackages.cmake +++ b/cmake/3rdPartyPackages.cmake @@ -7,7 +7,7 @@ include_guard() -include(cmake/LySet.cmake) +include(${LY_ROOT_FOLDER}/cmake/LySet.cmake) # OVERVIEW: # this is the Open 3D Engine Package system. @@ -80,10 +80,7 @@ macro(ly_package_message) endif() endmacro() -file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/packages) - -include(cmake/LYPackage_S3Downloader.cmake) - +include(${LY_ROOT_FOLDER}/cmake/LYPackage_S3Downloader.cmake) # Attempts one time to download a file. # sets should_retry to true if the caller should retry due to an intermittent problem @@ -711,11 +708,11 @@ if (NOT CMAKE_SCRIPT_MODE_FILE) # include the built in 3rd party packages that are for every platform. # you can put your package associations anywhere, but this provides # a good starting point. - include(cmake/3rdParty/BuiltInPackages.cmake) + include(${LY_ROOT_FOLDER}/cmake/3rdParty/BuiltInPackages.cmake) endif() if(PAL_TRAIT_BUILD_HOST_TOOLS) - include(cmake/LYWrappers.cmake) + include(${LY_ROOT_FOLDER}/cmake/LYWrappers.cmake) # Importing this globally to handle AUTOMOC, AUTOUIC, AUTORCC ly_parse_third_party_dependencies(3rdParty::Qt) endif() diff --git a/cmake/CompilerSettings.cmake b/cmake/CompilerSettings.cmake index cf6614e4a5..60bda1d45b 100644 --- a/cmake/CompilerSettings.cmake +++ b/cmake/CompilerSettings.cmake @@ -9,5 +9,5 @@ # File to tweak compiler settings before compiler detection happens (before project() is called) # We dont have PAL enabled at this point, so we can only use pure-CMake variables if("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Linux") - include(cmake/Platform/${CMAKE_HOST_SYSTEM_NAME}/CompilerSettings.cmake) + include(cmake/Platform/Linux/CompilerSettings_linux.cmake) endif() diff --git a/cmake/Deployment.cmake b/cmake/Deployment.cmake index b6b7aa1869..1f6f2fc0f3 100644 --- a/cmake/Deployment.cmake +++ b/cmake/Deployment.cmake @@ -10,5 +10,3 @@ set(LY_ASSET_DEPLOY_MODE "LOOSE" CACHE STRING "Set the Asset deployment when deploying to the target platform (LOOSE, PAK, VFS)") set(LY_ASSET_OVERRIDE_PAK_FOLDER_ROOT "" CACHE STRING "Optional root path to where Pak file folders are stored. By default, blank will use a predefined 'paks' root.") - - diff --git a/cmake/LYWrappers.cmake b/cmake/LYWrappers.cmake index 0416d41ece..d4bf1d7423 100644 --- a/cmake/LYWrappers.cmake +++ b/cmake/LYWrappers.cmake @@ -354,7 +354,7 @@ function(ly_add_target) # of running the copy of runtime dependencies, the stamp file is touched so the timestamp is updated. # Adding a config as part of the name since the stamp file is added to the VS project. # Note the STAMP_OUTPUT_FILE need to match with the one used in runtime dependencies (e.g. RuntimeDependencies_common.cmake) - set(STAMP_OUTPUT_FILE ${CMAKE_BINARY_DIR}/runtime_dependencies/$/${ly_add_target_NAME}_$.stamp) + set(STAMP_OUTPUT_FILE ${CMAKE_BINARY_DIR}/runtime_dependencies/$/${ly_add_target_NAME}.stamp) add_custom_command( OUTPUT ${STAMP_OUTPUT_FILE} DEPENDS "$>" @@ -367,7 +367,7 @@ function(ly_add_target) # stamp file on each configuration so it gets properly excluded by the generator unset(stamp_files_per_config) foreach(conf IN LISTS CMAKE_CONFIGURATION_TYPES) - set(stamp_file_conf ${CMAKE_BINARY_DIR}/runtime_dependencies/${conf}/${ly_add_target_NAME}_${conf}.stamp) + set(stamp_file_conf ${CMAKE_BINARY_DIR}/runtime_dependencies/${conf}/${ly_add_target_NAME}.stamp) set_source_files_properties(${stamp_file_conf} PROPERTIES GENERATED TRUE SKIP_AUTOGEN TRUE) list(APPEND stamp_files_per_config $<$:${stamp_file_conf}>) endforeach() @@ -653,36 +653,6 @@ function(ly_add_source_properties) endfunction() -#! ly_project_add_subdirectory: calls add_subdirectory() if the project name is in the project list -# -# This can be useful when including subdirs in the restricted folder only if the project is in the project list -# If you give it a second parameter it will add_subdirectory using that instead, if the project is in the project list -# -# add_subdirectory(AutomatedTesting) if Automatedtesting is in the project list -# EX. ly_project_add_subdirectory(AutomatedTesting) -# -# add_subdirectory(SamplesProject) if Automatedtesting is in the project list -# EX. ly_project_add_subdirectory(AutomatedTesting SamplesProject) -# -# \arg:project_name the name of the project that may be enabled -# \arg:binary_project_dir optional, if supplied that binary_project_dir will be added when project name is enabled. -# -function(ly_project_add_subdirectory project_name) - if(${project_name} IN_LIST LY_PROJECTS) - if(ARGC GREATER 1) - list(GET ARGN 0 subdir) - endif() - if(ARGC GREATER 2) - list(GET ARGN 1 binary_project_dir) - endif() - if(subdir) - add_subdirectory(${subdir} ${binary_project_dir}) - else() - add_subdirectory(${project_name} ${binary_project_dir}) - endif() - endif() -endfunction() - # given a target name, returns the "real" name of the target if its an alias. # this function recursively de-aliases function(ly_de_alias_target target_name output_variable_name) diff --git a/cmake/Packaging.cmake b/cmake/Packaging.cmake index 6a1e2d8cef..d716efb225 100644 --- a/cmake/Packaging.cmake +++ b/cmake/Packaging.cmake @@ -24,18 +24,23 @@ number will automatically appended as '/'. If LY_INSTALLER_AUTO_ full URL format will be: //" ) -set(LY_INSTALLER_UPLOAD_URL "" CACHE STRING -"Base URL used to upload the installer artifacts after generation, the host target and version number \ -will automatically appended as '/'. If LY_INSTALLER_AUTO_GEN_TAG is set, the full URL \ -format will be: //. Can also be set via LY_INSTALLER_UPLOAD_URL environment \ -variable. Currently only accepts S3 URLs e.g. s3:///" +set(CPACK_UPLOAD_URL "" CACHE STRING +"URL used to upload the installer artifacts after generation, the host target and version number \ +will automatically appended as '/'. If LY_INSTALLER_AUTO_GEN_TAG is set, the full URL \ +format will be: //. Currently only accepts S3 URLs e.g. s3:///" ) -set(LY_INSTALLER_AWS_PROFILE "" CACHE STRING -"AWS CLI profile for uploading artifacts. Can also be set via LY_INSTALLER_AWS_PROFILE environment variable." +set(CPACK_AWS_PROFILE "" CACHE STRING +"AWS CLI profile for uploading artifacts." ) +set(CPACK_THREADS 0) set(CPACK_DESIRED_CMAKE_VERSION 3.20.2) +if(${CPACK_DESIRED_CMAKE_VERSION} VERSION_LESS ${CMAKE_MINIMUM_REQUIRED_VERSION}) + message(FATAL_ERROR + "The desired version of CMake to be included in the package is " + "below the minimum required version of CMake to run") +endif() # set all common cpack variable overrides first so they can be accessible via configure_file # when the platform specific settings are applied below. additionally, any variable with @@ -44,15 +49,16 @@ set(CPACK_DESIRED_CMAKE_VERSION 3.20.2) set(CPACK_PACKAGE_NAME "${PROJECT_NAME}") set(CPACK_PACKAGE_FULL_NAME "Open3D Engine") set(CPACK_PACKAGE_VENDOR "O3DE Binary Project a Series of LF Projects, LLC") +set(CPACK_PACKAGE_CONTACT "info@o3debinaries.org") set(CPACK_PACKAGE_VERSION "${LY_VERSION_STRING}") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Installation Tool") string(TOLOWER "${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}" CPACK_PACKAGE_FILE_NAME) set(DEFAULT_LICENSE_NAME "Apache-2.0") -set(DEFAULT_LICENSE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt") -set(CPACK_RESOURCE_FILE_LICENSE ${DEFAULT_LICENSE_FILE}) +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt") +set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md") set(CPACK_LICENSE_URL ${LY_INSTALLER_LICENSE_URL}) set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}") @@ -60,6 +66,7 @@ set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSI # neither of the SOURCE_DIR variables equate to anything during execution of pre/post build scripts set(CPACK_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/cmake) set(CPACK_BINARY_DIR ${CMAKE_BINARY_DIR}/_CPack) # to match other CPack out dirs +set(CPACK_OUTPUT_FILE_PREFIX CPackUploads) # this config file allows the dynamic setting of cpack variables at cpack-time instead of cmake configure set(CPACK_PROJECT_CONFIG_FILE ${CPACK_SOURCE_DIR}/PackagingConfig.cmake) @@ -74,132 +81,37 @@ if(NOT CPACK_GENERATOR) return() endif() -if(${CPACK_DESIRED_CMAKE_VERSION} VERSION_LESS ${CMAKE_MINIMUM_REQUIRED_VERSION}) - message(FATAL_ERROR - "The desired version of CMake to be included in the package is " - "below the minimum required version of CMake to run") -endif() - -# pull down the desired copy of CMake so it can be included in the package +# We will download the desired copy of CMake so it can be included in the package, we defer the downloading +# to the install process, to do so we generate a script that will perform the download and execute such script +# during the install process (before packaging) if(NOT (CPACK_CMAKE_PACKAGE_FILE AND CPACK_CMAKE_PACKAGE_HASH)) message(FATAL_ERROR "Packaging is missing one or more following properties required to include CMake: " " CPACK_CMAKE_PACKAGE_FILE, CPACK_CMAKE_PACKAGE_HASH") endif() -set(_cmake_package_dest ${CPACK_BINARY_DIR}/${CPACK_CMAKE_PACKAGE_FILE}) +# We download it to a different location because CPACK_PACKAGING_INSTALL_PREFIX will be removed during +# cpack generation. CPACK_BINARY_DIR persists across cpack invocations +set(LY_CMAKE_PACKAGE_DOWNLOAD_PATH ${CPACK_BINARY_DIR}/${CPACK_CMAKE_PACKAGE_FILE}) -if(EXISTS ${_cmake_package_dest}) - file(SHA256 ${_cmake_package_dest} hash_of_downloaded_file) - if (NOT "${hash_of_downloaded_file}" STREQUAL "${CPACK_CMAKE_PACKAGE_HASH}") - message(STATUS "CMake ${CPACK_DESIRED_CMAKE_VERSION} found at ${_cmake_package_dest} but expected hash missmatches, re-downloading...") - file(REMOVE ${_cmake_package_dest}) - else() - message(STATUS "CMake ${CPACK_DESIRED_CMAKE_VERSION} found") - endif() -endif() -if(NOT EXISTS ${_cmake_package_dest}) - # download it - string(REPLACE "." ";" _version_componets "${CPACK_DESIRED_CMAKE_VERSION}") - list(GET _version_componets 0 _major_version) - list(GET _version_componets 1 _minor_version) - - set(_url_version_tag "v${_major_version}.${_minor_version}") - set(_package_url "https://cmake.org/files/${_url_version_tag}/${CPACK_CMAKE_PACKAGE_FILE}") - - message(STATUS "Downloading CMake ${CPACK_DESIRED_CMAKE_VERSION} for packaging...") - download_file( - URL ${_package_url} - TARGET_FILE ${_cmake_package_dest} - EXPECTED_HASH ${CPACK_CMAKE_PACKAGE_HASH} - RESULTS _results - ) - list(GET _results 0 _status_code) - - if (${_status_code} EQUAL 0 AND EXISTS ${_cmake_package_dest}) - message(STATUS "CMake ${CPACK_DESIRED_CMAKE_VERSION} found") - else() - file(REMOVE ${_cmake_package_dest}) - list(REMOVE_AT _results 0) - - set(_error_message "An error occurred, code ${_status_code}. URL ${_package_url} - ${_results}") - - if(${_status_code} EQUAL 1) - string(APPEND _error_message - " Please double check the CPACK_CMAKE_PACKAGE_FILE and " - "CPACK_CMAKE_PACKAGE_HASH properties before trying again.") - endif() - - message(FATAL_ERROR ${_error_message}) - endif() -endif() - -ly_install(FILES ${_cmake_package_dest} - DESTINATION ./Tools/Redistributables/CMake +configure_file(${LY_ROOT_FOLDER}/cmake/Packaging/CMakeDownload.cmake.in + ${CPACK_BINARY_DIR}/CMakeDownload.cmake + @ONLY +) +ly_install(SCRIPT ${CPACK_BINARY_DIR}/CMakeDownload.cmake + COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME} +) +ly_install(FILES ${LY_CMAKE_PACKAGE_DOWNLOAD_PATH} + DESTINATION Tools/Redistributables/CMake COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME} ) -# the version string and git tags are intended to be synchronized so it should be safe to use that instead -# of directly calling into git which could get messy in certain scenarios -if(${CPACK_PACKAGE_VERSION} VERSION_GREATER "0.0.0.0") - set(_3rd_party_license_filename NOTICES.txt) - - set(_3rd_party_license_url "https://raw.githubusercontent.com/o3de/3p-package-source/${CPACK_PACKAGE_VERSION}/${_3rd_party_license_filename}") - set(_3rd_party_license_dest ${CPACK_BINARY_DIR}/${_3rd_party_license_filename}) - - # use the plain file downloader as we don't have the file hash available and using a dummy will - # delete the file once it fails hash verification - file(DOWNLOAD - ${_3rd_party_license_url} - ${_3rd_party_license_dest} - STATUS _status - TLS_VERIFY ON - ) - list(POP_FRONT _status _status_code) - - if (${_status_code} EQUAL 0 AND EXISTS ${_3rd_party_license_dest}) - ly_install(FILES ${_3rd_party_license_dest} - DESTINATION . - COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME} - ) - else() - file(REMOVE ${_3rd_party_license_dest}) - message(FATAL_ERROR "Failed to acquire the 3rd Party license manifest file at ${_3rd_party_license_url}. Error: ${_status}") - endif() -endif() - -# checks for and removes trailing slash -function(strip_trailing_slash in_url out_url) - string(LENGTH ${in_url} _url_length) - MATH(EXPR _url_length "${_url_length}-1") - - string(SUBSTRING ${in_url} 0 ${_url_length} _clean_url) - if("${in_url}" STREQUAL "${_clean_url}/") - set(${out_url} ${_clean_url} PARENT_SCOPE) - else() - set(${out_url} ${in_url} PARENT_SCOPE) - endif() -endfunction() - -if(NOT LY_INSTALLER_UPLOAD_URL AND DEFINED ENV{LY_INSTALLER_UPLOAD_URL}) - set(LY_INSTALLER_UPLOAD_URL $ENV{LY_INSTALLER_UPLOAD_URL}) -endif() - -if(LY_INSTALLER_UPLOAD_URL) - ly_is_s3_url(${LY_INSTALLER_UPLOAD_URL} _is_s3_bucket) - if(NOT _is_s3_bucket) - message(FATAL_ERROR "Only S3 installer uploading is supported at this time") - endif() - - if (LY_INSTALLER_AWS_PROFILE) - set(CPACK_AWS_PROFILE ${LY_INSTALLER_AWS_PROFILE}) - elseif (DEFINED ENV{LY_INSTALLER_AWS_PROFILE}) - set(CPACK_AWS_PROFILE $ENV{LY_INSTALLER_AWS_PROFILE}) - endif() - - strip_trailing_slash(${LY_INSTALLER_UPLOAD_URL} LY_INSTALLER_UPLOAD_URL) - set(CPACK_UPLOAD_URL ${LY_INSTALLER_UPLOAD_URL}) -endif() +# Set common CPACK variables to all platforms/generators +set(CPACK_STRIP_FILES TRUE) # always strip symbols on packaging +set(CPACK_PACKAGE_CHECKSUM SHA256) # Generate checksum file +set(CPACK_PRE_BUILD_SCRIPTS ${pal_dir}/PackagingPreBuild_${PAL_HOST_PLATFORM_NAME_LOWERCASE}.cmake) +set(CPACK_POST_BUILD_SCRIPTS ${pal_dir}/PackagingPostBuild_${PAL_HOST_PLATFORM_NAME_LOWERCASE}.cmake) +set(CPACK_LY_PYTHON_CMD ${LY_PYTHON_CMD}) # IMPORTANT: required to be included AFTER setting all property overrides include(CPack REQUIRED) @@ -268,13 +180,26 @@ foreach(external_dir ${LY_INSTALL_EXTERNAL_BUILD_DIRS}) ) endforeach() +# checks for and removes trailing slash +function(strip_trailing_slash in_url out_url) + string(LENGTH ${in_url} _url_length) + MATH(EXPR _url_length "${_url_length}-1") + + string(SUBSTRING ${in_url} 0 ${_url_length} _clean_url) + if("${in_url}" STREQUAL "${_clean_url}/") + set(${out_url} ${_clean_url} PARENT_SCOPE) + else() + set(${out_url} ${in_url} PARENT_SCOPE) + endif() +endfunction() + if(LY_INSTALLER_DOWNLOAD_URL) strip_trailing_slash(${LY_INSTALLER_DOWNLOAD_URL} LY_INSTALLER_DOWNLOAD_URL) # this will set the following variables: CPACK_DOWNLOAD_SITE, CPACK_DOWNLOAD_ALL, and CPACK_UPLOAD_DIRECTORY (local) cpack_configure_downloads( ${LY_INSTALLER_DOWNLOAD_URL} - UPLOAD_DIRECTORY ${CMAKE_BINARY_DIR}/_CPack_Uploads # to match the _CPack_Packages directory + UPLOAD_DIRECTORY ${CMAKE_BINARY_DIR}/CPackUploads # to match the _CPack_Packages directory ALL ) endif() diff --git a/cmake/Packaging/CMakeDownload.cmake.in b/cmake/Packaging/CMakeDownload.cmake.in new file mode 100644 index 0000000000..e84611b354 --- /dev/null +++ b/cmake/Packaging/CMakeDownload.cmake.in @@ -0,0 +1,54 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +set(LY_ROOT_FOLDER "@LY_ROOT_FOLDER@") +set(CMAKE_SCRIPT_MODE_FILE TRUE) +include(@LY_ROOT_FOLDER@/cmake/3rdPartyPackages.cmake) + +if(EXISTS "@LY_CMAKE_PACKAGE_DOWNLOAD_PATH@") + file(SHA256 "@LY_CMAKE_PACKAGE_DOWNLOAD_PATH@" hash_of_downloaded_file) + if (NOT "${hash_of_downloaded_file}" STREQUAL "@CPACK_CMAKE_PACKAGE_HASH@") + message(STATUS "CMake @CPACK_DESIRED_CMAKE_VERSION@ found at @LY_CMAKE_PACKAGE_DOWNLOAD_PATH@ but expected hash missmatches, re-downloading...") + file(REMOVE "@LY_CMAKE_PACKAGE_DOWNLOAD_PATH@") + else() + message(STATUS "CMake @CPACK_DESIRED_CMAKE_VERSION@ found") + endif() +endif() +if(NOT EXISTS "@LY_CMAKE_PACKAGE_DOWNLOAD_PATH@") + # download it + string(REPLACE "." ";" _version_components "@CPACK_DESIRED_CMAKE_VERSION@") + list(GET _version_components 0 _major_version) + list(GET _version_components 1 _minor_version) + + set(_url_version_tag "v${_major_version}.${_minor_version}") + set(_package_url "https://cmake.org/files/${_url_version_tag}/@CPACK_CMAKE_PACKAGE_FILE@") + + message(STATUS "Downloading CMake @CPACK_DESIRED_CMAKE_VERSION@ for packaging...") + download_file( + URL ${_package_url} + TARGET_FILE @LY_CMAKE_PACKAGE_DOWNLOAD_PATH@ + EXPECTED_HASH @CPACK_CMAKE_PACKAGE_HASH@ + RESULTS _results + ) + list(GET _results 0 _status_code) + + if (${_status_code} EQUAL 0 AND EXISTS "@LY_CMAKE_PACKAGE_DOWNLOAD_PATH@") + message(STATUS "CMake @CPACK_DESIRED_CMAKE_VERSION@ found") + else() + file(REMOVE "@LY_CMAKE_PACKAGE_DOWNLOAD_PATH@") + list(REMOVE_AT _results 0) + + set(_error_message "An error occurred, code ${_status_code}. URL ${_package_url} - ${_results}") + if(${_status_code} EQUAL 1) + string(APPEND _error_message + " Please double check the CPACK_CMAKE_PACKAGE_FILE and " + "CPACK_CMAKE_PACKAGE_HASH properties before trying again.") + endif() + message(FATAL_ERROR ${_error_message}) + endif() +endif() diff --git a/cmake/Platform/Common/Install_common.cmake b/cmake/Platform/Common/Install_common.cmake index 5e9f6ad0ce..46130f1345 100644 --- a/cmake/Platform/Common/Install_common.cmake +++ b/cmake/Platform/Common/Install_common.cmake @@ -202,18 +202,16 @@ function(ly_setup_target OUTPUT_CONFIGURED_TARGET ALIAS_TARGET_NAME absolute_tar endforeach() list(JOIN INCLUDE_DIRECTORIES_PLACEHOLDER "\n" INCLUDE_DIRECTORIES_PLACEHOLDER) - string(REPEAT " " 8 PLACEHOLDER_INDENT) - get_target_property(RUNTIME_DEPENDENCIES_PLACEHOLDER ${TARGET_NAME} MANUALLY_ADDED_DEPENDENCIES) - if(RUNTIME_DEPENDENCIES_PLACEHOLDER) # not found properties return the name of the variable with a "-NOTFOUND" at the end, here we set it to empty if not found - set(RUNTIME_DEPENDENCIES_PLACEHOLDER "${PLACEHOLDER_INDENT}${RUNTIME_DEPENDENCIES_PLACEHOLDER}") - list(JOIN RUNTIME_DEPENDENCIES_PLACEHOLDER "\n${PLACEHOLDER_INDENT}" RUNTIME_DEPENDENCIES_PLACEHOLDER) - else() - unset(RUNTIME_DEPENDENCIES_PLACEHOLDER) - endif() - string(REPEAT " " 12 PLACEHOLDER_INDENT) get_property(interface_build_dependencies_props TARGET ${TARGET_NAME} PROPERTY LY_DELAYED_LINK) unset(INTERFACE_BUILD_DEPENDENCIES_PLACEHOLDER) + # We can have private build dependencies that contains direct or indirect runtime dependencies. + # Since imported targets cannot contain build dependencies, we need another way to propagate the runtime dependencies. + # We dont want to put such dependencies in the interface because a user can mistakenly use a symbol that is not available + # when using the engine from source (and that the author of the target didn't want to set public). + # To overcome this, we will actually expose the private build dependencies as runtime dependencies. Our runtime dependency + # algorithm will walk recursively also through static libraries and will only copy binaries to the output. + unset(RUNTIME_DEPENDENCIES_PLACEHOLDER) if(interface_build_dependencies_props) cmake_parse_arguments(build_deps "" "" "PRIVATE;PUBLIC;INTERFACE" ${interface_build_dependencies_props}) # Interface and public dependencies should always be exposed @@ -226,6 +224,14 @@ function(ly_setup_target OUTPUT_CONFIGURED_TARGET ALIAS_TARGET_NAME absolute_tar if("${target_type}" STREQUAL "STATIC_LIBRARY") set(build_deps_target "${build_deps_target};${build_deps_PRIVATE}") endif() + + # But we will also pass the private dependencies as runtime dependencies (as long as they are targets, note the comment above) + foreach(build_dep_private IN LISTS build_deps_PRIVATE) + if(TARGET ${build_dep_private}) + list(APPEND RUNTIME_DEPENDENCIES_PLACEHOLDER "${build_dep_private}") + endif() + endforeach() + foreach(build_dependency IN LISTS build_deps_target) # Skip wrapping produced when targets are not created in the same directory if(build_dependency) @@ -235,6 +241,18 @@ function(ly_setup_target OUTPUT_CONFIGURED_TARGET ALIAS_TARGET_NAME absolute_tar endif() list(JOIN INTERFACE_BUILD_DEPENDENCIES_PLACEHOLDER "\n" INTERFACE_BUILD_DEPENDENCIES_PLACEHOLDER) + string(REPEAT " " 8 PLACEHOLDER_INDENT) + get_target_property(manually_added_dependencies ${TARGET_NAME} MANUALLY_ADDED_DEPENDENCIES) + if(manually_added_dependencies) # not found properties return the name of the variable with a "-NOTFOUND" at the end, here we set it to empty if not found + list(APPEND RUNTIME_DEPENDENCIES_PLACEHOLDER ${manually_added_dependencies}) + endif() + if(RUNTIME_DEPENDENCIES_PLACEHOLDER) + set(RUNTIME_DEPENDENCIES_PLACEHOLDER "${PLACEHOLDER_INDENT}${RUNTIME_DEPENDENCIES_PLACEHOLDER}") + list(JOIN RUNTIME_DEPENDENCIES_PLACEHOLDER "\n${PLACEHOLDER_INDENT}" RUNTIME_DEPENDENCIES_PLACEHOLDER) + else() + unset(RUNTIME_DEPENDENCIES_PLACEHOLDER) + endif() + string(REPEAT " " 8 PLACEHOLDER_INDENT) # If a target has an LY_PROJECT_NAME property, forward that property to new target get_target_property(target_project_association ${TARGET_NAME} LY_PROJECT_NAME) @@ -557,9 +575,13 @@ function(ly_setup_runtime_dependencies) string(TOUPPER ${conf} UCONF) ly_install(CODE "function(ly_copy source_file target_directory) - cmake_path(GET source_file FILENAME file_name) - if(NOT EXISTS \${target_directory}/\${file_name}) - file(COPY \"\${source_file}\" DESTINATION \"\${target_directory}\" FILE_PERMISSIONS ${LY_COPY_PERMISSIONS}) + cmake_path(GET source_file FILENAME target_filename) + cmake_path(APPEND full_target_directory \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}\" \"\${target_directory}\") + cmake_path(APPEND target_file \"\${full_target_directory}\" \"\${target_filename}\") + if(\"\${source_file}\" IS_NEWER_THAN \"\${target_file}\") + message(STATUS \"Copying \${source_file} to \${full_target_directory}...\") + file(COPY \"\${source_file}\" DESTINATION \"\${full_target_directory}\" FILE_PERMISSIONS ${LY_COPY_PERMISSIONS} FOLLOW_SYMLINK_CHAIN) + file(TOUCH_NOCREATE \"${target_file}\") endif() endfunction()" COMPONENT ${LY_INSTALL_PERMUTATION_COMPONENT}_${UCONF} @@ -584,12 +606,7 @@ endfunction()" endif() # runtime dependencies that need to be copied to the output - # Anywhere CMAKE_INSTALL_PREFIX is used, it has to be escaped so it is baked into the cmake_install.cmake script instead - # of baking the path. This is needed so `cmake --install --prefix ` works regardless of the CMAKE_INSTALL_PREFIX - # used to generate the solution. - # CMAKE_INSTALL_PREFIX is still used when building the INSTALL target - set(install_output_folder "\${CMAKE_INSTALL_PREFIX}/${runtime_output_directory}") - set(target_file_dir "${install_output_folder}/${target_runtime_output_subdirectory}") + set(target_file_dir "${runtime_output_directory}/${target_runtime_output_subdirectory}") ly_get_runtime_dependencies(runtime_dependencies ${target}) foreach(runtime_dependency ${runtime_dependencies}) unset(runtime_command) @@ -798,4 +815,4 @@ set(LY_CORE_COMPONENT_ALREADY_INCLUDED FALSE)" ly_post_install_steps() endif() -endfunction() \ No newline at end of file +endfunction() diff --git a/cmake/Platform/Common/PackagingPostBuild_common.cmake b/cmake/Platform/Common/PackagingPostBuild_common.cmake new file mode 100644 index 0000000000..6e3c7ddf0b --- /dev/null +++ b/cmake/Platform/Common/PackagingPostBuild_common.cmake @@ -0,0 +1,114 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +message(STATUS "Executing packaging postbuild...") + +# ly_is_s3_url +# if the given URL is a s3 url of thr form "s3://(stuff)" then sets +# the output_variable_name to TRUE otherwise unsets it. +function (ly_is_s3_url download_url output_variable_name) + if ("${download_url}" MATCHES "s3://.*") + set(${output_variable_name} TRUE PARENT_SCOPE) + else() + unset(${output_variable_name} PARENT_SCOPE) + endif() +endfunction() + +function(ly_upload_to_url in_url in_local_path in_file_regex) + + message(STATUS "Uploading ${in_local_path}/${in_file_regex} artifacts to ${CPACK_UPLOAD_URL}") + ly_is_s3_url(${in_url} _is_s3_bucket) + if(NOT _is_s3_bucket) + message(FATAL_ERROR "Only S3 installer uploading is supported at this time") + endif() + + # strip the scheme and extract the bucket/key prefix from the URL + string(REPLACE "s3://" "" _stripped_url ${in_url}) + string(REPLACE "/" ";" _tokens ${_stripped_url}) + + list(POP_FRONT _tokens _bucket) + string(JOIN "/" _prefix ${_tokens}) + + set(_extra_args [[{"ACL":"bucket-owner-full-control"}]]) + + file(TO_NATIVE_PATH "${LY_ROOT_FOLDER}/scripts/build/tools/upload_to_s3.py" _upload_script) + + set(_upload_command + ${CPACK_LY_PYTHON_CMD} -s + -u ${_upload_script} + --base_dir ${in_local_path} + --file_regex="${in_file_regex}" + --bucket ${_bucket} + --key_prefix ${_prefix} + --extra_args ${_extra_args} + ) + + if(CPACK_AWS_PROFILE) + list(APPEND _upload_command --profile ${CPACK_AWS_PROFILE}) + endif() + + execute_process( + COMMAND ${_upload_command} + RESULT_VARIABLE _upload_result + OUTPUT_VARIABLE _upload_output + ERROR_VARIABLE _upload_error + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + if (${_upload_result} EQUAL 0) + message(STATUS "Artifact uploading complete!") + else() + message(FATAL_ERROR "An error occurred uploading to s3.\n Output: ${_upload_output}\n\ Error: ${_upload_error}") + endif() +endfunction() + +function(ly_upload_to_latest in_url in_path) + + message(STATUS "Updating latest tagged build") + + # make sure we can extra the commit info from the URL first + string(REGEX MATCH "([0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9a-zA-Z]+)" + commit_info ${in_url} + ) + if(NOT commit_info) + message(FATAL_ERROR "Failed to extract the build tag") + endif() + + # Create a temp directory where we are going to rename the file to take out the version + # and then upload it + set(temp_dir ${CPACK_BINARY_DIR}/temp) + if(NOT EXISTS ${temp_dir}) + file(MAKE_DIRECTORY ${temp_dir}) + endif() + file(COPY ${in_path} DESTINATION ${temp_dir}) + + cmake_path(GET in_path FILENAME in_path_filename) + string(REPLACE "_${CPACK_PACKAGE_VERSION}" "" non_versioned_in_path_filename ${in_path_filename}) + file(RENAME "${temp_dir}/${in_path_filename}" "${temp_dir}/${non_versioned_in_path_filename}") + + # include the commit info in a text file that will live next to the exe + set(_temp_info_file ${temp_dir}/build_tag.txt) + file(WRITE ${_temp_info_file} ${commit_info}) + + # update the URL and upload + string(REPLACE + ${commit_info} "Latest" + latest_upload_url ${in_url} + ) + + ly_upload_to_url( + ${latest_upload_url} + ${temp_dir} + ".*(${non_versioned_in_path_filename}|build_tag.txt)$" + ) + + # cleanup the temp files + file(REMOVE_RECURSE ${temp_dir}) + message(STATUS "Latest build update complete!") + +endfunction() \ No newline at end of file diff --git a/cmake/Platform/Common/PackagingPreBuild_common.cmake b/cmake/Platform/Common/PackagingPreBuild_common.cmake new file mode 100644 index 0000000000..e6b8a7796e --- /dev/null +++ b/cmake/Platform/Common/PackagingPreBuild_common.cmake @@ -0,0 +1,5 @@ +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# diff --git a/cmake/Platform/Common/RuntimeDependencies_common.cmake b/cmake/Platform/Common/RuntimeDependencies_common.cmake index 60e55453f8..a03f7f667b 100644 --- a/cmake/Platform/Common/RuntimeDependencies_common.cmake +++ b/cmake/Platform/Common/RuntimeDependencies_common.cmake @@ -272,7 +272,7 @@ function(ly_delayed_generate_runtime_dependencies) endforeach() # Generate the output file, note the STAMP_OUTPUT_FILE need to match with the one defined in LYWrappers.cmake - set(STAMP_OUTPUT_FILE ${CMAKE_BINARY_DIR}/runtime_dependencies/$/${target}_$.stamp) + set(STAMP_OUTPUT_FILE ${CMAKE_BINARY_DIR}/runtime_dependencies/$/${target}.stamp) set(target_file_dir "$") set(target_file "$") ly_file_read(${LY_RUNTIME_DEPENDENCIES_TEMPLATE} template_file) diff --git a/cmake/Platform/Common/runtime_dependencies_common.cmake.in b/cmake/Platform/Common/runtime_dependencies_common.cmake.in index 6e41dbaad1..8717710a3b 100644 --- a/cmake/Platform/Common/runtime_dependencies_common.cmake.in +++ b/cmake/Platform/Common/runtime_dependencies_common.cmake.in @@ -9,14 +9,22 @@ cmake_policy(SET CMP0012 NEW) # new policy for the if that evaluates a boolean out of "if(NOT ${same_location})" function(ly_copy source_file target_directory) - get_filename_component(target_filename "${source_file}" NAME) - cmake_path(COMPARE "${source_file}" EQUAL "${target_directory}/${target_filename}" same_location) + cmake_path(GET source_file FILENAME target_filename) + cmake_path(APPEND target_file "${target_directory}" "${target_filename}") + cmake_path(COMPARE "${source_file}" EQUAL "${target_file}" same_location) if(NOT ${same_location}) - file(LOCK ${target_directory}/${target_filename}.lock GUARD FUNCTION TIMEOUT 300) - if("${source_file}" IS_NEWER_THAN "${target_directory}/${target_filename}") + file(LOCK ${target_file}.lock GUARD FUNCTION TIMEOUT 300) + file(SIZE "${source_file}" source_file_size) + if(EXISTS "${target_file}") + file(SIZE "${target_file}" target_file_size) + else() + set(target_file_size 0) + endif() + if((NOT source_file_size EQUAL target_file_size) OR "${source_file}" IS_NEWER_THAN "${target_file}") message(STATUS "Copying \"${source_file}\" to \"${target_directory}\"...") + file(MAKE_DIRECTORY "${full_target_directory}") file(COPY "${source_file}" DESTINATION "${target_directory}" FILE_PERMISSIONS @LY_COPY_PERMISSIONS@ FOLLOW_SYMLINK_CHAIN) - file(TOUCH_NOCREATE ${target_directory}/${target_filename}) + file(TOUCH_NOCREATE ${target_file}) endif() endif() endfunction() diff --git a/cmake/Platform/Linux/CompilerSettings_linux.cmake b/cmake/Platform/Linux/CompilerSettings_linux.cmake new file mode 100644 index 0000000000..9bb629c53b --- /dev/null +++ b/cmake/Platform/Linux/CompilerSettings_linux.cmake @@ -0,0 +1,34 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +if(NOT CMAKE_C_COMPILER AND NOT CMAKE_CXX_COMPILER AND NOT "$ENV{CC}" AND NOT "$ENV{CXX}") + set(path_search + /bin + /usr/bin + /usr/local/bin + /sbin + /usr/sbin + /usr/local/sbin + ) + list(TRANSFORM path_search APPEND "/clang-[0-9]*") + file(GLOB clang_versions ${path_search}) + if(clang_versions) + # Find and pick the highest installed version + list(SORT clang_versions COMPARE NATURAL) + list(GET clang_versions 0 clang_higher_version_path) + string(REGEX MATCH "clang-([0-9.]*)" clang_higher_version ${clang_higher_version_path}) + if(CMAKE_MATCH_1) + set(CMAKE_C_COMPILER clang-${CMAKE_MATCH_1}) + set(CMAKE_CXX_COMPILER clang++-${CMAKE_MATCH_1}) + else() + message(FATAL_ERROR "Clang not found, please install clang") + endif() + else() + message(FATAL_ERROR "Clang not found, please install clang") + endif() +endif() diff --git a/cmake/Platform/Linux/Install_linux.cmake b/cmake/Platform/Linux/Install_linux.cmake index 02baa6e61e..0f5494131a 100644 --- a/cmake/Platform/Linux/Install_linux.cmake +++ b/cmake/Platform/Linux/Install_linux.cmake @@ -9,14 +9,27 @@ #! ly_setup_runtime_dependencies_copy_function_override: Linux-specific copy function to handle RPATH fixes set(ly_copy_template [[ function(ly_copy source_file target_directory) - file(COPY "${source_file}" DESTINATION "${target_directory}" FILE_PERMISSIONS @LY_COPY_PERMISSIONS@ FOLLOW_SYMLINK_CHAIN) - get_filename_component(target_filename_ext "${source_file}" LAST_EXT) - if("${source_file}" MATCHES "qt/plugins" AND "${target_filename_ext}" STREQUAL ".so") - get_filename_component(target_filename "${source_file}" NAME) - file(RPATH_CHANGE FILE "${target_directory}/${target_filename}" OLD_RPATH "\$ORIGIN/../../lib" NEW_RPATH "\$ORIGIN/..") - elseif("${source_file}" MATCHES "lrelease") - get_filename_component(target_filename "${source_file}" NAME) - file(RPATH_CHANGE FILE "${target_directory}/${target_filename}" OLD_RPATH "\$ORIGIN/../lib" NEW_RPATH "\$ORIGIN") + cmake_path(GET source_file FILENAME target_filename) + cmake_path(APPEND full_target_directory "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}" "${target_directory}") + cmake_path(APPEND target_file "${full_target_directory}" "${target_filename}") + if("${source_file}" IS_NEWER_THAN "${target_file}") + message(STATUS "Copying ${source_file} to ${full_target_directory}...") + file(MAKE_DIRECTORY "${full_target_directory}") + file(COPY "${source_file}" DESTINATION "${full_target_directory}" FILE_PERMISSIONS @LY_COPY_PERMISSIONS@ FOLLOW_SYMLINK_CHAIN) + file(TOUCH_NOCREATE "${target_file}") + + # Special case for install + cmake_PATH(GET source_file EXTENSION target_filename_ext) + if("${target_filename_ext}" STREQUAL ".so") + if("${source_file}" MATCHES "qt/plugins") + file(RPATH_CHANGE FILE "${target_file}" OLD_RPATH "\$ORIGIN/../../lib" NEW_RPATH "\$ORIGIN/..") + endif() + if(CMAKE_INSTALL_DO_STRIP) + execute_process(COMMAND @CMAKE_STRIP@ "${target_file}") + endif() + elseif("${source_file}" MATCHES "lrelease") + file(RPATH_CHANGE FILE "${target_file}" OLD_RPATH "\$ORIGIN/../lib" NEW_RPATH "\$ORIGIN") + endif() endif() endfunction()]]) diff --git a/cmake/Platform/Linux/PAL_linux.cmake b/cmake/Platform/Linux/PAL_linux.cmake index e74adb287e..b7fd062c8c 100644 --- a/cmake/Platform/Linux/PAL_linux.cmake +++ b/cmake/Platform/Linux/PAL_linux.cmake @@ -16,14 +16,14 @@ ly_set(PAL_TRAIT_BUILD_TESTS_SUPPORTED TRUE) ly_set(PAL_TRAIT_BUILD_UNITY_SUPPORTED TRUE) ly_set(PAL_TRAIT_BUILD_UNITY_EXCLUDE_EXTENSIONS) ly_set(PAL_TRAIT_BUILD_EXCLUDE_ALL_TEST_RUNS_FROM_IDE FALSE) -ly_set(PAL_TRAIT_BUILD_CPACK_SUPPORTED FALSE) +ly_set(PAL_TRAIT_BUILD_CPACK_SUPPORTED TRUE) ly_set(PAL_TRAIT_PROF_PIX_SUPPORTED FALSE) # Test library support ly_set(PAL_TRAIT_TEST_GOOGLE_TEST_SUPPORTED TRUE) ly_set(PAL_TRAIT_TEST_GOOGLE_BENCHMARK_SUPPORTED TRUE) -ly_set(PAL_TRAIT_TEST_LYTESTTOOLS_SUPPORTED FALSE) +ly_set(PAL_TRAIT_TEST_LYTESTTOOLS_SUPPORTED TRUE) ly_set(PAL_TRAIT_TEST_PYTEST_SUPPORTED TRUE) ly_set(PAL_TRAIT_TEST_TARGET_TYPE MODULE) diff --git a/cmake/Platform/Linux/Packaging/postinst.in b/cmake/Platform/Linux/Packaging/postinst.in new file mode 100644 index 0000000000..c6c0ba228d --- /dev/null +++ b/cmake/Platform/Linux/Packaging/postinst.in @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +set -o errexit # exit on the first failure encountered + +{ + if [[ ! -f "/usr/lib/x86_64-linux-gnu/libffi.so.6" ]]; then + sudo ln -s /usr/lib/x86_64-linux-gnu/libffi.so.7 /usr/lib/x86_64-linux-gnu/libffi.so.6 + fi + + pushd @CPACK_PACKAGING_INSTALL_PREFIX@ + python/get_python.sh + chown -R $SUDO_USER . + popd +} &> /dev/null # hide output diff --git a/cmake/Platform/Linux/Packaging/postrm.in b/cmake/Platform/Linux/Packaging/postrm.in new file mode 100644 index 0000000000..acda38bf1e --- /dev/null +++ b/cmake/Platform/Linux/Packaging/postrm.in @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +set -o errexit # exit on the first failure encountered + +{ + pushd @CPACK_PACKAGING_INSTALL_PREFIX@ + popd +} &> /dev/null # hide output diff --git a/cmake/Platform/Linux/Packaging/prerm.in b/cmake/Platform/Linux/Packaging/prerm.in new file mode 100644 index 0000000000..5595d7010f --- /dev/null +++ b/cmake/Platform/Linux/Packaging/prerm.in @@ -0,0 +1,23 @@ +#!/usr/bin/env bash +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +set -o errexit # exit on the first failure encountered + +{ + # We dont remove this symlink that we potentially created because the user could have + # installed themselves. + #if [[ -L "/usr/lib/x86_64-linux-gnu/libffi.so.6" ]]; then + # sudo rm /usr/lib/x86_64-linux-gnu/libffi.so.6 + #fi + + pushd @CPACK_PACKAGING_INSTALL_PREFIX@ + # delete python downloads + rm -rf python/downloaded_packages python/runtime + popd +} &> /dev/null # hide output diff --git a/cmake/Platform/Linux/PackagingPostBuild_linux.cmake b/cmake/Platform/Linux/PackagingPostBuild_linux.cmake new file mode 100644 index 0000000000..d92ee908fd --- /dev/null +++ b/cmake/Platform/Linux/PackagingPostBuild_linux.cmake @@ -0,0 +1,62 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +file(REAL_PATH "${CPACK_SOURCE_DIR}/.." LY_ROOT_FOLDER) +include(${LY_ROOT_FOLDER}/cmake/Platform/Common/PackagingPostBuild_common.cmake) + +file(${CPACK_PACKAGE_CHECKSUM} ${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}.deb file_checksum) +file(WRITE ${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}.deb.sha256 "${file_checksum} ${CPACK_PACKAGE_FILE_NAME}.deb") + +if(CPACK_UPLOAD_URL) + + # use the internal default path if somehow not specified from cpack_configure_downloads + if(NOT CPACK_UPLOAD_DIRECTORY) + set(CPACK_UPLOAD_DIRECTORY ${CPACK_PACKAGE_DIRECTORY}/CPackUploads) + endif() + + # Copy the artifacts intended to be uploaded to a remote server into the folder specified + # through CPACK_UPLOAD_DIRECTORY. This mimics the same process cpack does natively for + # some other frameworks that have built-in online installer support. + message(STATUS "Copying packaging artifacts to upload directory...") + file(REMOVE_RECURSE ${CPACK_UPLOAD_DIRECTORY}) + file(GLOB _artifacts + "${CPACK_TOPLEVEL_DIRECTORY}/*.deb" + "${CPACK_TOPLEVEL_DIRECTORY}/*.sha256" + ) + file(COPY ${_artifacts} + DESTINATION ${CPACK_UPLOAD_DIRECTORY} + ) + message(STATUS "Artifacts copied to ${CPACK_UPLOAD_DIRECTORY}") + + # TODO: copy gpg file to CPACK_UPLOAD_DIRECTORY + + ly_upload_to_url( + ${CPACK_UPLOAD_URL} + ${CPACK_UPLOAD_DIRECTORY} + ".*(.deb|.gpg|.sha256)$" + ) + + # for auto tagged builds, we will also upload a second copy of just the boostrapper + # to a special "Latest" folder under the branch in place of the commit date/hash + if(CPACK_AUTO_GEN_TAG) + + set(latest_deb_package "${CPACK_UPLOAD_DIRECTORY}/${CPACK_PACKAGE_NAME}_latest.deb") + file(COPY_FILE + ${CPACK_UPLOAD_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}.deb + ${latest_deb_package} + ) + ly_upload_to_latest(${CPACK_UPLOAD_URL} ${latest_deb_package}) + + # TODO: upload gpg file to latest + + # Generate a checksum file for latest and upload it + set(latest_hash_file "${CPACK_UPLOAD_DIRECTORY}/${CPACK_PACKAGE_NAME}_latest.deb.sha256") + file(WRITE "${latest_hash_file}" "${file_checksum} ${CPACK_PACKAGE_NAME}_latest.deb") + ly_upload_to_latest(${CPACK_UPLOAD_URL} "${latest_hash_file}") + endif() +endif() diff --git a/cmake/Platform/Linux/PackagingPreBuild_linux.cmake b/cmake/Platform/Linux/PackagingPreBuild_linux.cmake new file mode 100644 index 0000000000..31dc393307 --- /dev/null +++ b/cmake/Platform/Linux/PackagingPreBuild_linux.cmake @@ -0,0 +1,16 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +file(REAL_PATH "${CPACK_SOURCE_DIR}/.." LY_ROOT_FOLDER) +include(${LY_ROOT_FOLDER}/cmake/Platform/Common/PackagingPreBuild_common.cmake) + +if(NOT CPACK_UPLOAD_URL) # Skip signing if we are not uploading the package + return() +endif() + +# TODO: do signing diff --git a/cmake/Platform/Linux/Packaging_linux.cmake b/cmake/Platform/Linux/Packaging_linux.cmake new file mode 100644 index 0000000000..2e178429c3 --- /dev/null +++ b/cmake/Platform/Linux/Packaging_linux.cmake @@ -0,0 +1,56 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +set(CPACK_GENERATOR DEB) + +set(CPACK_PACKAGING_INSTALL_PREFIX "/opt/${CPACK_PACKAGE_NAME}/${LY_VERSION_STRING}") + +set(_cmake_package_name "cmake-${CPACK_DESIRED_CMAKE_VERSION}-linux-x86_64") +set(CPACK_CMAKE_PACKAGE_FILE "${_cmake_package_name}.tar.gz") +set(CPACK_CMAKE_PACKAGE_HASH "3f827544f9c82e74ddf5016461fdfcfea4ede58a26f82612f473bf6bfad8bfc2") + +# get all the package dependencies, extracted from scripts\build\build_node\Platform\Linux\package-list.ubuntu-focal.txt +set(package_dependencies + libffi7 + clang-12 + ninja-build + # Build Libraries + libglu1-mesa-dev # For Qt (GL dependency) + libxcb-xinerama0 # For Qt plugins at runtime + libxcb-xinput0 # For Qt plugins at runtime + libfontconfig1-dev # For Qt plugins at runtime + libcurl4-openssl-dev # For HttpRequestor + # libsdl2-dev # for WWise/Audio + libxcb-xkb-dev # For xcb keyboard input + libxkbcommon-x11-dev # For xcb keyboard input + libxkbcommon-dev # For xcb keyboard input + libxcb-xfixes0-dev # For mouse input + libxcb-xinput-dev # For mouse input + zlib1g-dev + mesa-common-dev +) +list(JOIN package_dependencies "," CPACK_DEBIAN_PACKAGE_DEPENDS) + +# Post-installation and pre/post removal scripts +configure_file("${LY_ROOT_FOLDER}/cmake/Platform/${PAL_PLATFORM_NAME}/Packaging/postinst.in" + "${CMAKE_BINARY_DIR}/cmake/Platform/${PAL_PLATFORM_NAME}/Packaging/postinst" + @ONLY +) +configure_file("${LY_ROOT_FOLDER}/cmake/Platform/${PAL_PLATFORM_NAME}/Packaging/prerm.in" + "${CMAKE_BINARY_DIR}/cmake/Platform/${PAL_PLATFORM_NAME}/Packaging/prerm" + @ONLY +) +configure_file("${LY_ROOT_FOLDER}/cmake/Platform/${PAL_PLATFORM_NAME}/Packaging/postrm.in" + "${CMAKE_BINARY_DIR}/cmake/Platform/${PAL_PLATFORM_NAME}/Packaging/postrm" + @ONLY +) +set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA + ${CMAKE_BINARY_DIR}/cmake/Platform/Linux/Packaging/postinst + ${CMAKE_BINARY_DIR}/cmake/Platform/Linux/Packaging/prerm + ${CMAKE_BINARY_DIR}/cmake/Platform/Linux/Packaging/postrm +) diff --git a/cmake/Platform/Linux/platform_linux_files.cmake b/cmake/Platform/Linux/platform_linux_files.cmake index fa5545cd26..d30959b8d2 100644 --- a/cmake/Platform/Linux/platform_linux_files.cmake +++ b/cmake/Platform/Linux/platform_linux_files.cmake @@ -10,11 +10,19 @@ set(FILES ../Common/Configurations_common.cmake ../Common/Clang/Configurations_clang.cmake ../Common/Install_common.cmake + ../Common/PackagingPostBuild_common.cmake + ../Common/PackagingPreBuild_common.cmake + CompilerSettings_linux.cmake Configurations_linux.cmake Install_linux.cmake LYTestWrappers_linux.cmake LYWrappers_linux.cmake + Packaging_linux.cmake + PackagingPostBuild_linux.cmake + PackagingPreBuild_linux.cmake PAL_linux.cmake PALDetection_linux.cmake RPathChange.cmake + runtime_dependencies_linux.cmake.in + RuntimeDependencies_linux.cmake ) diff --git a/cmake/Platform/Linux/runtime_dependencies_linux.cmake.in b/cmake/Platform/Linux/runtime_dependencies_linux.cmake.in index 394252e284..4ccf123e27 100644 --- a/cmake/Platform/Linux/runtime_dependencies_linux.cmake.in +++ b/cmake/Platform/Linux/runtime_dependencies_linux.cmake.in @@ -9,23 +9,33 @@ cmake_policy(SET CMP0012 NEW) # new policy for the if that evaluates a boolean out of "if(NOT ${same_location})" function(ly_copy source_file target_directory) - get_filename_component(target_filename "${source_file}" NAME) - get_filename_component(target_filename_ext "${source_file}" LAST_EXT) - cmake_path(COMPARE "${source_file}" EQUAL "${target_directory}/${target_filename}" same_location) + cmake_path(GET source_file FILENAME target_filename) + cmake_path(APPEND target_file "${target_directory}" "${target_filename}") + cmake_path(COMPARE "${source_file}" EQUAL "${target_file}" same_location) if(NOT ${same_location}) - file(LOCK ${target_directory}/${target_filename}.lock GUARD FUNCTION TIMEOUT 300) - if("${source_file}" IS_NEWER_THAN "${target_directory}/${target_filename}") + file(LOCK ${target_file}.lock GUARD FUNCTION TIMEOUT 300) + file(SIZE "${source_file}" source_file_size) + if(EXISTS "${target_file}") + file(SIZE "${target_file}" target_file_size) + else() + set(target_file_size 0) + endif() + if((NOT source_file_size EQUAL target_file_size) OR "${source_file}" IS_NEWER_THAN "${target_file}") + message(STATUS "Copying \"${source_file}\" to \"${target_directory}\"...") + file(MAKE_DIRECTORY "${full_target_directory}") file(COPY "${source_file}" DESTINATION "${target_directory}" FILE_PERMISSIONS @LY_COPY_PERMISSIONS@ FOLLOW_SYMLINK_CHAIN) - + file(TOUCH_NOCREATE "${target_file}") + # Special case, shared libraries that are copied from qt/plugins have their RPATH set to \$ORIGIN/../../lib # which is the correct relative path based on the source location. But when we copy it to their subfolder, # the rpath needs to be adjusted to the parent ($ORIGIN/..) if("${source_file}" MATCHES "qt/plugins" AND "${target_filename_ext}" STREQUAL ".so") - file(RPATH_CHANGE FILE "${target_directory}/${target_filename}" OLD_RPATH "\$ORIGIN/../../lib" NEW_RPATH "\$ORIGIN/..") + file(RPATH_CHANGE FILE "${target_file}" OLD_RPATH "\$ORIGIN/../../lib" NEW_RPATH "\$ORIGIN/..") endif() - endif() endif() endfunction() @LY_COPY_COMMANDS@ + +file(TOUCH @STAMP_OUTPUT_FILE@) diff --git a/cmake/Platform/Mac/InstallUtils_mac.cmake.in b/cmake/Platform/Mac/InstallUtils_mac.cmake.in index d73c4db459..89ce4a59f2 100644 --- a/cmake/Platform/Mac/InstallUtils_mac.cmake.in +++ b/cmake/Platform/Mac/InstallUtils_mac.cmake.in @@ -130,27 +130,36 @@ endfunction() function(ly_copy source_file target_directory) - if("${source_file}" MATCHES "\\.[Ff]ramework[^\\.]") + if("${source_file}" MATCHES "\\.[Ff]ramework") # fixup origin to copy the whole Framework folder string(REGEX REPLACE "(.*\\.[Ff]ramework).*" "\\1" source_file "${source_file}") endif() - get_filename_component(target_filename "${source_file}" NAME) - file(COPY "${source_file}" DESTINATION "${target_directory}" FILE_PERMISSIONS @LY_COPY_PERMISSIONS@ FOLLOW_SYMLINK_CHAIN) - # Our Qt and Python frameworks aren't in the correct bundle format to be codesigned. - if("${target_filename}" MATCHES "(Qt[^.]+)\\.[Ff]ramework") - fixup_qt_framework(${CMAKE_MATCH_1} "${target_directory}/${target_filename}") - # For some Qt frameworks(QtCore), signing the bundle doesn't work because of bundle - # format issues(despite the fixes above). But once we've patched the framework above, there's - # only one executable that we need to sign so we can do it directly. - set(target_filename "${target_filename}/Versions/5/${CMAKE_MATCH_1}") - elseif("${target_filename}" MATCHES "Python.framework") - fixup_python_framework("${target_directory}/${target_filename}") - codesign_python_framework_binaries("${target_directory}/${target_filename}") + cmake_path(GET source_file FILENAME target_filename) + cmake_path(APPEND full_target_directory "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}" "${target_directory}") + cmake_path(APPEND target_file "${full_target_directory}" "${target_filename}") + + if("${source_file}" IS_NEWER_THAN "${target_file}") + message(STATUS "Copying ${source_file} to ${full_target_directory}...") + file(MAKE_DIRECTORY "${full_target_directory}") + file(COPY "${source_file}" DESTINATION "${full_target_directory}" FILE_PERMISSIONS @LY_COPY_PERMISSIONS@ FOLLOW_SYMLINK_CHAIN) + file(TOUCH_NOCREATE "${target_file}") + + # Our Qt and Python frameworks aren't in the correct bundle format to be codesigned. + if("${target_filename}" MATCHES "(Qt[^.]+)\\.[Ff]ramework") + fixup_qt_framework(${CMAKE_MATCH_1} "${target_file}") + # For some Qt frameworks(QtCore), signing the bundle doesn't work because of bundle + # format issues(despite the fixes above). But once we've patched the framework above, there's + # only one executable that we need to sign so we can do it directly. + set(target_filename "${target_filename}/Versions/5/${CMAKE_MATCH_1}") + elseif("${target_filename}" MATCHES "Python.framework") + fixup_python_framework("${target_file}") + codesign_python_framework_binaries("${target_file}") + endif() + codesign_file("${target_file}" "none") endif() - codesign_file("${target_directory}/${target_filename}" "none") endfunction() diff --git a/cmake/Platform/Mac/Install_mac.cmake b/cmake/Platform/Mac/Install_mac.cmake index c75d860c3e..d5ab5d0fed 100644 --- a/cmake/Platform/Mac/Install_mac.cmake +++ b/cmake/Platform/Mac/Install_mac.cmake @@ -147,4 +147,3 @@ function(ly_post_install_steps) ") endfunction() - diff --git a/cmake/Platform/Mac/PackagingPostBuild_mac.cmake b/cmake/Platform/Mac/PackagingPostBuild_mac.cmake new file mode 100644 index 0000000000..5fa3787c21 --- /dev/null +++ b/cmake/Platform/Mac/PackagingPostBuild_mac.cmake @@ -0,0 +1,10 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +file(REAL_PATH "${CPACK_SOURCE_DIR}/.." LY_ROOT_FOLDER) +include(${LY_ROOT_FOLDER}/cmake/Platform/Common/PackagingPostBuild_common.cmake) diff --git a/cmake/Platform/Mac/PackagingPreBuild_mac.cmake b/cmake/Platform/Mac/PackagingPreBuild_mac.cmake new file mode 100644 index 0000000000..1d30e21767 --- /dev/null +++ b/cmake/Platform/Mac/PackagingPreBuild_mac.cmake @@ -0,0 +1,10 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +file(REAL_PATH "${CPACK_SOURCE_DIR}/.." LY_ROOT_FOLDER) +include(${LY_ROOT_FOLDER}/cmake/Platform/Common/PackagingPreBuild_common.cmake) diff --git a/cmake/Platform/Mac/runtime_dependencies_mac.cmake.in b/cmake/Platform/Mac/runtime_dependencies_mac.cmake.in index 11551f608f..892a90640f 100644 --- a/cmake/Platform/Mac/runtime_dependencies_mac.cmake.in +++ b/cmake/Platform/Mac/runtime_dependencies_mac.cmake.in @@ -34,7 +34,7 @@ endif() function(ly_copy source_file target_directory) - get_filename_component(target_filename "${source_file}" NAME) + cmake_path(GET source_file FILENAME target_filename) # If target_directory is a bundle if("${target_directory}" MATCHES "\\.app/Contents/MacOS") @@ -113,20 +113,37 @@ function(ly_copy source_file target_directory) endif() - cmake_path(COMPARE "${source_file}" EQUAL "${target_directory}/${target_filename}" same_location) + cmake_path(APPEND target_file "${target_directory}" "${target_filename}") + cmake_path(COMPARE "${source_file}" EQUAL "${target_file}" same_location) if(NOT ${same_location}) if(NOT EXISTS "${target_directory}") file(MAKE_DIRECTORY "${target_directory}") endif() - if(NOT EXISTS "${target_directory}/${target_filename}" OR "${source_file}" IS_NEWER_THAN "${target_directory}/${target_filename}") - message(STATUS "Copying \"${source_file}\" to \"${target_directory}\"...") - if(NOT target_is_bundle) - # if it is a bundle, there is no contention about the files in the destination, each bundle target will copy everything - # we dont want these files to invalidate the bundle and cause a new signature - file(LOCK ${target_directory}/${target_filename}.lock GUARD FUNCTION TIMEOUT 300) + + set(is_framework FALSE) + if("${source_file}" MATCHES "\\.[Ff]ramework") + set(is_framework TRUE) + endif() + if(NOT is_framework) + # if it is a bundle, there is no contention about the files in the destination, each bundle target will copy everything + # we dont want these files to invalidate the bundle and cause a new signature + file(LOCK ${target_file}.lock GUARD FUNCTION TIMEOUT 300) + file(SIZE "${source_file}" source_file_size) + if(EXISTS "${target_file}") + file(SIZE "${target_file}" target_file_size) + else() + set(target_file_size 0) endif() + else() + set(source_file_size 0) + set(target_file_size 0) + endif() + + if((NOT source_file_size EQUAL target_file_size) OR "${source_file}" IS_NEWER_THAN "${target_file}") + message(STATUS "Copying \"${source_file}\" to \"${target_directory}\"...") + file(MAKE_DIRECTORY "${target_directory}") file(COPY "${source_file}" DESTINATION "${target_directory}" FILE_PERMISSIONS @LY_COPY_PERMISSIONS@ FOLLOW_SYMLINK_CHAIN) - file(TOUCH_NOCREATE ${target_directory}/${target_filename}) + file(TOUCH_NOCREATE "${target_file}") set(anything_new TRUE PARENT_SCOPE) endif() endif() diff --git a/cmake/Platform/Windows/PackagingPostBuild.cmake b/cmake/Platform/Windows/PackagingPostBuild_windows.cmake similarity index 52% rename from cmake/Platform/Windows/PackagingPostBuild.cmake rename to cmake/Platform/Windows/PackagingPostBuild_windows.cmake index ac457bea87..0993135c23 100644 --- a/cmake/Platform/Windows/PackagingPostBuild.cmake +++ b/cmake/Platform/Windows/PackagingPostBuild_windows.cmake @@ -6,6 +6,9 @@ # # +file(REAL_PATH "${CPACK_SOURCE_DIR}/.." LY_ROOT_FOLDER) +include(${LY_ROOT_FOLDER}/cmake/Platform/Common/PackagingPostBuild_common.cmake) + # convert the path to a windows style path using string replace because TO_NATIVE_PATH # only works on real paths string(REPLACE "/" "\\" _fixed_package_install_dir ${CPACK_PACKAGE_INSTALL_DIRECTORY}) @@ -56,8 +59,7 @@ set(_light_command ) if(CPACK_UPLOAD_URL) # Skip signing if we are not uploading the package - file(REAL_PATH "${CPACK_SOURCE_DIR}/.." _root_path) - file(TO_NATIVE_PATH "${_root_path}/scripts/signer/Platform/Windows/signer.ps1" _sign_script) + file(TO_NATIVE_PATH "${LY_ROOT_FOLDER}/scripts/signer/Platform/Windows/signer.ps1" _sign_script) unset(_signing_command) find_program(_psiexec_path psexec.exe) @@ -111,16 +113,12 @@ if(NOT ${_light_result} EQUAL 0) message(FATAL_ERROR "An error occurred invoking light.exe. ${_light_errors}") endif() -file(COPY ${_bootstrap_output_file} - DESTINATION ${CPACK_PACKAGE_DIRECTORY} -) - -message(STATUS "Bootstrap installer generated to ${CPACK_PACKAGE_DIRECTORY}/${_bootstrap_filename}") +message(STATUS "Bootstrap installer generated to ${_bootstrap_output_file}") if(CPACK_UPLOAD_URL) # Skip signing if we are not uploading the package - message(STATUS "Signing bootstrap installer in ${CPACK_PACKAGE_DIRECTORY}") + message(STATUS "Signing bootstrap installer in ${_bootstrap_output_file}") execute_process( - COMMAND ${_signing_command} -bootstrapPath ${CPACK_PACKAGE_DIRECTORY}/${_bootstrap_filename} + COMMAND ${_signing_command} -bootstrapPath ${_bootstrap_output_file} RESULT_VARIABLE _signing_result ERROR_VARIABLE _signing_errors OUTPUT_VARIABLE _signing_output @@ -137,113 +135,32 @@ if(NOT CPACK_UPLOAD_DIRECTORY) set(CPACK_UPLOAD_DIRECTORY ${CPACK_PACKAGE_DIRECTORY}/CPackUploads) endif() -# copy the artifacts intended to be uploaded to a remote server into the folder specified -# through cpack_configure_downloads. this mimics the same process cpack does natively for +# Copy the artifacts intended to be uploaded to a remote server into the folder specified +# through CPACK_UPLOAD_DIRECTORY. This mimics the same process cpack does natively for # some other frameworks that have built-in online installer support. -message(STATUS "Copying installer artifacts to upload directory...") +message(STATUS "Copying packaging artifacts to upload directory...") file(REMOVE_RECURSE ${CPACK_UPLOAD_DIRECTORY}) -file(GLOB _artifacts "${_cpack_wix_out_dir}/*.msi" "${_cpack_wix_out_dir}/*.cab") +file(GLOB _artifacts + "${_cpack_wix_out_dir}/*.msi" + "${_cpack_wix_out_dir}/*.cab" + "${_cpack_wix_out_dir}/*.exe" +) file(COPY ${_artifacts} DESTINATION ${CPACK_UPLOAD_DIRECTORY} ) message(STATUS "Artifacts copied to ${CPACK_UPLOAD_DIRECTORY}") -if(NOT CPACK_UPLOAD_URL) - return() -endif() - -file(TO_NATIVE_PATH "${_cpack_wix_out_dir}" _cpack_wix_out_dir) -file(TO_NATIVE_PATH "${_root_path}/python/python.cmd" _python_cmd) -file(TO_NATIVE_PATH "${_root_path}/scripts/build/tools/upload_to_s3.py" _upload_script) - -function(upload_to_s3 in_url in_local_path in_file_regex) - - # strip the scheme and extract the bucket/key prefix from the URL - string(REPLACE "s3://" "" _stripped_url ${in_url}) - string(REPLACE "/" ";" _tokens ${_stripped_url}) - - list(POP_FRONT _tokens _bucket) - string(JOIN "/" _prefix ${_tokens}) - - set(_extra_args [[{"ACL":"bucket-owner-full-control"}]]) - - set(_upload_command - ${_python_cmd} -s - -u ${_upload_script} - --base_dir ${in_local_path} - --file_regex="${in_file_regex}" - --bucket ${_bucket} - --key_prefix ${_prefix} - --extra_args ${_extra_args} - ) - - if(CPACK_AWS_PROFILE) - list(APPEND _upload_command --profile ${CPACK_AWS_PROFILE}) - endif() - - execute_process( - COMMAND ${_upload_command} - RESULT_VARIABLE _upload_result - OUTPUT_VARIABLE _upload_output - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - - if (NOT ${_upload_result} EQUAL 0) - message(FATAL_ERROR "An error occurred uploading to s3.\nOutput:\n${_upload_output}") - endif() -endfunction() - -message(STATUS "Uploading artifacts to ${CPACK_UPLOAD_URL}") -upload_to_s3( - ${CPACK_UPLOAD_URL} - ${_cpack_wix_out_dir} - ".*(cab|exe|msi)$" -) -message(STATUS "Artifact uploading complete!") - -# for auto tagged builds, we will also upload a second copy of just the boostrapper -# to a special "Latest" folder under the branch in place of the commit date/hash -if(CPACK_AUTO_GEN_TAG) - message(STATUS "Updating latest tagged build") - - # make sure we can extra the commit info from the URL first - string(REGEX MATCH "([0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9a-zA-Z]+)" - _commit_info ${CPACK_UPLOAD_URL} - ) - if(NOT _commit_info) - message(FATAL_ERROR "Failed to extract the build tag") - endif() - - set(_temp_dir ${_cpack_wix_out_dir}/temp) - if(NOT EXISTS ${_temp_dir}) - file(MAKE_DIRECTORY ${_temp_dir}) - endif() - - # strip the version number form the exe name in the one uploaded to latest - string(TOLOWER "${CPACK_PACKAGE_NAME}_installer.exe" _non_versioned_exe) - set(_temp_exe_copy ${_temp_dir}/${_non_versioned_exe}) - - file(COPY ${_bootstrap_output_file} DESTINATION ${_temp_dir}) - file(RENAME "${_temp_dir}/${_bootstrap_filename}" ${_temp_exe_copy}) - - # include the commit info in a text file that will live next to the exe - set(_temp_info_file ${_temp_dir}/build_tag.txt) - file(WRITE ${_temp_info_file} ${_commit_info}) - - # update the URL and upload - string(REPLACE - ${_commit_info} "Latest" - _latest_upload_url ${CPACK_UPLOAD_URL} - ) - - upload_to_s3( - ${_latest_upload_url} - ${_temp_dir} - ".*(${_non_versioned_exe}|build_tag.txt)$" - ) - - # cleanup the temp files - file(REMOVE_RECURSE ${_temp_dir}) - - message(STATUS "Latest build update complete!") +if(CPACK_UPLOAD_URL) + file(TO_NATIVE_PATH "${_cpack_wix_out_dir}" _cpack_wix_out_dir) + ly_upload_to_url( + ${CPACK_UPLOAD_URL} + ${_cpack_wix_out_dir} + ".*(cab|exe|msi)$" + ) + + # for auto tagged builds, we will also upload a second copy of just the boostrapper + # to a special "Latest" folder under the branch in place of the commit date/hash + if(CPACK_AUTO_GEN_TAG) + ly_upload_to_latest(${CPACK_UPLOAD_URL} ${_bootstrap_output_file}) + endif() endif() diff --git a/cmake/Platform/Windows/PackagingPreBuild.cmake b/cmake/Platform/Windows/PackagingPreBuild_windows.cmake similarity index 93% rename from cmake/Platform/Windows/PackagingPreBuild.cmake rename to cmake/Platform/Windows/PackagingPreBuild_windows.cmake index 7f2eedf352..29995518da 100644 --- a/cmake/Platform/Windows/PackagingPreBuild.cmake +++ b/cmake/Platform/Windows/PackagingPreBuild_windows.cmake @@ -6,6 +6,9 @@ # # +file(REAL_PATH "${CPACK_SOURCE_DIR}/.." LY_ROOT_FOLDER) +include(${LY_ROOT_FOLDER}/cmake/Platform/Common/PackagingPreBuild_common.cmake) + if(NOT CPACK_UPLOAD_URL) # Skip signing if we are not uploading the package return() endif() diff --git a/cmake/Platform/Windows/Packaging_windows.cmake b/cmake/Platform/Windows/Packaging_windows.cmake index 7b8f5a6c19..f24e9dee1c 100644 --- a/cmake/Platform/Windows/Packaging_windows.cmake +++ b/cmake/Platform/Windows/Packaging_windows.cmake @@ -23,7 +23,6 @@ set(CPACK_WIX_ROOT ${LY_INSTALLER_WIX_ROOT}) set(CPACK_GENERATOR WIX) -set(CPACK_THREADS 0) set(_cmake_package_name "cmake-${CPACK_DESIRED_CMAKE_VERSION}-windows-x86_64") set(CPACK_CMAKE_PACKAGE_FILE "${_cmake_package_name}.zip") set(CPACK_CMAKE_PACKAGE_HASH "15a49e2ab81c1822d75b1b1a92f7863f58e31f6d6aac1c4103eef2b071be3112") @@ -105,47 +104,35 @@ set(_raw_text_license [[ #(loc.InstallEulaAcceptance) ]]) -# The offline installer generation will be a single monolithic MSI. The WIX burn tool for the bootstrapper EXE has a size limitation. -# So we will exclude the generation of the boostrapper EXE in the offline case. -if(LY_INSTALLER_DOWNLOAD_URL) - set(WIX_THEME_WARNING_IMAGE ${CPACK_SOURCE_DIR}/Platform/Windows/Packaging/warning.png) +set(WIX_THEME_WARNING_IMAGE ${CPACK_SOURCE_DIR}/Platform/Windows/Packaging/warning.png) - if(LY_INSTALLER_LICENSE_URL) - set(WIX_THEME_INSTALL_LICENSE_ELEMENTS ${_hyperlink_license}) - set(WIX_THEME_EULA_ACCEPTANCE_TEXT "<a href=\"#\">Terms of Use</a>") - else() - set(WIX_THEME_INSTALL_LICENSE_ELEMENTS ${_raw_text_license}) - set(WIX_THEME_EULA_ACCEPTANCE_TEXT "Terms of Use above") - endif() - - # theme ux file - configure_file( - "${CPACK_SOURCE_DIR}/Platform/Windows/Packaging/BootstrapperTheme.xml.in" - "${CPACK_BINARY_DIR}/BootstrapperTheme.xml" - @ONLY - ) - - # theme localization file - configure_file( - "${CPACK_SOURCE_DIR}/Platform/Windows/Packaging/BootstrapperTheme.wxl.in" - "${CPACK_BINARY_DIR}/BootstrapperTheme.wxl" - @ONLY - ) - - set(_embed_artifacts "no") - - # the bootstrapper will at the very least need a different upgrade guid - generate_wix_guid(CPACK_WIX_BOOTSTRAP_UPGRADE_GUID "${_guid_seed_base}_Bootstrap_UpgradeCode") - - set(CPACK_PRE_BUILD_SCRIPTS - ${CPACK_SOURCE_DIR}/Platform/Windows/PackagingPreBuild.cmake - ) - - set(CPACK_POST_BUILD_SCRIPTS - ${CPACK_SOURCE_DIR}/Platform/Windows/PackagingPostBuild.cmake - ) +if(LY_INSTALLER_LICENSE_URL) + set(WIX_THEME_INSTALL_LICENSE_ELEMENTS ${_hyperlink_license}) + set(WIX_THEME_EULA_ACCEPTANCE_TEXT "<a href=\"#\">Terms of Use</a>") +else() + set(WIX_THEME_INSTALL_LICENSE_ELEMENTS ${_raw_text_license}) + set(WIX_THEME_EULA_ACCEPTANCE_TEXT "Terms of Use above") endif() +# theme ux file +configure_file( + "${CPACK_SOURCE_DIR}/Platform/Windows/Packaging/BootstrapperTheme.xml.in" + "${CPACK_BINARY_DIR}/BootstrapperTheme.xml" + @ONLY +) + +# theme localization file +configure_file( + "${CPACK_SOURCE_DIR}/Platform/Windows/Packaging/BootstrapperTheme.wxl.in" + "${CPACK_BINARY_DIR}/BootstrapperTheme.wxl" + @ONLY +) + +set(_embed_artifacts "no") + +# the bootstrapper will at the very least need a different upgrade guid +generate_wix_guid(CPACK_WIX_BOOTSTRAP_UPGRADE_GUID "${_guid_seed_base}_Bootstrap_UpgradeCode") + set(CPACK_WIX_CANDLE_EXTRA_FLAGS -dCPACK_EMBED_ARTIFACTS=${_embed_artifacts} -dCPACK_CMAKE_PACKAGE_NAME=${_cmake_package_name} diff --git a/cmake/Platform/Windows/platform_windows_files.cmake b/cmake/Platform/Windows/platform_windows_files.cmake index fcc47ab6eb..984d985380 100644 --- a/cmake/Platform/Windows/platform_windows_files.cmake +++ b/cmake/Platform/Windows/platform_windows_files.cmake @@ -15,6 +15,8 @@ set(FILES ../Common/MSVC/VisualStudio_common.cmake ../Common/Install_common.cmake ../Common/LYWrappers_default.cmake + ../Common/PackagingPostBuild_common.cmake + ../Common/PackagingPreBuild_common.cmake ../Common/TargetIncludeSystemDirectories_unsupported.cmake Configurations_windows.cmake LYTestWrappers_windows.cmake @@ -23,7 +25,8 @@ set(FILES PALDetection_windows.cmake Install_windows.cmake Packaging_windows.cmake - PackagingPostBuild.cmake + PackagingPostBuild_windows.cmake + PackagingPreBuild_windows.cmake Packaging/Bootstrapper.wxs Packaging/BootstrapperTheme.wxl.in Packaging/BootstrapperTheme.xml.in diff --git a/cmake/Projects.cmake b/cmake/Projects.cmake index 2c42533e35..13161c9e0f 100644 --- a/cmake/Projects.cmake +++ b/cmake/Projects.cmake @@ -183,7 +183,9 @@ if("${CMAKE_INSTALL_CONFIG_NAME}" MATCHES "^([Rr][Ee][Ll][Ee][Aa][Ss][Ee])$") cmake_path(GET gem_source_path_setreg FILENAME setreg_filename) list(APPEND artifacts_to_remove "${cache_product_path}/registry/${setreg_filename}") endforeach() - file(REMOVE ${artifacts_to_remove}) + if (artifacts_to_remove) + file(REMOVE ${artifacts_to_remove}) + endif() endif() ]=]) diff --git a/cmake/SettingsRegistry.cmake b/cmake/SettingsRegistry.cmake index c677aba7cf..e8c14ac8a0 100644 --- a/cmake/SettingsRegistry.cmake +++ b/cmake/SettingsRegistry.cmake @@ -33,6 +33,34 @@ set(gems_json_template [[ [=[ }]=] ) +#!ly_detect_cycle_through_visitation: Detects if there is a cycle based on a list of visited +# items. If the passed item is in the list, then there is a cycle. +# \arg:item - item being checked for the cycle +# \arg:visited_items - list of visited items +# \arg:visited_items_var - list of visited items variable, "item" will be added to the list +# \arg:cycle(variable) - empty string if there is no cycle (an empty string in cmake evaluates +# to false). If there is a cycle a cycle dependency string detailing the sequence of items +# that produce a cycle, e.g. A --> B --> C --> A +# +function(ly_detect_cycle_through_visitation item visited_items visited_items_var cycle) + if(item IN_LIST visited_items) + unset(dependency_cycle_loop) + foreach(visited_item IN LISTS visited_items) + string(APPEND dependency_cycle_loop ${visited_item}) + if(visited_item STREQUAL item) + string(APPEND dependency_cycle_loop " (cycle starts)") + endif() + string(APPEND dependency_cycle_loop " --> ") + endforeach() + string(APPEND dependency_cycle_loop "${item} (cycle ends)") + set(${cycle} "${dependency_cycle_loop}" PARENT_SCOPE) + else() + set(cycle "" PARENT_SCOPE) # no cycles + endif() + list(APPEND visited_items ${item}) + set(${visited_items_var} "${visited_items}" PARENT_SCOPE) +endfunction() + #!ly_get_gem_load_dependencies: Retrieves the list of "load" dependencies for a target # Visits through only MANUALLY_ADDED_DEPENDENCIES of targets with a GEM_MODULE property # to determine which gems a target needs to load @@ -44,6 +72,13 @@ function(ly_get_gem_load_dependencies ly_GEM_LOAD_DEPENDENCIES ly_TARGET) if(NOT TARGET ${ly_TARGET}) return() # Nothing to do endif() + # Internally we use a third parameter to pass the list of targets that we have traversed. This is + # used to detect runtime cycles + if(ARGC EQUAL 3) + set(ly_CYCLE_DETECTION_TARGETS ${ARGV2}) + else() + set(ly_CYCLE_DETECTION_TARGETS "") + endif() # Optimize the search by caching gem load dependencies get_property(are_dependencies_cached GLOBAL PROPERTY LY_GEM_LOAD_DEPENDENCIES_${ly_TARGET} SET) @@ -54,6 +89,13 @@ function(ly_get_gem_load_dependencies ly_GEM_LOAD_DEPENDENCIES ly_TARGET) return() endif() + # detect cycles + unset(cycle_detected) + ly_detect_cycle_through_visitation(${ly_TARGET} "${ly_CYCLE_DETECTION_TARGETS}" ly_CYCLE_DETECTION_TARGETS cycle_detected) + if(cycle_detected) + message(FATAL_ERROR "Runtime dependency detected: ${cycle_detected}") + endif() + unset(all_gem_load_dependencies) # For load dependencies, we want to copy over the dependency and traverse them @@ -69,7 +111,7 @@ function(ly_get_gem_load_dependencies ly_GEM_LOAD_DEPENDENCIES ly_TARGET) # and recurse into its manually added dependencies if (is_gem_target) unset(dependencies) - ly_get_gem_load_dependencies(dependencies ${dealias_load_dependency}) + ly_get_gem_load_dependencies(dependencies ${dealias_load_dependency} "${ly_CYCLE_DETECTION_TARGETS}") list(APPEND all_gem_load_dependencies ${dependencies}) list(APPEND all_gem_load_dependencies ${dealias_load_dependency}) endif() diff --git a/cmake/Version.cmake b/cmake/Version.cmake index 662e75c3db..de93ebefef 100644 --- a/cmake/Version.cmake +++ b/cmake/Version.cmake @@ -11,3 +11,8 @@ set(LY_VERSION_COPYRIGHT_YEAR ${current_year} CACHE STRING "Open 3D Engine's cop set(LY_VERSION_STRING "0.0.0.0" CACHE STRING "Open 3D Engine's version") set(LY_VERSION_BUILD_NUMBER 0 CACHE STRING "Open 3D Engine's build number") set(LY_VERSION_ENGINE_NAME "o3de" CACHE STRING "Open 3D Engine's engine name") + +if("$ENV{O3DE_VERSION}") + # Overriding through environment + set(LY_VERSION_STRING "$ENV{O3DE_VERSION}") +endif() diff --git a/engine.json b/engine.json index 05ccd0abfd..2d182c78aa 100644 --- a/engine.json +++ b/engine.json @@ -90,6 +90,7 @@ "AutomatedTesting" ], "templates": [ + "Templates/GemRepo", "Templates/AssetGem", "Templates/DefaultGem", "Templates/DefaultProject", diff --git a/pytest.ini b/pytest.ini index 65c93e0eb2..a229b19a4d 100644 --- a/pytest.ini +++ b/pytest.ini @@ -22,4 +22,5 @@ markers = SUITE_smoke: Tiny, quick tests of fundamental operation (tests with no SUITE_awsi: Time consuming AWS integration end-to-end tests # secondary markers which may appear alongisde a suite marker: REQUIRES_gpu: Tests which require a physical GPU + GROUP_tick: Tests which verify if systems update correctly with system ticks (for example, physics bodies should move smoothly) # custom markers not listed above will cause pytest to emit a typo warning diff --git a/scripts/build/Jenkins/Jenkinsfile b/scripts/build/Jenkins/Jenkinsfile index beb4a21620..3b5ca8fe60 100644 --- a/scripts/build/Jenkins/Jenkinsfile +++ b/scripts/build/Jenkins/Jenkinsfile @@ -102,10 +102,6 @@ def IsJobEnabled(branchName, buildTypeMap, pipelineName, platformName) { } } -def IsAPLogUpload(branchName, jobName) { - return !IsPullRequest(branchName) && jobName.toLowerCase().contains('asset') && env.AP_LOGS_S3_BUCKET -} - def GetRunningPipelineName(JENKINS_JOB_NAME) { // If the job name has an underscore def job_parts = JENKINS_JOB_NAME.tokenize('/')[0].tokenize('_') @@ -433,26 +429,35 @@ def ExportTestScreenshots(Map options, String branchName, String platformName, S } } -def UploadAPLogs(Map options, String branchName, String platformName, String jobName, String workspace, Map params) { +// All files are included by default. +// --include will only re-include files that have been excluded from an --exclude filter. +//See more details at https://docs.aws.amazon.com/cli/latest/reference/s3/#use-of-exclude-and-include-filters +def ArchiveArtifactsOnS3(String artifactsSource, String s3Prefix="", boolean recursive=false, List includes=[], List excludes=[]) { + if (!fileExists(s3Prefix)) { + palMkdir(s3Prefix) + } + palSh("echo ${env.BUILD_URL} > ${s3Prefix}/build_url.txt") + // archiveArtifacts is very slow, so we only archive one file and upload the rest artifacts to the same bucket using S3 CLI. + archiveArtifacts artifacts: "${s3Prefix}/build_url.txt" + def command = "aws s3 cp ${artifactsSource} s3://${env.JENKINS_ARTIFACTS_S3_BUCKET}/${env.JENKINS_JOB_NAME}/${env.BUILD_NUMBER}/artifacts/${s3Prefix} " + excludes.each{ exclude -> + command += "--exclude \"${exclude}\" " + } + includes.each{ include -> + command += "--include \"${include}\" " + } + if (recursive) command += "--recursive " + palSh(command, "Archiving artifacts to ${env.JENKINS_JOB_NAME}/${env.BUILD_NUMBER}/artifacts/${s3Prefix}", false) +} + +def UploadAPLogs(String platformName, String jobName, String workspace, Map params) { dir("${workspace}/${ENGINE_REPOSITORY_NAME}") { projects = params.CMAKE_LY_PROJECTS.split(",") projects.each{ project -> - def apLogsPath = "${project}/user/log" - def s3UploadScriptPath = "scripts/build/tools/upload_to_s3.py" - if(env.IS_UNIX) { - pythonPath = "${options.PYTHON_DIR}/python.sh" - } - else { - pythonPath = "${options.PYTHON_DIR}/python.cmd" - } - def command = "${pythonPath} -u ${s3UploadScriptPath} --base_dir ${apLogsPath} " + - "--file_regex \".*\" --bucket ${env.AP_LOGS_S3_BUCKET} " + - "--search_subdirectories True --key_prefix ${env.JENKINS_JOB_NAME}/${branchName}/${env.BUILD_NUMBER}/${platformName}/${jobName} " + - '--extra_args {\\"ACL\\":\\"bucket-owner-full-control\\"}' - palSh(command, "Uploading AP logs for job ${jobName} for branch ${branchName}", false) - } + ArchiveArtifactsOnS3("${project}/user/log", "ap_logs/${platformName}/${jobName}/${project}", true) } } +} def PostBuildCommonSteps(String workspace, boolean mount = true) { echo 'Starting post-build common steps...' @@ -517,10 +522,10 @@ def CreateExportTestScreenshotsStage(Map pipelineConfig, String branchName, Stri } } -def CreateUploadAPLogsStage(Map pipelineConfig, String branchName, String platformName, String jobName, String workspace, Map params) { +def CreateUploadAPLogsStage(String platformName, String jobName, String workspace, Map params) { return { stage("${jobName}_upload_ap_logs") { - UploadAPLogs(pipelineConfig, branchName, platformName, jobName, workspace, params) + UploadAPLogs(platformName, jobName, workspace, params) } } } @@ -576,8 +581,8 @@ def CreateSingleNode(Map pipelineConfig, def platform, def build_job, Map envVar error "Node disconnected during build: ${e}" // Error raised to retry stage on a new node } } - if (IsAPLogUpload(branchName, build_job_name)) { - CreateUploadAPLogsStage(pipelineConfig, branchName, platform.key, build_job_name, envVars['WORKSPACE'], platform.value.build_types[build_job_name].PARAMETERS).call() + if (build_job_name.toLowerCase().contains('asset') && env.IS_UPLOAD_AP_LOGS?.toBoolean()) { + CreateUploadAPLogsStage(platform.key, build_job_name, envVars['WORKSPACE'], platform.value.build_types[build_job_name].PARAMETERS).call() } // All other errors will be raised outside the retry block currentResult = envVars['ON_FAILURE_MARK'] ?: 'FAILURE' diff --git a/scripts/build/Platform/Linux/build_config.json b/scripts/build/Platform/Linux/build_config.json index 103f243aae..84d1726d47 100644 --- a/scripts/build/Platform/Linux/build_config.json +++ b/scripts/build/Platform/Linux/build_config.json @@ -37,7 +37,7 @@ "PARAMETERS": { "CONFIGURATION": "debug", "OUTPUT_DIRECTORY": "build/linux", - "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DCMAKE_C_COMPILER=clang-12 -DCMAKE_CXX_COMPILER=clang++-12 -DLY_PARALLEL_LINK_JOBS=4", + "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DLY_PARALLEL_LINK_JOBS=4", "CMAKE_LY_PROJECTS": "AutomatedTesting", "CMAKE_TARGET": "all" } @@ -53,7 +53,7 @@ "PARAMETERS": { "CONFIGURATION": "profile", "OUTPUT_DIRECTORY": "build/linux", - "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DCMAKE_C_COMPILER=clang-12 -DCMAKE_CXX_COMPILER=clang++-12 -DLY_PARALLEL_LINK_JOBS=4", + "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DLY_PARALLEL_LINK_JOBS=4", "CMAKE_LY_PROJECTS": "AutomatedTesting", "CMAKE_TARGET": "all" } @@ -66,7 +66,7 @@ "PARAMETERS": { "CONFIGURATION": "profile", "OUTPUT_DIRECTORY": "build/linux", - "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DCMAKE_C_COMPILER=clang-12 -DCMAKE_CXX_COMPILER=clang++-12 -DLY_UNITY_BUILD=FALSE -DLY_PARALLEL_LINK_JOBS=4", + "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DLY_UNITY_BUILD=FALSE -DLY_PARALLEL_LINK_JOBS=4", "CMAKE_LY_PROJECTS": "AutomatedTesting", "CMAKE_TARGET": "all" } @@ -80,10 +80,10 @@ "PARAMETERS": { "CONFIGURATION": "profile", "OUTPUT_DIRECTORY": "build/linux", - "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DCMAKE_C_COMPILER=clang-12 -DCMAKE_CXX_COMPILER=clang++-12 -DLY_PARALLEL_LINK_JOBS=4", + "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DLY_PARALLEL_LINK_JOBS=4", "CMAKE_LY_PROJECTS": "AutomatedTesting", "CMAKE_TARGET": "all", - "CTEST_OPTIONS": "-E Gem::EMotionFX.Editor.Tests -LE (SUITE_sandbox|SUITE_awsi) -L FRAMEWORK_googletest --no-tests=error", + "CTEST_OPTIONS": "-E (AutomatedTesting::Atom_TestSuite_Main|AutomatedTesting::PrefabTests|AutomatedTesting::TerrainTests_Main|Gem::EMotionFX.Editor.Tests) -L (SUITE_smoke|SUITE_main) -LE (REQUIRES_gpu) --no-tests=error", "TEST_RESULTS": "True" } }, @@ -93,10 +93,10 @@ "PARAMETERS": { "CONFIGURATION": "profile", "OUTPUT_DIRECTORY": "build/linux", - "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DCMAKE_C_COMPILER=clang-12 -DCMAKE_CXX_COMPILER=clang++-12 -DLY_UNITY_BUILD=FALSE -DLY_PARALLEL_LINK_JOBS=4", + "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DLY_UNITY_BUILD=FALSE -DLY_PARALLEL_LINK_JOBS=4", "CMAKE_LY_PROJECTS": "AutomatedTesting", "CMAKE_TARGET": "all", - "CTEST_OPTIONS": "-E Gem::EMotionFX.Editor.Tests -LE (SUITE_sandbox|SUITE_awsi) -L FRAMEWORK_googletest --no-tests=error", + "CTEST_OPTIONS": "-E (AutomatedTesting::Atom_TestSuite_Main|AutomatedTesting::PrefabTests|AutomatedTesting::TerrainTests_Main|Gem::EMotionFX.Editor.Tests) -L (SUITE_smoke|SUITE_main) -LE (REQUIRES_gpu) --no-tests=error", "TEST_RESULTS": "True" } }, @@ -110,7 +110,7 @@ "PARAMETERS": { "CONFIGURATION": "profile", "OUTPUT_DIRECTORY": "build/linux", - "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DCMAKE_C_COMPILER=clang-12 -DCMAKE_CXX_COMPILER=clang++-12 -DLY_PARALLEL_LINK_JOBS=4", + "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DLY_PARALLEL_LINK_JOBS=4", "CMAKE_LY_PROJECTS": "AutomatedTesting", "CMAKE_TARGET": "AssetProcessorBatch", "ASSET_PROCESSOR_BINARY": "bin/profile/AssetProcessorBatch", @@ -124,7 +124,7 @@ "PARAMETERS": { "CONFIGURATION": "profile", "OUTPUT_DIRECTORY": "build/linux", - "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DCMAKE_C_COMPILER=clang-12 -DCMAKE_CXX_COMPILER=clang++-12 -DLY_UNITY_BUILD=FALSE -DLY_PARALLEL_LINK_JOBS=4", + "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DLY_UNITY_BUILD=FALSE -DLY_PARALLEL_LINK_JOBS=4", "CMAKE_LY_PROJECTS": "AutomatedTesting", "CMAKE_TARGET": "AssetProcessorBatch", "ASSET_PROCESSOR_BINARY": "bin/profile/AssetProcessorBatch", @@ -142,7 +142,7 @@ "PARAMETERS": { "CONFIGURATION": "profile", "OUTPUT_DIRECTORY": "build/linux", - "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DCMAKE_C_COMPILER=clang-12 -DCMAKE_CXX_COMPILER=clang++-12 -DLY_PARALLEL_LINK_JOBS=4", + "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DLY_PARALLEL_LINK_JOBS=4", "CMAKE_LY_PROJECTS": "AutomatedTesting", "CMAKE_TARGET": "TEST_SUITE_periodic", "CTEST_OPTIONS": "-L (SUITE_periodic) --no-tests=error", @@ -162,7 +162,7 @@ "PARAMETERS": { "CONFIGURATION": "profile", "OUTPUT_DIRECTORY": "build/linux", - "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DCMAKE_C_COMPILER=clang-12 -DCMAKE_CXX_COMPILER=clang++-12 -DLY_PARALLEL_LINK_JOBS=4 -DO3DE_HOME_PATH=\"${WORKSPACE}/home\" -DO3DE_REGISTER_ENGINE_PATH=\"${WORKSPACE}/o3de\" -DO3DE_REGISTER_THIS_ENGINE=TRUE", + "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DLY_PARALLEL_LINK_JOBS=4", "CMAKE_LY_PROJECTS": "AutomatedTesting", "CMAKE_TARGET": "all", "CTEST_OPTIONS": "-L (SUITE_sandbox) --no-tests=error" @@ -178,7 +178,7 @@ "PARAMETERS": { "CONFIGURATION": "profile", "OUTPUT_DIRECTORY": "build/linux", - "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DCMAKE_C_COMPILER=clang-12 -DCMAKE_CXX_COMPILER=clang++-12 -DLY_PARALLEL_LINK_JOBS=4", + "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DLY_PARALLEL_LINK_JOBS=4", "CMAKE_LY_PROJECTS": "AutomatedTesting", "CMAKE_TARGET": "TEST_SUITE_benchmark", "CTEST_OPTIONS": "-L (SUITE_benchmark) --no-tests=error", @@ -195,7 +195,7 @@ "PARAMETERS": { "CONFIGURATION": "release", "OUTPUT_DIRECTORY": "build/linux", - "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DCMAKE_C_COMPILER=clang-12 -DCMAKE_CXX_COMPILER=clang++-12 -DLY_PARALLEL_LINK_JOBS=4", + "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DLY_PARALLEL_LINK_JOBS=4", "CMAKE_LY_PROJECTS": "AutomatedTesting", "CMAKE_TARGET": "all" } @@ -210,7 +210,7 @@ "PARAMETERS": { "CONFIGURATION": "release", "OUTPUT_DIRECTORY": "build/mono_linux", - "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DCMAKE_C_COMPILER=clang-12 -DCMAKE_CXX_COMPILER=clang++-12 -DLY_MONOLITHIC_GAME=TRUE -DLY_PARALLEL_LINK_JOBS=4", + "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DLY_MONOLITHIC_GAME=TRUE -DLY_PARALLEL_LINK_JOBS=4", "CMAKE_LY_PROJECTS": "AutomatedTesting", "CMAKE_TARGET": "all" } @@ -221,10 +221,25 @@ "PARAMETERS": { "CONFIGURATION": "profile", "OUTPUT_DIRECTORY": "build/linux", - "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DCMAKE_C_COMPILER=clang-12 -DCMAKE_CXX_COMPILER=clang++-12 -DLY_PARALLEL_LINK_JOBS=4 -DLY_DISABLE_TEST_MODULES=TRUE", + "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DLY_PARALLEL_LINK_JOBS=4 -DLY_DISABLE_TEST_MODULES=TRUE", "CMAKE_TARGET": "install" } }, + "installer": { + "TAGS": [ + "nightly-clean", + "nightly-installer" + ], + "COMMAND": "build_installer_linux.sh", + "PARAMETERS": { + "CONFIGURATION": "profile", + "OUTPUT_DIRECTORY": "build/linux", + "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DLY_PARALLEL_LINK_JOBS=4 -DLY_DISABLE_TEST_MODULES=TRUE -DLY_VERSION_ENGINE_NAME=o3de-sdk", + "EXTRA_CMAKE_OPTIONS": "-DLY_INSTALLER_AUTO_GEN_TAG=TRUE -DLY_INSTALLER_DOWNLOAD_URL=${INSTALLER_DOWNLOAD_URL} -DLY_INSTALLER_LICENSE_URL=${INSTALLER_DOWNLOAD_URL}/license", + "CPACK_OPTIONS": "-D CPACK_UPLOAD_URL=${CPACK_UPLOAD_URL}", + "CMAKE_TARGET": "all" + } + }, "install_profile_pipe": { "TAGS": [ "nightly-incremental", @@ -254,7 +269,7 @@ "COMMAND_CWD": "${WORKSPACE}/${PROJECT_REPOSITORY_NAME}", "CONFIGURATION": "profile", "OUTPUT_DIRECTORY": "build/linux", - "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DCMAKE_C_COMPILER=clang-12 -DCMAKE_CXX_COMPILER=clang++-12 -DLY_PARALLEL_LINK_JOBS=4 -DCMAKE_MODULE_PATH=${WORKSPACE}/o3de/install/cmake", + "CMAKE_OPTIONS": "-G 'Ninja Multi-Config' -DLY_PARALLEL_LINK_JOBS=4 -DCMAKE_MODULE_PATH=${WORKSPACE}/o3de/install/cmake", "CMAKE_TARGET": "all" } } diff --git a/scripts/build/Platform/Linux/build_installer_linux.sh b/scripts/build/Platform/Linux/build_installer_linux.sh new file mode 100755 index 0000000000..301eb5f16d --- /dev/null +++ b/scripts/build/Platform/Linux/build_installer_linux.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +set -o errexit # exit on the first failure encountered + +BASEDIR=$(dirname "$0") +source $BASEDIR/build_linux.sh + +source $BASEDIR/installer_linux.sh diff --git a/scripts/build/Platform/Linux/build_linux.sh b/scripts/build/Platform/Linux/build_linux.sh index ab51913550..c14d4b5073 100755 --- a/scripts/build/Platform/Linux/build_linux.sh +++ b/scripts/build/Platform/Linux/build_linux.sh @@ -37,13 +37,13 @@ else fi if [[ ! -z "$RUN_CONFIGURE" ]]; then # have to use eval since $CMAKE_OPTIONS (${EXTRA_CMAKE_OPTIONS}) contains quotes that need to be processed - echo [ci_build] ${CONFIGURE_CMD} + eval echo [ci_build] ${CONFIGURE_CMD} eval ${CONFIGURE_CMD} # Save the run only if success - echo "${CONFIGURE_CMD}" > ${LAST_CONFIGURE_CMD_FILE} + eval echo "${CONFIGURE_CMD}" > ${LAST_CONFIGURE_CMD_FILE} fi -echo [ci_build] cmake --build . --target ${CMAKE_TARGET} --config ${CONFIGURATION} -j $(grep -c processor /proc/cpuinfo) -- ${CMAKE_NATIVE_BUILD_ARGS} -cmake --build . --target ${CMAKE_TARGET} --config ${CONFIGURATION} -j $(grep -c processor /proc/cpuinfo) -- ${CMAKE_NATIVE_BUILD_ARGS} +eval echo [ci_build] cmake --build . --target ${CMAKE_TARGET} --config ${CONFIGURATION} -j $(grep -c processor /proc/cpuinfo) -- ${CMAKE_NATIVE_BUILD_ARGS} +eval cmake --build . --target ${CMAKE_TARGET} --config ${CONFIGURATION} -j $(grep -c processor /proc/cpuinfo) -- ${CMAKE_NATIVE_BUILD_ARGS} popd diff --git a/scripts/build/Platform/Linux/installer_linux.sh b/scripts/build/Platform/Linux/installer_linux.sh new file mode 100755 index 0000000000..3ded242522 --- /dev/null +++ b/scripts/build/Platform/Linux/installer_linux.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +set -o errexit # exit on the first failure encountered + +BASEDIR=$(dirname "$0") +source $BASEDIR/env_linux.sh + +mkdir -p ${OUTPUT_DIRECTORY} +SOURCE_DIRECTORY=${PWD} +pushd $OUTPUT_DIRECTORY + +if ! command -v cpack &> /dev/null; then + echo "[ci_build] CPack not found" + exit 1 +fi + +echo [ci_build] cpack --version +cpack --version + +eval echo [ci_build] cpack -C ${CONFIGURATION} ${CPACK_OPTIONS} +eval cpack -C ${CONFIGURATION} ${CPACK_OPTIONS} + +popd diff --git a/scripts/build/Platform/Windows/build_config.json b/scripts/build/Platform/Windows/build_config.json index 3260c9af79..6f1aaa1570 100644 --- a/scripts/build/Platform/Windows/build_config.json +++ b/scripts/build/Platform/Windows/build_config.json @@ -360,9 +360,9 @@ "CONFIGURATION": "profile", "OUTPUT_DIRECTORY": "build\\windows_vs2019", "CMAKE_OPTIONS": "-G \"Visual Studio 16 2019\" -DCMAKE_SYSTEM_VERSION=10.0 -DLY_DISABLE_TEST_MODULES=TRUE -DLY_VERSION_ENGINE_NAME=o3de-sdk -DLY_INSTALLER_WIX_ROOT=\"!WIX! \"", - "EXTRA_CMAKE_OPTIONS": "-DLY_INSTALLER_AUTO_GEN_TAG=ON -DLY_INSTALLER_DOWNLOAD_URL=!INSTALLER_DOWNLOAD_URL! -DLY_INSTALLER_LICENSE_URL=!INSTALLER_DOWNLOAD_URL!/license", - "CPACK_BUCKET": "%INSTALLER_BUCKET%", + "EXTRA_CMAKE_OPTIONS": "-DLY_INSTALLER_AUTO_GEN_TAG=TRUE -DLY_INSTALLER_DOWNLOAD_URL=!INSTALLER_DOWNLOAD_URL! -DLY_INSTALLER_LICENSE_URL=!INSTALLER_DOWNLOAD_URL!/license", "CMAKE_TARGET": "ALL_BUILD", + "CPACK_OPTIONS": "-D CPACK_UPLOAD_URL=\"!CPACK_UPLOAD_URL!\"", "CMAKE_NATIVE_BUILD_ARGS": "/m /nologo" } }, diff --git a/scripts/build/Platform/Windows/build_windows.cmd b/scripts/build/Platform/Windows/build_windows.cmd index b9e862e04f..6c3ce91397 100644 --- a/scripts/build/Platform/Windows/build_windows.cmd +++ b/scripts/build/Platform/Windows/build_windows.cmd @@ -9,13 +9,6 @@ REM SETLOCAL EnableDelayedExpansion -REM Jenkins reports MSB8029 when TMP/TEMP is not defined, define a dummy folder -SET TMP=%cd%/temp -SET TEMP=%cd%/temp -IF NOT EXIST %TMP% ( - MKDIR temp -) - CALL %~dp0env_windows.cmd IF NOT EXIST "%OUTPUT_DIRECTORY%" ( diff --git a/scripts/build/Platform/Windows/deploy_cdk_applications.cmd b/scripts/build/Platform/Windows/deploy_cdk_applications.cmd index 006e0158c0..f3d68d2fe8 100644 --- a/scripts/build/Platform/Windows/deploy_cdk_applications.cmd +++ b/scripts/build/Platform/Windows/deploy_cdk_applications.cmd @@ -7,7 +7,7 @@ REM SPDX-License-Identifier: Apache-2.0 OR MIT REM REM -REM Deploy the CDK applcations for AWS gems (Windows only) +REM Deploy the CDK applications for AWS gems (Windows only) REM Prerequisites: REM 1) Node.js is installed REM 2) Node.js version >= 10.13.0, except for versions 13.0.0 - 13.6.0. A version in active long-term support is recommended. @@ -57,7 +57,7 @@ IF ERRORLEVEL 1 ( exit /b 1 ) -CALL :DeployCDKApplication AWSCore "-c disable_access_log=true --all" +CALL :DeployCDKApplication AWSCore "-c disable_access_log=true -c remove_all_storage_on_destroy=true --all" IF ERRORLEVEL 1 ( exit /b 1 ) diff --git a/scripts/build/Platform/Windows/env_windows.cmd b/scripts/build/Platform/Windows/env_windows.cmd index f11d394519..a78946caf6 100644 --- a/scripts/build/Platform/Windows/env_windows.cmd +++ b/scripts/build/Platform/Windows/env_windows.cmd @@ -7,6 +7,10 @@ REM SPDX-License-Identifier: Apache-2.0 OR MIT REM REM +REM To get recursive folder creation +SETLOCAL EnableExtensions +SETLOCAL EnableDelayedExpansion + where /Q cmake IF NOT %ERRORLEVEL%==0 ( ECHO [ci_build] CMake not found @@ -18,6 +22,20 @@ IF NOT "%COMMAND_CWD%"=="" ( CD %COMMAND_CWD% ) +REM Jenkins reports MSB8029 when TMP/TEMP is not defined, define a dummy folder +IF NOT "%TMP%"=="" ( + IF NOT "%WORKSPACE_TMP%"=="" ( + SET TMP=%WORKSPACE_TMP% + SET TEMP=%WORKSPACE_TMP% + ) ELSE ( + SET TMP=%cd%/temp + SET TEMP=%cd%/temp + ) +) +IF NOT EXIST "!TMP!" ( + MKDIR "!TMP!" +) + EXIT /b 0 :error diff --git a/scripts/build/Platform/Windows/installer_windows.cmd b/scripts/build/Platform/Windows/installer_windows.cmd index 87f53adc7f..bbde450973 100644 --- a/scripts/build/Platform/Windows/installer_windows.cmd +++ b/scripts/build/Platform/Windows/installer_windows.cmd @@ -17,10 +17,12 @@ IF NOT EXIST %OUTPUT_DIRECTORY% ( ) PUSHD %OUTPUT_DIRECTORY% -REM Override the temporary directory used by wix to the workspace -SET "WIX_TEMP=!WORKSPACE_TMP!/wix" -IF NOT EXIST "%WIX_TEMP%" ( - MKDIR "%WIX_TEMP%" +REM Override the temporary directory used by wix to the workspace (if we have a WORKSPACE_TMP) +IF NOT "%WORKSPACE_TMP%"=="" ( + SET "WIX_TEMP=!WORKSPACE_TMP!/wix" + IF NOT EXIST "!WIX_TEMP!" ( + MKDIR "!WIX_TEMP!" + ) ) REM Make sure we are using the CMake version of CPack and not the one that comes with chocolatey @@ -47,10 +49,6 @@ IF ERRORLEVEL 1 ( GOTO :popd_error ) -IF NOT "%CPACK_BUCKET%"=="" ( - SET "CPACK_OPTIONS=-D CPACK_UPLOAD_URL=s3://%CPACK_BUCKET% %CPACK_OPTIONS%" -) - ECHO [ci_build] "!CPACK_PATH!" -C %CONFIGURATION% %CPACK_OPTIONS% "!CPACK_PATH!" -C %CONFIGURATION% %CPACK_OPTIONS% IF NOT %ERRORLEVEL%==0 ( diff --git a/scripts/build/Platform/iOS/build_config.json b/scripts/build/Platform/iOS/build_config.json index 895f74daae..ec2b763dda 100644 --- a/scripts/build/Platform/iOS/build_config.json +++ b/scripts/build/Platform/iOS/build_config.json @@ -76,7 +76,7 @@ "PARAMETERS": { "CONFIGURATION": "profile", "OUTPUT_DIRECTORY": "build/mac", - "CMAKE_OPTIONS": "-G Xcode -DO3DE_HOME_PATH=\"${WORKSPACE}/home\" -DO3DE_REGISTER_ENGINE_PATH=\"${WORKSPACE}/o3de\" -DO3DE_REGISTER_THIS_ENGINE=TRUE", + "CMAKE_OPTIONS": "-G Xcode", "CMAKE_LY_PROJECTS": "AutomatedTesting", "CMAKE_TARGET": "AssetProcessorBatch", "ASSET_PROCESSOR_BINARY": "bin/profile/AssetProcessorBatch", @@ -112,7 +112,7 @@ "PARAMETERS": { "CONFIGURATION": "profile", "OUTPUT_DIRECTORY": "build/ios_test", - "CMAKE_OPTIONS": "-G Xcode -DCMAKE_TOOLCHAIN_FILE=cmake/Platform/iOS/Toolchain_ios.cmake -DLY_MONOLITHIC_GAME=FALSE -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED=TRUE -DLY_IOS_CODE_SIGNING_IDENTITY=\"\" -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS=\"\" -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED=TRUE -DO3DE_HOME_PATH=\"${WORKSPACE}/home\" -DO3DE_REGISTER_ENGINE_PATH=\"${WORKSPACE}/o3de\" -DO3DE_REGISTER_THIS_ENGINE=TRUE", + "CMAKE_OPTIONS": "-G Xcode -DCMAKE_TOOLCHAIN_FILE=cmake/Platform/iOS/Toolchain_ios.cmake -DLY_MONOLITHIC_GAME=FALSE -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED=TRUE -DLY_IOS_CODE_SIGNING_IDENTITY=\"\" -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS=\"\" -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED=TRUE", "CMAKE_TARGET": "ALL_BUILD", "CMAKE_NATIVE_BUILD_ARGS": "", "TARGET_DEVICE_NAME": "Lumberyard", diff --git a/scripts/build/build_node/Platform/Linux/package-list.ubuntu-bionic.txt b/scripts/build/build_node/Platform/Linux/package-list.ubuntu-bionic.txt index 2af55ab180..30259a6dc7 100644 --- a/scripts/build/build_node/Platform/Linux/package-list.ubuntu-bionic.txt +++ b/scripts/build/build_node/Platform/Linux/package-list.ubuntu-bionic.txt @@ -12,7 +12,7 @@ libxcb-xinerama0 # For Qt plugins at runtime libxcb-xinput0 # For Qt plugins at runtime libfontconfig1-dev # For Qt plugins at runtime libcurl4-openssl-dev # For HttpRequestor -libsdl2-dev # For WWise/Audio +# libsdl2-dev # For WWise/Audio libxcb-xkb-dev # For xcb keyboard input libxkbcommon-x11-dev # For xcb keyboard input libxkbcommon-dev # For xcb keyboard input diff --git a/scripts/build/build_node/Platform/Linux/package-list.ubuntu-focal.txt b/scripts/build/build_node/Platform/Linux/package-list.ubuntu-focal.txt index e0e03cda90..71958d74bd 100644 --- a/scripts/build/build_node/Platform/Linux/package-list.ubuntu-focal.txt +++ b/scripts/build/build_node/Platform/Linux/package-list.ubuntu-focal.txt @@ -12,7 +12,7 @@ libxcb-xinerama0 # For Qt plugins at runtime libxcb-xinput0 # For Qt plugins at runtime libfontconfig1-dev # For Qt plugins at runtime libcurl4-openssl-dev # For HttpRequestor -libsdl2-dev # for WWise/Audio +# libsdl2-dev # for WWise/Audio libxcb-xkb-dev # For xcb keyboard input libxkbcommon-x11-dev # For xcb keyboard input libxkbcommon-dev # For xcb keyboard input diff --git a/scripts/build/tools/copy_file.py b/scripts/build/tools/copy_file.py new file mode 100644 index 0000000000..45b5e39d7a --- /dev/null +++ b/scripts/build/tools/copy_file.py @@ -0,0 +1,57 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +import argparse +import os +import sys +import glob +import shutil + + +def parse_args(): + parser = argparse.ArgumentParser() + parser.add_argument('-s', '--src-dir', dest='src_dir', required=True, help='Source directory to copy files from, if not specified, current directory is used.') + parser.add_argument('-r', '--file-regex', dest='file_regex', required=True, help='Globbing pattern used to match file names to copy.') + parser.add_argument('-t', '--target-dir', dest="target_dir", required=True, help='Target directory to copy files to.') + args = parser.parse_args() + if not os.path.isdir(args.src_dir): + print('ERROR: src_dir is not a valid directory.') + exit(1) + return args + + +def extended_path(path): + """ + Maximum Path Length Limitation on Windows is 260 characters, use extended-length path to bypass this limitation + """ + if sys.platform in ('win32', 'cli') and len(path) >= 260: + if path.startswith('\\'): + return r'\\?\UNC\{}'.format(path.lstrip('\\')) + else: + return r'\\?\{}'.format(path) + else: + return path + + +def copy_file(src_dir, file_regex, target_dir): + if not os.path.isdir(args.target_dir): + os.makedirs(target_dir) + for f in glob.glob(os.path.join(src_dir, file_regex), recursive=True): + if os.path.isfile(f): + relative_path = os.path.relpath(f, src_dir) + target_file_path = os.path.join(target_dir, relative_path) + target_file_dir = os.path.dirname(target_file_path) + if not os.path.isdir(target_file_dir): + os.makedirs(target_file_dir) + shutil.copy2(f, extended_path(target_file_path)) + print(f'{f} -> {target_file_path}') + + +if __name__ == "__main__": + args = parse_args() + copy_file(args.src_dir, args.file_regex, args.target_dir) diff --git a/scripts/o3de/o3de/disable_gem.py b/scripts/o3de/o3de/disable_gem.py index 01324d8500..158507fca1 100644 --- a/scripts/o3de/o3de/disable_gem.py +++ b/scripts/o3de/o3de/disable_gem.py @@ -69,7 +69,7 @@ def disable_gem_in_project(gem_name: str = None, return 1 gem_path = pathlib.Path(gem_path).resolve() # make sure this gem already exists if we're adding. We can always remove a gem. - if not gem_path.is_dir(): + if not gem_path.exists(): logger.error(f'Gem Path {gem_path} does not exist.') return 1 diff --git a/scripts/o3de/o3de/download.py b/scripts/o3de/o3de/download.py index 98f5d051a4..e88355bf06 100644 --- a/scripts/o3de/o3de/download.py +++ b/scripts/o3de/o3de/download.py @@ -20,6 +20,7 @@ import sys import urllib.parse import urllib.request import zipfile +from datetime import datetime from o3de import manifest, repo, utils, validation, register @@ -43,30 +44,34 @@ def validate_downloaded_zip_sha256(download_uri_json_data: dict, download_zip_pa try: sha256A = download_uri_json_data['sha256'] except KeyError as e: - logger.warn('SECURITY WARNING: The advertised o3de object you downloaded has no "sha256"!!! Be VERY careful!!!' + logger.warning('SECURITY WARNING: The advertised o3de object you downloaded has no "sha256"!!! Be VERY careful!!!' ' We cannot verify this is the actually the advertised object!!!') return 1 else: - sha256B = hashlib.sha256(download_zip_path.open('rb').read()).hexdigest() - if sha256A != sha256B: - logger.error(f'SECURITY VIOLATION: Downloaded zip sha256 {sha256B} does not match' - f' the advertised "sha256":{sha256A} in the f{manifest_json_name}.') - return 0 + if len(sha256A) == 0: + logger.warning('SECURITY WARNING: The advertised o3de object you downloaded has no "sha256"!!! Be VERY careful!!!' + ' We cannot verify this is the actually the advertised object!!!') + return 1 + + with download_zip_path.open('rb') as f: + sha256B = hashlib.sha256(f.read()).hexdigest() + if sha256A != sha256B: + logger.error(f'SECURITY VIOLATION: Downloaded zip sha256 {sha256B} does not match' + f' the advertised "sha256":{sha256A} in the f{manifest_json_name}.') + return 0 unzipped_manifest_json_data = unzip_manifest_json_data(download_zip_path, manifest_json_name) - # remove the sha256 if present in the advertised downloadable manifest json - # then compare it to the json in the zip, they should now be identical - try: - del download_uri_json_data['sha256'] - except KeyError as e: - pass + # do not include the data we know will not match/exist + for key in ['sha256','repo_name']: + if key in download_uri_json_data: + del download_uri_json_data[key] + if key in unzipped_manifest_json_data: + del unzipped_manifest_json_data[key] - sha256A = hashlib.sha256(json.dumps(download_uri_json_data, indent=4).encode('utf8')).hexdigest() - sha256B = hashlib.sha256(json.dumps(unzipped_manifest_json_data, indent=4).encode('utf8')).hexdigest() - if sha256A != sha256B: - logger.error('SECURITY VIOLATION: Downloaded manifest json does not match' - ' the advertised manifest json.') + if download_uri_json_data != unzipped_manifest_json_data: + logger.error(f'SECURITY VIOLATION: Downloaded {manifest_json_name} contents do not match' + ' the advertised manifest json contents.') return 0 return 1 @@ -88,10 +93,9 @@ def get_downloadable(engine_name: str = None, search_func = lambda manifest_json_data: repo.search_repo(manifest_json_data, engine_name, project_name, gem_name, template_name) return repo.search_o3de_object(manifest_json, o3de_object_uris, search_func) - def download_o3de_object(object_name: str, default_folder_name: str, dest_path: str or pathlib.Path, object_type: str, downloadable_kwarg_key, skip_auto_register: bool, - download_progress_callback = None) -> int: + force_overwrite: bool, download_progress_callback = None) -> int: download_path = manifest.get_o3de_cache_folder() / default_folder_name / object_name download_path.mkdir(parents=True, exist_ok=True) @@ -102,10 +106,10 @@ def download_o3de_object(object_name: str, default_folder_name: str, dest_path: logger.error(f'Downloadable o3de object {object_name} not found.') return 1 - origin_uri = downloadable_object_data['originuri'] + origin_uri = downloadable_object_data['origin_uri'] parsed_uri = urllib.parse.urlparse(origin_uri) - download_zip_result = utils.download_zip_file(parsed_uri, download_zip_path, download_progress_callback) + download_zip_result = utils.download_zip_file(parsed_uri, download_zip_path, force_overwrite, download_progress_callback) if download_zip_result != 0: return download_zip_result @@ -125,8 +129,15 @@ def download_o3de_object(object_name: str, default_folder_name: str, dest_path: logger.error(f'Destination path cannot be empty.') return 1 if dest_path.exists(): - logger.error(f'Destination path {dest_path} already exists.') - return 1 + if not force_overwrite: + logger.error(f'Destination path {dest_path} already exists.') + return 1 + else: + try: + shutil.rmtree(dest_path) + except OSError: + logger.error(f'Could not remove existing destination path {dest_path}.') + return 1 dest_path.mkdir(exist_ok=True) @@ -149,38 +160,119 @@ def download_o3de_object(object_name: str, default_folder_name: str, dest_path: def download_engine(engine_name: str, dest_path: str or pathlib.Path, skip_auto_register: bool, + force_overwrite: bool, download_progress_callback = None) -> int: - return download_o3de_object(engine_name, 'engines', dest_path, 'engine', 'engine_name', skip_auto_register, download_progress_callback) + return download_o3de_object(engine_name, + 'engines', + dest_path, + 'engine', + 'engine_name', + skip_auto_register, + force_overwrite, + download_progress_callback) def download_project(project_name: str, dest_path: str or pathlib.Path, skip_auto_register: bool, + force_overwrite: bool, download_progress_callback = None) -> int: - return download_o3de_object(project_name, 'projects', dest_path, 'project', 'project_name', skip_auto_register, download_progress_callback) + return download_o3de_object(project_name, + 'projects', + dest_path, + 'project', + 'project_name', + skip_auto_register, + force_overwrite, + download_progress_callback) def download_gem(gem_name: str, dest_path: str or pathlib.Path, skip_auto_register: bool, + force_overwrite: bool, download_progress_callback = None) -> int: - return download_o3de_object(gem_name, 'gems', dest_path, 'gem', 'gem_name', skip_auto_register, download_progress_callback) + return download_o3de_object(gem_name, + 'gems', + dest_path, + 'gem', + 'gem_name', + skip_auto_register, + force_overwrite, + download_progress_callback) def download_template(template_name: str, dest_path: str or pathlib.Path, skip_auto_register: bool, + force_overwrite: bool, download_progress_callback = None) -> int: - return download_o3de_object(template_name, 'templates', dest_path, 'template', 'template_name', skip_auto_register, download_progress_callback) + return download_o3de_object(template_name, + 'templates', + dest_path, + 'template', + 'template_name', + skip_auto_register, + force_overwrite, + download_progress_callback) def download_restricted(restricted_name: str, dest_path: str or pathlib.Path, skip_auto_register: bool, + force_overwrite: bool, download_progress_callback = None) -> int: - return download_o3de_object(restricted_name, 'restricted', dest_path, 'restricted', 'restricted_name', skip_auto_register, download_progress_callback) + return download_o3de_object(restricted_name, + 'restricted', + dest_path, + 'restricted', + 'restricted_name', + skip_auto_register, + force_overwrite, + download_progress_callback) +def is_o3de_object_update_available(object_name: str, downloadable_kwarg_key, local_last_updated: str) -> bool: + downloadable_object_data = get_downloadable(**{downloadable_kwarg_key : object_name}) + if not downloadable_object_data: + logger.error(f'Downloadable o3de object {object_name} not found.') + return False + + try: + repo_copy_updated_string = downloadable_object_data['last_updated'] + except KeyError: + logger.warning(f'last_updated field not found for {object_name}.') + return False + + try: + local_last_updated_time = datetime.fromisoformat(local_last_updated) + except ValueError: + logger.warning(f'last_updated field has incorrect format for local copy of {downloadable_kwarg_key} {object_name}.') + # Possible that an earlier version did not have this field so still want to check against cached downloadable version + local_last_updated_time = datetime.min + + try: + repo_copy_updated_date = datetime.fromisoformat(repo_copy_updated_string) + except ValueError: + logger.error(f'last_updated field in incorrect format for repository copy of {downloadable_kwarg_key} {object_name}.') + return False + + return repo_copy_updated_date > local_last_updated_time + +def is_o3de_engine_update_available(engine_name: str, local_last_updated: str): + return is_o3de_object_update_available(engine_name, 'engine_name', local_last_updated) + +def is_o3de_project_update_available(project_name: str, local_last_updated: str): + return is_o3de_object_update_available(project_name, 'project_name', local_last_updated) + +def is_o3de_gem_update_available(gem_name: str, local_last_updated: str): + return is_o3de_object_update_available(gem_name, 'gem_name', local_last_updated) + +def is_o3de_template_update_available(template_name: str, local_last_updated: str): + return is_o3de_object_update_available(template_name, 'template_name', local_last_updated) + +def is_o3de_restricted_update_available(restricted_name: str, local_last_updated: str): + return is_o3de_object_update_available(restricted_name, 'restricted_name', local_last_updated) def _run_download(args: argparse) -> int: if args.override_home_folder: @@ -189,19 +281,23 @@ def _run_download(args: argparse) -> int: if args.engine_name: return download_engine(args.engine_name, args.dest_path, - args.skip_auto_register) + args.skip_auto_register, + args.force) elif args.project_name: return download_project(args.project_name, args.dest_path, - args.skip_auto_register) + args.skip_auto_register, + args.force) elif args.gem_name: return download_gem(args.gem_name, args.dest_path, - args.skip_auto_register) + args.skip_auto_register, + args.force) elif args.template_name: return download_template(args.template_name, args.dest_path, - args.skip_auto_register) + args.skip_auto_register, + args.force) return 1 @@ -230,6 +326,9 @@ def add_parser_args(parser): parser.add_argument('-sar', '--skip-auto-register', action='store_true', required=False, default=False, help = 'Skip the automatic registration of new object download') + parser.add_argument('-f', '--force', action='store_true', required=False, + default=False, + help = 'Force overwrite the current object') parser.add_argument('-ohf', '--override-home-folder', type=str, required=False, help='By default the home folder is the user folder, override it to this folder.') diff --git a/scripts/o3de/o3de/manifest.py b/scripts/o3de/o3de/manifest.py index 297d8e39d2..e46b819a7c 100644 --- a/scripts/o3de/o3de/manifest.py +++ b/scripts/o3de/o3de/manifest.py @@ -108,75 +108,79 @@ def get_o3de_third_party_folder() -> pathlib.Path: # o3de manifest file methods +def get_default_o3de_manifest_json_data() -> dict: + """ + Returns dict with default values suitable for storing + in the o3de_manifests.json + """ + username = os.path.split(get_home_folder())[-1] + + o3de_folder = get_o3de_folder() + default_engines_folder = get_o3de_engines_folder() + default_projects_folder = get_o3de_projects_folder() + default_gems_folder = get_o3de_gems_folder() + default_templates_folder = get_o3de_templates_folder() + default_restricted_folder = get_o3de_restricted_folder() + default_third_party_folder = get_o3de_third_party_folder() + + default_projects_restricted_folder = default_projects_folder / 'Restricted' + default_projects_restricted_folder.mkdir(parents=True, exist_ok=True) + default_gems_restricted_folder = default_gems_folder / 'Restricted' + default_gems_restricted_folder.mkdir(parents=True, exist_ok=True) + default_templates_restricted_folder = default_templates_folder / 'Restricted' + default_templates_restricted_folder.mkdir(parents=True, exist_ok=True) + + json_data = {} + json_data.update({'o3de_manifest_name': f'{username}'}) + json_data.update({'origin': o3de_folder.as_posix()}) + json_data.update({'default_engines_folder': default_engines_folder.as_posix()}) + json_data.update({'default_projects_folder': default_projects_folder.as_posix()}) + json_data.update({'default_gems_folder': default_gems_folder.as_posix()}) + json_data.update({'default_templates_folder': default_templates_folder.as_posix()}) + json_data.update({'default_restricted_folder': default_restricted_folder.as_posix()}) + json_data.update({'default_third_party_folder': default_third_party_folder.as_posix()}) + + json_data.update({'engines': []}) + json_data.update({'projects': []}) + json_data.update({'external_subdirectories': []}) + json_data.update({'templates': []}) + json_data.update({'restricted': []}) + json_data.update({'repos': []}) + + default_restricted_folder_json = default_restricted_folder / 'restricted.json' + if not default_restricted_folder_json.is_file(): + with default_restricted_folder_json.open('w') as s: + restricted_json_data = {} + restricted_json_data.update({'restricted_name': 'o3de'}) + s.write(json.dumps(restricted_json_data, indent=4) + '\n') + + default_projects_restricted_folder_json = default_projects_restricted_folder / 'restricted.json' + if not default_projects_restricted_folder_json.is_file(): + with default_projects_restricted_folder_json.open('w') as s: + restricted_json_data = {} + restricted_json_data.update({'restricted_name': 'projects'}) + s.write(json.dumps(restricted_json_data, indent=4) + '\n') + + default_gems_restricted_folder_json = default_gems_restricted_folder / 'restricted.json' + if not default_gems_restricted_folder_json.is_file(): + with default_gems_restricted_folder_json.open('w') as s: + restricted_json_data = {} + restricted_json_data.update({'restricted_name': 'gems'}) + s.write(json.dumps(restricted_json_data, indent=4) + '\n') + + default_templates_restricted_folder_json = default_templates_restricted_folder / 'restricted.json' + if not default_templates_restricted_folder_json.is_file(): + with default_templates_restricted_folder_json.open('w') as s: + restricted_json_data = {} + restricted_json_data.update({'restricted_name': 'templates'}) + s.write(json.dumps(restricted_json_data, indent=4) + '\n') + + return json_data + def get_o3de_manifest() -> pathlib.Path: manifest_path = get_o3de_folder() / 'o3de_manifest.json' if not manifest_path.is_file(): - username = os.path.split(get_home_folder())[-1] - - o3de_folder = get_o3de_folder() - default_registry_folder = get_o3de_registry_folder() - default_cache_folder = get_o3de_cache_folder() - default_downloads_folder = get_o3de_download_folder() - default_logs_folder = get_o3de_logs_folder() - default_engines_folder = get_o3de_engines_folder() - default_projects_folder = get_o3de_projects_folder() - default_gems_folder = get_o3de_gems_folder() - default_templates_folder = get_o3de_templates_folder() - default_restricted_folder = get_o3de_restricted_folder() - default_third_party_folder = get_o3de_third_party_folder() - - default_projects_restricted_folder = default_projects_folder / 'Restricted' - default_projects_restricted_folder.mkdir(parents=True, exist_ok=True) - default_gems_restricted_folder = default_gems_folder / 'Restricted' - default_gems_restricted_folder.mkdir(parents=True, exist_ok=True) - default_templates_restricted_folder = default_templates_folder / 'Restricted' - default_templates_restricted_folder.mkdir(parents=True, exist_ok=True) - - json_data = {} - json_data.update({'o3de_manifest_name': f'{username}'}) - json_data.update({'origin': o3de_folder.as_posix()}) - json_data.update({'default_engines_folder': default_engines_folder.as_posix()}) - json_data.update({'default_projects_folder': default_projects_folder.as_posix()}) - json_data.update({'default_gems_folder': default_gems_folder.as_posix()}) - json_data.update({'default_templates_folder': default_templates_folder.as_posix()}) - json_data.update({'default_restricted_folder': default_restricted_folder.as_posix()}) - json_data.update({'default_third_party_folder': default_third_party_folder.as_posix()}) - - json_data.update({'engines': []}) - json_data.update({'projects': []}) - json_data.update({'external_subdirectories': []}) - json_data.update({'templates': []}) - json_data.update({'restricted': []}) - json_data.update({'repos': []}) - - default_restricted_folder_json = default_restricted_folder / 'restricted.json' - if not default_restricted_folder_json.is_file(): - with default_restricted_folder_json.open('w') as s: - restricted_json_data = {} - restricted_json_data.update({'restricted_name': 'o3de'}) - s.write(json.dumps(restricted_json_data, indent=4) + '\n') - json_data.update({'default_restricted_folder': default_restricted_folder.as_posix()}) - - default_projects_restricted_folder_json = default_projects_restricted_folder / 'restricted.json' - if not default_projects_restricted_folder_json.is_file(): - with default_projects_restricted_folder_json.open('w') as s: - restricted_json_data = {} - restricted_json_data.update({'restricted_name': 'projects'}) - s.write(json.dumps(restricted_json_data, indent=4) + '\n') - - default_gems_restricted_folder_json = default_gems_restricted_folder / 'restricted.json' - if not default_gems_restricted_folder_json.is_file(): - with default_gems_restricted_folder_json.open('w') as s: - restricted_json_data = {} - restricted_json_data.update({'restricted_name': 'gems'}) - s.write(json.dumps(restricted_json_data, indent=4) + '\n') - - default_templates_restricted_folder_json = default_templates_restricted_folder / 'restricted.json' - if not default_templates_restricted_folder_json.is_file(): - with default_templates_restricted_folder_json.open('w') as s: - restricted_json_data = {} - restricted_json_data.update({'restricted_name': 'templates'}) - s.write(json.dumps(restricted_json_data, indent=4) + '\n') + json_data = get_default_o3de_manifest_json_data() with manifest_path.open('w') as s: s.write(json.dumps(json_data, indent=4) + '\n') @@ -188,6 +192,7 @@ def load_o3de_manifest(manifest_path: pathlib.Path = None) -> dict: """ Loads supplied manifest file or ~/.o3de/o3de_manifest.json if None + raises Json.JSONDecodeError if manifest data could not be decoded to JSON :param manifest_path: optional path to manifest file to load """ if not manifest_path: @@ -196,8 +201,10 @@ def load_o3de_manifest(manifest_path: pathlib.Path = None) -> dict: try: json_data = json.load(f) except json.JSONDecodeError as e: - logger.error(f'Manifest json failed to load: {str(e)}') - return {} + logger.error(f'Manifest json failed to load at path "{manifest_path}": {str(e)}') + # Re-raise the exception and let the caller + # determine if they can proceed + raise else: return json_data @@ -455,7 +462,7 @@ def get_json_data_file(object_json: pathlib.Path, try: object_json_data = json.load(f) except json.JSONDecodeError as e: - logger.warn(f'{object_json} failed to load: {e}') + logger.warning(f'{object_json} failed to load: {e}') else: return object_json_data @@ -589,14 +596,14 @@ def get_registered(engine_name: str = None, if isinstance(engine, dict): engine_path = pathlib.Path(engine['path']).resolve() else: - engine_path = pathlib.Path(engine_object).resolve() + engine_path = pathlib.Path(engine).resolve() engine_json = engine_path / 'engine.json' with engine_json.open('r') as f: try: engine_json_data = json.load(f) except json.JSONDecodeError as e: - logger.warn(f'{engine_json} failed to load: {str(e)}') + logger.warning(f'{engine_json} failed to load: {str(e)}') else: this_engines_name = engine_json_data['engine_name'] if this_engines_name == engine_name: @@ -611,7 +618,7 @@ def get_registered(engine_name: str = None, try: project_json_data = json.load(f) except json.JSONDecodeError as e: - logger.warn(f'{project_json} failed to load: {str(e)}') + logger.warning(f'{project_json} failed to load: {str(e)}') else: this_projects_name = project_json_data['project_name'] if this_projects_name == project_name: @@ -626,7 +633,7 @@ def get_registered(engine_name: str = None, try: gem_json_data = json.load(f) except json.JSONDecodeError as e: - logger.warn(f'{gem_json} failed to load: {str(e)}') + logger.warning(f'{gem_json} failed to load: {str(e)}') else: this_gems_name = gem_json_data['gem_name'] if this_gems_name == gem_name: @@ -641,7 +648,7 @@ def get_registered(engine_name: str = None, try: template_json_data = json.load(f) except json.JSONDecodeError as e: - logger.warn(f'{template_path} failed to load: {str(e)}') + logger.warning(f'{template_path} failed to load: {str(e)}') else: this_templates_name = template_json_data['template_name'] if this_templates_name == template_name: @@ -656,7 +663,7 @@ def get_registered(engine_name: str = None, try: restricted_json_data = json.load(f) except json.JSONDecodeError as e: - logger.warn(f'{restricted_json} failed to load: {str(e)}') + logger.warning(f'{restricted_json} failed to load: {str(e)}') else: this_restricted_name = restricted_json_data['restricted_name'] if this_restricted_name == restricted_name: @@ -689,7 +696,7 @@ def get_registered(engine_name: str = None, try: repo_json_data = json.load(f) except json.JSONDecodeError as e: - logger.warn(f'{cache_file} failed to load: {str(e)}') + logger.warning(f'{cache_file} failed to load: {str(e)}') else: this_repos_name = repo_json_data['repo_name'] if this_repos_name == repo_name: diff --git a/scripts/o3de/o3de/print_registration.py b/scripts/o3de/o3de/print_registration.py index b164243b7c..4b4c9d6515 100644 --- a/scripts/o3de/o3de/print_registration.py +++ b/scripts/o3de/o3de/print_registration.py @@ -326,7 +326,7 @@ def print_repos_data(repos_data: dict) -> int: try: repo_json_data = json.load(s) except json.JSONDecodeError as e: - logger.warn(f'{cache_file} failed to load: {str(e)}') + logger.warning(f'{cache_file} failed to load: {str(e)}') else: print(f'{repo_uri}/repo.json cached as:') print(cache_file) diff --git a/scripts/o3de/o3de/register.py b/scripts/o3de/o3de/register.py index 8a2bb788aa..2500df1568 100644 --- a/scripts/o3de/o3de/register.py +++ b/scripts/o3de/o3de/register.py @@ -485,12 +485,12 @@ def register_repo(json_data: dict, json_data['repos'].remove(repo_uri) if remove: - logger.warn(f'Removing repo uri {repo_uri}.') + logger.warning(f'Removing repo uri {repo_uri}.') return 0 repo_sha256 = hashlib.sha256(url.encode()) cache_file = manifest.get_o3de_cache_folder() / str(repo_sha256.hexdigest() + '.json') - result = utils.download_file(parsed_uri, cache_file) + result = utils.download_file(parsed_uri, cache_file, True) if result == 0: json_data.setdefault('repos', []).insert(0, repo_uri) @@ -560,6 +560,107 @@ def register_default_third_party_folder(json_data: dict, manifest.get_o3de_third_party_folder() if remove else default_third_party_folder, 'default_third_party_folder') + +def remove_invalid_o3de_projects(manifest_path: pathlib.Path = None) -> int: + if not manifest_path: + manifest_path = manifest.get_o3de_manifest() + + json_data = manifest.load_o3de_manifest(manifest_path) + + result = 0 + + for project in json_data.get('projects', []): + if not validation.valid_o3de_project_json(pathlib.Path(project).resolve() / 'project.json'): + logger.warning(f"Project path {project} is invalid.") + # Attempt to unregister all invalid projects even if previous projects failed to unregister + # but combine the result codes of each command. + result = register(project_path=pathlib.Path(project), remove=True) or result + + return result + + +def remove_invalid_o3de_objects() -> None: + for engine_path in manifest.get_engines(): + if not validation.valid_o3de_engine_json(pathlib.Path(engine_path).resolve() / 'engine.json'): + logger.warning(f"Engine path {engine_path} is invalid.") + register(engine_path=engine_path, remove=True) + + remove_invalid_o3de_projects() + + for external in manifest.get_external_subdirectories(): + external = pathlib.Path(external).resolve() + if not external.is_dir(): + logger.warning(f"External subdirectory {external} is invalid.") + register(engine_path=engine_path, external_subdir_path=external, remove=True) + + for template in manifest.get_templates(): + if not validation.valid_o3de_template_json(pathlib.Path(template).resolve() / 'template.json'): + logger.warning(f"Template path {template} is invalid.") + register(template_path=template, remove=True) + + for restricted in manifest.get_restricted(): + if not validation.valid_o3de_restricted_json(pathlib.Path(restricted).resolve() / 'restricted.json'): + logger.warning(f"Restricted path {restricted} is invalid.") + register(restricted_path=restricted, remove=True) + + json_data = manifest.load_o3de_manifest() + default_engines_folder = pathlib.Path( + json_data.get('default_engines_folder', manifest.get_o3de_engines_folder())).resolve() + if not default_engines_folder.is_dir(): + new_default_engines_folder = manifest.get_o3de_folder() / 'Engines' + new_default_engines_folder.mkdir(parents=True, exist_ok=True) + logger.warning( + f"Default engines folder {default_engines_folder} is invalid. Set default {new_default_engines_folder}") + register(default_engines_folder=new_default_engines_folder.as_posix()) + + default_projects_folder = pathlib.Path( + json_data.get('default_projects_folder', manifest.get_o3de_projects_folder())).resolve() + if not default_projects_folder.is_dir(): + new_default_projects_folder = manifest.get_o3de_folder() / 'Projects' + new_default_projects_folder.mkdir(parents=True, exist_ok=True) + logger.warning( + f"Default projects folder {default_projects_folder} is invalid. Set default {new_default_projects_folder}") + register(default_projects_folder=new_default_projects_folder.as_posix()) + + default_gems_folder = pathlib.Path(json_data.get('default_gems_folder', manifest.get_o3de_gems_folder())).resolve() + if not default_gems_folder.is_dir(): + new_default_gems_folder = manifest.get_o3de_folder() / 'Gems' + new_default_gems_folder.mkdir(parents=True, exist_ok=True) + logger.warning(f"Default gems folder {default_gems_folder} is invalid." + f" Set default {new_default_gems_folder}") + register(default_gems_folder=new_default_gems_folder.as_posix()) + + default_templates_folder = pathlib.Path( + json_data.get('default_templates_folder', manifest.get_o3de_templates_folder())).resolve() + if not default_templates_folder.is_dir(): + new_default_templates_folder = manifest.get_o3de_folder() / 'Templates' + new_default_templates_folder.mkdir(parents=True, exist_ok=True) + logger.warning( + f"Default templates folder {default_templates_folder} is invalid." + f" Set default {new_default_templates_folder}") + register(default_templates_folder=new_default_templates_folder.as_posix()) + + default_restricted_folder = pathlib.Path( + json_data.get('default_restricted_folder', manifest.get_o3de_restricted_folder())).resolve() + if not default_restricted_folder.is_dir(): + default_restricted_folder = manifest.get_o3de_folder() / 'Restricted' + default_restricted_folder.mkdir(parents=True, exist_ok=True) + logger.warning( + f"Default restricted folder {default_restricted_folder} is invalid." + f" Set default {default_restricted_folder}") + register(default_restricted_folder=default_restricted_folder.as_posix()) + + default_third_party_folder = pathlib.Path( + json_data.get('default_third_party_folder', manifest.get_o3de_third_party_folder())).resolve() + if not default_third_party_folder.is_dir(): + default_third_party_folder = manifest.get_o3de_folder() / '3rdParty' + default_third_party_folder.mkdir(parents=True, exist_ok=True) + logger.warning( + f"Default 3rd Party folder {default_third_party_folder} is invalid." + f" Set default {default_third_party_folder}") + register(default_third_party_folder=default_third_party_folder.as_posix()) + + def register(engine_path: pathlib.Path = None, project_path: pathlib.Path = None, gem_path: pathlib.Path = None, @@ -604,7 +705,18 @@ def register(engine_path: pathlib.Path = None, :return: 0 for success or non 0 failure code """ - json_data = manifest.load_o3de_manifest() + try: + json_data = manifest.load_o3de_manifest() + except json.JSONDecodeError: + if not force: + logger.error('O3DE object registration has halted due to JSON Decode Error in manifest at path:' + f' "{manifest.get_o3de_manifest()}".' + '\n Registration can be forced using the --force option,' + ' but that will result in the manifest using default data') + return 1 + else: + # Use a default manifest data an proceed + json_data = manifest.get_default_o3de_manifest_json_data() result = 0 @@ -679,99 +791,6 @@ def register(engine_path: pathlib.Path = None, return result -def remove_invalid_o3de_projects(manifest_path: pathlib.Path = None) -> int: - if not manifest_path: - manifest_path = manifest.get_o3de_manifest() - - json_data = manifest.load_o3de_manifest(manifest_path) - - result = 0 - - for project in json_data.get('projects', []): - if not validation.valid_o3de_project_json(pathlib.Path(project).resolve() / 'project.json'): - logger.warn(f"Project path {project} is invalid.") - # Attempt to unregister all invalid projects even if previous projects failed to unregister - # but combine the result codes of each command. - result = register(project_path=pathlib.Path(project), remove=True) or result - - return result - -def remove_invalid_o3de_objects() -> None: - for engine_path in manifest.get_engines(): - if not validation.valid_o3de_engine_json(pathlib.Path(engine_path).resolve() / 'engine.json'): - logger.warn(f"Engine path {engine_path} is invalid.") - register(engine_path=engine_path, remove=True) - - remove_invalid_o3de_projects() - - for external in manifest.get_external_subdirectories(): - external = pathlib.Path(external).resolve() - if not external.is_dir(): - logger.warn(f"External subdirectory {external} is invalid.") - register(engine_path=engine_path, external_subdir_path=external, remove=True) - - for template in manifest.get_templates(): - if not validation.valid_o3de_template_json(pathlib.Path(template).resolve() / 'template.json'): - logger.warn(f"Template path {template} is invalid.") - register(template_path=template, remove=True) - - for restricted in manifest.get_restricted(): - if not validation.valid_o3de_restricted_json(pathlib.Path(restricted).resolve() / 'restricted.json'): - logger.warn(f"Restricted path {restricted} is invalid.") - register(restricted_path=restricted, remove=True) - - json_data = manifest.load_o3de_manifest() - default_engines_folder = pathlib.Path(json_data.get('default_engines_folder', manifest.get_o3de_engines_folder())).resolve() - if not default_engines_folder.is_dir(): - new_default_engines_folder = manifest.get_o3de_folder() / 'Engines' - new_default_engines_folder.mkdir(parents=True, exist_ok=True) - logger.warn( - f"Default engines folder {default_engines_folder} is invalid. Set default {new_default_engines_folder}") - register(default_engines_folder=new_default_engines_folder.as_posix()) - - default_projects_folder = pathlib.Path(json_data.get('default_projects_folder', manifest.get_o3de_projects_folder())).resolve() - if not default_projects_folder.is_dir(): - new_default_projects_folder = manifest.get_o3de_folder() / 'Projects' - new_default_projects_folder.mkdir(parents=True, exist_ok=True) - logger.warn( - f"Default projects folder {default_projects_folder} is invalid. Set default {new_default_projects_folder}") - register(default_projects_folder=new_default_projects_folder.as_posix()) - - default_gems_folder = pathlib.Path(json_data.get('default_gems_folder', manifest.get_o3de_gems_folder())).resolve() - if not default_gems_folder.is_dir(): - new_default_gems_folder = manifest.get_o3de_folder() / 'Gems' - new_default_gems_folder.mkdir(parents=True, exist_ok=True) - logger.warn(f"Default gems folder {default_gems_folder} is invalid." - f" Set default {new_default_gems_folder}") - register(default_gems_folder=new_default_gems_folder.as_posix()) - - default_templates_folder = pathlib.Path(json_data.get('default_templates_folder', manifest.get_o3de_templates_folder())).resolve() - if not default_templates_folder.is_dir(): - new_default_templates_folder = manifest.get_o3de_folder() / 'Templates' - new_default_templates_folder.mkdir(parents=True, exist_ok=True) - logger.warn( - f"Default templates folder {default_templates_folder} is invalid." - f" Set default {new_default_templates_folder}") - register(default_templates_folder=new_default_templates_folder.as_posix()) - - default_restricted_folder = pathlib.Path(json_data.get('default_restricted_folder', manifest.get_o3de_restricted_folder())).resolve() - if not default_restricted_folder.is_dir(): - default_restricted_folder = manifest.get_o3de_folder() / 'Restricted' - default_restricted_folder.mkdir(parents=True, exist_ok=True) - logger.warn( - f"Default restricted folder {default_restricted_folder} is invalid." - f" Set default {default_restricted_folder}") - register(default_restricted_folder=default_restricted_folder.as_posix()) - - default_third_party_folder = pathlib.Path(json_data.get('default_third_party_folder', manifest.get_o3de_third_party_folder())).resolve() - if not default_third_party_folder.is_dir(): - default_third_party_folder = manifest.get_o3de_folder() / '3rdParty' - default_third_party_folder.mkdir(parents=True, exist_ok=True) - logger.warn( - f"Default 3rd Party folder {default_third_party_folder} is invalid." - f" Set default {default_third_party_folder}") - register(default_third_party_folder=default_third_party_folder.as_posix()) - def _run_register(args: argparse) -> int: if args.override_home_folder: diff --git a/scripts/o3de/o3de/repo.py b/scripts/o3de/o3de/repo.py index a6b1505761..22c7c54c8f 100644 --- a/scripts/o3de/o3de/repo.py +++ b/scripts/o3de/o3de/repo.py @@ -9,7 +9,6 @@ import json import logging import pathlib -import shutil import urllib.parse import urllib.request import hashlib @@ -24,6 +23,7 @@ def process_add_o3de_repo(file_name: str or pathlib.Path, repo_set: set) -> int: file_name = pathlib.Path(file_name).resolve() if not validation.valid_o3de_repo_json(file_name): + logger.error(f'Repository JSON {file_name} could not be loaded or is missing required values') return 1 cache_folder = manifest.get_o3de_cache_folder() @@ -74,11 +74,11 @@ def process_add_o3de_repo(file_name: str or pathlib.Path, manifest_json_uri = f'{o3de_object_uri}/{manifest_json}' manifest_json_sha256 = hashlib.sha256(manifest_json_uri.encode()) cache_file = cache_folder / str(manifest_json_sha256.hexdigest() + '.json') - if not cache_file.is_file(): - parsed_uri = urllib.parse.urlparse(manifest_json_uri) - download_file_result = utils.download_file(parsed_uri, cache_file) - if download_file_result != 0: - return download_file_result + + parsed_uri = urllib.parse.urlparse(manifest_json_uri) + download_file_result = utils.download_file(parsed_uri, cache_file, True) + if download_file_result != 0: + return download_file_result # Having a repo is also optional repo_list = [] @@ -96,7 +96,7 @@ def process_add_o3de_repo(file_name: str or pathlib.Path, cache_file = cache_folder / str(manifest_json_sha256.hexdigest() + '.json') if cache_file.is_file(): cache_file.unlink() - download_file_result = utils.download_file(parsed_uri, cache_file) + download_file_result = utils.download_file(parsed_uri, cache_file, True) if download_file_result != 0: return download_file_result @@ -114,7 +114,7 @@ def get_gem_json_paths_from_cached_repo(repo_uri: str) -> set: file_name = pathlib.Path(cache_filename).resolve() if not file_name.is_file(): - logger.error(f'Could not find cached repo json file for {repo_uri}') + logger.error(f'Could not find cached repository json file for {repo_uri}. Try refreshing the repository.') return gem_set with file_name.open('r') as f: @@ -139,7 +139,7 @@ def get_gem_json_paths_from_cached_repo(repo_uri: str) -> set: if cache_gem_json_filepath.is_file(): gem_set.add(cache_gem_json_filepath) else: - logger.warn(f'Could not find cached gem json file {cache_gem_json_filepath} for {o3de_object_uri} in repo {repo_uri}') + logger.warning(f'Could not find cached gem json file {cache_gem_json_filepath} for {o3de_object_uri} in repo {repo_uri}') return gem_set @@ -165,8 +165,9 @@ def refresh_repo(repo_uri: str, repo_sha256 = hashlib.sha256(parsed_uri.geturl().encode()) cache_file = cache_folder / str(repo_sha256.hexdigest() + '.json') - download_file_result = utils.download_file(parsed_uri, cache_file) + download_file_result = utils.download_file(parsed_uri, cache_file, True) if download_file_result != 0: + logger.error(f'Repo json {repo_uri} could not download.') return download_file_result if not validation.valid_o3de_repo_json(cache_file): @@ -178,12 +179,7 @@ def refresh_repo(repo_uri: str, def refresh_repos() -> int: json_data = manifest.load_o3de_manifest() - - # clear the cache cache_folder = manifest.get_o3de_cache_folder() - shutil.rmtree(cache_folder) - cache_folder = manifest.get_o3de_cache_folder() # will recreate it - result = 0 # set will stop circular references @@ -222,10 +218,10 @@ def search_repo(manifest_json_data: dict, json_key = 'gem_name' search_func = lambda manifest_json_data: manifest_json_data if manifest_json_data.get(json_key, '') == gem_name else None elif isinstance(template_name, str) or isinstance(template_name, pathlib.PurePath): - o3de_object_uris = manifest_json_data['template'] + o3de_object_uris = manifest_json_data['templates'] manifest_json = 'template.json' json_key = 'template_name' - search_func = lambda manifest_json_data: manifest_json_data if manifest_json_data.get(json_key, '') == template_name_name else None + search_func = lambda manifest_json_data: manifest_json_data if manifest_json_data.get(json_key, '') == template_name else None elif isinstance(restricted_name, str) or isinstance(restricted_name, pathlib.PurePath): o3de_object_uris = manifest_json_data['restricted'] manifest_json = 'restricted.json' @@ -262,7 +258,7 @@ def search_o3de_object(manifest_json, o3de_object_uris, search_func): try: manifest_json_data = json.load(f) except json.JSONDecodeError as e: - logger.warn(f'{cache_file} failed to load: {str(e)}') + logger.warning(f'{cache_file} failed to load: {str(e)}') else: result_json_data = search_func(manifest_json_data) if result_json_data: diff --git a/scripts/o3de/o3de/utils.py b/scripts/o3de/o3de/utils.py old mode 100755 new mode 100644 index 8663502a3f..6f1dd8b2c5 --- a/scripts/o3de/o3de/utils.py +++ b/scripts/o3de/o3de/utils.py @@ -117,29 +117,43 @@ def backup_folder(folder: str or pathlib.Path) -> None: if backup_folder_name.is_dir(): renamed = True -def download_file(parsed_uri, download_path: pathlib.Path, download_progress_callback = None) -> int: +def download_file(parsed_uri, download_path: pathlib.Path, force_overwrite: bool = False, download_progress_callback = None) -> int: """ :param parsed_uri: uniform resource identifier to zip file to download :param download_path: location path on disk to download file :download_progress_callback: callback called with the download progress as a percentage, returns true to request to cancel the download """ if download_path.is_file(): - logger.warn(f'File already downloaded to {download_path}.') - elif parsed_uri.scheme in ['http', 'https', 'ftp', 'ftps']: - with urllib.request.urlopen(parsed_uri.geturl()) as s: - download_file_size = 0 + if not force_overwrite: + logger.error(f'File already downloaded to {download_path} and force_overwrite is not set.') + return 1 + else: try: - download_file_size = s.headers['content-length'] - except KeyError: - pass - def download_progress(blocks): - if download_progress_callback and download_file_size: - return download_progress_callback(int(blocks/int(download_file_size) * 100)) - return False - with download_path.open('wb') as f: - download_cancelled = copyfileobj(s, f, download_progress) - if download_cancelled: - return 1 + os.unlink(download_path) + except OSError: + logger.error(f'Could not remove existing download path {download_path}.') + return 1 + + if parsed_uri.scheme in ['http', 'https', 'ftp', 'ftps']: + try: + with urllib.request.urlopen(parsed_uri.geturl()) as s: + download_file_size = 0 + try: + download_file_size = s.headers['content-length'] + except KeyError: + pass + def download_progress(downloaded_bytes): + if download_progress_callback: + return download_progress_callback(int(downloaded_bytes), int(download_file_size)) + return False + with download_path.open('wb') as f: + download_cancelled = copyfileobj(s, f, download_progress) + if download_cancelled: + logger.info(f'Download of file to {download_path} cancelled.') + return 1 + except urllib.error.HTTPError as e: + logger.error(f'HTTP Error {e.code} opening {parsed_uri.geturl()}') + return 1 else: origin_file = pathlib.Path(parsed_uri.geturl()).resolve() if not origin_file.is_file(): @@ -149,17 +163,17 @@ def download_file(parsed_uri, download_path: pathlib.Path, download_progress_cal return 0 -def download_zip_file(parsed_uri, download_zip_path: pathlib.Path, download_progress_callback = None) -> int: +def download_zip_file(parsed_uri, download_zip_path: pathlib.Path, force_overwrite: bool, download_progress_callback = None) -> int: """ :param parsed_uri: uniform resource identifier to zip file to download :param download_zip_path: path to output zip file """ - download_file_result = download_file(parsed_uri, download_zip_path, download_progress_callback) + download_file_result = download_file(parsed_uri, download_zip_path, force_overwrite, download_progress_callback) if download_file_result != 0: return download_file_result if not zipfile.is_zipfile(download_zip_path): - logger.error(f"File zip {download_zip_path} is invalid.") + logger.error(f"File zip {download_zip_path} is invalid. Try re-downloading the file.") download_zip_path.unlink() return 1 diff --git a/scripts/signer/Platform/Linux/o3de-releases.gpg b/scripts/signer/Platform/Linux/o3de-releases.gpg new file mode 100644 index 0000000000..602d822673 --- /dev/null +++ b/scripts/signer/Platform/Linux/o3de-releases.gpg @@ -0,0 +1,53 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBGGWliEBEADq6bmhQbp42ZKQ4NwlnWeyFf6LhcnhafnBrGYV+XGyva2mP6kV +I4w80V9BQSHqpYt2R71tVDxfa+DicH4NDA1NmWte+hZ5eENgvoj6VJrqZzUZihwy +DZTaw4oMMabAK4a4b4G+BMV7iW7b4HWLEUH4Vmgq9LxU9qz9Ni5BIIyyp9Abh0kS +fbF3/ZQKdNTcyoVNOlm/5ohQsEJCftGi2CJzqybgS+fRQxaC/v9vAt3/A9gCEccD +LBFHkzz+58ZumEP2CXOoy/TDYhx7jMJFRzy0o/vJTEOKoWMQS3t9CIcOuE3enjsK +0GlFZPhTZREiTosJy9sNuTM8bJBEcrGfSfZZ0GUAF8IvAJiHppSTqFe/H3iqHnww +1I+ap/v2nI4AzRljQQ5RBsHJxHuHeuyUOFqwuGddvhYssiG9KzTeov03anA8BRY6 +235kWQkR5+CuMb0sgSkwhCQ3tz3Oc20l8g8jRTeLjIkqVNDN6+FffBuJgJjU7eHu +01xw0mRqjxIPp21XsOzw4+hNQM98QLUhJXu5/hImP37V9223qyZMeCyODHyrk0h8 +wi5J6ZMEVymNDNRJ2dgLrDM2GG5DbY5rOVPpu0bsPHqGMHpipDd7hNQd78tRh6Jf +CzhLFiIMnHH+7c7HxhJUvbewHUiCyRQ7H3RRHi8cZMn2Wa3g13rYtJzSgQARAQAB +tFtvM2RlYmluYXJpZXMub3JnIChPM0RFIEJpbmFyeSBQcm9qZWN0IGEgU2VyaWVz +IG9mIExGIFByb2plY3RzLCBMTEMpIDxpbmZvQG8zZGViaW5hcmllcy5vcmc+iQJU +BBMBCgA+FiEEXtkClauXt9hZ4PvRSNjOEOJZqKQFAmGWliECGwMFCQWmPYAFCwkI +BwIGFQoJCAsCBBYCAwECHgECF4AACgkQSNjOEOJZqKTy8hAAs9YueTc6a3UNjWbN +Zx9L3bmLqMITthadFv1LuntCrU/hte44FeP74acqSZDGfWN381iYMGlw0ECsJB/d +DnElITiO9W1MNelansiX5zHlVUd6HuuEVZTsoQodWgbIEvs5bLA2HqKk03Mcb9uW +vyeYfOjknedZ7sfoe7HnkYEaPBgb/5Fkn6wTnDTb4CMAdZoy6+nfVQdTHIQ+PsDY +hlCR2q+jgZaNyRiW3gIz4PPpgaNIxT8JmRvGC/gseDf3l6xy4p7SH8eEsK8+oy2G +SrFxE6Ez9SySVc3PZHiS9eCEsoNhqAzV5RRP/UvpWhxM/mAgJHJI+wy5pbpFeLr3 +zTEOcCgXxVGBSX3BocoP8SLFP5zNocKhiG7eXQWvg/I1oGr8qPxC4aE+h6xtTaw+ +6/Wpd2PRMXoVVHDCuJy3qTNLus5sF6vmUDc69MYfzCmLqZDVjVdcTMgvQYv1VnOz +Td+/pnTIs4AYM0pQY2P/GdjIdGWVuRc1ssDisdjzUQvZMNKC9hnkKlJF0utCDqb1 +FAyN8u9dpbR3Yy98qy1thp2hebd6lVpLPU0YKUSYBGiyU74lIEqJUM9bnlLxFWgL +lGdjSpDbNUPIZrhVk86xR7EI3W3Br/5ygi0imtah96jdoHdW0XJzWAOTJBSmJUgD +vRtomV24xuu/lZZCGUXhy3nIFfi5Ag0EYZaWIQEQAKp1dCgW1r9WXEEiOnrgHSBb +GLKmJJuJEM7+hEW18PoSph+lmO/gqz/GKf647HWFon101+d80yexT4mFdT9G24L6 +WmPsJeVswcFzRSergq7/OTD5jmmElMmohTOlAApzhb7UUFotgvSOiwrxyhK5Hhk3 ++XCZGurZdKd02BVrwdI06I+t6t1BJAazoEYMcmwhvweW1DtKjMCdf+kUMZ/YlTos +VKXFz0tEANu4BDgNdO/jTBh+dIFGjxfMPSYCnUpz4BJQLnlRagNj86SetNl5qFVn +K6d8CCuqax2vk9MLw+fLOTbvde+GzamEYXYA840nffHx11V4JaL+xqGSWofh+r1q +4XI0WD7Ly8BTj3Gx8xOeVKGSetfQf+6w7r2X5Yg1iGN5y8e+7VJ9j4Ntn0bbk2Go +O7WDx3yZBqS7PiII5+ItLOIFfVqwGZzJXR3OBoRQWji03K/RXjthiyEHv0JBQFJi +95vBT1X3u5dgngQNSAYkLfMjPqwCmzOrIeZhkB9g/qvDwp1i80L7jTR+iOQPYa+9 +JuUwBBKfi6GqqbAoD0tLV+1/rnoi5aalN7WcgfBvIK7KqeGGjM9oJlotrkJf5Lsu +1RLdHlOTPq7ZNQ6MFB7BOi6KWAiWTARZchEJKAR4jqLLnU+qcV0QM0jUK2E/yzCG +KoID/HV+xipxdzAW+MiBABEBAAGJAjwEGAEKACYWIQRe2QKVq5e32Fng+9FI2M4Q +4lmopAUCYZaWIQIbDAUJBaY9gAAKCRBI2M4Q4lmopGOsD/9qqiU13ohVX/UjCZj3 +0Q7ShuC0mgRh8zxsfeFVQu5JkYXgSbe+4emsmzbSJ9VaZe1AOa+UGBNJG0BdHlbb +kZ1uEJJ5TkKzuPbJnF5Bj6N1Qk8C4dBMyTuouF+s5fwBgiz+eDTyRa/N6QSbPkvA +QiuivECA13gahp9sfcn0TGwLmqR6GyKWHNp3bCsxL1j3YKfEP2FTT1ko0V3qURtV +8FNuzA/kupgPVFgG60kujJ/PzDZ772k5TEpHRBw3Z6xfrS56o/eSXJunjFQPsTuw +5zJoMXUybGoOdBErEHL0bYw42jobJ+d1mOda9LPaA/ea51WWuyXIr+S66aHSgn0F +K5QewNazYpGekmQ6gpP7B9dUcGxJW3Hl3qkUV98GLANtAiUhr99Hx4oYD5lXE3jy +HN4nzFCBxG35rQzJ/GQ7wX93HgMU8pq20sHDZxNY9tD/TEMdeY2UashkMjjjTmT0 +7HySlvYJLpElfNlhhm/8H5Lo2UBIex+xemssOT+De46fU0EQI6zDPnFxABIy7ECF +VEVuMAyPjgUgxD2XyXk7yfxHs0cO34k0lhlT3D1mGF8VYZuTLJVtI7TQ72JhLmGy +oec1he0q8civF8GrSfKSObm1pN0/q9TtfYso6T/D3J13eJ1FW06+6iTl9bqUMqqS +uPvKa1dp3CCS3lhFfmP1Gcxi+w== +=2u1v +-----END PGP PUBLIC KEY BLOCK----- diff --git a/system_windows_pc.cfg b/system_windows_pc.cfg index aa53ed9323..e34c35e581 100644 --- a/system_windows_pc.cfg +++ b/system_windows_pc.cfg @@ -15,3 +15,4 @@ r_ShadersAllowCompilation = 1 -- Localization Settings sys_localization_format=0 +log_RemoteConsoleAllowedAddresses=127.0.0.1