diff --git a/.gitignore b/.gitignore
index 9012ec7576..2820d1e1c1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,18 +2,14 @@
.vs/
.vscode/
__pycache__
-AssetProcessorTemp/**
[Bb]uild/
[Oo]ut/**
CMakeUserPresets.json
[Cc]ache/
/[Ii]nstall/
-Editor/EditorEventLog.xml
-Editor/EditorLayout.xml
**/*egg-info/**
**/*egg-link
**/[Rr]estricted
-UserSettings.xml
[Uu]ser/
FrameCapture/**
.DS_Store
@@ -22,9 +18,6 @@ client*.cfg
server*.cfg
.mayaSwatches/
_savebackup/
-#Output folder for test results when running Automated Tests
-TestResults/**
*.swatches
/imgui.ini
-/scripts/project_manager/logs/
-/AutomatedTesting/Gem/PythonTests/scripting/TestResults
+
diff --git a/Assets/Editor/Icons/AssetBrowser/Collapse_All.svg b/Assets/Editor/Icons/AssetBrowser/Collapse_All.svg
new file mode 100644
index 0000000000..7c7a7b85bd
--- /dev/null
+++ b/Assets/Editor/Icons/AssetBrowser/Collapse_All.svg
@@ -0,0 +1,14 @@
+
+
diff --git a/AutomatedTesting/CMakeLists.txt b/AutomatedTesting/CMakeLists.txt
index 1c5382ba4b..9621c0accb 100644
--- a/AutomatedTesting/CMakeLists.txt
+++ b/AutomatedTesting/CMakeLists.txt
@@ -27,5 +27,4 @@ else()
set_property(GLOBAL APPEND PROPERTY LY_PROJECTS_TARGET_NAME ${project_target_name})
- add_subdirectory(Gem)
endif()
\ No newline at end of file
diff --git a/AutomatedTesting/Gem/CMakeLists.txt b/AutomatedTesting/Gem/CMakeLists.txt
index 7a411544ec..e3d8a4087a 100644
--- a/AutomatedTesting/Gem/CMakeLists.txt
+++ b/AutomatedTesting/Gem/CMakeLists.txt
@@ -6,6 +6,9 @@
#
#
+set(gem_path ${CMAKE_CURRENT_LIST_DIR})
+set(gem_json ${gem_path}/gem.json)
+o3de_restricted_path(${gem_json} gem_restricted_path gem_parent_relative_path)
+
add_subdirectory(Code)
-add_subdirectory(PythonTests)
-add_subdirectory(PythonCoverage)
+add_subdirectory(PythonTests)
\ No newline at end of file
diff --git a/AutomatedTesting/Gem/Code/CMakeLists.txt b/AutomatedTesting/Gem/Code/CMakeLists.txt
index 8808507765..1a88d6e69a 100644
--- a/AutomatedTesting/Gem/Code/CMakeLists.txt
+++ b/AutomatedTesting/Gem/Code/CMakeLists.txt
@@ -6,7 +6,7 @@
#
#
-ly_get_list_relative_pal_filename(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME})
+o3de_pal_dir(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME} ${gem_restricted_path} ${gem_path} ${gem_parent_relative_path})
ly_add_target(
NAME AutomatedTesting ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
diff --git a/AutomatedTesting/Gem/PythonCoverage/CMakeLists.txt b/AutomatedTesting/Gem/PythonCoverage/CMakeLists.txt
index 2bb380fae3..50f9e78c74 100644
--- a/AutomatedTesting/Gem/PythonCoverage/CMakeLists.txt
+++ b/AutomatedTesting/Gem/PythonCoverage/CMakeLists.txt
@@ -6,4 +6,8 @@
#
#
+set(gem_path ${CMAKE_CURRENT_LIST_DIR})
+set(gem_json ${gem_path}/gem.json)
+o3de_restricted_path(${gem_json} gem_restricted_path gem_parent_relative_path)
+
add_subdirectory(Code)
diff --git a/AutomatedTesting/Gem/PythonCoverage/Code/CMakeLists.txt b/AutomatedTesting/Gem/PythonCoverage/Code/CMakeLists.txt
index a865ccc49f..ea6db88c1c 100644
--- a/AutomatedTesting/Gem/PythonCoverage/Code/CMakeLists.txt
+++ b/AutomatedTesting/Gem/PythonCoverage/Code/CMakeLists.txt
@@ -6,7 +6,7 @@
#
#
-ly_get_list_relative_pal_filename(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME} ${o3de_gem_restricted_path} ${o3de_gem_path} ${o3de_gem_name})
+o3de_pal_dir(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME} ${gem_restricted_path} ${gem_path} ${gem_parent_relative_path})
include(${pal_dir}/PAL_${PAL_PLATFORM_NAME_LOWERCASE}.cmake)
if(PAL_TRAIT_PYTHONCOVERAGE_SUPPORTED)
diff --git a/AutomatedTesting/Gem/PythonCoverage/gem.json b/AutomatedTesting/Gem/PythonCoverage/gem.json
index b99ce0daad..681696d78e 100644
--- a/AutomatedTesting/Gem/PythonCoverage/gem.json
+++ b/AutomatedTesting/Gem/PythonCoverage/gem.json
@@ -4,6 +4,7 @@
"license": "Apache-2.0 Or MIT",
"license_url": "https://github.com/o3de/o3de/blob/development/LICENSE.txt",
"origin": "Open 3D Engine - o3de.org",
+ "origin_url": "https://github.com/o3de/o3de",
"type": "Tool",
"summary": "A tool for generating gem coverage for Python tests.",
"canonical_tags": [
@@ -13,5 +14,8 @@
"PythonCoverage"
],
"icon_path": "preview.png",
- "requirements": ""
+ "requirements": "",
+ "documentation_url": "",
+ "dependencies": [
+ ]
}
diff --git a/AutomatedTesting/Gem/PythonTests/Atom/TestSuite_Main.py b/AutomatedTesting/Gem/PythonTests/Atom/TestSuite_Main.py
index 905722d103..f1e66ac492 100644
--- a/AutomatedTesting/Gem/PythonTests/Atom/TestSuite_Main.py
+++ b/AutomatedTesting/Gem/PythonTests/Atom/TestSuite_Main.py
@@ -4,10 +4,18 @@ For complete copyright and license terms please see the LICENSE at the root of t
SPDX-License-Identifier: Apache-2.0 OR MIT
"""
+import logging
+import os
import pytest
+import ly_test_tools.environment.file_system as file_system
+import editor_python_test_tools.hydra_test_utils as hydra
+
from ly_test_tools.o3de.editor_test import EditorSharedTest, EditorTestSuite
+logger = logging.getLogger(__name__)
+TEST_DIRECTORY = os.path.join(os.path.dirname(__file__), "tests")
+
@pytest.mark.parametrize("project", ["AutomatedTesting"])
@pytest.mark.parametrize("launcher_platform", ['windows_editor'])
@@ -114,3 +122,75 @@ class TestAutomation(EditorTestSuite):
class ShaderAssetBuilder_RecompilesShaderAsChainOfDependenciesChanges(EditorSharedTest):
from Atom.tests import hydra_ShaderAssetBuilder_RecompilesShaderAsChainOfDependenciesChanges as test_module
+
+
+@pytest.mark.parametrize("project", ["AutomatedTesting"])
+@pytest.mark.parametrize("launcher_platform", ['windows_generic'])
+class TestMaterialEditorBasicTests(object):
+ @pytest.fixture(autouse=True)
+ def setup_teardown(self, request, workspace, project):
+ def delete_files():
+ file_system.delete(
+ [
+ os.path.join(workspace.paths.project(), "Materials", "test_material.material"),
+ os.path.join(workspace.paths.project(), "Materials", "test_material_1.material"),
+ os.path.join(workspace.paths.project(), "Materials", "test_material_2.material"),
+ ],
+ True,
+ True,
+ )
+ # Cleanup our newly created materials
+ delete_files()
+
+ def teardown():
+ # Cleanup our newly created materials
+ delete_files()
+
+ request.addfinalizer(teardown)
+
+ @pytest.mark.parametrize("exe_file_name", ["MaterialEditor"])
+ @pytest.mark.test_case_id("C34448113") # Creating a New Asset.
+ @pytest.mark.test_case_id("C34448114") # Opening an Existing Asset.
+ @pytest.mark.test_case_id("C34448115") # Closing Selected Material.
+ @pytest.mark.test_case_id("C34448116") # Closing All Materials.
+ @pytest.mark.test_case_id("C34448117") # Closing all but Selected Material.
+ @pytest.mark.test_case_id("C34448118") # Saving Material.
+ @pytest.mark.test_case_id("C34448119") # Saving as a New Material.
+ @pytest.mark.test_case_id("C34448120") # Saving as a Child Material.
+ @pytest.mark.test_case_id("C34448121") # Saving all Open Materials.
+ def test_MaterialEditorBasicTests(
+ self, request, workspace, project, launcher_platform, generic_launcher, exe_file_name):
+
+ expected_lines = [
+ "Material opened: True",
+ "Test asset doesn't exist initially: True",
+ "New asset created: True",
+ "New Material opened: True",
+ "Material closed: True",
+ "All documents closed: True",
+ "Close All Except Selected worked as expected: True",
+ "Actual Document saved with changes: True",
+ "Document saved as copy is saved with changes: True",
+ "Document saved as child is saved with changes: True",
+ "Save All worked as expected: True",
+ "P1: Asset Browser visibility working as expected: True",
+ "P1: Inspector visibility working as expected: True",
+ ]
+ unexpected_lines = [
+ # Including any lines in unexpected_lines will cause the test to run for the duration of the timeout
+ ]
+
+ hydra.launch_and_validate_results(
+ request,
+ TEST_DIRECTORY,
+ generic_launcher,
+ "hydra_AtomMaterialEditor_BasicTests.py",
+ run_python="--runpython",
+ timeout=43,
+ expected_lines=expected_lines,
+ unexpected_lines=unexpected_lines,
+ halt_on_unexpected=True,
+ null_renderer=True,
+ log_file_name="MaterialEditor.log",
+ enable_prefab_system=False,
+ )
diff --git a/AutomatedTesting/Gem/PythonTests/Atom/TestSuite_Sandbox.py b/AutomatedTesting/Gem/PythonTests/Atom/TestSuite_Sandbox.py
index 29f90e6807..bd0477a1db 100644
--- a/AutomatedTesting/Gem/PythonTests/Atom/TestSuite_Sandbox.py
+++ b/AutomatedTesting/Gem/PythonTests/Atom/TestSuite_Sandbox.py
@@ -9,158 +9,20 @@ import os
import pytest
-import ly_test_tools.environment.file_system as file_system
-import editor_python_test_tools.hydra_test_utils as hydra
from ly_test_tools.o3de.editor_test import EditorSharedTest, EditorTestSuite
-from Atom.atom_utils.atom_constants import LIGHT_TYPES
logger = logging.getLogger(__name__)
TEST_DIRECTORY = os.path.join(os.path.dirname(__file__), "tests")
-@pytest.mark.parametrize("project", ["AutomatedTesting"])
-@pytest.mark.parametrize("launcher_platform", ['windows_editor'])
-@pytest.mark.parametrize("level", ["auto_test"])
-class TestAtomEditorComponentsMain(object):
- """Holds tests for Atom components."""
-
- @pytest.mark.test_case_id("C34525095")
- def test_AtomEditorComponents_LightComponent(
- self, request, editor, workspace, project, launcher_platform, level):
- """
- Please review the hydra script run by this test for more specific test info.
- Tests that the Light component has the expected property options available to it.
- """
- cfg_args = [level]
-
- expected_lines = [
- "light_entity Entity successfully created",
- "Entity has a Light component",
- "light_entity_test: Component added to the entity: True",
- f"light_entity_test: Property value is {LIGHT_TYPES['sphere']} which matches {LIGHT_TYPES['sphere']}",
- "Controller|Configuration|Shadows|Enable shadow set to True",
- "light_entity Controller|Configuration|Shadows|Shadowmap size: SUCCESS",
- "Controller|Configuration|Shadows|Shadow filter method set to 1", # PCF
- "Controller|Configuration|Shadows|Filtering sample count set to 4",
- "Controller|Configuration|Shadows|Filtering sample count set to 64",
- "Controller|Configuration|Shadows|Shadow filter method set to 2", # ESM
- "Controller|Configuration|Shadows|ESM exponent set to 50.0",
- "Controller|Configuration|Shadows|ESM exponent set to 5000.0",
- "Controller|Configuration|Shadows|Shadow filter method set to 3", # ESM+PCF
- f"light_entity_test: Property value is {LIGHT_TYPES['spot_disk']} which matches {LIGHT_TYPES['spot_disk']}",
- f"light_entity_test: Property value is {LIGHT_TYPES['capsule']} which matches {LIGHT_TYPES['capsule']}",
- f"light_entity_test: Property value is {LIGHT_TYPES['quad']} which matches {LIGHT_TYPES['quad']}",
- "light_entity Controller|Configuration|Fast approximation: SUCCESS",
- "light_entity Controller|Configuration|Both directions: SUCCESS",
- f"light_entity_test: Property value is {LIGHT_TYPES['polygon']} which matches {LIGHT_TYPES['polygon']}",
- f"light_entity_test: Property value is {LIGHT_TYPES['simple_point']} "
- f"which matches {LIGHT_TYPES['simple_point']}",
- "Controller|Configuration|Attenuation radius|Mode set to 0",
- "Controller|Configuration|Attenuation radius|Radius set to 100.0",
- f"light_entity_test: Property value is {LIGHT_TYPES['simple_spot']} "
- f"which matches {LIGHT_TYPES['simple_spot']}",
- "Controller|Configuration|Shutters|Outer angle set to 45.0",
- "Controller|Configuration|Shutters|Outer angle set to 90.0",
- "light_entity_test: Component added to the entity: True",
- "Light component test (non-GPU) completed.",
- ]
-
- unexpected_lines = ["Traceback (most recent call last):"]
-
- hydra.launch_and_validate_results(
- request,
- TEST_DIRECTORY,
- editor,
- "hydra_AtomEditorComponents_LightComponent.py",
- timeout=120,
- expected_lines=expected_lines,
- unexpected_lines=unexpected_lines,
- halt_on_unexpected=True,
- null_renderer=True,
- cfg_args=cfg_args,
- enable_prefab_system=False,
- )
-
-
-@pytest.mark.parametrize("project", ["AutomatedTesting"])
-@pytest.mark.parametrize("launcher_platform", ['windows_generic'])
-@pytest.mark.system
-class TestMaterialEditorBasicTests(object):
- @pytest.fixture(autouse=True)
- def setup_teardown(self, request, workspace, project):
- def delete_files():
- file_system.delete(
- [
- os.path.join(workspace.paths.project(), "Materials", "test_material.material"),
- os.path.join(workspace.paths.project(), "Materials", "test_material_1.material"),
- os.path.join(workspace.paths.project(), "Materials", "test_material_2.material"),
- ],
- True,
- True,
- )
- # Cleanup our newly created materials
- delete_files()
-
- def teardown():
- # Cleanup our newly created materials
- delete_files()
-
- request.addfinalizer(teardown)
-
- @pytest.mark.parametrize("exe_file_name", ["MaterialEditor"])
- @pytest.mark.test_case_id("C34448113") # Creating a New Asset.
- @pytest.mark.test_case_id("C34448114") # Opening an Existing Asset.
- @pytest.mark.test_case_id("C34448115") # Closing Selected Material.
- @pytest.mark.test_case_id("C34448116") # Closing All Materials.
- @pytest.mark.test_case_id("C34448117") # Closing all but Selected Material.
- @pytest.mark.test_case_id("C34448118") # Saving Material.
- @pytest.mark.test_case_id("C34448119") # Saving as a New Material.
- @pytest.mark.test_case_id("C34448120") # Saving as a Child Material.
- @pytest.mark.test_case_id("C34448121") # Saving all Open Materials.
- def test_MaterialEditorBasicTests(
- self, request, workspace, project, launcher_platform, generic_launcher, exe_file_name):
-
- expected_lines = [
- "Material opened: True",
- "Test asset doesn't exist initially: True",
- "New asset created: True",
- "New Material opened: True",
- "Material closed: True",
- "All documents closed: True",
- "Close All Except Selected worked as expected: True",
- "Actual Document saved with changes: True",
- "Document saved as copy is saved with changes: True",
- "Document saved as child is saved with changes: True",
- "Save All worked as expected: True",
- ]
- unexpected_lines = [
- "Traceback (most recent call last):"
- ]
-
- hydra.launch_and_validate_results(
- request,
- TEST_DIRECTORY,
- generic_launcher,
- "hydra_AtomMaterialEditor_BasicTests.py",
- run_python="--runpython",
- timeout=120,
- expected_lines=expected_lines,
- unexpected_lines=unexpected_lines,
- halt_on_unexpected=True,
- null_renderer=True,
- log_file_name="MaterialEditor.log",
- enable_prefab_system=False,
- )
-
-
@pytest.mark.parametrize("project", ["AutomatedTesting"])
@pytest.mark.parametrize("launcher_platform", ['windows_editor'])
class TestAutomation(EditorTestSuite):
enable_prefab_system = False
- #this test is intermittently timing out without ever having executed. sandboxing while we investigate cause.
+ # this test is intermittently timing out without ever having executed. sandboxing while we investigate cause.
@pytest.mark.test_case_id("C36525660")
class AtomEditorComponents_DisplayMapperAdded(EditorSharedTest):
from Atom.tests import hydra_AtomEditorComponents_DisplayMapperAdded as test_module
diff --git a/AutomatedTesting/Gem/PythonTests/Atom/atom_utils/material_editor_utils.py b/AutomatedTesting/Gem/PythonTests/Atom/atom_utils/material_editor_utils.py
index b21c74de19..96eeb4279e 100644
--- a/AutomatedTesting/Gem/PythonTests/Atom/atom_utils/material_editor_utils.py
+++ b/AutomatedTesting/Gem/PythonTests/Atom/atom_utils/material_editor_utils.py
@@ -125,11 +125,11 @@ def is_pane_visible(pane_name):
"""
:return: bool
"""
- return atomtools.AtomToolsWindowRequestBus(bus.Broadcast, "IsDockWidgetVisible", pane_name)
+ return atomtools.AtomToolsMainWindowRequestBus(bus.Broadcast, "IsDockWidgetVisible", pane_name)
def set_pane_visibility(pane_name, value):
- atomtools.AtomToolsWindowRequestBus(bus.Broadcast, "SetDockWidgetVisible", pane_name, value)
+ atomtools.AtomToolsMainWindowRequestBus(bus.Broadcast, "SetDockWidgetVisible", pane_name, value)
def select_lighting_config(config_name):
@@ -162,6 +162,13 @@ def select_model_config(configname):
azlmbr.materialeditor.MaterialViewportRequestBus(azlmbr.bus.Broadcast, "SelectModelPresetByName", configname)
+def destroy_main_window():
+ """
+ Closes the Material Editor window
+ """
+ azlmbr.atomtools.AtomToolsMainWindowFactoryRequestBus(azlmbr.bus.Broadcast, "DestroyMainWindow")
+
+
def wait_for_condition(function, timeout_in_seconds=1.0):
# type: (function, float) -> bool
"""
diff --git a/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomEditorComponents_LightComponent.py b/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomEditorComponents_LightComponent.py
deleted file mode 100644
index 7ecdc6859b..0000000000
--- a/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomEditorComponents_LightComponent.py
+++ /dev/null
@@ -1,213 +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
-"""
-
-import os
-import sys
-
-import azlmbr.bus as bus
-import azlmbr.editor as editor
-import azlmbr.math as math
-import azlmbr.paths
-import azlmbr.legacy.general as general
-
-sys.path.append(os.path.join(azlmbr.paths.projectroot, "Gem", "PythonTests"))
-
-import editor_python_test_tools.hydra_editor_utils as hydra
-from Atom.atom_utils.atom_constants import LIGHT_TYPES
-
-LIGHT_TYPE_PROPERTY = 'Controller|Configuration|Light type'
-SPHERE_AND_SPOT_DISK_LIGHT_PROPERTIES = [
- ("Controller|Configuration|Shadows|Enable shadow", True),
- ("Controller|Configuration|Shadows|Shadowmap size", 0), # 256
- ("Controller|Configuration|Shadows|Shadowmap size", 1), # 512
- ("Controller|Configuration|Shadows|Shadowmap size", 2), # 1024
- ("Controller|Configuration|Shadows|Shadowmap size", 3), # 2048
- ("Controller|Configuration|Shadows|Shadow filter method", 1), # PCF
- ("Controller|Configuration|Shadows|Filtering sample count", 4.0),
- ("Controller|Configuration|Shadows|Filtering sample count", 64.0),
- ("Controller|Configuration|Shadows|Shadow filter method", 2), # ECM
- ("Controller|Configuration|Shadows|ESM exponent", 50),
- ("Controller|Configuration|Shadows|ESM exponent", 5000),
- ("Controller|Configuration|Shadows|Shadow filter method", 3), # ESM+PCF
-]
-QUAD_LIGHT_PROPERTIES = [
- ("Controller|Configuration|Both directions", True),
- ("Controller|Configuration|Fast approximation", True),
-]
-SIMPLE_POINT_LIGHT_PROPERTIES = [
- ("Controller|Configuration|Attenuation radius|Mode", 0),
- ("Controller|Configuration|Attenuation radius|Radius", 100.0),
-]
-SIMPLE_SPOT_LIGHT_PROPERTIES = [
- ("Controller|Configuration|Shutters|Inner angle", 45.0),
- ("Controller|Configuration|Shutters|Outer angle", 90.0),
-]
-
-
-def verify_required_component_property_value(entity_name, component, property_path, expected_property_value):
- """
- Compares the property value of component against the expected_property_value.
- :param entity_name: name of the entity to use (for test verification purposes).
- :param component: component to check on a given entity for its current property value.
- :param property_path: the path to the property inside the component.
- :param expected_property_value: The value expected from the value inside property_path.
- :return: None, but prints to general.log() which the test uses to verify against.
- """
- property_value = editor.EditorComponentAPIBus(
- bus.Broadcast, "GetComponentProperty", component, property_path).GetValue()
- general.log(f"{entity_name}_test: Property value is {property_value} "
- f"which matches {expected_property_value}")
-
-
-def run():
- """
- Test Case - Light Component
- 1. Creates a "light_entity" Entity and attaches a "Light" component to it.
- 2. Updates the Light component to each light type option from the LIGHT_TYPES constant.
- 3. The test will check the Editor log to ensure each light type was selected.
- 4. Prints the string "Light component test (non-GPU) completed" after completion.
-
- Tests will fail immediately if any of these log lines are found:
- 1. Trace::Assert
- 2. Trace::Error
- 3. Traceback (most recent call last):
-
- :return: None
- """
- # Create a "light_entity" entity with "Light" component.
- light_entity_name = "light_entity"
- light_component = "Light"
- light_entity = hydra.Entity(light_entity_name)
- light_entity.create_entity(math.Vector3(-1.0, -2.0, 3.0), [light_component])
- general.log(
- f"{light_entity_name}_test: Component added to the entity: "
- f"{hydra.has_components(light_entity.id, [light_component])}")
-
- # Populate the light_component_id_pair value so that it can be used to select all Light component options.
- light_component_id_pair = None
- component_type_id_list = azlmbr.editor.EditorComponentAPIBus(
- azlmbr.bus.Broadcast, 'FindComponentTypeIdsByEntityType', [light_component], 0)
- if len(component_type_id_list) < 1:
- general.log(f"ERROR: A component class with name {light_component} doesn't exist")
- light_component_id_pair = None
- elif len(component_type_id_list) > 1:
- general.log(f"ERROR: Found more than one component classes with same name: {light_component}")
- light_component_id_pair = None
- entity_component_id_pair = azlmbr.editor.EditorComponentAPIBus(
- azlmbr.bus.Broadcast, 'GetComponentOfType', light_entity.id, component_type_id_list[0])
- if entity_component_id_pair.IsSuccess():
- light_component_id_pair = entity_component_id_pair.GetValue()
-
- # Test each Light component option can be selected and it's properties updated.
- # Point (sphere) light type checks.
- light_type_property_test(
- light_type=LIGHT_TYPES['sphere'],
- light_properties=SPHERE_AND_SPOT_DISK_LIGHT_PROPERTIES,
- light_component_id_pair=light_component_id_pair,
- light_entity_name=light_entity_name,
- light_entity=light_entity
- )
-
- # Spot (disk) light type checks.
- light_type_property_test(
- light_type=LIGHT_TYPES['spot_disk'],
- light_properties=SPHERE_AND_SPOT_DISK_LIGHT_PROPERTIES,
- light_component_id_pair=light_component_id_pair,
- light_entity_name=light_entity_name,
- light_entity=light_entity
- )
-
- # Capsule light type checks.
- azlmbr.editor.EditorComponentAPIBus(
- azlmbr.bus.Broadcast,
- 'SetComponentProperty',
- light_component_id_pair,
- LIGHT_TYPE_PROPERTY,
- LIGHT_TYPES['capsule']
- )
- verify_required_component_property_value(
- entity_name=light_entity_name,
- component=light_entity.components[0],
- property_path=LIGHT_TYPE_PROPERTY,
- expected_property_value=LIGHT_TYPES['capsule']
- )
-
- # Quad light type checks.
- light_type_property_test(
- light_type=LIGHT_TYPES['quad'],
- light_properties=QUAD_LIGHT_PROPERTIES,
- light_component_id_pair=light_component_id_pair,
- light_entity_name=light_entity_name,
- light_entity=light_entity
- )
-
- # Polygon light type checks.
- azlmbr.editor.EditorComponentAPIBus(
- azlmbr.bus.Broadcast,
- 'SetComponentProperty',
- light_component_id_pair,
- LIGHT_TYPE_PROPERTY,
- LIGHT_TYPES['polygon']
- )
- verify_required_component_property_value(
- entity_name=light_entity_name,
- component=light_entity.components[0],
- property_path=LIGHT_TYPE_PROPERTY,
- expected_property_value=LIGHT_TYPES['polygon']
- )
-
- # Point (simple punctual) light type checks.
- light_type_property_test(
- light_type=LIGHT_TYPES['simple_point'],
- light_properties=SIMPLE_POINT_LIGHT_PROPERTIES,
- light_component_id_pair=light_component_id_pair,
- light_entity_name=light_entity_name,
- light_entity=light_entity
- )
-
- # Spot (simple punctual) light type checks.
- light_type_property_test(
- light_type=LIGHT_TYPES['simple_spot'],
- light_properties=SIMPLE_SPOT_LIGHT_PROPERTIES,
- light_component_id_pair=light_component_id_pair,
- light_entity_name=light_entity_name,
- light_entity=light_entity
- )
-
- general.log("Light component test (non-GPU) completed.")
-
-
-def light_type_property_test(light_type, light_properties, light_component_id_pair, light_entity_name, light_entity):
- """
- Updates the current light type and modifies its properties, then verifies they are accurate to what was set.
- :param light_type: The type of light to update, must match a value in LIGHT_TYPES
- :param light_properties: List of tuples detailing properties to modify with update values.
- :param light_component_id_pair: Entity + component ID pair for updating the light component on a given entity.
- :param light_entity_name: the name of the Entity holding the light component.
- :param light_entity: the Entity object containing the light component.
- :return: None
- """
- azlmbr.editor.EditorComponentAPIBus(
- azlmbr.bus.Broadcast,
- 'SetComponentProperty',
- light_component_id_pair,
- LIGHT_TYPE_PROPERTY,
- light_type
- )
- verify_required_component_property_value(
- entity_name=light_entity_name,
- component=light_entity.components[0],
- property_path=LIGHT_TYPE_PROPERTY,
- expected_property_value=light_type
- )
-
- for light_property in light_properties:
- light_entity.get_set_test(0, light_property[0], light_property[1])
-
-
-if __name__ == "__main__":
- run()
diff --git a/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomMaterialEditor_BasicTests.py b/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomMaterialEditor_BasicTests.py
index 9f8f6c44b2..bd00a84919 100644
--- a/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomMaterialEditor_BasicTests.py
+++ b/AutomatedTesting/Gem/PythonTests/Atom/tests/hydra_AtomMaterialEditor_BasicTests.py
@@ -36,6 +36,19 @@ MATERIAL_TYPE_PATH = os.path.join(
CACHE_FILE_EXTENSION = ".azmaterial"
+def verify_pane_visibility(pane_name: str):
+ """
+ print log lines indicating Material Editor pane visibility function
+ :param pane_name: Name of the pane to be tested
+ """
+ initial_value = material_editor.is_pane_visible(pane_name)
+ material_editor.set_pane_visibility(pane_name, not initial_value)
+ result = (material_editor.is_pane_visible(pane_name) is not initial_value)
+ material_editor.set_pane_visibility(pane_name, initial_value)
+ result = result and (initial_value is material_editor.is_pane_visible(pane_name))
+ print(f"P1: {pane_name} visibility working as expected: {result}")
+
+
def run():
"""
Summary:
@@ -49,9 +62,12 @@ def run():
7. Saving as a New Material
8. Saving as a Child Material
9. Saving all Open Materials
+ 10. Verify Asset Browser pane visibility
+ 11. Verify Material Inspector pane visibility
Expected Result:
All the above functions work as expected in Material Editor.
+ Pane visibility functions as expected
:return: None
"""
@@ -187,6 +203,19 @@ def run():
material_editor.save_all()
material_editor.close_all_documents()
+ # 10) Verify Asset Browser pane visibility
+ verify_pane_visibility("Asset Browser")
+
+ # 11) Verify Material Inspector pane visibility
+ verify_pane_visibility("Inspector")
+
+ # Confirm documents closed and exit Material Editor
+ material_editor.wait_for_condition(lambda:
+ (not material_editor.is_open(document1_id)) and
+ (not material_editor.is_open(document2_id)) and
+ (not material_editor.is_open(document3_id)), 2.0)
+ material_editor.destroy_main_window()
+
if __name__ == "__main__":
run()
diff --git a/AutomatedTesting/Gem/PythonTests/Blast/CMakeLists.txt b/AutomatedTesting/Gem/PythonTests/Blast/CMakeLists.txt
index aea2562e0b..64effb5b4c 100644
--- a/AutomatedTesting/Gem/PythonTests/Blast/CMakeLists.txt
+++ b/AutomatedTesting/Gem/PythonTests/Blast/CMakeLists.txt
@@ -6,7 +6,7 @@
#
#
-ly_get_list_relative_pal_filename(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME})
+o3de_pal_dir(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME} ${gem_restricted_path} ${gem_path} ${gem_parent_relative_path})
include(${pal_dir}/PAL_${PAL_PLATFORM_NAME_LOWERCASE}.cmake) # for PAL_TRAIT_BLAST Traits
diff --git a/AutomatedTesting/Gem/PythonTests/CMakeLists.txt b/AutomatedTesting/Gem/PythonTests/CMakeLists.txt
index 800f347359..26c03e78c2 100644
--- a/AutomatedTesting/Gem/PythonTests/CMakeLists.txt
+++ b/AutomatedTesting/Gem/PythonTests/CMakeLists.txt
@@ -10,7 +10,7 @@
# Automated Tests
################################################################################
-ly_get_list_relative_pal_filename(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME})
+o3de_pal_dir(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME} ${gem_restricted_path} ${gem_path} ${gem_parent_relative_path})
include(${pal_dir}/PAL_traits_${PAL_PLATFORM_NAME_LOWERCASE}.cmake)
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 72530325e0..c3398406ab 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
@@ -8,7 +8,8 @@ SPDX-License-Identifier: Apache-2.0 OR MIT
# Built-in Imports
from __future__ import annotations
from typing import List, Tuple, Union
-
+from enum import Enum
+import warnings
# Open 3D Engine Imports
import azlmbr
@@ -21,14 +22,25 @@ import azlmbr.legacy.general as general
from editor_python_test_tools.utils import Report
+class EditorEntityType(Enum):
+ GAME = azlmbr.entity.EntityType().Game
+ LEVEL = azlmbr.entity.EntityType().Level
+
+
class EditorComponent:
"""
EditorComponent class used to set and get the component property value using path
EditorComponent object is returned from either of
EditorEntity.add_component() or Entity.add_components() or EditorEntity.get_components_of_type()
which also assigns self.id and self.type_id to the EditorComponent object.
+ self.type_id is the UUID for the component type as provided by an ebus call.
"""
+ def __init__(self, type_id: uuid):
+ self.type_id = type_id
+ self.id = None
+ self.property_tree_editor = None
+
def get_component_name(self) -> str:
"""
Used to get name of component
@@ -38,9 +50,9 @@ class EditorComponent:
assert len(type_names) != 0, "Component object does not have type id"
return type_names[0]
- def get_property_tree(self):
+ def get_property_tree(self, force_get: bool = False):
"""
- Used to get the property tree object of component that has following functions associated with it:
+ Used to get and cache the property tree editor of component that has following functions associated with it:
1. prop_tree.is_container(path)
2. prop_tree.get_container_count(path)
3. prop_tree.reset_container(path)
@@ -48,17 +60,161 @@ class EditorComponent:
5. prop_tree.remove_container_item(path, key)
6. prop_tree.update_container_item(path, key, value)
7. prop_tree.get_container_item(path, key)
- :return: Property tree object of a component
+ :param force_get: Force a fresh property tree editor rather than the cached self.property_tree_editor
+ :return: Property tree editor of the component
"""
+ if (not force_get) and (self.property_tree_editor is not None):
+ return self.property_tree_editor
+
build_prop_tree_outcome = editor.EditorComponentAPIBus(
bus.Broadcast, "BuildComponentPropertyTreeEditor", self.id
)
assert (
build_prop_tree_outcome.IsSuccess()
- ), f"Failure: Could not build property tree of component: '{self.get_component_name()}'"
+ ), f"Failure: Could not build property tree editor of component: '{self.get_component_name()}'"
prop_tree = build_prop_tree_outcome.GetValue()
Report.info(prop_tree.build_paths_list())
- return prop_tree
+ self.property_tree_editor = prop_tree
+ return self.property_tree_editor
+
+ def is_property_container(self, component_property_path: str) -> bool:
+ """
+ Used to determine if a component property is a container.
+ Containers are a collection of same typed values that can expand/shrink to contain more or less.
+ There are two types of containers; indexed and associative.
+ Indexed containers use integer key and are something like a linked list
+ Associative containers utilize keys of the same type which could be any supported type.
+ :param component_property_path: String of component property. (e.g. 'Settings|Visible')
+ :return: Boolean True if the property is a container False if it is not.
+ """
+ if self.property_tree_editor is None:
+ self.get_property_tree()
+ result = self.property_tree_editor.is_container(component_property_path)
+ if not result:
+ Report.info(f"{self.get_component_name()}: '{component_property_path}' is not a container")
+ return result
+
+ def get_container_count(self, component_property_path: str) -> int:
+ """
+ Used to get the count of items in the container.
+ :param component_property_path: String of component property. (e.g. 'Settings|Visible')
+ :return: Count of items in the container as unsigned integer
+ """
+ assert (
+ self.is_property_container(component_property_path)
+ ), f"Failure: '{component_property_path}' is not a property container"
+ container_count_outcome = self.property_tree_editor.get_container_count(component_property_path)
+ assert (
+ container_count_outcome.IsSuccess()
+ ), f"Failure: get_container_count did not return success for '{component_property_path}'"
+ return container_count_outcome.GetValue()
+
+ def reset_container(self, component_property_path: str):
+ """
+ Used to reset a container to empty
+ :param component_property_path: String of component property. (e.g. 'Settings|Visible')
+ :return: None
+ """
+ assert (
+ self.is_property_container(component_property_path)
+ ), f"Failure: '{component_property_path}' is not a property container"
+ reset_outcome = self.property_tree_editor.reset_container(component_property_path)
+ assert (
+ reset_outcome.IsSuccess()
+ ), f"Failure: could not reset_container on '{component_property_path}'"
+
+ def append_container_item(self, component_property_path: str, value: any):
+ """
+ Used to append a value to an indexed container item without providing an index key.
+ Append will fail on an associative container
+ :param component_property_path: String of component property. (e.g. 'Settings|Visible')
+ :param value: Value to be set
+ :return: None
+ """
+ assert (
+ self.is_property_container(component_property_path)
+ ), f"Failure: '{component_property_path}' is not a property container"
+ append_outcome = self.property_tree_editor.append_container_item(component_property_path, value)
+ assert (
+ append_outcome.IsSuccess()
+ ), f"Failure: could not append_container_item to '{component_property_path}'"
+
+ def add_container_item(self, component_property_path: str, key: any, value: any):
+ """
+ Used to add a container item at a specified key.
+ There are two types of containers; indexed and associative.
+ Indexed containers use integer key.
+ Associative containers utilize keys of the same type which could be any supported type.
+ :param component_property_path: String of component property. (e.g. 'Settings|Visible')
+ :param key: Zero index integer key or any supported type for associative container
+ :param value: Value to be set
+ :return: None
+ """
+ assert (
+ self.is_property_container(component_property_path)
+ ), f"Failure: '{component_property_path}' is not a property container"
+ add_outcome = self.property_tree_editor.add_container_item(component_property_path, key, value)
+ assert (
+ add_outcome.IsSuccess()
+ ), f"Failure: could not add_container_item '{key}' to '{component_property_path}'"
+
+ def get_container_item(self, component_property_path: str, key: any) -> any:
+ """
+ Used to retrieve a container item value at the specified key.
+ There are two types of containers; indexed and associative.
+ Indexed containers use integer key.
+ Associative containers utilize keys of the same type which could be any supported type.
+ :param component_property_path: String of component property. (e.g. 'Settings|Visible')
+ :param key: Zero index integer key or any supported type for associative container
+ :return: Value stored at the key specified
+ """
+ assert (
+ self.is_property_container(component_property_path)
+ ), f"Failure: '{component_property_path}' is not a property container"
+ get_outcome = self.property_tree_editor.get_container_item(component_property_path, key)
+ assert (
+ get_outcome.IsSuccess()
+ ), (
+ f"Failure: could not get a value for {self.get_component_name()}: '{component_property_path}' [{key}]. "
+ f"Error returned by get_container_item: {get_outcome.GetError()}")
+ return get_outcome.GetValue()
+
+ def remove_container_item(self, component_property_path: str, key: any):
+ """
+ Used to remove a container item value at the specified key.
+ There are two types of containers; indexed and associative.
+ Indexed containers use integer key.
+ Associative containers utilize keys of the same type which could be any supported type.
+ :param component_property_path: String of component property. (e.g. 'Settings|Visible')
+ :param key: Zero index integer key or any supported type for associative container
+ :return: None
+ """
+ assert (
+ self.is_property_container(component_property_path)
+ ), f"Failure: '{component_property_path}' is not a property container"
+ remove_outcome = self.property_tree_editor.remove_container_item(component_property_path, key)
+ assert (
+ remove_outcome.IsSuccess()
+ ), f"Failure: could not remove_container_item '{key}' from '{component_property_path}'"
+
+ def update_container_item(self, component_property_path: str, key: any, value: any):
+ """
+ Used to update a container item at a specified key.
+ There are two types of containers; indexed and associative.
+ Indexed containers use integer key.
+ Associative containers utilize keys of the same type which could be any supported type.
+ :param component_property_path: String of component property. (e.g. 'Settings|Visible')
+ :param key: Zero index integer key or any supported type for associative container
+ :param value: Value to be set
+ :return: None
+ """
+ assert (
+ self.is_property_container(component_property_path)
+ ), f"Failure: '{component_property_path}' is not a property container"
+ update_outcome = self.property_tree_editor.update_container_item(component_property_path, key, value)
+ assert (
+ update_outcome.IsSuccess()
+ ), f"Failure: could not update '{key}' in '{component_property_path}'"
def get_component_property_value(self, component_property_path: str):
"""
@@ -94,23 +250,36 @@ class EditorComponent:
"""
return editor.EditorComponentAPIBus(bus.Broadcast, "IsComponentEnabled", self.id)
+ def set_enabled(self, new_state: bool):
+ """
+ Used to set the component enabled state
+ :param new_state: Boolean enabled True, disabled False
+ :return: None
+ """
+ if new_state:
+ editor.EditorComponentAPIBus(bus.Broadcast, "EnableComponents", [self.id])
+ else:
+ editor.EditorComponentAPIBus(bus.Broadcast, "DisableComponents", [self.id])
+
def disable_component(self):
"""
Used to disable the component using its id value.
+ Deprecation warning! Use set_enabled(False) instead as this method is in deprecation
:return: None
"""
+ warnings.warn("disable_component is deprecated, use set_enabled(False) instead.", DeprecationWarning)
editor.EditorComponentAPIBus(bus.Broadcast, "DisableComponents", [self.id])
@staticmethod
- def get_type_ids(component_names: list) -> list:
+ def get_type_ids(component_names: list, entity_type: EditorEntityType = EditorEntityType.GAME) -> list:
"""
Used to get type ids of given components list
- :param: component_names: List of components to get type ids
- :return: List of type ids of given components.
+ :param component_names: List of components to get type ids
+ :param entity_type: Entity_Type enum value Entity_Type.GAME is the default
+ :return: List of type ids of given components. Type id is a UUID as provided by the ebus call
"""
type_ids = editor.EditorComponentAPIBus(
- bus.Broadcast, "FindComponentTypeIdsByEntityType", component_names, azlmbr.entity.EntityType().Game
- )
+ bus.Broadcast, "FindComponentTypeIdsByEntityType", component_names, entity_type.value)
return type_ids
@@ -131,7 +300,7 @@ class EditorEntity:
"""
Entity class is used to create and interact with Editor Entities.
Example: To create Editor Entity, Use the code:
- test_entity = Entity.create_editor_entity("TestEntity")
+ test_entity = EditorEntity.create_editor_entity("TestEntity")
# This creates a python object with 'test_entity' linked to entity name "TestEntity" in Editor.
# To add component, use:
test_entity.add_component()
@@ -276,10 +445,9 @@ class EditorEntity:
:return: List of newly added components to the entity
"""
components = []
- type_ids = EditorComponent.get_type_ids(component_names)
+ type_ids = EditorComponent.get_type_ids(component_names, EditorEntityType.GAME)
for type_id in type_ids:
- new_comp = EditorComponent()
- new_comp.type_id = type_id
+ new_comp = EditorComponent(type_id)
add_component_outcome = editor.EditorComponentAPIBus(
bus.Broadcast, "AddComponentsOfType", self.id, [type_id]
)
@@ -291,6 +459,27 @@ class EditorEntity:
self.components.append(new_comp)
return components
+ def remove_component(self, component_name: str) -> None:
+ """
+ Used to remove a component from Entity
+ :param component_name: String of component name to remove
+ :return: None
+ """
+ self.remove_components([component_name])
+
+ def remove_components(self, component_names: list):
+ """
+ Used to remove a list of components from Entity
+ :param component_names: List of component names to remove
+ :return: None
+ """
+ type_ids = EditorComponent.get_type_ids(component_names, EditorEntityType.GAME)
+ for type_id in type_ids:
+ remove_outcome = editor.EditorComponentAPIBus(bus.Broadcast, "RemoveComponents", self.id, [type_id])
+ assert (
+ remove_outcome.IsSuccess()
+ ), f"Failure: could not remove component from '{self.get_name()}'"
+
def get_components_of_type(self, component_names: list) -> List[EditorComponent]:
"""
Used to get components of type component_name that already exists on Entity
@@ -298,10 +487,9 @@ class EditorEntity:
:return: List of Entity Component objects of given component name
"""
component_list = []
- type_ids = EditorComponent.get_type_ids(component_names)
+ type_ids = EditorComponent.get_type_ids(component_names, EditorEntityType.GAME)
for type_id in type_ids:
- component = EditorComponent()
- component.type_id = type_id
+ component = EditorComponent(type_id)
get_component_of_type_outcome = editor.EditorComponentAPIBus(
bus.Broadcast, "GetComponentOfType", self.id, type_id
)
@@ -319,7 +507,7 @@ class EditorEntity:
:param component_name: Name of component to check for
:return: True, if entity has specified component. Else, False
"""
- type_ids = EditorComponent.get_type_ids([component_name])
+ type_ids = EditorComponent.get_type_ids([component_name], EditorEntityType.GAME)
return editor.EditorComponentAPIBus(bus.Broadcast, "HasComponentOfType", self.id, type_ids[0])
def get_start_status(self) -> int:
@@ -359,6 +547,21 @@ class EditorEntity:
set_status = self.get_start_status()
assert set_status == status_to_set, f"Failed to set start status of {desired_start_status} to {self.get_name}"
+ def is_locked(self) -> bool:
+ """
+ Used to get the locked status of the entity
+ :return: Boolean True if locked False if not locked
+ """
+ return editor.EditorEntityInfoRequestBus(bus.Event, "IsLocked", self.id)
+
+ def set_lock_state(self, is_locked: bool) -> None:
+ """
+ Sets the lock state on the object to locked or not locked.
+ :param is_locked: True for locking, False to unlock.
+ :return: None
+ """
+ editor.EditorEntityAPIBus(bus.Event, "SetLockState", self.id, is_locked)
+
def delete(self) -> None:
"""
Used to delete the Entity.
@@ -488,18 +691,6 @@ class EditorLevelEntity:
EditorLevelComponentAPIBus requests.
"""
- @staticmethod
- def get_type_ids(component_names: list) -> list:
- """
- Used to get type ids of given components list for EntityType Level
- :param: component_names: List of components to get type ids
- :return: List of type ids of given components.
- """
- type_ids = editor.EditorComponentAPIBus(
- bus.Broadcast, "FindComponentTypeIdsByEntityType", component_names, azlmbr.entity.EntityType().Level
- )
- return type_ids
-
@staticmethod
def add_component(component_name: str) -> EditorComponent:
"""
@@ -518,10 +709,9 @@ class EditorLevelEntity:
:return: List of newly added components to the level
"""
components = []
- type_ids = EditorLevelEntity.get_type_ids(component_names)
+ type_ids = EditorComponent.get_type_ids(component_names, EditorEntityType.LEVEL)
for type_id in type_ids:
- new_comp = EditorComponent()
- new_comp.type_id = type_id
+ new_comp = EditorComponent(type_id)
add_component_outcome = editor.EditorLevelComponentAPIBus(
bus.Broadcast, "AddComponentsOfType", [type_id]
)
@@ -540,10 +730,9 @@ class EditorLevelEntity:
:return: List of Level Component objects of given component name
"""
component_list = []
- type_ids = EditorLevelEntity.get_type_ids(component_names)
+ type_ids = EditorComponent.get_type_ids(component_names, EditorEntityType.LEVEL)
for type_id in type_ids:
- component = EditorComponent()
- component.type_id = type_id
+ component = EditorComponent(type_id)
get_component_of_type_outcome = editor.EditorLevelComponentAPIBus(
bus.Broadcast, "GetComponentOfType", type_id
)
@@ -562,7 +751,7 @@ class EditorLevelEntity:
:param component_name: Name of component to check for
:return: True, if level has specified component. Else, False
"""
- type_ids = EditorLevelEntity.get_type_ids([component_name])
+ type_ids = EditorComponent.get_type_ids([component_name], EditorEntityType.LEVEL)
return editor.EditorLevelComponentAPIBus(bus.Broadcast, "HasComponentOfType", type_ids[0])
@staticmethod
@@ -572,5 +761,5 @@ class EditorLevelEntity:
:param component_name: Name of component to check for
:return: integer count of occurences of level component attached to level or zero if none are present
"""
- type_ids = EditorLevelEntity.get_type_ids([component_name])
+ type_ids = EditorComponent.get_type_ids([component_name], EditorEntityType.LEVEL)
return editor.EditorLevelComponentAPIBus(bus.Broadcast, "CountComponentsOfType", type_ids[0])
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 5e3828ad02..36fc6003f7 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
@@ -5,15 +5,22 @@ For complete copyright and license terms please see the LICENSE at the root of t
SPDX-License-Identifier: Apache-2.0 OR MIT
"""
+from typing import List
+from math import isclose
+import collections.abc
+
import azlmbr.bus as bus
import azlmbr.editor as editor
import azlmbr.entity as entity
import azlmbr.legacy.general as general
import azlmbr.object
-from typing import List
-from math import isclose
-import collections.abc
+from editor_python_test_tools.utils import TestHelper as helper
+
+
+def open_base_level():
+ helper.init_idle()
+ helper.open_level("Prefab", "Base")
def find_entity_by_name(entity_name):
diff --git a/AutomatedTesting/Gem/PythonTests/Physics/tests/collider/Collider_SameCollisionGroupSameCustomLayerCollide.py b/AutomatedTesting/Gem/PythonTests/Physics/tests/collider/Collider_SameCollisionGroupSameCustomLayerCollide.py
index 2e40c0b557..8e8fccd725 100644
--- a/AutomatedTesting/Gem/PythonTests/Physics/tests/collider/Collider_SameCollisionGroupSameCustomLayerCollide.py
+++ b/AutomatedTesting/Gem/PythonTests/Physics/tests/collider/Collider_SameCollisionGroupSameCustomLayerCollide.py
@@ -127,7 +127,7 @@ def Collider_SameCollisionGroupSameCustomLayerCollide():
# Main Script
# 1) Load the level
helper.init_idle()
- helper.open_level("physics", "Collider_SameCollisionGroupSameCustomLayerCollide")
+ helper.open_level("Physics", "Collider_SameCollisionGroupSameCustomLayerCollide")
# 2) Enter Game Mode
helper.enter_game_mode(Tests.enter_game_mode)
diff --git a/AutomatedTesting/Gem/PythonTests/Physics/tests/force_region/ForceRegion_MultipleForcesInSameComponentCombineForces.py b/AutomatedTesting/Gem/PythonTests/Physics/tests/force_region/ForceRegion_MultipleForcesInSameComponentCombineForces.py
index 7307f3a2fb..e5f6e236cf 100644
--- a/AutomatedTesting/Gem/PythonTests/Physics/tests/force_region/ForceRegion_MultipleForcesInSameComponentCombineForces.py
+++ b/AutomatedTesting/Gem/PythonTests/Physics/tests/force_region/ForceRegion_MultipleForcesInSameComponentCombineForces.py
@@ -162,7 +162,7 @@ def ForceRegion_MultipleForcesInSameComponentCombineForces():
helper.init_idle()
# 1) Load Level
- helper.open_level("physics", "ForceRegion_MultipleForcesInSameComponentCombineForces")
+ helper.open_level("Physics", "ForceRegion_MultipleForcesInSameComponentCombineForces")
# 2) Enter Game Mode
helper.enter_game_mode(Tests.enter_game_mode)
diff --git a/AutomatedTesting/Gem/PythonTests/Physics/tests/material/Material_DefaultLibraryUpdatedAcrossLevels_after.py b/AutomatedTesting/Gem/PythonTests/Physics/tests/material/Material_DefaultLibraryUpdatedAcrossLevels_after.py
index 1f8cfae498..41ccc8f2dd 100644
--- a/AutomatedTesting/Gem/PythonTests/Physics/tests/material/Material_DefaultLibraryUpdatedAcrossLevels_after.py
+++ b/AutomatedTesting/Gem/PythonTests/Physics/tests/material/Material_DefaultLibraryUpdatedAcrossLevels_after.py
@@ -229,8 +229,8 @@ def Material_DefaultLibraryUpdatedAcrossLevels_after():
for test in test_list:
# 1) Open the correct level is open
helper.open_level(
- "physics",
- f"Material_DefaultLibraryUpdatedAcrossLevels\\{test.level}"
+ "Physics",
+ os.path.join("Material_DefaultLibraryUpdatedAcrossLevels", str(test.level))
)
# 2) Enter Game Mode
diff --git a/AutomatedTesting/Gem/PythonTests/Physics/tests/material/Material_DefaultLibraryUpdatedAcrossLevels_before.py b/AutomatedTesting/Gem/PythonTests/Physics/tests/material/Material_DefaultLibraryUpdatedAcrossLevels_before.py
index 15db5808e2..d86a016be1 100644
--- a/AutomatedTesting/Gem/PythonTests/Physics/tests/material/Material_DefaultLibraryUpdatedAcrossLevels_before.py
+++ b/AutomatedTesting/Gem/PythonTests/Physics/tests/material/Material_DefaultLibraryUpdatedAcrossLevels_before.py
@@ -189,7 +189,7 @@ def Material_DefaultLibraryUpdatedAcrossLevels_before():
# 1) Open the correct level is open
helper.open_level(
"Physics",
- f"Material_DefaultLibraryUpdatedAcrossLevels\\{test.level}"
+ os.path.join("Material_DefaultLibraryUpdatedAcrossLevels", str(test.level))
)
# 2) Enter Game Mode
diff --git a/AutomatedTesting/Gem/PythonTests/Physics/tests/material/Material_LibraryUpdatedAcrossLevels.py b/AutomatedTesting/Gem/PythonTests/Physics/tests/material/Material_LibraryUpdatedAcrossLevels.py
index 0b647361f6..6eebfe60bc 100644
--- a/AutomatedTesting/Gem/PythonTests/Physics/tests/material/Material_LibraryUpdatedAcrossLevels.py
+++ b/AutomatedTesting/Gem/PythonTests/Physics/tests/material/Material_LibraryUpdatedAcrossLevels.py
@@ -252,10 +252,8 @@ def Material_LibraryUpdatedAcrossLevels():
for test in test_list:
# 1) Open the correct level for the test
helper.open_level(
- "physics",
- "Material_LibraryUpdatedAcrossLevels\\Material_LibraryUpdatedAcrossLevels_{}".format(
- test.level_index
- ),
+ "Physics",
+ os.path.join("Material_LibraryUpdatedAcrossLevels", str(test.level_index))
)
# 2) Open Game Mode
diff --git a/AutomatedTesting/Gem/PythonTests/Physics/tests/script_canvas/ScriptCanvas_SpawnEntityWithPhysComponents.py b/AutomatedTesting/Gem/PythonTests/Physics/tests/script_canvas/ScriptCanvas_SpawnEntityWithPhysComponents.py
index 5862b7586b..e6e29063d6 100644
--- a/AutomatedTesting/Gem/PythonTests/Physics/tests/script_canvas/ScriptCanvas_SpawnEntityWithPhysComponents.py
+++ b/AutomatedTesting/Gem/PythonTests/Physics/tests/script_canvas/ScriptCanvas_SpawnEntityWithPhysComponents.py
@@ -106,7 +106,7 @@ def ScriptCanvas_SpawnEntityWithPhysComponents():
# Main Script
helper.init_idle()
# 1) Open Level
- helper.open_level("physics", "ScriptCanvas_SpawnEntityWithPhysComponents")
+ helper.open_level("Physics", "ScriptCanvas_SpawnEntityWithPhysComponents")
# 2) Enter Game Mode
helper.enter_game_mode(Tests.enter_game_mode)
diff --git a/AutomatedTesting/Gem/PythonTests/PythonAssetBuilder/AssetBuilder_test.py b/AutomatedTesting/Gem/PythonTests/PythonAssetBuilder/AssetBuilder_test.py
index 45e633a979..cb2c445246 100644
--- a/AutomatedTesting/Gem/PythonTests/PythonAssetBuilder/AssetBuilder_test.py
+++ b/AutomatedTesting/Gem/PythonTests/PythonAssetBuilder/AssetBuilder_test.py
@@ -12,12 +12,36 @@ import sys
import os
import pytest
import logging
+import sqlite3
pytest.importorskip('ly_test_tools')
import ly_test_tools.environment.file_system as file_system
import ly_test_tools.log.log_monitor
import ly_test_tools.environment.waiter as waiter
+def detect_product(sql_connection, platform, target):
+ cur = sql_connection.cursor()
+ product_target = f'{platform}/{target}'
+ print(f'Detecting {product_target} in assetdb.sqlite')
+ hits = 0
+ for row in cur.execute(f'select ProductID from Products where ProductName is "{product_target}"'):
+ hits = hits + 1
+ assert hits == 1
+
+
+def find_products(cache_folder, platform):
+ con = sqlite3.connect(os.path.join(cache_folder, 'assetdb.sqlite'))
+ detect_product(con, platform, 'gem/pythontests/pythonassetbuilder/test_asset.mock_asset')
+ detect_product(con, platform, 'gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_z_positive_1.azmodel')
+ detect_product(con, platform, 'gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_z_negative_1.azmodel')
+ detect_product(con, platform, 'gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_y_positive_1.azmodel')
+ detect_product(con, platform, 'gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_y_negative_1.azmodel')
+ detect_product(con, platform, 'gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_x_positive_1.azmodel')
+ detect_product(con, platform, 'gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_x_negative_1.azmodel')
+ detect_product(con, platform, 'gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_center_1.azmodel')
+ con.close()
+
+
@pytest.mark.SUITE_periodic
@pytest.mark.parametrize('launcher_platform', ['windows_editor'])
@pytest.mark.parametrize('project', ['AutomatedTesting'])
@@ -25,16 +49,7 @@ import ly_test_tools.environment.waiter as waiter
class TestPythonAssetProcessing(object):
def test_DetectPythonCreatedAsset(self, request, editor, level, launcher_platform):
unexpected_lines = []
- expected_lines = [
- 'Mock asset exists',
- 'AssetId found for asset (gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_z_positive_1.azmodel) found',
- 'AssetId found for asset (gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_z_negative_1.azmodel) found',
- 'AssetId found for asset (gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_y_positive_1.azmodel) found',
- 'AssetId found for asset (gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_y_negative_1.azmodel) found',
- 'AssetId found for asset (gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_x_positive_1.azmodel) found',
- 'AssetId found for asset (gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_x_negative_1.azmodel) found',
- 'AssetId found for asset (gem/pythontests/pythonassetbuilder/geom_group_fbx_cube_100cm_center_1.azmodel) found'
- ]
+ expected_lines = []
timeout = 180
halt_on_unexpected = False
test_directory = os.path.join(os.path.dirname(__file__))
@@ -50,3 +65,9 @@ class TestPythonAssetProcessing(object):
exc=("Log file '{}' was never opened by another process.".format(editorlog_file)),
interval=1)
log_monitor.monitor_log_for_lines(expected_lines, unexpected_lines, halt_on_unexpected, timeout)
+
+ cache_folder = editor.workspace.paths.cache()
+ platform = editor.workspace.asset_processor_platform
+ if platform == 'windows':
+ platform = 'pc'
+ find_products(cache_folder, platform)
diff --git a/AutomatedTesting/Gem/PythonTests/WhiteBox/CMakeLists.txt b/AutomatedTesting/Gem/PythonTests/WhiteBox/CMakeLists.txt
index 733e8edf29..d4554ee84b 100644
--- a/AutomatedTesting/Gem/PythonTests/WhiteBox/CMakeLists.txt
+++ b/AutomatedTesting/Gem/PythonTests/WhiteBox/CMakeLists.txt
@@ -6,7 +6,7 @@
#
#
-ly_get_list_relative_pal_filename(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME})
+o3de_pal_dir(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME} ${gem_restricted_path} ${gem_path} ${gem_parent_relative_path})
include(${pal_dir}/PAL_${PAL_PLATFORM_NAME_LOWERCASE}.cmake) # for PAL_TRAIT_WHITEBOX Traits
diff --git a/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/CMakeLists.txt b/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/CMakeLists.txt
index e37a5ed99b..5839093473 100644
--- a/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/CMakeLists.txt
+++ b/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/CMakeLists.txt
@@ -93,15 +93,19 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS)
)
ly_add_pytest(
- NAME AssetPipelineTests.AssetBundler
- PATH ${CMAKE_CURRENT_LIST_DIR}/asset_bundler_batch_tests.py
+ NAME AssetPipelineTests.AssetBuilder
+ PATH ${CMAKE_CURRENT_LIST_DIR}/asset_builder_tests.py
EXCLUDE_TEST_RUN_TARGET_FROM_IDE
TEST_SERIAL
TEST_SUITE periodic
RUNTIME_DEPENDENCIES
AZ::AssetProcessor
- AZ::AssetBundlerBatch
)
+
+ set(SUPPORTED_PLATFORMS "Windows" "Mac")
+ if (NOT "${PAL_PLATFORM_NAME}" IN_LIST SUPPORTED_PLATFORMS)
+ return()
+ endif()
ly_add_pytest(
NAME AssetPipelineTests.BundleMode
@@ -117,16 +121,16 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS)
)
ly_add_pytest(
- NAME AssetPipelineTests.AssetBuilder
- PATH ${CMAKE_CURRENT_LIST_DIR}/asset_builder_tests.py
+ NAME AssetPipelineTests.AssetBundler
+ PATH ${CMAKE_CURRENT_LIST_DIR}/asset_bundler_batch_tests.py
EXCLUDE_TEST_RUN_TARGET_FROM_IDE
TEST_SERIAL
TEST_SUITE periodic
RUNTIME_DEPENDENCIES
AZ::AssetProcessor
+ AZ::AssetBundlerBatch
)
-
ly_add_pytest(
NAME AssetPipelineTests.MissingDependency
PATH ${CMAKE_CURRENT_LIST_DIR}/missing_dependency_tests.py
@@ -136,5 +140,5 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS)
RUNTIME_DEPENDENCIES
AZ::AssetProcessorBatch
)
-
+
endif()
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 f5e5642573..f64427f6df 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
@@ -108,7 +108,7 @@ class TestsAssetBundlerBatch_WindowsAndMac(object):
"""
helper = bundler_batch_helper
seed_list = os.path.join(workspace.paths.engine_root(), "Assets", "Engine", "SeedAssetList.seed") # Engine seed list
- asset = r"levels\testdependencieslevel\level.pak"
+ asset = r"levels\testdependencieslevel\testdependencieslevel.spawnable"
# Create Asset list
helper.call_assetLists(
@@ -191,7 +191,7 @@ class TestsAssetBundlerBatch_WindowsAndMac(object):
"""
helper = bundler_batch_helper
seed_list = os.path.join(workspace.paths.engine_root(), "Assets", "Engine", "SeedAssetList.seed") # Engine seed list
- asset = r"levels\testdependencieslevel\level.pak"
+ asset = r"levels\testdependencieslevel\testdependencieslevel.spawnable"
# Useful bundle locations / names (2 for comparing contents)
# fmt:off
@@ -924,7 +924,7 @@ class TestsAssetBundlerBatch_WindowsAndMac(object):
# Create a seed file
helper.call_seeds(
seedListFile=helper["seed_list_file"],
- addSeed=r"levels\testdependencieslevel\level.pak",
+ addSeed=r"levels\testdependencieslevel\testdependencieslevel.spawnable",
platform="pc",
)
@@ -947,9 +947,9 @@ class TestsAssetBundlerBatch_WindowsAndMac(object):
# Specifying platform but not "add" or "remove" should fail
result, _ = helper.call_assetLists(
assetListFile=helper["asset_info_file_request"],
+ allowOverwrites="",
seedListFile=helper["seed_list_file"],
platform="pc",
- allowOverwrites="",
)
assert result, "Overwriting with override threw an error"
@@ -982,7 +982,7 @@ class TestsAssetBundlerBatch_WindowsAndMac(object):
request.addfinalizer(lambda: fs.delete([bundle_result_path], True, False))
bundles_folder = os.path.join(workspace.paths.project(), "Bundles")
- level_pak = r"levels\testdependencieslevel\level.pak"
+ level_pak = r"levels\testdependencieslevel\testdependencieslevel.spawnable"
bundle_request_path = os.path.join(bundles_folder, "bundle.pak")
bundle_result_path = os.path.join(bundles_folder,
helper.platform_file_name("bundle.pak", workspace.asset_processor_platform))
diff --git a/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/bundle_mode_tests.py b/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/bundle_mode_tests.py
index af92bb1773..b2252567b6 100644
--- a/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/bundle_mode_tests.py
+++ b/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/bundle_mode_tests.py
@@ -23,12 +23,11 @@ from ..ap_fixtures.timeout_option_fixture import timeout_option_fixture as timeo
@pytest.mark.SUITE_periodic
@pytest.mark.parametrize('launcher_platform', ['windows_editor'])
@pytest.mark.parametrize('project', ['AutomatedTesting'])
-@pytest.mark.parametrize('level', ['auto_test'])
+@pytest.mark.parametrize('level', ['TestDependenciesLevel'])
class TestBundleMode(object):
def test_bundle_mode_with_levels_mounts_bundles_correctly(self, request, editor, level, launcher_platform,
asset_processor, workspace, bundler_batch_helper):
- level_pak = os.path.join("levels", level, "level.pak")
-
+ level_pak = os.path.join("levels", level, "TestDependenciesLevel.spawnable")
bundles_folder = os.path.join(workspace.paths.project(), "Bundles")
bundle_request_path = os.path.join(bundles_folder, "bundle.pak")
bundle_result_path = os.path.join(bundles_folder,
diff --git a/AutomatedTesting/Gem/PythonTests/assetpipeline/fbx_tests/assets/TwoSceneFiles_OneWithPythonOneWithout_PythonOnlyRunsOnFirstScene/python_builder.py b/AutomatedTesting/Gem/PythonTests/assetpipeline/fbx_tests/assets/TwoSceneFiles_OneWithPythonOneWithout_PythonOnlyRunsOnFirstScene/python_builder.py
index 7ad5894a86..a9759e3d33 100644
--- a/AutomatedTesting/Gem/PythonTests/assetpipeline/fbx_tests/assets/TwoSceneFiles_OneWithPythonOneWithout_PythonOnlyRunsOnFirstScene/python_builder.py
+++ b/AutomatedTesting/Gem/PythonTests/assetpipeline/fbx_tests/assets/TwoSceneFiles_OneWithPythonOneWithout_PythonOnlyRunsOnFirstScene/python_builder.py
@@ -23,7 +23,7 @@ def output_test_data(scene):
# Just write something to the file, but the filename is the main information
# used for the test.
f.write(f"scene.sourceFilename: {scene.sourceFilename}\n")
- return True
+ return ''
mySceneJobHandler = None
diff --git a/AutomatedTesting/Gem/PythonTests/automatedtesting_shared/base.py b/AutomatedTesting/Gem/PythonTests/automatedtesting_shared/base.py
index 0441f8a1dc..4db959b23e 100755
--- a/AutomatedTesting/Gem/PythonTests/automatedtesting_shared/base.py
+++ b/AutomatedTesting/Gem/PythonTests/automatedtesting_shared/base.py
@@ -182,7 +182,7 @@ class TestAutomationBase:
@staticmethod
def _kill_ly_processes(include_asset_processor=True):
LY_PROCESSES = [
- 'Editor', 'Profiler', 'RemoteConsole', 'AutomatedTesting.ServerLauncher'
+ 'Editor', 'Profiler', 'RemoteConsole', 'AutomatedTesting.ServerLauncher', 'o3de'
]
AP_PROCESSES = [
'AssetProcessor', 'AssetProcessorBatch', 'AssetBuilder', 'CrySCompileServer',
diff --git a/AutomatedTesting/Gem/PythonTests/editor/CMakeLists.txt b/AutomatedTesting/Gem/PythonTests/editor/CMakeLists.txt
index 1fc71da972..b3f0d2da8e 100644
--- a/AutomatedTesting/Gem/PythonTests/editor/CMakeLists.txt
+++ b/AutomatedTesting/Gem/PythonTests/editor/CMakeLists.txt
@@ -9,10 +9,10 @@
if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_FOUNDATION_TEST_SUPPORTED)
ly_add_pytest(
- NAME AutomatedTesting::EditorTests_Main_Optimized
+ NAME AutomatedTesting::EditorTests_Main
TEST_SUITE main
TEST_SERIAL
- PATH ${CMAKE_CURRENT_LIST_DIR}/TestSuite_Main_Optimized.py
+ PATH ${CMAKE_CURRENT_LIST_DIR}/TestSuite_Main.py
PYTEST_MARKS "not REQUIRES_gpu"
RUNTIME_DEPENDENCIES
Legacy::Editor
@@ -27,7 +27,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_
TEST_SUITE main
TEST_SERIAL
TEST_REQUIRES gpu
- PATH ${CMAKE_CURRENT_LIST_DIR}/TestSuite_Main_Optimized.py
+ PATH ${CMAKE_CURRENT_LIST_DIR}/TestSuite_Main.py
PYTEST_MARKS "REQUIRES_gpu"
RUNTIME_DEPENDENCIES
Legacy::Editor
@@ -37,17 +37,4 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_
Editor
)
- ly_add_pytest(
- NAME AutomatedTesting::EditorTests_Sandbox_Optimized
- TEST_SUITE sandbox
- TEST_SERIAL
- PATH ${CMAKE_CURRENT_LIST_DIR}/TestSuite_Sandbox_Optimized.py
- RUNTIME_DEPENDENCIES
- Legacy::Editor
- AZ::AssetProcessor
- AutomatedTesting.Assets
- COMPONENT
- Editor
- )
-
endif()
diff --git a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/AssetBrowser_SearchFiltering.py b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/AssetBrowser_SearchFiltering.py
index 7366faafdc..4265dd6fc9 100644
--- a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/AssetBrowser_SearchFiltering.py
+++ b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/AssetBrowser_SearchFiltering.py
@@ -59,8 +59,8 @@ def AssetBrowser_SearchFiltering():
import azlmbr.legacy.general as general
+ import editor_python_test_tools.hydra_editor_utils as hydra
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_extensions, parent_index=QtCore.QModelIndex()):
indexes = [parent_index]
@@ -80,8 +80,7 @@ def AssetBrowser_SearchFiltering():
return True
# 1) Open an existing simple level
- helper.init_idle()
- helper.open_level("Physics", "Base")
+ hydra.open_base_level()
# 2) Open Asset Browser (if not opened already)
editor_window = pyside_utils.get_editor_main_window()
@@ -98,7 +97,13 @@ def AssetBrowser_SearchFiltering():
# 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")
+
+ # Add a small pause when typing in the search bar in order to check that the entries are updated properly
+ search_bar.setText("Cedar.f")
+ general.idle_wait(0.5)
+ search_bar.setText("Cedar.fbx")
+ general.idle_wait(0.5)
+
asset_browser_tree = asset_browser.findChild(QtWidgets.QTreeView, "m_assetBrowserTreeViewWidget")
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)
diff --git a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/AssetBrowser_TreeNavigation.py b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/AssetBrowser_TreeNavigation.py
index ecc77778cc..52072205b5 100644
--- a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/AssetBrowser_TreeNavigation.py
+++ b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/AssetBrowser_TreeNavigation.py
@@ -53,6 +53,7 @@ def AssetBrowser_TreeNavigation():
import azlmbr.legacy.general as general
import editor_python_test_tools.pyside_utils as pyside_utils
+ import editor_python_test_tools.hydra_editor_utils as hydra
from editor_python_test_tools.utils import Report
from editor_python_test_tools.utils import TestHelper as helper
@@ -69,8 +70,7 @@ def AssetBrowser_TreeNavigation():
file_path = ("AutomatedTesting", "Assets", "ImageGradients", "image_grad_test_gsi.png")
# 1) Open an existing simple level
- helper.init_idle()
- helper.open_level("Physics", "Base")
+ hydra.open_base_level()
# 2) Open Asset Browser (if not opened already)
editor_window = pyside_utils.get_editor_main_window()
diff --git a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/AssetPicker_UI_UX.py b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/AssetPicker_UI_UX.py
index 59a78c9e5d..047d6edf41 100644
--- a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/AssetPicker_UI_UX.py
+++ b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/AssetPicker_UI_UX.py
@@ -215,8 +215,7 @@ def AssetPicker_UI_UX():
QtTest.QTest.keyClick(tree, Qt.Key_Enter, Qt.NoModifier)
# 1) Open an existing simple level
- helper.init_idle()
- helper.open_level("Physics", "Base")
+ hydra.open_base_level()
# 2) Create entity and add Mesh component
entity_position = math.Vector3(125.0, 136.0, 32.0)
diff --git a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/BasicEditorWorkflows_ExistingLevel_EntityComponentCRUD.py b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/BasicEditorWorkflows_ExistingLevel_EntityComponentCRUD.py
index 39cacf9af5..48b7d2b176 100644
--- a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/BasicEditorWorkflows_ExistingLevel_EntityComponentCRUD.py
+++ b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/BasicEditorWorkflows_ExistingLevel_EntityComponentCRUD.py
@@ -56,19 +56,17 @@ def BasicEditorWorkflows_ExistingLevel_EntityComponentCRUD():
06. delete parent entity
"""
+ import editor_python_test_tools.hydra_editor_utils as hydra
from editor_python_test_tools.utils import Report
from editor_python_test_tools.editor_entity_utils import EditorEntity
import azlmbr.bus as bus
import azlmbr.editor as editor
import azlmbr.entity as entity
- import azlmbr.legacy.general as general
import azlmbr.object
# 01. load an existing level
- test_level = 'Simple'
- general.open_level_no_prompt(test_level)
- Report.result(Tests.load_level, general.get_current_level_name() == test_level)
+ hydra.open_base_level()
# 02. create parent entity and set name
# Delete any exiting entity and Create a new Entity at the root level
diff --git a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/BasicEditorWorkflows_LevelEntityComponentCRUD.py b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/BasicEditorWorkflows_LevelEntityComponentCRUD.py
index 9c5880ab1e..f13b924e30 100644
--- a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/BasicEditorWorkflows_LevelEntityComponentCRUD.py
+++ b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/BasicEditorWorkflows_LevelEntityComponentCRUD.py
@@ -31,7 +31,7 @@ class Tests:
"Component removed from entity successfully",
"Failed to remove component from entity"
)
- level_saved_and_exported = (
+ saved_and_exported = (
"Level saved and exported successfully",
"Failed to save/export level"
)
@@ -52,8 +52,7 @@ def BasicEditorWorkflows_LevelEntityComponentCRUD():
- A new entity can be created
- Entity hierarchy can be adjusted
- Components can be added/removed/updated
- - Level can be saved
- - Level can be exported
+ - Level can be saved/exported
Note:
- This test file must be called from the O3DE Editor command terminal
@@ -70,7 +69,7 @@ def BasicEditorWorkflows_LevelEntityComponentCRUD():
import azlmbr.editor as editor
import azlmbr.entity as entity
import azlmbr.math as math
- import azlmbr.paths
+ import azlmbr.paths as paths
import editor_python_test_tools.hydra_editor_utils as hydra
from editor_python_test_tools.utils import Report
@@ -84,7 +83,7 @@ def BasicEditorWorkflows_LevelEntityComponentCRUD():
return None
# 1) Create a new level
- level = "tmp_level"
+ lvl_name = "tmp_level"
editor_window = pyside_utils.get_editor_main_window()
new_level_action = pyside_utils.get_action_for_menu_path(editor_window, "File", "New Level")
pyside_utils.trigger_action_async(new_level_action)
@@ -95,23 +94,24 @@ def BasicEditorWorkflows_LevelEntityComponentCRUD():
Report.info("New Level dialog opened")
grp_box = new_level_dlg.findChild(QtWidgets.QGroupBox, "STATIC_GROUP1")
level_name = grp_box.findChild(QtWidgets.QLineEdit, "LEVEL")
- level_name.setText(level)
+ level_name.setText(lvl_name)
button_box = new_level_dlg.findChild(QtWidgets.QDialogButtonBox, "buttonBox")
button_box.button(QtWidgets.QDialogButtonBox.Ok).click()
# Verify new level was created successfully
level_create_success = await pyside_utils.wait_for_condition(lambda: editor.EditorToolsApplicationRequestBus(
- bus.Broadcast, "GetCurrentLevelName") == level, 5.0)
+ bus.Broadcast, "GetCurrentLevelName") == lvl_name, 5.0)
Report.critical_result(Tests.level_created, level_create_success)
# 2) Delete existing entities, and create and manipulate new entities via Entity Inspector
search_filter = azlmbr.entity.SearchFilter()
all_entities = entity.SearchBus(azlmbr.bus.Broadcast, "SearchEntities", search_filter)
editor.ToolsApplicationRequestBus(bus.Broadcast, "DeleteEntities", all_entities)
- entity_outliner_widget = editor_window.findChild(QtWidgets.QWidget, "OutlinerWidgetUI")
+ entity_outliner_widget = editor_window.findChild(QtWidgets.QWidget, "EntityOutlinerWidgetUI")
outliner_object_list = entity_outliner_widget.findChild(QtWidgets.QWidget, "m_objectList_Contents")
outliner_tree = outliner_object_list.findChild(QtWidgets.QWidget, "m_objectTree")
- await pyside_utils.trigger_context_menu_entry(outliner_tree, "Create entity")
+ outliner_viewport = outliner_tree.findChild(QtWidgets.QWidget, "qt_scrollarea_viewport")
+ await pyside_utils.trigger_context_menu_entry(outliner_viewport, "Create entity")
# Find the new entity
parent_entity_id = find_entity_by_name("Entity1")
@@ -153,14 +153,10 @@ def BasicEditorWorkflows_LevelEntityComponentCRUD():
save_level_action = pyside_utils.get_action_for_menu_path(editor_window, "File", "Save")
pyside_utils.trigger_action_async(save_level_action)
- # 5) Export the level
- export_action = pyside_utils.get_action_for_menu_path(editor_window, "Game", "Export to Engine")
- pyside_utils.trigger_action_async(export_action)
- level_pak_file = os.path.join(
- "AutomatedTesting", "Levels", level, "level.pak"
- )
- export_success = await pyside_utils.wait_for_condition(lambda: os.path.exists(level_pak_file), 5.0)
- Report.result(Tests.level_saved_and_exported, export_success)
+ # 5) Verify the save/export of the level
+ level_prefab_path = os.path.join(paths.products, "levels", lvl_name, f"{lvl_name}.spawnable")
+ success = await pyside_utils.wait_for_condition(lambda: os.path.exists(level_prefab_path), 5.0)
+ Report.result(Tests.saved_and_exported, success)
run_test()
diff --git a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/ComponentCRUD_Add_Delete_Components.py b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/ComponentCRUD_Add_Delete_Components.py
index 779f1ef953..6772450405 100755
--- a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/ComponentCRUD_Add_Delete_Components.py
+++ b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/ComponentCRUD_Add_Delete_Components.py
@@ -63,7 +63,7 @@ def ComponentCRUD_Add_Delete_Components():
:return: None
"""
- from PySide2 import QtWidgets, QtTest, QtCore
+ from PySide2 import QtWidgets, QtTest
from PySide2.QtCore import Qt
import azlmbr.legacy.general as general
@@ -74,7 +74,6 @@ def ComponentCRUD_Add_Delete_Components():
import editor_python_test_tools.hydra_editor_utils as hydra
from editor_python_test_tools.utils import Report
- from editor_python_test_tools.utils import TestHelper as helper
async def add_component(component_name):
pyside_utils.click_button_async(add_comp_btn)
@@ -88,8 +87,7 @@ def ComponentCRUD_Add_Delete_Components():
QtTest.QTest.keyClick(tree, Qt.Key_Enter, Qt.NoModifier)
# 1) Open an existing simple level
- helper.init_idle()
- helper.open_level("Physics", "Base")
+ hydra.open_base_level()
# 2) Create entity
entity_position = math.Vector3(125.0, 136.0, 32.0)
diff --git a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/Docking_BasicDockedTools.py b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/Docking_BasicDockedTools.py
index 6683fc952a..a5a94f06a5 100644
--- a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/Docking_BasicDockedTools.py
+++ b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/Docking_BasicDockedTools.py
@@ -62,12 +62,11 @@ def Docking_BasicDockedTools():
import azlmbr.editor as editor
import azlmbr.entity as entity
+ import editor_python_test_tools.hydra_editor_utils as hydra
from editor_python_test_tools.utils import Report
- from editor_python_test_tools.utils import TestHelper as helper
# Open an existing simple level
- helper.init_idle()
- helper.open_level("Physics", "Base")
+ hydra.open_base_level()
# Make sure the Entity Outliner, Entity Inspector and Console tools are open
general.open_pane("Entity Outliner (PREVIEW)")
@@ -80,7 +79,7 @@ def Docking_BasicDockedTools():
editor.EditorEntityAPIBus(bus.Event, 'SetName', entity_id, entity_original_name)
editor_window = pyside_utils.get_editor_main_window()
- entity_outliner = editor_window.findChild(QtWidgets.QDockWidget, "Entity Outliner (PREVIEW)")
+ entity_outliner = editor_window.findChild(QtWidgets.QDockWidget, "Entity Outliner")
# 1) Open the tools and dock them together in a floating tabbed widget.
# We drag/drop it over the viewport since it doesn't allow docking, so this will undock it
@@ -88,15 +87,15 @@ def Docking_BasicDockedTools():
pyside_utils.drag_and_drop(entity_outliner, render_overlay)
# We need to grab a new reference to the Entity Outliner QDockWidget because when it gets moved
- # to the floating window, its parent changes so the wrapped intance we had becomes invalid
- entity_outliner = editor_window.findChild(QtWidgets.QDockWidget, "Entity Outliner (PREVIEW)")
+ # to the floating window, its parent changes so the wrapped instance we had becomes invalid
+ entity_outliner = editor_window.findChild(QtWidgets.QDockWidget, "Entity Outliner")
# Dock the Entity Inspector tabbed with the floating Entity Outliner
entity_inspector = editor_window.findChild(QtWidgets.QDockWidget, "Entity Inspector")
pyside_utils.drag_and_drop(entity_inspector, entity_outliner)
# We need to grab a new reference to the Entity Inspector QDockWidget because when it gets moved
- # to the floating window, its parent changes so the wrapped intance we had becomes invalid
+ # to the floating window, its parent changes so the wrapped instance we had becomes invalid
entity_inspector = editor_window.findChild(QtWidgets.QDockWidget, "Entity Inspector")
# Dock the Console tabbed with the floating Entity Inspector
@@ -106,7 +105,7 @@ def Docking_BasicDockedTools():
# Check to ensure all the tools are parented to the same QStackedWidget
def check_all_panes_tabbed():
entity_inspector = editor_window.findChild(QtWidgets.QDockWidget, "Entity Inspector")
- entity_outliner = editor_window.findChild(QtWidgets.QDockWidget, "Entity Outliner (PREVIEW)")
+ entity_outliner = editor_window.findChild(QtWidgets.QDockWidget, "Entity Outliner")
console = editor_window.findChild(QtWidgets.QDockWidget, "Console")
entity_inspector_parent = entity_inspector.parentWidget()
entity_outliner_parent = entity_outliner.parentWidget()
@@ -122,7 +121,7 @@ def Docking_BasicDockedTools():
# 2.1,2) Select an Entity in the Entity Outliner.
entity_inspector = editor_window.findChild(QtWidgets.QDockWidget, "Entity Inspector")
- entity_outliner = editor_window.findChild(QtWidgets.QDockWidget, "Entity Outliner (PREVIEW)")
+ entity_outliner = editor_window.findChild(QtWidgets.QDockWidget, "Entity Outliner")
console = editor_window.findChild(QtWidgets.QDockWidget, "Console")
object_tree = entity_outliner.findChild(QtWidgets.QTreeView, "m_objectTree")
test_entity_index = pyside_utils.find_child_by_pattern(object_tree, entity_original_name)
diff --git a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/EntityOutliner_EntityOrdering.py b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/EntityOutliner_EntityOrdering.py
index 5fa8130302..fab7984df9 100644
--- a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/EntityOutliner_EntityOrdering.py
+++ b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/EntityOutliner_EntityOrdering.py
@@ -30,11 +30,13 @@ def EntityOutliner_EntityOrdering():
5) Add another new entity, ensure the rest of the order is unchanged
"""
- import editor_python_test_tools.pyside_utils as pyside_utils
+ from PySide2 import QtCore
+
import azlmbr.legacy.general as general
+
+ import editor_python_test_tools.hydra_editor_utils as hydra
+ import editor_python_test_tools.pyside_utils as pyside_utils
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()
@@ -110,8 +112,7 @@ def EntityOutliner_EntityOrdering():
expected_order = []
# 1) Open the empty Prefab Base level
- helper.init_idle()
- helper.open_level("Prefab", "Base")
+ hydra.open_base_level()
# 2) Add 5 entities to the outliner
ENTITIES_TO_ADD = 5
diff --git a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/InputBindings_Add_Remove_Input_Events.py b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/InputBindings_Add_Remove_Input_Events.py
index f4769dab4d..07c89ff110 100755
--- a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/InputBindings_Add_Remove_Input_Events.py
+++ b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/InputBindings_Add_Remove_Input_Events.py
@@ -69,8 +69,8 @@ def InputBindings_Add_Remove_Input_Events():
import azlmbr.legacy.general as general
+ import editor_python_test_tools.hydra_editor_utils as hydra
from editor_python_test_tools.utils import Report
- from editor_python_test_tools.utils import TestHelper as helper
def open_asset_editor():
general.open_pane("Asset Editor")
@@ -81,8 +81,7 @@ def InputBindings_Add_Remove_Input_Events():
return not general.is_pane_visible("Asset Editor")
# 1) Open an existing simple level
- helper.init_idle()
- helper.open_level("Physics", "Base")
+ hydra.open_base_level()
# 2) Open Asset Editor
Report.result(Tests.asset_editor_opened, open_asset_editor())
diff --git a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/Menus_EditMenuOptions.py b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/Menus_EditMenuOptions.py
index bd213be293..ce85cf223f 100644
--- a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/Menus_EditMenuOptions.py
+++ b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/Menus_EditMenuOptions.py
@@ -26,9 +26,9 @@ def Menus_EditMenuOptions_Work():
:return: None
"""
+ import editor_python_test_tools.hydra_editor_utils as hydra
import editor_python_test_tools.pyside_utils as pyside_utils
from editor_python_test_tools.utils import Report
- from editor_python_test_tools.utils import TestHelper as helper
edit_menu_options = [
("Undo",),
@@ -52,19 +52,20 @@ def Menus_EditMenuOptions_Work():
("Editor Settings", "Global Preferences"),
("Editor Settings", "Editor Settings Manager"),
("Editor Settings", "Keyboard Customization", "Customize Keyboard"),
- ("Editor Settings", "Keyboard Customization", "Export Keyboard Settings"),
- ("Editor Settings", "Keyboard Customization", "Import Keyboard Settings"),
+ # The following menu options are temporarily disabled due to https://github.com/o3de/o3de/issues/6746
+ #("Editor Settings", "Keyboard Customization", "Export Keyboard Settings"),
+ #("Editor Settings", "Keyboard Customization", "Import Keyboard Settings"),
]
# 1) Open an existing simple level
- helper.init_idle()
- helper.open_level("Physics", "Base")
+ hydra.open_base_level()
# 2) Interact with Edit Menu options
editor_window = pyside_utils.get_editor_main_window()
for option in edit_menu_options:
try:
action = pyside_utils.get_action_for_menu_path(editor_window, "Edit", *option)
+ Report.info(f"Triggering {action.iconText()}")
action.trigger()
action_triggered = True
except Exception as e:
diff --git a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/Menus_FileMenuOptions.py b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/Menus_FileMenuOptions.py
index a3e7611b5e..4fcdc371e7 100644
--- a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/Menus_FileMenuOptions.py
+++ b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/Menus_FileMenuOptions.py
@@ -26,35 +26,34 @@ def Menus_FileMenuOptions_Work():
:return: None
"""
+ import editor_python_test_tools.hydra_editor_utils as hydra
import editor_python_test_tools.pyside_utils as pyside_utils
from editor_python_test_tools.utils import Report
- from editor_python_test_tools.utils import TestHelper as helper
file_menu_options = [
("New Level",),
- ("Open Level",),
- ("Import",),
+ #("Open Level",), Temporarily disabled due to https://github.com/o3de/o3de/issues/6605
+ #("Import",), Temporarily disabled due to https://github.com/o3de/o3de/issues/6746
("Save",),
- ("Save As",),
+ #("Save As",), Temporarily disabled due to https://github.com/o3de/o3de/issues/6605
("Save Level Statistics",),
("Edit Project Settings",),
- ("Edit Platform Settings",),
+ #("Edit Platform Settings",), Temporarily disabled due to https://github.com/o3de/o3de/issues/6604
("New Project",),
("Open Project",),
("Show Log File",),
- ("Resave All Slices",),
("Exit",),
]
# 1) Open an existing simple level
- helper.init_idle()
- helper.open_level("Physics", "Base")
+ hydra.open_base_level()
# 2) Interact with File Menu options
editor_window = pyside_utils.get_editor_main_window()
for option in file_menu_options:
try:
action = pyside_utils.get_action_for_menu_path(editor_window, "File", *option)
+ Report.info(f"Triggering {action.iconText()}")
action.trigger()
action_triggered = True
except Exception as e:
diff --git a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/Menus_ViewMenuOptions.py b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/Menus_ViewMenuOptions.py
index deff2855a0..bb9ff15082 100644
--- a/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/Menus_ViewMenuOptions.py
+++ b/AutomatedTesting/Gem/PythonTests/editor/EditorScripts/Menus_ViewMenuOptions.py
@@ -26,13 +26,15 @@ def Menus_ViewMenuOptions_Work():
:return: None
"""
+ import editor_python_test_tools.hydra_editor_utils as hydra
import editor_python_test_tools.pyside_utils as pyside_utils
from editor_python_test_tools.utils import Report
- from editor_python_test_tools.utils import TestHelper as helper
view_menu_options = [
("Center on Selection",),
("Show Quick Access Bar",),
+ ("Layouts", "Component Entity Layout",),
+ ("Layouts", "Save Layout",),
("Viewport", "Configure Layout"),
("Viewport", "Go to Position"),
("Viewport", "Center on Selection"),
@@ -45,14 +47,14 @@ def Menus_ViewMenuOptions_Work():
]
# 1) Open an existing simple level
- helper.init_idle()
- helper.open_level("Physics", "Base")
+ hydra.open_base_level()
# 2) Interact with View Menu options
editor_window = pyside_utils.get_editor_main_window()
for option in view_menu_options:
try:
action = pyside_utils.get_action_for_menu_path(editor_window, "View", *option)
+ Report.info(f"Triggering {action.iconText()}")
action.trigger()
action_triggered = True
except Exception as e:
diff --git a/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Main.py b/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Main.py
index c9e91687e0..3805ef15dd 100644
--- a/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Main.py
+++ b/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Main.py
@@ -7,48 +7,77 @@ SPDX-License-Identifier: Apache-2.0 OR MIT
import os
import pytest
-import sys
import ly_test_tools.environment.file_system as file_system
-
-sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../automatedtesting_shared')
-from base import TestAutomationBase
-
-
-@pytest.fixture
-def remove_test_level(request, workspace, project):
- file_system.delete([os.path.join(workspace.paths.engine_root(), project, "Levels", "tmp_level")], True, True)
-
- def teardown():
- file_system.delete([os.path.join(workspace.paths.engine_root(), project, "Levels", "tmp_level")], True, True)
-
- request.addfinalizer(teardown)
+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(TestAutomationBase):
+class TestAutomationNoAutoTestMode(EditorTestSuite):
- def test_BasicEditorWorkflows_LevelEntityComponentCRUD(self, request, workspace, editor, launcher_platform,
- remove_test_level):
+ # Disable -autotest_mode and -BatchMode. Tests cannot run in -BatchMode due to UI interactions, and these tests
+ # interact with modal dialogs
+ global_extra_cmdline_args = []
+
+ class test_AssetPicker_UI_UX(EditorSharedTest):
+ from .EditorScripts import AssetPicker_UI_UX as test_module
+
+ class test_BasicEditorWorkflows_ExistingLevel_EntityComponentCRUD(EditorSharedTest):
+ from .EditorScripts import BasicEditorWorkflows_ExistingLevel_EntityComponentCRUD as test_module
+
+ class test_BasicEditorWorkflows_LevelEntityComponentCRUD(EditorSingleTest):
+ # Custom teardown to remove level created during test
+ def teardown(self, request, workspace, editor, editor_test_results, launcher_platform):
+ file_system.delete([os.path.join(workspace.paths.engine_root(), "AutomatedTesting", "Levels", "tmp_level")],
+ True, True)
from .EditorScripts import BasicEditorWorkflows_LevelEntityComponentCRUD as test_module
- self._run_test(request, workspace, editor, test_module, batch_mode=False, autotest_mode=False, enable_prefab_system=False)
@pytest.mark.REQUIRES_gpu
- def test_BasicEditorWorkflows_GPU_LevelEntityComponentCRUD(self, request, workspace, editor, launcher_platform,
- remove_test_level):
- 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, enable_prefab_system=False)
+ class test_BasicEditorWorkflows_GPU_LevelEntityComponentCRUD(EditorSingleTest):
+ # Disable null renderer
+ use_null_renderer = False
- def test_EntityOutlienr_EntityOrdering(self, request, workspace, editor, launcher_platform):
+ # Custom teardown to remove level created during test
+ def teardown(self, request, workspace, editor, editor_test_results, launcher_platform):
+ file_system.delete([os.path.join(workspace.paths.engine_root(), "AutomatedTesting", "Levels", "tmp_level")],
+ True, True)
+ from .EditorScripts import BasicEditorWorkflows_LevelEntityComponentCRUD as test_module
+
+ class test_InputBindings_Add_Remove_Input_Events(EditorSharedTest):
+ from .EditorScripts import InputBindings_Add_Remove_Input_Events as test_module
+
+
+@pytest.mark.SUITE_main
+@pytest.mark.parametrize("launcher_platform", ['windows_editor'])
+@pytest.mark.parametrize("project", ["AutomatedTesting"])
+class TestAutomationAutoTestMode(EditorTestSuite):
+
+ # Enable only -autotest_mode for these tests. Tests cannot run in -BatchMode due to UI interactions
+ global_extra_cmdline_args = ["-autotest_mode"]
+
+ class test_AssetBrowser_SearchFiltering(EditorSharedTest):
+ from .EditorScripts import AssetBrowser_SearchFiltering as test_module
+
+ class test_AssetBrowser_TreeNavigation(EditorSharedTest):
+ from .EditorScripts import AssetBrowser_TreeNavigation as test_module
+
+ class test_ComponentCRUD_Add_Delete_Components(EditorSharedTest):
+ from .EditorScripts import ComponentCRUD_Add_Delete_Components as test_module
+
+ @pytest.mark.skip("Passes locally/fails on Jenkins. https://github.com/o3de/o3de/issues/6747")
+ class test_Docking_BasicDockedTools(EditorSharedTest):
+ from .EditorScripts import Docking_BasicDockedTools as test_module
+
+ class test_EntityOutliner_EntityOrdering(EditorSharedTest):
from .EditorScripts import EntityOutliner_EntityOrdering as test_module
- self._run_test(
- request,
- workspace,
- editor,
- test_module,
- batch_mode=False,
- autotest_mode=True,
- )
+
+ class test_Menus_EditMenuOptions_Work(EditorSharedTest):
+ from .EditorScripts import Menus_EditMenuOptions as test_module
+
+ class test_Menus_FileMenuOptions_Work(EditorSharedTest):
+ from .EditorScripts import Menus_FileMenuOptions as test_module
+
+ class test_Menus_ViewMenuOptions_Work(EditorSharedTest):
+ from .EditorScripts import Menus_ViewMenuOptions as test_module
diff --git a/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Main_Optimized.py b/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Main_Optimized.py
deleted file mode 100644
index d87fd8625b..0000000000
--- a/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Main_Optimized.py
+++ /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
-"""
-
-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.xfail(reason="Optimized tests are experimental, we will enable xfail and monitor them temporarily.")
-@pytest.mark.SUITE_main
-@pytest.mark.parametrize("launcher_platform", ['windows_editor'])
-@pytest.mark.parametrize("project", ["AutomatedTesting"])
-class TestAutomationNoAutoTestMode(EditorTestSuite):
-
- # Disable -autotest_mode and -BatchMode. Tests cannot run in -BatchMode due to UI interactions, and these tests
- # interact with modal dialogs
- global_extra_cmdline_args = []
-
- enable_prefab_system = False
-
- class test_BasicEditorWorkflows_LevelEntityComponentCRUD(EditorSingleTest):
- # Custom teardown to remove slice asset created during test
- def teardown(self, request, workspace, editor, editor_test_results, launcher_platform):
- file_system.delete([os.path.join(workspace.paths.engine_root(), "AutomatedTesting", "Levels", "tmp_level")],
- True, True)
- from .EditorScripts import BasicEditorWorkflows_LevelEntityComponentCRUD as test_module
-
- @pytest.mark.REQUIRES_gpu
- class test_BasicEditorWorkflows_GPU_LevelEntityComponentCRUD(EditorSingleTest):
- # Disable null renderer
- use_null_renderer = False
-
- # Custom teardown to remove slice asset created during test
- def teardown(self, request, workspace, editor, editor_test_results, launcher_platform):
- file_system.delete([os.path.join(workspace.paths.engine_root(), "AutomatedTesting", "Levels", "tmp_level")],
- True, True)
- from .EditorScripts import BasicEditorWorkflows_LevelEntityComponentCRUD as test_module
-
- class test_InputBindings_Add_Remove_Input_Events(EditorSharedTest):
- from .EditorScripts import InputBindings_Add_Remove_Input_Events as test_module
-
- class test_AssetPicker_UI_UX(EditorSharedTest):
- from .EditorScripts import AssetPicker_UI_UX as test_module
-
-
-@pytest.mark.SUITE_main
-@pytest.mark.parametrize("launcher_platform", ['windows_editor'])
-@pytest.mark.parametrize("project", ["AutomatedTesting"])
-class TestAutomationAutoTestMode(EditorTestSuite):
-
- # Enable only -autotest_mode for these tests. Tests cannot run in -BatchMode due to UI interactions
- global_extra_cmdline_args = ["-autotest_mode"]
-
- enable_prefab_system = False
-
- class test_AssetBrowser_TreeNavigation(EditorSharedTest):
- from .EditorScripts import AssetBrowser_TreeNavigation as test_module
-
- class test_AssetBrowser_SearchFiltering(EditorSharedTest):
- from .EditorScripts import AssetBrowser_SearchFiltering as test_module
-
- class test_ComponentCRUD_Add_Delete_Components(EditorSharedTest):
- from .EditorScripts import ComponentCRUD_Add_Delete_Components as test_module
-
- class test_Menus_ViewMenuOptions_Work(EditorSharedTest):
- from .EditorScripts import Menus_ViewMenuOptions as test_module
-
- @pytest.mark.skip(reason="Times out due to dialogs failing to dismiss: LYN-4208")
- 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
deleted file mode 100644
index 1bd1d7f987..0000000000
--- a/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Periodic.py
+++ /dev/null
@@ -1,60 +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
-"""
-
-import os
-import pytest
-import sys
-
-import ly_test_tools.environment.file_system as file_system
-
-sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../automatedtesting_shared')
-from base import TestAutomationBase
-
-
-@pytest.fixture
-def remove_test_level(request, workspace, project):
- file_system.delete([os.path.join(workspace.paths.engine_root(), project, "Levels", "tmp_level")], True, True)
-
- def teardown():
- file_system.delete([os.path.join(workspace.paths.engine_root(), project, "Levels", "tmp_level")], True, True)
-
- request.addfinalizer(teardown)
-
-
-@pytest.mark.SUITE_periodic
-@pytest.mark.parametrize("launcher_platform", ['windows_editor'])
-@pytest.mark.parametrize("project", ["AutomatedTesting"])
-class TestAutomation(TestAutomationBase):
-
- def test_AssetBrowser_TreeNavigation(self, request, workspace, editor, launcher_platform):
- from .EditorScripts import AssetBrowser_TreeNavigation as test_module
- self._run_test(request, workspace, editor, test_module, batch_mode=False, enable_prefab_system=False)
-
- 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, enable_prefab_system=False)
-
- 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, enable_prefab_system=False)
-
- def test_ComponentCRUD_Add_Delete_Components(self, request, workspace, editor, launcher_platform):
- from .EditorScripts import ComponentCRUD_Add_Delete_Components as test_module
- self._run_test(request, workspace, editor, test_module, batch_mode=False, enable_prefab_system=False)
-
- def test_InputBindings_Add_Remove_Input_Events(self, request, workspace, editor, launcher_platform):
- from .EditorScripts import InputBindings_Add_Remove_Input_Events as test_module
- self._run_test(request, workspace, editor, test_module, batch_mode=False, autotest_mode=False, enable_prefab_system=False)
-
- def test_Menus_ViewMenuOptions_Work(self, request, workspace, editor, launcher_platform):
- from .EditorScripts import Menus_ViewMenuOptions as test_module
- self._run_test(request, workspace, editor, test_module, batch_mode=False, enable_prefab_system=False)
-
- @pytest.mark.skip(reason="Times out due to dialogs failing to dismiss: LYN-4208")
- def test_Menus_FileMenuOptions_Work(self, request, workspace, editor, launcher_platform):
- from .EditorScripts import Menus_FileMenuOptions as test_module
- self._run_test(request, workspace, editor, test_module, batch_mode=False, enable_prefab_system=False)
diff --git a/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Sandbox.py b/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Sandbox.py
deleted file mode 100644
index 8a56a2dbfd..0000000000
--- a/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Sandbox.py
+++ /dev/null
@@ -1,27 +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
-"""
-
-import os
-import pytest
-import sys
-
-sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../automatedtesting_shared')
-from base import TestAutomationBase
-
-
-@pytest.mark.SUITE_sandbox
-@pytest.mark.parametrize("launcher_platform", ['windows_editor'])
-@pytest.mark.parametrize("project", ["AutomatedTesting"])
-class TestAutomation(TestAutomationBase):
-
- def test_Menus_EditMenuOptions_Work(self, request, workspace, editor, launcher_platform):
- from .EditorScripts import Menus_EditMenuOptions as test_module
- self._run_test(request, workspace, editor, test_module, batch_mode=False, enable_prefab_system=False)
-
- def test_Docking_BasicDockedTools(self, request, workspace, editor, launcher_platform):
- from .EditorScripts import Docking_BasicDockedTools as test_module
- self._run_test(request, workspace, editor, test_module, batch_mode=False, enable_prefab_system=False)
diff --git a/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Sandbox_Optimized.py b/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Sandbox_Optimized.py
deleted file mode 100644
index ce0d5e43e9..0000000000
--- a/AutomatedTesting/Gem/PythonTests/editor/TestSuite_Sandbox_Optimized.py
+++ /dev/null
@@ -1,28 +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
-"""
-
-import os
-import pytest
-
-from ly_test_tools.o3de.editor_test import EditorSingleTest, EditorSharedTest, EditorParallelTest, EditorTestSuite
-
-
-@pytest.mark.SUITE_sandbox
-@pytest.mark.parametrize("launcher_platform", ['windows_editor'])
-@pytest.mark.parametrize("project", ["AutomatedTesting"])
-class TestAutomationAutoTestMode(EditorTestSuite):
-
- # Enable only -autotest_mode for these tests. Tests cannot run in -BatchMode due to UI interactions
- global_extra_cmdline_args = ["-autotest_mode"]
-
- enable_prefab_system = False
-
- class test_Docking_BasicDockedTools(EditorSharedTest):
- from .EditorScripts import Docking_BasicDockedTools as test_module
-
- class test_Menus_EditMenuOptions_Work(EditorSharedTest):
- from .EditorScripts import Menus_EditMenuOptions as test_module
diff --git a/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/DynamicSliceInstanceSpawner_Embedded_E2E.py b/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/DynamicSliceInstanceSpawner_Embedded_E2E.py
index 86035bfbae..b4650c782e 100755
--- a/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/DynamicSliceInstanceSpawner_Embedded_E2E.py
+++ b/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/DynamicSliceInstanceSpawner_Embedded_E2E.py
@@ -110,7 +110,8 @@ def DynamicSliceInstanceSpawner_Embedded_E2E():
general.save_level()
general.export_to_engine()
pak_path = os.path.join(paths.products, "levels", lvl_name, "level.pak")
- Report.result(Tests.saved_and_exported, os.path.exists(pak_path))
+ success = helper.wait_for_condition(lambda: os.path.exists(pak_path), 10.0)
+ Report.result(Tests.saved_and_exported, success)
if __name__ == "__main__":
diff --git a/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/DynamicSliceInstanceSpawner_External_E2E.py b/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/DynamicSliceInstanceSpawner_External_E2E.py
index 2353095849..a5e7e90ce2 100755
--- a/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/DynamicSliceInstanceSpawner_External_E2E.py
+++ b/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/DynamicSliceInstanceSpawner_External_E2E.py
@@ -132,7 +132,8 @@ def DynamicSliceInstanceSpawner_External_E2E():
general.save_level()
general.export_to_engine()
pak_path = os.path.join(paths.products, "levels", lvl_name, "level.pak")
- Report.result(Tests.saved_and_exported, os.path.exists(pak_path))
+ success = helper.wait_for_condition(lambda: os.path.exists(pak_path), 10.0)
+ Report.result(Tests.saved_and_exported, success)
if __name__ == "__main__":
diff --git a/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/LayerBlender_E2E_Editor.py b/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/LayerBlender_E2E_Editor.py
index f2c7faae8a..6b5a80ee8e 100755
--- a/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/LayerBlender_E2E_Editor.py
+++ b/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/LayerBlender_E2E_Editor.py
@@ -156,7 +156,8 @@ def LayerBlender_E2E_Editor():
general.save_level()
general.export_to_engine()
pak_path = os.path.join(paths.products, "levels", lvl_name, "level.pak")
- Report.result(Tests.saved_and_exported, os.path.exists(pak_path))
+ success = helper.wait_for_condition(lambda: os.path.exists(pak_path), 10.0)
+ Report.result(Tests.saved_and_exported, success)
if __name__ == "__main__":
diff --git a/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/ShapeIntersectionFilter_FilterStageToggle.py b/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/ShapeIntersectionFilter_FilterStageToggle.py
index 8f179f7f50..b5c00a53b7 100644
--- a/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/ShapeIntersectionFilter_FilterStageToggle.py
+++ b/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/ShapeIntersectionFilter_FilterStageToggle.py
@@ -68,7 +68,7 @@ def ShapeIntersectionFilter_FilterStageToggle():
# Create a new entity as a child of the vegetation area entity with Box Shape
box = hydra.Entity("box")
box.create_entity(position, ["Box Shape"])
- box.get_set_test(0, "Box Shape|Box Configuration|Dimensions", math.Vector3(8.0, 8.0, 1.0))
+ box.get_set_test(0, "Box Shape|Box Configuration|Dimensions", math.Vector3(5.0, 5.0, 1.0))
# Create a new entity as a child of the vegetation area entity with Cylinder Shape.
cylinder = hydra.Entity("cylinder")
@@ -80,10 +80,10 @@ def ShapeIntersectionFilter_FilterStageToggle():
# On the Shape Intersection Filter component, click the crosshair button, and add child entities one by one
vegetation.get_set_test(3, "Configuration|Shape Entity Id", box.id)
- result = helper.wait_for_condition(lambda: dynveg.validate_instance_count(position, 8.0, 100), 2.0)
+ result = helper.wait_for_condition(lambda: dynveg.validate_instance_count(position, 5.0, 49), 2.0)
Report.result(Tests.instance_count_in_box_shape, result)
vegetation.get_set_test(3, "Configuration|Shape Entity Id", cylinder.id)
- result = helper.wait_for_condition(lambda: dynveg.validate_instance_count(position, 5.0, 100), 2.0)
+ result = helper.wait_for_condition(lambda: dynveg.validate_instance_count(position, 5.0, 121), 2.0)
Report.result(Tests.instance_count_in_cylinder_shape, result)
# Create a new entity as a child of the area entity with Random Noise Gradient, Gradient Transform Modifier,
@@ -98,12 +98,13 @@ def ShapeIntersectionFilter_FilterStageToggle():
# Pin the Random Noise entity to the Gradient Entity Id field of the Position Modifier's Gradient X
vegetation.get_set_test(4, "Configuration|Position X|Gradient|Gradient Entity Id", random_noise.id)
- # Toggle between PreProcess and PostProcess
+ # Toggle between PreProcess and PostProcess and validate instances. Validate in a 0.3m wider radius due to position
+ # offsets
vegetation.get_set_test(3, "Configuration|Filter Stage", 1)
- result = helper.wait_for_condition(lambda: dynveg.validate_instance_count(position, 5.0, 117), 2.0)
+ result = helper.wait_for_condition(lambda: dynveg.validate_instance_count(position, 5.3, 121), 2.0)
Report.result(Tests.preprocess_instance_count, result)
vegetation.get_set_test(3, "Configuration|Filter Stage", 2)
- result = helper.wait_for_condition(lambda: dynveg.validate_instance_count(position, 5.0, 122), 2.0)
+ result = helper.wait_for_condition(lambda: dynveg.validate_instance_count(position, 5.3, 122), 2.0)
Report.result(Tests.postprocess_instance_count, result)
diff --git a/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/SpawnerSlices_SliceCreationAndVisibilityToggleWorks.py b/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/SpawnerSlices_SliceCreationAndVisibilityToggleWorks.py
index c36d1b5bc9..fc55080cec 100644
--- a/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/SpawnerSlices_SliceCreationAndVisibilityToggleWorks.py
+++ b/AutomatedTesting/Gem/PythonTests/largeworlds/dyn_veg/EditorScripts/SpawnerSlices_SliceCreationAndVisibilityToggleWorks.py
@@ -73,7 +73,7 @@ def SpawnerSlices_SliceCreationAndVisibilityToggleWorks():
slice.SliceRequestBus(bus.Broadcast, "CreateNewSlice", veg_1.id, slice_path)
# 2.3) Verify if the slice has been created successfully
- spawner_slice_success = helper.wait_for_condition(lambda: path_is_valid_asset(slice_path), 5.0)
+ spawner_slice_success = helper.wait_for_condition(lambda: path_is_valid_asset(slice_path), 10.0)
Report.result(Tests.spawner_slice_created, spawner_slice_success)
# 3) C2627904: Hiding a slice containing the component clears any visuals from the Viewport
diff --git a/AutomatedTesting/Gem/PythonTests/smoke/CMakeLists.txt b/AutomatedTesting/Gem/PythonTests/smoke/CMakeLists.txt
index 5d0808adb6..69d411536f 100644
--- a/AutomatedTesting/Gem/PythonTests/smoke/CMakeLists.txt
+++ b/AutomatedTesting/Gem/PythonTests/smoke/CMakeLists.txt
@@ -31,19 +31,6 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS)
Smoke
)
- ly_add_pytest(
- NAME AutomatedTesting::EditorTestWithGPU
- TEST_REQUIRES gpu
- PATH ${CMAKE_CURRENT_LIST_DIR}/test_Editor_NewExistingLevels_Works.py
- TIMEOUT 100
- RUNTIME_DEPENDENCIES
- AZ::AssetProcessor
- AZ::PythonBindingsExample
- Legacy::Editor
- AutomatedTesting.GameLauncher
- AutomatedTesting.Assets
- )
-
ly_add_pytest(
NAME AutomatedTesting::GameLauncherWithGPU
TEST_SUITE sandbox
diff --git a/AutomatedTesting/Gem/PythonTests/smoke/Editor_NewExistingLevels_Works.py b/AutomatedTesting/Gem/PythonTests/smoke/Editor_NewExistingLevels_Works.py
deleted file mode 100644
index 71956488fc..0000000000
--- a/AutomatedTesting/Gem/PythonTests/smoke/Editor_NewExistingLevels_Works.py
+++ /dev/null
@@ -1,143 +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
-
-
-Test Case Title: Create Test for UI apps- Editor
-"""
-
-
-class Tests():
- level_created = ("Level created", "Failed to create level")
- entity_found = ("New Entity created in level", "Failed to create New Entity in level")
- mesh_added = ("Mesh Component added", "Failed to add Mesh Component")
- enter_game_mode = ("Game Mode successfully entered", "Failed to enter in Game Mode")
- exit_game_mode = ("Game Mode successfully exited", "Failed to exit in Game Mode")
- level_opened = ("Level opened successfully", "Failed to open level")
- level_exported = ("Level exported successfully", "Failed to export level")
- mesh_removed = ("Mesh Component removed", "Failed to remove Mesh Component")
- entity_deleted = ("Entity deleted", "Failed to delete Entity")
- level_edits_present = ("Level edits persist after saving", "Failed to save level edits after saving")
-
-
-def Editor_NewExistingLevels_Works():
- """
- Summary: Perform the below operations on Editor
-
- 1) Launch & Close editor
- 2) Create new level
- 3) Saving and loading levels
- 4) Level edits persist after saving
- 5) Export Level
- 6) Can switch to play mode (ctrl+g) and exit that
- 7) Run editor python bindings test
- 8) Create an Entity
- 9) Delete an Entity
- 10) Add a component to an Entity
-
- Expected Behavior:
- All operations succeed and do not cause a crash
-
- Test Steps:
- 1) Launch editor and Create a new level
- 2) Create a new entity
- 3) Add Mesh component
- 4) Verify enter/exit game mode
- 5) Save, Load and Export level
- 6) Remove Mesh component
- 7) Delete entity
- 8) Open an existing level
- 9) Create a new entity in an existing level
- 10) Save, Load and Export an existing level and close editor
-
- Note:
- - This test file must be called from the O3DE Editor command terminal
- - Any passed and failed tests are written to the Editor.log file.
- Parsing the file or running a log_monitor are required to observe the test results.
-
- :return: None
- """
-
- import os
- import editor_python_test_tools.hydra_editor_utils as hydra
- from editor_python_test_tools.utils import TestHelper as helper
- from editor_python_test_tools.utils import Report
- import azlmbr.bus as bus
- import azlmbr.editor as editor
- import azlmbr.legacy.general as general
- import azlmbr.math as math
-
- # 1) Launch editor and Create a new level
- helper.init_idle()
- test_level_name = "temp_level"
- general.create_level_no_prompt(test_level_name, 128, 1, 128, False)
- helper.wait_for_condition(lambda: general.get_current_level_name() == test_level_name, 2.0)
- Report.result(Tests.level_created, general.get_current_level_name() == test_level_name)
-
- # 2) Create a new entity
- entity_position = math.Vector3(200.0, 200.0, 38.0)
- new_entity = hydra.Entity("Entity1")
- new_entity.create_entity(entity_position, [])
- test_entity = hydra.find_entity_by_name("Entity1")
- Report.result(Tests.entity_found, test_entity.IsValid())
-
- # 3) Add Mesh component
- new_entity.add_component("Mesh")
- Report.result(Tests.mesh_added, hydra.has_components(new_entity.id, ["Mesh"]))
-
- # 4) Verify enter/exit game mode
- helper.enter_game_mode(Tests.enter_game_mode)
- helper.exit_game_mode(Tests.exit_game_mode)
-
- # 5) Save, Load and Export level
- # Save Level
- general.save_level()
- # Open Level
- general.open_level(test_level_name)
- Report.result(Tests.level_opened, general.get_current_level_name() == test_level_name)
- # Export Level
- general.export_to_engine()
- level_pak_file = os.path.join("AutomatedTesting", "Levels", test_level_name, "level.pak")
- Report.result(Tests.level_exported, os.path.exists(level_pak_file))
-
- # 6) Remove Mesh component
- new_entity.remove_component("Mesh")
- Report.result(Tests.mesh_removed, not hydra.has_components(new_entity.id, ["Mesh"]))
-
- # 7) Delete entity
- editor.ToolsApplicationRequestBus(bus.Broadcast, "DeleteEntityById", new_entity.id)
- test_entity = hydra.find_entity_by_name("Entity1")
- Report.result(Tests.entity_deleted, len(test_entity) == 0)
-
- # 8) Open an existing level
- general.open_level(test_level_name)
- Report.result(Tests.level_opened, general.get_current_level_name() == test_level_name)
-
- # 9) Create a new entity in an existing level
- entity_position = math.Vector3(200.0, 200.0, 38.0)
- new_entity_2 = hydra.Entity("Entity2")
- new_entity_2.create_entity(entity_position, [])
- test_entity = hydra.find_entity_by_name("Entity2")
- Report.result(Tests.entity_found, test_entity.IsValid())
-
- # 10) Save, Load and Export an existing level
- # Save Level
- general.save_level()
- # Open Level
- general.open_level(test_level_name)
- Report.result(Tests.level_opened, general.get_current_level_name() == test_level_name)
- entity_id = hydra.find_entity_by_name(new_entity_2.name)
- Report.result(Tests.level_edits_present, entity_id == new_entity_2.id)
- # Export Level
- general.export_to_engine()
- level_pak_file = os.path.join("AutomatedTesting", "Levels", test_level_name, "level.pak")
- Report.result(Tests.level_exported, os.path.exists(level_pak_file))
-
-
-if __name__ == "__main__":
-
- from editor_python_test_tools.utils import Report
-
- Report.start_test(Editor_NewExistingLevels_Works)
diff --git a/AutomatedTesting/Gem/PythonTests/smoke/test_Editor_NewExistingLevels_Works.py b/AutomatedTesting/Gem/PythonTests/smoke/test_Editor_NewExistingLevels_Works.py
deleted file mode 100644
index 5caf7744c4..0000000000
--- a/AutomatedTesting/Gem/PythonTests/smoke/test_Editor_NewExistingLevels_Works.py
+++ /dev/null
@@ -1,34 +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
-
-
-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"])
-class TestAutomation(TestAutomationBase):
- def test_Editor_NewExistingLevels_Works(self, request, workspace, editor, level, project, launcher_platform):
- def teardown():
- file_system.delete([os.path.join(workspace.paths.engine_root(), project, "Levels", level)], True, True)
-
- request.addfinalizer(teardown)
- file_system.delete([os.path.join(workspace.paths.engine_root(), project, "Levels", level)], True, True)
-
- from . import Editor_NewExistingLevels_Works as test_module
-
- self._run_test(request, workspace, editor, test_module, enable_prefab_system=False)
diff --git a/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_black.material b/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_black.material
index cc2c9e785b..d15aa620c7 100644
--- a/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_black.material
+++ b/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_black.material
@@ -2,7 +2,7 @@
"description": "",
"materialType": "Materials/Types/StandardPBR.materialtype",
"parentMaterial": "",
- "propertyLayoutVersion": 3,
+ "materialTypeVersion": 3,
"properties": {
"baseColor": {
"color": [
diff --git a/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_green.material b/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_green.material
index a4bfb73d12..579359b085 100644
--- a/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_green.material
+++ b/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_green.material
@@ -2,7 +2,7 @@
"description": "",
"materialType": "Materials/Types/StandardPBR.materialtype",
"parentMaterial": "",
- "propertyLayoutVersion": 3,
+ "materialTypeVersion": 3,
"properties": {
"baseColor": {
"color": [
diff --git a/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_mat_arch.material b/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_mat_arch.material
index fe9c54bc02..88d5fc0fc6 100644
--- a/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_mat_arch.material
+++ b/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_mat_arch.material
@@ -2,7 +2,7 @@
"description": "",
"materialType": "Materials/Types/StandardPBR.materialtype",
"parentMaterial": "",
- "propertyLayoutVersion": 3,
+ "materialTypeVersion": 3,
"properties": {
"baseColor": {
"color": [
diff --git a/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_mat_bricks.material b/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_mat_bricks.material
index a19afa33e2..7244397ee9 100644
--- a/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_mat_bricks.material
+++ b/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_mat_bricks.material
@@ -2,7 +2,7 @@
"description": "",
"materialType": "Materials/Types/StandardPBR.materialtype",
"parentMaterial": "",
- "propertyLayoutVersion": 3,
+ "materialTypeVersion": 3,
"properties": {
"baseColor": {
"color": [
diff --git a/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_mat_floor.material b/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_mat_floor.material
index 0c1208d8fb..8a3f289c26 100644
--- a/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_mat_floor.material
+++ b/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_mat_floor.material
@@ -2,7 +2,7 @@
"description": "",
"materialType": "Materials/Types/StandardPBR.materialtype",
"parentMaterial": "",
- "propertyLayoutVersion": 3,
+ "materialTypeVersion": 3,
"properties": {
"baseColor": {
"color": [
diff --git a/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_mat_roof.material b/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_mat_roof.material
index 6aad4d644a..7bc193978f 100644
--- a/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_mat_roof.material
+++ b/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_mat_roof.material
@@ -2,7 +2,7 @@
"description": "",
"materialType": "Materials/Types/StandardPBR.materialtype",
"parentMaterial": "",
- "propertyLayoutVersion": 3,
+ "materialTypeVersion": 3,
"properties": {
"baseColor": {
"color": [
diff --git a/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_phong5.material b/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_phong5.material
index 302589dc85..a53cbef4e4 100644
--- a/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_phong5.material
+++ b/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_phong5.material
@@ -2,7 +2,7 @@
"description": "",
"materialType": "Materials/Types/StandardPBR.materialtype",
"parentMaterial": "",
- "propertyLayoutVersion": 3,
+ "materialTypeVersion": 3,
"properties": {
"baseColor": {
"color": [
diff --git a/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_red.material b/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_red.material
index 5217a4e4be..6ddb645319 100644
--- a/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_red.material
+++ b/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_red.material
@@ -2,7 +2,7 @@
"description": "",
"materialType": "Materials/Types/StandardPBR.materialtype",
"parentMaterial": "",
- "propertyLayoutVersion": 3,
+ "materialTypeVersion": 3,
"properties": {
"baseColor": {
"color": [
diff --git a/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_white.material b/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_white.material
index dba44f7b49..e3d310cd15 100644
--- a/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_white.material
+++ b/AutomatedTesting/Gem/Sponza/Assets/TestData/Test_Sponza_Material_Conversion_white.material
@@ -2,7 +2,7 @@
"description": "",
"materialType": "Materials/Types/StandardPBR.materialtype",
"parentMaterial": "",
- "propertyLayoutVersion": 3,
+ "materialTypeVersion": 3,
"properties": {
"emissive": {
"color": [
diff --git a/AutomatedTesting/Gem/Sponza/Assets/objects/lightBlocker_lambert1.material b/AutomatedTesting/Gem/Sponza/Assets/objects/lightBlocker_lambert1.material
index c8e9f1f8f7..35677a81c6 100644
--- a/AutomatedTesting/Gem/Sponza/Assets/objects/lightBlocker_lambert1.material
+++ b/AutomatedTesting/Gem/Sponza/Assets/objects/lightBlocker_lambert1.material
@@ -2,7 +2,7 @@
"description": "",
"materialType": "Materials/Types/StandardPBR.materialtype",
"parentMaterial": "",
- "propertyLayoutVersion": 3,
+ "materialTypeVersion": 3,
"properties": {
"emissive": {
"color": [
diff --git a/AutomatedTesting/Gem/Sponza/gem.json b/AutomatedTesting/Gem/Sponza/gem.json
index 68749cd5f4..f36b22a805 100644
--- a/AutomatedTesting/Gem/Sponza/gem.json
+++ b/AutomatedTesting/Gem/Sponza/gem.json
@@ -4,14 +4,19 @@
"license": "Apache-2.0 Or MIT",
"license_url": "https://github.com/o3de/o3de/blob/development/LICENSE.txt",
"origin": "Open 3D Engine - o3de.org",
+ "origin_url": "https://github.com/o3de/o3de",
"type": "Asset",
"summary": "A standard test scene for Global Illumination (forked from crytek sponza scene)",
"canonical_tags": [
- "Gem"
+ "Gem",
+ "Asset"
],
"user_tags": [
- "Assets"
+ "Sponza"
],
+ "icon_path": "preview.png",
"requirements": "",
- "dependencies": []
+ "documentation_url": "",
+ "dependencies": [
+ ]
}
diff --git a/AutomatedTesting/Gem/gem.json b/AutomatedTesting/Gem/gem.json
index df197df09d..90a0c8cb01 100644
--- a/AutomatedTesting/Gem/gem.json
+++ b/AutomatedTesting/Gem/gem.json
@@ -3,13 +3,21 @@
"display_name": "AutomatedTesting",
"license": "Apache-2.0 Or MIT",
"license_url": "https://github.com/o3de/o3de/blob/development/LICENSE.txt",
- "origin": "Amazon Web Services, Inc.",
+ "origin": "Open 3D Engine - o3de.org",
+ "origin_url": "https://github.com/o3de/o3de",
"type": "Code",
"summary": "Project Gem for customizing the AutomatedTesting project functionality.",
"canonical_tags": [
"Gem"
],
- "user_tags": [],
+ "user_tags": [
+ "AutomatedTesting"
+ ],
"icon_path": "preview.png",
- "requirements": ""
+ "requirements": "",
+ "documentation_url": "",
+ "dependencies": [],
+ "external_subdirectories": [
+ "PythonCoverage"
+ ]
}
diff --git a/AutomatedTesting/Levels/PbrMaterialChart/PbrMaterialChart.prefab b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/PbrMaterialChart.prefab
similarity index 97%
rename from AutomatedTesting/Levels/PbrMaterialChart/PbrMaterialChart.prefab
rename to AutomatedTesting/Levels/Graphics/PbrMaterialChart/PbrMaterialChart.prefab
index faa93597de..2c0ee5cb1a 100644
--- a/AutomatedTesting/Levels/PbrMaterialChart/PbrMaterialChart.prefab
+++ b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/PbrMaterialChart.prefab
@@ -1474,9 +1474,9 @@
"{}": {
"MaterialAsset": {
"assetId": {
- "guid": "{1FD47684-2E9E-5525-BBCA-251795F9033C}"
+ "guid": "{12B5A321-3D64-5DF6-9E15-D8F447229EC1}"
},
- "assetHint": "levels/pbrmaterialchart/materials/basic_m00_r00.azmaterial"
+ "assetHint": "levels/graphics/pbrmaterialchart/materials/basic_m00_r00.azmaterial"
}
}
}
@@ -1569,9 +1569,9 @@
"{}": {
"MaterialAsset": {
"assetId": {
- "guid": "{B5660D78-818E-5273-AF3D-EC8189E2E6CB}"
+ "guid": "{EB8B9C49-D6F4-5098-AC97-543381E2554A}"
},
- "assetHint": "levels/pbrmaterialchart/materials/basic_m00_r01.azmaterial"
+ "assetHint": "levels/graphics/pbrmaterialchart/materials/basic_m00_r01.azmaterial"
}
}
}
@@ -1824,9 +1824,9 @@
"{}": {
"MaterialAsset": {
"assetId": {
- "guid": "{512443BD-9511-5F13-A84A-3ED5DB9E9B5A}"
+ "guid": "{CAA9CAFC-8A48-5406-BE26-448E5AA1A5B0}"
},
- "assetHint": "levels/pbrmaterialchart/materials/basic_m00_r02.azmaterial"
+ "assetHint": "levels/graphics/pbrmaterialchart/materials/basic_m00_r02.azmaterial"
}
}
}
@@ -1926,9 +1926,9 @@
"{}": {
"MaterialAsset": {
"assetId": {
- "guid": "{E28A5CC5-4B8B-5B90-877A-3D92C75DC75A}"
+ "guid": "{2F338C0B-EF86-5AC4-AEE6-28A26BB9E97E}"
},
- "assetHint": "levels/pbrmaterialchart/materials/basic_m00_r03.azmaterial"
+ "assetHint": "levels/graphics/pbrmaterialchart/materials/basic_m00_r03.azmaterial"
}
}
}
@@ -2028,9 +2028,9 @@
"{}": {
"MaterialAsset": {
"assetId": {
- "guid": "{1495BCCF-3F96-5D0B-8176-228DB22CEC82}"
+ "guid": "{9BF4E656-0D4F-5746-A256-32740742712B}"
},
- "assetHint": "levels/pbrmaterialchart/materials/basic_m00_r04.azmaterial"
+ "assetHint": "levels/graphics/pbrmaterialchart/materials/basic_m00_r04.azmaterial"
}
}
}
@@ -2130,9 +2130,9 @@
"{}": {
"MaterialAsset": {
"assetId": {
- "guid": "{40494612-0ABF-55B5-9C56-E968763FCFDE}"
+ "guid": "{850398D7-386A-56C6-AEB2-95E4F64368B1}"
},
- "assetHint": "levels/pbrmaterialchart/materials/basic_m00_r05.azmaterial"
+ "assetHint": "levels/graphics/pbrmaterialchart/materials/basic_m00_r05.azmaterial"
}
}
}
@@ -2232,9 +2232,9 @@
"{}": {
"MaterialAsset": {
"assetId": {
- "guid": "{76CF9D4A-009F-5494-83AB-6E3D4D1B4A36}"
+ "guid": "{74784C2A-A713-5C6A-8B3D-B66CAE3DD055}"
},
- "assetHint": "levels/pbrmaterialchart/materials/basic_m00_r06.azmaterial"
+ "assetHint": "levels/graphics/pbrmaterialchart/materials/basic_m00_r06.azmaterial"
}
}
}
@@ -2334,9 +2334,9 @@
"{}": {
"MaterialAsset": {
"assetId": {
- "guid": "{8431B792-E6CC-51DD-B82E-F3E4A12FCB4A}"
+ "guid": "{4F9F91F7-7E22-5A14-856D-194CC258E70D}"
},
- "assetHint": "levels/pbrmaterialchart/materials/basic_m00_r07.azmaterial"
+ "assetHint": "levels/graphics/pbrmaterialchart/materials/basic_m00_r07.azmaterial"
}
}
}
@@ -2436,9 +2436,9 @@
"{}": {
"MaterialAsset": {
"assetId": {
- "guid": "{4B1F29FF-7971-5524-AA1B-0DC2392A33C4}"
+ "guid": "{842AE870-802B-5934-997F-0965F960ECB9}"
},
- "assetHint": "levels/pbrmaterialchart/materials/basic_m00_r08.azmaterial"
+ "assetHint": "levels/graphics/pbrmaterialchart/materials/basic_m00_r08.azmaterial"
}
}
}
@@ -2538,9 +2538,9 @@
"{}": {
"MaterialAsset": {
"assetId": {
- "guid": "{785BE6DE-C0EB-5B47-9438-4F9ECFC34A96}"
+ "guid": "{0184CF10-E675-5C33-B1B9-009C383AB463}"
},
- "assetHint": "levels/pbrmaterialchart/materials/basic_m00_r09.azmaterial"
+ "assetHint": "levels/graphics/pbrmaterialchart/materials/basic_m00_r09.azmaterial"
}
}
}
@@ -2640,9 +2640,9 @@
"{}": {
"MaterialAsset": {
"assetId": {
- "guid": "{C40DE9AE-6756-57E7-B3B4-FB0542B5CD0F}"
+ "guid": "{6DDA0761-C165-58CC-B45E-03C29F0CF598}"
},
- "assetHint": "levels/pbrmaterialchart/materials/basic_m00_r10.azmaterial"
+ "assetHint": "levels/graphics/pbrmaterialchart/materials/basic_m00_r10.azmaterial"
}
}
}
@@ -2896,9 +2896,9 @@
"{}": {
"MaterialAsset": {
"assetId": {
- "guid": "{251C4C29-4ECD-5763-AF4F-20675EAC048B}"
+ "guid": "{101AB53A-3B3E-5ACF-841C-65DB2BFBF305}"
},
- "assetHint": "levels/pbrmaterialchart/materials/basic_m10_r04.azmaterial"
+ "assetHint": "levels/graphics/pbrmaterialchart/materials/basic_m10_r04.azmaterial"
}
}
}
@@ -2998,9 +2998,9 @@
"{}": {
"MaterialAsset": {
"assetId": {
- "guid": "{02D082C4-5032-57CC-A081-BC4D8518BCF0}"
+ "guid": "{B82B96D6-7511-5E22-A36E-FFF682B3236B}"
},
- "assetHint": "levels/pbrmaterialchart/materials/basic_m10_r05.azmaterial"
+ "assetHint": "levels/graphics/pbrmaterialchart/materials/basic_m10_r05.azmaterial"
}
}
}
@@ -3100,9 +3100,9 @@
"{}": {
"MaterialAsset": {
"assetId": {
- "guid": "{FA9D8842-95B2-5371-8352-CBEEEAABE676}"
+ "guid": "{DBED5292-3E17-5038-9974-80A8BB1F79E8}"
},
- "assetHint": "levels/pbrmaterialchart/materials/basic_m10_r06.azmaterial"
+ "assetHint": "levels/graphics/pbrmaterialchart/materials/basic_m10_r06.azmaterial"
}
}
}
@@ -3202,9 +3202,9 @@
"{}": {
"MaterialAsset": {
"assetId": {
- "guid": "{522A9626-FF4C-561A-A44A-64B68F7274D2}"
+ "guid": "{25F07733-365C-5826-AEE3-E92FBE807555}"
},
- "assetHint": "levels/pbrmaterialchart/materials/basic_m10_r07.azmaterial"
+ "assetHint": "levels/graphics/pbrmaterialchart/materials/basic_m10_r07.azmaterial"
}
}
}
@@ -3304,9 +3304,9 @@
"{}": {
"MaterialAsset": {
"assetId": {
- "guid": "{06DDFD66-D7F5-5D55-8972-6D61276E88F6}"
+ "guid": "{C9A7B916-CF71-5A34-B9B9-54FE8CB058DC}"
},
- "assetHint": "levels/pbrmaterialchart/materials/basic_m10_r00.azmaterial"
+ "assetHint": "levels/graphics/pbrmaterialchart/materials/basic_m10_r00.azmaterial"
}
}
}
@@ -3399,9 +3399,9 @@
"{}": {
"MaterialAsset": {
"assetId": {
- "guid": "{060EF1B7-1029-5227-B03B-1415C74E9D65}"
+ "guid": "{85C8DFC5-358D-579D-B922-14FA1B401571}"
},
- "assetHint": "levels/pbrmaterialchart/materials/basic_m10_r08.azmaterial"
+ "assetHint": "levels/graphics/pbrmaterialchart/materials/basic_m10_r08.azmaterial"
}
}
}
@@ -3501,9 +3501,9 @@
"{}": {
"MaterialAsset": {
"assetId": {
- "guid": "{7B7BC6F8-150A-518F-816E-2F7DBE786461}"
+ "guid": "{51924281-7A06-5654-B783-A4F5759063ED}"
},
- "assetHint": "levels/pbrmaterialchart/materials/basic_m10_r01.azmaterial"
+ "assetHint": "levels/graphics/pbrmaterialchart/materials/basic_m10_r01.azmaterial"
}
}
}
@@ -3603,9 +3603,9 @@
"{}": {
"MaterialAsset": {
"assetId": {
- "guid": "{270881B6-21E9-509D-A6CD-1046674FB0BE}"
+ "guid": "{7877F64E-26E3-558C-B6D9-B609ED6E43BF}"
},
- "assetHint": "levels/pbrmaterialchart/materials/basic_m10_r09.azmaterial"
+ "assetHint": "levels/graphics/pbrmaterialchart/materials/basic_m10_r09.azmaterial"
}
}
}
@@ -3705,9 +3705,9 @@
"{}": {
"MaterialAsset": {
"assetId": {
- "guid": "{C0538953-C56E-5C1A-BBE2-E6BE04764C20}"
+ "guid": "{6CC3C6B9-EE05-5A77-A12D-7085D93D89DB}"
},
- "assetHint": "levels/pbrmaterialchart/materials/basic_m10_r02.azmaterial"
+ "assetHint": "levels/graphics/pbrmaterialchart/materials/basic_m10_r02.azmaterial"
}
}
}
@@ -3874,9 +3874,9 @@
"{}": {
"MaterialAsset": {
"assetId": {
- "guid": "{5EA26E09-E3D6-5181-8E7A-F2E98A24247C}"
+ "guid": "{E6E15876-EEF3-555D-BD80-1B9D5A7ECC7D}"
},
- "assetHint": "levels/pbrmaterialchart/materials/basic_m10_r10.azmaterial"
+ "assetHint": "levels/graphics/pbrmaterialchart/materials/basic_m10_r10.azmaterial"
}
}
}
@@ -3976,9 +3976,9 @@
"{}": {
"MaterialAsset": {
"assetId": {
- "guid": "{E1A5D708-7A49-5CCA-81C3-4CB337C47703}"
+ "guid": "{83179EEC-BAC7-5D39-9788-37D33E9584B1}"
},
- "assetHint": "levels/pbrmaterialchart/materials/basic_m10_r03.azmaterial"
+ "assetHint": "levels/graphics/pbrmaterialchart/materials/basic_m10_r03.azmaterial"
}
}
}
diff --git a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic.material b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic.material
similarity index 95%
rename from AutomatedTesting/Levels/PbrMaterialChart/materials/basic.material
rename to AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic.material
index 32ac8dfd10..6af3ceb0c1 100644
--- a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic.material
+++ b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic.material
@@ -1,6 +1,6 @@
{
"materialType": "Materials/Types/StandardPBR.materialtype",
- "propertyLayoutVersion": 1,
+ "materialTypeVersion": 1,
"properties": {
"baseColor": {
"color": [ 1.0, 1.0, 1.0 ],
diff --git a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r00.material b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r00.material
similarity index 88%
rename from AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r00.material
rename to AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r00.material
index 1c1096bf12..541bd83981 100644
--- a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r00.material
+++ b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r00.material
@@ -1,7 +1,7 @@
{
"parentMaterial": "./basic.material",
"materialType": "Materials/Types/StandardPBR.materialtype",
- "propertyLayoutVersion": 1,
+ "materialTypeVersion": 1,
"properties": {
"metallic": {
"factor": 0.0
diff --git a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r01.material b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r01.material
similarity index 88%
rename from AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r01.material
rename to AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r01.material
index 33148f3f73..19691258e0 100644
--- a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r01.material
+++ b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r01.material
@@ -1,7 +1,7 @@
{
"parentMaterial": "./basic.material",
"materialType": "Materials/Types/StandardPBR.materialtype",
- "propertyLayoutVersion": 1,
+ "materialTypeVersion": 1,
"properties": {
"metallic": {
"factor": 0.0
diff --git a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r02.material b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r02.material
similarity index 88%
rename from AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r02.material
rename to AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r02.material
index 38339454cb..46fda2aab1 100644
--- a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r02.material
+++ b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r02.material
@@ -1,7 +1,7 @@
{
"parentMaterial": "./basic.material",
"materialType": "Materials/Types/StandardPBR.materialtype",
- "propertyLayoutVersion": 1,
+ "materialTypeVersion": 1,
"properties": {
"metallic": {
"factor": 0.0
diff --git a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r03.material b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r03.material
similarity index 88%
rename from AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r03.material
rename to AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r03.material
index e21ab5775a..79cf4bf401 100644
--- a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r03.material
+++ b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r03.material
@@ -1,7 +1,7 @@
{
"parentMaterial": "./basic.material",
"materialType": "Materials/Types/StandardPBR.materialtype",
- "propertyLayoutVersion": 1,
+ "materialTypeVersion": 1,
"properties": {
"metallic": {
"factor": 0.0
diff --git a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r04.material b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r04.material
similarity index 88%
rename from AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r04.material
rename to AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r04.material
index 0272e66081..9aabf3e158 100644
--- a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r04.material
+++ b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r04.material
@@ -1,7 +1,7 @@
{
"parentMaterial": "./basic.material",
"materialType": "Materials/Types/StandardPBR.materialtype",
- "propertyLayoutVersion": 1,
+ "materialTypeVersion": 1,
"properties": {
"metallic": {
"factor": 0.0
diff --git a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r05.material b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r05.material
similarity index 88%
rename from AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r05.material
rename to AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r05.material
index 67d51777a4..8b02f225fc 100644
--- a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r05.material
+++ b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r05.material
@@ -1,7 +1,7 @@
{
"parentMaterial": "./basic.material",
"materialType": "Materials/Types/StandardPBR.materialtype",
- "propertyLayoutVersion": 1,
+ "materialTypeVersion": 1,
"properties": {
"metallic": {
"factor": 0.0
diff --git a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r06.material b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r06.material
similarity index 88%
rename from AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r06.material
rename to AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r06.material
index 3136f654e6..5b089da4bd 100644
--- a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r06.material
+++ b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r06.material
@@ -1,7 +1,7 @@
{
"parentMaterial": "./basic.material",
"materialType": "Materials/Types/StandardPBR.materialtype",
- "propertyLayoutVersion": 1,
+ "materialTypeVersion": 1,
"properties": {
"metallic": {
"factor": 0.0
diff --git a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r07.material b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r07.material
similarity index 88%
rename from AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r07.material
rename to AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r07.material
index a79744ea11..25741cf689 100644
--- a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r07.material
+++ b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r07.material
@@ -1,7 +1,7 @@
{
"parentMaterial": "./basic.material",
"materialType": "Materials/Types/StandardPBR.materialtype",
- "propertyLayoutVersion": 1,
+ "materialTypeVersion": 1,
"properties": {
"metallic": {
"factor": 0.0
diff --git a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r08.material b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r08.material
similarity index 88%
rename from AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r08.material
rename to AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r08.material
index 1372283500..04103273f2 100644
--- a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r08.material
+++ b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r08.material
@@ -1,7 +1,7 @@
{
"parentMaterial": "./basic.material",
"materialType": "Materials/Types/StandardPBR.materialtype",
- "propertyLayoutVersion": 1,
+ "materialTypeVersion": 1,
"properties": {
"metallic": {
"factor": 0.0
diff --git a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r09.material b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r09.material
similarity index 88%
rename from AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r09.material
rename to AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r09.material
index d1c951e53c..74eb68da99 100644
--- a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r09.material
+++ b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r09.material
@@ -1,7 +1,7 @@
{
"parentMaterial": "./basic.material",
"materialType": "Materials/Types/StandardPBR.materialtype",
- "propertyLayoutVersion": 1,
+ "materialTypeVersion": 1,
"properties": {
"metallic": {
"factor": 0.0
diff --git a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r10.material b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r10.material
similarity index 88%
rename from AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r10.material
rename to AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r10.material
index d34fc46530..3533ca6676 100644
--- a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m00_r10.material
+++ b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m00_r10.material
@@ -1,7 +1,7 @@
{
"parentMaterial": "./basic.material",
"materialType": "Materials/Types/StandardPBR.materialtype",
- "propertyLayoutVersion": 1,
+ "materialTypeVersion": 1,
"properties": {
"metallic": {
"factor": 0.0
diff --git a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r00.material b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r00.material
similarity index 88%
rename from AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r00.material
rename to AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r00.material
index 92ddfec7c4..d2ce0fadc9 100644
--- a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r00.material
+++ b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r00.material
@@ -1,7 +1,7 @@
{
"parentMaterial": "./basic.material",
"materialType": "Materials/Types/StandardPBR.materialtype",
- "propertyLayoutVersion": 1,
+ "materialTypeVersion": 1,
"properties": {
"metallic": {
"factor": 1.0
diff --git a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r01.material b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r01.material
similarity index 88%
rename from AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r01.material
rename to AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r01.material
index 874422384a..8d96ea6217 100644
--- a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r01.material
+++ b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r01.material
@@ -1,7 +1,7 @@
{
"parentMaterial": "./basic.material",
"materialType": "Materials/Types/StandardPBR.materialtype",
- "propertyLayoutVersion": 1,
+ "materialTypeVersion": 1,
"properties": {
"metallic": {
"factor": 1.0
diff --git a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r02.material b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r02.material
similarity index 88%
rename from AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r02.material
rename to AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r02.material
index b017add10b..e8feb87283 100644
--- a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r02.material
+++ b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r02.material
@@ -1,7 +1,7 @@
{
"parentMaterial": "./basic.material",
"materialType": "Materials/Types/StandardPBR.materialtype",
- "propertyLayoutVersion": 1,
+ "materialTypeVersion": 1,
"properties": {
"metallic": {
"factor": 1.0
diff --git a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r03.material b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r03.material
similarity index 88%
rename from AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r03.material
rename to AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r03.material
index 5353d651c8..c14591bd52 100644
--- a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r03.material
+++ b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r03.material
@@ -1,7 +1,7 @@
{
"parentMaterial": "./basic.material",
"materialType": "Materials/Types/StandardPBR.materialtype",
- "propertyLayoutVersion": 1,
+ "materialTypeVersion": 1,
"properties": {
"metallic": {
"factor": 1.0
diff --git a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r04.material b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r04.material
similarity index 88%
rename from AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r04.material
rename to AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r04.material
index 6dd47e4e3b..60a3167f02 100644
--- a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r04.material
+++ b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r04.material
@@ -1,7 +1,7 @@
{
"parentMaterial": "./basic.material",
"materialType": "Materials/Types/StandardPBR.materialtype",
- "propertyLayoutVersion": 1,
+ "materialTypeVersion": 1,
"properties": {
"metallic": {
"factor": 1.0
diff --git a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r05.material b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r05.material
similarity index 88%
rename from AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r05.material
rename to AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r05.material
index 04912cbfd4..d71ff06961 100644
--- a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r05.material
+++ b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r05.material
@@ -1,7 +1,7 @@
{
"parentMaterial": "./basic.material",
"materialType": "Materials/Types/StandardPBR.materialtype",
- "propertyLayoutVersion": 1,
+ "materialTypeVersion": 1,
"properties": {
"metallic": {
"factor": 1.0
diff --git a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r06.material b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r06.material
similarity index 88%
rename from AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r06.material
rename to AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r06.material
index 27f7f6ff42..6fa8cfe1a6 100644
--- a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r06.material
+++ b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r06.material
@@ -1,7 +1,7 @@
{
"parentMaterial": "./basic.material",
"materialType": "Materials/Types/StandardPBR.materialtype",
- "propertyLayoutVersion": 1,
+ "materialTypeVersion": 1,
"properties": {
"metallic": {
"factor": 1.0
diff --git a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r07.material b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r07.material
similarity index 88%
rename from AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r07.material
rename to AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r07.material
index e2b5df681c..773cc66f03 100644
--- a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r07.material
+++ b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r07.material
@@ -1,7 +1,7 @@
{
"parentMaterial": "./basic.material",
"materialType": "Materials/Types/StandardPBR.materialtype",
- "propertyLayoutVersion": 1,
+ "materialTypeVersion": 1,
"properties": {
"metallic": {
"factor": 1.0
diff --git a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r08.material b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r08.material
similarity index 88%
rename from AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r08.material
rename to AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r08.material
index 5418f9c855..6971597d1d 100644
--- a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r08.material
+++ b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r08.material
@@ -1,7 +1,7 @@
{
"parentMaterial": "./basic.material",
"materialType": "Materials/Types/StandardPBR.materialtype",
- "propertyLayoutVersion": 1,
+ "materialTypeVersion": 1,
"properties": {
"metallic": {
"factor": 1.0
diff --git a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r09.material b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r09.material
similarity index 88%
rename from AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r09.material
rename to AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r09.material
index dd1ec3489a..c2d8cc47bd 100644
--- a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r09.material
+++ b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r09.material
@@ -1,7 +1,7 @@
{
"parentMaterial": "./basic.material",
"materialType": "Materials/Types/StandardPBR.materialtype",
- "propertyLayoutVersion": 1,
+ "materialTypeVersion": 1,
"properties": {
"metallic": {
"factor": 1.0
diff --git a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r10.material b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r10.material
similarity index 88%
rename from AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r10.material
rename to AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r10.material
index 5f9317d2cc..906879b0ea 100644
--- a/AutomatedTesting/Levels/PbrMaterialChart/materials/basic_m10_r10.material
+++ b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/materials/basic_m10_r10.material
@@ -1,7 +1,7 @@
{
"parentMaterial": "./basic.material",
"materialType": "Materials/Types/StandardPBR.materialtype",
- "propertyLayoutVersion": 1,
+ "materialTypeVersion": 1,
"properties": {
"metallic": {
"factor": 1.0
diff --git a/AutomatedTesting/Levels/PbrMaterialChart/tags.txt b/AutomatedTesting/Levels/Graphics/PbrMaterialChart/tags.txt
similarity index 100%
rename from AutomatedTesting/Levels/PbrMaterialChart/tags.txt
rename to AutomatedTesting/Levels/Graphics/PbrMaterialChart/tags.txt
diff --git a/AutomatedTesting/Levels/Graphics/ShadowTest/ShadowTest.prefab b/AutomatedTesting/Levels/Graphics/ShadowTest/ShadowTest.prefab
new file mode 100644
index 0000000000..86d16328e9
--- /dev/null
+++ b/AutomatedTesting/Levels/Graphics/ShadowTest/ShadowTest.prefab
@@ -0,0 +1,566 @@
+{
+ "ContainerEntity": {
+ "Id": "ContainerEntity",
+ "Name": "ShadowTest",
+ "Components": {
+ "Component_[10182366347512475253]": {
+ "$type": "EditorPrefabComponent",
+ "Id": 10182366347512475253
+ },
+ "Component_[12917798267488243668]": {
+ "$type": "EditorPendingCompositionComponent",
+ "Id": 12917798267488243668
+ },
+ "Component_[3261249813163778338]": {
+ "$type": "EditorOnlyEntityComponent",
+ "Id": 3261249813163778338
+ },
+ "Component_[3837204912784440039]": {
+ "$type": "EditorDisabledCompositionComponent",
+ "Id": 3837204912784440039
+ },
+ "Component_[4272963378099646759]": {
+ "$type": "{27F1E1A1-8D9D-4C3B-BD3A-AFB9762449C0} TransformComponent",
+ "Id": 4272963378099646759,
+ "Parent Entity": ""
+ },
+ "Component_[4848458548047175816]": {
+ "$type": "EditorVisibilityComponent",
+ "Id": 4848458548047175816
+ },
+ "Component_[5787060997243919943]": {
+ "$type": "EditorInspectorComponent",
+ "Id": 5787060997243919943
+ },
+ "Component_[7804170251266531779]": {
+ "$type": "EditorLockComponent",
+ "Id": 7804170251266531779
+ },
+ "Component_[7874177159288365422]": {
+ "$type": "EditorEntitySortComponent",
+ "Id": 7874177159288365422
+ },
+ "Component_[8018146290632383969]": {
+ "$type": "EditorEntityIconComponent",
+ "Id": 8018146290632383969
+ },
+ "Component_[8452360690590857075]": {
+ "$type": "SelectionComponent",
+ "Id": 8452360690590857075
+ }
+ }
+ },
+ "Entities": {
+ "Entity_[232650527119]": {
+ "Id": "Entity_[232650527119]",
+ "Name": "DirectionalLight",
+ "Components": {
+ "Component_[10660156197505313227]": {
+ "$type": "EditorLockComponent",
+ "Id": 10660156197505313227
+ },
+ "Component_[14184823757717157844]": {
+ "$type": "EditorInspectorComponent",
+ "Id": 14184823757717157844,
+ "ComponentOrderEntryArray": [
+ {
+ "ComponentId": 9854879901259791898
+ },
+ {
+ "ComponentId": 3968519938187714949,
+ "SortIndex": 1
+ }
+ ]
+ },
+ "Component_[1495573908681275492]": {
+ "$type": "EditorEntitySortComponent",
+ "Id": 1495573908681275492
+ },
+ "Component_[15580233403487968826]": {
+ "$type": "EditorDisabledCompositionComponent",
+ "Id": 15580233403487968826
+ },
+ "Component_[3968519938187714949]": {
+ "$type": "AZ::Render::EditorDirectionalLightComponent",
+ "Id": 3968519938187714949,
+ "Controller": {
+ "Configuration": {
+ "Intensity": 0.0,
+ "CameraEntityId": "",
+ "ShadowmapSize": "Size2048"
+ }
+ }
+ },
+ "Component_[4961040003466069196]": {
+ "$type": "EditorEntityIconComponent",
+ "Id": 4961040003466069196
+ },
+ "Component_[7824884165323036147]": {
+ "$type": "EditorVisibilityComponent",
+ "Id": 7824884165323036147
+ },
+ "Component_[8741866916946672319]": {
+ "$type": "EditorPendingCompositionComponent",
+ "Id": 8741866916946672319
+ },
+ "Component_[9288966876314965560]": {
+ "$type": "EditorOnlyEntityComponent",
+ "Id": 9288966876314965560
+ },
+ "Component_[9313163355156975968]": {
+ "$type": "SelectionComponent",
+ "Id": 9313163355156975968
+ },
+ "Component_[9854879901259791898]": {
+ "$type": "{27F1E1A1-8D9D-4C3B-BD3A-AFB9762449C0} TransformComponent",
+ "Id": 9854879901259791898,
+ "Parent Entity": "ContainerEntity",
+ "Transform Data": {
+ "Translate": [
+ 0.0,
+ 0.0,
+ 2.0
+ ],
+ "Rotate": [
+ -32.05662536621094,
+ -26.103206634521484,
+ 47.54806137084961
+ ]
+ }
+ }
+ }
+ },
+ "Entity_[260824893221]": {
+ "Id": "Entity_[260824893221]",
+ "Name": "SpotLight",
+ "Components": {
+ "Component_[16098295228434057928]": {
+ "$type": "EditorDiskShapeComponent",
+ "Id": 16098295228434057928,
+ "ShapeColor": [
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "DiskShape": {
+ "Configuration": {
+ "Radius": 0.0
+ }
+ }
+ },
+ "Component_[16175995808158769171]": {
+ "$type": "{27F1E1A1-8D9D-4C3B-BD3A-AFB9762449C0} TransformComponent",
+ "Id": 16175995808158769171,
+ "Parent Entity": "ContainerEntity",
+ "Transform Data": {
+ "Translate": [
+ 0.6417449712753296,
+ 1.3211734294891357,
+ 3.022759199142456
+ ],
+ "Rotate": [
+ 243.31329345703125,
+ 0.0,
+ 0.0
+ ]
+ }
+ },
+ "Component_[17136787899581093377]": {
+ "$type": "EditorEntitySortComponent",
+ "Id": 17136787899581093377
+ },
+ "Component_[17938027566627202610]": {
+ "$type": "EditorPendingCompositionComponent",
+ "Id": 17938027566627202610
+ },
+ "Component_[190081405128299223]": {
+ "$type": "SelectionComponent",
+ "Id": 190081405128299223
+ },
+ "Component_[2181418147135573579]": {
+ "$type": "EditorEntityIconComponent",
+ "Id": 2181418147135573579
+ },
+ "Component_[2564149706319215342]": {
+ "$type": "EditorOnlyEntityComponent",
+ "Id": 2564149706319215342
+ },
+ "Component_[3716169383940064541]": {
+ "$type": "EditorInspectorComponent",
+ "Id": 3716169383940064541,
+ "ComponentOrderEntryArray": [
+ {
+ "ComponentId": 16175995808158769171
+ },
+ {
+ "ComponentId": 16665800442781289114,
+ "SortIndex": 1
+ }
+ ]
+ },
+ "Component_[4143676462074671972]": {
+ "$type": "AZ::Render::EditorAreaLightComponent",
+ "Id": 4143676462074671972,
+ "Controller": {
+ "Configuration": {
+ "LightType": 2,
+ "AttenuationRadius": 31.62277603149414,
+ "EnableShutters": true,
+ "InnerShutterAngleDegrees": 22.5,
+ "OuterShutterAngleDegrees": 27.5,
+ "Enable Shadow": true,
+ "Shadowmap Max Size": "Size2048",
+ "Filtering Sample Count": 32
+ }
+ }
+ },
+ "Component_[6706371214647538019]": {
+ "$type": "EditorVisibilityComponent",
+ "Id": 6706371214647538019
+ },
+ "Component_[7493944209625718550]": {
+ "$type": "EditorLockComponent",
+ "Id": 7493944209625718550
+ },
+ "Component_[7614113482082939165]": {
+ "$type": "EditorDisabledCompositionComponent",
+ "Id": 7614113482082939165
+ }
+ }
+ },
+ "Entity_[269117486973]": {
+ "Id": "Entity_[269117486973]",
+ "Name": "Floor",
+ "Components": {
+ "Component_[10562678944594915756]": {
+ "$type": "EditorEntitySortComponent",
+ "Id": 10562678944594915756
+ },
+ "Component_[1175452962278157526]": {
+ "$type": "EditorEntityIconComponent",
+ "Id": 1175452962278157526
+ },
+ "Component_[13598353801231166887]": {
+ "$type": "EditorPendingCompositionComponent",
+ "Id": 13598353801231166887
+ },
+ "Component_[13735087293504923475]": {
+ "$type": "SelectionComponent",
+ "Id": 13735087293504923475
+ },
+ "Component_[13888244442459268363]": {
+ "$type": "AZ::Render::EditorMeshComponent",
+ "Id": 13888244442459268363,
+ "Controller": {
+ "Configuration": {
+ "ModelAsset": {
+ "assetId": {
+ "guid": "{E65E9ED3-3E38-5ABA-9E22-95E34DA4C3AE}",
+ "subId": 280178048
+ },
+ "assetHint": "objects/plane.azmodel"
+ },
+ "LodOverride": 255
+ }
+ }
+ },
+ "Component_[1525720357937234014]": {
+ "$type": "EditorMaterialComponent",
+ "Id": 1525720357937234014,
+ "materialSlotsByLodEnabled": true
+ },
+ "Component_[16568998871680422442]": {
+ "$type": "EditorDisabledCompositionComponent",
+ "Id": 16568998871680422442
+ },
+ "Component_[2147751093058990131]": {
+ "$type": "EditorInspectorComponent",
+ "Id": 2147751093058990131,
+ "ComponentOrderEntryArray": [
+ {
+ "ComponentId": 3266761149114817871
+ },
+ {
+ "ComponentId": 13888244442459268363,
+ "SortIndex": 1
+ },
+ {
+ "ComponentId": 1525720357937234014,
+ "SortIndex": 2
+ }
+ ]
+ },
+ "Component_[3266761149114817871]": {
+ "$type": "{27F1E1A1-8D9D-4C3B-BD3A-AFB9762449C0} TransformComponent",
+ "Id": 3266761149114817871,
+ "Parent Entity": "ContainerEntity",
+ "Transform Data": {
+ "Scale": [
+ 100.0,
+ 100.0,
+ 100.0
+ ],
+ "UniformScale": 100.0
+ }
+ },
+ "Component_[4625895382416898670]": {
+ "$type": "EditorVisibilityComponent",
+ "Id": 4625895382416898670
+ },
+ "Component_[4856699190357614535]": {
+ "$type": "EditorLockComponent",
+ "Id": 4856699190357614535
+ },
+ "Component_[6466465153982575739]": {
+ "$type": "EditorOnlyEntityComponent",
+ "Id": 6466465153982575739
+ }
+ }
+ },
+ "Entity_[282757803856]": {
+ "Id": "Entity_[282757803856]",
+ "Name": "Cube",
+ "Components": {
+ "Component_[11189870094752260272]": {
+ "$type": "EditorEntitySortComponent",
+ "Id": 11189870094752260272
+ },
+ "Component_[11909086967677513257]": {
+ "$type": "AZ::Render::EditorMeshComponent",
+ "Id": 11909086967677513257,
+ "Controller": {
+ "Configuration": {
+ "ModelAsset": {
+ "assetId": {
+ "guid": "{593006BE-FE73-5A4B-A0A6-06C02EFFE458}",
+ "subId": 285127096
+ },
+ "loadBehavior": "PreLoad",
+ "assetHint": "objects/cube.azmodel"
+ },
+ "LodOverride": 255
+ }
+ }
+ },
+ "Component_[1443341568598731610]": {
+ "$type": "EditorVisibilityComponent",
+ "Id": 1443341568598731610
+ },
+ "Component_[18339772707807258951]": {
+ "$type": "{27F1E1A1-8D9D-4C3B-BD3A-AFB9762449C0} TransformComponent",
+ "Id": 18339772707807258951,
+ "Parent Entity": "ContainerEntity",
+ "Transform Data": {
+ "Translate": [
+ 0.6083869934082031,
+ 3.137901782989502,
+ 0.5876787900924683
+ ]
+ }
+ },
+ "Component_[2447207272572065708]": {
+ "$type": "EditorEntityIconComponent",
+ "Id": 2447207272572065708
+ },
+ "Component_[3281906807632213471]": {
+ "$type": "SelectionComponent",
+ "Id": 3281906807632213471
+ },
+ "Component_[3412442673858204671]": {
+ "$type": "EditorPendingCompositionComponent",
+ "Id": 3412442673858204671
+ },
+ "Component_[5382641380294287889]": {
+ "$type": "EditorDisabledCompositionComponent",
+ "Id": 5382641380294287889
+ },
+ "Component_[7221534636342494619]": {
+ "$type": "EditorInspectorComponent",
+ "Id": 7221534636342494619,
+ "ComponentOrderEntryArray": [
+ {
+ "ComponentId": 18339772707807258951
+ },
+ {
+ "ComponentId": 11909086967677513257,
+ "SortIndex": 1
+ }
+ ]
+ },
+ "Component_[7701217952253676487]": {
+ "$type": "EditorLockComponent",
+ "Id": 7701217952253676487
+ },
+ "Component_[7758436981023123121]": {
+ "$type": "EditorOnlyEntityComponent",
+ "Id": 7758436981023123121
+ }
+ }
+ },
+ "Entity_[372196702077]": {
+ "Id": "Entity_[372196702077]",
+ "Name": "Bunny",
+ "Components": {
+ "Component_[11345914745205508221]": {
+ "$type": "EditorEntityIconComponent",
+ "Id": 11345914745205508221
+ },
+ "Component_[11507863983962969790]": {
+ "$type": "EditorMaterialComponent",
+ "Id": 11507863983962969790,
+ "materialSlotsByLodEnabled": true
+ },
+ "Component_[1342998773562921470]": {
+ "$type": "EditorPendingCompositionComponent",
+ "Id": 1342998773562921470
+ },
+ "Component_[14975835087235718844]": {
+ "$type": "EditorInspectorComponent",
+ "Id": 14975835087235718844,
+ "ComponentOrderEntryArray": [
+ {
+ "ComponentId": 5012565883129470759
+ },
+ {
+ "ComponentId": 7975043234993822905,
+ "SortIndex": 1
+ },
+ {
+ "ComponentId": 11507863983962969790,
+ "SortIndex": 2
+ }
+ ]
+ },
+ "Component_[16460806723667032929]": {
+ "$type": "EditorOnlyEntityComponent",
+ "Id": 16460806723667032929
+ },
+ "Component_[18225690044585951363]": {
+ "$type": "EditorLockComponent",
+ "Id": 18225690044585951363
+ },
+ "Component_[18314752491697618927]": {
+ "$type": "EditorEntitySortComponent",
+ "Id": 18314752491697618927
+ },
+ "Component_[2431610550789583502]": {
+ "$type": "EditorVisibilityComponent",
+ "Id": 2431610550789583502
+ },
+ "Component_[5012565883129470759]": {
+ "$type": "{27F1E1A1-8D9D-4C3B-BD3A-AFB9762449C0} TransformComponent",
+ "Id": 5012565883129470759,
+ "Parent Entity": "ContainerEntity",
+ "Transform Data": {
+ "Translate": [
+ 0.0,
+ 0.0,
+ 0.20401419699192047
+ ]
+ }
+ },
+ "Component_[7975043234993822905]": {
+ "$type": "AZ::Render::EditorMeshComponent",
+ "Id": 7975043234993822905,
+ "Controller": {
+ "Configuration": {
+ "ModelAsset": {
+ "assetId": {
+ "guid": "{0C6BBB76-4EC2-583A-B8C6-1A4C4FD1FE9D}",
+ "subId": 283109893
+ },
+ "assetHint": "objects/bunny.azmodel"
+ },
+ "LodOverride": 255
+ }
+ }
+ },
+ "Component_[8510666363380501112]": {
+ "$type": "SelectionComponent",
+ "Id": 8510666363380501112
+ },
+ "Component_[9639060480533776634]": {
+ "$type": "EditorDisabledCompositionComponent",
+ "Id": 9639060480533776634
+ }
+ }
+ },
+ "Entity_[670308843764]": {
+ "Id": "Entity_[670308843764]",
+ "Name": "Camera1",
+ "Components": {
+ "Component_[12951260100632682169]": {
+ "$type": "GenericComponentWrapper",
+ "Id": 12951260100632682169,
+ "m_template": {
+ "$type": "FlyCameraInputComponent"
+ }
+ },
+ "Component_[14180723329646459524]": {
+ "$type": "EditorPendingCompositionComponent",
+ "Id": 14180723329646459524
+ },
+ "Component_[14996469885773917977]": {
+ "$type": "{27F1E1A1-8D9D-4C3B-BD3A-AFB9762449C0} TransformComponent",
+ "Id": 14996469885773917977,
+ "Parent Entity": "ContainerEntity",
+ "Transform Data": {
+ "Translate": [
+ 4.563776969909668,
+ 0.7667046785354614,
+ 3.000542640686035
+ ],
+ "Rotate": [
+ -9.740042686462402,
+ -20.20942497253418,
+ 63.57760238647461
+ ]
+ }
+ },
+ "Component_[17638492356673689530]": {
+ "$type": "EditorInspectorComponent",
+ "Id": 17638492356673689530
+ },
+ "Component_[2421853983468750254]": {
+ "$type": "{CA11DA46-29FF-4083-B5F6-E02C3A8C3A3D} EditorCameraComponent",
+ "Id": 2421853983468750254,
+ "Controller": {
+ "Configuration": {
+ "Field of View": 90.00020599365234,
+ "EditorEntityId": 666013876468
+ }
+ }
+ },
+ "Component_[2572028619185965684]": {
+ "$type": "EditorEntityIconComponent",
+ "Id": 2572028619185965684
+ },
+ "Component_[2782900516907042776]": {
+ "$type": "EditorDisabledCompositionComponent",
+ "Id": 2782900516907042776
+ },
+ "Component_[2849166119438883669]": {
+ "$type": "EditorVisibilityComponent",
+ "Id": 2849166119438883669
+ },
+ "Component_[4618311795498613781]": {
+ "$type": "EditorOnlyEntityComponent",
+ "Id": 4618311795498613781
+ },
+ "Component_[5402004894214413002]": {
+ "$type": "EditorEntitySortComponent",
+ "Id": 5402004894214413002
+ },
+ "Component_[6111028576371006514]": {
+ "$type": "SelectionComponent",
+ "Id": 6111028576371006514
+ },
+ "Component_[8203141294643544464]": {
+ "$type": "EditorLockComponent",
+ "Id": 8203141294643544464
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/tags.txt b/AutomatedTesting/Levels/Graphics/ShadowTest/tags.txt
similarity index 100%
rename from AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/tags.txt
rename to AutomatedTesting/Levels/Graphics/ShadowTest/tags.txt
diff --git a/AutomatedTesting/Levels/Sponza/Sponza.prefab b/AutomatedTesting/Levels/Graphics/Sponza/Sponza.prefab
similarity index 100%
rename from AutomatedTesting/Levels/Sponza/Sponza.prefab
rename to AutomatedTesting/Levels/Graphics/Sponza/Sponza.prefab
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/tags.txt b/AutomatedTesting/Levels/Graphics/Sponza/tags.txt
similarity index 100%
rename from AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/tags.txt
rename to AutomatedTesting/Levels/Graphics/Sponza/tags.txt
diff --git a/AutomatedTesting/Levels/macbeth_shaderballs/macbeth_shaderballs.prefab b/AutomatedTesting/Levels/Graphics/macbeth_shaderballs/macbeth_shaderballs.prefab
similarity index 100%
rename from AutomatedTesting/Levels/macbeth_shaderballs/macbeth_shaderballs.prefab
rename to AutomatedTesting/Levels/Graphics/macbeth_shaderballs/macbeth_shaderballs.prefab
diff --git a/AutomatedTesting/Levels/Sponza/tags.txt b/AutomatedTesting/Levels/Graphics/macbeth_shaderballs/tags.txt
similarity index 100%
rename from AutomatedTesting/Levels/Sponza/tags.txt
rename to AutomatedTesting/Levels/Graphics/macbeth_shaderballs/tags.txt
diff --git a/AutomatedTesting/Levels/Physics/Joints_HingeNoLimitsConstrained/Joints_HingeNoLimitsConstrained.ly b/AutomatedTesting/Levels/Physics/Joints_HingeNoLimitsConstrained/Joints_HingeNoLimitsConstrained.ly
index 9babf84ba4..18b503bab5 100644
--- a/AutomatedTesting/Levels/Physics/Joints_HingeNoLimitsConstrained/Joints_HingeNoLimitsConstrained.ly
+++ b/AutomatedTesting/Levels/Physics/Joints_HingeNoLimitsConstrained/Joints_HingeNoLimitsConstrained.ly
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:60276c07b45a734e4f71d695278167ea61e884f8b513906168c9642078ad5954
-size 6045
+oid sha256:0d004c329a7c5044a8fe05b6dbbf9b19de29c60acec75f13fdbc344a55aab8c7
+size 6404
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/0/0.ly b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/0/0.ly
new file mode 100644
index 0000000000..b908d29eab
--- /dev/null
+++ b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/0/0.ly
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e89946c224d2e765931e8ba8e33133ac24651af321a404016d9a9ea8c323db6c
+size 8563
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/0/filelist.xml b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/0/filelist.xml
new file mode 100644
index 0000000000..bb94b733b3
--- /dev/null
+++ b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/0/filelist.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/0/level.pak b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/0/level.pak
new file mode 100644
index 0000000000..614e41c4b2
--- /dev/null
+++ b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/0/level.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2a46437ba86135567d87d43af0c4d499bf3cfe321721dbaf6e3cda8e49427ee1
+size 40212
diff --git a/AutomatedTesting/Levels/macbeth_shaderballs/tags.txt b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/0/tags.txt
similarity index 100%
rename from AutomatedTesting/Levels/macbeth_shaderballs/tags.txt
rename to AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/0/tags.txt
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/terraintexture.pak b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/0/terraintexture.pak
similarity index 100%
rename from AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/terraintexture.pak
rename to AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/0/terraintexture.pak
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/1/1.ly b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/1/1.ly
new file mode 100644
index 0000000000..216426fc2a
--- /dev/null
+++ b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/1/1.ly
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:95996da3902d885060e700c573d13144bab246b930dfeedaed6066c13c879b11
+size 8737
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/1/filelist.xml b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/1/filelist.xml
new file mode 100644
index 0000000000..5f5b4928fc
--- /dev/null
+++ b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/1/filelist.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/1/level.pak b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/1/level.pak
new file mode 100644
index 0000000000..d920770374
--- /dev/null
+++ b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/1/level.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:894dfd4ab92aa4d1d6003aebf82cf7ff854a8b3684e010234e073879f88b64e5
+size 40210
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/1/tags.txt b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/1/tags.txt
new file mode 100644
index 0000000000..0d6c1880e7
--- /dev/null
+++ b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/1/tags.txt
@@ -0,0 +1,12 @@
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/terraintexture.pak b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/1/terraintexture.pak
similarity index 100%
rename from AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/terraintexture.pak
rename to AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/1/terraintexture.pak
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/C15425935_Material_LibraryUpdatedAcrossLevels_0.ly b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/C15425935_Material_LibraryUpdatedAcrossLevels_0.ly
deleted file mode 100644
index a5953fc44b..0000000000
--- a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/C15425935_Material_LibraryUpdatedAcrossLevels_0.ly
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:969b77ee335d2a04524a27c765dd2f2bdee048661f3ff7be0766ba69d18d5842
-size 10409
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/filelist.xml b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/filelist.xml
deleted file mode 100644
index 9a78b1bfd5..0000000000
--- a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/filelist.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/level.pak b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/level.pak
deleted file mode 100644
index 8e6b3b29cb..0000000000
--- a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/level.pak
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:547d7fdfcd959569b69d78eb6f63c7c19fc90840d69ca2d46eca8a3e82b8db75
-size 39337
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/leveldata/Environment.xml b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/leveldata/Environment.xml
deleted file mode 100644
index 4ba36f66ae..0000000000
--- a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/leveldata/Environment.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/leveldata/GameTokens.xml b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/leveldata/GameTokens.xml
deleted file mode 100644
index 668a4583bd..0000000000
--- a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/leveldata/GameTokens.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/leveldata/TerrainTexture.xml b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/leveldata/TerrainTexture.xml
deleted file mode 100644
index f43df05b22..0000000000
--- a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/leveldata/TerrainTexture.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/leveldata/TimeOfDay.xml b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/leveldata/TimeOfDay.xml
deleted file mode 100644
index 456d609b8a..0000000000
--- a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/leveldata/TimeOfDay.xml
+++ /dev/null
@@ -1,356 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/leveldata/VegetationMap.dat b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/leveldata/VegetationMap.dat
deleted file mode 100644
index dce5631cd0..0000000000
--- a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/leveldata/VegetationMap.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0e6a5435c928079b27796f6b202bbc2623e7e454244ddc099a3cadf33b7cb9e9
-size 63
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/terrain/terrain.pxheightfield b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/terrain/terrain.pxheightfield
deleted file mode 100644
index 011356e521..0000000000
--- a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_0/terrain/terrain.pxheightfield
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:19096597087688692a225c1955f73d22c46354995fca1df8dff107a90c2f17a2
-size 4202594
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/C15425935_Material_LibraryUpdatedAcrossLevels_1.ly b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/C15425935_Material_LibraryUpdatedAcrossLevels_1.ly
deleted file mode 100644
index 9f48f08a1b..0000000000
--- a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/C15425935_Material_LibraryUpdatedAcrossLevels_1.ly
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:29f752c141514cb4b50aea07e6b63de5c8f43149ddac37722e9ddb8b5f4a667d
-size 9495
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/filelist.xml b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/filelist.xml
deleted file mode 100644
index 9a78b1bfd5..0000000000
--- a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/filelist.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/level.pak b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/level.pak
deleted file mode 100644
index 8e6b3b29cb..0000000000
--- a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/level.pak
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:547d7fdfcd959569b69d78eb6f63c7c19fc90840d69ca2d46eca8a3e82b8db75
-size 39337
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/leveldata/Environment.xml b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/leveldata/Environment.xml
deleted file mode 100644
index 4ba36f66ae..0000000000
--- a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/leveldata/Environment.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/leveldata/GameTokens.xml b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/leveldata/GameTokens.xml
deleted file mode 100644
index 668a4583bd..0000000000
--- a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/leveldata/GameTokens.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/leveldata/TerrainTexture.xml b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/leveldata/TerrainTexture.xml
deleted file mode 100644
index f43df05b22..0000000000
--- a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/leveldata/TerrainTexture.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/leveldata/TimeOfDay.xml b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/leveldata/TimeOfDay.xml
deleted file mode 100644
index 456d609b8a..0000000000
--- a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/leveldata/TimeOfDay.xml
+++ /dev/null
@@ -1,356 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/leveldata/VegetationMap.dat b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/leveldata/VegetationMap.dat
deleted file mode 100644
index dce5631cd0..0000000000
--- a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/leveldata/VegetationMap.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0e6a5435c928079b27796f6b202bbc2623e7e454244ddc099a3cadf33b7cb9e9
-size 63
diff --git a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/terrain/terrain.pxheightfield b/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/terrain/terrain.pxheightfield
deleted file mode 100644
index 011356e521..0000000000
--- a/AutomatedTesting/Levels/Physics/Material_LibraryUpdatedAcrossLevels/C15425935_Material_LibraryUpdatedAcrossLevels_1/terrain/terrain.pxheightfield
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:19096597087688692a225c1955f73d22c46354995fca1df8dff107a90c2f17a2
-size 4202594
diff --git a/AutomatedTesting/Levels/Physics/RigidBody_KinematicModeWorks/RigidBody_KinematicModeWorks.ly b/AutomatedTesting/Levels/Physics/RigidBody_KinematicModeWorks/RigidBody_KinematicModeWorks.ly
index d6052ffa7c..a4b28a9e96 100644
--- a/AutomatedTesting/Levels/Physics/RigidBody_KinematicModeWorks/RigidBody_KinematicModeWorks.ly
+++ b/AutomatedTesting/Levels/Physics/RigidBody_KinematicModeWorks/RigidBody_KinematicModeWorks.ly
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:cb97ada674d123c67d7a32eb65e81fa66472cf51f748054c4a4297649f2a0f40
-size 5568
+oid sha256:0f645243fb623258ed4b063c5a18ea414560496f97d7234782ca97884e0ed8f0
+size 5961
diff --git a/AutomatedTesting/Levels/TestDependenciesLevel/LevelData/Environment.xml b/AutomatedTesting/Levels/TestDependenciesLevel/LevelData/Environment.xml
deleted file mode 100644
index 4ba36f66ae..0000000000
--- a/AutomatedTesting/Levels/TestDependenciesLevel/LevelData/Environment.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/AutomatedTesting/Levels/TestDependenciesLevel/LevelData/TerrainTexture.xml b/AutomatedTesting/Levels/TestDependenciesLevel/LevelData/TerrainTexture.xml
deleted file mode 100644
index f43df05b22..0000000000
--- a/AutomatedTesting/Levels/TestDependenciesLevel/LevelData/TerrainTexture.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/AutomatedTesting/Levels/TestDependenciesLevel/LevelData/TimeOfDay.xml b/AutomatedTesting/Levels/TestDependenciesLevel/LevelData/TimeOfDay.xml
deleted file mode 100644
index c5b404318e..0000000000
--- a/AutomatedTesting/Levels/TestDependenciesLevel/LevelData/TimeOfDay.xml
+++ /dev/null
@@ -1,356 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/AutomatedTesting/Levels/TestDependenciesLevel/LevelData/VegetationMap.dat b/AutomatedTesting/Levels/TestDependenciesLevel/LevelData/VegetationMap.dat
deleted file mode 100644
index dce5631cd0..0000000000
--- a/AutomatedTesting/Levels/TestDependenciesLevel/LevelData/VegetationMap.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0e6a5435c928079b27796f6b202bbc2623e7e454244ddc099a3cadf33b7cb9e9
-size 63
diff --git a/AutomatedTesting/Levels/TestDependenciesLevel/TerrainTexture.pak b/AutomatedTesting/Levels/TestDependenciesLevel/TerrainTexture.pak
deleted file mode 100644
index fe3604a050..0000000000
--- a/AutomatedTesting/Levels/TestDependenciesLevel/TerrainTexture.pak
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8739c76e681f900923b900c9df0ef75cf421d39cabb54650c4b9ad19b6a76d85
-size 22
diff --git a/AutomatedTesting/Levels/TestDependenciesLevel/TestDependenciesLevel.ly b/AutomatedTesting/Levels/TestDependenciesLevel/TestDependenciesLevel.ly
deleted file mode 100644
index 95cc91cd6b..0000000000
--- a/AutomatedTesting/Levels/TestDependenciesLevel/TestDependenciesLevel.ly
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:825828fe7c183e765315f933a8b1eb25283739d34d62cb84c34e2dcb56591d6e
-size 12415
diff --git a/AutomatedTesting/Levels/TestDependenciesLevel/TestDependenciesLevel.prefab b/AutomatedTesting/Levels/TestDependenciesLevel/TestDependenciesLevel.prefab
new file mode 100644
index 0000000000..cf30cb178c
--- /dev/null
+++ b/AutomatedTesting/Levels/TestDependenciesLevel/TestDependenciesLevel.prefab
@@ -0,0 +1,555 @@
+{
+ "ContainerEntity": {
+ "Id": "Entity_[1146574390643]",
+ "Name": "Level",
+ "Components": {
+ "Component_[10641544592923449938]": {
+ "$type": "EditorInspectorComponent",
+ "Id": 10641544592923449938
+ },
+ "Component_[12039882709170782873]": {
+ "$type": "EditorOnlyEntityComponent",
+ "Id": 12039882709170782873
+ },
+ "Component_[12265484671603697631]": {
+ "$type": "EditorPendingCompositionComponent",
+ "Id": 12265484671603697631
+ },
+ "Component_[14126657869720434043]": {
+ "$type": "EditorEntitySortComponent",
+ "Id": 14126657869720434043,
+ "Child Entity Order": [
+ "Entity_[1176639161715]"
+ ]
+ },
+ "Component_[15230859088967841193]": {
+ "$type": "{27F1E1A1-8D9D-4C3B-BD3A-AFB9762449C0} TransformComponent",
+ "Id": 15230859088967841193,
+ "Parent Entity": ""
+ },
+ "Component_[16239496886950819870]": {
+ "$type": "EditorDisabledCompositionComponent",
+ "Id": 16239496886950819870
+ },
+ "Component_[5688118765544765547]": {
+ "$type": "EditorEntityIconComponent",
+ "Id": 5688118765544765547
+ },
+ "Component_[6545738857812235305]": {
+ "$type": "SelectionComponent",
+ "Id": 6545738857812235305
+ },
+ "Component_[7247035804068349658]": {
+ "$type": "EditorPrefabComponent",
+ "Id": 7247035804068349658
+ },
+ "Component_[9307224322037797205]": {
+ "$type": "EditorLockComponent",
+ "Id": 9307224322037797205
+ },
+ "Component_[9562516168917670048]": {
+ "$type": "EditorVisibilityComponent",
+ "Id": 9562516168917670048
+ }
+ }
+ },
+ "Entities": {
+ "Entity_[1155164325235]": {
+ "Id": "Entity_[1155164325235]",
+ "Name": "Sun",
+ "Components": {
+ "Component_[10440557478882592717]": {
+ "$type": "SelectionComponent",
+ "Id": 10440557478882592717
+ },
+ "Component_[13620450453324765907]": {
+ "$type": "EditorLockComponent",
+ "Id": 13620450453324765907
+ },
+ "Component_[2134313378593666258]": {
+ "$type": "EditorInspectorComponent",
+ "Id": 2134313378593666258
+ },
+ "Component_[234010807770404186]": {
+ "$type": "EditorVisibilityComponent",
+ "Id": 234010807770404186
+ },
+ "Component_[2970359110423865725]": {
+ "$type": "EditorEntityIconComponent",
+ "Id": 2970359110423865725
+ },
+ "Component_[3722854130373041803]": {
+ "$type": "EditorOnlyEntityComponent",
+ "Id": 3722854130373041803
+ },
+ "Component_[5992533738676323195]": {
+ "$type": "EditorDisabledCompositionComponent",
+ "Id": 5992533738676323195
+ },
+ "Component_[7378860763541895402]": {
+ "$type": "AZ::Render::EditorDirectionalLightComponent",
+ "Id": 7378860763541895402,
+ "Controller": {
+ "Configuration": {
+ "Intensity": 1.0,
+ "CameraEntityId": "",
+ "ShadowFilterMethod": 1
+ }
+ }
+ },
+ "Component_[7892834440890947578]": {
+ "$type": "{27F1E1A1-8D9D-4C3B-BD3A-AFB9762449C0} TransformComponent",
+ "Id": 7892834440890947578,
+ "Parent Entity": "Entity_[1176639161715]",
+ "Transform Data": {
+ "Translate": [
+ 0.0,
+ 0.0,
+ 13.487043380737305
+ ],
+ "Rotate": [
+ -76.13099670410156,
+ -0.847000002861023,
+ -15.8100004196167
+ ]
+ }
+ },
+ "Component_[8599729549570828259]": {
+ "$type": "EditorEntitySortComponent",
+ "Id": 8599729549570828259
+ },
+ "Component_[952797371922080273]": {
+ "$type": "EditorPendingCompositionComponent",
+ "Id": 952797371922080273
+ }
+ }
+ },
+ "Entity_[1159459292531]": {
+ "Id": "Entity_[1159459292531]",
+ "Name": "Ground",
+ "Components": {
+ "Component_[11701138785793981042]": {
+ "$type": "SelectionComponent",
+ "Id": 11701138785793981042
+ },
+ "Component_[12260880513256986252]": {
+ "$type": "EditorEntityIconComponent",
+ "Id": 12260880513256986252
+ },
+ "Component_[13711420870643673468]": {
+ "$type": "EditorDisabledCompositionComponent",
+ "Id": 13711420870643673468
+ },
+ "Component_[138002849734991713]": {
+ "$type": "EditorOnlyEntityComponent",
+ "Id": 138002849734991713
+ },
+ "Component_[16578565737331764849]": {
+ "$type": "{27F1E1A1-8D9D-4C3B-BD3A-AFB9762449C0} TransformComponent",
+ "Id": 16578565737331764849,
+ "Parent Entity": "Entity_[1176639161715]"
+ },
+ "Component_[16919232076966545697]": {
+ "$type": "EditorInspectorComponent",
+ "Id": 16919232076966545697
+ },
+ "Component_[5182430712893438093]": {
+ "$type": "EditorMaterialComponent",
+ "Id": 5182430712893438093
+ },
+ "Component_[5675108321710651991]": {
+ "$type": "AZ::Render::EditorMeshComponent",
+ "Id": 5675108321710651991,
+ "Controller": {
+ "Configuration": {
+ "ModelAsset": {
+ "assetId": {
+ "guid": "{0CD745C0-6AA8-569A-A68A-73A3270986C4}",
+ "subId": 277889906
+ },
+ "assetHint": "objects/groudplane/groundplane_512x512m.azmodel"
+ }
+ }
+ }
+ },
+ "Component_[5681893399601237518]": {
+ "$type": "EditorEntitySortComponent",
+ "Id": 5681893399601237518
+ },
+ "Component_[592692962543397545]": {
+ "$type": "EditorPendingCompositionComponent",
+ "Id": 592692962543397545
+ },
+ "Component_[7090012899106946164]": {
+ "$type": "EditorLockComponent",
+ "Id": 7090012899106946164
+ },
+ "Component_[9410832619875640998]": {
+ "$type": "EditorVisibilityComponent",
+ "Id": 9410832619875640998
+ }
+ }
+ },
+ "Entity_[1163754259827]": {
+ "Id": "Entity_[1163754259827]",
+ "Name": "Camera",
+ "Components": {
+ "Component_[11895140916889160460]": {
+ "$type": "EditorEntityIconComponent",
+ "Id": 11895140916889160460
+ },
+ "Component_[16880285896855930892]": {
+ "$type": "{CA11DA46-29FF-4083-B5F6-E02C3A8C3A3D} EditorCameraComponent",
+ "Id": 16880285896855930892,
+ "Controller": {
+ "Configuration": {
+ "Field of View": 55.0,
+ "EditorEntityId": 3342481886060234850
+ }
+ }
+ },
+ "Component_[17187464423780271193]": {
+ "$type": "EditorLockComponent",
+ "Id": 17187464423780271193
+ },
+ "Component_[17495696818315413311]": {
+ "$type": "EditorEntitySortComponent",
+ "Id": 17495696818315413311
+ },
+ "Component_[18086214374043522055]": {
+ "$type": "{27F1E1A1-8D9D-4C3B-BD3A-AFB9762449C0} TransformComponent",
+ "Id": 18086214374043522055,
+ "Parent Entity": "Entity_[1176639161715]",
+ "Transform Data": {
+ "Translate": [
+ -2.3000001907348633,
+ -3.9368600845336914,
+ 1.0
+ ],
+ "Rotate": [
+ -2.050307512283325,
+ 1.9552897214889526,
+ -43.623355865478516
+ ]
+ }
+ },
+ "Component_[18387556550380114975]": {
+ "$type": "SelectionComponent",
+ "Id": 18387556550380114975
+ },
+ "Component_[2654521436129313160]": {
+ "$type": "EditorVisibilityComponent",
+ "Id": 2654521436129313160
+ },
+ "Component_[5265045084611556958]": {
+ "$type": "EditorDisabledCompositionComponent",
+ "Id": 5265045084611556958
+ },
+ "Component_[7169798125182238623]": {
+ "$type": "EditorPendingCompositionComponent",
+ "Id": 7169798125182238623
+ },
+ "Component_[7255796294953281766]": {
+ "$type": "GenericComponentWrapper",
+ "Id": 7255796294953281766,
+ "m_template": {
+ "$type": "FlyCameraInputComponent"
+ }
+ },
+ "Component_[8866210352157164042]": {
+ "$type": "EditorInspectorComponent",
+ "Id": 8866210352157164042
+ },
+ "Component_[9129253381063760879]": {
+ "$type": "EditorOnlyEntityComponent",
+ "Id": 9129253381063760879
+ }
+ }
+ },
+ "Entity_[1168049227123]": {
+ "Id": "Entity_[1168049227123]",
+ "Name": "Grid",
+ "Components": {
+ "Component_[11443347433215807130]": {
+ "$type": "EditorEntityIconComponent",
+ "Id": 11443347433215807130
+ },
+ "Component_[11779275529534764488]": {
+ "$type": "SelectionComponent",
+ "Id": 11779275529534764488
+ },
+ "Component_[14249419413039427459]": {
+ "$type": "EditorInspectorComponent",
+ "Id": 14249419413039427459
+ },
+ "Component_[15448581635946161318]": {
+ "$type": "AZ::Render::EditorGridComponent",
+ "Id": 15448581635946161318,
+ "Controller": {
+ "Configuration": {
+ "primarySpacing": 4.0,
+ "primaryColor": [
+ 0.501960813999176,
+ 0.501960813999176,
+ 0.501960813999176
+ ],
+ "secondarySpacing": 0.5,
+ "secondaryColor": [
+ 0.250980406999588,
+ 0.250980406999588,
+ 0.250980406999588
+ ]
+ }
+ }
+ },
+ "Component_[1843303322527297409]": {
+ "$type": "EditorDisabledCompositionComponent",
+ "Id": 1843303322527297409
+ },
+ "Component_[380249072065273654]": {
+ "$type": "{27F1E1A1-8D9D-4C3B-BD3A-AFB9762449C0} TransformComponent",
+ "Id": 380249072065273654,
+ "Parent Entity": "Entity_[1176639161715]"
+ },
+ "Component_[7476660583684339787]": {
+ "$type": "EditorPendingCompositionComponent",
+ "Id": 7476660583684339787
+ },
+ "Component_[7557626501215118375]": {
+ "$type": "EditorEntitySortComponent",
+ "Id": 7557626501215118375
+ },
+ "Component_[7984048488947365511]": {
+ "$type": "EditorVisibilityComponent",
+ "Id": 7984048488947365511
+ },
+ "Component_[8118181039276487398]": {
+ "$type": "EditorOnlyEntityComponent",
+ "Id": 8118181039276487398
+ },
+ "Component_[9189909764215270515]": {
+ "$type": "EditorLockComponent",
+ "Id": 9189909764215270515
+ }
+ }
+ },
+ "Entity_[1172344194419]": {
+ "Id": "Entity_[1172344194419]",
+ "Name": "Shader Ball",
+ "Components": {
+ "Component_[10789351944715265527]": {
+ "$type": "EditorOnlyEntityComponent",
+ "Id": 10789351944715265527
+ },
+ "Component_[12037033284781049225]": {
+ "$type": "EditorEntitySortComponent",
+ "Id": 12037033284781049225
+ },
+ "Component_[13759153306105970079]": {
+ "$type": "EditorPendingCompositionComponent",
+ "Id": 13759153306105970079
+ },
+ "Component_[14135560884830586279]": {
+ "$type": "EditorInspectorComponent",
+ "Id": 14135560884830586279
+ },
+ "Component_[16247165675903986673]": {
+ "$type": "EditorVisibilityComponent",
+ "Id": 16247165675903986673
+ },
+ "Component_[18082433625958885247]": {
+ "$type": "EditorDisabledCompositionComponent",
+ "Id": 18082433625958885247
+ },
+ "Component_[6472623349872972660]": {
+ "$type": "{27F1E1A1-8D9D-4C3B-BD3A-AFB9762449C0} TransformComponent",
+ "Id": 6472623349872972660,
+ "Parent Entity": "Entity_[1176639161715]",
+ "Transform Data": {
+ "Rotate": [
+ 0.0,
+ 0.10000000149011612,
+ 180.0
+ ]
+ }
+ },
+ "Component_[6495255223970673916]": {
+ "$type": "AZ::Render::EditorMeshComponent",
+ "Id": 6495255223970673916,
+ "Controller": {
+ "Configuration": {
+ "ModelAsset": {
+ "assetId": {
+ "guid": "{FD340C30-755C-5911-92A3-19A3F7A77931}",
+ "subId": 281415304
+ },
+ "assetHint": "objects/shaderball/shaderball_default_1m.azmodel"
+ }
+ }
+ }
+ },
+ "Component_[8056625192494070973]": {
+ "$type": "SelectionComponent",
+ "Id": 8056625192494070973
+ },
+ "Component_[8550141614185782969]": {
+ "$type": "EditorEntityIconComponent",
+ "Id": 8550141614185782969
+ },
+ "Component_[9439770997198325425]": {
+ "$type": "EditorLockComponent",
+ "Id": 9439770997198325425
+ }
+ }
+ },
+ "Entity_[1176639161715]": {
+ "Id": "Entity_[1176639161715]",
+ "Name": "Atom Default Environment",
+ "Components": {
+ "Component_[10757302973393310045]": {
+ "$type": "{27F1E1A1-8D9D-4C3B-BD3A-AFB9762449C0} TransformComponent",
+ "Id": 10757302973393310045,
+ "Parent Entity": "Entity_[1146574390643]"
+ },
+ "Component_[14505817420424255464]": {
+ "$type": "EditorInspectorComponent",
+ "Id": 14505817420424255464,
+ "ComponentOrderEntryArray": [
+ {
+ "ComponentId": 10757302973393310045
+ }
+ ]
+ },
+ "Component_[14988041764659020032]": {
+ "$type": "EditorLockComponent",
+ "Id": 14988041764659020032
+ },
+ "Component_[15808690248755038124]": {
+ "$type": "SelectionComponent",
+ "Id": 15808690248755038124
+ },
+ "Component_[15900837685796817138]": {
+ "$type": "EditorVisibilityComponent",
+ "Id": 15900837685796817138
+ },
+ "Component_[3298767348226484884]": {
+ "$type": "EditorOnlyEntityComponent",
+ "Id": 3298767348226484884
+ },
+ "Component_[4076975109609220594]": {
+ "$type": "EditorPendingCompositionComponent",
+ "Id": 4076975109609220594
+ },
+ "Component_[5679760548946028854]": {
+ "$type": "EditorDisabledCompositionComponent",
+ "Id": 5679760548946028854
+ },
+ "Component_[5855590796136709437]": {
+ "$type": "EditorEntitySortComponent",
+ "Id": 5855590796136709437,
+ "Child Entity Order": [
+ "Entity_[1155164325235]",
+ "Entity_[1180934129011]",
+ "Entity_[1172344194419]",
+ "Entity_[1168049227123]",
+ "Entity_[1163754259827]",
+ "Entity_[1159459292531]"
+ ]
+ },
+ "Component_[9277695270015777859]": {
+ "$type": "EditorEntityIconComponent",
+ "Id": 9277695270015777859
+ }
+ }
+ },
+ "Entity_[1180934129011]": {
+ "Id": "Entity_[1180934129011]",
+ "Name": "Global Sky",
+ "Components": {
+ "Component_[11231930600558681245]": {
+ "$type": "AZ::Render::EditorHDRiSkyboxComponent",
+ "Id": 11231930600558681245,
+ "Controller": {
+ "Configuration": {
+ "CubemapAsset": {
+ "assetId": {
+ "guid": "{215E47FD-D181-5832-B1AB-91673ABF6399}",
+ "subId": 1000
+ },
+ "assetHint": "lightingpresets/highcontrast/goegap_4k_skyboxcm.exr.streamingimage"
+ }
+ }
+ }
+ },
+ "Component_[11980494120202836095]": {
+ "$type": "SelectionComponent",
+ "Id": 11980494120202836095
+ },
+ "Component_[1428633914413949476]": {
+ "$type": "EditorLockComponent",
+ "Id": 1428633914413949476
+ },
+ "Component_[14936200426671614999]": {
+ "$type": "AZ::Render::EditorImageBasedLightComponent",
+ "Id": 14936200426671614999,
+ "Controller": {
+ "Configuration": {
+ "diffuseImageAsset": {
+ "assetId": {
+ "guid": "{3FD09945-D0F2-55C8-B9AF-B2FD421FE3BE}",
+ "subId": 3000
+ },
+ "assetHint": "lightingpresets/highcontrast/goegap_4k_iblglobalcm_ibldiffuse.exr.streamingimage"
+ },
+ "specularImageAsset": {
+ "assetId": {
+ "guid": "{3FD09945-D0F2-55C8-B9AF-B2FD421FE3BE}",
+ "subId": 2000
+ },
+ "assetHint": "lightingpresets/highcontrast/goegap_4k_iblglobalcm_iblspecular.exr.streamingimage"
+ }
+ }
+ }
+ },
+ "Component_[14994774102579326069]": {
+ "$type": "EditorDisabledCompositionComponent",
+ "Id": 14994774102579326069
+ },
+ "Component_[15417479889044493340]": {
+ "$type": "EditorPendingCompositionComponent",
+ "Id": 15417479889044493340
+ },
+ "Component_[15826613364991382688]": {
+ "$type": "EditorEntitySortComponent",
+ "Id": 15826613364991382688
+ },
+ "Component_[1665003113283562343]": {
+ "$type": "EditorOnlyEntityComponent",
+ "Id": 1665003113283562343
+ },
+ "Component_[3704934735944502280]": {
+ "$type": "EditorEntityIconComponent",
+ "Id": 3704934735944502280
+ },
+ "Component_[5698542331457326479]": {
+ "$type": "EditorVisibilityComponent",
+ "Id": 5698542331457326479
+ },
+ "Component_[6644513399057217122]": {
+ "$type": "{27F1E1A1-8D9D-4C3B-BD3A-AFB9762449C0} TransformComponent",
+ "Id": 6644513399057217122,
+ "Parent Entity": "Entity_[1176639161715]"
+ },
+ "Component_[931091830724002070]": {
+ "$type": "EditorInspectorComponent",
+ "Id": 931091830724002070
+ }
+ }
+ }
+ },
+ "Instances": {
+ "Instance_[425258647110]": {
+ "Source": "assets/simple_pot_fbx.procprefab"
+ }
+ }
+}
\ No newline at end of file
diff --git a/AutomatedTesting/Levels/TestDependenciesLevel/filelist.xml b/AutomatedTesting/Levels/TestDependenciesLevel/filelist.xml
deleted file mode 100644
index b5164a4aee..0000000000
--- a/AutomatedTesting/Levels/TestDependenciesLevel/filelist.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/AutomatedTesting/Levels/TestDependenciesLevel/level.pak b/AutomatedTesting/Levels/TestDependenciesLevel/level.pak
deleted file mode 100644
index dfba7fb4e3..0000000000
--- a/AutomatedTesting/Levels/TestDependenciesLevel/level.pak
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2611b691998640a0e802461f47b5b876f6832fbece62d34cc25da53e135e1c38
-size 44525
diff --git a/AutomatedTesting/Materials/DefaultPBRTransparent.material b/AutomatedTesting/Materials/DefaultPBRTransparent.material
index 7c8aa6cf94..a7000d5371 100644
--- a/AutomatedTesting/Materials/DefaultPBRTransparent.material
+++ b/AutomatedTesting/Materials/DefaultPBRTransparent.material
@@ -2,7 +2,7 @@
"description": "",
"materialType": "Materials/Types/StandardPBR.materialtype",
"parentMaterial": "Materials/Presets/PBR/default_grid.material",
- "propertyLayoutVersion": 3,
+ "materialTypeVersion": 3,
"properties": {
"opacity": {
"mode": "Blended"
diff --git a/AutomatedTesting/Materials/basic_grey.material b/AutomatedTesting/Materials/basic_grey.material
index 0b890db4c6..6ecc1e029a 100644
--- a/AutomatedTesting/Materials/basic_grey.material
+++ b/AutomatedTesting/Materials/basic_grey.material
@@ -1,6 +1,6 @@
{
"materialType": "Materials/Types/StandardPBR.materialtype",
- "propertyLayoutVersion": 1,
+ "materialTypeVersion": 1,
"properties": {
"baseColor": {
"color": [ 0.18, 0.18, 0.18 ],
diff --git a/AutomatedTesting/Objects/MorphTargets/DisplayWrinkleMaskBlendValues.material b/AutomatedTesting/Objects/MorphTargets/DisplayWrinkleMaskBlendValues.material
index 878b3ac39f..52c323b454 100644
--- a/AutomatedTesting/Objects/MorphTargets/DisplayWrinkleMaskBlendValues.material
+++ b/AutomatedTesting/Objects/MorphTargets/DisplayWrinkleMaskBlendValues.material
@@ -2,7 +2,7 @@
"description": "",
"materialType": "Materials/Types/Skin.materialtype",
"parentMaterial": "",
- "propertyLayoutVersion": 3,
+ "materialTypeVersion": 3,
"properties": {
"wrinkleLayers": {
"count": 3,
diff --git a/AutomatedTesting/Objects/ShaderBall_simple.fbx b/AutomatedTesting/Objects/ShaderBall_simple.fbx
new file mode 100644
index 0000000000..50b7b8f44d
--- /dev/null
+++ b/AutomatedTesting/Objects/ShaderBall_simple.fbx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f5f7a86a693878c10f91783955cc72535bf7d7c495163087a4c1982f228d27f0
+size 2145248
diff --git a/AutomatedTesting/Objects/bunny.fbx b/AutomatedTesting/Objects/bunny.fbx
new file mode 100644
index 0000000000..f0a16349f7
--- /dev/null
+++ b/AutomatedTesting/Objects/bunny.fbx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ef71257b240a7e704731806f8cd4b966af5d3c60f22881f9c6a6320180ee71a4
+size 2496384
diff --git a/AutomatedTesting/Objects/cone.fbx b/AutomatedTesting/Objects/cone.fbx
new file mode 100644
index 0000000000..081b8b119d
--- /dev/null
+++ b/AutomatedTesting/Objects/cone.fbx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:531b6473b314259504ab595e4983838b5866035ef4d70cedaf4cc9c7d9e65c3a
+size 24512
diff --git a/AutomatedTesting/Objects/cube.fbx b/AutomatedTesting/Objects/cube.fbx
new file mode 100644
index 0000000000..616c7b4ff3
--- /dev/null
+++ b/AutomatedTesting/Objects/cube.fbx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e32877eab35459499c73ff093df898f93bf3e7379de25eef6875d693be9bec81
+size 18015
diff --git a/AutomatedTesting/Objects/cylinder.fbx b/AutomatedTesting/Objects/cylinder.fbx
new file mode 100644
index 0000000000..18ab200b4c
--- /dev/null
+++ b/AutomatedTesting/Objects/cylinder.fbx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2949a50eec079a7d43a1d92e056c580ef625ee39e00e91cc25318319e37dcd3b
+size 115689
diff --git a/AutomatedTesting/Objects/plane.fbx b/AutomatedTesting/Objects/plane.fbx
new file mode 100644
index 0000000000..b274bfa282
--- /dev/null
+++ b/AutomatedTesting/Objects/plane.fbx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0a1f8d75dcd85e8b4aa57f6c0c81af0300ff96915ba3c2b591095c215d5e1d8c
+size 12072
diff --git a/AutomatedTesting/Objects/suzanne.fbx b/AutomatedTesting/Objects/suzanne.fbx
new file mode 100644
index 0000000000..171a6d21e9
--- /dev/null
+++ b/AutomatedTesting/Objects/suzanne.fbx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e3bcfac5de831c269dac58e7d73d1dc61eb8d9f6d8a241f5c029537b6bcdf166
+size 1088304
diff --git a/AutomatedTesting/TestAssets/test_chunks_builder.py b/AutomatedTesting/TestAssets/test_chunks_builder.py
index 2fd1ad9db9..b18902a34c 100755
--- a/AutomatedTesting/TestAssets/test_chunks_builder.py
+++ b/AutomatedTesting/TestAssets/test_chunks_builder.py
@@ -28,7 +28,7 @@ def update_manifest(scene):
meshGroup = sceneManifest.add_mesh_group(chunkName)
meshGroup['id'] = '{' + str(uuid.uuid5(uuid.NAMESPACE_DNS, scene.sourceFilename + chunkName)) + '}'
sceneManifest.mesh_group_add_comment(meshGroup, 'auto generated by test_chunks_builder')
- sceneManifest.mesh_group_set_origin(meshGroup, None, 0, 0, 0, 1.0)
+ sceneManifest.mesh_group_add_advanced_coordinate_system(meshGroup)
for meshIndex in range(len(chunkNameList)):
if (activeMeshIndex == meshIndex):
sceneManifest.mesh_group_select_node(meshGroup, chunkNameList[meshIndex])
diff --git a/AutomatedTesting/project.json b/AutomatedTesting/project.json
index fc14645d2b..5a4b303570 100644
--- a/AutomatedTesting/project.json
+++ b/AutomatedTesting/project.json
@@ -5,12 +5,15 @@
"modules": [],
"project_id": "{D816AFAE-4BB7-4FEF-88F4-E2B786DCF29D}",
"android_settings": {
- "package_name": "com.lumberyard.yourgame",
+ "package_name": "org.o3de.automatedtesting",
"version_number": 1,
"version_name": "1.0.0",
"orientation": "landscape"
},
"engine": "o3de",
"display_name": "AutomatedTesting",
- "icon_path": "preview.png"
-}
+ "icon_path": "preview.png",
+ "external_subdirectories": [
+ "Gem"
+ ]
+}
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f61a9561e8..c81581fe0f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -49,21 +49,56 @@ include(cmake/O3DEJson.cmake)
# Subdirectory processing
################################################################################
-function(add_engine_json_external_subdirectories)
- read_json_external_subdirs(external_subdis ${LY_ROOT_FOLDER}/engine.json)
- foreach(external_subdir ${external_subdis})
- file(REAL_PATH ${external_subdir} real_external_subdir BASE_DIRECTORY ${LY_ROOT_FOLDER})
- list(APPEND engine_external_subdirs ${real_external_subdir})
- endforeach()
+# this function is building up the LY_EXTERNAL_SUBDIRS global property
+function(add_engine_gem_json_external_subdirectories gem_path)
+ set(gem_json_path ${gem_path}/gem.json)
+ if(EXISTS ${gem_json_path})
+ read_json_external_subdirs(gem_external_subdirs ${gem_path}/gem.json)
+ foreach(gem_external_subdir ${gem_external_subdirs})
+ file(REAL_PATH ${gem_external_subdir} real_external_subdir BASE_DIRECTORY ${gem_path})
+ set_property(GLOBAL APPEND PROPERTY LY_EXTERNAL_SUBDIRS ${real_external_subdir})
+ add_engine_gem_json_external_subdirectories(${real_external_subdir})
+ endforeach()
+ endif()
+endfunction()
- set_property(GLOBAL APPEND PROPERTY LY_EXTERNAL_SUBDIRS ${engine_external_subdirs})
+function(add_engine_json_external_subdirectories)
+ read_json_external_subdirs(engine_external_subdirs ${LY_ROOT_FOLDER}/engine.json)
+ foreach(engine_external_subdir ${engine_external_subdirs})
+ file(REAL_PATH ${engine_external_subdir} real_external_subdir BASE_DIRECTORY ${LY_ROOT_FOLDER})
+ set_property(GLOBAL APPEND PROPERTY LY_EXTERNAL_SUBDIRS ${real_external_subdir})
+ add_engine_gem_json_external_subdirectories(${real_external_subdir})
+ endforeach()
+endfunction()
+
+function(add_subdirectory_on_externalsubdirs)
+ get_property(external_subdirs GLOBAL PROPERTY LY_EXTERNAL_SUBDIRS)
+ list(APPEND LY_EXTERNAL_SUBDIRS ${external_subdirs})
+ # Loop over the additional external subdirectories and invoke add_subdirectory on them
+ foreach(external_directory ${LY_EXTERNAL_SUBDIRS})
+ # Hash the external_directory name and append it to the Binary Directory section of add_subdirectory
+ # This is to deal with potential situations where multiple external directories has the same last directory name
+ # For example if D:/Company1/RayTracingGem and F:/Company2/Path/RayTracingGem were both added as a subdirectory
+ file(REAL_PATH ${external_directory} full_directory_path)
+ string(SHA256 full_directory_hash ${full_directory_path})
+ # Truncate the full_directory_hash down to 8 characters to avoid hitting the Windows 260 character path limit
+ # when the external subdirectory contains relative paths of significant length
+ string(SUBSTRING ${full_directory_hash} 0 8 full_directory_hash)
+ # Use the last directory as the suffix path to use for the Binary Directory
+ get_filename_component(directory_name ${external_directory} NAME)
+ add_subdirectory(${external_directory} ${CMAKE_BINARY_DIR}/External/${directory_name}-${full_directory_hash})
+ endforeach()
endfunction()
# Add the projects first so the Launcher can find them
include(cmake/Projects.cmake)
if(NOT INSTALLED_ENGINE)
-
+ # Add external subdirectories listed in the engine.json. LY_EXTERNAL_SUBDIRS is a cache variable so the user can add extra
+ # external subdirectories. This should go before adding the rest of the targets so the targets are availbe to the launcher.
+ add_engine_json_external_subdirectories()
+ add_subdirectory_on_externalsubdirs()
+
# Add the rest of the targets
add_subdirectory(Assets)
add_subdirectory(Code)
@@ -73,31 +108,11 @@ if(NOT INSTALLED_ENGINE)
add_subdirectory(Templates)
add_subdirectory(Tools)
- # Add external subdirectories listed in the engine.json. LY_EXTERNAL_SUBDIRS is a cache variable so the user can add extra
- # external subdirectories
- add_engine_json_external_subdirectories()
else()
ly_find_o3de_packages()
+ add_subdirectory_on_externalsubdirs()
endif()
-get_property(external_subdirs GLOBAL PROPERTY LY_EXTERNAL_SUBDIRS)
-list(APPEND LY_EXTERNAL_SUBDIRS ${external_subdirs})
-
-# Loop over the additional external subdirectories and invoke add_subdirectory on them
-foreach(external_directory ${LY_EXTERNAL_SUBDIRS})
- # Hash the extenal_directory name and append it to the Binary Directory section of add_subdirectory
- # This is to deal with potential situations where multiple external directories has the same last directory name
- # For example if D:/Company1/RayTracingGem and F:/Company2/Path/RayTracingGem were both added as a subdirectory
- file(REAL_PATH ${external_directory} full_directory_path)
- string(SHA256 full_directory_hash ${full_directory_path})
- # Truncate the full_directory_hash down to 8 characters to avoid hitting the Windows 260 character path limit
- # when the external subdirectory contains relative paths of significant length
- string(SUBSTRING ${full_directory_hash} 0 8 full_directory_hash)
- # Use the last directory as the suffix path to use for the Binary Directory
- get_filename_component(directory_name ${external_directory} NAME)
- add_subdirectory(${external_directory} ${CMAKE_BINARY_DIR}/External/${directory_name}-${full_directory_hash})
-endforeach()
-
################################################################################
# Post-processing
################################################################################
diff --git a/Code/Editor/AssetImporter/AssetImporterManager/AssetImporterManager.cpp b/Code/Editor/AssetImporter/AssetImporterManager/AssetImporterManager.cpp
index baa287e47f..73c3d6f9ed 100644
--- a/Code/Editor/AssetImporter/AssetImporterManager/AssetImporterManager.cpp
+++ b/Code/Editor/AssetImporter/AssetImporterManager/AssetImporterManager.cpp
@@ -191,6 +191,7 @@ void AssetImporterManager::OnBrowseDestinationFilePath(QLineEdit* destinationLin
fileDialog.setViewMode(QFileDialog::List);
fileDialog.setWindowModality(Qt::WindowModality::ApplicationModal);
fileDialog.setWindowTitle(tr("Select import destination"));
+ fileDialog.setFileMode(QFileDialog::Directory);
QSettings settings;
QString currentDestination = settings.value(AssetImporterManagerPrivate::g_selectDestinationFilesPath).toString();
diff --git a/Code/Editor/AzAssetBrowser/AzAssetBrowserWindow.cpp b/Code/Editor/AzAssetBrowser/AzAssetBrowserWindow.cpp
index bcaaa02b67..36e08982a7 100644
--- a/Code/Editor/AzAssetBrowser/AzAssetBrowserWindow.cpp
+++ b/Code/Editor/AzAssetBrowser/AzAssetBrowserWindow.cpp
@@ -17,6 +17,7 @@
#include
#include
#include
+#include
// AzQtComponents
#include
@@ -31,6 +32,15 @@ AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
AZ_CVAR_EXTERNED(bool, ed_useNewAssetBrowserTableView);
+namespace AzToolsFramework
+{
+ namespace AssetBrowser
+ {
+ static constexpr const char* CollapseAllIcon = "Assets/Editor/Icons/AssetBrowser/Collapse_All.svg";
+ static constexpr const char* MenuIcon = ":/Menu/menu.svg";
+ } // namespace AssetBrowser
+} // namespace AzToolsFramework
+
class ListenerForShowAssetEditorEvent
: public QObject
, private AzToolsFramework::EditorEvents::Bus::Handler
@@ -83,10 +93,24 @@ AzAssetBrowserWindow::AzAssetBrowserWindow(QWidget* parent)
m_ui->m_assetBrowserTableViewWidget->setVisible(false);
m_ui->m_toggleDisplayViewBtn->setVisible(false);
m_ui->m_searchWidget->SetFilterInputInterval(AZStd::chrono::milliseconds(250));
+
+ m_assetBrowserModel->SetFilterModel(m_filterModel.data());
+
+ m_ui->m_collapseAllButton->setAutoRaise(true); // hover highlight
+ m_ui->m_collapseAllButton->setIcon(QIcon(AzAssetBrowser::CollapseAllIcon));
+
+ connect(
+ m_ui->m_collapseAllButton, &QToolButton::clicked, this,
+ [this]()
+ {
+ m_ui->m_assetBrowserTreeViewWidget->collapseAll();
+ });
+
if (ed_useNewAssetBrowserTableView)
{
m_ui->m_toggleDisplayViewBtn->setVisible(true);
- m_ui->m_toggleDisplayViewBtn->setIcon(QIcon(":/Menu/menu.svg"));
+ m_ui->m_toggleDisplayViewBtn->setAutoRaise(true);
+ m_ui->m_toggleDisplayViewBtn->setIcon(QIcon(AzAssetBrowser::MenuIcon));
m_tableModel->setFilterRole(Qt::DisplayRole);
m_tableModel->setSourceModel(m_filterModel.data());
diff --git a/Code/Editor/AzAssetBrowser/AzAssetBrowserWindow.ui b/Code/Editor/AzAssetBrowser/AzAssetBrowserWindow.ui
index a345438aed..2cc7c57ccd 100644
--- a/Code/Editor/AzAssetBrowser/AzAssetBrowserWindow.ui
+++ b/Code/Editor/AzAssetBrowser/AzAssetBrowserWindow.ui
@@ -72,6 +72,22 @@
+ -
+
+
+ Qt::ClickFocus
+
+
+
+
+
+ 3
+
+
+
+
+
+
-
@@ -143,15 +159,6 @@
true
-
- false
-
-
- true
-
-
- false
-
-
diff --git a/Code/Editor/BaseLibrary.cpp b/Code/Editor/BaseLibrary.cpp
deleted file mode 100644
index 15742bd254..0000000000
--- a/Code/Editor/BaseLibrary.cpp
+++ /dev/null
@@ -1,232 +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 "EditorDefs.h"
-
-#include "BaseLibrary.h"
-#include "BaseLibraryItem.h"
-#include "Include/IBaseLibraryManager.h"
-#include
-#include
-
-//////////////////////////////////////////////////////////////////////////
-// CBaseLibrary implementation.
-//////////////////////////////////////////////////////////////////////////
-CBaseLibrary::CBaseLibrary(IBaseLibraryManager* pManager)
- : m_pManager(pManager)
- , m_bModified(false)
- , m_bLevelLib(false)
- , m_bNewLibrary(true)
-{
-}
-
-//////////////////////////////////////////////////////////////////////////
-CBaseLibrary::~CBaseLibrary()
-{
- m_items.clear();
-}
-
-//////////////////////////////////////////////////////////////////////////
-IBaseLibraryManager* CBaseLibrary::GetManager()
-{
- return m_pManager;
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibrary::RemoveAllItems()
-{
- AddRef();
- for (int i = 0; i < m_items.size(); i++)
- {
- // Unregister item in case it was registered. It is ok if it wasn't. This is still safe to call.
- m_pManager->UnregisterItem(m_items[i]);
- // Clear library item.
- m_items[i]->m_library = nullptr;
- }
- m_items.clear();
- Release();
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibrary::SetName(const QString& name)
-{
- //the fullname of the items in the library will be changed due to library's name change
- //so we need unregistered them and register them after their name changed.
- for (int i = 0; i < m_items.size(); i++)
- {
- m_pManager->UnregisterItem(m_items[i]);
- }
-
- m_name = name;
-
- for (int i = 0; i < m_items.size(); i++)
- {
- m_pManager->RegisterItem(m_items[i]);
- }
-
- SetModified();
-}
-
-//////////////////////////////////////////////////////////////////////////
-const QString& CBaseLibrary::GetName() const
-{
- return m_name;
-}
-
-//////////////////////////////////////////////////////////////////////////
-bool CBaseLibrary::Save()
-{
- return true;
-}
-
-//////////////////////////////////////////////////////////////////////////
-bool CBaseLibrary::Load(const QString& filename)
-{
- m_filename = filename;
- SetModified(false);
- m_bNewLibrary = false;
- return true;
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibrary::SetModified(bool bModified)
-{
- if (bModified != m_bModified)
- {
- m_bModified = bModified;
- emit Modified(bModified);
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibrary::AddItem(IDataBaseItem* item, bool bRegister)
-{
-
- CBaseLibraryItem* pLibItem = (CBaseLibraryItem*)item;
- // Check if item is already assigned to this library.
- if (pLibItem->m_library != this)
- {
- pLibItem->m_library = this;
- m_items.push_back(pLibItem);
- SetModified();
- if (bRegister)
- {
- m_pManager->RegisterItem(pLibItem);
- }
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-IDataBaseItem* CBaseLibrary::GetItem(int index)
-{
- assert(index >= 0 && index < m_items.size());
- return m_items[index];
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibrary::RemoveItem(IDataBaseItem* item)
-{
-
- for (int i = 0; i < m_items.size(); i++)
- {
- if (m_items[i] == item)
- {
- // Unregister item in case it was registered. It is ok if it wasn't. This is still safe to call.
- m_pManager->UnregisterItem(m_items[i]);
- m_items.erase(m_items.begin() + i);
- SetModified();
- break;
- }
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-IDataBaseItem* CBaseLibrary::FindItem(const QString& name)
-{
- for (int i = 0; i < m_items.size(); i++)
- {
- if (QString::compare(m_items[i]->GetName(), name, Qt::CaseInsensitive) == 0)
- {
- return m_items[i];
- }
- }
- return nullptr;
-}
-
-bool CBaseLibrary::AddLibraryToSourceControl(const QString& fullPathName) const
-{
- IEditor* pEditor = GetIEditor();
- IFileUtil* pFileUtil = pEditor ? pEditor->GetFileUtil() : nullptr;
- if (pFileUtil)
- {
- return pFileUtil->CheckoutFile(fullPathName.toUtf8().data(), nullptr);
- }
-
- return false;
-}
-
-bool CBaseLibrary::SaveLibrary(const char* name, bool saveEmptyLibrary)
-{
- assert(name != nullptr);
- if (name == nullptr)
- {
- CryFatalError("The library you are attempting to save has no name specified.");
- return false;
- }
-
- QString fileName(GetFilename());
- if (fileName.isEmpty() && !saveEmptyLibrary)
- {
- return false;
- }
-
- fileName = Path::GamePathToFullPath(fileName);
-
- XmlNodeRef root = GetIEditor()->GetSystem()->CreateXmlNode(name);
- Serialize(root, false);
- bool bRes = XmlHelpers::SaveXmlNode(GetIEditor()->GetFileUtil(), root, fileName.toUtf8().data());
- if (m_bNewLibrary)
- {
- AddLibraryToSourceControl(fileName);
- m_bNewLibrary = false;
- }
- if (!bRes)
- {
- QByteArray filenameUtf8 = fileName.toUtf8();
- AZStd::string strMessage = AZStd::string::format("The file %s is read-only and the save of the library couldn't be performed. Try to remove the \"read-only\" flag or check-out the file and then try again.", filenameUtf8.data());
- CryMessageBox(strMessage.c_str(), "Saving Error", MB_OK | MB_ICONWARNING);
- }
- return bRes;
-}
-
-//CONFETTI BEGIN
-void CBaseLibrary::ChangeItemOrder(CBaseLibraryItem* item, unsigned int newLocation)
-{
- std::vector<_smart_ptr > temp;
- for (unsigned int i = 0; i < m_items.size(); i++)
- {
- if (i == newLocation)
- {
- temp.push_back(_smart_ptr(item));
- }
- if (m_items[i] != item)
- {
- temp.push_back(m_items[i]);
- }
- }
- // If newLocation is greater than the original size, append the item to end of the list
- if (newLocation >= m_items.size())
- {
- temp.push_back(_smart_ptr(item));
- }
- m_items = temp;
-}
-//CONFETTI END
-
-#include
diff --git a/Code/Editor/BaseLibrary.h b/Code/Editor/BaseLibrary.h
deleted file mode 100644
index 55079d3fde..0000000000
--- a/Code/Editor/BaseLibrary.h
+++ /dev/null
@@ -1,129 +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_EDITOR_BASELIBRARY_H
-#define CRYINCLUDE_EDITOR_BASELIBRARY_H
-#pragma once
-
-#if !defined(Q_MOC_RUN)
-#include "Include/IDataBaseLibrary.h"
-#include "Include/IBaseLibraryManager.h"
-#include "Include/EditorCoreAPI.h"
-#include "Util/TRefCountBase.h"
-
-#include
-#endif
-
-// Ensure we don't try to dllimport when moc includes us
-#if defined(Q_MOC_BUILD) && !defined(EDITOR_CORE)
-#define EDITOR_CORE
-#endif
-
-/** This a base class for all Libraries used by Editor.
-*/
-class EDITOR_CORE_API CBaseLibrary
- : public QObject
- , public TRefCountBase
-{
- Q_OBJECT
-
-public:
- explicit CBaseLibrary(IBaseLibraryManager* pManager);
- ~CBaseLibrary();
-
- //! Set library name.
- virtual void SetName(const QString& name);
- //! Get library name.
- const QString& GetName() const override;
-
- //! Set new filename for this library.
- virtual bool SetFilename(const QString& filename, [[maybe_unused]] bool checkForUnique = true) { m_filename = filename.toLower(); return true; };
- const QString& GetFilename() const override { return m_filename; };
-
- bool Save() override = 0;
- bool Load(const QString& filename) override = 0;
- void Serialize(XmlNodeRef& node, bool bLoading) override = 0;
-
- //! Mark library as modified.
- void SetModified(bool bModified = true) override;
- //! Check if library was modified.
- bool IsModified() const override { return m_bModified; };
-
- //////////////////////////////////////////////////////////////////////////
- // Working with items.
- //////////////////////////////////////////////////////////////////////////
- //! Add a new prototype to library.
- void AddItem(IDataBaseItem* item, bool bRegister = true) override;
- //! Get number of known prototypes.
- int GetItemCount() const override { return static_cast(m_items.size()); }
- //! Get prototype by index.
- IDataBaseItem* GetItem(int index) override;
-
- //! Delete item by pointer of item.
- void RemoveItem(IDataBaseItem* item) override;
-
- //! Delete all items from library.
- void RemoveAllItems() override;
-
- //! Find library item by name.
- //! Using linear search.
- IDataBaseItem* FindItem(const QString& name) override;
-
- //! Check if this library is local level library.
- bool IsLevelLibrary() const override { return m_bLevelLib; };
-
- //! Set library to be level library.
- void SetLevelLibrary(bool bEnable) override { m_bLevelLib = bEnable; };
-
- //////////////////////////////////////////////////////////////////////////
- //! Return manager for this library.
- IBaseLibraryManager* GetManager() override;
-
- // Saves the library with the main tag defined by the parameter name
- bool SaveLibrary(const char* name, bool saveEmptyLibrary = false);
-
- //CONFETTI BEGIN
- // Used to change the library item order
- void ChangeItemOrder(CBaseLibraryItem* item, unsigned int newLocation) override;
- //CONFETTI END
-
-signals:
- void Modified(bool bModified);
-
-private:
- // Add the library to the source control
- bool AddLibraryToSourceControl(const QString& fullPathName) const;
-
-protected:
-
- //! Name of the library.
- QString m_name;
- //! Filename of the library.
- QString m_filename;
-
- //! Flag set when library was modified.
- bool m_bModified;
-
- // Flag set when the library is just created and it's not yet saved for the first time.
- bool m_bNewLibrary;
-
- //! Level library is saved within the level .ly file and is local for this level.
- bool m_bLevelLib;
-
- //////////////////////////////////////////////////////////////////////////
- // Manager.
- IBaseLibraryManager* m_pManager;
-
- AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
- // Array of all our library items.
- std::vector<_smart_ptr > m_items;
- AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
-};
-
-#endif // CRYINCLUDE_EDITOR_BASELIBRARY_H
diff --git a/Code/Editor/BaseLibraryItem.cpp b/Code/Editor/BaseLibraryItem.cpp
deleted file mode 100644
index e3788bc3e4..0000000000
--- a/Code/Editor/BaseLibraryItem.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 "EditorDefs.h"
-
-#include "BaseLibraryItem.h"
-#include "BaseLibrary.h"
-#include "BaseLibraryManager.h"
-#include "Undo/IUndoObject.h"
-
-#include
-
-//undo object for multi-changes inside library item. such as set all variables to default values.
-//For example: change particle emitter shape will lead to multiple variable changes
-class CUndoBaseLibraryItem
- : public IUndoObject
-{
-public:
- CUndoBaseLibraryItem(IBaseLibraryManager *libMgr, CBaseLibraryItem* libItem, bool ignoreChild)
- : m_libMgr(libMgr)
- {
- assert(libItem);
- assert(libMgr);
-
- m_itemPath = libItem->GetFullName();
-
- //serialize the lib item to undo
- m_undoCtx.node = GetIEditor()->GetSystem()->CreateXmlNode("Undo");
- m_undoCtx.bIgnoreChilds = ignoreChild;
- m_undoCtx.bLoading = false; //saving
- m_undoCtx.bUniqName = false; //don't generate new name
- m_undoCtx.bCopyPaste = true; //so it won't override guid
- m_undoCtx.bUndo = true;
- libItem->Serialize(m_undoCtx);
-
- //evaluate size
- XmlString xmlStr = m_undoCtx.node->getXML();
- m_size = sizeof(CUndoBaseLibraryItem);
- m_size += static_cast(xmlStr.GetAllocatedMemory());
- m_size += m_itemPath.length();
- }
-
-
-protected:
- int GetSize() override
- {
- return m_size;
- }
-
- void Undo(bool bUndo) override
- {
- //find the libItem
- IDataBaseItem *libItem = m_libMgr->FindItemByName(m_itemPath);
- if (libItem == nullptr)
- {
- //the undo stack is not reliable any more..
- assert(false);
- return;
- }
-
- //save for redo
- if (bUndo)
- {
- m_redoCtx.node = GetIEditor()->GetSystem()->CreateXmlNode("Redo");
- m_redoCtx.bIgnoreChilds = m_undoCtx.bIgnoreChilds;
- m_redoCtx.bLoading = false; //saving
- m_redoCtx.bUniqName = false;
- m_redoCtx.bCopyPaste = true;
- m_redoCtx.bUndo = true;
- libItem->Serialize(m_redoCtx);
-
- XmlString xmlStr = m_redoCtx.node->getXML();
- m_size += static_cast(xmlStr.GetAllocatedMemory());
- }
-
- //load previous saved data
- m_undoCtx.bLoading = true;
- libItem->Serialize(m_undoCtx);
- }
-
- void Redo() override
- {
- //find the libItem
- IDataBaseItem *libItem = m_libMgr->FindItemByName(m_itemPath);
- if (libItem == nullptr || m_redoCtx.node == nullptr)
- {
- //the undo stack is not reliable any more..
- assert(false);
- return;
- }
-
- m_redoCtx.bLoading = true;
- libItem->Serialize(m_redoCtx);
- }
-
-private:
- QString m_itemPath;
- IDataBaseItem::SerializeContext m_undoCtx; //saved before operation
- IDataBaseItem::SerializeContext m_redoCtx; //saved after operation so used for redo
- IBaseLibraryManager* m_libMgr;
- int m_size;
-};
-
-//////////////////////////////////////////////////////////////////////////
-// CBaseLibraryItem implementation.
-//////////////////////////////////////////////////////////////////////////
-CBaseLibraryItem::CBaseLibraryItem()
-{
- m_library = nullptr;
- GenerateId();
- m_bModified = false;
-}
-
-CBaseLibraryItem::~CBaseLibraryItem()
-{
-}
-
-//////////////////////////////////////////////////////////////////////////
-QString CBaseLibraryItem::GetFullName() const
-{
- QString name;
- if (m_library)
- {
- name = m_library->GetName() + ".";
- }
- name += m_name;
- return name;
-}
-
-//////////////////////////////////////////////////////////////////////////
-QString CBaseLibraryItem::GetGroupName()
-{
- QString str = GetName();
- int p = str.lastIndexOf('.');
- if (p >= 0)
- {
- return str.mid(0, p);
- }
- return "";
-}
-
-//////////////////////////////////////////////////////////////////////////
-QString CBaseLibraryItem::GetShortName()
-{
- QString str = GetName();
- int p = str.lastIndexOf('.');
- if (p >= 0)
- {
- return str.mid(p + 1);
- }
- p = str.lastIndexOf('/');
- if (p >= 0)
- {
- return str.mid(p + 1);
- }
- return str;
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryItem::SetName(const QString& name)
-{
- assert(m_library);
- if (name == m_name)
- {
- return;
- }
- QString oldName = GetFullName();
- m_name = name;
- ((CBaseLibraryManager*)m_library->GetManager())->OnRenameItem(this, oldName);
-}
-
-//////////////////////////////////////////////////////////////////////////
-const QString& CBaseLibraryItem::GetName() const
-{
- return m_name;
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryItem::GenerateId()
-{
- GUID guid = AZ::Uuid::CreateRandom();
- SetGUID(guid);
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryItem::SetGUID(REFGUID guid)
-{
- if (m_library)
- {
- ((CBaseLibraryManager*)m_library->GetManager())->RegisterItem(this, guid);
- }
- m_guid = guid;
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryItem::Serialize(SerializeContext& ctx)
-{
- assert(m_library);
-
- XmlNodeRef node = ctx.node;
- if (ctx.bLoading)
- {
- QString name = m_name;
- // Loading
- node->getAttr("Name", name);
-
- if (!ctx.bUniqName)
- {
- SetName(name);
- }
- else
- {
- SetName(GetLibrary()->GetManager()->MakeUniqueItemName(name));
- }
-
- if (!ctx.bCopyPaste)
- {
- GUID guid;
- if (node->getAttr("Id", guid))
- {
- SetGUID(guid);
- }
- }
- }
- else
- {
- // Saving.
- node->setAttr("Name", m_name.toUtf8().data());
- node->setAttr("Id", m_guid);
- node->setAttr("Library", GetLibrary()->GetName().toUtf8().data());
- }
- m_bModified = false;
-}
-
-//////////////////////////////////////////////////////////////////////////
-IDataBaseLibrary* CBaseLibraryItem::GetLibrary() const
-{
- return m_library;
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryItem::SetLibrary(CBaseLibrary* pLibrary)
-{
- m_library = pLibrary;
-}
-
-//! Mark library as modified.
-void CBaseLibraryItem::SetModified(bool bModified)
-{
- m_bModified = bModified;
- if (m_bModified && m_library != nullptr)
- {
- m_library->SetModified(bModified);
- }
-}
diff --git a/Code/Editor/BaseLibraryItem.h b/Code/Editor/BaseLibraryItem.h
deleted file mode 100644
index 53cf0add2b..0000000000
--- a/Code/Editor/BaseLibraryItem.h
+++ /dev/null
@@ -1,114 +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_EDITOR_BASELIBRARYITEM_H
-#define CRYINCLUDE_EDITOR_BASELIBRARYITEM_H
-#pragma once
-
-#include "Include/IDataBaseItem.h"
-#include "BaseLibrary.h"
-
-#include
-
-class CBaseLibrary;
-
-//////////////////////////////////////////////////////////////////////////
-AZ_PUSH_DISABLE_DLL_EXPORT_BASECLASS_WARNING
-/** Base class for all items contained in BaseLibraray.
-*/
-class EDITOR_CORE_API CBaseLibraryItem
- : public TRefCountBase
-{
- AZ_POP_DISABLE_DLL_EXPORT_BASECLASS_WARNING
-public:
- CBaseLibraryItem();
- ~CBaseLibraryItem();
-
- //! Set item name.
- //! Its virtual, in case you want to override it in derrived item.
- virtual void SetName(const QString& name);
- //! Get item name.
- const QString& GetName() const;
-
- //! Get full item name, including name of library.
- //! Name formed by adding dot after name of library
- //! eg. library Pickup and item PickupRL form full item name: "Pickups.PickupRL".
- QString GetFullName() const;
-
- //! Get only nameof group from prototype.
- QString GetGroupName();
- //! Get short name of prototype without group.
- QString GetShortName();
-
- //! Return Library this item are contained in.
- //! Item can only be at one library.
- IDataBaseLibrary* GetLibrary() const;
- void SetLibrary(CBaseLibrary* pLibrary);
-
- //////////////////////////////////////////////////////////////////////////
- //! Serialize library item to archive.
- virtual void Serialize(SerializeContext& ctx);
-
- //////////////////////////////////////////////////////////////////////////
- //! Generate new unique id for this item.
- void GenerateId();
- //! Returns GUID of this material.
- const GUID& GetGUID() const { return m_guid; }
-
- //! Mark library as modified.
- void SetModified(bool bModified = true);
- //! Check if library was modified.
- bool IsModified() const { return m_bModified; };
-
- //! Returns true if the item is registered, otherwise false
- bool IsRegistered() const { return m_bRegistered; };
-
- //! Validate item for errors.
- virtual void Validate() {};
-
- //! Get number of sub childs.
- virtual int GetChildCount() const { return 0; }
- //! Get sub child by index.
- virtual CBaseLibraryItem* GetChild([[maybe_unused]] int index) const { return nullptr; }
-
-
- //////////////////////////////////////////////////////////////////////////
- //! Gathers resources by this item.
- virtual void GatherUsedResources([[maybe_unused]] CUsedResources& resources) {};
-
- //! Get if stored item is enabled
- virtual bool GetIsEnabled() { return true; };
-
-
- int IsParticleItem = -1;
-protected:
- void SetGUID(REFGUID guid);
- friend class CBaseLibrary;
- friend class CBaseLibraryManager;
- // Name of this prototype.
- QString m_name;
- AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
- //! Reference to prototype library who contains this prototype.
- _smart_ptr m_library;
- AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
-
- //! Every base library item have unique id.
- GUID m_guid;
- // True when item modified by editor.
- bool m_bModified;
- // True when item registered in manager.
- bool m_bRegistered = false;
-};
-
-Q_DECLARE_METATYPE(CBaseLibraryItem*);
-
-TYPEDEF_AUTOPTR(CBaseLibraryItem);
-
-
-#endif // CRYINCLUDE_EDITOR_BASELIBRARYITEM_H
diff --git a/Code/Editor/BaseLibraryManager.cpp b/Code/Editor/BaseLibraryManager.cpp
deleted file mode 100644
index 0e51a5238c..0000000000
--- a/Code/Editor/BaseLibraryManager.cpp
+++ /dev/null
@@ -1,822 +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 "EditorDefs.h"
-
-#include "BaseLibraryManager.h"
-
-// Editor
-#include "BaseLibraryItem.h"
-#include "ErrorReport.h"
-#include "Undo/IUndoObject.h"
-
-//////////////////////////////////////////////////////////////////////////
-// CBaseLibraryManager implementation.
-//////////////////////////////////////////////////////////////////////////
-CBaseLibraryManager::CBaseLibraryManager()
-{
- m_bUniqNameMap = false;
- m_bUniqGuidMap = true;
- GetIEditor()->RegisterNotifyListener(this);
-}
-
-//////////////////////////////////////////////////////////////////////////
-CBaseLibraryManager::~CBaseLibraryManager()
-{
- ClearAll();
- GetIEditor()->UnregisterNotifyListener(this);
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryManager::ClearAll()
-{
- // Delete all items from all libraries.
- for (int i = 0; i < m_libs.size(); i++)
- {
- m_libs[i]->RemoveAllItems();
- }
-
- // if we will not copy maps locally then destructors of the elements of
- // the map will operate on the already invalid map object
- // see:
- // CBaseLibraryManager::UnregisterItem()
- // CBaseLibraryManager::DeleteItem()
- // CMaterial::~CMaterial()
-
- ItemsGUIDMap itemsGuidMap;
- ItemsNameMap itemsNameMap;
-
- {
- AZStd::lock_guard lock(m_itemsNameMapMutex);
- std::swap(itemsGuidMap, m_itemsGuidMap);
- std::swap(itemsNameMap, m_itemsNameMap);
-
- m_libs.clear();
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-IDataBaseLibrary* CBaseLibraryManager::FindLibrary(const QString& library)
-{
- const int index = FindLibraryIndex(library);
- return index == -1 ? nullptr : m_libs[index];
-}
-
-//////////////////////////////////////////////////////////////////////////
-int CBaseLibraryManager::FindLibraryIndex(const QString& library)
-{
- QString lib = library;
- lib.replace('\\', '/');
- for (int i = 0; i < m_libs.size(); i++)
- {
- QString _lib = m_libs[i]->GetFilename();
- _lib.replace('\\', '/');
- if (QString::compare(lib, m_libs[i]->GetName(), Qt::CaseInsensitive) == 0 || QString::compare(lib, _lib, Qt::CaseInsensitive) == 0)
- {
- return i;
- }
- }
- return -1;
-}
-
-//////////////////////////////////////////////////////////////////////////
-IDataBaseItem* CBaseLibraryManager::FindItem(REFGUID guid) const
-{
- CBaseLibraryItem* pMtl = stl::find_in_map(m_itemsGuidMap, guid, nullptr);
- return pMtl;
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryManager::SplitFullItemName(const QString& fullItemName, QString& libraryName, QString& itemName)
-{
- int p;
- p = fullItemName.indexOf('.');
- if (p < 0 || !QString::compare(fullItemName.mid(p + 1), "mtl", Qt::CaseInsensitive))
- {
- libraryName = "";
- itemName = fullItemName;
- return;
- }
- libraryName = fullItemName.mid(0, p);
- itemName = fullItemName.mid(p + 1);
-}
-
-//////////////////////////////////////////////////////////////////////////
-IDataBaseItem* CBaseLibraryManager::FindItemByName(const QString& fullItemName)
-{
- AZStd::lock_guard lock(m_itemsNameMapMutex);
- return stl::find_in_map(m_itemsNameMap, fullItemName, nullptr);
-}
-
-//////////////////////////////////////////////////////////////////////////
-IDataBaseItem* CBaseLibraryManager::LoadItemByName(const QString& fullItemName)
-{
- QString libraryName, itemName;
- SplitFullItemName(fullItemName, libraryName, itemName);
-
- if (!FindLibrary(libraryName))
- {
- LoadLibrary(MakeFilename(libraryName));
- }
-
- return FindItemByName(fullItemName);
-}
-
-//////////////////////////////////////////////////////////////////////////
-IDataBaseItem* CBaseLibraryManager::FindItemByName(const char* fullItemName)
-{
- return FindItemByName(QString(fullItemName));
-}
-
-//////////////////////////////////////////////////////////////////////////
-IDataBaseItem* CBaseLibraryManager::LoadItemByName(const char* fullItemName)
-{
- return LoadItemByName(QString(fullItemName));
-}
-
-//////////////////////////////////////////////////////////////////////////
-IDataBaseItem* CBaseLibraryManager::CreateItem(IDataBaseLibrary* pLibrary)
-{
- assert(pLibrary);
-
- // Add item to this library.
- TSmartPtr pItem = MakeNewItem();
- pLibrary->AddItem(pItem);
- return pItem;
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryManager::DeleteItem(IDataBaseItem* pItem)
-{
- assert(pItem);
-
- UnregisterItem((CBaseLibraryItem*)pItem);
- if (pItem->GetLibrary())
- {
- pItem->GetLibrary()->RemoveItem(pItem);
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-IDataBaseLibrary* CBaseLibraryManager::LoadLibrary(const QString& inFilename, [[maybe_unused]] bool bReload)
-{
- if (auto lib = FindLibrary(inFilename))
- {
- return lib;
- }
-
- TSmartPtr pLib = MakeNewLibrary();
- if (!pLib->Load(MakeFilename(inFilename)))
- {
- Error(QObject::tr("Failed to Load Item Library: %1").arg(inFilename).toUtf8().data());
- return nullptr;
- }
-
- m_libs.push_back(pLib);
- return pLib;
-}
-
-//////////////////////////////////////////////////////////////////////////
-int CBaseLibraryManager::GetModifiedLibraryCount() const
-{
- int count = 0;
- for (int i = 0; i < m_libs.size(); i++)
- {
- if (m_libs[i]->IsModified())
- {
- count++;
- }
- }
- return count;
-}
-
-//////////////////////////////////////////////////////////////////////////
-IDataBaseLibrary* CBaseLibraryManager::AddLibrary(const QString& library, bool bIsLevelLibrary, bool bIsLoading)
-{
- // Make a filename from name of library.
- QString filename = library;
-
- if (filename.indexOf(".xml") == -1) // if its already a filename, we don't do anything
- {
- filename.replace(' ', '_');
- if (!bIsLevelLibrary)
- {
- filename = MakeFilename(library);
- }
- else
- {
- // if its the level library it gets saved in the level and should not be concatenated with any other file name
- filename = filename + ".xml";
- }
- }
-
- IDataBaseLibrary* pBaseLib = FindLibrary(library); //library name
- if (!pBaseLib)
- {
- pBaseLib = FindLibrary(filename); //library file name
- }
- if (pBaseLib)
- {
- return pBaseLib;
- }
-
- CBaseLibrary* lib = MakeNewLibrary();
- lib->SetName(library);
- lib->SetLevelLibrary(bIsLevelLibrary);
- lib->SetFilename(filename, !bIsLoading);
- // set modified to true, so even empty particle libraries get saved
- lib->SetModified(true);
-
- m_libs.push_back(lib);
- return lib;
-}
-
-//////////////////////////////////////////////////////////////////////////
-QString CBaseLibraryManager::MakeFilename(const QString& library)
-{
- QString filename = library;
- filename.replace(' ', '_');
- filename.replace(".xml", "");
-
- // make it contain the canonical libs path:
- Path::ConvertBackSlashToSlash(filename);
-
- QString LibsPath(GetLibsPath());
- Path::ConvertBackSlashToSlash(LibsPath);
-
- if (filename.left(LibsPath.length()).compare(LibsPath, Qt::CaseInsensitive) == 0)
- {
- filename = filename.mid(LibsPath.length());
- }
-
- return LibsPath + filename + ".xml";
-}
-
-//////////////////////////////////////////////////////////////////////////
-bool CBaseLibraryManager::IsUniqueFilename(const QString& library)
-{
- QString resultPath = MakeFilename(library);
- CCryFile xmlFile;
- // If we can find a file for the path
- return !xmlFile.Open(resultPath.toUtf8().data(), "rb");
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryManager::DeleteLibrary(const QString& library, bool forceDeleteLevel)
-{
- for (int i = 0; i < m_libs.size(); i++)
- {
- if (QString::compare(library, m_libs[i]->GetName(), Qt::CaseInsensitive) == 0)
- {
- CBaseLibrary* pLibrary = m_libs[i];
- // Check if not level library, they cannot be deleted.
- if (!pLibrary->IsLevelLibrary() || forceDeleteLevel)
- {
- for (int j = 0; j < pLibrary->GetItemCount(); j++)
- {
- UnregisterItem((CBaseLibraryItem*)pLibrary->GetItem(j));
- }
- pLibrary->RemoveAllItems();
-
- if (pLibrary->IsLevelLibrary())
- {
- m_pLevelLibrary = nullptr;
- }
- m_libs.erase(m_libs.begin() + i);
- }
- break;
- }
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-IDataBaseLibrary* CBaseLibraryManager::GetLibrary(int index) const
-{
- assert(index >= 0 && index < m_libs.size());
- return m_libs[index];
-};
-
-//////////////////////////////////////////////////////////////////////////
-IDataBaseLibrary* CBaseLibraryManager::GetLevelLibrary() const
-{
- IDataBaseLibrary* pLevelLib = nullptr;
-
- for (int i = 0; i < GetLibraryCount(); i++)
- {
- if (GetLibrary(i)->IsLevelLibrary())
- {
- pLevelLib = GetLibrary(i);
- break;
- }
- }
-
-
- return pLevelLib;
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryManager::SaveAllLibs()
-{
- for (int i = 0; i < GetLibraryCount(); i++)
- {
- // Check if library is modified.
- IDataBaseLibrary* pLibrary = GetLibrary(i);
-
- //Level library is saved when the level is saved
- if (pLibrary->IsLevelLibrary())
- {
- continue;
- }
- if (pLibrary->IsModified())
- {
- if (pLibrary->Save())
- {
- pLibrary->SetModified(false);
- }
- }
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryManager::Serialize(XmlNodeRef& node, bool bLoading)
-{
- static const char* const LEVEL_LIBRARY_TAG = "LevelLibrary";
-
- QString rootNodeName = GetRootNodeName();
- if (bLoading)
- {
- XmlNodeRef libs = node->findChild(rootNodeName.toUtf8().data());
- if (libs)
- {
- for (int i = 0; i < libs->getChildCount(); i++)
- {
- // Load only library name.
- XmlNodeRef libNode = libs->getChild(i);
- if (strcmp(libNode->getTag(), LEVEL_LIBRARY_TAG) == 0)
- {
- if (!m_pLevelLibrary)
- {
- QString libName;
- libNode->getAttr("Name", libName);
- m_pLevelLibrary = static_cast(AddLibrary(libName, true));
- }
- m_pLevelLibrary->Serialize(libNode, bLoading);
- }
- else
- {
- QString libName;
- if (libNode->getAttr("Name", libName))
- {
- // Load this library.
- if (!FindLibrary(libName))
- {
- LoadLibrary(MakeFilename(libName));
- }
- }
- }
- }
- }
- }
- else
- {
- // Save all libraries.
- XmlNodeRef libs = node->newChild(rootNodeName.toUtf8().data());
- for (int i = 0; i < GetLibraryCount(); i++)
- {
- IDataBaseLibrary* pLib = GetLibrary(i);
- if (pLib->IsLevelLibrary())
- {
- // Level libraries are saved in in level.
- XmlNodeRef libNode = libs->newChild(LEVEL_LIBRARY_TAG);
- pLib->Serialize(libNode, bLoading);
- }
- else
- {
- // Save only library name.
- XmlNodeRef libNode = libs->newChild("Library");
- libNode->setAttr("Name", pLib->GetName().toUtf8().data());
- }
- }
- SaveAllLibs();
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-QString CBaseLibraryManager::MakeUniqueItemName(const QString& srcName, const QString& libName)
-{
- // unlikely we'll ever encounter more than 16
- std::vector possibleDuplicates;
- possibleDuplicates.reserve(16);
-
- // search for strings in the database that might have a similar name (ignore case)
- IDataBaseItemEnumerator* pEnum = GetItemEnumerator();
- for (IDataBaseItem* pItem = pEnum->GetFirst(); pItem != nullptr; pItem = pEnum->GetNext())
- {
- //Check if the item is in the target library first.
- IDataBaseLibrary* itemLibrary = pItem->GetLibrary();
- QString itemLibraryName;
- if (itemLibrary)
- {
- itemLibraryName = itemLibrary->GetName();
- }
-
- // Item is not in the library so there cannot be a naming conflict.
- if (!libName.isEmpty() && !itemLibraryName.isEmpty() && itemLibraryName != libName)
- {
- continue;
- }
-
- const QString& name = pItem->GetName();
- if (name.startsWith(srcName, Qt::CaseInsensitive))
- {
- possibleDuplicates.push_back(AZStd::string(name.toUtf8().data()));
- }
- }
- pEnum->Release();
-
- if (possibleDuplicates.empty())
- {
- return srcName;
- }
-
- std::sort(possibleDuplicates.begin(), possibleDuplicates.end(), [](const AZStd::string& strOne, const AZStd::string& strTwo)
- {
- // I can assume size sorting since if the length is different, either one of the two strings doesn't
- // closely match the string we are trying to duplicate, or it's a bigger number (X1 vs X10)
- if (strOne.size() != strTwo.size())
- {
- return strOne.size() < strTwo.size();
- }
- else
- {
- return azstricmp(strOne.c_str(), strTwo.c_str()) < 0;
- }
- }
- );
-
- int num = 0;
- QString returnValue = srcName;
- while (num < possibleDuplicates.size() && QString::compare(possibleDuplicates[num].c_str(), returnValue, Qt::CaseInsensitive) == 0)
- {
- returnValue = QStringLiteral("%1%2%3").arg(srcName).arg("_").arg(num);
- ++num;
- }
-
- return returnValue;
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryManager::Validate()
-{
- IDataBaseItemEnumerator* pEnum = GetItemEnumerator();
- for (IDataBaseItem* pItem = pEnum->GetFirst(); pItem != nullptr; pItem = pEnum->GetNext())
- {
- pItem->Validate();
- }
- pEnum->Release();
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryManager::RegisterItem(CBaseLibraryItem* pItem, REFGUID newGuid)
-{
- assert(pItem);
-
- bool bNotify = false;
-
- if (m_bUniqGuidMap)
- {
- REFGUID oldGuid = pItem->GetGUID();
- if (!GuidUtil::IsEmpty(oldGuid))
- {
- m_itemsGuidMap.erase(oldGuid);
- }
- if (GuidUtil::IsEmpty(newGuid))
- {
- return;
- }
- CBaseLibraryItem* pOldItem = stl::find_in_map(m_itemsGuidMap, newGuid, nullptr);
- if (!pOldItem)
- {
- pItem->m_guid = newGuid;
- m_itemsGuidMap[newGuid] = pItem;
- pItem->m_bRegistered = true;
- bNotify = true;
- }
- else
- {
- if (pOldItem != pItem)
- {
- ReportDuplicateItem(pItem, pOldItem);
- }
- }
- }
-
- if (m_bUniqNameMap)
- {
- QString fullName = pItem->GetFullName();
- if (!pItem->GetName().isEmpty())
- {
- CBaseLibraryItem* pOldItem = static_cast(FindItemByName(fullName));
- if (!pOldItem)
- {
- AZStd::lock_guard lock(m_itemsNameMapMutex);
- m_itemsNameMap[fullName] = pItem;
- pItem->m_bRegistered = true;
- bNotify = true;
- }
- else
- {
- if (pOldItem != pItem)
- {
- ReportDuplicateItem(pItem, pOldItem);
- }
- }
- }
- }
-
- // Notify listeners.
- if (bNotify)
- {
- NotifyItemEvent(pItem, EDB_ITEM_EVENT_ADD);
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryManager::RegisterItem(CBaseLibraryItem* pItem)
-{
- assert(pItem);
-
- bool bNotify = false;
-
- if (m_bUniqGuidMap)
- {
- if (GuidUtil::IsEmpty(pItem->GetGUID()))
- {
- return;
- }
- CBaseLibraryItem* pOldItem = stl::find_in_map(m_itemsGuidMap, pItem->GetGUID(), nullptr);
- if (!pOldItem)
- {
- m_itemsGuidMap[pItem->GetGUID()] = pItem;
- pItem->m_bRegistered = true;
- bNotify = true;
- }
- else
- {
- if (pOldItem != pItem)
- {
- ReportDuplicateItem(pItem, pOldItem);
- }
- }
- }
-
- if (m_bUniqNameMap)
- {
- QString fullName = pItem->GetFullName();
- if (!fullName.isEmpty())
- {
- CBaseLibraryItem* pOldItem = static_cast(FindItemByName(fullName));
- if (!pOldItem)
- {
- AZStd::lock_guard lock(m_itemsNameMapMutex);
- m_itemsNameMap[fullName] = pItem;
- pItem->m_bRegistered = true;
- bNotify = true;
- }
- else
- {
- if (pOldItem != pItem)
- {
- ReportDuplicateItem(pItem, pOldItem);
- }
- }
- }
- }
-
- // Notify listeners.
- if (bNotify)
- {
- NotifyItemEvent(pItem, EDB_ITEM_EVENT_ADD);
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryManager::SetRegisteredFlag(CBaseLibraryItem* pItem, bool bFlag)
-{
- pItem->m_bRegistered = bFlag;
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryManager::ReportDuplicateItem(CBaseLibraryItem* pItem, CBaseLibraryItem* pOldItem)
-{
- QString sLibName;
- if (pOldItem->GetLibrary())
- {
- sLibName = pOldItem->GetLibrary()->GetName();
- }
- CErrorRecord err;
- err.pItem = pItem;
- err.error = QStringLiteral("Item %1 with duplicate GUID to loaded item %2 ignored").arg(pItem->GetFullName(), pOldItem->GetFullName());
- GetIEditor()->GetErrorReport()->ReportError(err);
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryManager::UnregisterItem(CBaseLibraryItem* pItem)
-{
- // Notify listeners.
- NotifyItemEvent(pItem, EDB_ITEM_EVENT_DELETE);
-
- if (!pItem)
- {
- return;
- }
-
- if (m_bUniqGuidMap)
- {
- m_itemsGuidMap.erase(pItem->GetGUID());
- }
- if (m_bUniqNameMap && !pItem->GetFullName().isEmpty())
- {
- AZStd::lock_guard lock(m_itemsNameMapMutex);
- auto findIter = m_itemsNameMap.find(pItem->GetFullName());
- if (findIter != m_itemsNameMap.end())
- {
- _smart_ptr item = findIter->second;
- m_itemsNameMap.erase(findIter);
- }
- }
-
- pItem->m_bRegistered = false;
-}
-
-//////////////////////////////////////////////////////////////////////////
-QString CBaseLibraryManager::MakeFullItemName(IDataBaseLibrary* pLibrary, const QString& group, const QString& itemName)
-{
- assert(pLibrary);
- QString name = pLibrary->GetName() + ".";
- if (!group.isEmpty())
- {
- name += group + ".";
- }
- name += itemName;
- return name;
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryManager::GatherUsedResources(CUsedResources& resources)
-{
- IDataBaseItemEnumerator* pEnum = GetItemEnumerator();
- for (IDataBaseItem* pItem = pEnum->GetFirst(); pItem != nullptr; pItem = pEnum->GetNext())
- {
- pItem->GatherUsedResources(resources);
- }
- pEnum->Release();
-}
-
-//////////////////////////////////////////////////////////////////////////
-IDataBaseItemEnumerator* CBaseLibraryManager::GetItemEnumerator()
-{
- if (m_bUniqNameMap)
- {
- return new CDataBaseItemEnumerator(&m_itemsNameMap);
- }
- else
- {
- return new CDataBaseItemEnumerator(&m_itemsGuidMap);
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryManager::OnEditorNotifyEvent(EEditorNotifyEvent event)
-{
- switch (event)
- {
- case eNotify_OnBeginNewScene:
- SetSelectedItem(nullptr);
- ClearAll();
- break;
- case eNotify_OnBeginSceneOpen:
- SetSelectedItem(nullptr);
- ClearAll();
- break;
- case eNotify_OnCloseScene:
- SetSelectedItem(nullptr);
- ClearAll();
- break;
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryManager::OnRenameItem(CBaseLibraryItem* pItem, const QString& oldName)
-{
- m_itemsNameMapMutex.lock();
- if (!oldName.isEmpty())
- {
- m_itemsNameMap.erase(oldName);
- }
- if (!pItem->GetFullName().isEmpty())
- {
- m_itemsNameMap[pItem->GetFullName()] = pItem;
- }
- m_itemsNameMapMutex.unlock();
-
- OnItemChanged(pItem);
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryManager::AddListener(IDataBaseManagerListener* pListener)
-{
- stl::push_back_unique(m_listeners, pListener);
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryManager::RemoveListener(IDataBaseManagerListener* pListener)
-{
- stl::find_and_erase(m_listeners, pListener);
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryManager::NotifyItemEvent(IDataBaseItem* pItem, EDataBaseItemEvent event)
-{
- // Notify listeners.
- if (!m_listeners.empty())
- {
- for (int i = 0; i < m_listeners.size(); i++)
- {
- m_listeners[i]->OnDataBaseItemEvent(pItem, event);
- }
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryManager::OnItemChanged(IDataBaseItem* pItem)
-{
- NotifyItemEvent(pItem, EDB_ITEM_EVENT_CHANGED);
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryManager::OnUpdateProperties(IDataBaseItem* pItem, bool bRefresh)
-{
- NotifyItemEvent(pItem, bRefresh ? EDB_ITEM_EVENT_UPDATE_PROPERTIES
- : EDB_ITEM_EVENT_UPDATE_PROPERTIES_NO_EDITOR_REFRESH);
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseLibraryManager::SetSelectedItem(IDataBaseItem* pItem)
-{
- if (m_pSelectedItem == pItem)
- {
- return;
- }
- m_pSelectedItem = (CBaseLibraryItem*)pItem;
- NotifyItemEvent(m_pSelectedItem, EDB_ITEM_EVENT_SELECTED);
-}
-
-//////////////////////////////////////////////////////////////////////////
-IDataBaseItem* CBaseLibraryManager::GetSelectedItem() const
-{
- return m_pSelectedItem;
-}
-
-//////////////////////////////////////////////////////////////////////////
-IDataBaseItem* CBaseLibraryManager::GetSelectedParentItem() const
-{
- return m_pSelectedParent;
-}
-
-void CBaseLibraryManager::ChangeLibraryOrder(IDataBaseLibrary* lib, unsigned int newLocation)
-{
- if (!lib || newLocation >= m_libs.size() || lib == m_libs[newLocation])
- {
- return;
- }
-
- for (int i = 0; i < m_libs.size(); i++)
- {
- if (lib == m_libs[i])
- {
- _smart_ptr curLib = m_libs[i];
- m_libs.erase(m_libs.begin() + i);
- m_libs.insert(m_libs.begin() + newLocation, curLib);
- return;
- }
- }
-}
-
-bool CBaseLibraryManager::SetLibraryName(CBaseLibrary* lib, const QString& name)
-{
- // SetFilename will validate if the name is duplicate with exist libraries.
- if (lib->SetFilename(MakeFilename(name)))
- {
- lib->SetName(name);
- return true;
- }
- return false;
-}
diff --git a/Code/Editor/BaseLibraryManager.h b/Code/Editor/BaseLibraryManager.h
deleted file mode 100644
index 118c7ef1f0..0000000000
--- a/Code/Editor/BaseLibraryManager.h
+++ /dev/null
@@ -1,226 +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_EDITOR_BASELIBRARYMANAGER_H
-#define CRYINCLUDE_EDITOR_BASELIBRARYMANAGER_H
-#pragma once
-
-#include "Include/IBaseLibraryManager.h"
-#include "Include/IDataBaseItem.h"
-#include "Include/IDataBaseLibrary.h"
-#include "Include/IDataBaseManager.h"
-#include "Util/TRefCountBase.h"
-#include "Util/GuidUtil.h"
-#include "BaseLibrary.h"
-#include "Util/smartptr.h"
-#include
-#include
-
-AZ_PUSH_DISABLE_DLL_EXPORT_BASECLASS_WARNING
-/** Manages all Libraries and Items.
-*/
-class SANDBOX_API CBaseLibraryManager
- : public IBaseLibraryManager
-{
-AZ_POP_DISABLE_DLL_EXPORT_BASECLASS_WARNING
-public:
- CBaseLibraryManager();
- ~CBaseLibraryManager();
-
- //! Clear all libraries.
- void ClearAll() override;
-
- //////////////////////////////////////////////////////////////////////////
- // IDocListener implementation.
- //////////////////////////////////////////////////////////////////////////
- void OnEditorNotifyEvent(EEditorNotifyEvent event) override;
-
- //////////////////////////////////////////////////////////////////////////
- // Library items.
- //////////////////////////////////////////////////////////////////////////
- //! Make a new item in specified library.
- IDataBaseItem* CreateItem(IDataBaseLibrary* pLibrary) override;
- //! Delete item from library and manager.
- void DeleteItem(IDataBaseItem* pItem) override;
-
- //! Find Item by its GUID.
- IDataBaseItem* FindItem(REFGUID guid) const override;
- IDataBaseItem* FindItemByName(const QString& fullItemName) override;
- IDataBaseItem* LoadItemByName(const QString& fullItemName) override;
- virtual IDataBaseItem* FindItemByName(const char* fullItemName);
- virtual IDataBaseItem* LoadItemByName(const char* fullItemName);
-
- IDataBaseItemEnumerator* GetItemEnumerator() override;
-
- //////////////////////////////////////////////////////////////////////////
- // Set item currently selected.
- void SetSelectedItem(IDataBaseItem* pItem) override;
- // Get currently selected item.
- IDataBaseItem* GetSelectedItem() const override;
- IDataBaseItem* GetSelectedParentItem() const override;
-
- //////////////////////////////////////////////////////////////////////////
- // Libraries.
- //////////////////////////////////////////////////////////////////////////
- //! Add Item library.
- IDataBaseLibrary* AddLibrary(const QString& library, bool bIsLevelLibrary = false, bool bIsLoading = true) override;
- void DeleteLibrary(const QString& library, bool forceDeleteLevel = false) override;
- //! Get number of libraries.
- int GetLibraryCount() const override { return static_cast(m_libs.size()); };
- //! Get number of modified libraries.
- int GetModifiedLibraryCount() const override;
-
- //! Get Item library by index.
- IDataBaseLibrary* GetLibrary(int index) const override;
-
- //! Get Level Item library.
- IDataBaseLibrary* GetLevelLibrary() const override;
-
- //! Find Items Library by name.
- IDataBaseLibrary* FindLibrary(const QString& library) override;
-
- //! Find Items Library's index by name.
- int FindLibraryIndex(const QString& library) override;
-
- //! Load Items library.
- IDataBaseLibrary* LoadLibrary(const QString& filename, bool bReload = false) override;
-
- //! Save all modified libraries.
- void SaveAllLibs() override;
-
- //! Serialize property manager.
- void Serialize(XmlNodeRef& node, bool bLoading) override;
-
- //! Export items to game.
- void Export([[maybe_unused]] XmlNodeRef& node) override {};
-
- //! Returns unique name base on input name.
- QString MakeUniqueItemName(const QString& name, const QString& libName = "") override;
- QString MakeFullItemName(IDataBaseLibrary* pLibrary, const QString& group, const QString& itemName) override;
-
- //! Root node where this library will be saved.
- QString GetRootNodeName() override = 0;
- //! Path to libraries in this manager.
- QString GetLibsPath() override = 0;
-
- //////////////////////////////////////////////////////////////////////////
- //! Validate library items for errors.
- void Validate() override;
-
- //////////////////////////////////////////////////////////////////////////
- void GatherUsedResources(CUsedResources& resources) override;
-
- void AddListener(IDataBaseManagerListener* pListener) override;
- void RemoveListener(IDataBaseManagerListener* pListener) override;
-
- //////////////////////////////////////////////////////////////////////////
- void RegisterItem(CBaseLibraryItem* pItem, REFGUID newGuid) override;
- void RegisterItem(CBaseLibraryItem* pItem) override;
- void UnregisterItem(CBaseLibraryItem* pItem) override;
-
- // Only Used internally.
- void OnRenameItem(CBaseLibraryItem* pItem, const QString& oldName) override;
-
- // Called by items to indicated that they have been modified.
- // Sends item changed event to listeners.
- void OnItemChanged(IDataBaseItem* pItem) override;
- void OnUpdateProperties(IDataBaseItem* pItem, bool bRefresh) override;
-
- QString MakeFilename(const QString& library);
- bool IsUniqueFilename(const QString& library) override;
-
- //CONFETTI BEGIN
- // Used to change the library item order
- void ChangeLibraryOrder(IDataBaseLibrary* lib, unsigned int newLocation) override;
-
- bool SetLibraryName(CBaseLibrary* lib, const QString& name) override;
-
-protected:
- void SplitFullItemName(const QString& fullItemName, QString& libraryName, QString& itemName);
- void NotifyItemEvent(IDataBaseItem* pItem, EDataBaseItemEvent event);
- void SetRegisteredFlag(CBaseLibraryItem* pItem, bool bFlag);
-
- //////////////////////////////////////////////////////////////////////////
- // Must be overriden.
- //! Makes a new Item.
- virtual CBaseLibraryItem* MakeNewItem() = 0;
- virtual CBaseLibrary* MakeNewLibrary() = 0;
- //////////////////////////////////////////////////////////////////////////
-
- virtual void ReportDuplicateItem(CBaseLibraryItem* pItem, CBaseLibraryItem* pOldItem);
-
-protected:
- bool m_bUniqGuidMap;
- bool m_bUniqNameMap;
-
- AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
- //! Array of all loaded entity items libraries.
- std::vector<_smart_ptr > m_libs;
-
- // There is always one current level library.
- TSmartPtr m_pLevelLibrary;
-
- // GUID to item map.
- typedef std::map, guid_less_predicate> ItemsGUIDMap;
- ItemsGUIDMap m_itemsGuidMap;
-
- // Case insensitive name to items map.
- typedef std::map, stl::less_stricmp> ItemsNameMap;
- ItemsNameMap m_itemsNameMap;
- AZStd::mutex m_itemsNameMapMutex;
-
- std::vector m_listeners;
-
- // Currently selected item.
- _smart_ptr m_pSelectedItem;
- _smart_ptr m_pSelectedParent;
- AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
-};
-
-//////////////////////////////////////////////////////////////////////////
-template
-class CDataBaseItemEnumerator
- : public IDataBaseItemEnumerator
-{
- TMap* m_pMap;
- typename TMap::iterator m_iterator;
-
-public:
- CDataBaseItemEnumerator(TMap* pMap)
- {
- assert(pMap);
- m_pMap = pMap;
- m_iterator = m_pMap->begin();
- }
- void Release() override { delete this; };
- IDataBaseItem* GetFirst() override
- {
- m_iterator = m_pMap->begin();
- if (m_iterator == m_pMap->end())
- {
- return 0;
- }
- return m_iterator->second;
- }
- IDataBaseItem* GetNext() override
- {
- if (m_iterator != m_pMap->end())
- {
- m_iterator++;
- }
- if (m_iterator == m_pMap->end())
- {
- return 0;
- }
- return m_iterator->second;
- }
-};
-
-#endif // CRYINCLUDE_EDITOR_BASELIBRARYMANAGER_H
diff --git a/Code/Editor/CMakeLists.txt b/Code/Editor/CMakeLists.txt
index 3358b49dce..9d74f8e3a2 100644
--- a/Code/Editor/CMakeLists.txt
+++ b/Code/Editor/CMakeLists.txt
@@ -63,7 +63,7 @@ ly_add_target(
set(pal_cmake_files "")
foreach(enabled_platform ${LY_PAL_TOOLS_ENABLED})
string(TOLOWER ${enabled_platform} enabled_platform_lowercase)
- ly_get_list_relative_pal_filename(pal_cmake_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${enabled_platform})
+ o3de_pal_dir(pal_cmake_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${enabled_platform} ${O3DE_ENGINE_RESTRICTED_PATH} ${LY_ROOT_FOLDER})
list(APPEND pal_cmake_files ${pal_cmake_dir}/editor_lib_${enabled_platform_lowercase}_files.cmake)
endforeach()
diff --git a/Code/Editor/Controls/ReflectedPropertyControl/PropertyGenericCtrl.cpp b/Code/Editor/Controls/ReflectedPropertyControl/PropertyGenericCtrl.cpp
index 8ff83dd894..9609fb5014 100644
--- a/Code/Editor/Controls/ReflectedPropertyControl/PropertyGenericCtrl.cpp
+++ b/Code/Editor/Controls/ReflectedPropertyControl/PropertyGenericCtrl.cpp
@@ -24,7 +24,6 @@
// Editor
#include "SelectLightAnimationDialog.h"
#include "SelectSequenceDialog.h"
-#include "SelectEAXPresetDlg.h"
#include "QtViewPaneManager.h"
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
diff --git a/Code/Editor/CrtDebug.cpp b/Code/Editor/CrtDebug.cpp
deleted file mode 100644
index f9335373da..0000000000
--- a/Code/Editor/CrtDebug.cpp
+++ /dev/null
@@ -1,170 +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 "EditorDefs.h"
-
-
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-
-//#ifdef _CRTDBG_MAP_ALLOC
-#ifdef CRTDBG_MAP_ALLOC
-#pragma pack (push,1)
-#define nNoMansLandSize 4
-typedef struct MyCrtMemBlockHeader
-{
- struct MyCrtMemBlockHeader* pBlockHeaderNext;
- struct MyCrtMemBlockHeader* pBlockHeaderPrev;
- char* szFileName;
- int nLine;
- size_t nDataSize;
- int nBlockUse;
- long lRequest;
- unsigned char gap[nNoMansLandSize];
- /* followed by:
- * unsigned char data[nDataSize];
- * unsigned char anotherGap[nNoMansLandSize];
- */
-} MyCrtMemBlockHeader;
-#pragma pack (pop)
-
-#define pbData(pblock) ((unsigned char*)((MyCrtMemBlockHeader*)pblock + 1))
-#define pHdr(pbData) (((MyCrtMemBlockHeader*)pbData) - 1)
-
-
-void crtdebug(const char* s, ...)
-{
- char str[32768];
- va_list arg_ptr;
- va_start(arg_ptr, s);
- vsprintf(str, s, arg_ptr);
- va_end(arg_ptr);
-
- FILE* l = nullptr;
- azfopen(&l, "crtdump.txt", "a+t");
- if (l)
- {
- fprintf(l, "%s", str);
- fclose(l);
- }
-}
-
-int crtAllocHook(int nAllocType, void* pvData,
- size_t nSize, int nBlockUse, long lRequest,
- const unsigned char* szFileName, int nLine)
-{
- if (nBlockUse == _CRT_BLOCK)
- {
- return TRUE;
- }
-
- static int total_cnt = 0;
- static int total_mem = 0;
- if (nAllocType == _HOOK_ALLOC)
- {
- //total_mem += nSize;
- //total_cnt++;
- //_CrtMemState mem_state;
- //_CrtMemCheckpoint( &mem_state );
- //total_cnt = mem_state.lCounts[_NORMAL_BLOCK];
- //total_mem = mem_state.lTotalCount;
- if ((total_cnt & 0xF) == 0)
- {
- //_CrtCheckMemory();
- }
-
- total_cnt++;
- total_mem += nSize;
-
- //crtdebug( " Alloc %d,size=%d,in: %s %d (total size=%d,num=%d)\n",lRequest,nSize,szFileName,nLine,total_mem,total_cnt );
- crtdebug("Size=%d, [Total=%d,N=%d] [%s:%d]\n", nSize, total_mem, total_cnt, szFileName, nLine);
- }
- else if (nAllocType == _HOOK_FREE)
- {
- MyCrtMemBlockHeader* pHead;
- pHead = pHdr(pvData);
-
- total_cnt--;
- total_mem -= pHead->nDataSize;
-
- crtdebug("Size=%d, [Total=%d,N=%d] [%s:%d]\n", pHead->nDataSize, total_mem, total_cnt, pHead->szFileName, pHead->nLine);
- //crtdebug( " Free size=%d,in: %s %d (total size=%d,num=%d)\n",pHead->nDataSize,pHead->szFileName,pHead->nLine,total_mem,total_cnt );
- //total_mem -= nSize;
- //total_cnt--;
- }
- return TRUE;
-}
-
-int crtReportHook(int nRptType, char* szMsg, int* retVal)
-{
- static int gl_num_asserts = 0;
- if (gl_num_asserts != 0)
- {
- return TRUE;
- }
- gl_num_asserts++;
- switch (nRptType)
- {
- case _CRT_WARN:
- crtdebug(" %s\n", szMsg);
- break;
- case _CRT_ERROR:
- crtdebug(" %s\n", szMsg);
- break;
- case _CRT_ASSERT:
- crtdebug(" %s\n", szMsg);
- break;
- }
- gl_num_asserts--;
- return TRUE;
-}
-
-void InitCrt()
-{
- FILE* l = nullptr;
- azfopen(&l, "crtdump.txt", "w");
- if (l)
- {
- fclose(l);
- }
-
- //_CrtSetReportMode( _CRT_WARN, _CRTDBG_MODE_DEBUG );
- //_CrtSetReportMode( _CRT_ERROR, _CRTDBG_MODE_DEBUG );
- //_CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_DEBUG );
-
- _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_WNDW);
- _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_WNDW);
- _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_WNDW);
-
- //_CrtSetDbgFlag( _CRTDBG_CHECK_ALWAYS_DF|_CRTDBG_CHECK_CRT_DF|_CRTDBG_LEAK_CHECK_DF|_CRTDBG_DELAY_FREE_MEM_DF | _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) );
- //_CrtSetDbgFlag( _CRTDBG_CHECK_CRT_DF|_CRTDBG_LEAK_CHECK_DF/*|_CRTDBG_DELAY_FREE_MEM_DF*/ | _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) );
- int flags = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
- flags &= ~_CRTDBG_DELAY_FREE_MEM_DF | _CRTDBG_LEAK_CHECK_DF | _CRTDBG_CHECK_CRT_DF;
-
- _CrtSetDbgFlag(flags);
-
- _CrtSetAllocHook (crtAllocHook);
- _CrtSetReportHook(crtReportHook);
-}
-
-void DoneCrt()
-{
- //_CrtCheckMemory();
- //_CrtDumpMemoryLeaks();
-}
-
-// Autoinit CRT.
-//struct __autoinit_crt { __autoinit_crt() { InitCrt(); }; ~__autoinit_crt() { DoneCrt(); } } __autoinit_crt_var;
-#endif
-
-
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
diff --git a/Code/Editor/CryEdit.cpp b/Code/Editor/CryEdit.cpp
index 77099761c1..3beaf4d438 100644
--- a/Code/Editor/CryEdit.cpp
+++ b/Code/Editor/CryEdit.cpp
@@ -124,9 +124,6 @@ AZ_POP_DISABLE_WARNING
#include "ScopedVariableSetter.h"
#include "Util/3DConnexionDriver.h"
-
-#include "DimensionsDialog.h"
-
#include "Util/AutoDirectoryRestoreFileDialog.h"
#include "Util/EditorAutoLevelLoadTest.h"
#include "AboutDialog.h"
@@ -1352,8 +1349,27 @@ void CCryEditApp::CompileCriticalAssets() const
}
}
assetsInQueueNotifcation.BusDisconnect();
- CCryEditApp::OutputStartupMessage(QString("Asset Processor is now ready."));
+ // Signal the "CriticalAssetsCompiled" lifecycle event
+ // Also reload the "assetcatalog.xml" if it exists
+ if (auto settingsRegistry = AZ::SettingsRegistry::Get(); settingsRegistry != nullptr)
+ {
+ AZ::ComponentApplicationLifecycle::SignalEvent(*settingsRegistry, "CriticalAssetsCompiled", R"({})");
+ // Reload the assetcatalog.xml at this point again
+ // Start Monitoring Asset changes over the network and load the AssetCatalog
+ auto LoadCatalog = [settingsRegistry](AZ::Data::AssetCatalogRequests* assetCatalogRequests)
+ {
+ if (AZ::IO::FixedMaxPath assetCatalogPath;
+ settingsRegistry->Get(assetCatalogPath.Native(), AZ::SettingsRegistryMergeUtils::FilePathKey_CacheRootFolder))
+ {
+ assetCatalogPath /= "assetcatalog.xml";
+ assetCatalogRequests->LoadCatalog(assetCatalogPath.c_str());
+ }
+ };
+ AZ::Data::AssetCatalogRequestBus::Broadcast(AZStd::move(LoadCatalog));
+ }
+
+ CCryEditApp::OutputStartupMessage(QString("Asset Processor is now ready."));
}
bool CCryEditApp::ConnectToAssetProcessor() const
@@ -1669,7 +1685,7 @@ bool CCryEditApp::InitInstance()
return false;
}
- if (AZ::SettingsRegistryInterface* settingsRegistry = AZ::SettingsRegistry::Get())
+ if (auto settingsRegistry = AZ::SettingsRegistry::Get(); settingsRegistry != nullptr)
{
AZ::ComponentApplicationLifecycle::SignalEvent(*settingsRegistry, "LegacySystemInterfaceCreated", R"({})");
}
@@ -1787,12 +1803,6 @@ bool CCryEditApp::InitInstance()
InitLevel(cmdInfo);
});
-#ifdef USE_WIP_FEATURES_MANAGER
- // load the WIP features file
- CWipFeatureManager::Instance()->EnableManager(!cmdInfo.m_bDeveloperMode);
- CWipFeatureManager::Init();
-#endif
-
if (!m_bConsoleMode && !m_bPreviewMode)
{
GetIEditor()->UpdateViews();
@@ -2123,13 +2133,6 @@ int CCryEditApp::ExitInstance(int exitCode)
}
qobject_cast(qApp)->UnloadSettings();
- #ifdef USE_WIP_FEATURES_MANAGER
- //
- // close wip features manager
- //
- CWipFeatureManager::Shutdown();
- #endif
-
if (IsInRegularEditorMode())
{
if (GetIEditor())
diff --git a/Code/Editor/CryEdit.h b/Code/Editor/CryEdit.h
index 97fcde8f34..48f362003c 100644
--- a/Code/Editor/CryEdit.h
+++ b/Code/Editor/CryEdit.h
@@ -14,7 +14,6 @@
#if !defined(Q_MOC_RUN)
#include
#include
-#include "WipFeatureManager.h"
#include "CryEditDoc.h"
#include "ViewPane.h"
diff --git a/Code/Editor/CryEditDoc.cpp b/Code/Editor/CryEditDoc.cpp
index 3bcba4d5e0..9d93fd5f5b 100644
--- a/Code/Editor/CryEditDoc.cpp
+++ b/Code/Editor/CryEditDoc.cpp
@@ -45,7 +45,6 @@
#include "ActionManager.h"
#include "Include/IObjectManager.h"
#include "ErrorReportDialog.h"
-#include "SurfaceTypeValidator.h"
#include "Util/AutoLogTime.h"
#include "CheckOutDialog.h"
#include "GameExporter.h"
@@ -99,8 +98,7 @@ namespace Internal
// CCryEditDoc construction/destruction
CCryEditDoc::CCryEditDoc()
- : doc_validate_surface_types(nullptr)
- , m_modifiedModuleFlags(eModifiedNothing)
+ : m_modifiedModuleFlags(eModifiedNothing)
{
////////////////////////////////////////////////////////////////////////
// Set member variables to initial values
@@ -120,7 +118,6 @@ CCryEditDoc::CCryEditDoc()
GetIEditor()->SetDocument(this);
CLogFile::WriteLine("Document created");
- RegisterConsoleVariables();
MainWindow::instance()->GetActionManager()->RegisterActionHandler(ID_FILE_SAVE_AS, this, &CCryEditDoc::OnFileSaveAs);
bool isPrefabSystemEnabled = false;
@@ -459,8 +456,6 @@ void CCryEditDoc::Load(TDocMultiArchive& arrXmlAr, const QString& szFilename)
}
}
- CSurfaceTypeValidator().Validate();
-
LogLoadTime(GetTickCount() - t0);
// Loaded with success, remove event from log file
GetIEditor()->GetSettingsManager()->UnregisterEvent(loadEvent);
@@ -1910,25 +1905,6 @@ void CCryEditDoc::SetDocumentReady(bool bReady)
m_bDocumentReady = bReady;
}
-void CCryEditDoc::RegisterConsoleVariables()
-{
- doc_validate_surface_types = gEnv->pConsole->GetCVar("doc_validate_surface_types");
-
- if (!doc_validate_surface_types)
- {
- doc_validate_surface_types = REGISTER_INT_CB("doc_validate_surface_types", 0, 0,
- "Flag indicating whether icons are displayed on the animation graph.\n"
- "Default is 1.\n",
- OnValidateSurfaceTypesChanged);
- }
-}
-
-void CCryEditDoc::OnValidateSurfaceTypesChanged(ICVar*)
-{
- CErrorsRecorder errorsRecorder(GetIEditor());
- CSurfaceTypeValidator().Validate();
-}
-
void CCryEditDoc::OnStartLevelResourceList()
{
// after loading another level we clear the RFOM_Level list, the first time the list should be empty
diff --git a/Code/Editor/CryEditDoc.h b/Code/Editor/CryEditDoc.h
index f7e97d308e..5d20bddf45 100644
--- a/Code/Editor/CryEditDoc.h
+++ b/Code/Editor/CryEditDoc.h
@@ -176,9 +176,7 @@ protected:
virtual void OnFileSaveAs();
//! called immediately after saving the level.
void AfterSave();
- void RegisterConsoleVariables();
void OnStartLevelResourceList();
- static void OnValidateSurfaceTypesChanged(ICVar*);
QString GetCryIndexPath(const char* levelFilePath) const;
@@ -194,7 +192,6 @@ protected:
XmlNodeRef m_environmentTemplate;
std::list m_listeners;
bool m_bDocumentReady = false;
- ICVar* doc_validate_surface_types = nullptr;
int m_modifiedModuleFlags;
// On construction, it assumes loaded levels have already been exported. Can be a big fat lie, though.
// The right way would require us to save to the level folder the export status of the level.
diff --git a/Code/Editor/CryEditLiveCreate.rc b/Code/Editor/CryEditLiveCreate.rc
deleted file mode 100644
index 3dac96d682..0000000000
--- a/Code/Editor/CryEditLiveCreate.rc
+++ /dev/null
@@ -1,213 +0,0 @@
-ÿþ// Microsoft Visual C++ generated resource script.
-//
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#include "winres.h"
-#include "resource.h"
-
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-/////////////////////////////////////////////////////////////////////////////
-// English (United States) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-2 TEXTINCLUDE
-BEGIN
- "#include ""winres.h""\r\n"
- "#include ""resource.h""\r\n"
- "\0"
-END
-
-3 TEXTINCLUDE
-BEGIN
- "\r\n"
- "\0"
-END
-
-1 TEXTINCLUDE
-BEGIN
- "resource.h\0"
-END
-
-#endif // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Menu
-//
-
-IDR_MENU_LIVECREATE MENU
-BEGIN
- POPUP "&File"
- BEGIN
- MENUITEM "Save settings", ID_FILE_SAVESETTINGS
- MENUITEM "Close", ID_FILE_CLOSE_LIVECREATE_VIEW
- END
- POPUP "&View"
- BEGIN
- MENUITEM "LiveCreate Logger", ID_VIEW_LIVECREATELOGGER, CHECKED
- MENUITEM "LiveCreate Profile Editor", ID_VIEW_LIVECREATEPROFILEEDITOR, CHECKED
- MENUITEM "LiveCreate File Sync Settings", ID_VIEW_LIVECREATEFILESYNCSETTINGS, CHECKED
- END
-END
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_LIVECREATE_PICKER DIALOGEX 0, 0, 316, 259
-STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Select game build directory"
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- DEFPUSHBUTTON "OK",IDOK,200,238,50,14
- PUSHBUTTON "Cancel",IDCANCEL,259,238,50,14
- CONTROL "",IDC_DIRECTORY_TREE,"SysTreeView32",TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | TVS_SHOWSELALWAYS | WS_BORDER | WS_HSCROLL | WS_TABSTOP,7,7,302,227
-END
-
-IDD_LIVECREATE_ADD_TARGETS DIALOGEX 0, 0, 500, 400
-STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Discover LiveCreate targets"
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- PUSHBUTTON "Refresh",IDC_REFRESH,8,8,70,18
- PUSHBUTTON "Add custom...",IDC_BUTTON_ADD_PEER,82,8,70,18
- CONTROL "Use wider search (broadcast)",IDC_CHECK_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,233,12,200,10
- CONTROL "",IDC_LIST_PEERS,"XTPReport",WS_TABSTOP,8,32,484,342,WS_EX_STATICEDGE
- DEFPUSHBUTTON "Use selected",IDOK,180,379,70,18
- PUSHBUTTON "Cancel",IDCANCEL,259,379,70,18
- PUSHBUTTON "Add by IP...",IDC_BUTTON_ADD_MATERIAL,157,8,70,18
-END
-
-IDD_LIVECREATE_PEER_LIST DIALOGEX 0, 0, 395, 213
-STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_SYSMENU
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- LTEXT "Peers:",IDC_STATIC,17,27,22,8
- PUSHBUTTON "Add...",IDC_BUTTON_ADD_PEER,56,24,56,16
- PUSHBUTTON "Edit...",IDC_BUTTON_EDIT_PEER,116,24,56,16
- PUSHBUTTON "Remove",IDC_BUTTON_DELETE_PEER,176,24,52,16
- DEFPUSHBUTTON "Start All",IDC_BUTTON_START_ALL,4,4,48,16
- PUSHBUTTON "Reset All",IDC_BUTTON_RESET_ALL,176,4,52,16
- PUSHBUTTON "Force Sync All",IDC_BUTTON_FORCE_SYNC_ALL,56,4,56,16
- PUSHBUTTON "Clean All",IDC_BUTTON_CLEAN_ALL,232,4,52,16
- PUSHBUTTON "Screenshot All",IDC_BUTTON_SCREENSHOT_ALL,116,4,56,16
- CONTROL "",IDC_LIST_PEERS,"XTPReport",WS_TABSTOP,4,44,386,164,WS_EX_STATICEDGE
- CHECKBOX "LiveCreate",IDC_BUTTON_ENABLE_LIVECREATE,288,4,52,36,BS_PUSHLIKE | BS_MULTILINE
- CHECKBOX "Sync\nCamera",IDC_BUTTON_CAMERA_SYNC,345,4,52,36,BS_PUSHLIKE | BS_MULTILINE
- PUSHBUTTON "Discover",IDC_BUTTON_DISCOVER_PEERS,232,24,52,16
-END
-
-IDD_IDD_LIVECREATE_SETTINGS_PANEL DIALOGEX 0, 0, 156, 204
-STYLE DS_SETFONT | WS_CHILD
-FONT 8, "MS Shell Dlg 2", 400, 0, 0x1
-BEGIN
- PUSHBUTTON "Add targets...",IDC_BUTTON_DISCOVER_PEERS,4,4,80,16
-END
-
-IDD_LIVECREATE_EDIT_CONNECTION DIALOGEX 0, 0, 288, 183
-STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "LiveCreate host settings"
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- DEFPUSHBUTTON "OK",IDOK,158,154,58,20
- PUSHBUTTON "Cancel",IDCANCEL,221,154,58,20
- LTEXT "Name:",IDC_STATIC,16,46,22,8
- EDITTEXT IDC_EDIT_TARGET_NAME,44,44,100,14,ES_AUTOHSCROLL
- LTEXT "IP:",IDC_STATIC,152,46,10,8
- CONTROL "",IDC_TARGET_IPADDRESS,"SysIPAddress32",WS_TABSTOP,168,44,100,15
- LTEXT "Platform:",IDC_STATIC,8,26,30,8
- LTEXT "Build path (automatic):",IDC_STATIC,19,120,74,8
- PUSHBUTTON "Test IP",IDC_BUTTON_TEST_CONNECTION,168,60,100,16
- COMBOBOX IDC_COMBO_PLATFORM,44,24,100,88,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- PUSHBUTTON "Resovle name to IP",IDC_BUTTON_REFRESH_IP,44,60,100,16
- CONTROL "Enable this peer",IDC_CHECK_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,8,67,10
- GROUPBOX "Build settings",IDC_STATIC,7,80,272,71
- LTEXT "Build executable:",IDC_STATIC,19,92,56,8
- PUSHBUTTON "...",IDC_BUTTON_PICK_GAME_DIRECTORY,249,104,22,14
- EDITTEXT IDC_EDIT_BUILD_ROOT_PATH,20,104,226,14,ES_AUTOHSCROLL
- EDITTEXT IDC_EDIT_BUILD_EXECUTABLE,20,131,249,14,ES_AUTOHSCROLL
-END
-
-IDD_LIVECREATE_TASK_WAIT DIALOGEX 0, 0, 238, 41
-STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Dialog"
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- PUSHBUTTON "Cancel",IDCANCEL,94,20,50,14
- LTEXT "Static",IDC_TASK_PROGRESS_TEXT,7,7,224,8
-END
-
-IDD_LIVECREATE_ADD_BY_IP DIALOGEX 0, 0, 137, 75
-STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Add LiveCreate by IP"
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- DEFPUSHBUTTON "OK",IDOK,7,48,58,20
- PUSHBUTTON "Cancel",IDCANCEL,71,48,58,20
- LTEXT "IP:",-1,9,12,10,8
- EDITTEXT IDC_TARGET_IPADDRESS,25,10,100,15,WS_TABSTOP
- PUSHBUTTON "Test IP",IDC_BUTTON_TEST_CONNECTION,25,27,100,16
-END
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO
-BEGIN
- IDD_LIVECREATE_ADD_TARGETS, DIALOG
- BEGIN
- END
-
- IDD_LIVECREATE_EDIT_CONNECTION, DIALOG
- BEGIN
- END
-
- IDD_LIVECREATE_TASK_WAIT, DIALOG
- BEGIN
- LEFTMARGIN, 7
- RIGHTMARGIN, 231
- TOPMARGIN, 7
- BOTTOMMARGIN, 34
- END
-
- IDD_LIVECREATE_ADD_BY_IP, DIALOG
- BEGIN
- END
-END
-#endif // APSTUDIO_INVOKED
-
-#endif // English (United States) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif // not APSTUDIO_INVOKED
\ No newline at end of file
diff --git a/Code/Editor/DimensionsDialog.cpp b/Code/Editor/DimensionsDialog.cpp
deleted file mode 100644
index 6c8e6a616b..0000000000
--- a/Code/Editor/DimensionsDialog.cpp
+++ /dev/null
@@ -1,71 +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 "EditorDefs.h"
-
-#include "DimensionsDialog.h"
-
-// Qt
-#include
-
-AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
-#include
-AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
-
-
-
-/////////////////////////////////////////////////////////////////////////////
-CDimensionsDialog::CDimensionsDialog(QWidget* pParent /*=nullptr*/)
- : QDialog(pParent)
- , m_group(new QButtonGroup(this))
- , ui(new Ui::CDimensionsDialog)
-{
- ui->setupUi(this);
-
- setWindowTitle(tr("Generate Terrain Texture"));
-
- m_group->addButton(ui->Dim512, 512);
- m_group->addButton(ui->Dim1024, 1024);
- m_group->addButton(ui->Dim2048, 2048);
- m_group->addButton(ui->Dim4096, 4096);
- m_group->addButton(ui->Dim8192, 8192);
- m_group->addButton(ui->Dim16384, 16384);
-}
-
-
-//////////////////////////////////////////////////////////////////////////
-CDimensionsDialog::~CDimensionsDialog()
-{
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CDimensionsDialog::SetDimensions(unsigned int iWidth)
-{
- ////////////////////////////////////////////////////////////////////////
- // Select a dimension option button in the dialog
- ////////////////////////////////////////////////////////////////////////
-
- QAbstractButton* button = m_group->button(iWidth);
- assert(button);
-
- button->setChecked(true);
-}
-
-UINT CDimensionsDialog::GetDimensions()
-{
- ////////////////////////////////////////////////////////////////////////
- // Get the currently selected dimension option button in the dialog
- ////////////////////////////////////////////////////////////////////////
-
- assert(m_group->checkedId() != -1);
-
- return m_group->checkedId();
-}
-
-#include
diff --git a/Code/Editor/DimensionsDialog.h b/Code/Editor/DimensionsDialog.h
deleted file mode 100644
index b94c58bf95..0000000000
--- a/Code/Editor/DimensionsDialog.h
+++ /dev/null
@@ -1,47 +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_EDITOR_DIMENSIONSDIALOG_H
-#define CRYINCLUDE_EDITOR_DIMENSIONSDIALOG_H
-
-#if !defined(Q_MOC_RUN)
-#include
-
-#include
-#endif
-
-class QButtonGroup;
-
-namespace Ui {
- class CDimensionsDialog;
-}
-
-class CDimensionsDialog
- : public QDialog
-{
- Q_OBJECT
-
-public:
- CDimensionsDialog(QWidget* pParent = nullptr); // standard constructor
- ~CDimensionsDialog();
-
- UINT GetDimensions();
- void SetDimensions(unsigned int iWidth);
-
-protected:
- void UpdateData(bool fromUi = true); // DDX/DDV support
-
-private:
- QButtonGroup* m_group;
-
- QScopedPointer ui;
-};
-
-#endif // CRYINCLUDE_EDITOR_DIMENSIONSDIALOG_H
diff --git a/Code/Editor/DimensionsDialog.ui b/Code/Editor/DimensionsDialog.ui
deleted file mode 100644
index 316a060c92..0000000000
--- a/Code/Editor/DimensionsDialog.ui
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
- CDimensionsDialog
-
-
-
- 0
- 0
- 465
- 237
-
-
-
- Qt::StrongFocus
-
-
-
-
-
-
- Texture Dimensions (Texture Dimensions divided by Terrain Size = Texels per meter)
-
-
-
-
-
-
- Qt::StrongFocus
-
-
- 512 x 512
-
-
- true
-
-
-
- -
-
-
- Qt::StrongFocus
-
-
- 1024 x 1024
-
-
-
- -
-
-
- Qt::StrongFocus
-
-
- 2048 x 2048
-
-
-
- -
-
-
- Qt::StrongFocus
-
-
- 4096 x 4096
-
-
-
- -
-
-
- Qt::StrongFocus
-
-
- 8192 x 8192
-
-
-
- -
-
-
- Qt::StrongFocus
-
-
- 16384 x 16384
-
-
-
-
-
-
- -
-
-
- Qt::StrongFocus
-
-
- QDialogButtonBox::Ok
-
-
-
-
-
-
-
-
- buttonBox
- accepted()
- CDimensionsDialog
- accept()
-
-
- 77
- 294
-
-
- 7
- 296
-
-
-
-
-
diff --git a/Code/Editor/EditMode/DeepSelection.cpp b/Code/Editor/EditMode/DeepSelection.cpp
deleted file mode 100644
index 3e232a230c..0000000000
--- a/Code/Editor/EditMode/DeepSelection.cpp
+++ /dev/null
@@ -1,138 +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 "EditorDefs.h"
-
-#include "DeepSelection.h"
-
-// Editor
-#include "Objects/BaseObject.h"
-
-
-//! Functor for sorting selected objects on deep selection mode.
-struct NearDistance
-{
- NearDistance(){}
- bool operator()(const CDeepSelection::RayHitObject& lhs, const CDeepSelection::RayHitObject& rhs) const
- {
- return lhs.distance < rhs.distance;
- }
-};
-
-//-----------------------------------------------------------------------------
-CDeepSelection::CDeepSelection()
- : m_Mode(DSM_NONE)
- , m_previousMode(DSM_NONE)
- , m_CandidateObjectCount(0)
- , m_CurrentSelectedPos(-1)
-{
- m_LastPickPoint = QPoint(-1, -1);
-}
-
-//-----------------------------------------------------------------------------
-CDeepSelection::~CDeepSelection()
-{
-}
-
-//-----------------------------------------------------------------------------
-void CDeepSelection::Reset(bool bResetLastPick)
-{
- for (int i = 0; i < m_CandidateObjectCount; ++i)
- {
- m_RayHitObjects[i].object->ClearFlags(OBJFLAG_NO_HITTEST);
- }
-
- m_CandidateObjectCount = 0;
- m_CurrentSelectedPos = -1;
-
- m_RayHitObjects.clear();
-
- if (bResetLastPick)
- {
- m_LastPickPoint = QPoint(-1, -1);
- }
-}
-
-//-----------------------------------------------------------------------------
-void CDeepSelection::AddObject(float distance, CBaseObject* pObj)
-{
- m_RayHitObjects.push_back(RayHitObject(distance, pObj));
-}
-
-//-----------------------------------------------------------------------------
-bool CDeepSelection::OnCycling (const QPoint& pt)
-{
- QPoint diff = m_LastPickPoint - pt;
- LONG epsilon = 2;
- m_LastPickPoint = pt;
-
- if (abs(diff.x()) < epsilon && abs(diff.y()) < epsilon)
- {
- return true;
- }
- else
- {
- return false;
- }
-}
-
-//-----------------------------------------------------------------------------
-void CDeepSelection::ExcludeHitTest(int except)
-{
- int nExcept = except % m_CandidateObjectCount;
-
- for (int i = 0; i < m_CandidateObjectCount; ++i)
- {
- m_RayHitObjects[i].object->SetFlags(OBJFLAG_NO_HITTEST);
- }
-
- m_RayHitObjects[nExcept].object->ClearFlags(OBJFLAG_NO_HITTEST);
-}
-
-//-----------------------------------------------------------------------------
-int CDeepSelection::CollectCandidate(float fMinDistance, float fRange)
-{
- m_CandidateObjectCount = 0;
-
- if (!m_RayHitObjects.empty())
- {
- std::sort(m_RayHitObjects.begin(), m_RayHitObjects.end(), NearDistance());
-
- for (std::vector::iterator itr = m_RayHitObjects.begin();
- itr != m_RayHitObjects.end(); ++itr)
- {
- if (itr->distance - fMinDistance < fRange)
- {
- ++m_CandidateObjectCount;
- }
- else
- {
- break;
- }
- }
- }
-
- return m_CandidateObjectCount;
-}
-
-//-----------------------------------------------------------------------------
-CBaseObject* CDeepSelection::GetCandidateObject(int index)
-{
- m_CurrentSelectedPos = index % m_CandidateObjectCount;
-
- return m_RayHitObjects[m_CurrentSelectedPos].object;
-}
-
-//-----------------------------------------------------------------------------
-//!
-void CDeepSelection::SetMode(EDeepSelectionMode mode)
-{
- m_previousMode = m_Mode;
- m_Mode = mode;
-}
diff --git a/Code/Editor/EditMode/DeepSelection.h b/Code/Editor/EditMode/DeepSelection.h
deleted file mode 100644
index b6f652abc5..0000000000
--- a/Code/Editor/EditMode/DeepSelection.h
+++ /dev/null
@@ -1,87 +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 : Deep Selection Header
-
-
-#ifndef CRYINCLUDE_EDITOR_EDITMODE_DEEPSELECTION_H
-#define CRYINCLUDE_EDITOR_EDITMODE_DEEPSELECTION_H
-#pragma once
-
-class CBaseObject;
-
-//! Deep Selection
-//! Additional output information of HitContext on using "deep selection mode".
-//! At the deep selection mode, it supports second selection pass for easy
-//! selection on crowded area with two different method.
-//! One is to show pop menu of candidate objects list. Another is the cyclic
-//! selection on pick clicking.
-class CDeepSelection
- : public _i_reference_target_t
-{
-public:
- //! Deep Selection Mode Definition
- enum EDeepSelectionMode
- {
- DSM_NONE = 0, // Not using deep selection.
- DSM_POP = 1, // Deep selection mode with pop context menu.
- DSM_CYCLE = 2 // Deep selection mode with cyclic selection on each clinking same point.
- };
-
- //! Subclass for container of the selected object with hit distance.
- struct RayHitObject
- {
- RayHitObject(float dist, CBaseObject* pObj)
- : distance(dist)
- , object(pObj)
- {
- }
-
- float distance;
- CBaseObject* object;
- };
-
- //! Constructor
- CDeepSelection();
- virtual ~CDeepSelection();
-
- void Reset(bool bResetLastPick = false);
- void AddObject(float distance, CBaseObject* pObj);
- //! Check if clicking point is same position with last position,
- //! to decide whether to continue cycling mode.
- bool OnCycling (const QPoint& pt);
- //! All objects in list are excluded for hitting test except one, current selection.
- void ExcludeHitTest(int except);
- void SetMode(EDeepSelectionMode mode);
- inline EDeepSelectionMode GetMode() const { return m_Mode; }
- inline EDeepSelectionMode GetPreviousMode() const { return m_previousMode; }
- //! Collect object in the deep selection range. The distance from the minimum
- //! distance is less than deep selection range.
- int CollectCandidate(float fMinDistance, float fRange);
- //! Return the candidate object in index position, then it is to be current
- //! selection position.
- CBaseObject* GetCandidateObject(int index);
- //! Return the current selection position that is update in "GetCandidateObject"
- //! function call.
- inline int GetCurrentSelectPos() const { return m_CurrentSelectedPos; }
- //! Return the number of objects in the deep selection range.
- inline int GetCandidateObjectCount() const { return m_CandidateObjectCount; }
-
-private:
- //! Current mode
- EDeepSelectionMode m_Mode;
- EDeepSelectionMode m_previousMode;
- //! Last picking point to check whether cyclic selection continue.
- QPoint m_LastPickPoint;
- //! List of the selected objects with ray hitting
- std::vector m_RayHitObjects;
- int m_CandidateObjectCount;
- int m_CurrentSelectedPos;
-};
-#endif // CRYINCLUDE_EDITOR_EDITMODE_DEEPSELECTION_H
diff --git a/Code/Editor/EditorPreferencesDialog.cpp b/Code/Editor/EditorPreferencesDialog.cpp
index 665daf52a8..42f7446716 100644
--- a/Code/Editor/EditorPreferencesDialog.cpp
+++ b/Code/Editor/EditorPreferencesDialog.cpp
@@ -112,29 +112,31 @@ void EditorPreferencesDialog::showEvent(QShowEvent* event)
QDialog::showEvent(event);
}
-void WidgetHandleKeyPressEvent(QWidget* widget, QKeyEvent* event)
+bool WidgetConsumesKeyPressEvent(QKeyEvent* event)
{
// If the enter key is pressed during any text input, the dialog box will close
// making it inconvenient to do multiple edits. This routine captures the
// Key_Enter or Key_Return and clears the focus to give a visible cue that
- // editing of that field has finished and then doesn't propogate it.
+ // editing of that field has finished and then doesn't propagate it.
if (event->key() != Qt::Key::Key_Enter && event->key() != Qt::Key::Key_Return)
{
- QApplication::sendEvent(widget, event);
+ return false;
}
- else
+
+ if (QWidget* editWidget = QApplication::focusWidget())
{
- if (QWidget* editWidget = QApplication::focusWidget())
- {
- editWidget->clearFocus();
- }
+ editWidget->clearFocus();
}
-}
+ return true;
+}
void EditorPreferencesDialog::keyPressEvent(QKeyEvent* event)
{
- WidgetHandleKeyPressEvent(this, event);
+ if (!WidgetConsumesKeyPressEvent(event))
+ {
+ QDialog::keyPressEvent(event);
+ }
}
void EditorPreferencesDialog::OnTreeCurrentItemChanged()
diff --git a/Code/Editor/EditorPreferencesDialog.h b/Code/Editor/EditorPreferencesDialog.h
index a3f05ad00d..70a186375b 100644
--- a/Code/Editor/EditorPreferencesDialog.h
+++ b/Code/Editor/EditorPreferencesDialog.h
@@ -19,7 +19,7 @@ namespace Ui
class EditorPreferencesTreeWidgetItem;
-void WidgetHandleKeyPressEvent(QWidget* widget, QKeyEvent* event);
+bool WidgetConsumesKeyPressEvent(QKeyEvent* event);
class EditorPreferencesDialog
: public QDialog
diff --git a/Code/Editor/EditorPreferencesPageAWS.cpp b/Code/Editor/EditorPreferencesPageAWS.cpp
index 68a9d6889f..9279dce7bc 100644
--- a/Code/Editor/EditorPreferencesPageAWS.cpp
+++ b/Code/Editor/EditorPreferencesPageAWS.cpp
@@ -28,7 +28,7 @@ void CEditorPreferencesPage_AWS::Reflect(AZ::SerializeContext& serialize)
if (editContext)
{
editContext->Class("Options", "")
- ->DataElement(AZ::Edit::UIHandlers::CheckBox, &UsageOptions::m_awsAttributionEnabled, "Allow O3DE to send information about your use of AWS Core Gem to AWS",
+ ->DataElement(AZ::Edit::UIHandlers::CheckBox, &UsageOptions::m_awsAttributionEnabled, "Allow O3DE to send information about your use of AWS Core Gem to AWS",
"");
editContext->Class("AWS Preferences", "AWS Preferences")
diff --git a/Code/Editor/EditorPreferencesPageViewportGeneral.cpp b/Code/Editor/EditorPreferencesPageViewportGeneral.cpp
index 77560e24f8..f33cc3f725 100644
--- a/Code/Editor/EditorPreferencesPageViewportGeneral.cpp
+++ b/Code/Editor/EditorPreferencesPageViewportGeneral.cpp
@@ -41,8 +41,6 @@ void CEditorPreferencesPage_ViewportGeneral::Reflect(AZ::SerializeContext& seria
->Field("ShowBBoxes", &Display::m_showBBoxes)
->Field("DrawEntityLabels", &Display::m_drawEntityLabels)
->Field("ShowTriggerBounds", &Display::m_showTriggerBounds)
- ->Field("ShowIcons", &Display::m_showIcons)
- ->Field("DistanceScaleIcons", &Display::m_distanceScaleIcons)
->Field("ShowFrozenHelpers", &Display::m_showFrozenHelpers)
->Field("FillSelectedShapes", &Display::m_fillSelectedShapes)
->Field("ShowGridGuide", &Display::m_showGridGuide)
@@ -118,10 +116,6 @@ void CEditorPreferencesPage_ViewportGeneral::Reflect(AZ::SerializeContext& seria
AZ::Edit::UIHandlers::CheckBox, &Display::m_drawEntityLabels, "Always Draw Entity Labels", "Always Draw Entity Labels")
->DataElement(
AZ::Edit::UIHandlers::CheckBox, &Display::m_showTriggerBounds, "Always Show Trigger Bounds", "Always Show Trigger Bounds")
- ->DataElement(AZ::Edit::UIHandlers::CheckBox, &Display::m_showIcons, "Show Object Icons", "Show Object Icons")
- ->DataElement(
- AZ::Edit::UIHandlers::CheckBox, &Display::m_distanceScaleIcons, "Scale Object Icons with Distance",
- "Scale Object Icons with Distance")
->DataElement(
AZ::Edit::UIHandlers::CheckBox, &Display::m_showFrozenHelpers, "Show Helpers of Frozen Objects",
"Show Helpers of Frozen Objects")
@@ -244,8 +238,6 @@ void CEditorPreferencesPage_ViewportGeneral::OnApply()
}
gSettings.viewports.bDrawEntityLabels = m_display.m_drawEntityLabels;
gSettings.viewports.bShowTriggerBounds = m_display.m_showTriggerBounds;
- gSettings.viewports.bShowIcons = m_display.m_showIcons;
- gSettings.viewports.bDistanceScaleIcons = m_display.m_distanceScaleIcons;
gSettings.viewports.nShowFrozenHelpers = m_display.m_showFrozenHelpers;
gSettings.viewports.bFillSelectedShapes = m_display.m_fillSelectedShapes;
gSettings.viewports.bShowGridGuide = m_display.m_showGridGuide;
@@ -300,8 +292,6 @@ void CEditorPreferencesPage_ViewportGeneral::InitializeSettings()
m_display.m_showBBoxes = (ds->GetRenderFlags() & RENDER_FLAG_BBOX) == RENDER_FLAG_BBOX;
m_display.m_drawEntityLabels = gSettings.viewports.bDrawEntityLabels;
m_display.m_showTriggerBounds = gSettings.viewports.bShowTriggerBounds;
- m_display.m_showIcons = gSettings.viewports.bShowIcons;
- m_display.m_distanceScaleIcons = gSettings.viewports.bDistanceScaleIcons;
m_display.m_showFrozenHelpers = gSettings.viewports.nShowFrozenHelpers;
m_display.m_fillSelectedShapes = gSettings.viewports.bFillSelectedShapes;
m_display.m_showGridGuide = gSettings.viewports.bShowGridGuide;
diff --git a/Code/Editor/EditorPreferencesPageViewportGeneral.h b/Code/Editor/EditorPreferencesPageViewportGeneral.h
index be89cc6df4..2d2a207d6c 100644
--- a/Code/Editor/EditorPreferencesPageViewportGeneral.h
+++ b/Code/Editor/EditorPreferencesPageViewportGeneral.h
@@ -62,8 +62,6 @@ private:
bool m_showBBoxes;
bool m_drawEntityLabels;
bool m_showTriggerBounds;
- bool m_showIcons;
- bool m_distanceScaleIcons;
bool m_showFrozenHelpers;
bool m_fillSelectedShapes;
bool m_showGridGuide;
diff --git a/Code/Editor/EditorViewportWidget.cpp b/Code/Editor/EditorViewportWidget.cpp
index 754ea84544..a8180bcace 100644
--- a/Code/Editor/EditorViewportWidget.cpp
+++ b/Code/Editor/EditorViewportWidget.cpp
@@ -454,9 +454,6 @@ void EditorViewportWidget::Update()
// Render
{
- // TODO: Move out this logic to a controller and refactor to work with Atom
- ProcessRenderLisneters(m_displayContext);
-
m_displayContext.Flush2D();
// Post Render Callback
@@ -585,11 +582,11 @@ void EditorViewportWidget::OnEditorNotifyEvent(EEditorNotifyEvent event)
case eNotify_OnCloseScene:
m_renderViewport->SetScene(nullptr);
- SetDefaultCamera();
break;
case eNotify_OnEndSceneOpen:
UpdateScene();
+ SetDefaultCamera();
break;
case eNotify_OnBeginNewScene:
@@ -1030,8 +1027,6 @@ void EditorViewportWidget::OnTitleMenu(QMenu* menu)
AZ::ViewportHelpers::AddCheckbox(menu, tr("Show Safe Frame"), &gSettings.viewports.bShowSafeFrame);
AZ::ViewportHelpers::AddCheckbox(menu, tr("Show Construction Plane"), &gSettings.snap.constructPlaneDisplay);
AZ::ViewportHelpers::AddCheckbox(menu, tr("Show Trigger Bounds"), &gSettings.viewports.bShowTriggerBounds);
- AZ::ViewportHelpers::AddCheckbox(menu, tr("Show Icons"), &gSettings.viewports.bShowIcons, &gSettings.viewports.bShowSizeBasedIcons);
- AZ::ViewportHelpers::AddCheckbox(menu, tr("Show Size-based Icons"), &gSettings.viewports.bShowSizeBasedIcons, &gSettings.viewports.bShowIcons);
AZ::ViewportHelpers::AddCheckbox(menu, tr("Show Helpers of Frozen Objects"), &gSettings.viewports.nShowFrozenHelpers);
if (!m_predefinedAspectRatios.IsEmpty())
diff --git a/Code/Editor/ErrorRecorder.cpp b/Code/Editor/ErrorRecorder.cpp
index 999dab323c..253e103527 100644
--- a/Code/Editor/ErrorRecorder.cpp
+++ b/Code/Editor/ErrorRecorder.cpp
@@ -7,7 +7,6 @@
*/
#include "EditorDefs.h"
#include "ErrorRecorder.h"
-#include "BaseLibraryItem.h"
#include "Include/IErrorReport.h"
diff --git a/Code/Editor/ErrorRecorder.h b/Code/Editor/ErrorRecorder.h
index e4b3706a16..beacc3f0e5 100644
--- a/Code/Editor/ErrorRecorder.h
+++ b/Code/Editor/ErrorRecorder.h
@@ -14,6 +14,8 @@
#define CRYINCLUDE_EDITOR_CORE_ERRORRECORDER_H
#pragma once
+#include "Include/EditorCoreAPI.h"
+
//////////////////////////////////////////////////////////////////////////
//! Automatic class to record and display error.
class EDITOR_CORE_API CErrorsRecorder
diff --git a/Code/Editor/ErrorReport.cpp b/Code/Editor/ErrorReport.cpp
index 4fd7d41a96..f93ea7606d 100644
--- a/Code/Editor/ErrorReport.cpp
+++ b/Code/Editor/ErrorReport.cpp
@@ -67,24 +67,6 @@ QString CErrorRecord::GetErrorText() const
{
str += QString("\t ");
}
- if (pItem)
- {
- switch (pItem->GetType())
- {
- case EDB_TYPE_MATERIAL:
- str += QString("\t Material=\"");
- break;
- case EDB_TYPE_PARTICLE:
- str += QString("\t Particle=\"");
- break;
- case EDB_TYPE_MUSIC:
- str += QString("\t Music=\"");
- break;
- default:
- str += QString("\t Item=\"");
- }
- str += pItem->GetFullName() + "\"";
- }
if (pObject)
{
str += QString("\t Object=\"") + pObject->GetName() + "\"";
@@ -101,7 +83,6 @@ CErrorReport::CErrorReport()
m_bImmediateMode = true;
m_bShowErrors = true;
m_pObject = nullptr;
- m_pItem = nullptr;
m_pParticle = nullptr;
}
@@ -140,10 +121,6 @@ void CErrorReport::ReportError(CErrorRecord& err)
{
err.pObject = m_pObject;
}
- else if (err.pItem == nullptr && m_pItem != nullptr)
- {
- err.pItem = m_pItem;
- }
m_errors.push_back(err);
}
bNoRecurse = false;
@@ -255,12 +232,6 @@ void CErrorReport::SetCurrentValidatorObject(CBaseObject* pObject)
m_pObject = pObject;
}
-//////////////////////////////////////////////////////////////////////////
-void CErrorReport::SetCurrentValidatorItem(CBaseLibraryItem* pItem)
-{
- m_pItem = pItem;
-}
-
//////////////////////////////////////////////////////////////////////////
void CErrorReport::SetCurrentFile(const QString& file)
{
diff --git a/Code/Editor/ErrorReport.h b/Code/Editor/ErrorReport.h
index 3b9a860301..98d230e383 100644
--- a/Code/Editor/ErrorReport.h
+++ b/Code/Editor/ErrorReport.h
@@ -17,8 +17,11 @@
// forward declarations.
class CParticleItem;
-#include "BaseLibraryItem.h"
+#include
+#include
+
#include "Objects/BaseObject.h"
+#include "Include/EditorCoreAPI.h"
#include "Include/IErrorReport.h"
#include "ErrorRecorder.h"
@@ -56,16 +59,13 @@ public:
int count;
//! Object that caused this error.
_smart_ptr pObject;
- //! Library Item that caused this error.
- _smart_ptr pItem;
int flags;
CErrorRecord(CBaseObject* object, ESeverity _severity, const QString& _error, int _flags = 0, int _count = 0,
- CBaseLibraryItem* item = 0, EValidatorModule _module = VALIDATOR_MODULE_EDITOR)
+ EValidatorModule _module = VALIDATOR_MODULE_EDITOR)
: severity(_severity)
, module(_module)
, pObject(object)
- , pItem(item)
, flags(_flags)
, count(_count)
, error(_error)
@@ -77,7 +77,6 @@ public:
severity = ESEVERITY_WARNING;
module = VALIDATOR_MODULE_EDITOR;
pObject = 0;
- pItem = 0;
flags = 0;
count = 0;
}
@@ -116,8 +115,6 @@ public:
//! Assign current Object to which new reported warnings are assigned.
void SetCurrentValidatorObject(CBaseObject* pObject);
- //! Assign current Item to which new reported warnings are assigned.
- void SetCurrentValidatorItem(CBaseLibraryItem* pItem);
//! Assign current filename.
void SetCurrentFile(const QString& file);
@@ -127,7 +124,6 @@ private:
bool m_bImmediateMode;
bool m_bShowErrors;
_smart_ptr m_pObject;
- _smart_ptr m_pItem;
CParticleItem* m_pParticle;
QString m_currentFilename;
};
diff --git a/Code/Editor/ErrorReportDialog.cpp b/Code/Editor/ErrorReportDialog.cpp
index 2d551d6c8b..bbeede79ef 100644
--- a/Code/Editor/ErrorReportDialog.cpp
+++ b/Code/Editor/ErrorReportDialog.cpp
@@ -362,10 +362,6 @@ void CErrorReportDialog::CopyToClipboard()
{
str += QString::fromLatin1(" [Object: %1]").arg(pRecord->pObject->GetName());
}
- if (pRecord->pItem)
- {
- str += QString::fromLatin1(" [Material: %1]").arg(pRecord->pItem->GetName());
- }
str += QString::fromLatin1("\r\n");
}
}
diff --git a/Code/Editor/ErrorReportTableModel.cpp b/Code/Editor/ErrorReportTableModel.cpp
index f5dce1a86d..923991bb62 100644
--- a/Code/Editor/ErrorReportTableModel.cpp
+++ b/Code/Editor/ErrorReportTableModel.cpp
@@ -149,11 +149,7 @@ QVariant CErrorReportTableModel::data(const CErrorRecord& record, int column, in
case ColumnFile:
return record.file;
case ColumnObject:
- if (record.pItem)
- {
- return record.pItem->GetFullName();
- }
- else if (record.pObject)
+ if (record.pObject)
{
return record.pObject->GetName();
}
diff --git a/Code/Editor/GameEngine.cpp b/Code/Editor/GameEngine.cpp
index db4c587f54..9786dcf1b8 100644
--- a/Code/Editor/GameEngine.cpp
+++ b/Code/Editor/GameEngine.cpp
@@ -42,8 +42,6 @@
#include "ViewManager.h"
#include "AnimationContext.h"
-#include "UndoViewPosition.h"
-#include "UndoViewRotation.h"
#include "MainWindow.h"
#include "Include/IObjectManager.h"
#include "ActionManager.h"
diff --git a/Code/Editor/Geometry/TriMesh.cpp b/Code/Editor/Geometry/TriMesh.cpp
deleted file mode 100644
index efc201095d..0000000000
--- a/Code/Editor/Geometry/TriMesh.cpp
+++ /dev/null
@@ -1,587 +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 "EditorDefs.h"
-
-#include "TriMesh.h"
-
-// Editor
-#include "Util/fastlib.h"
-#include "Objects/SubObjSelection.h"
-
-
-//////////////////////////////////////////////////////////////////////////
-CTriMesh::CTriMesh()
-{
- pFaces = nullptr;
- pVertices = nullptr;
- pWSVertices = nullptr;
- pUV = nullptr;
- pColors = nullptr;
- pEdges = nullptr;
- pWeights = nullptr;
-
- nFacesCount = 0;
- nVertCount = 0;
- nUVCount = 0;
- nEdgeCount = 0;
-
- selectionType = SO_ELEM_NONE;
-
- memset(m_streamSize, 0, sizeof(m_streamSize));
- memset(m_streamSel, 0, sizeof(m_streamSel));
- streamSelMask = 0;
-
- m_streamSel[VERTICES] = &vertSel;
- m_streamSel[EDGES] = &edgeSel;
- m_streamSel[FACES] = &faceSel;
-}
-
-//////////////////////////////////////////////////////////////////////////
-CTriMesh::~CTriMesh()
-{
- free(pFaces);
- free(pEdges);
- free(pVertices);
- free(pUV);
- free(pColors);
- free(pWSVertices);
- free(pWeights);
-}
-
-// Set stream size.
-void CTriMesh::ReallocStream(int stream, int nNewCount)
-{
- assert(stream >= 0 && stream < LAST_STREAM);
- if (stream < 0 || stream >= LAST_STREAM)
- {
- return;
- }
- if (m_streamSize[stream] == nNewCount)
- {
- return; // Stream already have required size.
- }
- void* pStream = nullptr;
- int nElementSize = 0;
- GetStreamInfo(stream, pStream, nElementSize);
- pStream = ReAllocElements(pStream, nNewCount, nElementSize);
- m_streamSize[stream] = nNewCount;
-
- switch (stream)
- {
- case VERTICES:
- pVertices = (CTriVertex*)pStream;
- nVertCount = nNewCount;
- vertSel.resize(nNewCount);
- break;
- case FACES:
- pFaces = (CTriFace*)pStream;
- nFacesCount = nNewCount;
- faceSel.resize(nNewCount);
- break;
- case EDGES:
- pEdges = (CTriEdge*)pStream;
- nEdgeCount = nNewCount;
- edgeSel.resize(nNewCount);
- break;
- case TEXCOORDS:
- pUV = (SMeshTexCoord*)pStream;
- nUVCount = nNewCount;
- break;
- case COLORS:
- pColors = (SMeshColor*)pStream;
- break;
- case WEIGHTS:
- pWeights = (float*)pStream;
- break;
- case LINES:
- pLines = (CTriLine*)pStream;
- break;
- case WS_POSITIONS:
- pWSVertices = (Vec3*)pStream;
- break;
- default:
- assert(0); // unknown stream.
- }
- m_streamSize[stream] = nNewCount;
-}
-
-// Set stream size.
-void CTriMesh::GetStreamInfo(int stream, void*& pStream, int& nElementSize) const
-{
- assert(stream >= 0 && stream < LAST_STREAM);
- switch (stream)
- {
- case VERTICES:
- pStream = pVertices;
- nElementSize = sizeof(CTriVertex);
- break;
- case FACES:
- pStream = pFaces;
- nElementSize = sizeof(CTriFace);
- break;
- case EDGES:
- pStream = pEdges;
- nElementSize = sizeof(CTriEdge);
- break;
- case TEXCOORDS:
- pStream = pUV;
- nElementSize = sizeof(SMeshTexCoord);
- break;
- case COLORS:
- pStream = pColors;
- nElementSize = sizeof(SMeshColor);
- break;
- case WEIGHTS:
- pStream = pWeights;
- nElementSize = sizeof(float);
- break;
- case LINES:
- pStream = pLines;
- nElementSize = sizeof(CTriLine);
- break;
- case WS_POSITIONS:
- pStream = pWSVertices;
- nElementSize = sizeof(Vec3);
- break;
- default:
- assert(0); // unknown stream.
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-void* CTriMesh::ReAllocElements(void* old_ptr, int new_elem_num, int size_of_element)
-{
- return realloc(old_ptr, new_elem_num * size_of_element);
-}
-
-/////////////////////////////////////////////////////////////////////////////////////
-inline int FindVertexInHash(const Vec3& vPosToFind, const CTriVertex* pVectors, std::vector& hash, float fEpsilon)
-{
- for (uint32 i = 0; i < hash.size(); i++)
- {
- const Vec3& v0 = pVectors[hash[i]].pos;
- const Vec3& v1 = vPosToFind;
- if (fabsf(v0.y - v1.y) < fEpsilon && fabsf(v0.x - v1.x) < fEpsilon && fabsf(v0.z - v1.z) < fEpsilon)
- {
- return hash[i];
- }
- }
- return -1;
-}
-
-/////////////////////////////////////////////////////////////////////////////////////
-inline int FindTexCoordInHash(const SMeshTexCoord& coordToFind, const SMeshTexCoord* pCoords, std::vector& hash, float fEpsilon)
-{
- for (uint32 i = 0; i < hash.size(); i++)
- {
- const SMeshTexCoord& t0 = pCoords[hash[i]];
- const SMeshTexCoord& t1 = coordToFind;
-
- if (t0.IsEquivalent(t1, fEpsilon))
- {
- return hash[i];
- }
- }
- return -1;
-}
-
-
-//////////////////////////////////////////////////////////////////////////
-void CTriMesh::SharePositions()
-{
- float fEpsilon = 0.0001f;
- float fHashScale = 256.0f / MAX(bbox.GetSize().GetLength(), fEpsilon);
- std::vector arrHashTable[256];
-
- CTriVertex* pNewVerts = new CTriVertex[GetVertexCount()];
- SMeshColor* pNewColors = nullptr;
- if (pColors)
- {
- pNewColors = new SMeshColor[GetVertexCount()];
- }
-
- int nLastIndex = 0;
- for (int f = 0; f < GetFacesCount(); f++)
- {
- CTriFace& face = pFaces[f];
- for (int i = 0; i < 3; i++)
- {
- const Vec3& v = pVertices[face.v[i]].pos;
- uint8 nHash = static_cast(RoundFloatToInt((v.x + v.y + v.z) * fHashScale));
-
- int find = FindVertexInHash(v, pNewVerts, arrHashTable[nHash], fEpsilon);
- if (find < 0)
- {
- pNewVerts[nLastIndex] = pVertices[face.v[i]];
- if (pColors)
- {
- pNewColors[nLastIndex] = pColors[face.v[i]];
- }
- face.v[i] = nLastIndex;
- // Reserve some space already.
- arrHashTable[nHash].reserve(100);
- arrHashTable[nHash].push_back(nLastIndex);
- nLastIndex++;
- }
- else
- {
- face.v[i] = find;
- }
- }
- }
-
- SetVertexCount(nLastIndex);
- memcpy(pVertices, pNewVerts, nLastIndex * sizeof(CTriVertex));
- delete []pNewVerts;
-
- if (pColors)
- {
- SetColorsCount(nLastIndex);
- memcpy(pColors, pNewColors, nLastIndex * sizeof(SMeshColor));
- delete []pNewColors;
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CTriMesh::ShareUV()
-{
- float fEpsilon = 0.0001f;
- float fHashScale = 256.0f;
- std::vector arrHashTable[256];
-
- SMeshTexCoord* pNewUV = new SMeshTexCoord[GetUVCount()];
-
- int nLastIndex = 0;
- for (int f = 0; f < GetFacesCount(); f++)
- {
- CTriFace& face = pFaces[f];
- for (int i = 0; i < 3; i++)
- {
- const Vec2 uv = pUV[face.uv[i]].GetUV();
- uint8 nHash = static_cast(RoundFloatToInt((uv.x + uv.y) * fHashScale));
-
- int find = FindTexCoordInHash(pUV[face.uv[i]], pNewUV, arrHashTable[nHash], fEpsilon);
- if (find < 0)
- {
- pNewUV[nLastIndex] = pUV[face.uv[i]];
- face.uv[i] = nLastIndex;
- arrHashTable[nHash].reserve(100);
- arrHashTable[nHash].push_back(nLastIndex);
- nLastIndex++;
- }
- else
- {
- face.uv[i] = find;
- }
- }
- }
-
- SetUVCount(nLastIndex);
- memcpy(pUV, pNewUV, nLastIndex * sizeof(SMeshTexCoord));
- delete []pNewUV;
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CTriMesh::CalcFaceNormals()
-{
- for (int i = 0; i < nFacesCount; i++)
- {
- CTriFace& face = pFaces[i];
- Vec3 p1 = pVertices[face.v[0]].pos;
- Vec3 p2 = pVertices[face.v[1]].pos;
- Vec3 p3 = pVertices[face.v[2]].pos;
- face.normal = (p2 - p1).Cross(p3 - p1);
- face.normal.Normalize();
- }
-}
-
-#define TEX_EPS 0.001f
-#define VER_EPS 0.001f
-
-//////////////////////////////////////////////////////////////////////////
-void CTriMesh::CopyStream(CTriMesh& fromMesh, int stream)
-{
- void* pTrgStream = nullptr;
- void* pSrcStream = nullptr;
- int nElemSize = 0;
- fromMesh.GetStreamInfo(stream, pSrcStream, nElemSize);
- if (pSrcStream)
- {
- ReallocStream(stream, fromMesh.GetStreamSize(stream));
- GetStreamInfo(stream, pTrgStream, nElemSize);
- memcpy(pTrgStream, pSrcStream, nElemSize * fromMesh.GetStreamSize(stream));
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CTriMesh::Copy(CTriMesh& fromMesh, int nCopyFlags)
-{
- streamSelMask = fromMesh.streamSelMask;
-
- if (nCopyFlags & COPY_VERTICES)
- {
- CopyStream(fromMesh, VERTICES);
- }
- if (nCopyFlags & COPY_FACES)
- {
- CopyStream(fromMesh, FACES);
- }
- if (nCopyFlags & COPY_EDGES)
- {
- CopyStream(fromMesh, EDGES);
- }
- if (nCopyFlags & COPY_TEXCOORDS)
- {
- CopyStream(fromMesh, TEXCOORDS);
- }
- if (nCopyFlags & COPY_COLORS)
- {
- CopyStream(fromMesh, COLORS);
- }
- if (nCopyFlags & COPY_WEIGHTS)
- {
- CopyStream(fromMesh, WEIGHTS);
- }
- if (nCopyFlags & COPY_LINES)
- {
- CopyStream(fromMesh, LINES);
- }
-
- if (nCopyFlags & COPY_VERT_SEL)
- {
- vertSel = fromMesh.vertSel;
- }
- if (nCopyFlags & COPY_EDGE_SEL)
- {
- edgeSel = fromMesh.edgeSel;
- }
- if (nCopyFlags & COPY_FACE_SEL)
- {
- faceSel = fromMesh.faceSel;
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CTriMesh::UpdateEdges()
-{
- SetEdgeCount(GetFacesCount() * 3);
-
- std::map edgemap;
-
- int nEdges = 0;
- for (int i = 0; i < GetFacesCount(); i++)
- {
- CTriFace& face = pFaces[i];
- for (int j = 0; j < 3; j++)
- {
- int v0 = j;
- int v1 = (j != 2) ? j + 1 : 0;
- CTriEdge edge;
- edge.flags = 0;
-
- // First vertex index must always be smaller.
- if (face.v[v0] < face.v[v1])
- {
- edge.v[0] = face.v[v0];
- edge.v[1] = face.v[v1];
- }
- else
- {
- edge.v[0] = face.v[v1];
- edge.v[1] = face.v[v0];
- }
- edge.face[0] = i;
- edge.face[1] = -1;
- int nedge = stl::find_in_map(edgemap, edge, -1);
- if (nedge >= 0)
- {
- // Assign this face as a second member of the edge.
- if (pEdges[nedge].face[1] < 0)
- {
- pEdges[nedge].face[1] = i;
- }
-
- face.edge[j] = nedge;
- }
- else
- {
- edgemap[edge] = nEdges;
- pEdges[nEdges] = edge;
- face.edge[j] = nEdges;
- nEdges++;
- }
- }
- }
-
- SetEdgeCount(nEdges);
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CTriMesh::SoftSelection(const SSubObjSelOptions& options)
-{
- int i;
- int nVerts = GetVertexCount();
- CTriVertex* pVerts = pVertices;
-
- for (i = 0; i < nVerts; i++)
- {
- if (pWeights[i] == 1.0f)
- {
- const Vec3& vp = pVerts[i].pos;
- for (int j = 0; j < nVerts; j++)
- {
- if (pWeights[j] != 1.0f)
- {
- if (vp.IsEquivalent(pVerts[j].pos, options.fSoftSelFalloff))
- {
- float fDist = vp.GetDistance(pVerts[j].pos);
- if (fDist < options.fSoftSelFalloff)
- {
- float fWeight = 1.0f - (fDist / options.fSoftSelFalloff);
- if (fWeight > pWeights[j])
- {
- pWeights[j] = fWeight;
- }
- }
- }
- }
- }
- }
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-bool CTriMesh::UpdateSelection()
-{
- bool bAnySelected = false;
- if (selectionType == SO_ELEM_VERTEX)
- {
- for (int i = 0; i < GetVertexCount(); i++)
- {
- if (vertSel[i])
- {
- bAnySelected = true;
- pWeights[i] = 1.0f;
- }
- else
- {
- pWeights[i] = 0;
- }
- }
- }
- if (selectionType == SO_ELEM_EDGE)
- {
- // Clear weights.
- for (int i = 0; i < GetVertexCount(); i++)
- {
- pWeights[i] = 0;
- }
-
- for (int i = 0; i < GetEdgeCount(); i++)
- {
- if (edgeSel[i])
- {
- bAnySelected = true;
- CTriEdge& edge = pEdges[i];
- for (int j = 0; j < 2; j++)
- {
- pWeights[edge.v[j]] = 1.0f;
- }
- }
- }
- }
- else if (selectionType == SO_ELEM_FACE)
- {
- // Clear weights.
- for (int i = 0; i < GetVertexCount(); i++)
- {
- pWeights[i] = 0;
- }
-
- for (int i = 0; i < GetFacesCount(); i++)
- {
- if (faceSel[i])
- {
- bAnySelected = true;
- CTriFace& face = pFaces[i];
- for (int j = 0; j < 3; j++)
- {
- pWeights[face.v[j]] = 1.0f;
- }
- }
- }
- }
- return bAnySelected;
-}
-
-
-//////////////////////////////////////////////////////////////////////////
-bool CTriMesh::ClearSelection()
-{
- bool bWasSelected = false;
- // Remove all selections.
- int i;
- for (i = 0; i < GetVertexCount(); i++)
- {
- pWeights[i] = 0;
- }
- streamSelMask = 0;
- for (int ii = 0; ii < LAST_STREAM; ii++)
- {
- if (m_streamSel[ii] && !m_streamSel[ii]->is_zero())
- {
- bWasSelected = true;
- m_streamSel[ii]->clear();
- }
- }
- return bWasSelected;
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CTriMesh::GetEdgesByVertex(MeshElementsArray& inVertices, MeshElementsArray& outEdges)
-{
- // Brute force algorithm using binary search.
- // for every edge check if edge vertex is inside inVertices array.
- std::sort(inVertices.begin(), inVertices.end());
- for (int i = 0; i < GetEdgeCount(); i++)
- {
- if (stl::binary_find(inVertices.begin(), inVertices.end(), static_cast(pEdges[i].v[0])) != inVertices.end())
- {
- outEdges.push_back(i);
- }
- else if (stl::binary_find(inVertices.begin(), inVertices.end(), static_cast(pEdges[i].v[1])) != inVertices.end())
- {
- outEdges.push_back(i);
- }
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CTriMesh::GetFacesByVertex(MeshElementsArray& inVertices, MeshElementsArray& outFaces)
-{
- // Brute force algorithm using binary search.
- // for every face check if face vertex is inside inVertices array.
- std::sort(inVertices.begin(), inVertices.end());
- for (int i = 0; i < GetFacesCount(); i++)
- {
- if (stl::binary_find(inVertices.begin(), inVertices.end(), static_cast(pFaces[i].v[0])) != inVertices.end())
- {
- outFaces.push_back(i);
- }
- else if (stl::binary_find(inVertices.begin(), inVertices.end(), static_cast(pFaces[i].v[1])) != inVertices.end())
- {
- outFaces.push_back(i);
- }
- else if (stl::binary_find(inVertices.begin(), inVertices.end(), static_cast(pFaces[i].v[2])) != inVertices.end())
- {
- outFaces.push_back(i);
- }
- }
-}
diff --git a/Code/Editor/Geometry/TriMesh.h b/Code/Editor/Geometry/TriMesh.h
deleted file mode 100644
index a6c58b8f9d..0000000000
--- a/Code/Editor/Geometry/TriMesh.h
+++ /dev/null
@@ -1,238 +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_EDITOR_GEOMETRY_TRIMESH_H
-#define CRYINCLUDE_EDITOR_GEOMETRY_TRIMESH_H
-#pragma once
-
-#include
-#include "Util/bitarray.h"
-
-struct SSubObjSelOptions;
-
-typedef std::vector MeshElementsArray;
-
-//////////////////////////////////////////////////////////////////////////
-// Vertex used in the TriMesh.
-//////////////////////////////////////////////////////////////////////////
-struct CTriVertex
-{
- Vec3 pos;
- //float weight; // Selection weight in 0-1 range.
-};
-
-//////////////////////////////////////////////////////////////////////////
-// Triangle face used by the Triangle mesh.
-//////////////////////////////////////////////////////////////////////////
-struct CTriFace
-{
- uint32 v[3]; // Indices to vertices array.
- uint32 uv[3]; // Indices to texture coordinates array.
- Vec3 n[3]; // Vertex normals at face vertices.
- Vec3 normal; // Face normal.
- uint32 edge[3]; // Indices to the face edges.
- unsigned char MatID; // Index of face sub material.
- unsigned char flags; // see ETriMeshFlags
-};
-
-//////////////////////////////////////////////////////////////////////////
-// Mesh edge.
-//////////////////////////////////////////////////////////////////////////
-struct CTriEdge
-{
- uint32 v[2]; // Indices to edge vertices.
- int face[2]; // Indices to edge faces (-1 if no face).
- uint32 flags; // see ETriMeshFlags
-
- CTriEdge() {}
- bool operator==(const CTriEdge& edge) const
- {
- if ((v[0] == edge.v[0] && v[1] == edge.v[1]) ||
- (v[0] == edge.v[1] && v[1] == edge.v[0]))
- {
- return true;
- }
- return false;
- }
- bool operator!=(const CTriEdge& edge) const { return !(*this == edge); }
- bool operator<(const CTriEdge& edge) const { return (*(uint64*)v < *(uint64*)edge.v); }
- bool operator>(const CTriEdge& edge) const { return (*(uint64*)v > *(uint64*)edge.v); }
-};
-
-//////////////////////////////////////////////////////////////////////////
-// Mesh line.
-//////////////////////////////////////////////////////////////////////////
-struct CTriLine
-{
- uint32 v[2]; // Indices to edge vertices.
-
- CTriLine() {}
- bool operator==(const CTriLine& edge) const
- {
- if ((v[0] == edge.v[0] && v[1] == edge.v[1]) ||
- (v[0] == edge.v[1] && v[1] == edge.v[0]))
- {
- return true;
- }
- return false;
- }
- bool operator!=(const CTriLine& edge) const { return !(*this == edge); }
- bool operator<(const CTriLine& edge) const { return (*(uint64*)v < *(uint64*)edge.v); }
- bool operator>(const CTriLine& edge) const { return (*(uint64*)v > *(uint64*)edge.v); }
-};
-
-//////////////////////////////////////////////////////////////////////////
-struct CTriMeshPoly
-{
- std::vector v; // Indices to vertices array.
- std::vector uv; // Indices to texture coordinates array.
- std::vector n; // Vertex normals at face vertices.
- Vec3 normal; // Polygon normal.
- uint32 edge[3]; // Indices to the face edges.
- unsigned char MatID; // Index of face sub material.
- unsigned char flags; // optional flags.
-};
-
-//////////////////////////////////////////////////////////////////////////
-// CTriMesh is used in the Editor as a general purpose editable triangle mesh.
-//////////////////////////////////////////////////////////////////////////
-class CTriMesh
-{
-public:
- enum EStream
- {
- VERTICES,
- FACES,
- EDGES,
- TEXCOORDS,
- COLORS,
- WEIGHTS,
- LINES,
- WS_POSITIONS,
- LAST_STREAM,
- };
- enum ECopyFlags
- {
- COPY_VERTICES = BIT(1),
- COPY_FACES = BIT(2),
- COPY_EDGES = BIT(3),
- COPY_TEXCOORDS = BIT(4),
- COPY_COLORS = BIT(5),
- COPY_VERT_SEL = BIT(6),
- COPY_EDGE_SEL = BIT(7),
- COPY_FACE_SEL = BIT(8),
- COPY_WEIGHTS = BIT(9),
- COPY_LINES = BIT(10),
- COPY_ALL = 0xFFFF,
- };
- // geometry data
- CTriFace* pFaces;
- CTriEdge* pEdges;
- CTriVertex* pVertices;
- SMeshTexCoord* pUV;
- SMeshColor* pColors; // If allocated same size as pVerts array.
- Vec3* pWSVertices; // World space vertices.
- float* pWeights;
- CTriLine* pLines;
-
- int nFacesCount;
- int nVertCount;
- int nUVCount;
- int nEdgeCount;
- int nLinesCount;
-
- AABB bbox;
-
- //////////////////////////////////////////////////////////////////////////
- // Selections.
- //////////////////////////////////////////////////////////////////////////
- CBitArray vertSel;
- CBitArray edgeSel;
- CBitArray faceSel;
- // Every bit of the selection mask correspond to a stream, if bit is set this stream have some elements selected
- int streamSelMask;
-
- // Selection element type.
- // see ESubObjElementType
- int selectionType;
-
- //////////////////////////////////////////////////////////////////////////
- // Vertices of the front facing triangles.
- CBitArray frontFacingVerts;
-
- //////////////////////////////////////////////////////////////////////////
- // Functions.
- //////////////////////////////////////////////////////////////////////////
- CTriMesh();
- ~CTriMesh();
-
- int GetFacesCount() const { return nFacesCount; }
- int GetVertexCount() const { return nVertCount; }
- int GetUVCount() const { return nUVCount; }
- int GetEdgeCount() const { return nEdgeCount; }
- int GetLinesCount() const { return nLinesCount; }
-
- //////////////////////////////////////////////////////////////////////////
- void SetFacesCount(int nNewCount) { ReallocStream(FACES, nNewCount); }
- void SetVertexCount(int nNewCount)
- {
- ReallocStream(VERTICES, nNewCount);
- if (pColors)
- {
- ReallocStream(COLORS, nNewCount);
- }
- ReallocStream(WEIGHTS, nNewCount);
- }
- void SetColorsCount(int nNewCount) { ReallocStream(COLORS, nNewCount); }
- void SetUVCount(int nNewCount) { ReallocStream(TEXCOORDS, nNewCount); }
- void SetEdgeCount(int nNewCount) { ReallocStream(EDGES, nNewCount); }
- void SetLinesCount(int nNewCount) { ReallocStream(LINES, nNewCount); }
-
- void ReallocStream(int stream, int nNewCount);
- void GetStreamInfo(int stream, void*& pStream, int& nElementSize) const;
- int GetStreamSize(int stream) const { return m_streamSize[stream]; };
-
- // Calculate per face normal.
- void CalcFaceNormals();
-
- //////////////////////////////////////////////////////////////////////////
- // Welding functions.
- //////////////////////////////////////////////////////////////////////////
- void SharePositions();
- void ShareUV();
- //////////////////////////////////////////////////////////////////////////
- // Recreate edges of the mesh.
- void UpdateEdges();
-
- void Copy(CTriMesh& fromMesh, int nCopyFlags = COPY_ALL);
-
- //////////////////////////////////////////////////////////////////////////
- // Sub-object selection specific methods.
- //////////////////////////////////////////////////////////////////////////
- // Return true if something is selected.
- bool UpdateSelection();
- // Clear all selections, return true if something was selected.
- bool ClearSelection();
- void SoftSelection(const SSubObjSelOptions& options);
- CBitArray* GetStreamSelection(int nStream) { return m_streamSel[nStream]; };
- // Returns true if specified stream have any selected elements.
- bool StreamHaveSelection(int nStream) { return streamSelMask & (1 << nStream); }
- void GetEdgesByVertex(MeshElementsArray& inVertices, MeshElementsArray& outEdges);
- void GetFacesByVertex(MeshElementsArray& inVertices, MeshElementsArray& outFaces);
-
-private:
- void* ReAllocElements(void* old_ptr, int new_elem_num, int size_of_element);
- void CopyStream(CTriMesh& fromMesh, int stream);
-
- // For internal use.
- int m_streamSize[LAST_STREAM];
- CBitArray* m_streamSel[LAST_STREAM];
-};
-
-#endif // CRYINCLUDE_EDITOR_GEOMETRY_TRIMESH_H
diff --git a/Code/Editor/IEditor.h b/Code/Editor/IEditor.h
index d2d4998187..90f1b63f55 100644
--- a/Code/Editor/IEditor.h
+++ b/Code/Editor/IEditor.h
@@ -44,7 +44,6 @@ class CMusicManager;
struct IEditorParticleManager;
class CEAXPresetManager;
class CErrorReport;
-class CBaseLibraryItem;
class ICommandManager;
class CEditorCommandManager;
class CHyperGraphManager;
@@ -52,10 +51,7 @@ class CConsoleSynchronization;
class CUIEnumsDatabase;
struct ISourceControl;
struct IEditorClassFactory;
-struct IDataBaseItem;
struct ITransformManipulator;
-struct IDataBaseManager;
-class IFacialEditor;
class CDialog;
#if defined(AZ_PLATFORM_WINDOWS)
class C3DConnexionDriver;
@@ -82,8 +78,6 @@ struct IEventLoopHook;
struct IErrorReport; // Vladimir@conffx
struct IFileUtil; // Vladimir@conffx
struct IEditorLog; // Vladimir@conffx
-struct IEditorMaterialManager; // Vladimir@conffx
-struct IBaseLibraryManager; // Vladimir@conffx
struct IImageUtil; // Vladimir@conffx
struct IEditorParticleUtils; // Leroy@conffx
struct ILogFile; // Vladimir@conffx
@@ -519,10 +513,6 @@ struct IEditor
//! Get access to object manager.
virtual struct IObjectManager* GetObjectManager() = 0;
virtual CSettingsManager* GetSettingsManager() = 0;
- //! Get DB manager that own items of specified type.
- virtual IDataBaseManager* GetDBItemManager(EDataBaseItemType itemType) = 0;
- virtual IBaseLibraryManager* GetMaterialManagerLibrary() = 0; // Vladimir@conffx
- virtual IEditorMaterialManager* GetIEditorMaterialManager() = 0; // Vladimir@Conffx
//! Returns IconManager.
virtual IIconManager* GetIconManager() = 0;
//! Get Music Manager.
diff --git a/Code/Editor/IEditorImpl.cpp b/Code/Editor/IEditorImpl.cpp
index 0846cf8a9e..38006c6fca 100644
--- a/Code/Editor/IEditorImpl.cpp
+++ b/Code/Editor/IEditorImpl.cpp
@@ -892,11 +892,6 @@ void CEditorImpl::CloseView(const GUID& classId)
}
}
-IDataBaseManager* CEditorImpl::GetDBItemManager([[maybe_unused]] EDataBaseItemType itemType)
-{
- return nullptr;
-}
-
bool CEditorImpl::SelectColor(QColor& color, QWidget* parent)
{
const AZ::Color c = AzQtComponents::fromQColor(color);
@@ -1624,18 +1619,6 @@ SEditorSettings* CEditorImpl::GetEditorSettings()
return &gSettings;
}
-// Vladimir@Conffx
-IBaseLibraryManager* CEditorImpl::GetMaterialManagerLibrary()
-{
- return nullptr;
-}
-
-// Vladimir@Conffx
-IEditorMaterialManager* CEditorImpl::GetIEditorMaterialManager()
-{
- return nullptr;
-}
-
IImageUtil* CEditorImpl::GetImageUtil()
{
return m_pImageUtil;
diff --git a/Code/Editor/IEditorImpl.h b/Code/Editor/IEditorImpl.h
index d99b8ae802..7867912941 100644
--- a/Code/Editor/IEditorImpl.h
+++ b/Code/Editor/IEditorImpl.h
@@ -157,7 +157,6 @@ public:
void LockSelection(bool bLock) override;
bool IsSelectionLocked() override;
- IDataBaseManager* GetDBItemManager(EDataBaseItemType itemType) override;
CMusicManager* GetMusicManager() override { return m_pMusicManager; };
IEditorFileMonitor* GetFileMonitor() override;
@@ -294,8 +293,6 @@ public:
void RegisterObjectContextMenuExtension(TContextMenuExtensionFunc func) override;
SSystemGlobalEnvironment* GetEnv() override;
- IBaseLibraryManager* GetMaterialManagerLibrary() override; // Vladimir@Conffx
- IEditorMaterialManager* GetIEditorMaterialManager() override; // Vladimir@Conffx
IImageUtil* GetImageUtil() override; // Vladimir@conffx
SEditorSettings* GetEditorSettings() override;
ILogFile* GetLogFile() override { return m_pLogFile; }
diff --git a/Code/Editor/Include/HitContext.h b/Code/Editor/Include/HitContext.h
index ceff0adb22..b49117bb60 100644
--- a/Code/Editor/Include/HitContext.h
+++ b/Code/Editor/Include/HitContext.h
@@ -17,7 +17,6 @@
class CGizmo;
class CBaseObject;
struct IDisplayViewport;
-class CDeepSelection;
struct AABB;
#include
@@ -105,8 +104,6 @@ struct HitContext
CBaseObject* object;
//! gizmo object that have been hit.
CGizmo* gizmo;
- //! for deep selection mode
- CDeepSelection* pDeepSelection;
//! For linking tool
const char* name;
//! true if this hit was from the object icon
@@ -131,7 +128,6 @@ struct HitContext
bIgnoreAxis = false;
bOnlyGizmo = false;
bUseSelectionHelpers = false;
- pDeepSelection = 0;
name = nullptr;
iconHit = false;
}
diff --git a/Code/Editor/Include/IAnimationCompressionManager.h b/Code/Editor/Include/IAnimationCompressionManager.h
deleted file mode 100644
index 64cebf620a..0000000000
--- a/Code/Editor/Include/IAnimationCompressionManager.h
+++ /dev/null
@@ -1,20 +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_EDITOR_INCLUDE_IANIMATIONCOMPRESSIONMANAGER_H
-#define CRYINCLUDE_EDITOR_INCLUDE_IANIMATIONCOMPRESSIONMANAGER_H
-#pragma once
-
-struct IAnimationCompressionManager
-{
- virtual bool IsEnabled() const = 0;
- virtual void UpdateLocalAnimations() = 0;
-};
-
-#endif // CRYINCLUDE_EDITOR_INCLUDE_IANIMATIONCOMPRESSIONMANAGER_H
diff --git a/Code/Editor/Include/IAssetItem.h b/Code/Editor/Include/IAssetItem.h
deleted file mode 100644
index ff80331af5..0000000000
--- a/Code/Editor/Include/IAssetItem.h
+++ /dev/null
@@ -1,433 +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 : Standard interface for asset display in the asset browser,
-// this header should be used to create plugins.
-// The method Release of this interface should NOT be called.
-// Instead, the FreeData from the database (from IAssetItemDatabase) should
-// be used as it will safely release all the items from the database.
-// It is still possible to call the release method, but this is not the
-// recomended method, specially for usage outside of the plugins because there
-// is no guarantee that a the asset will be properly removed from the database
-// manager.
-
-#ifndef CRYINCLUDE_EDITOR_INCLUDE_IASSETITEM_H
-#define CRYINCLUDE_EDITOR_INCLUDE_IASSETITEM_H
-#pragma once
-
-struct IAssetItemDatabase;
-
-namespace AssetViewer
-{
- // Used in GetAssetFieldValue for each asset type to check if field name is the right one
- inline bool IsFieldName(const char* pIncomingFieldName, const char* pFieldName)
- {
- return !strncmp(pIncomingFieldName, pFieldName, strlen(pIncomingFieldName));
- }
-}
-
-// Description:
-// This interface allows the programmer to extend asset display types visible in the asset browser.
-struct IAssetItem
- : public IUnknown
-{
- DEFINE_UUID(0x04F20346, 0x2EC3, 0x43f2, 0xBD, 0xA1, 0x2C, 0x0B, 0x97, 0x76, 0xF3, 0x84);
-
- // The supported asset flags
- enum EAssetFlags
- {
- // asset is visible in the database for filtering and sorting (not asset view control related)
- eFlag_Visible = BIT(0),
- // the asset is loaded
- eFlag_Loaded = BIT(1),
- // the asset is loaded
- eFlag_Cached = BIT(2),
- // the asset is selected in a selection set
- eFlag_Selected = BIT(3),
- // this asset is invalid, no thumb is shown/available
- eFlag_Invalid = BIT(4),
- // this asset has some errors/warnings, in the asset browser it will show some blinking/red elements
- // and the user can check out the errors. Error text will be fetched using GetAssetFieldValue( "errors", &someStringVar )
- eFlag_HasErrors = BIT(5),
- // this flag is set when the asset is rendering its contents using GDI, and not the engine's rendering capabilities
- // (this flags is used as hint for the preview tool, which will use a double-buffer canvas if this flag is set,
- // and send a memory HDC to the OnBeginPreview method, for drawing of the asset)
- eFlag_UseGdiRendering = BIT(6),
- // set if this asset is draggable into the render viewports, and can be created there
- eFlag_CanBeDraggedInViewports = BIT(7),
- // set if this asset can be moved after creation, otherwise the asset instance will just be created where user clicked
- eFlag_CanBeMovedAfterDroppedIntoViewport = BIT(8),
- // the asset thumbnail image is loaded
- eFlag_ThumbnailLoaded = BIT(9),
- // the asset thumbnail image is loaded
- eFlag_UsedInLevel = BIT(10)
- };
-
- // Asset field name and field values map
- typedef std::map < QString/*fieldName*/, QString/*value*/ > TAssetFieldValuesMap;
- // Dependency category names and corresponding files map, example: "Textures"=>{ "foam.dds","water.dds","normal.dds" }
- typedef std::map < QString/*dependencyCategory*/, std::set/*dependency filenames*/ > TAssetDependenciesMap;
-
- virtual ~IAssetItem() {
- }
-
- // Description:
- // Get the hash number/key used for database thumbnail and info records management
- virtual uint32 GetHash() const = 0;
- // Description:
- // Set the hash number/key used for database thumbnail and info records management
- virtual void SetHash(uint32 hash) = 0;
- // Description:
- // Get the owner database for this asset
- // Return Value:
- // The owner database for this asset
- // See Also:
- // SetOwnerDatabase()
- virtual IAssetItemDatabase* GetOwnerDatabase() const = 0;
- // Description:
- // Set the owner database for this asset
- // Arguments:
- // piOwnerDisplayDatabase - the owner database
- // See Also:
- // GetOwnerDatabase()
- virtual void SetOwnerDatabase(IAssetItemDatabase* pOwnerDisplayDatabase) = 0;
- // Description:
- // Get the asset's dependency files / objects
- // Return Value:
- // The vector with filenames which this asset is dependent upon, ex.: ["Textures"].(vector of textures)
- virtual const TAssetDependenciesMap& GetDependencies() const = 0;
- // Description:
- // Set the file size of this asset in bytes
- // Arguments:
- // aSize - size of the file in bytes
- // See Also:
- // GetFileSize()
- virtual void SetFileSize(quint64 aSize) = 0;
- // Description:
- // Get the file size of this asset in bytes
- // Return Value:
- // The file size of this asset in bytes
- // See Also:
- // SetFileSize()
- virtual quint64 GetFileSize() const = 0;
- // Description:
- // Set asset filename (extension included and no path)
- // Arguments:
- // pName - the asset filename (extension included and no path)
- // See Also:
- // GetFilename()
- virtual void SetFilename(const char* pName) = 0;
- // Description:
- // Get asset filename (extension included and no path)
- // Return Value:
- // The asset filename (extension included and no path)
- // See Also:
- // SetFilename()
- virtual QString GetFilename() const = 0;
- // Description:
- // Set the asset's relative path
- // Arguments:
- // pName - file's relative path
- // See Also:
- // GetRelativePath()
- virtual void SetRelativePath(const char* pName) = 0;
- // Description:
- // Get the asset's relative path
- // Return Value:
- // The asset's relative path
- // See Also:
- // SetRelativePath()
- virtual QString GetRelativePath() const = 0;
- // Description:
- // Set the file extension ( dot(s) must be included )
- // Arguments:
- // pExt - the file's extension
- // See Also:
- // GetFileExtension()
- virtual void SetFileExtension(const char* pExt) = 0;
- // Description:
- // Get the file extension ( dot(s) included )
- // Return Value:
- // The file extension ( dot(s) included )
- // See Also:
- // SetFileExtension()
- virtual QString GetFileExtension() const = 0;
- // Description:
- // Get the asset flags, with values from IAssetItem::EAssetFlags
- // Return Value:
- // The asset flags, with values from IAssetItem::EAssetFlags
- // See Also:
- // SetFlags(), SetFlag(), IsFlagSet()
- virtual UINT GetFlags() const = 0;
- // Description:
- // Set the asset flags
- // Arguments:
- // aFlags - flags, OR-ed values from IAssetItem::EAssetFlags
- // See Also:
- // GetFlags(), SetFlag(), IsFlagSet()
- virtual void SetFlags(UINT aFlags) = 0;
- // Description:
- // Set/clear a single flag bit for the asset
- // Arguments:
- // aFlag - the flag to set/clear, with values from IAssetItem::EAssetFlags
- // See Also:
- // GetFlags(), SetFlags(), IsFlagSet()
- virtual void SetFlag(EAssetFlags aFlag, bool bSet = true) = 0;
- // Description:
- // Check if a specified flag is set
- // Arguments:
- // aFlag - the flag to check, with values from IAssetItem::EAssetFlags
- // Return Value:
- // True if the flag is set
- // See Also:
- // GetFlags(), SetFlags(), SetFlag()
- virtual bool IsFlagSet(EAssetFlags aFlag) const = 0;
- // Description:
- // Set this asset's index; used in sorting, selections, and to know where an asset is in the current list
- // Arguments:
- // aIndex - the asset's index
- // See Also:
- // GetIndex()
- virtual void SetIndex(UINT aIndex) = 0;
- // Description:
- // Get the asset's index in the current list
- // Return Value:
- // The asset's index in the current list
- // See Also:
- // SetIndex()
- virtual UINT GetIndex() const = 0;
- // Description:
- // Get the asset's field raw data value into a user location, you must check the field's type ( from asset item's owner database )
- // before using this function and send the correct pointer to destination according to the type ( int8, float32, string, etc. )
- // Arguments:
- // pFieldName - the asset field name to query the value for
- // pDest - the destination variable address, must be the same type as the field type
- // Return Value:
- // True if the asset field name is found and the value is returned correctly
- // See Also:
- // SetAssetFieldValue()
- virtual QVariant GetAssetFieldValue(const char* pFieldName) const = 0;
- // Description:
- // Set the asset's field raw data value from a user location, you must check the field's type ( from asset item's owner database )
- // before using this function and send the correct pointer to source according to the type ( int8, float32, string, etc. )
- // Arguments:
- // pFieldName - the asset field name to set the value for
- // pSrc - the source variable address, must be the same type as the field type
- // Return Value:
- // True if the asset field name is found and the value is set correctly
- // See Also:
- // GetAssetFieldValue()
- virtual bool SetAssetFieldValue(const char* pFieldName, void* pSrc) = 0;
- // Description:
- // Get the drawing rectangle for the asset's thumb ( absolute viewer canvas location )
- // Arguments:
- // rstDrawingRectangle - destination location to set with the asset's thumbnail rectangle location
- // See Also:
- // SetDrawingRectangle()
- virtual void GetDrawingRectangle(QRect& rstDrawingRectangle) const = 0;
- // Description:
- // Set the drawing rectangle for the asset's thumb ( absolute viewer canvas location )
- // Arguments:
- // crstDrawingRectangle - source to set the asset's thumbnail rectangle
- // See Also:
- // GetDrawingRectangle()
- virtual void SetDrawingRectangle(const QRect& crstDrawingRectangle) = 0;
- // Description:
- // Checks if the given 2D point is inside the asset's thumb rectangle
- // Arguments:
- // nX - mouse pointer position on X axis, relative to the asset viewer control
- // nY - mouse pointer position on Y axis, relative to the asset viewer control
- // Return Value:
- // True if the given 2D point is inside the asset's thumb rectangle
- // See Also:
- // HitTest(CRect)
- virtual bool HitTest(int nX, int nY) const = 0;
- // Description:
- // Checks if the given rectangle intersects the asset thumb's rectangle
- // Arguments:
- // nX - mouse pointer position on X axis, relative to the asset viewer control
- // nY - mouse pointer position on Y axis, relative to the asset viewer control
- // Return Value:
- // True if the given rectangle intersects the asset thumb's rectangle
- // See Also:
- // HitTest(int nX,int nY)
- virtual bool HitTest(const QRect& roTestRect) const = 0;
- // Description:
- // When user drags this asset item into a viewport, this method is called when the dragging operation ends
- // and the mouse button is released, for the asset to return an instance of the asset object to be placed in the level
- // Arguments:
- // aX - instance's X position component in world coordinates
- // aY - instance's Y position component in world coordinates
- // aZ - instance's Z position component in world coordinates
- // Return Value:
- // The newly created asset instance (Example: BrushObject*)
- // See Also:
- // MoveInstanceInViewport()
- virtual void* CreateInstanceInViewport(float aX, float aY, float aZ) = 0;
- // Description:
- // When the mouse button is released after level object creation, the user now can move the mouse
- // and move the asset instance in the 3D world
- // Arguments:
- // pDraggedObject - the actual entity or brush object (CBaseObject* usually) to be moved around with the mouse
- // returned by the CreateInstanceInViewport()
- // aNewX - the new X world coordinates of the asset instance
- // aNewY - the new Y world coordinates of the asset instance
- // aNewZ - the new Z world coordinates of the asset instance
- // Return Value:
- // True if asset instance was moved properly
- // See Also:
- // CreateInstanceInViewport()
- virtual bool MoveInstanceInViewport(const void* pDraggedObject, float aNewX, float aNewY, float aNewZ) = 0;
- // Description:
- // This will be called when the user presses ESCAPE key when dragging the asset in the viewport, you must delete the given object
- // because the creation was aborted
- // Arguments:
- // pDraggedObject - the asset instance to be deleted ( you must cast to the needed type, and delete it properly )
- // See Also:
- // CreateInstanceInViewport()
- virtual void AbortCreateInstanceInViewport(const void* pDraggedObject) = 0;
- // Description:
- // This method is used to cache/load asset's data, so it can be previewed/rendered
- // Return Value:
- // True if the asset was successfully cached
- // See Also:
- // UnCache()
- virtual bool Cache() = 0;
- // Description:
- // This method is used to force cache/load asset's data, so it can be previewed/rendered
- // Return Value:
- // True if the asset was successfully forced cached
- // See Also:
- // UnCache(), Cache()
- virtual bool ForceCache() = 0;
- // Description:
- // This method is used to load the thumbnail image of the asset
- // Return Value:
- // True if thumb loaded ok
- // See Also:
- // UnloadThumbnail()
- virtual bool LoadThumbnail() = 0;
- // Description:
- // This method is used to unload the thumbnail image of the asset
- // See Also:
- // LoadThumbnail()
- virtual void UnloadThumbnail() = 0;
- // Description:
- // This is called when the asset starts to be previewed in full detail, so here you can load the whole asset, in fine detail
- // ( textures are fully loaded, models etc. ). It is called once, when the Preview dialog is shown
- // Arguments:
- // hPreviewWnd - the window handle of the quick preview dialog
- // hMemDC - the memory DC used to render assets that can render themselves in the DC, otherwise they will render in the dialog's HWND
- // See Also:
- // OnEndPreview(), GetCustomPreviewPanelHeader()
- virtual void OnBeginPreview(QWidget* hPreviewWnd) = 0;
- // Description:
- // Called when the Preview dialog is closed, you may release the detail asset data here
- // See Also:
- // OnBeginPreview(), GetCustomPreviewPanelHeader()
- virtual void OnEndPreview() = 0;
- // Description:
- // If the asset has a special preview panel with utility controls, to be placed at the top of the Preview window, it can return an child dialog window
- // otherwise it can return nullptr, if no panel is available
- // Arguments:
- // pParentWnd - a valid CDialog*, or nullptr
- // Return Value:
- // A valid child dialog window handle, if this asset wants to have a custom panel in the top side of the Asset Preview window,
- // otherwise it can return nullptr, if no panel is available
- // See Also:
- // OnBeginPreview(), OnEndPreview()
- virtual QWidget* GetCustomPreviewPanelHeader(QWidget* pParentWnd) = 0;
- virtual QWidget* GetCustomPreviewPanelFooter(QWidget* pParentWnd) = 0;
- // Description:
- // Used when dragging/rotate/zoom a model, or other asset that can support preview
- // Arguments:
- // hRenderWindow - the rendering window handle
- // rstViewport - the viewport rectangle
- // aMouseX - the render window relative mouse pointer X coordinate
- // aMouseY - the render window relative mouse pointer Y coordinate
- // aMouseDeltaX - the X coordinate delta between two mouse movements
- // aMouseDeltaY - the Y coordinate delta between two mouse movements
- // aMouseWheelDelta - the mouse wheel scroll delta/step
- // aKeyFlags - the key flags, see WM_LBUTTONUP
- // See Also:
- // OnPreviewRenderKeyEvent()
- virtual void PreviewRender(
- QWidget* hRenderWindow,
- const QRect& rstViewport,
- int aMouseX = 0, int aMouseY = 0,
- int aMouseDeltaX = 0, int aMouseDeltaY = 0,
- int aMouseWheelDelta = 0, UINT aKeyFlags = 0) = 0;
- // Description:
- // This is called when the user manipulates the assets in interactive render and a key is pressed ( with down or up state )
- // Arguments:
- // bKeyDown - true if this is a WM_KEYDOWN event, else it is a WM_KEYUP event
- // aChar - the char/key code pressed/released
- // aKeyFlags - the key flags, compatible with WM_KEYDOWN/UP events
- // See Also:
- // InteractiveRender()
- virtual void OnPreviewRenderKeyEvent(bool bKeyDown, UINT aChar, UINT aKeyFlags) = 0;
- // Description:
- // Called when user clicked once on the thumb image
- // Arguments:
- // point - mouse coordinates relative to the thumbnail rectangle
- // aKeyFlags - the key flags, see WM_LBUTTONDOWN
- // See Also:
- // OnThumbDblClick()
- virtual void OnThumbClick(const QPoint& point, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers) = 0;
- // Description:
- // Called when user double clicked on the thumb image
- // Arguments:
- // point - mouse coordinates relative to the thumbnail rectangle
- // aKeyFlags - the key flags, see WM_LBUTTONDOWN
- // See Also:
- // OnThumbClick()
- //! called when user clicked twice on the thumb image
- virtual void OnThumbDblClick(const QPoint& point, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers) = 0;
- // Description:
- // Draw the cached thumb bitmap only, if any, no other kind of rendering
- // Arguments:
- // hDC - the destination DC, where to draw the thumb
- // rRect - the destination rectangle
- // Return Value:
- // True if drawing of the thumbnail was done OK
- // See Also:
- // Render()
- virtual bool DrawThumbImage(QPainter* painter, const QRect& rRect) = 0;
- // Description:
- // Writes asset info to a XML node.
- // This is needed to save cached info as a persistent XML file for the next run of the editor.
- // Arguments:
- // node - An XML node to contain the info
- // See Also:
- // FromXML()
- virtual void ToXML(XmlNodeRef& node) const = 0;
- // Description:
- // Gets asset info from a XML node.
- // This is needed to get the asset info from previous runs of the editor without re-caching it.
- // Arguments:
- // node - An XML node that contains info for this asset
- // See Also:
- // ToXML()
- virtual void FromXML(const XmlNodeRef& node) = 0;
-
- // From IUnknown
- virtual HRESULT STDMETHODCALLTYPE QueryInterface([[maybe_unused]] const IID& riid, [[maybe_unused]] void** ppvObject)
- {
- return E_NOINTERFACE;
- };
- virtual ULONG STDMETHODCALLTYPE AddRef()
- {
- return 0;
- };
- virtual ULONG STDMETHODCALLTYPE Release()
- {
- return 0;
- };
-};
-#endif // CRYINCLUDE_EDITOR_INCLUDE_IASSETITEM_H
diff --git a/Code/Editor/Include/IAssetItemDatabase.h b/Code/Editor/Include/IAssetItemDatabase.h
deleted file mode 100644
index 39fd60e8c6..0000000000
--- a/Code/Editor/Include/IAssetItemDatabase.h
+++ /dev/null
@@ -1,259 +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 : Standard interface for asset database creators used to
-// create an asset plugin for the asset browser
-// The category of the plugin must be Asset Item DB
-
-
-#ifndef CRYINCLUDE_EDITOR_INCLUDE_IASSETITEMDATABASE_H
-#define CRYINCLUDE_EDITOR_INCLUDE_IASSETITEMDATABASE_H
-#pragma once
-struct IAssetItem;
-struct IAssetViewer;
-
-class QString;
-class QStringList;
-
-// Description:
-// This struct keeps the info, filter and sorting settings for an asset field
-struct SAssetField
-{
- // the condition for the current filter on the field
- enum EAssetFilterCondition
- {
- eCondition_Any = 0,
- // string conditions
- // this also supports '*' and '?' as wildcards inside text
- eCondition_Contains,
- // this filter will search the target for at least one of the words specified
- // ( ex: filter: "water car moon" , field value : "the_great_moon.dds", this will pass the test
- // it also supports '*' and '?' as wildcards inside words text
- eCondition_ContainsOneOfTheWords,
- eCondition_StartsWith,
- eCondition_EndsWith,
- // string & numerical conditions
- eCondition_Equal,
- eCondition_Greater,
- eCondition_Less,
- eCondition_GreaterOrEqual,
- eCondition_LessOrEqual,
- eCondition_Not,
- eCondition_InsideRange
- };
-
- // the asset field type
- enum EAssetFieldType
- {
- eType_None = 0,
- eType_Bool,
- eType_Int8,
- eType_Int16,
- eType_Int32,
- eType_Int64,
- eType_Float,
- eType_Double,
- eType_String
- };
-
- // used when a field can have different specific values
- typedef QStringList TFieldEnumValues;
-
- SAssetField(
- const char* pFieldName = "",
- const char* pDisplayName = "Unnamed field",
- EAssetFieldType aFieldType = eType_None,
- UINT aColumnWidth = 50,
- bool bVisibleInUI = true,
- bool bReadOnly = true)
- {
- m_fieldName = pFieldName;
- m_displayName = pDisplayName;
- m_fieldType = aFieldType;
- m_filterCondition = eCondition_Equal;
- m_bUseEnumValues = false;
- m_bReadOnly = bReadOnly;
- m_listColumnWidth = aColumnWidth;
- m_bFieldVisibleInUI = bVisibleInUI;
- m_bPostFilter = false;
-
- SetupEnumValues();
- }
-
- void SetupEnumValues()
- {
- m_bUseEnumValues = true;
-
- if (m_fieldType == eType_Bool)
- {
- m_enumValues.clear();
- m_enumValues.push_back("Yes");
- m_enumValues.push_back("No");
- }
- }
-
- // the field's display name, used in UI
- QString m_displayName,
- // the field internal name, used in C++ code
- m_fieldName,
- // the current filter value, if its empty "" then no filter is applied
- m_filterValue,
- // the field's max value, valid when the field's filter condition is eAssertFilterCondition_InsideRange
- m_maxFilterValue,
- // the name of the database holding this field, used in Asset Browser preset editor, if its "" then the field
- // is common to all current databases
- m_parentDatabaseName;
- // is this field visible in the UI ?
- bool m_bFieldVisibleInUI,
- // if true, then you cannot modify this field of an asset item, only use it
- m_bReadOnly,
- // this field filter is applied after the other filters
- m_bPostFilter;
- // the field data type
- EAssetFieldType m_fieldType;
- // the filter's condition
- EAssetFilterCondition m_filterCondition;
- // use the enum list values to choose a value for the field ?
- bool m_bUseEnumValues;
- // this map is used when asset field has m_bUseEnumValues on true,
- // choose a value for the field from this list in the UI
- TFieldEnumValues m_enumValues;
- // recommended list column width
- unsigned int m_listColumnWidth;
-};
-
-struct SFieldFiltersPreset
-{
- QString presetName2;
- QStringList checkedDatabaseNames;
- bool bUsedInLevel;
- std::vector fields;
-};
-
-// Description:
-// This interface allows the programmer to extend asset display types
-// visible in the asset browser.
-struct IAssetItemDatabase
- : public IUnknown
-{
- DEFINE_UUID(0xFB09B039, 0x1D9D, 0x4057, 0xA5, 0xF0, 0xAA, 0x3C, 0x7B, 0x97, 0xAE, 0xA8)
-
- typedef std::vector TAssetFields;
- typedef std::map < QString/*field name*/, SAssetField > TAssetFieldFiltersMap;
- typedef std::map < QString/*asset filename*/, IAssetItem* > TFilenameAssetMap;
- typedef AZStd::function MetaDataChangeListener;
-
- // Description:
- // Refresh the database by scanning the folders/paks for files, does not load the files, only filename and filesize are fetched
- virtual void Refresh() = 0;
- // Description:
- // Fills the asset meta data from the loaded xml meta data DB.
- // Arguments:
- // db - the database XML node from where to cache the info
- virtual void PrecacheFieldsInfoFromFileDB(const XmlNodeRef& db) = 0;
- // Description:
- // Return all assets loaded/scanned by this database
- // Return Value:
- // The assets map reference (filename-asset)
- virtual TFilenameAssetMap& GetAssets() = 0;
- // Description:
- // Get an asset item by its filename
- // Return Value:
- // A single asset from the database given the filename
- virtual IAssetItem* GetAsset(const char* pAssetFilename) = 0;
- // Description:
- // Return the asset fields this database's items support
- // Return Value:
- // The asset fields vector reference
- virtual TAssetFields& GetAssetFields() = 0;
- // Description:
- // Return an asset field object pointer by the field internal name
- // Arguments:
- // pFieldName - the internal field's name (ex: "filename", "relativepath")
- // Return Value:
- // The asset field object pointer
- virtual SAssetField* GetAssetFieldByName(const char* pFieldName) = 0;
- // Description:
- // Get the database name
- // Return Value:
- // Returns the database name, ex: "Textures"
- virtual const char* GetDatabaseName() const = 0;
- // Description:
- // Get the database supported file name extension(s)
- // Return Value:
- // Returns the supported extensions, separated by comma, ex: "tga,bmp,dds"
- virtual const char* GetSupportedExtensions() const = 0;
- // Description:
- // Free the database internal data structures
- virtual void FreeData() = 0;
- // Description:
- // Apply filters to this database which will set/unset the IAssetItem::eAssetFlag_Visible of each asset, based
- // on the given field filters
- // Arguments:
- // rFieldFilters - a reference to the field filters map (fieldname-field)
- // See Also:
- // ClearFilters()
- virtual void ApplyFilters(const TAssetFieldFiltersMap& rFieldFilters) = 0;
- // Description:
- // Clear the current filters, by setting the IAssetItem::eAssetFlag_Visible of each asset to true
- // See Also:
- // ApplyFilters()
- virtual void ClearFilters() = 0;
- virtual QWidget* CreateDbFilterDialog(QWidget* pParent, IAssetViewer* pViewerCtrl) = 0;
- virtual void UpdateDbFilterDialogUI(QWidget* pDlg) = 0;
- virtual void OnAssetBrowserOpen() = 0;
- virtual void OnAssetBrowserClose() = 0;
- // Description:
- // Gets the filename for saving new cached asset info.
- // Return Value:
- // A file name to save new transactions to the persistent asset info DB
- // See Also:
- // CAssetInfoFileDB, IAssetItem::ToXML(), IAssetItem::FromXML()
- virtual const char* GetTransactionFilename() const = 0;
- // Description:
- // Adds a callback to be called when the meta data of this asset changed.
- // Arguments:
- // callBack - A functor to be added
- // Return Value:
- // True if successful, false otherwise.
- // See Also:
- // RemoveMetaDataChangeListener()
- virtual bool AddMetaDataChangeListener(MetaDataChangeListener callBack) = 0;
- // Description:
- // Removes a callback from the list of meta data change listeners.
- // Arguments:
- // callBack - A functor to be removed
- // Return Value:
- // True if successful, false otherwise.
- // See Also:
- // AddMetaDataCHangeListener()
- virtual bool RemoveMetaDataChangeListener(MetaDataChangeListener callBack) = 0;
- // Description:
- // The method that should be called when the meta data of an asset item changes to notify all listeners
- // Arguments:
- // pAssetItem - An asset item whose meta data have changed
- // See Also:
- // AddMetaDataCHangeListener(), RemoveMetaDataChangeListener()
- virtual void OnMetaDataChange(const IAssetItem* pAssetItem) = 0;
-
- //! from IUnknown
- virtual HRESULT STDMETHODCALLTYPE QueryInterface([[maybe_unused]] REFIID riid, [[maybe_unused]] void** ppvObject)
- {
- return E_NOINTERFACE;
- };
- virtual ULONG STDMETHODCALLTYPE AddRef()
- {
- return 0;
- };
- virtual ULONG STDMETHODCALLTYPE Release()
- {
- return 0;
- };
-};
-#endif // CRYINCLUDE_EDITOR_INCLUDE_IASSETITEMDATABASE_H
diff --git a/Code/Editor/Include/IAssetViewer.h b/Code/Editor/Include/IAssetViewer.h
deleted file mode 100644
index 488ee8e508..0000000000
--- a/Code/Editor/Include/IAssetViewer.h
+++ /dev/null
@@ -1,46 +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 : This file declares a control which objective is to display
-// multiple assets allowing selection and preview of such things
-// It also handles scrolling and changes in the thumbnail display size
-
-
-#ifndef CRYINCLUDE_EDITOR_INCLUDE_IASSETVIEWER_H
-#define CRYINCLUDE_EDITOR_INCLUDE_IASSETVIEWER_H
-#pragma once
-#include "IObservable.h"
-#include "IAssetItemDatabase.h"
-
-struct IAssetItem;
-struct IAssetItemDatabase;
-
-// Description:
-// Observer for the asset viewer events
-struct IAssetViewerObserver
-{
- virtual void OnChangeStatusBarInfo(UINT nSelectedItems, UINT nVisibleItems, UINT nTotalItems) {};
- virtual void OnSelectionChanged() {};
- virtual void OnChangedPreviewedAsset(IAssetItem* pAsset) {};
- virtual void OnAssetDblClick(IAssetItem* pAsset) {};
- virtual void OnAssetFilterChanged() {};
-};
-
-// Description:
-// The asset viewer interface for the asset database plugins to use
-struct IAssetViewer
-{
- DEFINE_OBSERVABLE_PURE_METHODS(IAssetViewerObserver);
-
- virtual HWND GetRenderWindow() = 0;
- virtual void ApplyFilters(const IAssetItemDatabase::TAssetFieldFiltersMap& rFieldFilters) = 0;
- virtual const IAssetItemDatabase::TAssetFieldFiltersMap& GetCurrentFilters() = 0;
- virtual void ClearFilters() = 0;
-};
-#endif // CRYINCLUDE_EDITOR_INCLUDE_IASSETVIEWER_H
diff --git a/Code/Editor/Include/IBaseLibraryManager.h b/Code/Editor/Include/IBaseLibraryManager.h
deleted file mode 100644
index 4116b573fa..0000000000
--- a/Code/Editor/Include/IBaseLibraryManager.h
+++ /dev/null
@@ -1,143 +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_EDITOR_INCLUDE_IBASELIBRARYMANAGER_H
-#define CRYINCLUDE_EDITOR_INCLUDE_IBASELIBRARYMANAGER_H
-#pragma once
-
-#include
-#include "Include/IDataBaseItem.h"
-#include "Include/IDataBaseLibrary.h"
-#include "Include/IDataBaseManager.h"
-#include "Util/TRefCountBase.h"
-
-class CBaseLibraryItem;
-class CBaseLibrary;
-
-struct IBaseLibraryManager
- : public TRefCountBase
- , public IEditorNotifyListener
-{
- //! Clear all libraries.
- virtual void ClearAll() = 0;
-
- //////////////////////////////////////////////////////////////////////////
- // IDocListener implementation.
- //////////////////////////////////////////////////////////////////////////
- virtual void OnEditorNotifyEvent(EEditorNotifyEvent event) = 0;
-
- //////////////////////////////////////////////////////////////////////////
- // Library items.
- //////////////////////////////////////////////////////////////////////////
- //! Make a new item in specified library.
- virtual IDataBaseItem* CreateItem(IDataBaseLibrary* pLibrary) = 0;
- //! Delete item from library and manager.
- virtual void DeleteItem(IDataBaseItem* pItem) = 0;
-
- //! Find Item by its GUID.
- virtual IDataBaseItem* FindItem(REFGUID guid) const = 0;
- virtual IDataBaseItem* FindItemByName(const QString& fullItemName) = 0;
- virtual IDataBaseItem* LoadItemByName(const QString& fullItemName) = 0;
-
- virtual IDataBaseItemEnumerator* GetItemEnumerator() = 0;
-
- //////////////////////////////////////////////////////////////////////////
- // Set item currently selected.
- virtual void SetSelectedItem(IDataBaseItem* pItem) = 0;
- // Get currently selected item.
- virtual IDataBaseItem* GetSelectedItem() const = 0;
- virtual IDataBaseItem* GetSelectedParentItem() const = 0;
-
- //////////////////////////////////////////////////////////////////////////
- // Libraries.
- //////////////////////////////////////////////////////////////////////////
- //! Add Item library.
- virtual IDataBaseLibrary* AddLibrary(const QString& library, bool isLevelLibrary = false, bool bIsLoading = true) = 0;
- virtual void DeleteLibrary(const QString& library, bool forceDeleteLevel = false) = 0;
- //! Get number of libraries.
- virtual int GetLibraryCount() const = 0;
- //! Get number of modified libraries.
- virtual int GetModifiedLibraryCount() const = 0;
-
- //! Get Item library by index.
- virtual IDataBaseLibrary* GetLibrary(int index) const = 0;
-
- //! Get Level Item library.
- virtual IDataBaseLibrary* GetLevelLibrary() const = 0;
-
- //! Find Items Library by name.
- virtual IDataBaseLibrary* FindLibrary(const QString& library) = 0;
-
- //! Find the Library's index by name.
- virtual int FindLibraryIndex(const QString& library) = 0;
-
- //! Load Items library.
-#ifdef LoadLibrary
-#undef LoadLibrary
-#endif
- virtual IDataBaseLibrary* LoadLibrary(const QString& filename, bool bReload = false) = 0;
-
- //! Save all modified libraries.
- virtual void SaveAllLibs() = 0;
-
- //! Serialize property manager.
- virtual void Serialize(XmlNodeRef& node, bool bLoading) = 0;
-
- //! Export items to game.
- virtual void Export(XmlNodeRef& node) = 0;
-
- //! Returns unique name base on input name.
- // Vera@conffx, add LibName parameter so we could make an unique name depends on input library.
- // Arguments:
- // - name: name of the item
- // - libName: The library of the item. Given the library name, the function will return a unique name in the library
- // Default value "": The function will ignore the library name and return a unique name in the manager
- virtual QString MakeUniqueItemName(const QString& name, const QString& libName = "") = 0;
- virtual QString MakeFullItemName(IDataBaseLibrary* pLibrary, const QString& group, const QString& itemName) = 0;
-
- //! Root node where this library will be saved.
- virtual QString GetRootNodeName() = 0;
- //! Path to libraries in this manager.
- virtual QString GetLibsPath() = 0;
-
- //////////////////////////////////////////////////////////////////////////
- //! Validate library items for errors.
- virtual void Validate() = 0;
-
- //////////////////////////////////////////////////////////////////////////
- virtual void GatherUsedResources(CUsedResources& resources) = 0;
-
- virtual void AddListener(IDataBaseManagerListener* pListener) = 0;
- virtual void RemoveListener(IDataBaseManagerListener* pListener) = 0;
-
- //////////////////////////////////////////////////////////////////////////
- virtual void RegisterItem(CBaseLibraryItem* pItem, REFGUID newGuid) = 0;
- virtual void RegisterItem(CBaseLibraryItem* pItem) = 0;
- virtual void UnregisterItem(CBaseLibraryItem* pItem) = 0;
-
- // Only Used internally.
- virtual void OnRenameItem(CBaseLibraryItem* pItem, const QString& oldName) = 0;
-
- // Called by items to indicated that they have been modified.
- // Sends item changed event to listeners.
- virtual void OnItemChanged(IDataBaseItem* pItem) = 0;
- virtual void OnUpdateProperties(IDataBaseItem* pItem, bool bRefresh) = 0;
-
- //CONFETTI BEGIN
- // Used to change the library item order
- virtual void ChangeLibraryOrder(IDataBaseLibrary* lib, unsigned int newLocation) = 0;
- // simplifies the library renaming process
- virtual bool SetLibraryName(CBaseLibrary* lib, const QString& name) = 0;
-
-
- //Check if the file name is unique.
- //Params: library: library name. NOT the file path.
- virtual bool IsUniqueFilename(const QString& library) = 0;
- //CONFETTI END
-};
-
-#endif // CRYINCLUDE_EDITOR_INCLUDE_IBASELIBRARYMANAGER_H
diff --git a/Code/Editor/Include/IConsoleConnectivity.h b/Code/Editor/Include/IConsoleConnectivity.h
deleted file mode 100644
index 0f5e9bf35c..0000000000
--- a/Code/Editor/Include/IConsoleConnectivity.h
+++ /dev/null
@@ -1,85 +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 : Standard interface for console connectivity plugins.
-
-
-#ifndef CRYINCLUDE_EDITOR_INCLUDE_ICONSOLECONNECTIVITY_H
-#define CRYINCLUDE_EDITOR_INCLUDE_ICONSOLECONNECTIVITY_H
-#pragma once
-
-
-//////////////////////////////////////////////////////////////////////////
-// Description
-// This interface provide access to the console connectivity
-// functionality.
-//////////////////////////////////////////////////////////////////////////
-struct IConsoleConnectivity
- : public IUnknown
-{
- DEFINE_UUID(0x4DAA85E1, 0x8498, 0x402f, 0x9B, 0x85, 0x7F, 0x62, 0x9D, 0x76, 0x79, 0x8A);
-
- //////////////////////////////////////////////////////////////////////////
- //TODO: Must add the useful interface here.
- //////////////////////////////////////////////////////////////////////////
-
- // Description:
- // Checks if a development console is connected to the development PC.
- // See Also:
- // Arguments:
- // Nothing
- // Return:
- // bool - true if it is connected, false otherwise.
- virtual bool IsConnectedToConsole() = 0;
-
- // Description:
- // Send a file from the specified local filename to the console platform creating the full path
- // as required so it can copy to the remote filename.
- // See Also:
- // Nothing
- // Arguments:
- // szLocalFileName - is the local filename from which you want to copy the file.
- // szRemoteFilename - is the full path and filename to where you want to copy the file.
- // Return:
- // bool - true if the copy succeeded, false otherwise.
- virtual bool SendFile(const char* szLocalFileName, const char* szRemoteFilename) = 0;
-
- // Description:
- // Notifies to the console that a file has been changed, typically uploaded.
- // This will be usually called after a SendFile (see above) call, so that the
- // system running on the console may decide what to do with this new file.
- // Typically the system will have to load or reloads this new file.
- // See Also:
- // SendFile
- // Arguments:
- // szRemoteFilename - is the full path and filename in the console of the changed
- // file.
- // Return:
- // bool - true if succeeded sending the notification, false otherwise.
- virtual bool NotifyFileChange(const char* szRemoteFilename) = 0;
-
-
- // Description:
- // Gets the the title IP for the connected console .
- // Arguments:
- // dwConsoleAddressPlaceholder - is the pointer to the placeholder of the variable
- // which will contain the title IP of the console.
- // Return:
- // bool - true if dwConsoleAddressPlaceholder now contains the IP address, else false.
- virtual bool GetConsoleAddress(DWORD* dwConsoleAddressPlaceholder) = 0;
- //////////////////////////////////////////////////////////////////////////
- // IUnknown
- //////////////////////////////////////////////////////////////////////////
- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject) { return E_NOINTERFACE; };
- virtual ULONG STDMETHODCALLTYPE AddRef() { return 0; };
- virtual ULONG STDMETHODCALLTYPE Release() { return 0; };
- //////////////////////////////////////////////////////////////////////////
-};
-
-#endif // CRYINCLUDE_EDITOR_INCLUDE_ICONSOLECONNECTIVITY_H
diff --git a/Code/Editor/Include/IDataBaseItem.h b/Code/Editor/Include/IDataBaseItem.h
deleted file mode 100644
index 6be5f49c2d..0000000000
--- a/Code/Editor/Include/IDataBaseItem.h
+++ /dev/null
@@ -1,92 +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_EDITOR_INCLUDE_IDATABASEITEM_H
-#define CRYINCLUDE_EDITOR_INCLUDE_IDATABASEITEM_H
-#pragma once
-
-#include
-#include
-
-struct IDataBaseLibrary;
-class CUsedResources;
-
-//////////////////////////////////////////////////////////////////////////
-/** Base class for all items contained in BaseLibraray.
-*/
-struct IDataBaseItem
-{
- struct SerializeContext
- {
- XmlNodeRef node;
- bool bUndo;
- bool bLoading;
- bool bCopyPaste;
- bool bIgnoreChilds;
- bool bUniqName;
- SerializeContext()
- : node(0)
- , bLoading(false)
- , bCopyPaste(false)
- , bIgnoreChilds(false)
- , bUniqName(false)
- , bUndo(false) {};
- SerializeContext(XmlNodeRef _node, bool bLoad)
- : node(_node)
- , bLoading(bLoad)
- , bCopyPaste(false)
- , bIgnoreChilds(false)
- , bUniqName(false)
- , bUndo(false) {};
- SerializeContext(const SerializeContext& ctx)
- : node(ctx.node)
- , bLoading(ctx.bLoading)
- , bCopyPaste(ctx.bCopyPaste)
- , bIgnoreChilds(ctx.bIgnoreChilds)
- , bUniqName(ctx.bUniqName)
- , bUndo(ctx.bUndo) {};
- };
-
- virtual EDataBaseItemType GetType() const = 0;
-
- //! Return Library this item are contained in.
- //! Item can only be at one library.
- virtual IDataBaseLibrary* GetLibrary() const = 0;
-
- //! Change item name.
- virtual void SetName(const QString& name) = 0;
- //! Get item name.
- virtual const QString& GetName() const = 0;
-
- //! Get full item name, including name of library.
- //! Name formed by adding dot after name of library
- //! eg. library Pickup and item PickupRL form full item name: "Pickups.PickupRL".
- virtual QString GetFullName() const = 0;
-
- //! Get only nameof group from prototype.
- virtual QString GetGroupName() = 0;
- //! Get short name of prototype without group.
- virtual QString GetShortName() = 0;
-
- //! Serialize library item to archive.
- virtual void Serialize(SerializeContext& ctx) = 0;
-
- //! Generate new unique id for this item.
- virtual void GenerateId() = 0;
- //! Returns GUID of this material.
- virtual const GUID& GetGUID() const = 0;
-
- //! Validate item for errors.
- virtual void Validate() {};
-
- //! Gathers resources by this item.
- virtual void GatherUsedResources([[maybe_unused]] CUsedResources& resources) {};
-};
-
-#endif // CRYINCLUDE_EDITOR_INCLUDE_IDATABASEITEM_H
diff --git a/Code/Editor/Include/IDataBaseLibrary.h b/Code/Editor/Include/IDataBaseLibrary.h
deleted file mode 100644
index 75437d93e2..0000000000
--- a/Code/Editor/Include/IDataBaseLibrary.h
+++ /dev/null
@@ -1,118 +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_EDITOR_INCLUDE_IDATABASELIBRARY_H
-#define CRYINCLUDE_EDITOR_INCLUDE_IDATABASELIBRARY_H
-#pragma once
-
-
-struct IDataBaseManager;
-struct IDataBaseItem;
-
-class QString;
-class XmlNodeRef;
-
-//////////////////////////////////////////////////////////////////////////
-// Description:
-// Interface to access specific library of editor data base.
-// Ex. Archetype library, Material Library.
-// See Also:
-// IDataBaseItem,IDataBaseManager
-//////////////////////////////////////////////////////////////////////////
-struct IDataBaseLibrary
-{
- // Description:
- // Return IDataBaseManager interface to the manager for items stored in this library.
- virtual IDataBaseManager* GetManager() = 0;
-
- // Description:
- // Return library name.
- virtual const QString& GetName() const = 0;
-
- // Description:
- // Return filename where this library is stored.
- virtual const QString& GetFilename() const = 0;
-
- // Description:
- // Save contents of library to file.
- virtual bool Save() = 0;
-
- // Description:
- // Load library from file.
- // Arguments:
- // filename - Full specified library filename (relative to root game folder).
- virtual bool Load(const QString& filename) = 0;
-
- // Description:
- // Serialize library parameters and items to/from XML node.
- virtual void Serialize(XmlNodeRef& node, bool bLoading) = 0;
-
- // Description:
- // Marks library as modified, indicates that some item in library was modified.
- virtual void SetModified(bool bModified = true) = 0;
-
- // Description:
- // Check if library parameters or any items where modified.
- // If any item was modified library may need saving before closing editor.
- virtual bool IsModified() const = 0;
-
- // Description:
- // Check if this library is not shared and internal to current level.
- virtual bool IsLevelLibrary() const = 0;
-
- // Description:
- // Make this library accessible only from current Level. (not shared)
- virtual void SetLevelLibrary(bool bEnable) = 0;
-
- // Description:
- // Associate a new item with the library.
- // Watch out if item was already in another library.
- virtual void AddItem(IDataBaseItem* pItem, bool bRegister = true) = 0;
-
- // Description:
- // Return number of items in library.
- virtual int GetItemCount() const = 0;
-
- // Description:
- // Get item by index.
- // See Also:
- // GetItemCount
- // Arguments:
- // index - Index from 0 to GetItemCount()
- virtual IDataBaseItem* GetItem(int index) = 0;
-
- // Description:
- // Remove item from library, does not destroy item,
- // only unliks it from this library, to delete item use IDataBaseManager.
- // See Also:
- // AddItem
- virtual void RemoveItem(IDataBaseItem* item) = 0;
-
- // Description:
- // Remove all items from library, does not destroy items,
- // only unliks them from this library, to delete item use IDataBaseManager.
- // See Also:
- // RemoveItem,AddItem
- virtual void RemoveAllItems() = 0;
-
- // Description:
- // Find item in library by name.
- // This function usually uses linear search so it is not particularry fast.
- // See Also:
- // GetItem
- virtual IDataBaseItem* FindItem(const QString& name) = 0;
-
-
- //CONFETTI BEGIN
- // Used to change the library item order
- virtual void ChangeItemOrder(CBaseLibraryItem* item, unsigned int newLocation) = 0;
- //CONFETTI END
-};
-
-#endif // CRYINCLUDE_EDITOR_INCLUDE_IDATABASELIBRARY_H
diff --git a/Code/Editor/Include/IDataBaseManager.h b/Code/Editor/Include/IDataBaseManager.h
deleted file mode 100644
index 3d701d51fc..0000000000
--- a/Code/Editor/Include/IDataBaseManager.h
+++ /dev/null
@@ -1,134 +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_EDITOR_INCLUDE_IDATABASEMANAGER_H
-#define CRYINCLUDE_EDITOR_INCLUDE_IDATABASEMANAGER_H
-#pragma once
-
-#include
-
-struct IDataBaseItem;
-struct IDataBaseLibrary;
-class CUsedResources;
-
-enum EDataBaseItemEvent
-{
- EDB_ITEM_EVENT_ADD,
- EDB_ITEM_EVENT_DELETE,
- EDB_ITEM_EVENT_CHANGED,
- EDB_ITEM_EVENT_SELECTED,
- EDB_ITEM_EVENT_UPDATE_PROPERTIES,
- EDB_ITEM_EVENT_UPDATE_PROPERTIES_NO_EDITOR_REFRESH
-};
-
-//////////////////////////////////////////////////////////////////////////
-// Description:
-// Callback class to intercept item creation and deletion events.
-//////////////////////////////////////////////////////////////////////////
-struct IDataBaseManagerListener
-{
- virtual void OnDataBaseItemEvent(IDataBaseItem* pItem, EDataBaseItemEvent event) = 0;
-};
-
-//////////////////////////////////////////////////////////////////////////
-// Description:
-// his interface is used to enumerate al items registered to the database manager.
-//////////////////////////////////////////////////////////////////////////
-struct IDataBaseItemEnumerator
-{
- virtual ~IDataBaseItemEnumerator() = default;
-
- virtual void Release() = 0;
- virtual IDataBaseItem* GetFirst() = 0;
- virtual IDataBaseItem* GetNext() = 0;
-};
-
-//////////////////////////////////////////////////////////////////////////
-//
-// Interface to the collection of all items or specific type
-// in data base libraries.
-//
-//////////////////////////////////////////////////////////////////////////
-struct IDataBaseManager
-{
- //! Clear all libraries.
- virtual void ClearAll() = 0;
-
- //////////////////////////////////////////////////////////////////////////
- // Library items.
- //////////////////////////////////////////////////////////////////////////
- //! Make a new item in specified library.
- virtual IDataBaseItem* CreateItem(IDataBaseLibrary* pLibrary) = 0;
- //! Delete item from library and manager.
- virtual void DeleteItem(IDataBaseItem* pItem) = 0;
-
- //! Find Item by its GUID.
- virtual IDataBaseItem* FindItem(REFGUID guid) const = 0;
- virtual IDataBaseItem* FindItemByName(const QString& fullItemName) = 0;
-
- virtual IDataBaseItemEnumerator* GetItemEnumerator() = 0;
-
- // Select one item in DB.
- virtual void SetSelectedItem(IDataBaseItem* pItem) = 0;
-
- //////////////////////////////////////////////////////////////////////////
- // Libraries.
- //////////////////////////////////////////////////////////////////////////
- //! Add Item library. Set isLevelLibrary to true if its the "level" library which gets saved inside the level
- virtual IDataBaseLibrary* AddLibrary(const QString& library, bool isLevelLibrary = false, bool bIsLoading = true) = 0;
- virtual void DeleteLibrary(const QString& library, bool forceDeleteLibrary = false) = 0;
- //! Get number of libraries.
- virtual int GetLibraryCount() const = 0;
- //! Get Item library by index.
- virtual IDataBaseLibrary* GetLibrary(int index) const = 0;
-
- //! Find Items Library by name.
- virtual IDataBaseLibrary* FindLibrary(const QString& library) = 0;
-
- //! Load Items library.
-#ifdef LoadLibrary
-#undef LoadLibrary
-#endif
- virtual IDataBaseLibrary* LoadLibrary(const QString& filename, bool bReload = false) = 0;
-
- //! Save all modified libraries.
- virtual void SaveAllLibs() = 0;
-
- //! Serialize property manager.
- virtual void Serialize(XmlNodeRef& node, bool bLoading) = 0;
-
- //! Export items to game.
- virtual void Export([[maybe_unused]] XmlNodeRef& node) {};
-
- //! Returns unique name base on input name.
- virtual QString MakeUniqueItemName(const QString& name, const QString& libName = "") = 0;
- virtual QString MakeFullItemName(IDataBaseLibrary* pLibrary, const QString& group, const QString& itemName) = 0;
-
- //! Root node where this library will be saved.
- virtual QString GetRootNodeName() = 0;
- //! Path to libraries in this manager.
- virtual QString GetLibsPath() = 0;
-
- //////////////////////////////////////////////////////////////////////////
- //! Validate library items for errors.
- virtual void Validate() = 0;
-
- // Description:
- // Collects names of all resource files used by managed items.
- // Arguments:
- // resources - Structure where all filenames are collected.
- virtual void GatherUsedResources(CUsedResources& resources) = 0;
-
- //////////////////////////////////////////////////////////////////////////
- // Register listeners.
- virtual void AddListener(IDataBaseManagerListener* pListener) = 0;
- virtual void RemoveListener(IDataBaseManagerListener* pListener) = 0;
-};
-
-#endif // CRYINCLUDE_EDITOR_INCLUDE_IDATABASEMANAGER_H
diff --git a/Code/Editor/Include/IEditorMaterial.h b/Code/Editor/Include/IEditorMaterial.h
deleted file mode 100644
index 329b0ae53f..0000000000
--- a/Code/Editor/Include/IEditorMaterial.h
+++ /dev/null
@@ -1,20 +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 "BaseLibraryItem.h"
-#include
-
-struct IEditorMaterial
- : public CBaseLibraryItem
-{
- virtual int GetFlags() const = 0;
- virtual IMaterial* GetMatInfo(bool bUseExistingEngineMaterial = false) = 0;
- virtual void DisableHighlightForFrame() = 0;
-};
diff --git a/Code/Editor/Include/IEditorMaterialManager.h b/Code/Editor/Include/IEditorMaterialManager.h
deleted file mode 100644
index 6f71c5ddd1..0000000000
--- a/Code/Editor/Include/IEditorMaterialManager.h
+++ /dev/null
@@ -1,21 +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_EDITOR_MATERIAL_IEDITORMATERIALMANAGER_H
-#define CRYINCLUDE_EDITOR_MATERIAL_IEDITORMATERIALMANAGER_H
-#pragma once
-
-#include
-#include
-
-
-struct IEditorMaterialManager
-{
- virtual void GotoMaterial(IMaterial* pMaterial) = 0;
-};
-
-#endif // CRYINCLUDE_EDITOR_MATERIAL_MATERIALMANAGER_H
diff --git a/Code/Editor/Include/IErrorReport.h b/Code/Editor/Include/IErrorReport.h
index 7bf00d6973..c409dbc7dd 100644
--- a/Code/Editor/Include/IErrorReport.h
+++ b/Code/Editor/Include/IErrorReport.h
@@ -14,7 +14,6 @@
// forward declarations.
class CParticleItem;
class CBaseObject;
-class CBaseLibraryItem;
class CErrorRecord;
class QString;
@@ -52,9 +51,6 @@ struct IErrorReport
//! Assign current Object to which new reported warnings are assigned.
virtual void SetCurrentValidatorObject(CBaseObject* pObject) = 0;
- //! Assign current Item to which new reported warnings are assigned.
- virtual void SetCurrentValidatorItem(CBaseLibraryItem* pItem) = 0;
-
//! Assign current filename.
virtual void SetCurrentFile(const QString& file) = 0;
};
diff --git a/Code/Editor/Include/IFacialEditor.h b/Code/Editor/Include/IFacialEditor.h
deleted file mode 100644
index 5dfa9ab03f..0000000000
--- a/Code/Editor/Include/IFacialEditor.h
+++ /dev/null
@@ -1,43 +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_EDITOR_INCLUDE_IFACIALEDITOR_H
-#define CRYINCLUDE_EDITOR_INCLUDE_IFACIALEDITOR_H
-#pragma once
-
-
-class IFacialEditor
-{
-public:
- enum EyeType
- {
- EYE_LEFT,
- EYE_RIGHT
- };
-
- virtual int GetNumMorphTargets() const = 0;
- virtual const char* GetMorphTargetName(int index) const = 0;
- virtual void PreviewEffector(int index, float value) = 0;
- virtual void ClearAllPreviewEffectors() = 0;
- virtual void SetForcedNeckRotation(const Quat& rotation) = 0;
- virtual void SetForcedEyeRotation(const Quat& rotation, EyeType eye) = 0;
- virtual int GetJoystickCount() const = 0;
- virtual const char* GetJoystickName(int joystickIndex) const = 0;
- virtual void SetJoystickPosition(int joystickIndex, float x, float y) = 0;
- virtual void GetJoystickPosition(int joystickIndex, float& x, float& y) const = 0;
- virtual void LoadJoystickFile(const char* filename) = 0;
- virtual void LoadCharacter(const char* filename) = 0;
- virtual void LoadSequence(const char* filename) = 0;
- virtual void SetVideoFrameResolution(int width, int height, int bpp) = 0;
- virtual int GetVideoFramePitch() = 0;
- virtual void* GetVideoFrameBits() = 0;
- virtual void ShowVideoFramePane() = 0;
-};
-
-#endif // CRYINCLUDE_EDITOR_INCLUDE_IFACIALEDITOR_H
diff --git a/Code/Editor/Include/IFileUtil.h b/Code/Editor/Include/IFileUtil.h
index 036a0bc5ee..ea2fe1f1a3 100644
--- a/Code/Editor/Include/IFileUtil.h
+++ b/Code/Editor/Include/IFileUtil.h
@@ -116,9 +116,6 @@ struct IFileUtil
virtual bool ExtractFile(QString& file, bool bMsgBoxAskForExtraction = true, const char* pDestinationFilename = nullptr) = 0;
virtual void EditTextureFile(const char* txtureFile, bool bUseGameFolder) = 0;
- //! dcc filename calculation and extraction sub-routines
- virtual bool CalculateDccFilename(const QString& assetFilename, QString& dccFilename) = 0;
-
//! Reformat filter string for (MFC) CFileDialog style file filtering
virtual void FormatFilterString(QString& filter) = 0;
diff --git a/Code/Editor/Include/IRenderListener.h b/Code/Editor/Include/IRenderListener.h
deleted file mode 100644
index 892a42b701..0000000000
--- a/Code/Editor/Include/IRenderListener.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
- *
- */
-
-
-// Description : Interface for rendering custom 3D elements in the main
-// render viewport. Particularly usefull for debug geometries.
-
-
-#ifndef CRYINCLUDE_EDITOR_INCLUDE_IRENDERLISTENER_H
-#define CRYINCLUDE_EDITOR_INCLUDE_IRENDERLISTENER_H
-#pragma once
-
-
-struct DisplayContext;
-
-struct IRenderListener
- : public IUnknown
-{
- DEFINE_UUID(0x8D52F857, 0x1027, 0x4346, 0xAC, 0x7B, 0xF6, 0x20, 0xDA, 0x7C, 0xCE, 0x42)
-
- virtual void Render(DisplayContext& rDisplayContext) = 0;
-};
-
-#endif // CRYINCLUDE_EDITOR_INCLUDE_IRENDERLISTENER_H
diff --git a/Code/Editor/Include/ITextureDatabaseUpdater.h b/Code/Editor/Include/ITextureDatabaseUpdater.h
deleted file mode 100644
index 4482135b47..0000000000
--- a/Code/Editor/Include/ITextureDatabaseUpdater.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
- *
- */
-
-
-// Description : This file declares the interface used by the texture viewer
-// and (implemented first implemented by the Texture Database Creator) to
-// syncronize their threads. A thread interace could be useful there.
-
-#ifndef CRYINCLUDE_EDITOR_INCLUDE_ITEXTUREDATABASEUPDATER_H
-#define CRYINCLUDE_EDITOR_INCLUDE_ITEXTUREDATABASEUPDATER_H
-#pragma once
-
-
-class CTextureDatabaseItem;
-
-struct ITextureDatabaseUpdater
-{
-public:
- //////////////////////////////////////////////////////////////////////////
- // Thread control
- virtual void NotifyShutDown() = 0;
- virtual void Lock() = 0;
- virtual void Unlock() = 0;
- virtual void WaitForThread() = 0;
- //////////////////////////////////////////////////////////////////////////
-
- //////////////////////////////////////////////////////////////////////////
- // Data access
- virtual CTextureDatabaseItem* GetItem(const char* szAddItem) = 0;
- //////////////////////////////////////////////////////////////////////////
-};
-
-#endif // CRYINCLUDE_EDITOR_INCLUDE_ITEXTUREDATABASEUPDATER_H
diff --git a/Code/Editor/Include/SandboxAPI.h b/Code/Editor/Include/SandboxAPI.h
index 4e0cafea4a..757b799837 100644
--- a/Code/Editor/Include/SandboxAPI.h
+++ b/Code/Editor/Include/SandboxAPI.h
@@ -21,7 +21,7 @@
#endif
#if defined(SANDBOX_IMPORTS) && defined(SANDBOX_EXPORTS)
-#error SANDBOX_EXPORTS and SANDBOX_IMPORTS can't be defined at the same time
+#error SANDBOX_EXPORTS and SANDBOX_IMPORTS cannot be defined at the same time
#endif
#if defined(SANDBOX_EXPORTS)
diff --git a/Code/Editor/Lib/Tests/IEditorMock.h b/Code/Editor/Lib/Tests/IEditorMock.h
index 590f98e6d7..aaee34c2c6 100644
--- a/Code/Editor/Lib/Tests/IEditorMock.h
+++ b/Code/Editor/Lib/Tests/IEditorMock.h
@@ -85,9 +85,6 @@ public:
MOCK_METHOD0(IsSelectionLocked, bool());
MOCK_METHOD0(GetObjectManager, struct IObjectManager* ());
MOCK_METHOD0(GetSettingsManager, CSettingsManager* ());
- MOCK_METHOD1(GetDBItemManager, IDataBaseManager* (EDataBaseItemType));
- MOCK_METHOD0(GetMaterialManagerLibrary, IBaseLibraryManager* ());
- MOCK_METHOD0(GetIEditorMaterialManager, IEditorMaterialManager* ());
MOCK_METHOD0(GetIconManager, IIconManager* ());
MOCK_METHOD0(GetMusicManager, CMusicManager* ());
MOCK_METHOD2(GetTerrainElevation, float(float , float ));
diff --git a/Code/Editor/Lib/Tests/test_DisplaySettingsPythonBindings.cpp b/Code/Editor/Lib/Tests/test_DisplaySettingsPythonBindings.cpp
index fd65634d4e..b73cb039ea 100644
--- a/Code/Editor/Lib/Tests/test_DisplaySettingsPythonBindings.cpp
+++ b/Code/Editor/Lib/Tests/test_DisplaySettingsPythonBindings.cpp
@@ -35,6 +35,11 @@ namespace DisplaySettingsPythonBindingsUnitTests
m_app.Start(appDesc);
m_app.RegisterComponentDescriptor(AzToolsFramework::DisplaySettingsPythonFuncsHandler::CreateDescriptor());
+
+ // 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);
}
void TearDown() override
diff --git a/Code/Editor/LightmapCompiler/SimpleTriangleRasterizer.cpp b/Code/Editor/LightmapCompiler/SimpleTriangleRasterizer.cpp
deleted file mode 100644
index 736465cac1..0000000000
--- a/Code/Editor/LightmapCompiler/SimpleTriangleRasterizer.cpp
+++ /dev/null
@@ -1,506 +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 "EditorDefs.h"
-
-#include "SimpleTriangleRasterizer.h"
-
-#include
-
-#if !defined FLT_MAX
-#define FLT_MAX 3.402823466e+38F
-#endif
-
-void CSimpleTriangleRasterizer::lambertHorizlineConservative(float fx1, float fx2, int yy, IRasterizeSink* inpSink)
-{
- int x1 = (int)floorf(fx1 + 0.25f), x2 = (int)floorf(fx2 + .75f);
-
- if (x1 < m_iMinX)
- {
- x1 = m_iMinX;
- }
- if (x2 > m_iMaxX + 1)
- {
- x2 = m_iMaxX + 1;
- }
- if (x1 > m_iMaxX + 1)
- {
- x1 = m_iMaxX + 1;
- }
- if (x2 < m_iMinX)
- {
- x2 = m_iMinX;
- }
-
-
- inpSink->Line(fx1, fx2, x1, x2, yy);
-}
-
-void CSimpleTriangleRasterizer::lambertHorizlineSubpixelCorrect(float fx1, float fx2, int yy, IRasterizeSink* inpSink)
-{
- int x1 = (int)floorf(fx1 + 0.5f), x2 = (int)floorf(fx2 + 0.5f);
- // int x1=(int)floorf(fx1*1023.f/1024.f+1.f),x2=(int)floorf(fx2*1023.f/1024.f+1.f);
-
- if (x1 < m_iMinX)
- {
- x1 = m_iMinX;
- }
- if (x2 > m_iMaxX)
- {
- x2 = m_iMaxX;
- }
- if (x1 > m_iMaxX)
- {
- x1 = m_iMaxX;
- }
- if (x2 < m_iMinX)
- {
- x2 = m_iMinX;
- }
-
- inpSink->Line(fx1, fx2, x1, x2, yy);
-}
-
-// optimizable
-void CSimpleTriangleRasterizer::CopyAndSortY(const float infX[3], const float infY[3], float outfX[3], float outfY[3])
-{
- outfX[0] = infX[0];
- outfY[0] = infY[0];
- outfX[1] = infX[1];
- outfY[1] = infY[1];
- outfX[2] = infX[2];
- outfY[2] = infY[2];
-
- // Sort the coordinates, so that (x[1], y[1]) becomes the highest coord
- float tmp;
-
- if (outfY[0] > outfY[1])
- {
- if (outfY[1] > outfY[2])
- {
- tmp = outfY[0];
- outfY[0] = outfY[1];
- outfY[1] = tmp;
- tmp = outfX[0];
- outfX[0] = outfX[1];
- outfX[1] = tmp;
- tmp = outfY[1];
- outfY[1] = outfY[2];
- outfY[2] = tmp;
- tmp = outfX[1];
- outfX[1] = outfX[2];
- outfX[2] = tmp;
-
- if (outfY[0] > outfY[1])
- {
- tmp = outfY[0];
- outfY[0] = outfY[1];
- outfY[1] = tmp;
- tmp = outfX[0];
- outfX[0] = outfX[1];
- outfX[1] = tmp;
- }
- }
- else
- {
- tmp = outfY[0];
- outfY[0] = outfY[1];
- outfY[1] = tmp;
- tmp = outfX[0];
- outfX[0] = outfX[1];
- outfX[1] = tmp;
-
- if (outfY[1] > outfY[2])
- {
- tmp = outfY[1];
- outfY[1] = outfY[2];
- outfY[2] = tmp;
- tmp = outfX[1];
- outfX[1] = outfX[2];
- outfX[2] = tmp;
- }
- }
- }
- else
- {
- if (outfY[1] > outfY[2])
- {
- tmp = outfY[1];
- outfY[1] = outfY[2];
- outfY[2] = tmp;
- tmp = outfX[1];
- outfX[1] = outfX[2];
- outfX[2] = tmp;
-
- if (outfY[0] > outfY[1])
- {
- tmp = outfY[0];
- outfY[0] = outfY[1];
- outfY[1] = tmp;
- tmp = outfX[0];
- outfX[0] = outfX[1];
- outfX[1] = tmp;
- }
- }
- }
-}
-
-void CSimpleTriangleRasterizer::CallbackFillRectConservative(float _x[3], float _y[3], IRasterizeSink* inpSink)
-{
- inpSink->Triangle(m_iMinY);
-
- float fMinX = (std::min)(_x[0], (std::min)(_x[1], _x[2]));
- float fMaxX = (std::max)(_x[0], (std::max)(_x[1], _x[2]));
- float fMinY = (std::min)(_y[0], (std::min)(_y[1], _y[2]));
- float fMaxY = (std::max)(_y[0], (std::max)(_y[1], _y[2]));
-
- int iMinX = (std::max)(m_iMinX, (int)floorf(fMinX));
- int iMaxX = (std::min)(m_iMaxX + 1, (int)ceilf(fMaxX));
- int iMinY = (std::max)(m_iMinY, (int)floorf(fMinY));
- int iMaxY = (std::min)(m_iMaxY + 1, (int)ceilf(fMaxY));
-
- for (int y = iMinY; y < iMaxY; y++)
- {
- inpSink->Line(fMinX, fMaxX, iMinX, iMaxX, y);
- }
-}
-
-
-
-
-void CSimpleTriangleRasterizer::CallbackFillConservative(float _x[3], float _y[3], IRasterizeSink* inpSink)
-{
- float x[3], y[3];
-
- CopyAndSortY(_x, _y, x, y);
-
- // Calculate interpolation steps
- float fX1toX2step = 0.0f;
- float fX1toX3step = 0.0f;
- float fX2toX3step = 0.0f;
- if (fabsf(y[1] - y[0]) > FLT_EPSILON)
- {
- fX1toX2step = (x[1] - x[0]) / (float)(y[1] - y[0]);
- }
- if (fabsf(y[2] - y[0]) > FLT_EPSILON)
- {
- fX1toX3step = (x[2] - x[0]) / (float)(y[2] - y[0]);
- }
- if (fabsf(y[2] - y[1]) > FLT_EPSILON)
- {
- fX2toX3step = (x[2] - x[1]) / (float)(y[2] - y[1]);
- }
-
- float fX1toX2 = x[0], fX1toX3 = x[0], fX2toX3 = x[1];
- bool bFirstLine = true;
- bool bTriangleCallDone = false;
-
- // Go through the scanlines of the triangle
- int yy = (int)floorf(y[0]); // was floor
-
- for (; yy <= (int)floorf(y[2]); yy++)
- // for(yy=m_iMinY; yy<=m_iMaxY; yy++) // juhu
- {
- float fSubPixelYStart = 0.0f, fSubPixelYEnd = 1.0f;
- float start, end;
-
- // first line
- if (bFirstLine)
- {
- fSubPixelYStart = y[0] - floorf(y[0]);
- start = x[0];
- end = x[0];
- bFirstLine = false;
- }
- else
- {
- // top part without middle corner line
- if (yy <= (int)floorf(y[1]))
- {
- start = (std::min)(fX1toX2, fX1toX3);
- end = (std::max)(fX1toX2, fX1toX3);
- }
- else
- {
- start = (std::min)(fX2toX3, fX1toX3);
- end = (std::max)(fX2toX3, fX1toX3);
- }
- }
-
- // middle corner line
- if (yy == (int)floorf(y[1]))
- {
- fSubPixelYEnd = y[1] - floorf(y[1]);
-
- fX1toX3 += fX1toX3step * (fSubPixelYEnd - fSubPixelYStart);
- start = (std::min)(start, fX1toX3);
- end = (std::max)(end, fX1toX3);
- start = (std::min)(start, x[1]);
- end = (std::max)(end, x[1]);
-
- fSubPixelYStart = fSubPixelYEnd;
- fSubPixelYEnd = 1.0f;
- }
-
- // last line
- if (yy == (int)floorf(y[2]))
- {
- start = (std::min)(start, x[2]);
- end = (std::max)(end, x[2]);
- }
- else
- {
- // top part without middle corner line
- if (yy < (int)floorf(y[1]))
- {
- fX1toX2 += fX1toX2step * (fSubPixelYEnd - fSubPixelYStart);
- start = (std::min)(start, fX1toX2);
- end = (std::max)(end, fX1toX2);
- }
- else
- {
- fX2toX3 += fX2toX3step * (fSubPixelYEnd - fSubPixelYStart);
- start = (std::min)(start, fX2toX3);
- end = (std::max)(end, fX2toX3);
- }
-
- fX1toX3 += fX1toX3step * (fSubPixelYEnd - fSubPixelYStart);
- start = (std::min)(start, fX1toX3);
- end = (std::max)(end, fX1toX3);
- }
-
- if (yy >= m_iMinY && yy <= m_iMaxY)
- {
- if (!bTriangleCallDone)
- {
- inpSink->Triangle(yy);
- bTriangleCallDone = true;
- }
-
- lambertHorizlineConservative(start, end, yy, inpSink);
- }
- }
-}
-
-
-
-void CSimpleTriangleRasterizer::CallbackFillSubpixelCorrect(float _x[3], float _y[3], IRasterizeSink* inpSink)
-{
- float x[3], y[3];
-
- CopyAndSortY(_x, _y, x, y);
-
- if (fabs(y[0] - floorf(y[0])) < FLT_EPSILON)
- {
- y[0] -= FLT_EPSILON;
- }
-
- // Calculate interpolation steps
- float fX1toX2step = 0.0f;
- float fX1toX3step = 0.0f;
- float fX2toX3step = 0.0f;
- if (fabsf(y[1] - y[0]) > FLT_EPSILON)
- {
- fX1toX2step = (x[1] - x[0]) / (y[1] - y[0]);
- }
- if (fabsf(y[2] - y[0]) > FLT_EPSILON)
- {
- fX1toX3step = (x[2] - x[0]) / (y[2] - y[0]);
- }
- if (fabsf(y[2] - y[1]) > FLT_EPSILON)
- {
- fX2toX3step = (x[2] - x[1]) / (y[2] - y[1]);
- }
-
- float fX1toX2 = x[0], fX1toX3 = x[0], fX2toX3 = x[1];
- bool bFirstLine = true;
- bool bTriangleCallDone = false;
-
- y[0] -= 0.5f;
- y[1] -= 0.5f;
- y[2] -= 0.5f;
- // y[0]=y[0]*1023.f/1024.f+1.f;
- // y[1]=y[1]*1023.f/1024.f+1.f;
- // y[2]=y[2]*1023.f/1024.f+1.f;
-
- for (int yy = (int)floorf(y[0]); yy <= (int)floorf(y[2]); yy++)
- {
- float fSubPixelYStart = 0.0f, fSubPixelYEnd = 1.0f;
- float start, end;
-
- // first line
- if (bFirstLine)
- {
- fSubPixelYStart = y[0] - floorf(y[0]);
- start = x[0];
- end = x[0];
- bFirstLine = false;
- }
- else
- {
- // top part without middle corner line
- if (yy <= (int)floorf(y[1]))
- {
- start = (std::min)(fX1toX2, fX1toX3);
- end = (std::max)(fX1toX2, fX1toX3);
- }
- else
- {
- start = (std::min)(fX2toX3, fX1toX3);
- end = (std::max)(fX2toX3, fX1toX3);
- }
- }
-
- // middle corner line
- if (yy == (int)floorf(y[1]))
- {
- fSubPixelYEnd = y[1] - floorf(y[1]);
-
- fX1toX3 += fX1toX3step * (fSubPixelYEnd - fSubPixelYStart);
-
- fSubPixelYStart = fSubPixelYEnd;
- fSubPixelYEnd = 1.0f;
- }
-
- // last line
- if (yy != (int)floorf(y[2]))
- {
- // top part without middle corner line
- if (yy < (int)floorf(y[1]))
- {
- fX1toX2 += fX1toX2step * (fSubPixelYEnd - fSubPixelYStart);
- }
- else
- {
- fX2toX3 += fX2toX3step * (fSubPixelYEnd - fSubPixelYStart);
- }
-
- fX1toX3 += fX1toX3step * (fSubPixelYEnd - fSubPixelYStart);
- }
-
- if (start != end)
- {
- if (yy >= m_iMinY && yy <= m_iMaxY)
- {
- if (!bTriangleCallDone)
- {
- inpSink->Triangle(yy);
- bTriangleCallDone = true;
- }
-
- lambertHorizlineSubpixelCorrect(start, end, yy, inpSink);
- }
- }
- }
-}
-
-
-
-
-// shrink triangle by n pixel, optimizable
-void CSimpleTriangleRasterizer::ShrinkTriangle(float inoutfX[3], float inoutfY[3], float infAmount)
-{
- float fX[3] = { inoutfX[0], inoutfX[1], inoutfX[2] };
- float fY[3] = { inoutfY[0], inoutfY[1], inoutfY[2] };
-
- /*
- // move edge to opposing vertex
- float dx,dy,fLength;
-
- for(int a=0;a<3;a++)
- {
- int b=a+1;if(b>=3)b=0;
- int c=b+1;if(c>=3)c=0;
-
- dx=fX[a]-(fX[b]+fX[c])*0.5f;
- dy=fY[a]-(fY[b]+fY[c])*0.5f;
- fLength=(float)sqrt(dx*dx+dy*dy);
- if(fLength>1.0f)
- {
- dx/=fLength;dy/=fLength;
- inoutfX[b]+=dx;inoutfY[b]+=dy;
- inoutfX[c]+=dx;inoutfY[c]+=dy;
- }
- }
- */
-
- /*
- // move vertex to opposing edge
- float dx,dy,fLength;
-
- for(int a=0;a<3;a++)
- {
- int b=a+1;if(b>=3)b=0;
- int c=b+1;if(c>=3)c=0;
-
- dx=fX[a]-(fX[b]+fX[c])*0.5f;
- dy=fY[a]-(fY[b]+fY[c])*0.5f;
- fLength=(float)sqrt(dx*dx+dy*dy);
- if(fLength>1.0f)
- {
- dx/=fLength;dy/=fLength;
- inoutfX[a]-=dx;inoutfY[a]-=dy;
- }
- }
- */
-
- // move vertex to get edges shifted perpendicular for 1 unit
- for (int a = 0; a < 3; a++)
- {
- float dx1, dy1, dx2, dy2, fLength;
-
- int b = a + 1;
- if (b >= 3)
- {
- b = 0;
- }
- int c = b + 1;
- if (c >= 3)
- {
- c = 0;
- }
-
- dx1 = fX[b] - fX[a];
- dy1 = fY[b] - fY[a];
- fLength = (float)sqrt(dx1 * dx1 + dy1 * dy1);
- if (infAmount > 0)
- {
- if (fLength < infAmount)
- {
- continue;
- }
- }
- if (fLength == 0.0f)
- {
- continue;
- }
- dx1 /= fLength;
- dy1 /= fLength;
-
- dx2 = fX[c] - fX[a];
- dy2 = fY[c] - fY[a];
- fLength = (float)sqrt(dx2 * dx2 + dy2 * dy2);
- if (infAmount > 0)
- {
- if (fLength < infAmount)
- {
- continue;
- }
- }
- if (fLength == 0.0f)
- {
- continue;
- }
- dx2 /= fLength;
- dy2 /= fLength;
-
- inoutfX[a] += (dx1 + dx2) * infAmount;
- inoutfY[a] += (dy1 + dy2) * infAmount;
- }
-}
diff --git a/Code/Editor/LightmapCompiler/SimpleTriangleRasterizer.h b/Code/Editor/LightmapCompiler/SimpleTriangleRasterizer.h
deleted file mode 100644
index bcfdd7b6da..0000000000
--- a/Code/Editor/LightmapCompiler/SimpleTriangleRasterizer.h
+++ /dev/null
@@ -1,181 +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_EDITOR_LIGHTMAPCOMPILER_SIMPLETRIANGLERASTERIZER_H
-#define CRYINCLUDE_EDITOR_LIGHTMAPCOMPILER_SIMPLETRIANGLERASTERIZER_H
-#pragma once
-
-class CSimpleTriangleRasterizer
-{
-public:
-
- class IRasterizeSink
- {
- public:
-
- //! is called once per triangel for the first possible visible line
- //! /param iniStartY
- virtual void Triangle([[maybe_unused]] const int iniStartY)
- {
- }
-
- //! callback function
- //! /param infXLeft included - not clipped against left and reight border
- //! /param infXRight excluded - not clipped against left and reight border
- //! /param iniXLeft included
- //! /param iniXRight excluded
- //! /param iniY
- virtual void Line(const float infXLeft, const float infXRight,
- const int iniXLeft, const int iniXRight, const int iniY) = 0;
- };
-
- typedef unsigned long DWORD;
-
- // -----------------------------------------------------
-
- //! implementation sink sample
- class CDWORDFlatFill
- : public IRasterizeSink
- {
- public:
-
- //! constructor
- CDWORDFlatFill(DWORD* inpBuffer, const DWORD indwPitchInPixels, DWORD indwValue)
- {
- m_dwValue = indwValue;
- m_pBuffer = inpBuffer;
- m_dwPitchInPixels = indwPitchInPixels;
- }
-
- virtual void Triangle(const int iniY)
- {
- m_pBufferLine = &m_pBuffer[iniY * m_dwPitchInPixels];
- }
-
- virtual void Line([[maybe_unused]] const float infXLeft, [[maybe_unused]] const float infXRight,
- const int iniLeft, const int iniRight, [[maybe_unused]] const int iniY)
- {
- DWORD* mem = &m_pBufferLine[iniLeft];
-
- for (int x = iniLeft; x < iniRight; x++)
- {
- *mem++ = m_dwValue;
- }
-
- m_pBufferLine += m_dwPitchInPixels;
- }
-
- private:
- DWORD m_dwValue; //!< fill value
- DWORD* m_pBufferLine; //!< to get rid of the multiplication per line
-
- DWORD m_dwPitchInPixels; //!< in DWORDS, not in Bytes
- DWORD* m_pBuffer; //!< pointer to the buffer
- };
-
- // -----------------------------------------------------
-
- //! constructor
- //! /param iniWidth excluded
- //! /param iniHeight excluded
- CSimpleTriangleRasterizer(const int iniWidth, const int iniHeight)
- {
- m_iMinX = 0;
- m_iMinY = 0;
- m_iMaxX = iniWidth - 1;
- m_iMaxY = iniHeight - 1;
- }
- /*
- //! constructor
- //! /param iniMinX included
- //! /param iniMinY included
- //! /param iniMaxX included
- //! /param iniMaxY included
- CSimpleTriangleRasterizer( const int iniMinX, const int iniMinY, const int iniMaxX, const int iniMaxY )
- {
- m_iMinX=iniMinX;
- m_iMinY=iniMinY;
- m_iMaxX=iniMaxX;
- m_iMaxY=iniMaxY;
- }
- */
- //! simple triangle filler with clipping (optimizable), not subpixel correct
- //! /param pBuffer pointer o the color buffer
- //! /param indwWidth width of the color buffer
- //! /param indwHeight height of the color buffer
- //! /param x array of the x coordiantes of the three vertices
- //! /param y array of the x coordiantes of the three vertices
- //! /param indwValue value of the triangle
- void DWORDFlatFill(DWORD* inpBuffer, const DWORD indwPitchInPixels, float x[3], float y[3], DWORD indwValue, bool inbConservative)
- {
- CDWORDFlatFill pix(inpBuffer, indwPitchInPixels, indwValue);
-
- if (inbConservative)
- {
- CallbackFillConservative(x, y, &pix);
- }
- else
- {
- CallbackFillSubpixelCorrect(x, y, &pix);
- }
- }
-
- // Rectangle around triangle - more stable - use for debugging purpose
- void CallbackFillRectConservative(float x[3], float y[3], IRasterizeSink * inpSink);
-
-
- //! subpixel correct triangle filler (conservative or not conservative)
- //! \param pBuffer pointe to the DWORD
- //! \param indwWidth width of the buffer pBuffer pointes to
- //! \param indwHeight height of the buffer pBuffer pointes to
- //! \param x array of the x coordiantes of the three vertices
- //! \param y array of the x coordiantes of the three vertices
- //! \param inpSink pointer to the sink interface (is called per triangle and per triangle line)
- void CallbackFillConservative(float x[3], float y[3], IRasterizeSink * inpSink);
-
- //! subpixel correct triangle filler (conservative or not conservative)
- //! \param pBuffer pointe to the DWORD
- //! \param indwWidth width of the buffer pBuffer pointes to
- //! \param indwHeight height of the buffer pBuffer pointes to
- //! \param x array of the x coordiantes of the three vertices
- //! \param y array of the x coordiantes of the three vertices
- //! \param inpSink pointer to the sink interface (is called per triangle and per triangle line)
- void CallbackFillSubpixelCorrect(float x[3], float y[3], IRasterizeSink * inpSink);
-
- //!
- //! /param inoutfX
- //! /param inoutfY
- //! /param infAmount could be positive or negative
- static void ShrinkTriangle(float inoutfX[3], float inoutfY[3], float infAmount);
-
-private:
-
- // Clipping Rect;
-
- int m_iMinX; //!< minimum x value included
- int m_iMinY; //!< minimum y value included
- int m_iMaxX; //!< maximum x value included
- int m_iMaxY; //!< maximum x value included
-
- void lambertHorizlineConservative(float fx1, float fx2, int y, IRasterizeSink* inpSink);
- void lambertHorizlineSubpixelCorrect(float fx1, float fx2, int y, IRasterizeSink* inpSink);
- void CopyAndSortY(const float infX[3], const float infY[3], float outfX[3], float outfY[3]);
-};
-
-
-// extension ideas:
-// * callback with coverage mask (possible non ordered sampling)
-// * z-buffer behaviour
-// * gouraud shading
-// * texture mapping with nearest/bicubic/bilinear filter
-// * further primitives: thick line, ellipse
-// * build a template version
-// *
-
-#endif // CRYINCLUDE_EDITOR_LIGHTMAPCOMPILER_SIMPLETRIANGLERASTERIZER_H
diff --git a/Code/Editor/MainWindow.qrc b/Code/Editor/MainWindow.qrc
index 4506a4a2a8..57afc596bb 100644
--- a/Code/Editor/MainWindow.qrc
+++ b/Code/Editor/MainWindow.qrc
@@ -154,37 +154,6 @@
res/error_report_warning.svg
res/error_report_comment.svg
res/error_report_helper.svg
- particles_tree_00.png
- particles_tree_01.png
- particles_tree_02.png
- particles_tree_03.png
- particles_tree_04.png
- particles_tree_05.png
- particles_tree_06.png
- particles_tree_07.png
- arhitype_tree_00.png
- arhitype_tree_01.png
- arhitype_tree_02.png
- arhitype_tree_03.png
- water.png
- bmp00005_00.png
- bmp00005_01.png
- bmp00005_02.png
- bmp00005_03.png
- bmp00005_04.png
- bmp00005_05.png
- bmp00005_06.png
- bmp00005_07.png
- bmp00005_08.png
- bmp00005_09.png
- bmp00006_00.png
- bmp00006_01.png
- bmp00006_02.png
- bmp00006_03.png
- bmp00006_04.png
- bmp00006_05.png
- bmp00006_06.png
- bmp00006_07.png
res/arr_addkey.cur
diff --git a/Code/Editor/NewLevelDialog.cpp b/Code/Editor/NewLevelDialog.cpp
index c773acdb6f..b22d9dbaf3 100644
--- a/Code/Editor/NewLevelDialog.cpp
+++ b/Code/Editor/NewLevelDialog.cpp
@@ -18,9 +18,6 @@
#include
#include
-// Editor
-#include "NewTerrainDialog.h"
-
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
#include
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
@@ -115,7 +112,6 @@ CNewLevelDialog::~CNewLevelDialog()
void CNewLevelDialog::OnStartup()
{
UpdateData(false);
- setFocus();
}
void CNewLevelDialog::UpdateData(bool fromUi)
diff --git a/Code/Editor/NewLevelDialog.ui b/Code/Editor/NewLevelDialog.ui
index 14227fbb53..93a88dc897 100644
--- a/Code/Editor/NewLevelDialog.ui
+++ b/Code/Editor/NewLevelDialog.ui
@@ -133,6 +133,9 @@
1
+
+ LEVEL
+
diff --git a/Code/Editor/NewTerrainDialog.cpp b/Code/Editor/NewTerrainDialog.cpp
deleted file mode 100644
index 0e66482eb4..0000000000
--- a/Code/Editor/NewTerrainDialog.cpp
+++ /dev/null
@@ -1,168 +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
- *
- */
-// NewTerrainDialog.cpp : implementation file
-//
-
-#include "EditorDefs.h"
-
-#include "NewTerrainDialog.h"
-
-
-AZ_PUSH_DISABLE_WARNING(4251, "-Wunknown-warning-option")
-#include
-AZ_POP_DISABLE_WARNING
-
-
-
-CNewTerrainDialog::CNewTerrainDialog(QWidget* pParent /*=nullptr*/)
- : QDialog(pParent)
- , m_terrainResolutionIndex(0)
- , m_terrainUnitsIndex(0)
- , m_bUpdate(false)
- , ui(new Ui::CNewTerrainDialog)
- , m_initialized(false)
-{
- ui->setupUi(this);
-
- setWindowTitle(tr("Terrain options"));
-
- // Default is 1024x1024, and m_terrainResolution holds an index to the combo box
- m_terrainResolutionIndex = 3;
-
- connect(ui->TERRAIN_RESOLUTION, SIGNAL(activated(int)), this, SLOT(OnComboBoxSelectionTerrainResolution()));
- connect(ui->TERRAIN_UNITS, SIGNAL(activated(int)), this, SLOT(OnComboBoxSelectionTerrainUnits()));
-}
-
-
-CNewTerrainDialog::~CNewTerrainDialog()
-{
-}
-
-
-void CNewTerrainDialog::UpdateData(bool fromUi)
-{
- if (fromUi)
- {
- m_terrainResolutionIndex = ui->TERRAIN_RESOLUTION->currentIndex();
- m_terrainUnitsIndex = ui->TERRAIN_UNITS->currentIndex();
- }
- else
- {
- ui->TERRAIN_RESOLUTION->setCurrentIndex(m_terrainResolutionIndex);
- ui->TERRAIN_UNITS->setCurrentIndex(m_terrainUnitsIndex);
- }
-}
-
-
-void CNewTerrainDialog::OnInitDialog()
-{
- // Initialize terrain values.
- int resolution = Ui::START_TERRAIN_RESOLUTION;
-
- // Fill terrain resolution combo box
- for (int i = 0; i < 6; i++)
- {
- ui->TERRAIN_RESOLUTION->addItem(QString("%1x%1").arg(resolution));
- resolution *= 2;
- }
-
- UpdateTerrainUnits();
- UpdateTerrainInfo();
-
- // Save data.
- UpdateData(false);
-}
-
-
-void CNewTerrainDialog::UpdateTerrainUnits()
-{
- uint32 terrainRes = GetTerrainResolution();
- int size = terrainRes * GetTerrainUnits();
- int maxUnit = IntegerLog2(Ui::MAXIMUM_TERRAIN_RESOLUTION / terrainRes);
- int units = Ui::START_TERRAIN_UNITS;
-
- ui->TERRAIN_UNITS->clear();
- for (int i = 0; i <= maxUnit; i++)
- {
- ui->TERRAIN_UNITS->addItem(QString::number(units));
- units *= 2;
- }
- if (size > Ui::MAXIMUM_TERRAIN_RESOLUTION)
- {
- m_terrainUnitsIndex = 0;
- }
- ui->TERRAIN_UNITS->setCurrentText(QString::number(m_terrainUnitsIndex));
-}
-
-
-void CNewTerrainDialog::UpdateTerrainInfo()
-{
- int sizeX = GetTerrainResolution() * GetTerrainUnits();
- int sizeY = GetTerrainResolution() * GetTerrainUnits();
-
- QString str;
- if (sizeX >= 1000)
- {
- str = tr("Terrain Size: %1 x %2 Kilometers").arg((float)sizeX / 1000.0f, 0, 'f', 3).arg((float)sizeY / 1000.0f, 0, 'f', 3);
- }
- else if (sizeX > 0)
- {
- str = tr("Terrain Size: %1 x %2 Meters").arg(sizeX).arg(sizeY);
- }
- else
- {
- str = tr("Level will have no terrain");
- }
-
- ui->TERRAIN_INFO->setText(str);
-}
-
-
-int CNewTerrainDialog::GetTerrainResolution() const
-{
- // convert combo box index into resolution value
- return Ui::START_TERRAIN_RESOLUTION * (1 << m_terrainResolutionIndex);
-}
-
-
-int CNewTerrainDialog::GetTerrainUnits() const
-{
- // convert combo box index into units value
- return Ui::START_TERRAIN_UNITS * (1 << m_terrainUnitsIndex);
-}
-
-
-void CNewTerrainDialog::OnComboBoxSelectionTerrainResolution()
-{
- UpdateData();
-
- UpdateTerrainUnits();
-
- UpdateTerrainInfo();
-}
-
-
-void CNewTerrainDialog::OnComboBoxSelectionTerrainUnits()
-{
- UpdateData();
-
- UpdateTerrainInfo();
-}
-
-
-void CNewTerrainDialog::showEvent(QShowEvent* event)
-{
- if (!m_initialized)
- {
- OnInitDialog();
- m_initialized = true;
- }
- QDialog::showEvent(event);
-}
-
-#include
diff --git a/Code/Editor/NewTerrainDialog.h b/Code/Editor/NewTerrainDialog.h
deleted file mode 100644
index 8905a8c123..0000000000
--- a/Code/Editor/NewTerrainDialog.h
+++ /dev/null
@@ -1,71 +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_EDITOR_NEWTERRAINDIALOG_H
-#define CRYINCLUDE_EDITOR_NEWTERRAINDIALOG_H
-
-#if !defined(Q_MOC_RUN)
-#include
-
-#include
-
-#include
-#endif
-
-namespace Ui
-{
- class CNewTerrainDialog;
-
- enum TerrainDialogConstants
- {
- START_TERRAIN_RESOLUTION_POWER_OF_TWO = 7,
- START_TERRAIN_RESOLUTION = 1 << START_TERRAIN_RESOLUTION_POWER_OF_TWO,
- MAXIMUM_TERRAIN_POWER_OF_TWO = 16,
- MAXIMUM_TERRAIN_RESOLUTION = 1 << MAXIMUM_TERRAIN_POWER_OF_TWO,
- POWER_OFFSET = (MAXIMUM_TERRAIN_POWER_OF_TWO - START_TERRAIN_RESOLUTION_POWER_OF_TWO),
- START_TERRAIN_UNITS = 1
- };
-}
-
-class CNewTerrainDialog
- : public QDialog
-{
- Q_OBJECT
-
-public:
- CNewTerrainDialog(QWidget* pParent = nullptr); // standard constructor
- ~CNewTerrainDialog();
-
- int GetTerrainResolution() const;
- int GetTerrainUnits() const;
-
- void IsResize(bool bIsResize);
-
-
-protected:
- void UpdateData(bool fromUi = true);
- void OnInitDialog();
-
- void UpdateTerrainUnits();
- void UpdateTerrainInfo();
-
- void showEvent(QShowEvent* event) override;
-
-protected slots:
- void OnComboBoxSelectionTerrainResolution();
- void OnComboBoxSelectionTerrainUnits();
-
-public:
- int m_terrainResolutionIndex;
- int m_terrainUnitsIndex;
- bool m_bUpdate;
-
- QScopedPointer ui;
- bool m_initialized;
-};
-#endif // CRYINCLUDE_EDITOR_NEWTERRAINDIALOG_H
diff --git a/Code/Editor/NewTerrainDialog.ui b/Code/Editor/NewTerrainDialog.ui
deleted file mode 100644
index 977db11918..0000000000
--- a/Code/Editor/NewTerrainDialog.ui
+++ /dev/null
@@ -1,112 +0,0 @@
-
-
- CNewTerrainDialog
-
-
-
- 0
- 0
- 292
- 160
-
-
-
- false
-
-
- -
-
-
- QDialogButtonBox::Cancel|QDialogButtonBox::Ok
-
-
-
- -
-
-
-
- QFormLayout::AllNonFixedFieldsGrow
-
-
-
-
-
- Heightmap Resolution:
-
-
- Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
-
-
- TERRAIN_RESOLUTION
-
-
-
- -
-
-
- -
-
-
- Meters Per Texel:
-
-
- Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
-
-
- TERRAIN_UNITS
-
-
-
- -
-
-
- -
-
-
- Terrain Size: 32x32 Km
-
-
- Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
-
-
-
-
-
-
-
-
-
-
-
- buttonBox
- accepted()
- CNewTerrainDialog
- accept()
-
-
- 164
- 176
-
-
- 169
- 1
-
-
-
-
- buttonBox
- rejected()
- CNewTerrainDialog
- reject()
-
-
- 245
- 172
-
-
- 247
- -1
-
-
-
-
-
diff --git a/Code/Editor/Objects/BaseObject.cpp b/Code/Editor/Objects/BaseObject.cpp
index 86840789dd..c14547407b 100644
--- a/Code/Editor/Objects/BaseObject.cpp
+++ b/Code/Editor/Objects/BaseObject.cpp
@@ -36,12 +36,6 @@
// To use the Andrew's algorithm in order to make convex hull from the points, this header is needed.
#include "Util/GeometryUtil.h"
-namespace {
- QColor kLinkColorParent = QColor(0, 255, 255);
- QColor kLinkColorChild = QColor(0, 0, 255);
- QColor kLinkColorGray = QColor(128, 128, 128);
-}
-
extern CObjectManager* g_pObjectManager;
//////////////////////////////////////////////////////////////////////////
@@ -761,72 +755,6 @@ void CBaseObject::SetModified(bool)
{
}
-void CBaseObject::DrawDefault(DisplayContext& dc, const QColor& labelColor)
-{
- Vec3 wp = GetWorldPos();
-
- bool bDisplaySelectionHelper = false;
- if (!CanBeDrawn(dc, bDisplaySelectionHelper))
- {
- return;
- }
-
- // Draw link between parent and child.
- if (dc.flags & DISPLAY_LINKS)
- {
- if (GetParent())
- {
- dc.DrawLine(GetParentAttachPointWorldTM().GetTranslation(), wp, IsFrozen() ? kLinkColorGray : kLinkColorParent, IsFrozen() ? kLinkColorGray : kLinkColorChild);
- }
- size_t nChildCount = GetChildCount();
- for (size_t i = 0; i < nChildCount; ++i)
- {
- const CBaseObject* pChild = GetChild(i);
- dc.DrawLine(pChild->GetParentAttachPointWorldTM().GetTranslation(), pChild->GetWorldPos(), pChild->IsFrozen() ? kLinkColorGray : kLinkColorParent, pChild->IsFrozen() ? kLinkColorGray : kLinkColorChild);
- }
- }
-
- // Draw Bounding box
- if (dc.flags & DISPLAY_BBOX)
- {
- AABB box;
- GetBoundBox(box);
- dc.SetColor(Vec3(1, 1, 1));
- dc.DrawWireBox(box.min, box.max);
- }
-
- if (IsHighlighted())
- {
- DrawHighlight(dc);
- }
-
- if (IsSelected())
- {
- DrawArea(dc);
-
- CSelectionGroup* pSelection = GetObjectManager()->GetSelection();
-
- // If the number of selected object is over 2, the merged boundbox should be used to render the measurement axis.
- if (!pSelection || (pSelection && pSelection->GetCount() == 1))
- {
- DrawDimensions(dc);
- }
- }
-
- if (bDisplaySelectionHelper)
- {
- DrawSelectionHelper(dc, wp, labelColor, 1.0f);
- }
- else if (!(dc.flags & DISPLAY_HIDENAMES))
- {
- DrawLabel(dc, wp, labelColor);
- }
-
- SetDrawTextureIconProperties(dc, wp);
- DrawTextureIcon(dc, wp);
- DrawWarningIcons(dc, wp);
-}
-
//////////////////////////////////////////////////////////////////////////
void CBaseObject::DrawDimensions(DisplayContext&, AABB*)
{
@@ -850,91 +778,6 @@ void CBaseObject::DrawSelectionHelper(DisplayContext& dc, const Vec3& pos, const
dc.SetState(nPrevState);
}
-//////////////////////////////////////////////////////////////////////////
-void CBaseObject::SetDrawTextureIconProperties(DisplayContext& dc, const Vec3& pos, float alpha, int texIconFlags)
-{
- if (gSettings.viewports.bShowIcons || gSettings.viewports.bShowSizeBasedIcons)
- {
- if (IsHighlighted())
- {
- dc.SetColor(QColor(255, 120, 0), 0.8f * alpha);
- }
- else if (IsSelected())
- {
- dc.SetSelectedColor(alpha);
- }
- else if (IsFrozen())
- {
- dc.SetFreezeColor();
- }
- else
- {
- dc.SetColor(QColor(255, 255, 255), alpha);
- }
-
- m_vDrawIconPos = pos;
-
- int nIconFlags = texIconFlags;
- if (CheckFlags(OBJFLAG_SHOW_ICONONTOP))
- {
- Vec3 objectPos = GetWorldPos();
-
- AABB box;
- GetBoundBox(box);
- m_vDrawIconPos.z = (m_vDrawIconPos.z - objectPos.z) + box.max.z;
- nIconFlags |= DisplayContext::TEXICON_ALIGN_BOTTOM;
- }
- m_nIconFlags = nIconFlags;
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseObject::DrawTextureIcon(DisplayContext& dc, [[maybe_unused]] const Vec3& pos, [[maybe_unused]] float alpha)
-{
- if (m_nTextureIcon && (gSettings.viewports.bShowIcons || gSettings.viewports.bShowSizeBasedIcons))
- {
- dc.DrawTextureLabel(GetTextureIconDrawPos(), OBJECT_TEXTURE_ICON_SIZEX, OBJECT_TEXTURE_ICON_SIZEY, GetTextureIcon(), GetTextureIconFlags());
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CBaseObject::DrawWarningIcons(DisplayContext& dc, const Vec3&)
-{
- if (gSettings.viewports.bShowIcons || gSettings.viewports.bShowSizeBasedIcons)
- {
- const int warningIconSizeX = OBJECT_TEXTURE_ICON_SIZEX / 2;
- const int warningIconSizeY = OBJECT_TEXTURE_ICON_SIZEY / 2;
-
- const int iconOffsetX = m_nTextureIcon ? (-OBJECT_TEXTURE_ICON_SIZEX / 2) : 0;
- const int iconOffsetY = m_nTextureIcon ? (-OBJECT_TEXTURE_ICON_SIZEY / 2) : 0;
-
- if (gSettings.viewports.bShowScaleWarnings)
- {
- const EScaleWarningLevel scaleWarningLevel = GetScaleWarningLevel();
-
- if (scaleWarningLevel != eScaleWarningLevel_None)
- {
- dc.SetColor(QColor(255, scaleWarningLevel == eScaleWarningLevel_RescaledNonUniform ? 50 : 255, 50), 1.0f);
- dc.DrawTextureLabel(GetTextureIconDrawPos(), warningIconSizeX, warningIconSizeY,
- GetIEditor()->GetIconManager()->GetIconTexture(eIcon_ScaleWarning), GetTextureIconFlags(),
- -warningIconSizeX / 2, iconOffsetX - (warningIconSizeY / 2));
- }
- }
-
- if (gSettings.viewports.bShowRotationWarnings)
- {
- const ERotationWarningLevel rotationWarningLevel = GetRotationWarningLevel();
- if (rotationWarningLevel != eRotationWarningLevel_None)
- {
- dc.SetColor(QColor(255, rotationWarningLevel == eRotationWarningLevel_RotatedNonRectangular ? 50 : 255, 50), 1.0f);
- dc.DrawTextureLabel(GetTextureIconDrawPos(), warningIconSizeX, warningIconSizeY,
- GetIEditor()->GetIconManager()->GetIconTexture(eIcon_RotationWarning), GetTextureIconFlags(),
- warningIconSizeX / 2, iconOffsetY - (warningIconSizeY / 2));
- }
- }
- }
-}
-
//////////////////////////////////////////////////////////////////////////
void CBaseObject::DrawLabel(DisplayContext& dc, const Vec3& pos, const QColor& lC, float alpha, float size)
{
diff --git a/Code/Editor/Objects/BaseObject.h b/Code/Editor/Objects/BaseObject.h
index f78755e81d..fea248c7f7 100644
--- a/Code/Editor/Objects/BaseObject.h
+++ b/Code/Editor/Objects/BaseObject.h
@@ -398,9 +398,6 @@ public:
// Interface to be implemented in plugins.
//////////////////////////////////////////////////////////////////////////
- //! Draw object to specified viewport.
- virtual void Display([[maybe_unused]] DisplayContext& disp) {}
-
//! Perform intersection testing of this object.
//! Return true if was hit.
virtual bool HitTest([[maybe_unused]] HitContext& hc) { return false; };
@@ -529,8 +526,6 @@ protected:
void ResolveParent(CBaseObject* object);
void SetColor(const QColor& color);
- //! Draw default object items.
- virtual void DrawDefault(DisplayContext& dc, const QColor& labelColor = QColor(255, 255, 255));
//! Draw object label.
void DrawLabel(DisplayContext& dc, const Vec3& pos, const QColor& labelColor = QColor(255, 255, 255), float alpha = 1.0f, float size = 1.f);
//! Draw 3D Axis at object position.
@@ -539,10 +534,6 @@ protected:
void DrawArea(DisplayContext& dc);
//! Draw selection helper.
void DrawSelectionHelper(DisplayContext& dc, const Vec3& pos, const QColor& labelColor = QColor(255, 255, 255), float alpha = 1.0f);
- //! Draw helper icon.
- virtual void DrawTextureIcon(DisplayContext& dc, const Vec3& pos, float alpha = 1.0f);
- //! Draw warning icons
- virtual void DrawWarningIcons(DisplayContext& dc, const Vec3& pos);
//! Check if dimension's figures can be displayed before draw them.
virtual void DrawDimensions(DisplayContext& dc, AABB* pMergedBoundBox = nullptr);
@@ -575,7 +566,6 @@ protected:
//! Only used by ObjectManager.
bool IsPotentiallyVisible() const;
- void SetDrawTextureIconProperties(DisplayContext& dc, const Vec3& pos, float alpha = 1.0f, int texIconFlags = 0);
const Vec3& GetTextureIconDrawPos(){ return m_vDrawIconPos; };
int GetTextureIconFlags(){ return m_nIconFlags; };
diff --git a/Code/Editor/Objects/EntityObject.h b/Code/Editor/Objects/EntityObject.h
index c3e379bccc..c6b7e4ce2d 100644
--- a/Code/Editor/Objects/EntityObject.h
+++ b/Code/Editor/Objects/EntityObject.h
@@ -27,6 +27,7 @@
#define CLASS_ENVIRONMENT_LIGHT "EnvironmentLight"
class CEntityObject;
+class CSelectionGroup;
class QMenu;
/*!
diff --git a/Code/Editor/Objects/ObjectLoader.h b/Code/Editor/Objects/ObjectLoader.h
index fc1014ad03..fa576fa983 100644
--- a/Code/Editor/Objects/ObjectLoader.h
+++ b/Code/Editor/Objects/ObjectLoader.h
@@ -13,6 +13,8 @@
#include "ErrorReport.h"
#include
+#include
+
class CErrorRecord;
struct IObjectManager;
diff --git a/Code/Editor/Objects/ObjectManager.cpp b/Code/Editor/Objects/ObjectManager.cpp
index 1dea6ece7f..06233d4dd2 100644
--- a/Code/Editor/Objects/ObjectManager.cpp
+++ b/Code/Editor/Objects/ObjectManager.cpp
@@ -26,7 +26,6 @@
#include "Util/Image.h"
#include "ObjectManagerLegacyUndo.h"
#include "Include/HitContext.h"
-#include "EditMode/DeepSelection.h"
#include "Plugins/ComponentEntityEditorPlugin/Objects/ComponentEntityObject.h"
#include
diff --git a/Code/Editor/PakManagerDlg.qrc b/Code/Editor/PakManagerDlg.qrc
deleted file mode 100644
index bea8f8aafd..0000000000
--- a/Code/Editor/PakManagerDlg.qrc
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
- res/pakmanager_file.png
- res/pakmanager_folder.png
-
-
diff --git a/Code/Editor/PakManagerDlg.ui b/Code/Editor/PakManagerDlg.ui
deleted file mode 100644
index 087e5379da..0000000000
--- a/Code/Editor/PakManagerDlg.ui
+++ /dev/null
@@ -1,202 +0,0 @@
-
-
- CPakManagerDlg
-
-
-
- 0
- 0
- 661
- 494
-
-
-
- -
-
-
-
-
-
-
- 0
- 45
-
-
-
- Open PAK...
-
-
-
- -
-
-
-
- 0
- 45
-
-
-
- Create PAK...
-
-
-
- -
-
-
-
- 0
- 45
-
-
-
- Add files...
-
-
-
- -
-
-
-
- 0
- 45
-
-
-
- Add folder...
-
-
-
- -
-
-
-
- 0
- 45
-
-
-
- Extract...
-
-
-
- -
-
-
-
- 0
- 45
-
-
-
- Delete entries
-
-
-
- -
-
-
-
- 0
- 45
-
-
-
- &Close
-
-
-
-
-
- -
-
-
-
-
-
- Path:
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- QFrame::Panel
-
-
- QFrame::Sunken
-
-
- <none>
-
-
- Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
-
-
-
-
-
- -
-
-
- QFrame::Box
-
-
- Qt::ScrollBarAlwaysOn
-
-
- QAbstractItemView::NoEditTriggers
-
-
- QAbstractItemView::SelectItems
-
-
- 120
-
-
- false
-
-
-
- Filename
-
-
-
-
- Size
-
-
-
-
- Modified
-
-
-
-
- -
-
-
- Ready
-
-
- Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
-
-
-
- -
-
-
- Qt::AlignCenter
-
-
-
-
-
-
-
-
-
-
diff --git a/Code/Editor/Platform/Common/GCC/editor_lib_gcc.cmake b/Code/Editor/Platform/Common/GCC/editor_lib_gcc.cmake
new file mode 100644
index 0000000000..bc945f55c9
--- /dev/null
+++ b/Code/Editor/Platform/Common/GCC/editor_lib_gcc.cmake
@@ -0,0 +1,9 @@
+#
+# 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_COMPILE_OPTIONS PRIVATE -fexceptions)
diff --git a/Code/Editor/Plugins/ComponentEntityEditorPlugin/Objects/ComponentEntityObject.cpp b/Code/Editor/Plugins/ComponentEntityEditorPlugin/Objects/ComponentEntityObject.cpp
index fbb700723b..a70c200417 100644
--- a/Code/Editor/Plugins/ComponentEntityEditorPlugin/Objects/ComponentEntityObject.cpp
+++ b/Code/Editor/Plugins/ComponentEntityEditorPlugin/Objects/ComponentEntityObject.cpp
@@ -723,97 +723,6 @@ CComponentEntityObject* CComponentEntityObject::FindObjectForEntity(AZ::EntityId
return nullptr;
}
-void CComponentEntityObject::Display(DisplayContext& dc)
-{
- if (!(dc.flags & DISPLAY_2D))
- {
- m_entityIconVisible = false;
- }
-
- bool displaySelectionHelper = false;
- if (!CanBeDrawn(dc, displaySelectionHelper))
- {
- return;
- }
-
- DrawDefault(dc);
-
- bool showIcons = m_hasIcon;
- if (showIcons)
- {
- SEditorSettings* editorSettings = GetIEditor()->GetEditorSettings();
- if (!editorSettings->viewports.bShowIcons && !editorSettings->viewports.bShowSizeBasedIcons)
- {
- showIcons = false;
- }
- }
-
- if (m_entityId.IsValid())
- {
- // Draw link to parent if this or the parent object are selected.
- {
- AZ::EntityId parentId;
- EBUS_EVENT_ID_RESULT(parentId, m_entityId, AZ::TransformBus, GetParentId);
- if (parentId.IsValid())
- {
- bool isParentVisible = false;
- AzToolsFramework::EditorEntityInfoRequestBus::EventResult(isParentVisible, parentId, &AzToolsFramework::EditorEntityInfoRequestBus::Events::IsVisible);
-
- CComponentEntityObject* parentObject = CComponentEntityObject::FindObjectForEntity(parentId);
- if (isParentVisible && (IsSelected() || (parentObject && parentObject->IsSelected())))
- {
- const QColor kLinkColorParent(0, 255, 255);
- const QColor kLinkColorChild(0, 0, 255);
-
- AZ::Vector3 parentTranslation;
- EBUS_EVENT_ID_RESULT(parentTranslation, parentId, AZ::TransformBus, GetWorldTranslation);
- dc.DrawLine(AZVec3ToLYVec3(parentTranslation), GetWorldTM().GetTranslation(), kLinkColorParent, kLinkColorChild);
- }
- }
- }
-
- // Don't draw icons if we have an ancestor in the same location that has an icon - makes sure
- // ancestor icons draw on top and are able to be selected over children. Also check if a descendant
- // is selected at the same location. In cases of entity hierarchies where numerous ancestors have
- // no position offset, we need this so the ancestors don't draw over us when we're selected
- if (showIcons)
- {
- if ((dc.flags & DISPLAY_2D) ||
- IsSelected() ||
- IsAncestorIconDrawingAtSameLocation() ||
- IsDescendantSelectedAtSameLocation())
- {
- showIcons = false;
- }
- }
-
- // Allow components to override in-editor visualization.
- {
- const AzFramework::DisplayContextRequestGuard displayContextGuard(dc);
-
- AzFramework::DebugDisplayRequestBus::BusPtr debugDisplayBus;
- AzFramework::DebugDisplayRequestBus::Bind(
- debugDisplayBus, AzFramework::g_defaultSceneEntityDebugDisplayId);
- AZ_Assert(debugDisplayBus, "Invalid DebugDisplayRequestBus.");
-
- AzFramework::DebugDisplayRequests* debugDisplay =
- AzFramework::DebugDisplayRequestBus::FindFirstHandler(debugDisplayBus);
-
- AzFramework::EntityDebugDisplayEventBus::Event(
- m_entityId, &AzFramework::EntityDebugDisplayEvents::DisplayEntityViewport,
- AzFramework::ViewportInfo{ dc.GetView()->asCViewport()->GetViewportId() },
- *debugDisplay);
- }
- }
-}
-
-void CComponentEntityObject::DrawDefault(DisplayContext& dc, const QColor& labelColor)
-{
- CEntityObject::DrawDefault(dc, labelColor);
-
- DrawAccent(dc);
-}
-
bool CComponentEntityObject::IsIsolated() const
{
return m_isIsolated;
diff --git a/Code/Editor/Plugins/ComponentEntityEditorPlugin/Objects/ComponentEntityObject.h b/Code/Editor/Plugins/ComponentEntityEditorPlugin/Objects/ComponentEntityObject.h
index 7ccea8da84..62209965a5 100644
--- a/Code/Editor/Plugins/ComponentEntityEditorPlugin/Objects/ComponentEntityObject.h
+++ b/Code/Editor/Plugins/ComponentEntityEditorPlugin/Objects/ComponentEntityObject.h
@@ -55,7 +55,6 @@ public:
bool SetRotation(const Quat& rotate, int flags) override;
bool SetScale(const Vec3& scale, int flags) override;
void InvalidateTM(int nWhyFlags) override;
- void Display(DisplayContext& disp) override;
bool HitTest(HitContext& hc) override;
void GetLocalBounds(AABB& box) override;
void GetBoundBox(AABB& box) override;
@@ -69,7 +68,6 @@ public:
void DetachThis(bool bKeepPos = true) override;
XmlNodeRef Export(const QString& levelPath, XmlNodeRef& xmlNode) override;
void DeleteEntity() override;
- void DrawDefault(DisplayContext& dc, const QColor& labelColor = QColor(255, 255, 255)) override;
bool IsIsolated() const override;
bool IsSelected() const override;
diff --git a/Code/Editor/Plugins/ComponentEntityEditorPlugin/UI/Outliner/OutlinerListModel.cpp b/Code/Editor/Plugins/ComponentEntityEditorPlugin/UI/Outliner/OutlinerListModel.cpp
index 08d79adcf5..39be4839e6 100644
--- a/Code/Editor/Plugins/ComponentEntityEditorPlugin/UI/Outliner/OutlinerListModel.cpp
+++ b/Code/Editor/Plugins/ComponentEntityEditorPlugin/UI/Outliner/OutlinerListModel.cpp
@@ -53,6 +53,7 @@
#include
#include
#include
+#include
#include "OutlinerDisplayOptionsMenu.h"
#include "OutlinerSortFilterProxyModel.hxx"
@@ -252,17 +253,7 @@ QVariant OutlinerListModel::dataForName(const QModelIndex& index, int role) cons
if (s_paintingName && !m_filterString.empty())
{
// highlight characters in filter
- int highlightTextIndex = 0;
- do
- {
- highlightTextIndex = label.lastIndexOf(QString(m_filterString.c_str()), highlightTextIndex - 1, Qt::CaseInsensitive);
- if (highlightTextIndex >= 0)
- {
- const QString BACKGROUND_COLOR{ "#707070" };
- label.insert(static_cast(highlightTextIndex + m_filterString.length()), "");
- label.insert(highlightTextIndex, "");
- }
- } while(highlightTextIndex > 0);
+ label = AzToolsFramework::RichTextHighlighter::HighlightText(label, m_filterString.c_str());
}
return label;
}
@@ -2608,17 +2599,13 @@ void OutlinerItemDelegate::paint(QPainter* painter, const QStyleOptionViewItem&
optionV4.text.clear();
optionV4.widget->style()->drawControl(QStyle::CE_ItemViewItem, &optionV4, painter);
- // Now we setup a Text Document so it can draw the rich text
- QTextDocument textDoc;
- textDoc.setDefaultFont(optionV4.font);
- textDoc.setDefaultStyleSheet("body {color: white}");
- textDoc.setHtml("" + entityNameRichText + "");
int verticalOffset = GetEntityNameVerticalOffset(entityId);
- painter->translate(textRect.topLeft() + QPoint(0, verticalOffset));
- textDoc.setTextWidth(textRect.width());
- textDoc.drawContents(painter, QRectF(0, 0, textRect.width(), textRect.height()));
+
+ AzToolsFramework::RichTextHighlighter::PaintHighlightedRichText(
+ entityNameRichText, painter, optionV4, textRect, QPoint(0, verticalOffset));
painter->restore();
+
OutlinerListModel::s_paintingName = false;
}
else
diff --git a/Code/Editor/Resource.h b/Code/Editor/Resource.h
index 432f07a531..ef72bfc9be 100644
--- a/Code/Editor/Resource.h
+++ b/Code/Editor/Resource.h
@@ -196,7 +196,6 @@
#define ID_FILE_EXPORT_TERRAINAREA 33904
#define ID_FILE_EXPORT_TERRAINAREAWITHOBJECTS 33910
#define ID_FILE_EXPORT_SELECTEDOBJECTS 33911
-#define ID_TERRAIN_TIMEOFDAY 33912
#define ID_SPLINE_PREVIOUS_KEY 33916
#define ID_SPLINE_NEXT_KEY 33917
#define ID_SPLINE_FLATTEN_ALL 33918
@@ -290,7 +289,6 @@
#define ID_TV_TRACKS_TOOLBAR_LAST 35183 // for up to 100 "Add Tracks..." dynamically added Track View Track buttons
#define ID_OPEN_TERRAIN_EDITOR 36007
#define ID_OPEN_UICANVASEDITOR 36010
-#define ID_TERRAIN_TIMEOFDAYBUTTON 36011
#define ID_OPEN_TERRAINTEXTURE_EDITOR 36012
#define ID_SKINS_REFRESH 36014
#define ID_FILE_GENERATETERRAIN 36016
diff --git a/Code/Editor/SelectEAXPresetDlg.cpp b/Code/Editor/SelectEAXPresetDlg.cpp
deleted file mode 100644
index 733de8b9cf..0000000000
--- a/Code/Editor/SelectEAXPresetDlg.cpp
+++ /dev/null
@@ -1,67 +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 "EditorDefs.h"
-
-#include "SelectEAXPresetDlg.h"
-
-AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
-#include "ui_SelectEAXPresetDlg.h"
-AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
-
-
-CSelectEAXPresetDlg::CSelectEAXPresetDlg(QWidget* pParent)
- : QDialog(pParent)
- , m_ui(new Ui_CSelectEAXPresetDlg)
-{
- m_ui->setupUi(this);
-}
-
-CSelectEAXPresetDlg::~CSelectEAXPresetDlg()
-{
-}
-
-void CSelectEAXPresetDlg::SetCurrPreset(const QString& sPreset)
-{
- QAbstractListModel* model = Model();
- if (!model)
- {
- return;
- }
-
- QModelIndexList indexes = model->match(QModelIndex(), Qt::DisplayRole, sPreset, 1, Qt::MatchExactly);
-
- if (!indexes.isEmpty())
- {
- m_ui->listView->setCurrentIndex(indexes.at(0));
- }
-}
-
-QString CSelectEAXPresetDlg::GetCurrPreset() const
-{
- if (m_ui->listView->currentIndex().isValid())
- {
- return m_ui->listView->currentIndex().data().toString();
- }
- // EXCEPTION: OCX Property Pages should return false
- return QString();
-}
-
-
-void CSelectEAXPresetDlg::SetModel(QAbstractListModel* model)
-{
- m_ui->listView->setModel(model);
-}
-
-QAbstractListModel* CSelectEAXPresetDlg::Model() const
-{
- return static_cast(m_ui->listView->model());
-}
-
-#include "moc_SelectEAXPresetDlg.cpp"
diff --git a/Code/Editor/SelectEAXPresetDlg.h b/Code/Editor/SelectEAXPresetDlg.h
deleted file mode 100644
index 9943585987..0000000000
--- a/Code/Editor/SelectEAXPresetDlg.h
+++ /dev/null
@@ -1,43 +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
-
-// CSelectEAXPresetDlg dialog
-#ifndef CRYINCLUDE_EDITOR_SELECTEAXPRESETDLG_H
-#define CRYINCLUDE_EDITOR_SELECTEAXPRESETDLG_H
-
-#if !defined(Q_MOC_RUN)
-#include
-#endif
-
-class QAbstractListModel;
-class Ui_CSelectEAXPresetDlg;
-
-class CSelectEAXPresetDlg
- : public QDialog
-{
- Q_OBJECT
-
-public:
- CSelectEAXPresetDlg(QWidget* pParent = nullptr); // standard constructor
- ~CSelectEAXPresetDlg();
-
- void SetCurrPreset(const QString& sPreset);
- QString GetCurrPreset() const;
-
-protected:
- void SetModel(QAbstractListModel* model);
- QAbstractListModel* Model() const;
-
-private:
- Ui_CSelectEAXPresetDlg* m_ui;
-};
-
-#endif // CRYINCLUDE_EDITOR_SELECTEAXPRESETDLG_H
diff --git a/Code/Editor/SelectEAXPresetDlg.ui b/Code/Editor/SelectEAXPresetDlg.ui
deleted file mode 100644
index 3177b66c38..0000000000
--- a/Code/Editor/SelectEAXPresetDlg.ui
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
- CSelectEAXPresetDlg
-
-
-
- 0
- 0
- 197
- 233
-
-
-
- Select Preset...
-
-
- -
-
-
- -
-
-
- QDialogButtonBox::Cancel|QDialogButtonBox::Ok
-
-
-
-
-
-
- listView
-
-
-
-
- buttonBox
- accepted()
- CSelectEAXPresetDlg
- accept()
-
-
- 51
- 207
-
-
- 49
- 199
-
-
-
-
- buttonBox
- rejected()
- CSelectEAXPresetDlg
- reject()
-
-
- 148
- 213
-
-
- 131
- 199
-
-
-
-
-
diff --git a/Code/Editor/Settings.cpp b/Code/Editor/Settings.cpp
index acb48c3545..8561e6dba3 100644
--- a/Code/Editor/Settings.cpp
+++ b/Code/Editor/Settings.cpp
@@ -142,9 +142,6 @@ SEditorSettings::SEditorSettings()
viewports.bShowMeshStatsOnMouseOver = false;
viewports.bDrawEntityLabels = false;
viewports.bShowTriggerBounds = false;
- viewports.bShowIcons = true;
- viewports.bDistanceScaleIcons = true;
- viewports.bShowSizeBasedIcons = false;
viewports.nShowFrozenHelpers = true;
viewports.bFillSelectedShapes = false;
viewports.nTopMapTextureResolution = 512;
@@ -534,8 +531,6 @@ void SEditorSettings::Save(bool isEditorClosing)
SaveValue("Settings", "ShowMeshStatsOnMouseOver", viewports.bShowMeshStatsOnMouseOver);
SaveValue("Settings", "DrawEntityLabels", viewports.bDrawEntityLabels);
SaveValue("Settings", "ShowTriggerBounds", viewports.bShowTriggerBounds);
- SaveValue("Settings", "ShowIcons", viewports.bShowIcons);
- SaveValue("Settings", "ShowSizeBasedIcons", viewports.bShowSizeBasedIcons);
SaveValue("Settings", "ShowFrozenHelpers", viewports.nShowFrozenHelpers);
SaveValue("Settings", "FillSelectedShapes", viewports.bFillSelectedShapes);
SaveValue("Settings", "MapTextureResolution", viewports.nTopMapTextureResolution);
@@ -736,8 +731,6 @@ void SEditorSettings::Load()
LoadValue("Settings", "ShowMeshStatsOnMouseOver", viewports.bShowMeshStatsOnMouseOver);
LoadValue("Settings", "DrawEntityLabels", viewports.bDrawEntityLabels);
LoadValue("Settings", "ShowTriggerBounds", viewports.bShowTriggerBounds);
- LoadValue("Settings", "ShowIcons", viewports.bShowIcons);
- LoadValue("Settings", "ShowSizeBasedIcons", viewports.bShowSizeBasedIcons);
LoadValue("Settings", "ShowFrozenHelpers", viewports.nShowFrozenHelpers);
LoadValue("Settings", "FillSelectedShapes", viewports.bFillSelectedShapes);
LoadValue("Settings", "MapTextureResolution", viewports.nTopMapTextureResolution);
diff --git a/Code/Editor/Settings.h b/Code/Editor/Settings.h
index 9276d9b715..0ebb70501d 100644
--- a/Code/Editor/Settings.h
+++ b/Code/Editor/Settings.h
@@ -136,13 +136,6 @@ struct SViewportsSettings
bool bDrawEntityLabels;
//! Show Trigger bounds.
bool bShowTriggerBounds;
- //! Show Icons in viewport.
- bool bShowIcons;
- //! Scale icons with distance, so they aren't a fixed size no matter how far away you are
- bool bDistanceScaleIcons;
-
- //! Show Size-based Icons in viewport.
- bool bShowSizeBasedIcons;
//! Show Helpers in viewport for frozen objects.
int nShowFrozenHelpers;
diff --git a/Code/Editor/SurfaceTypeValidator.cpp b/Code/Editor/SurfaceTypeValidator.cpp
deleted file mode 100644
index 9f246cd453..0000000000
--- a/Code/Editor/SurfaceTypeValidator.cpp
+++ /dev/null
@@ -1,23 +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 "EditorDefs.h"
-
-#include "SurfaceTypeValidator.h"
-
-// Editor
-#include "Include/IObjectManager.h"
-#include "Objects/BaseObject.h"
-#include "ErrorReport.h"
-
-
-void CSurfaceTypeValidator::Validate()
-{
-}
-
diff --git a/Code/Editor/SurfaceTypeValidator.h b/Code/Editor/SurfaceTypeValidator.h
deleted file mode 100644
index 6b1a3fbed7..0000000000
--- a/Code/Editor/SurfaceTypeValidator.h
+++ /dev/null
@@ -1,24 +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_EDITOR_SURFACETYPEVALIDATOR_H
-#define CRYINCLUDE_EDITOR_SURFACETYPEVALIDATOR_H
-#pragma once
-
-
-
-class CSurfaceTypeValidator
-{
-public:
- void Validate();
-
-private:
-};
-
-#endif // CRYINCLUDE_EDITOR_SURFACETYPEVALIDATOR_H
diff --git a/Code/Editor/TimeOfDay/main-00.png b/Code/Editor/TimeOfDay/main-00.png
deleted file mode 100644
index 2c44fec541..0000000000
--- a/Code/Editor/TimeOfDay/main-00.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5201dbba6c8114914ed680b04b72a5e18e22c0519a514bcccdc7ae8d32670b4e
-size 993
diff --git a/Code/Editor/TimeOfDay/main-01.png b/Code/Editor/TimeOfDay/main-01.png
deleted file mode 100644
index 5cc1bf33d8..0000000000
--- a/Code/Editor/TimeOfDay/main-01.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:48a7250ad41c5e298079ddd13910b58baca2ef592defcc162ccc9df542d28905
-size 981
diff --git a/Code/Editor/TimeOfDay/main-02.png b/Code/Editor/TimeOfDay/main-02.png
deleted file mode 100644
index b7d90648a3..0000000000
--- a/Code/Editor/TimeOfDay/main-02.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:98b9e9abcc54b4f3e6903ad74bb50f364bfe4c8cd9fedc9653a6603d64a1ee0a
-size 838
diff --git a/Code/Editor/TimeOfDay/main-03.png b/Code/Editor/TimeOfDay/main-03.png
deleted file mode 100644
index e073dbf60b..0000000000
--- a/Code/Editor/TimeOfDay/main-03.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1199c834fc8de69f9d7c76e8c7fbd84e9b92713b9f07b513137085e5089432cb
-size 857
diff --git a/Code/Editor/TimeOfDay/main-04.png b/Code/Editor/TimeOfDay/main-04.png
deleted file mode 100644
index 6049dbfe18..0000000000
--- a/Code/Editor/TimeOfDay/main-04.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:79b44be1dbe5518e06dc8c8823d00462136d39ffe60a32ef4f64dc0712654d33
-size 646
diff --git a/Code/Editor/TimeOfDay/main-05.png b/Code/Editor/TimeOfDay/main-05.png
deleted file mode 100644
index 054419f39a..0000000000
--- a/Code/Editor/TimeOfDay/main-05.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6ea7450c1a278570e2a1dba3a8b4d7d4e5f0d054e8371139ebdb5220c405d355
-size 537
diff --git a/Code/Editor/TimeOfDay/main-06.png b/Code/Editor/TimeOfDay/main-06.png
deleted file mode 100644
index 35f8afdae2..0000000000
--- a/Code/Editor/TimeOfDay/main-06.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:bc73f0720f2ff877aff5c6646938b7fc509a69d92e766fecb9fa010eecadee7b
-size 606
diff --git a/Code/Editor/TimeOfDay/main-07.png b/Code/Editor/TimeOfDay/main-07.png
deleted file mode 100644
index aca9597355..0000000000
--- a/Code/Editor/TimeOfDay/main-07.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e63519ed54fc19a4b4a2a38cb2c5f148b7404ac614d4aab039b71fee64cd7425
-size 569
diff --git a/Code/Editor/TimeOfDay/main-08.png b/Code/Editor/TimeOfDay/main-08.png
deleted file mode 100644
index abeb114fc2..0000000000
--- a/Code/Editor/TimeOfDay/main-08.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8742cad4b8f8f5bba59abb9cc028db84de222ed8b393398f6837fea16bb4a1d8
-size 563
diff --git a/Code/Editor/TimeOfDay/main-09.png b/Code/Editor/TimeOfDay/main-09.png
deleted file mode 100644
index cc77b8c9e2..0000000000
--- a/Code/Editor/TimeOfDay/main-09.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ef85628301b4edc4f858f0988e4f072772be3feb92d27a2ec33b72a27bcee7ff
-size 583
diff --git a/Code/Editor/TimeOfDay/main-10.png b/Code/Editor/TimeOfDay/main-10.png
deleted file mode 100644
index dc463c6497..0000000000
--- a/Code/Editor/TimeOfDay/main-10.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d17bfbdee6d37566b241adf64241ef47b62145aaac3e9e8f9691d1fb866b5fcb
-size 717
diff --git a/Code/Editor/TimeOfDay/main-11.png b/Code/Editor/TimeOfDay/main-11.png
deleted file mode 100644
index d686ab18c8..0000000000
--- a/Code/Editor/TimeOfDay/main-11.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:98b629abf927bcea41d8857b1761d12a37836471d7106b2f5210337c0ace0d9c
-size 1103
diff --git a/Code/Editor/TimeOfDay/main-12.png b/Code/Editor/TimeOfDay/main-12.png
deleted file mode 100644
index 069510ab24..0000000000
--- a/Code/Editor/TimeOfDay/main-12.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e949111b33e28834995807cab30ecb58d988a81a2d58fa166117962c85b8e149
-size 849
diff --git a/Code/Editor/TopRendererWnd.h b/Code/Editor/TopRendererWnd.h
index c5bc7a31f2..7bdf2eaff2 100644
--- a/Code/Editor/TopRendererWnd.h
+++ b/Code/Editor/TopRendererWnd.h
@@ -81,8 +81,6 @@ public:
bool m_bShowStatObjects;
bool m_bShowWater;
bool m_bAutoScaleGreyRange;
-
- friend class QTopRendererWnd;
};
#endif // CRYINCLUDE_EDITOR_TOPRENDERERWND_H
diff --git a/Code/Editor/TrackView/TrackViewSequence.h b/Code/Editor/TrackView/TrackViewSequence.h
index a392ad00f9..8f686af0cb 100644
--- a/Code/Editor/TrackView/TrackViewSequence.h
+++ b/Code/Editor/TrackView/TrackViewSequence.h
@@ -11,6 +11,7 @@
#define CRYINCLUDE_EDITOR_TRACKVIEW_TRACKVIEWSEQUENCE_H
#pragma once
+#include
#include "IMovieSystem.h"
#include
diff --git a/Code/Editor/TrackView/TrackViewSequenceManager.cpp b/Code/Editor/TrackView/TrackViewSequenceManager.cpp
index d7c1e3c709..515af4df38 100644
--- a/Code/Editor/TrackView/TrackViewSequenceManager.cpp
+++ b/Code/Editor/TrackView/TrackViewSequenceManager.cpp
@@ -408,20 +408,6 @@ void CTrackViewSequenceManager::OnSequenceRemoved(CTrackViewSequence* sequence)
}
}
-////////////////////////////////////////////////////////////////////////////
-void CTrackViewSequenceManager::OnDataBaseItemEvent([[maybe_unused]] IDataBaseItem* pItem, EDataBaseItemEvent event)
-{
- if (event != EDataBaseItemEvent::EDB_ITEM_EVENT_ADD)
- {
- const size_t numSequences = m_sequences.size();
-
- for (size_t i = 0; i < numSequences; ++i)
- {
- m_sequences[i]->UpdateDynamicParams();
- }
- }
-}
-
////////////////////////////////////////////////////////////////////////////
CTrackViewAnimNodeBundle CTrackViewSequenceManager::GetAllRelatedAnimNodes(const AZ::EntityId entityId) const
{
diff --git a/Code/Editor/TrackView/TrackViewSequenceManager.h b/Code/Editor/TrackView/TrackViewSequenceManager.h
index 1474323dc6..6c65a7f1a9 100644
--- a/Code/Editor/TrackView/TrackViewSequenceManager.h
+++ b/Code/Editor/TrackView/TrackViewSequenceManager.h
@@ -13,13 +13,11 @@
#include "TrackViewSequence.h"
-#include "IDataBaseManager.h"
#include
class CTrackViewSequenceManager
: public IEditorNotifyListener
- , public IDataBaseManagerListener
, public ITrackViewSequenceManager
, public AZ::EntitySystemBus::Handler
{
@@ -65,8 +63,6 @@ private:
void OnSequenceAdded(CTrackViewSequence* pSequence);
void OnSequenceRemoved(CTrackViewSequence* pSequence);
- void OnDataBaseItemEvent(IDataBaseItem* pItem, EDataBaseItemEvent event) override;
-
// AZ::EntitySystemBus
void OnEntityNameChanged(const AZ::EntityId& entityId, const AZStd::string& name) override;
void OnEntityDestruction(const AZ::EntityId& entityId) override;
diff --git a/Code/Editor/UndoViewPosition.cpp b/Code/Editor/UndoViewPosition.cpp
deleted file mode 100644
index 1934d255d3..0000000000
--- a/Code/Editor/UndoViewPosition.cpp
+++ /dev/null
@@ -1,67 +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 : Undo for Python function (PySetCurrentViewPosition)
-
-
-#include "EditorDefs.h"
-
-#include "UndoViewPosition.h"
-
-// Editor
-#include "ViewManager.h"
-
-CUndoViewPosition::CUndoViewPosition(const QString& pUndoDescription)
-{
- m_undoDescription = pUndoDescription;
-
- CViewport* pRenderViewport = GetIEditor()->GetViewManager()->GetGameViewport();
- if (pRenderViewport)
- {
- Matrix34 tm = pRenderViewport->GetViewTM();
- m_undo = tm.GetTranslation();
- }
-}
-
-int CUndoViewPosition::GetSize()
-{
- return sizeof(*this);
-}
-
-QString CUndoViewPosition::GetDescription()
-{
- return m_undoDescription;
-}
-
-void CUndoViewPosition::Undo(bool bUndo)
-{
- CViewport* pRenderViewport = GetIEditor()->GetViewManager()->GetGameViewport();
- if (pRenderViewport)
- {
- Matrix34 tm = pRenderViewport->GetViewTM();
- if (bUndo)
- {
- m_redo = tm.GetTranslation();
- }
-
- tm.SetTranslation(m_undo);
- pRenderViewport->SetViewTM(tm);
- }
-}
-
-void CUndoViewPosition::Redo()
-{
- CViewport* pRenderViewport = GetIEditor()->GetViewManager()->GetGameViewport();
- if (pRenderViewport)
- {
- Matrix34 tm = pRenderViewport->GetViewTM();
- tm.SetTranslation(m_redo);
- pRenderViewport->SetViewTM(tm);
- }
-}
diff --git a/Code/Editor/UndoViewPosition.h b/Code/Editor/UndoViewPosition.h
deleted file mode 100644
index e0c6c145e8..0000000000
--- a/Code/Editor/UndoViewPosition.h
+++ /dev/null
@@ -1,36 +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 : Undo for Python function (PySetCurrentViewPosition)
-
-#ifndef CRYINCLUDE_EDITOR_UNDOVIEWPOSITION_H
-#define CRYINCLUDE_EDITOR_UNDOVIEWPOSITION_H
-#pragma once
-
-#include "Undo/IUndoObject.h"
-
-class CUndoViewPosition
- : public IUndoObject
-{
-public:
- CUndoViewPosition(const QString& pUndoDescription = "Set Current View Position");
-
-protected:
- int GetSize();
- QString GetDescription();
- void Undo(bool bUndo);
- void Redo();
-
-private:
- Vec3 m_undo;
- Vec3 m_redo;
- QString m_undoDescription;
-};
-
-#endif // CRYINCLUDE_EDITOR_UNDOVIEWPOSITION_H
diff --git a/Code/Editor/UndoViewRotation.cpp b/Code/Editor/UndoViewRotation.cpp
deleted file mode 100644
index a305641d3b..0000000000
--- a/Code/Editor/UndoViewRotation.cpp
+++ /dev/null
@@ -1,78 +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 : Undo for Python function (PySetCurrentViewPosition)
-
-
-#include "EditorDefs.h"
-
-#include "UndoViewRotation.h"
-
-// Editor
-#include "ViewManager.h"
-
-#include
-#include
-#include
-#include
-
-Ang3 CUndoViewRotation::GetActiveCameraRotation()
-{
- AZ::Transform activeCameraTm = AZ::Transform::CreateIdentity();
- Camera::ActiveCameraRequestBus::BroadcastResult(
- activeCameraTm,
- &Camera::ActiveCameraRequestBus::Events::GetActiveCameraTransform
- );
- const AZ::Matrix3x4 cameraMatrix = AZ::Matrix3x4::CreateFromTransform(activeCameraTm);
- const Matrix33 cameraMatrixCry = AZMatrix3x3ToLYMatrix3x3(AZ::Matrix3x3::CreateFromMatrix3x4(cameraMatrix));
- return RAD2DEG(Ang3::GetAnglesXYZ(cameraMatrixCry));
-}
-
-CUndoViewRotation::CUndoViewRotation(const QString& pUndoDescription)
-{
- m_undoDescription = pUndoDescription;
- m_undo = GetActiveCameraRotation();
-}
-
-int CUndoViewRotation::GetSize()
-{
- return sizeof(*this);
-}
-
-QString CUndoViewRotation::GetDescription()
-{
- return m_undoDescription;
-}
-
-void CUndoViewRotation::Undo(bool bUndo)
-{
- CViewport* pRenderViewport = GetIEditor()->GetViewManager()->GetGameViewport();
- if (pRenderViewport)
- {
- if (bUndo)
- {
- m_redo = GetActiveCameraRotation();
- }
-
- Matrix34 tm = pRenderViewport->GetViewTM();
- tm.SetRotationXYZ(Ang3(DEG2RAD(m_undo.x), DEG2RAD(m_undo.y), DEG2RAD(m_undo.z)), tm.GetTranslation());
- pRenderViewport->SetViewTM(tm);
- }
-}
-
-void CUndoViewRotation::Redo()
-{
- CViewport* pRenderViewport = GetIEditor()->GetViewManager()->GetGameViewport();
- if (pRenderViewport)
- {
- Matrix34 tm = pRenderViewport->GetViewTM();
- tm.SetRotationXYZ(Ang3(DEG2RAD(m_redo.x), DEG2RAD(m_redo.y), DEG2RAD(m_redo.z)), tm.GetTranslation());
- pRenderViewport->SetViewTM(tm);
- }
-}
diff --git a/Code/Editor/UndoViewRotation.h b/Code/Editor/UndoViewRotation.h
deleted file mode 100644
index 2e086a3f05..0000000000
--- a/Code/Editor/UndoViewRotation.h
+++ /dev/null
@@ -1,39 +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 : Undo for Python function (PySetCurrentViewRotation)
-
-
-#ifndef CRYINCLUDE_EDITOR_UNDOVIEWROTATION_H
-#define CRYINCLUDE_EDITOR_UNDOVIEWROTATION_H
-#pragma once
-#include "Undo/IUndoObject.h"
-
-
-class CUndoViewRotation
- : public IUndoObject
-{
-public:
- CUndoViewRotation(const QString& pUndoDescription = "Set Current View Rotation");
-
-protected:
- int GetSize();
- QString GetDescription();
- void Undo(bool bUndo);
- void Redo();
-
-private:
- static Ang3 GetActiveCameraRotation();
-
- Ang3 m_undo;
- Ang3 m_redo;
- QString m_undoDescription;
-};
-
-#endif // CRYINCLUDE_EDITOR_UNDOVIEWROTATION_H
diff --git a/Code/Editor/UserMessageDefines.h b/Code/Editor/UserMessageDefines.h
deleted file mode 100644
index 0b13d2819f..0000000000
--- a/Code/Editor/UserMessageDefines.h
+++ /dev/null
@@ -1,60 +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_EDITOR_USERMESSAGEDEFINES_H
-#define CRYINCLUDE_EDITOR_USERMESSAGEDEFINES_H
-#pragma once
-
-
-enum ESandboxUserMessages
-{
- // InPlaceComboBox
- WM_USER_ON_SELECTION_CANCEL = WM_USER + 1,
- WM_USER_ON_SELECTION_OK,
- WM_USER_ON_NEW_SELECTION,
- WM_USER_ON_EDITCHANGE,
- WM_USER_ON_OPENDROPDOWN,
- WM_USER_ON_EDITKEYDOWN,
- WM_USER_ON_EDITCLICK,
- // ACListWnd
- ENAC_UPDATE,
- // EditWithButton
- WM_USER_EDITWITHBUTTON_CLICKED,
- // FillSliderCtrl
- WMU_FS_CHANGED,
- WMU_FS_LBUTTONDOWN,
- WMU_FS_LBUTTONUP,
- FLM_EDITTEXTCHANGED,
- FLM_FILTERTEXTCHANGED,
- // NumberCtrlEdit
- WMU_LBUTTONDOWN,
- WMU_LBUTTONUP,
- WM_ONWINDOWFOCUSCHANGES,
- // SelectObjectDialog
- IDT_TIMER_0,
- IDT_TIMER_1,
- // LensFlareEditor
- WM_FLAREEDITOR_UPDATETREECONTROL,
- // EquipPackDialog
- UM_EQUIPLIST_CHECKSTATECHANGE,
- // MaterialSender/MatEditMainDlg
- WM_MATEDITPICK,
- // GridMapWindow
- WM_USER_ON_DBL_CLICK,
- // LMCompDialog
- WM_UPDATE_LIGHTMAP_GENERATION_PROGRESS,
- WM_UPDATE_LIGHTMAP_GENERATION_MEMUSAGE,
- WM_UPDATE_LIGHTMAP_GENERATION_MEMUSAGE_STATIC,
- WM_UPDATE_GLM_NAME_EDIT,
- // Viewport
- WM_VIEWPORT_ON_TITLE_CHANGE,
- // VisualLogControls
- UWM_BUTTON_CLICKED,
-};
-#endif // CRYINCLUDE_EDITOR_USERMESSAGEDEFINES_H
diff --git a/Code/Editor/Util/EditorUtils.cpp b/Code/Editor/Util/EditorUtils.cpp
index adae34773a..47264a51ab 100644
--- a/Code/Editor/Util/EditorUtils.cpp
+++ b/Code/Editor/Util/EditorUtils.cpp
@@ -176,23 +176,6 @@ QString TrimTrailingZeros(QString str)
return str;
}
-//////////////////////////////////////////////////////////////////////////
-// This function is supposed to format float in user-friendly way,
-// omitting the exponent notation.
-//
-// Why not using printf? Its formatting rules has following drawbacks:
-// %g - will use exponent for small numbers;
-// %.Nf - doesn't allow to control total amount of significant numbers,
-// which exposes limited precision during binary-to-decimal fraction
-// conversion.
-//////////////////////////////////////////////////////////////////////////
-void FormatFloatForUI(QString& str, int significantDigits, double value)
-{
- str = TrimTrailingZeros(QString::number(value, 'f', significantDigits));
- return;
-}
-//////////////////////////////////////////////////////////////////////////-
-
//////////////////////////////////////////////////////////////////////////
QColor ColorLinearToGamma(ColorF col)
{
diff --git a/Code/Editor/Util/EditorUtils.h b/Code/Editor/Util/EditorUtils.h
index e950d75012..5a69633d0f 100644
--- a/Code/Editor/Util/EditorUtils.h
+++ b/Code/Editor/Util/EditorUtils.h
@@ -212,22 +212,6 @@ namespace XmlHelpers
//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-// Drag Drop helper functions
-//////////////////////////////////////////////////////////////////////////
-namespace EditorDragDropHelpers
-{
- inline QString GetAnimationNameClipboardFormat()
- {
- return QStringLiteral("application/x-animation-browser-copy");
- }
-
- inline QString GetFragmentClipboardFormat()
- {
- return QStringLiteral("application/x-preview-fragment-properties");
- }
-}
-
//////////////////////////////////////////////////////////////////////////
/*!
@@ -292,116 +276,6 @@ public:
}
};
-
-//////////////////////////////////////////////////////////////////////////
-//
-// Convert String representation of color to RGB integer value.
-//
-//////////////////////////////////////////////////////////////////////////
-inline QColor String2Color(const QString& val)
-{
- unsigned int r = 0, g = 0, b = 0;
- int res = 0;
- res = azsscanf(val.toUtf8().data(), "R:%d,G:%d,B:%d", &r, &g, &b);
- if (res != 3)
- {
- res = azsscanf(val.toUtf8().data(), "R:%d G:%d B:%d", &r, &g, &b);
- }
- if (res != 3)
- {
- res = azsscanf(val.toUtf8().data(), "%d,%d,%d", &r, &g, &b);
- }
- if (res != 3)
- {
- res = azsscanf(val.toUtf8().data(), "%d %d %d", &r, &g, &b);
- }
- if (res != 3)
- {
- azsscanf(val.toUtf8().data(), "%x", &r);
- return r;
- }
-
- return QColor(r, g, b);
-}
-
-// Converts QColor to Vector.
-inline Vec3 Rgb2Vec(const QColor& color)
-{
- return Vec3(aznumeric_cast(color.redF()), aznumeric_cast(color.greenF()), aznumeric_cast(color.blueF()));
-}
-
-// Converts QColor to ColorF.
-inline ColorF Rgb2ColorF(const QColor& color)
-{
- return ColorF(aznumeric_cast(color.redF()), aznumeric_cast(color.greenF()), aznumeric_cast(color.blueF()), 1.0f);
-}
-
-// Converts QColor to Vector.
-inline QColor Vec2Rgb(const Vec3& color)
-{
- return QColor(aznumeric_cast(color.x * 255), aznumeric_cast(color.y * 255), aznumeric_cast(color.z * 255));
-}
-
-// Converts ColorF to QColor.
-inline QColor ColorF2Rgb(const ColorF& color)
-{
- return QColor(aznumeric_cast(color.r * 255), aznumeric_cast(color.g * 255), aznumeric_cast(color.b * 255));
-}
-
-//////////////////////////////////////////////////////////////////////////
-// Tokenize string.
-//////////////////////////////////////////////////////////////////////////
-inline QString TokenizeString(const QString& s, LPCSTR pszTokens, int& iStart)
-{
- assert(iStart >= 0);
-
- QByteArray str = s.toUtf8();
-
- if (pszTokens == nullptr)
- {
- return str;
- }
-
- auto pszPlace = str.begin() + iStart;
- auto pszEnd = str.end();
- if (pszPlace < pszEnd)
- {
- int nIncluding = (int)strspn(pszPlace, pszTokens);
- ;
-
- if ((pszPlace + nIncluding) < pszEnd)
- {
- pszPlace += nIncluding;
- int nExcluding = (int)strcspn(pszPlace, pszTokens);
-
- int iFrom = iStart + nIncluding;
- int nUntil = nExcluding;
- iStart = iFrom + nUntil + 1;
-
- return (str.mid(iFrom, nUntil));
- }
- }
-
- // return empty string, done tokenizing
- iStart = -1;
- return "";
-}
-
-// This template function will join strings from a vector into a single string, using a separator char
-template
-inline void JoinStrings(const QList& rStrings, QString& rDestStr, char aSeparator = ',')
-{
- for (size_t i = 0, iCount = rStrings.size(); i < iCount; ++i)
- {
- rDestStr += rStrings[i];
-
- if (i < iCount - 1)
- {
- rDestStr += aSeparator;
- }
- }
-}
-
// This function will split a string containing separated strings, into a vector of strings
// better version of TokenizeString
inline void SplitString(const QString& rSrcStr, QStringList& rDestStrings, char aSeparator = ',')
@@ -435,45 +309,6 @@ inline void SplitString(const QString& rSrcStr, QStringList& rDestStrings, char
}
}
-// Format unsigned number to string with 1000s separator
-inline QString FormatWithThousandsSeperator(const unsigned int number)
-{
- QString string;
-
- string = QString::number(number);
-
- for (int p = string.length() - 3; p > 0; p -= 3)
- {
- string.insert(p, ',');
- }
-
- return string;
-}
-
-
-void FormatFloatForUI(QString& str, int significantDigits, double value);
-
-//////////////////////////////////////////////////////////////////////////
-// Simply sub string searching case insensitive.
-//////////////////////////////////////////////////////////////////////////
-inline const char* strstri(const char* pString, const char* pSubstring)
-{
- int i, j, k;
- for (i = 0; pString[i]; i++)
- {
- for (j = i, k = 0; tolower(pString[j]) == tolower(pSubstring[k]); j++, k++)
- {
- if (!pSubstring[k + 1])
- {
- return (pString + i);
- }
- }
- }
-
- return nullptr;
-}
-
-
inline bool CheckVirtualKey(Qt::MouseButton button)
{
return (qApp->property("pressedMouseButtons").toInt() & button) != 0;
diff --git a/Code/Editor/Util/FileUtil.cpp b/Code/Editor/Util/FileUtil.cpp
index 182a122ea8..ce2d399dcc 100644
--- a/Code/Editor/Util/FileUtil.cpp
+++ b/Code/Editor/Util/FileUtil.cpp
@@ -42,8 +42,6 @@
#include "CheckOutDialog.h"
#include "ISourceControl.h"
#include "Dialogs/Generic/UserOptions.h"
-#include "IAssetItem.h"
-#include "IAssetItemDatabase.h"
#include "Include/IObjectManager.h"
#include "UsedResources.h"
#include "Objects/BaseObject.h"
@@ -223,106 +221,6 @@ void CFileUtil::EditTextureFile(const char* textureFile, [[maybe_unused]] bool b
}
}
-
-//////////////////////////////////////////////////////////////////////////
-bool CFileUtil::CalculateDccFilename(const QString& assetFilename, QString& dccFilename)
-{
- if (ExtractDccFilenameFromAssetDatabase(assetFilename, dccFilename))
- {
- return true;
- }
-
- if (ExtractDccFilenameUsingNamingConventions(assetFilename, dccFilename))
- {
- return true;
- }
-
- GetIEditor()->GetEnv()->pLog->LogError("Failed to find psd file for texture: '%s'", assetFilename.toUtf8().data());
- return false;
-}
-
-//////////////////////////////////////////////////////////////////////////
-bool CFileUtil::ExtractDccFilenameFromAssetDatabase(const QString& assetFilename, QString& dccFilename)
-{
- IAssetItemDatabase* pCurrentDatabaseInterface = nullptr;
- std::vector assetDatabasePlugins;
- IEditorClassFactory* pClassFactory = GetIEditor()->GetClassFactory();
- pClassFactory->GetClassesByCategory("Asset Item DB", assetDatabasePlugins);
-
- for (size_t i = 0; i < assetDatabasePlugins.size(); ++i)
- {
- if (assetDatabasePlugins[i]->QueryInterface(__az_uuidof(IAssetItemDatabase), (void**)&pCurrentDatabaseInterface) == S_OK)
- {
- if (!pCurrentDatabaseInterface)
- {
- continue;
- }
-
- QString assetDatabaseDccFilename;
- IAssetItem* pAssetItem = pCurrentDatabaseInterface->GetAsset(assetFilename.toUtf8().data());
- if (pAssetItem)
- {
- if ((pAssetItem->GetFlags() & IAssetItem::eFlag_Cached))
- {
- QVariant v = pAssetItem->GetAssetFieldValue("dccfilename");
- assetDatabaseDccFilename = v.toString();
- if (!v.isNull())
- {
- dccFilename = assetDatabaseDccFilename;
- dccFilename = Path::GetRelativePath(dccFilename, false);
-
- uint32 attr = CFileUtil::GetAttributes(dccFilename.toUtf8().data());
-
- if (CFileUtil::FileExists(dccFilename))
- {
- return true;
- }
- else if (GetIEditor()->IsSourceControlAvailable() && (attr & SCC_FILE_ATTRIBUTE_MANAGED))
- {
- return CFileUtil::GetLatestFromSourceControl(dccFilename.toUtf8().data());
- }
- }
- }
- }
- }
- }
- return false;
-}
-
-//////////////////////////////////////////////////////////////////////////
-bool CFileUtil::ExtractDccFilenameUsingNamingConventions(const QString& assetFilename, QString& dccFilename)
-{
- //else to try find it by naming conventions
- QString tempStr = assetFilename;
- int foundSplit = -1;
- if ((foundSplit = tempStr.lastIndexOf('.')) > 0)
- {
- QString first = tempStr.mid(0, foundSplit);
- tempStr = first + ".psd";
- }
- if (CFileUtil::FileExists(tempStr))
- {
- dccFilename = tempStr;
- return true;
- }
-
- //else try to find it by replacing post fix _ with .psd
- tempStr = assetFilename;
- foundSplit = -1;
- if ((foundSplit = tempStr.lastIndexOf('_')) > 0)
- {
- QString first = tempStr.mid(0, foundSplit);
- tempStr = first + ".psd";
- }
- if (CFileUtil::FileExists(tempStr))
- {
- dccFilename = tempStr;
- return true;
- }
-
- return false;
-}
-
//////////////////////////////////////////////////////////////////////////
void CFileUtil::FormatFilterString(QString& filter)
{
diff --git a/Code/Editor/Util/FileUtil.h b/Code/Editor/Util/FileUtil.h
index fc0fc942fe..a4ff5009a2 100644
--- a/Code/Editor/Util/FileUtil.h
+++ b/Code/Editor/Util/FileUtil.h
@@ -29,9 +29,6 @@ public:
static void EditTextFile(const char* txtFile, int line = 0, IFileUtil::ETextFileType fileType = IFileUtil::FILE_TYPE_SCRIPT);
static void EditTextureFile(const char* txtureFile, bool bUseGameFolder);
- //! dcc filename calculation and extraction sub-routines
- static bool CalculateDccFilename(const QString& assetFilename, QString& dccFilename);
-
//! Reformat filter string for (MFC) CFileDialog style file filtering
static void FormatFilterString(QString& filter);
@@ -155,9 +152,6 @@ private:
// Keep this variant of this method private! pIsSelected is captured in a lambda, and so requires menu use exec() and never use show()
static void PopulateQMenu(QWidget* caller, QMenu* menu, AZStd::string_view fullGamePath, bool* pIsSelected);
-
- static bool ExtractDccFilenameFromAssetDatabase(const QString& assetFilename, QString& dccFilename);
- static bool ExtractDccFilenameUsingNamingConventions(const QString& assetFilename, QString& dccFilename);
};
class CAutoRestorePrimaryCDRoot
diff --git a/Code/Editor/Util/FileUtil_impl.cpp b/Code/Editor/Util/FileUtil_impl.cpp
index 28090d28d5..31e3532f33 100644
--- a/Code/Editor/Util/FileUtil_impl.cpp
+++ b/Code/Editor/Util/FileUtil_impl.cpp
@@ -30,11 +30,6 @@ void CFileUtil_impl::EditTextureFile(const char* txtureFile, bool bUseGameFolder
CFileUtil::EditTextureFile(txtureFile, bUseGameFolder);
}
-bool CFileUtil_impl::CalculateDccFilename(const QString& assetFilename, QString& dccFilename)
-{
- return CFileUtil::CalculateDccFilename(assetFilename, dccFilename);
-}
-
void CFileUtil_impl::FormatFilterString(QString& filter)
{
CFileUtil::FormatFilterString(filter);
diff --git a/Code/Editor/Util/FileUtil_impl.h b/Code/Editor/Util/FileUtil_impl.h
index aa8d0bf3b5..3c8e138dab 100644
--- a/Code/Editor/Util/FileUtil_impl.h
+++ b/Code/Editor/Util/FileUtil_impl.h
@@ -39,9 +39,6 @@ public:
bool ExtractFile(QString& file, bool bMsgBoxAskForExtraction = true, const char* pDestinationFilename = nullptr) override;
void EditTextureFile(const char* txtureFile, bool bUseGameFolder) override;
- //! dcc filename calculation and extraction sub-routines
- bool CalculateDccFilename(const QString& assetFilename, QString& dccFilename) override;
-
//! Reformat filter string for (MFC) CFileDialog style file filtering
void FormatFilterString(QString& filter) override;
diff --git a/Code/Editor/ViewPane.cpp b/Code/Editor/ViewPane.cpp
index 421db8394e..e3494a4049 100644
--- a/Code/Editor/ViewPane.cpp
+++ b/Code/Editor/ViewPane.cpp
@@ -38,7 +38,6 @@
#include "Viewport.h"
#include "LayoutConfigDialog.h"
#include "TopRendererWnd.h"
-#include "UserMessageDefines.h"
#include "MainWindow.h"
#include "QtViewPaneManager.h"
#include "EditorViewportWidget.h"
diff --git a/Code/Editor/Viewport.cpp b/Code/Editor/Viewport.cpp
index 437dcead3b..dcf86abb02 100644
--- a/Code/Editor/Viewport.cpp
+++ b/Code/Editor/Viewport.cpp
@@ -30,7 +30,6 @@
#include "Objects/ObjectManager.h"
#include "Util/3DConnexionDriver.h"
#include "PluginManager.h"
-#include "Include/IRenderListener.h"
#include "GameEngine.h"
#include "Settings.h"
@@ -227,61 +226,6 @@ void QtViewport::GetDimensions(int* pWidth, int* pHeight) const
}
}
-//////////////////////////////////////////////////////////////////////////
-void QtViewport::RegisterRenderListener(IRenderListener* piListener)
-{
-#ifdef _DEBUG
- size_t nCount(0);
- size_t nTotal(0);
-
- nTotal = m_cRenderListeners.size();
- for (nCount = 0; nCount < nTotal; ++nCount)
- {
- if (m_cRenderListeners[nCount] == piListener)
- {
- assert(!"Registered the same RenderListener multiple times.");
- break;
- }
- }
-#endif //_DEBUG
- m_cRenderListeners.push_back(piListener);
-}
-
-//////////////////////////////////////////////////////////////////////////
-bool QtViewport::UnregisterRenderListener(IRenderListener* piListener)
-{
- size_t nCount(0);
- size_t nTotal(0);
-
- nTotal = m_cRenderListeners.size();
- for (nCount = 0; nCount < nTotal; ++nCount)
- {
- if (m_cRenderListeners[nCount] == piListener)
- {
- m_cRenderListeners.erase(m_cRenderListeners.begin() + nCount);
- return true;
- }
- }
- return false;
-}
-
-//////////////////////////////////////////////////////////////////////////
-bool QtViewport::IsRenderListenerRegistered(IRenderListener* piListener)
-{
- size_t nCount(0);
- size_t nTotal(0);
-
- nTotal = m_cRenderListeners.size();
- for (nCount = 0; nCount < nTotal; ++nCount)
- {
- if (m_cRenderListeners[nCount] == piListener)
- {
- return true;
- }
- }
- return false;
-}
-
//////////////////////////////////////////////////////////////////////////
void QtViewport::AddPostRenderer(IPostRenderer* pPostRenderer)
{
@@ -1164,18 +1108,6 @@ bool QtViewport::GetAdvancedSelectModeFlag()
return m_bAdvancedSelectMode;
}
-//////////////////////////////////////////////////////////////////////////
-void QtViewport::ProcessRenderLisneters(DisplayContext& rstDisplayContext)
-{
- size_t nCount(0);
- size_t nTotal(0);
-
- nTotal = m_cRenderListeners.size();
- for (nCount = 0; nCount < nTotal; ++nCount)
- {
- m_cRenderListeners[nCount]->Render(rstDisplayContext);
- }
-}
//////////////////////////////////////////////////////////////////////////
#if defined(AZ_PLATFORM_WINDOWS)
// Note: Both CreateAnglesYPR and CreateOrientationYPR were copied verbatim from Cry_Camera.h which has been removed.
diff --git a/Code/Editor/Viewport.h b/Code/Editor/Viewport.h
index a71df6a9cd..d992eb4cb0 100644
--- a/Code/Editor/Viewport.h
+++ b/Code/Editor/Viewport.h
@@ -43,10 +43,8 @@ class CLayoutViewPane;
class CViewManager;
class CBaseObjectsCache;
struct HitContext;
-struct IRenderListener;
class CImageEx;
class QMenu;
-struct IDataBaseItem;
/** Type of viewport.
*/
@@ -105,10 +103,6 @@ public:
//! Access to view manager.
CViewManager* GetViewManager() const { return m_viewManager; };
- virtual void RegisterRenderListener(IRenderListener* piListener) = 0;
- virtual bool UnregisterRenderListener(IRenderListener* piListener) = 0;
- virtual bool IsRenderListenerRegistered(IRenderListener* piListener) = 0;
-
virtual void AddPostRenderer(IPostRenderer* pPostRenderer) = 0;
virtual bool RemovePostRenderer(IPostRenderer* pPostRenderer) = 0;
@@ -230,8 +224,6 @@ public:
// Drag and drop support on viewports.
// To be overrided in derived classes.
//////////////////////////////////////////////////////////////////////////
- virtual bool CanDrop([[maybe_unused]] const QPoint& point, [[maybe_unused]] IDataBaseItem* pItem) { return false; };
- virtual void Drop([[maybe_unused]] const QPoint& point, [[maybe_unused]] IDataBaseItem* pItem) {};
virtual void SetGlobalDropCallback(DropCallback dropCallback, void* dropCallbackCustom)
{
m_dropCallback = dropCallback;
@@ -480,10 +472,6 @@ public:
void ResetCursor() override;
void SetSupplementaryCursorStr(const QString& str) override;
- void RegisterRenderListener(IRenderListener* piListener) override;
- bool UnregisterRenderListener(IRenderListener* piListener) override;
- bool IsRenderListenerRegistered(IRenderListener* piListener) override;
-
void AddPostRenderer(IPostRenderer* pPostRenderer) override;
bool RemovePostRenderer(IPostRenderer* pPostRenderer) override;
@@ -511,8 +499,6 @@ protected:
void setRenderOverlayVisible(bool);
bool isRenderOverlayVisible() const;
- void ProcessRenderLisneters(DisplayContext& rstDisplayContext);
-
void mousePressEvent(QMouseEvent* event) override;
void mouseReleaseEvent(QMouseEvent* event) override;
void mouseDoubleClickEvent(QMouseEvent* event) override;
@@ -600,8 +586,6 @@ protected:
// Same construction matrix is shared by all viewports.
Matrix34 m_constructionMatrix[LAST_COORD_SYSTEM];
- std::vector m_cRenderListeners;
-
typedef std::vector<_smart_ptr > PostRenderers;
PostRenderers m_postRenderers;
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
diff --git a/Code/Editor/ViewportTitleDlg.cpp b/Code/Editor/ViewportTitleDlg.cpp
index 888089fd72..90aa044d25 100644
--- a/Code/Editor/ViewportTitleDlg.cpp
+++ b/Code/Editor/ViewportTitleDlg.cpp
@@ -14,6 +14,7 @@
#include "ViewportTitleDlg.h"
// Qt
+#include
#include
#include
@@ -43,6 +44,7 @@
#include
#include
#include
+#include
#include
@@ -51,6 +53,8 @@ AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
#endif //! defined(Q_MOC_RUN)
+static constexpr int MiniumOverflowMenuWidth = 200;
+
// CViewportTitleDlg dialog
namespace
@@ -257,21 +261,56 @@ void CViewportTitleDlg::SetupHelpersButton()
void CViewportTitleDlg::SetupOverflowMenu()
{
- // Setup the overflow menu
- QMenu* overFlowMenu = new QMenu(this);
+ // simple override of QMenu that does not respond to keyboard events
+ // note: this prevents the menu from being prematurely closed
+ class IgnoreKeyboardMenu : public QMenu
+ {
+ public:
+ IgnoreKeyboardMenu(QWidget *parent = nullptr) : QMenu(parent)
+ {
+ }
- m_audioMuteAction = new QAction("Mute Audio", overFlowMenu);
+ private:
+ void keyPressEvent(QKeyEvent* event) override
+ {
+ // regular escape key handling
+ if (event->key() == Qt::Key_Escape)
+ {
+ QMenu::keyPressEvent(event);
+ }
+ }
+ };
+
+ // setup the overflow menu
+ auto* overflowMenu = new IgnoreKeyboardMenu(this);
+ overflowMenu->setMinimumWidth(MiniumOverflowMenuWidth);
+
+ m_audioMuteAction = new QAction("Mute Audio", overflowMenu);
connect(m_audioMuteAction, &QAction::triggered, this, &CViewportTitleDlg::OnBnClickedMuteAudio);
- overFlowMenu->addAction(m_audioMuteAction);
+ overflowMenu->addAction(m_audioMuteAction);
- overFlowMenu->addSeparator();
+ overflowMenu->addSeparator();
- m_enableGridSnappingAction = new QAction("Enable Grid Snapping", overFlowMenu);
- connect(m_enableGridSnappingAction, &QAction::triggered, this, &CViewportTitleDlg::OnGridSnappingToggled);
- m_enableGridSnappingAction->setCheckable(true);
- overFlowMenu->addAction(m_enableGridSnappingAction);
+ m_enableGridSnappingCheckBox = new QCheckBox("Enable Grid Snapping", overflowMenu);
+ AzQtComponents::CheckBox::applyToggleSwitchStyle(m_enableGridSnappingCheckBox);
+ auto gridSnappingWidgetAction = new QWidgetAction(overflowMenu);
+ gridSnappingWidgetAction->setDefaultWidget(m_enableGridSnappingCheckBox);
+ connect(m_enableGridSnappingCheckBox, &QCheckBox::stateChanged, this, &CViewportTitleDlg::OnGridSnappingToggled);
+ overflowMenu->addAction(gridSnappingWidgetAction);
- m_gridSizeActionWidget = new QWidgetAction(overFlowMenu);
+ m_enableGridVisualizationCheckBox = new QCheckBox("Show Grid", overflowMenu);
+ AzQtComponents::CheckBox::applyToggleSwitchStyle(m_enableGridVisualizationCheckBox);
+ auto gridVisualizationWidgetAction = new QWidgetAction(overflowMenu);
+ gridVisualizationWidgetAction->setDefaultWidget(m_enableGridVisualizationCheckBox);
+ connect(
+ m_enableGridVisualizationCheckBox, &QCheckBox::stateChanged,
+ [](const int state)
+ {
+ SandboxEditor::SetShowingGrid(state == Qt::Checked);
+ });
+ overflowMenu->addAction(gridVisualizationWidgetAction);
+
+ m_gridSizeActionWidget = new QWidgetAction(overflowMenu);
m_gridSpinBox = new AzQtComponents::DoubleSpinBox();
m_gridSpinBox->setValue(SandboxEditor::GridSnappingSize());
m_gridSpinBox->setMinimum(1e-2f);
@@ -281,31 +320,33 @@ void CViewportTitleDlg::SetupOverflowMenu()
m_gridSpinBox, QOverload::of(&AzQtComponents::DoubleSpinBox::valueChanged), this, &CViewportTitleDlg::OnGridSpinBoxChanged);
m_gridSizeActionWidget->setDefaultWidget(m_gridSpinBox);
- overFlowMenu->addAction(m_gridSizeActionWidget);
+ overflowMenu->addAction(m_gridSizeActionWidget);
- overFlowMenu->addSeparator();
+ overflowMenu->addSeparator();
- m_enableAngleSnappingAction = new QAction("Enable Angle Snapping", overFlowMenu);
- connect(m_enableAngleSnappingAction, &QAction::triggered, this, &CViewportTitleDlg::OnAngleSnappingToggled);
- m_enableAngleSnappingAction->setCheckable(true);
- overFlowMenu->addAction(m_enableAngleSnappingAction);
+ m_enableAngleSnappingCheckBox = new QCheckBox("Enable Angle Snapping", overflowMenu);
+ AzQtComponents::CheckBox::applyToggleSwitchStyle(m_enableAngleSnappingCheckBox);
+ auto angleSnappingWidgetAction = new QWidgetAction(overflowMenu);
+ angleSnappingWidgetAction->setDefaultWidget(m_enableAngleSnappingCheckBox);
+ connect(m_enableAngleSnappingCheckBox, &QCheckBox::stateChanged, this, &CViewportTitleDlg::OnAngleSnappingToggled);
+ overflowMenu->addAction(angleSnappingWidgetAction);
- m_angleSizeActionWidget = new QWidgetAction(overFlowMenu);
+ m_angleSizeActionWidget = new QWidgetAction(overflowMenu);
m_angleSpinBox = new AzQtComponents::DoubleSpinBox();
m_angleSpinBox->setValue(SandboxEditor::AngleSnappingSize());
m_angleSpinBox->setMinimum(1e-2f);
- m_angleSpinBox->setToolTip(tr("Angle Snapping"));
+ m_angleSpinBox->setToolTip(tr("Angle size"));
QObject::connect(
m_angleSpinBox, QOverload::of(&AzQtComponents::DoubleSpinBox::valueChanged), this,
&CViewportTitleDlg::OnAngleSpinBoxChanged);
m_angleSizeActionWidget->setDefaultWidget(m_angleSpinBox);
- overFlowMenu->addAction(m_angleSizeActionWidget);
+ overflowMenu->addAction(m_angleSizeActionWidget);
- m_ui->m_overflowBtn->setMenu(overFlowMenu);
+ m_ui->m_overflowBtn->setMenu(overflowMenu);
m_ui->m_overflowBtn->setPopupMode(QToolButton::InstantPopup);
- connect(overFlowMenu, &QMenu::aboutToShow, this, &CViewportTitleDlg::UpdateOverFlowMenuState);
+ connect(overflowMenu, &QMenu::aboutToShow, this, &CViewportTitleDlg::UpdateOverFlowMenuState);
UpdateMuteActionText();
}
@@ -982,43 +1023,49 @@ void CViewportTitleDlg::CheckForCameraSpeedUpdate()
}
}
-void CViewportTitleDlg::OnGridSnappingToggled()
+void CViewportTitleDlg::OnGridSnappingToggled(const int state)
{
- m_gridSizeActionWidget->setEnabled(m_enableGridSnappingAction->isChecked());
+ m_gridSizeActionWidget->setEnabled(state == Qt::Checked);
+ m_enableGridVisualizationCheckBox->setEnabled(state == Qt::Checked);
MainWindow::instance()->GetActionManager()->GetAction(AzToolsFramework::SnapToGrid)->trigger();
}
-void CViewportTitleDlg::OnAngleSnappingToggled()
+void CViewportTitleDlg::OnAngleSnappingToggled(const int state)
{
- m_angleSizeActionWidget->setEnabled(m_enableAngleSnappingAction->isChecked());
+ m_angleSizeActionWidget->setEnabled(state == Qt::Checked);
MainWindow::instance()->GetActionManager()->GetAction(AzToolsFramework::SnapAngle)->trigger();
}
-void CViewportTitleDlg::OnGridSpinBoxChanged(double value)
+void CViewportTitleDlg::OnGridSpinBoxChanged(const double value)
{
- SandboxEditor::SetGridSnappingSize(static_cast(value));
+ SandboxEditor::SetGridSnappingSize(aznumeric_cast(value));
}
-void CViewportTitleDlg::OnAngleSpinBoxChanged(double value)
+void CViewportTitleDlg::OnAngleSpinBoxChanged(const double value)
{
- SandboxEditor::SetAngleSnappingSize(static_cast(value));
+ SandboxEditor::SetAngleSnappingSize(aznumeric_cast(value));
}
void CViewportTitleDlg::UpdateOverFlowMenuState()
{
- bool gridSnappingActive = MainWindow::instance()->GetActionManager()->GetAction(AzToolsFramework::SnapToGrid)->isChecked();
+ const bool gridSnappingActive = MainWindow::instance()->GetActionManager()->GetAction(AzToolsFramework::SnapToGrid)->isChecked();
{
- QSignalBlocker signalBlocker(m_enableGridSnappingAction);
- m_enableGridSnappingAction->setChecked(gridSnappingActive);
+ QSignalBlocker signalBlocker(m_enableGridSnappingCheckBox);
+ m_enableGridSnappingCheckBox->setChecked(gridSnappingActive);
}
m_gridSizeActionWidget->setEnabled(gridSnappingActive);
- bool angleSnappingActive = MainWindow::instance()->GetActionManager()->GetAction(AzToolsFramework::SnapAngle)->isChecked();
+ const bool angleSnappingActive = MainWindow::instance()->GetActionManager()->GetAction(AzToolsFramework::SnapAngle)->isChecked();
{
- QSignalBlocker signalBlocker(m_enableAngleSnappingAction);
- m_enableAngleSnappingAction->setChecked(angleSnappingActive);
+ QSignalBlocker signalBlocker(m_enableAngleSnappingCheckBox);
+ m_enableAngleSnappingCheckBox->setChecked(angleSnappingActive);
}
m_angleSizeActionWidget->setEnabled(angleSnappingActive);
+
+ {
+ QSignalBlocker signalBlocker(m_enableGridVisualizationCheckBox);
+ m_enableGridVisualizationCheckBox->setChecked(SandboxEditor::ShowingGrid());
+ }
}
namespace
diff --git a/Code/Editor/ViewportTitleDlg.h b/Code/Editor/ViewportTitleDlg.h
index ba3dba858a..b8da7f20ea 100644
--- a/Code/Editor/ViewportTitleDlg.h
+++ b/Code/Editor/ViewportTitleDlg.h
@@ -140,8 +140,8 @@ protected:
void CheckForCameraSpeedUpdate();
- void OnGridSnappingToggled();
- void OnAngleSnappingToggled();
+ void OnGridSnappingToggled(int state);
+ void OnAngleSnappingToggled(int state);
void OnGridSpinBoxChanged(double value);
void OnAngleSpinBoxChanged(double value);
@@ -160,8 +160,9 @@ protected:
QAction* m_fullInformationAction = nullptr;
QAction* m_compactInformationAction = nullptr;
QAction* m_audioMuteAction = nullptr;
- QAction* m_enableGridSnappingAction = nullptr;
- QAction* m_enableAngleSnappingAction = nullptr;
+ QCheckBox* m_enableGridSnappingCheckBox = nullptr;
+ QCheckBox* m_enableGridVisualizationCheckBox = nullptr;
+ QCheckBox* m_enableAngleSnappingCheckBox = nullptr;
QComboBox* m_cameraSpeed = nullptr;
AzQtComponents::DoubleSpinBox* m_gridSpinBox = nullptr;
AzQtComponents::DoubleSpinBox* m_angleSpinBox = nullptr;
@@ -175,7 +176,7 @@ protected:
namespace AzToolsFramework
{
- //! A component to reflect scriptable commands for the Editor
+ //! A component to reflect scriptable commands for the Editor.
class ViewportTitleDlgPythonFuncsHandler
: public AZ::Component
{
diff --git a/Code/Editor/WipFeatureManager.cpp b/Code/Editor/WipFeatureManager.cpp
deleted file mode 100644
index 4fb9ed1d93..0000000000
--- a/Code/Editor/WipFeatureManager.cpp
+++ /dev/null
@@ -1,454 +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 "EditorDefs.h"
-
-#include "WipFeatureManager.h"
-
-#ifdef USE_WIP_FEATURES_MANAGER
-#include "WipFeaturesDlg.h"
-
-#if defined(AZ_PLATFORM_WINDOWS)
-const char* CWipFeatureManager::kWipFeaturesFilename = "@user@\\Editor\\UI\\WipFeatures.xml";
-#else
-const char* CWipFeatureManager::kWipFeaturesFilename = "@user@/Editor/UI/WipFeatures.xml";
-#endif
-CWipFeatureManager* CWipFeatureManager::s_pInstance = nullptr;
-
-static void WipFeatureVarChange(ICVar* pVar)
-{
- QString strParams = pVar->GetString();
- QStringList params;
-
- SplitString(strParams, params, ' ');
-
- if (strParams == "edit")
- {
- static CWipFeaturesDlg dlg;
-
- dlg.show();
-
- return;
- }
-
- if (params.size() >= 2)
- {
- QString featName = params[0].trimmed();
- QString attr = params[1].trimmed();
-
- if (featName.isEmpty())
- {
- return;
- }
-
- int id = featName.toInt();
-
- // if all features
- if (featName == "*")
- {
- if (attr == "enable")
- {
- CWipFeatureManager::Instance()->EnableAllFeatures(true);
- }
- else
- if (attr == "disable")
- {
- CWipFeatureManager::Instance()->EnableAllFeatures(false);
- }
- else
- if (attr == "hide")
- {
- CWipFeatureManager::Instance()->ShowAllFeatures(false);
- }
- else
- if (attr == "show")
- {
- CWipFeatureManager::Instance()->ShowAllFeatures(true);
- }
- else
- if (attr == "safemode")
- {
- CWipFeatureManager::Instance()->SetAllFeaturesSafeMode(true);
- }
- else
- if (attr == "fullmode")
- {
- CWipFeatureManager::Instance()->SetAllFeaturesSafeMode(false);
- }
- else
- {
- CWipFeatureManager::Instance()->SetAllFeaturesParams(attr.toUtf8().data());
- }
-
- return;
- }
-
- if (attr == "enable")
- {
- CWipFeatureManager::Instance()->EnableFeature(id, true);
- }
- else
- if (attr == "disable")
- {
- CWipFeatureManager::Instance()->EnableFeature(id, false);
- }
- else
- if (attr == "hide")
- {
- CWipFeatureManager::Instance()->ShowFeature(id, false);
- }
- else
- if (attr == "show")
- {
- CWipFeatureManager::Instance()->ShowFeature(id, true);
- }
- else
- if (attr == "safemode")
- {
- CWipFeatureManager::Instance()->SetFeatureSafeMode(id, true);
- }
- else
- if (attr == "fullmode")
- {
- CWipFeatureManager::Instance()->SetFeatureSafeMode(id, false);
- }
- else
- {
- CWipFeatureManager::Instance()->SetFeatureParams(id, attr.toUtf8().data());
- }
- }
-}
-
-CWipFeatureManager::CWipFeatureManager()
-{
- m_bEnabled = true;
-}
-
-CWipFeatureManager::~CWipFeatureManager()
-{
-}
-
-bool CWipFeatureManager::Init(bool bLoadXml)
-{
- if (!gEnv)
- {
- return false;
- }
-
- IConsole* pConsole = gEnv->pConsole;
-
- if (!pConsole)
- {
- return false;
- }
-
- REGISTER_CVAR2_CB("e_wipfeature", (const char**)&CWipFeatureManager::Instance()->m_consoleCmdParams, "", VF_ALWAYSONCHANGE | VF_CHEAT, "wipfeature enable|disable|hide|show|safemode|fullmode", WipFeatureVarChange);
-
- if (bLoadXml)
- {
- CWipFeatureManager::Instance()->Load();
- }
-
- return true;
-}
-
-void CWipFeatureManager::Shutdown()
-{
- CWipFeatureManager::Instance()->Save();
- delete s_pInstance;
- s_pInstance = nullptr;
-}
-
-bool CWipFeatureManager::Load(const char* pFilename, bool bClearExisting)
-{
- if (!GetISystem())
- {
- return false;
- }
-
- XmlNodeRef root = GetISystem()->LoadXmlFromFile(pFilename);
-
- if (!root)
- {
- return false;
- }
-
- if (bClearExisting)
- {
- m_features.clear();
- }
-
- Log("Loading WIP features file: '%s'...", pFilename);
-
- for (size_t i = 0, iCount = root->getChildCount(); i < iCount; ++i)
- {
- SWipFeatureInfo wf;
- XmlNodeRef node = root->getChild(static_cast(i));
- XmlString str;
-
- node->getAttr("id", wf.m_id);
- node->getAttr("displayName", str);
- wf.m_displayName = str;
- node->getAttr("visible", wf.m_bVisible);
- node->getAttr("enabled", wf.m_bEnabled);
- node->getAttr("safeMode", wf.m_bSafeMode);
- node->getAttr("params", str);
- wf.m_params = str;
- wf.m_bLoadedFromXml = true;
-
- TWipFeatures::iterator iter = m_features.find(wf.m_id);
-
- if (iter == m_features.end())
- {
- m_features[wf.m_id] = wf;
- }
- else
- {
- m_features[wf.m_id].m_bVisible = wf.m_bVisible;
- m_features[wf.m_id].m_bEnabled = wf.m_bEnabled;
- m_features[wf.m_id].m_bSafeMode = wf.m_bSafeMode;
- m_features[wf.m_id].m_params = wf.m_params;
- }
- }
-
- Log("Loaded %d WIP features.", m_features.size());
-
- return true;
-}
-
-bool CWipFeatureManager::Save(const char* pFilename)
-{
- if (!gEnv)
- {
- return false;
- }
-
- if (!GetISystem())
- {
- return false;
- }
-
- ISystem* pISystem = GetISystem();
-
- XmlNodeRef root = pISystem->CreateXmlNode("features");
-
- for (TWipFeatures::iterator iter = m_features.begin(), iterEnd = m_features.end(); iter != iterEnd; ++iter)
- {
- SWipFeatureInfo& wf = iter->second;
- XmlNodeRef node = root->createNode("feature");
-
- node->setAttr("id", wf.m_id);
- node->setAttr("displayName", wf.m_displayName.c_str());
- node->setAttr("visible", wf.m_bVisible);
- node->setAttr("enabled", wf.m_bEnabled);
- node->setAttr("safeMode", wf.m_bSafeMode);
- node->setAttr("params", wf.m_params.c_str());
-
- root->addChild(node);
- }
-
- root->saveToFile(pFilename);
-
- return true;
-}
-
-int CWipFeatureManager::RegisterFeature(const char* pDisplayName, bool bVisible, bool bEnabled, bool bSafeMode, const char* pParams, bool bSaveToXml)
-{
- int aMaxId = -1;
-
- for (TWipFeatures::iterator iter = m_features.begin(), iterEnd = m_features.end(); iter != iterEnd; ++iter)
- {
- if (iter->first > aMaxId)
- {
- aMaxId = iter->first;
- }
- }
-
- ++aMaxId;
- SetFeature(aMaxId, pDisplayName, bVisible, bEnabled, bSafeMode, pParams, bSaveToXml);
-
- return aMaxId;
-}
-
-void CWipFeatureManager::SetFeature(int aFeatureId, const char* pDisplayName, bool bVisible, bool bEnabled, bool bSafeMode, const char* pParams, bool bSaveToXml)
-{
- m_features[aFeatureId].m_id = aFeatureId;
- m_features[aFeatureId].m_displayName = pDisplayName;
- m_features[aFeatureId].m_bVisible = bVisible;
- m_features[aFeatureId].m_bEnabled = bEnabled;
- m_features[aFeatureId].m_bSafeMode = bSafeMode;
- m_features[aFeatureId].m_bSaveToXml = bSaveToXml;
- m_features[aFeatureId].m_params = pParams;
-
- if (m_features[aFeatureId].m_pfnUpdateFeature)
- {
- m_features[aFeatureId].m_pfnUpdateFeature(aFeatureId, &bVisible, &bEnabled, &bSafeMode, pParams);
- }
-}
-
-void CWipFeatureManager::SetDefaultFeatureStates(int aFeatureId, const char* pDisplayName, bool bVisible, bool bEnabled, bool bSafeMode, const char* pParams)
-{
- TWipFeatures::iterator iter = m_features.find(aFeatureId);
-
- // set feature if not existing
- if (iter == m_features.end() || (iter != m_features.end() && !iter->second.m_bLoadedFromXml))
- {
- m_features[aFeatureId].m_id = aFeatureId;
- m_features[aFeatureId].m_displayName = pDisplayName;
- m_features[aFeatureId].m_bVisible = bVisible;
- m_features[aFeatureId].m_bEnabled = bEnabled;
- m_features[aFeatureId].m_bSafeMode = bSafeMode;
- m_features[aFeatureId].m_params = pParams;
- }
- else
- if (iter != m_features.end() && iter->second.m_bLoadedFromXml)
- {
- m_features[aFeatureId].m_id = aFeatureId;
- m_features[aFeatureId].m_displayName = pDisplayName;
- }
-
- if (m_features[aFeatureId].m_pfnUpdateFeature)
- {
- m_features[aFeatureId].m_pfnUpdateFeature(aFeatureId, &bVisible, &bEnabled, &bSafeMode, pParams);
- }
-}
-
-bool CWipFeatureManager::IsFeatureVisible(int aFeatureId)
-{
- return m_features[aFeatureId].m_bVisible || !m_bEnabled;
-}
-
-bool CWipFeatureManager::IsFeatureEnabled(int aFeatureId)
-{
- return m_features[aFeatureId].m_bEnabled || !m_bEnabled;
-}
-
-bool CWipFeatureManager::IsFeatureInSafeMode(int aFeatureId)
-{
- if (!m_bEnabled)
- {
- return false;
- }
-
- return m_features[aFeatureId].m_bSafeMode;
-}
-
-const char* CWipFeatureManager::GetFeatureParams(int aFeatureId)
-{
- return m_features[aFeatureId].m_params.c_str();
-}
-
-void CWipFeatureManager::ShowFeature(int aFeatureId, bool bShow)
-{
- m_features[aFeatureId].m_bVisible = bShow;
-
- if (m_features[aFeatureId].m_pfnUpdateFeature)
- {
- m_features[aFeatureId].m_pfnUpdateFeature(aFeatureId, &bShow, nullptr, nullptr, nullptr);
- }
-}
-
-void CWipFeatureManager::EnableFeature(int aFeatureId, bool bEnable)
-{
- m_features[aFeatureId].m_bEnabled = bEnable;
-
- if (m_features[aFeatureId].m_pfnUpdateFeature)
- {
- m_features[aFeatureId].m_pfnUpdateFeature(aFeatureId, nullptr, &bEnable, nullptr, nullptr);
- }
-}
-
-void CWipFeatureManager::SetFeatureSafeMode(int aFeatureId, bool bSafeMode)
-{
- m_features[aFeatureId].m_bSafeMode = bSafeMode;
-
- if (m_features[aFeatureId].m_pfnUpdateFeature)
- {
- m_features[aFeatureId].m_pfnUpdateFeature(aFeatureId, nullptr, nullptr, &bSafeMode, nullptr);
- }
-}
-
-void CWipFeatureManager::SetFeatureParams(int aFeatureId, const char* pParams)
-{
- m_features[aFeatureId].m_params = pParams;
-
- if (m_features[aFeatureId].m_pfnUpdateFeature)
- {
- m_features[aFeatureId].m_pfnUpdateFeature(aFeatureId, nullptr, nullptr, nullptr, pParams);
- }
-}
-
-void CWipFeatureManager::ShowAllFeatures(bool bShow)
-{
- for (TWipFeatures::iterator iter = m_features.begin(), iterEnd = m_features.end(); iter != iterEnd; ++iter)
- {
- iter->second.m_bVisible = bShow;
-
- if (iter->second.m_pfnUpdateFeature)
- {
- iter->second.m_pfnUpdateFeature(iter->first, &bShow, nullptr, nullptr, nullptr);
- }
- }
-}
-
-void CWipFeatureManager::EnableAllFeatures(bool bEnable)
-{
- for (TWipFeatures::iterator iter = m_features.begin(), iterEnd = m_features.end(); iter != iterEnd; ++iter)
- {
- iter->second.m_bEnabled = bEnable;
-
- if (iter->second.m_pfnUpdateFeature)
- {
- iter->second.m_pfnUpdateFeature(iter->first, nullptr, &bEnable, nullptr, nullptr);
- }
- }
-}
-
-void CWipFeatureManager::SetAllFeaturesSafeMode(bool bSafeMode)
-{
- for (TWipFeatures::iterator iter = m_features.begin(), iterEnd = m_features.end(); iter != iterEnd; ++iter)
- {
- iter->second.m_bSafeMode = bSafeMode;
-
- if (iter->second.m_pfnUpdateFeature)
- {
- iter->second.m_pfnUpdateFeature(iter->first, nullptr, nullptr, &bSafeMode, nullptr);
- }
- }
-}
-
-void CWipFeatureManager::SetAllFeaturesParams(const char* pParams)
-{
- for (TWipFeatures::iterator iter = m_features.begin(), iterEnd = m_features.end(); iter != iterEnd; ++iter)
- {
- iter->second.m_params = pParams;
-
- if (iter->second.m_pfnUpdateFeature)
- {
- iter->second.m_pfnUpdateFeature(iter->first, nullptr, nullptr, nullptr, pParams);
- }
- }
-}
-
-void CWipFeatureManager::EnableManager(bool bEnable)
-{
- m_bEnabled = bEnable;
-}
-
-void CWipFeatureManager::SetFeatureUpdateCallback(int aFeatureId, TWipFeatureUpdateCallback pfnUpdate)
-{
- m_features[aFeatureId].m_pfnUpdateFeature = pfnUpdate;
-}
-
-AZStd::map& CWipFeatureManager::GetFeatures()
-{
- return m_features;
-}
-
-#endif
diff --git a/Code/Editor/WipFeatureManager.h b/Code/Editor/WipFeatureManager.h
deleted file mode 100644
index cd20f6d591..0000000000
--- a/Code/Editor/WipFeatureManager.h
+++ /dev/null
@@ -1,162 +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_EDITOR_WIPFEATUREMANAGER_H
-#define CRYINCLUDE_EDITOR_WIPFEATUREMANAGER_H
-#pragma once
-
-#include
-#include
-
-/*
- This class is used to control work in progress features at runtime, so QA can test even if the end user will not see those features
- You can use the console command: e_wipfeature enable|disable|hide|show|safemode|fullmode
- ******************************************************************************************************************************************
- *** GOOD TO KNOW: "e_wipfeature edit" console command will display the WIP dialog and you can control the features from there
- ******************************************************************************************************************************************
-*/
-
-// undef this define to spot all wip feature usages within the editor at compile time
-#define USE_WIP_FEATURES_MANAGER
-
-#ifdef USE_WIP_FEATURES_MANAGER
-
-// use this to register new wip features, usage from inside functions
-// @param id is the numeric unique id of the feature, its good to have all feature ids in an enum in one file
-// @param bVisible is the feature visible by default
-// @param bEnabled is the feature enabled (usually visual enable like non-grayed) by default
-// @param bSafeMode is the feature operating in some sort of safe mode (the safe mode behavior defined by the feature itself)
-// @param pTWipFeatureUpdateCallback callback of type TWipFeatureUpdateCallback for when a feature state (visible,enabled and so on) was modified
-#define REGISTER_WIP_FEATURE(id, bVisible, bEnabled, bSafeMode, pTWipFeatureUpdateCallback) \
- static CWipFeatureManager::CWipFeatureRegisterer s_wipFeatureRegisterer_##id(id, ""#id, bVisible, bEnabled, bSafeMode, pTWipFeatureUpdateCallback);
-
-#define IS_WIP_FEATURE_VISIBLE(id) CWipFeatureManager::Instance()->IsFeatureVisible(id)
-#define IS_WIP_FEATURE_ENABLED(id) CWipFeatureManager::Instance()->IsFeatureEnabled(id)
-#define IS_WIP_FEATURE_SAFEMODE(id) CWipFeatureManager::Instance()->IsFeatureInSafeMode(id)
-
-// The feature manager singleton itself
-class CWipFeatureManager
-{
-public:
-
- static const char* kWipFeaturesFilename;
-
- // Used to register a callback function to update the state of features whitin the editor
- // pbVisible, pbEnabled, pbSafeMode, pParams - if the pointer is nullptr, then that attribute was not changed
- typedef void (* TWipFeatureUpdateCallback)(int aFeatureId, const bool* const pbVisible, const bool* const pbEnabled, const bool* const pbSafeMode, const char* pParams);
-
- // wip feature registerer auto create object, used for static auto feature creation with the REGISTER_WIP_FEATURE macro
- class CWipFeatureRegisterer
- {
- public:
-
- CWipFeatureRegisterer(int id, const char* pDisplayName, bool bVisible, bool bEnabled, bool bSafeMode, TWipFeatureUpdateCallback pTWipFeatureUpdateCallback)
- {
- CWipFeatureManager::Instance()->SetFeatureUpdateCallback(id, pTWipFeatureUpdateCallback);
- CWipFeatureManager::Instance()->SetDefaultFeatureStates(id, pDisplayName, bVisible, bEnabled, bSafeMode);
- }
- };
-
- struct SWipFeatureInfo
- {
- SWipFeatureInfo()
- : m_id(0)
- , m_displayName("")
- , m_bVisible(true)
- , m_bEnabled(true)
- , m_bSafeMode(false)
- , m_pfnUpdateFeature(nullptr)
- , m_bLoadedFromXml(false)
- {}
-
- int m_id;
- AZStd::string m_displayName, m_params;
- bool m_bVisible, m_bEnabled, m_bSafeMode,
- // if true, this feature will be saved into the xml file when Save(...) will be called
- m_bSaveToXml, m_bLoadedFromXml;
- TWipFeatureUpdateCallback m_pfnUpdateFeature;
- };
-
- typedef AZStd::map TWipFeatures;
-
-private:
-
- CWipFeatureManager();
- ~CWipFeatureManager();
-
- static CWipFeatureManager* s_pInstance;
-
-public:
-
- static CWipFeatureManager* Instance()
- {
- if (!s_pInstance)
- {
- s_pInstance = new CWipFeatureManager();
- AZ_Assert(s_pInstance, "Could not construct CWipFeatureManager");
- }
-
- return s_pInstance;
- }
-
- static bool Init(bool bLoadXml = true);
- static void Shutdown();
-
- bool Load(const char* pFilename = kWipFeaturesFilename, bool bClearExisting = true);
- bool Save(const char* pFilename = kWipFeaturesFilename);
-
- // Register a new feature
- // @return a new feature ID
- int RegisterFeature(const char* pDisplayName, bool bVisible, bool bEnabled, bool bSafeMode, const char* pParams = "", bool bSaveToXml = true);
- // Set an existing feature
- void SetFeature(int aFeatureId, const char* pDisplayName, bool bVisible, bool bEnabled, bool bSafeMode, const char* pParams = "", bool bSaveToXml = true);
- // Create a new feature, but it will take into account the existing feature info from the loaded XML file, with persistent settings, if any
- void SetDefaultFeatureStates(int aFeatureId, const char* pDisplayName, bool bVisible, bool bEnabled, bool bSafeMode, const char* pParams = "");
- bool IsFeatureVisible(int aFeatureId);
- bool IsFeatureEnabled(int aFeatureId);
- bool IsFeatureInSafeMode(int aFeatureId);
- const char* GetFeatureParams(int aFeatureId);
-
- void ShowFeature(int aFeatureId, bool bShow = true);
- void EnableFeature(int aFeatureId, bool bEnable = true);
- void SetFeatureSafeMode(int aFeatureId, bool bSafeMode);
- void SetFeatureParams(int aFeatureId, const char* pParams);
-
- void ShowAllFeatures(bool bShow = true);
- void EnableAllFeatures(bool bEnable = true);
- void SetAllFeaturesSafeMode(bool bSafeMode);
- void SetAllFeaturesParams(const char* pParams);
-
- // if manager is disabled, then all queries about feature enable/visible/fullmode states will return true always
- void EnableManager(bool bEnable = true);
-
- void SetFeatureUpdateCallback(int aFeatureId, TWipFeatureUpdateCallback pfnUpdate);
- TWipFeatures& GetFeatures();
-
-private:
-
- static const int kMaxWipCmdSize = 200;
-
- TWipFeatures m_features;
- char m_consoleCmdParams[kMaxWipCmdSize];
- bool m_bEnabled;
-};
-
-#else
-
-//
-// no WIP feature manager in production build
-//
-#define REGISTER_WIP_FEATURE
-#define IS_WIP_FEATURE_VISIBLE(id) true
-#define IS_WIP_FEATURE_ENABLED(id) true
-#define IS_WIP_FEATURE_SAFEMODE(id) true
-
-#endif //USE_WIP_FEATURES_MANAGER
-#endif // CRYINCLUDE_EDITOR_WIPFEATUREMANAGER_H
diff --git a/Code/Editor/WipFeaturesDlg.cpp b/Code/Editor/WipFeaturesDlg.cpp
deleted file mode 100644
index bc4372d7fb..0000000000
--- a/Code/Editor/WipFeaturesDlg.cpp
+++ /dev/null
@@ -1,239 +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 "EditorDefs.h"
-
-#include "WipFeatureManager.h"
-
-#include "WipFeaturesDlg.h"
-
-// Qt
-#include
-
-AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
-#include "ui_WipFeaturesDlg.h"
-AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
-
-#ifdef USE_WIP_FEATURES_MANAGER
-
-// CWipFeaturesDlg dialog
-
-class WipFeaturesModel
- : public QAbstractTableModel
-{
-public:
- WipFeaturesModel(QObject* parent = nullptr)
- : QAbstractTableModel(parent)
- {
- }
-
- int rowCount(const QModelIndex& parent = QModelIndex()) const override
- {
- return parent.isValid() ? 0 : static_cast(CWipFeatureManager::Instance()->GetFeatures().size());
- }
-
- int columnCount(const QModelIndex& parent = QModelIndex()) const override
- {
- return parent.isValid() ? 0 : 5;
- }
-
- QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override
- {
- if (orientation != Qt::Horizontal || section >= columnCount())
- {
- return QVariant();
- }
-
-
- switch (role)
- {
- case Qt::TextAlignmentRole:
- return section == 0 ? Qt::AlignLeft : Qt::AlignCenter;
- case Qt::DisplayRole:
- switch (section)
- {
- case 0:
- return tr("Name");
- case 1:
- return tr("Id");
- case 2:
- return tr("Visible");
- case 3:
- return tr("Enabled");
- case 4:
- return tr("SafeMode");
- default:
- return QVariant();
- }
- default:
- return QVariant();
- }
- }
-
- bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole) override
- {
- if (!index.isValid() || index.column() >= columnCount(index.parent()) || index.row() >= rowCount(index.parent()))
- {
- return false;
- }
-
- if (role != Qt::EditRole || !value.canConvert())
- {
- return false;
- }
-
- auto it = CWipFeatureManager::Instance()->GetFeatures().begin();
- std::advance(it, index.row());
-
- auto id = it->first;
-
- switch (index.column())
- {
- case 2:
- CWipFeatureManager::Instance()->ShowFeature(id, value.toBool());
- break;
- case 3:
- CWipFeatureManager::Instance()->EnableFeature(id, value.toBool());
- break;
- case 4:
- CWipFeatureManager::Instance()->SetFeatureSafeMode(id, value.toBool());
- break;
- default:
- return false;
- }
-
- emit dataChanged(index, index);
- return true;
- }
-
- QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override
- {
- if (!index.isValid() || index.column() >= columnCount(index.parent()) || index.row() >= rowCount(index.parent()))
- {
- return QVariant();
- }
-
- if (role == Qt::TextAlignmentRole)
- {
- return headerData(index.column(), Qt::Horizontal, role);
- }
-
- if (role != Qt::DisplayRole)
- {
- return QVariant();
- }
-
- auto it = CWipFeatureManager::Instance()->GetFeatures().begin();
- std::advance(it, index.row());
-
- auto feature = it->second;
-
- switch (index.column())
- {
- case 0:
- return QString(feature.m_displayName.c_str());
- case 1:
- return feature.m_id;
- case 2:
- return feature.m_bVisible ? tr("X") : QString();
- case 3:
- return feature.m_bEnabled ? tr("X") : QString();
- case 4:
- return feature.m_bSafeMode ? tr("X") : QString();
- default:
- return QVariant();
- }
- }
-};
-
-CWipFeaturesDlg::CWipFeaturesDlg(QWidget* pParent /*=nullptr*/)
- : QDialog(pParent)
- , m_ui(new Ui::WipFeaturesDlg)
-{
- m_ui->setupUi(this);
- setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
- setFixedSize(size());
-
- OnInitDialog();
-
- connect(m_ui->buttonShow, &QPushButton::clicked, this, &CWipFeaturesDlg::OnBnClickedButtonShow);
- connect(m_ui->buttonHide, &QPushButton::clicked, this, &CWipFeaturesDlg::OnBnClickedButtonHide);
- connect(m_ui->buttonEnable, &QPushButton::clicked, this, &CWipFeaturesDlg::OnBnClickedButtonEnable);
- connect(m_ui->buttonDisable, &QPushButton::clicked, this, &CWipFeaturesDlg::OnBnClickedButtonDisable);
- connect(m_ui->buttonSafeMode, &QPushButton::clicked, this, &CWipFeaturesDlg::OnBnClickedButtonSafemode);
- connect(m_ui->buttonNormalMode, &QPushButton::clicked, this, &CWipFeaturesDlg::OnBnClickedButtonNormalmode);
-}
-
-CWipFeaturesDlg::~CWipFeaturesDlg()
-{
-}
-
-// CWipFeaturesDlg message handlers
-
-void CWipFeaturesDlg::OnInitDialog()
-{
- m_ui->m_lstFeatures->setModel(new WipFeaturesModel(this));
- m_ui->m_lstFeatures->horizontalHeader()->resizeSection(0, 300);
- m_ui->m_lstFeatures->horizontalHeader()->resizeSection(1, 70);
- m_ui->m_lstFeatures->horizontalHeader()->resizeSection(2, 70);
- m_ui->m_lstFeatures->horizontalHeader()->resizeSection(3, 70);
- m_ui->m_lstFeatures->horizontalHeader()->resizeSection(4, 70);
-}
-
-void CWipFeaturesDlg::OnBnClickedButtonShow()
-{
- for (auto index : m_ui->m_lstFeatures->selectionModel()->selectedRows())
- {
- m_ui->m_lstFeatures->model()->setData(index.sibling(index.row(), 2), true);
- }
-}
-
-void CWipFeaturesDlg::OnBnClickedButtonHide()
-{
- for (auto index : m_ui->m_lstFeatures->selectionModel()->selectedRows())
- {
- m_ui->m_lstFeatures->model()->setData(index.sibling(index.row(), 2), false);
- }
-}
-
-void CWipFeaturesDlg::OnBnClickedButtonEnable()
-{
- for (auto index : m_ui->m_lstFeatures->selectionModel()->selectedRows())
- {
- m_ui->m_lstFeatures->model()->setData(index.sibling(index.row(), 3), true);
- }
-}
-
-void CWipFeaturesDlg::OnBnClickedButtonDisable()
-{
- for (auto index : m_ui->m_lstFeatures->selectionModel()->selectedRows())
- {
- m_ui->m_lstFeatures->model()->setData(index.sibling(index.row(), 3), false);
- }
-}
-
-void CWipFeaturesDlg::OnBnClickedButtonSafemode()
-{
- for (auto index : m_ui->m_lstFeatures->selectionModel()->selectedRows())
- {
- m_ui->m_lstFeatures->model()->setData(index.sibling(index.row(), 4), true);
- }
-}
-
-void CWipFeaturesDlg::OnBnClickedButtonNormalmode()
-{
- for (auto index : m_ui->m_lstFeatures->selectionModel()->selectedRows())
- {
- m_ui->m_lstFeatures->model()->setData(index.sibling(index.row(), 4), false);
- }
-}
-
-#include
-
-#endif // USE_WIP_FEATURES_MANAGER
diff --git a/Code/Editor/WipFeaturesDlg.h b/Code/Editor/WipFeaturesDlg.h
deleted file mode 100644
index 28f4f43958..0000000000
--- a/Code/Editor/WipFeaturesDlg.h
+++ /dev/null
@@ -1,58 +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_EDITOR_WIPFEATURESDLG_H
-#define CRYINCLUDE_EDITOR_WIPFEATURESDLG_H
-
-#if !defined(Q_MOC_RUN)
-#include
-#endif
-
-#ifdef USE_WIP_FEATURES_MANAGER
-
-// CWipFeaturesDlg dialog
-
-namespace Ui
-{
- class WipFeaturesDlg;
-}
-
-class CWipFeaturesDlg
- : public QDialog
-{
- Q_OBJECT
-public:
- CWipFeaturesDlg(QWidget* pParent = nullptr); // standard constructor
- virtual ~CWipFeaturesDlg();
-
-private:
- void OnInitDialog();
- void OnBnClickedButtonShow();
- void OnBnClickedButtonHide();
- void OnBnClickedButtonEnable();
- void OnBnClickedButtonDisable();
- void OnBnClickedButtonSafemode();
- void OnBnClickedButtonNormalmode();
-
-private:
- QScopedPointer m_ui;
-};
-
-#else
-
-class CWipFeaturesDlg
- : public QDialog
-{
- Q_OBJECT
-};
-
-#endif // USE_WIP_FEATURES_MANAGER
-
-#endif // CRYINCLUDE_EDITOR_WIPFEATURESDLG_H
diff --git a/Code/Editor/WipFeaturesDlg.qrc b/Code/Editor/WipFeaturesDlg.qrc
deleted file mode 100644
index 1205b1063e..0000000000
--- a/Code/Editor/WipFeaturesDlg.qrc
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
- res/work_in_progress_icon.png
-
-
diff --git a/Code/Editor/WipFeaturesDlg.ui b/Code/Editor/WipFeaturesDlg.ui
deleted file mode 100644
index b4bf95e2c5..0000000000
--- a/Code/Editor/WipFeaturesDlg.ui
+++ /dev/null
@@ -1,184 +0,0 @@
-
-
- WipFeaturesDlg
-
-
-
- 0
- 0
- 620
- 342
-
-
-
- Work in Progress Features
-
-
- -
-
-
- Work in progress features:
-
-
-
-
-
-
- Qt::ScrollBarAlwaysOff
-
-
- QAbstractItemView::SelectRows
-
-
- true
-
-
- false
-
-
- 19
-
-
-
- -
-
-
- Show
-
-
-
- -
-
-
- Hide
-
-
-
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Ignored
-
-
-
- 74
- 20
-
-
-
-
- -
-
-
- Enable
-
-
-
- -
-
-
- Disable
-
-
-
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Ignored
-
-
-
- 74
- 20
-
-
-
-
- -
-
-
- Normal Mode
-
-
-
- -
-
-
- Safe Mode
-
-
-
-
-
-
- -
-
-
-
- 64
- 64
-
-
-
-
- 64
- 64
-
-
-
- :/res/work_in_progress_icon.png
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- NOTE:<br/>The states of the WIP features will be saved in the Editor/UI/WipFeatures.xml file when the editor exits successfuly
-
-
- true
-
-
-
- -
-
-
- QDialogButtonBox::Close
-
-
-
-
-
-
-
-
-
-
- buttonBox
- rejected()
- WipFeaturesDlg
- close()
-
-
- 647
- 339
-
-
- 674
- 314
-
-
-
-
-
diff --git a/Code/Editor/arhitype_tree_00.png b/Code/Editor/arhitype_tree_00.png
deleted file mode 100644
index 274b2b0667..0000000000
--- a/Code/Editor/arhitype_tree_00.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b9cc3783ba8ccc940e89039455f2a8617a67520400ce74c9ce4c3d16d942ead8
-size 208
diff --git a/Code/Editor/arhitype_tree_01.png b/Code/Editor/arhitype_tree_01.png
deleted file mode 100644
index 274b2b0667..0000000000
--- a/Code/Editor/arhitype_tree_01.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b9cc3783ba8ccc940e89039455f2a8617a67520400ce74c9ce4c3d16d942ead8
-size 208
diff --git a/Code/Editor/arhitype_tree_02.png b/Code/Editor/arhitype_tree_02.png
deleted file mode 100644
index f29a502de1..0000000000
--- a/Code/Editor/arhitype_tree_02.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1f8b26d30e8c00514648cf72bb80fe8be3f665eb7473b6565b31a4b078816bfd
-size 208
diff --git a/Code/Editor/arhitype_tree_03.png b/Code/Editor/arhitype_tree_03.png
deleted file mode 100644
index f29a502de1..0000000000
--- a/Code/Editor/arhitype_tree_03.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1f8b26d30e8c00514648cf72bb80fe8be3f665eb7473b6565b31a4b078816bfd
-size 208
diff --git a/Code/Editor/bmp00005_00.png b/Code/Editor/bmp00005_00.png
deleted file mode 100644
index 345abfaf01..0000000000
--- a/Code/Editor/bmp00005_00.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5e4a0284f8d3b2625c3f27d6505b19a0babb7af0825f08b4e08f40e647d10873
-size 388
diff --git a/Code/Editor/bmp00005_01.png b/Code/Editor/bmp00005_01.png
deleted file mode 100644
index abeba83277..0000000000
--- a/Code/Editor/bmp00005_01.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:43f64ba8198c197f2dd91f00947df808fa41274411934d3d1f81e3eb44f78e7a
-size 532
diff --git a/Code/Editor/bmp00005_02.png b/Code/Editor/bmp00005_02.png
deleted file mode 100644
index 45439597e2..0000000000
--- a/Code/Editor/bmp00005_02.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:556929870bb8c26fe8ebf4e94536e74c2eb1084e6f566007ec3a5f2e6303fa53
-size 392
diff --git a/Code/Editor/bmp00005_03.png b/Code/Editor/bmp00005_03.png
deleted file mode 100644
index b67ec062ff..0000000000
--- a/Code/Editor/bmp00005_03.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:239843fcd5a08e260106ee6eb3f69d3606321267e94df1e64ab25573d14980e1
-size 486
diff --git a/Code/Editor/bmp00005_04.png b/Code/Editor/bmp00005_04.png
deleted file mode 100644
index 565730be66..0000000000
--- a/Code/Editor/bmp00005_04.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:98baf372c91fe63c423237a2a3ae5a043a4da41095698035ce86fd13f2051e44
-size 514
diff --git a/Code/Editor/bmp00005_05.png b/Code/Editor/bmp00005_05.png
deleted file mode 100644
index 232c374515..0000000000
--- a/Code/Editor/bmp00005_05.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a570ae986b5f0b7e573094a7e75a8cfcc42f88b4766c47785bab26a9e8b1c2bb
-size 239
diff --git a/Code/Editor/bmp00005_06.png b/Code/Editor/bmp00005_06.png
deleted file mode 100644
index 3de6336a89..0000000000
--- a/Code/Editor/bmp00005_06.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4c527f2b8c883c73aebba0b5f0df6215f73b7259db61b13fa5ff7aa7b96a7b9b
-size 779
diff --git a/Code/Editor/bmp00005_07.png b/Code/Editor/bmp00005_07.png
deleted file mode 100644
index a813c0ad0b..0000000000
--- a/Code/Editor/bmp00005_07.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8f7f84cb48b2f9031b3a23abeddaed95d54601de33c58057d6677073b3e083aa
-size 501
diff --git a/Code/Editor/bmp00005_08.png b/Code/Editor/bmp00005_08.png
deleted file mode 100644
index b9f98ffe1c..0000000000
--- a/Code/Editor/bmp00005_08.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:804491b4251adfe017f8c52e00324dd74f00ebec445eedd947dea9356865cd56
-size 682
diff --git a/Code/Editor/bmp00005_09.png b/Code/Editor/bmp00005_09.png
deleted file mode 100644
index 8650cc6a9e..0000000000
--- a/Code/Editor/bmp00005_09.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ecf6333b6b402e1834f3047b13e58e4f80e17a8eed3750017219b5694d1b6f67
-size 625
diff --git a/Code/Editor/bmp00006_00.png b/Code/Editor/bmp00006_00.png
deleted file mode 100644
index c48f7ede09..0000000000
--- a/Code/Editor/bmp00006_00.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:70724fdada9cecd5a8d7ee5211ee713accc8f9642415e5dd93b6d621ed7273cf
-size 139
diff --git a/Code/Editor/bmp00006_01.png b/Code/Editor/bmp00006_01.png
deleted file mode 100644
index 7fb55bc8a5..0000000000
--- a/Code/Editor/bmp00006_01.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:3d12de5789fb345c5ffe4b76246ec0ba4d7972fb14d15db3f36886f3beaed3ff
-size 166
diff --git a/Code/Editor/bmp00006_02.png b/Code/Editor/bmp00006_02.png
deleted file mode 100644
index 7b1ab690a3..0000000000
--- a/Code/Editor/bmp00006_02.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:fffdbe9b4e1630f4158c4a00985e713ddb6fae50bc71e8c100255bab04054c0a
-size 235
diff --git a/Code/Editor/bmp00006_03.png b/Code/Editor/bmp00006_03.png
deleted file mode 100644
index 4829767efd..0000000000
--- a/Code/Editor/bmp00006_03.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d5e4092107dbc45863abe1cbecb30c48135e17155b5a85afa07a4a90b3eb1221
-size 274
diff --git a/Code/Editor/bmp00006_04.png b/Code/Editor/bmp00006_04.png
deleted file mode 100644
index dc809b8a65..0000000000
--- a/Code/Editor/bmp00006_04.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:bc454d6cf883b78ae4cc32bfe4a81a6d5ee64e5e1bade9f2069e7e1b405ad9b1
-size 373
diff --git a/Code/Editor/bmp00006_05.png b/Code/Editor/bmp00006_05.png
deleted file mode 100644
index 2f3c67fff6..0000000000
--- a/Code/Editor/bmp00006_05.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:359236f395259b21b75f8f3fa250dfeea9ef82b9d541c7344954cf93db5c9d47
-size 616
diff --git a/Code/Editor/bmp00006_06.png b/Code/Editor/bmp00006_06.png
deleted file mode 100644
index 86c43264ea..0000000000
--- a/Code/Editor/bmp00006_06.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:bc8e5dd88bb78f4f63ba8618e2bf0c1fd74d2dbdcf48261cfa57883c476619fe
-size 1101
diff --git a/Code/Editor/bmp00006_07.png b/Code/Editor/bmp00006_07.png
deleted file mode 100644
index 067b20a5fb..0000000000
--- a/Code/Editor/bmp00006_07.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1fbfb749ecfec92f461979d15642dfb940cc7895db3d27c47d040b0a7e2a1ae4
-size 1288
diff --git a/Code/Editor/editor_core_files.cmake b/Code/Editor/editor_core_files.cmake
index 53dd8d79a5..1f0a5a3618 100644
--- a/Code/Editor/editor_core_files.cmake
+++ b/Code/Editor/editor_core_files.cmake
@@ -7,17 +7,12 @@
#
set(FILES
- BaseLibrary.h
- BaseLibraryItem.h
UsedResources.h
UIEnumsDatabase.h
Include/EditorCoreAPI.cpp
Include/IErrorReport.h
- Include/IBaseLibraryManager.h
Include/IFileUtil.h
Include/EditorCoreAPI.h
- Include/IEditorMaterial.h
- Include/IEditorMaterialManager.h
Include/IImageUtil.h
Controls/ReflectedPropertyControl/ReflectedPropertyCtrl.qrc
Controls/ReflectedPropertyControl/ReflectedPropertyCtrl.cpp
@@ -35,8 +30,6 @@ set(FILES
Controls/QBitmapPreviewDialogImp.h
Controls/QToolTipWidget.h
Controls/QToolTipWidget.cpp
- BaseLibraryItem.cpp
- BaseLibrary.cpp
UsedResources.cpp
UIEnumsDatabase.cpp
LyViewPaneNames.h
diff --git a/Code/Editor/editor_lib_files.cmake b/Code/Editor/editor_lib_files.cmake
index a018333925..5d45bbd853 100644
--- a/Code/Editor/editor_lib_files.cmake
+++ b/Code/Editor/editor_lib_files.cmake
@@ -269,14 +269,7 @@ set(FILES
LevelTreeModel.h
Include/Command.h
Include/HitContext.h
- Include/IAnimationCompressionManager.h
- Include/IAssetItem.h
- Include/IAssetItemDatabase.h
Include/ICommandManager.h
- Include/IConsoleConnectivity.h
- Include/IDataBaseItem.h
- Include/IDataBaseLibrary.h
- Include/IDataBaseManager.h
Include/IDisplayViewport.h
Include/IEditorClassFactory.h
Include/IEventLoopHook.h
@@ -288,9 +281,7 @@ set(FILES
Include/IObjectManager.h
Include/IPlugin.h
Include/IPreferencesPage.h
- Include/IRenderListener.h
Include/ISourceControl.h
- Include/ITextureDatabaseUpdater.h
Include/ITransformManipulator.h
Include/IViewPane.h
Include/ObjectEvent.h
@@ -356,7 +347,6 @@ set(FILES
MainStatusBar.cpp
MainStatusBar.h
MainStatusBarItems.h
- CrtDebug.cpp
CryEdit.rc
CryEditDoc.cpp
CryEditDoc.h
@@ -367,14 +357,10 @@ set(FILES
LogFile.cpp
LogFile.h
Resource.h
- UserMessageDefines.h
ActionManager.cpp
ActionManager.h
ShortcutDispatcher.cpp
ShortcutDispatcher.h
- BaseLibraryManager.cpp
- BaseLibraryItem.h
- BaseLibraryManager.h
CheckOutDialog.cpp
CheckOutDialog.h
CheckOutDialog.ui
@@ -409,9 +395,6 @@ set(FILES
ResizeResolutionDialog.cpp
ResizeResolutionDialog.h
ResizeResolutionDialog.ui
- SelectEAXPresetDlg.cpp
- SelectEAXPresetDlg.h
- SelectEAXPresetDlg.ui
SelectLightAnimationDialog.cpp
SelectLightAnimationDialog.h
SelectSequenceDialog.cpp
@@ -433,9 +416,6 @@ set(FILES
IconListDialog.ui
UndoDropDown.cpp
UndoDropDown.h
- DimensionsDialog.cpp
- DimensionsDialog.h
- DimensionsDialog.ui
NewLevelDialog.cpp
NewLevelDialog.h
NewLevelDialog.ui
@@ -457,27 +437,18 @@ set(FILES
GameResourcesExporter.cpp
GameExporter.h
GameResourcesExporter.h
- Geometry/TriMesh.cpp
- Geometry/TriMesh.h
AboutDialog.h
AboutDialog.ui
DocMultiArchive.h
- EditMode/DeepSelection.h
FBXExporterDialog.h
FileTypeUtils.h
GridUtils.h
IObservable.h
IPostRenderer.h
- LightmapCompiler/SimpleTriangleRasterizer.h
ToolBox.h
TrackViewNewSequenceDialog.h
UndoConfigSpec.h
- UndoViewPosition.h
- UndoViewRotation.h
Util/GeometryUtil.h
- WipFeaturesDlg.h
- WipFeaturesDlg.ui
- WipFeaturesDlg.qrc
LevelIndependentFileMan.cpp
LevelIndependentFileMan.h
LogFileImpl.cpp
@@ -559,20 +530,13 @@ set(FILES
AboutDialog.cpp
ErrorReportTableModel.h
ErrorReportTableModel.cpp
- EditMode/DeepSelection.cpp
FBXExporterDialog.cpp
FBXExporterDialog.ui
FileTypeUtils.cpp
- LightmapCompiler/SimpleTriangleRasterizer.cpp
ToolBox.cpp
TrackViewNewSequenceDialog.cpp
TrackViewNewSequenceDialog.ui
UndoConfigSpec.cpp
- UndoViewPosition.cpp
- UndoViewRotation.cpp
- WipFeatureManager.cpp
- WipFeatureManager.h
- WipFeaturesDlg.cpp
Dialogs/ErrorsDlg.cpp
Dialogs/ErrorsDlg.h
Dialogs/ErrorsDlg.ui
@@ -589,8 +553,6 @@ set(FILES
ProcessInfo.cpp
ProcessInfo.h
Report.h
- SurfaceTypeValidator.cpp
- SurfaceTypeValidator.h
TrackView/AtomOutputFrameCapture.cpp
TrackView/AtomOutputFrameCapture.h
TrackView/TrackViewDialog.qrc
diff --git a/Code/Editor/particles_tree_00.png b/Code/Editor/particles_tree_00.png
deleted file mode 100644
index 274b2b0667..0000000000
--- a/Code/Editor/particles_tree_00.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b9cc3783ba8ccc940e89039455f2a8617a67520400ce74c9ce4c3d16d942ead8
-size 208
diff --git a/Code/Editor/particles_tree_01.png b/Code/Editor/particles_tree_01.png
deleted file mode 100644
index 274b2b0667..0000000000
--- a/Code/Editor/particles_tree_01.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b9cc3783ba8ccc940e89039455f2a8617a67520400ce74c9ce4c3d16d942ead8
-size 208
diff --git a/Code/Editor/particles_tree_02.png b/Code/Editor/particles_tree_02.png
deleted file mode 100644
index 96f4bec585..0000000000
--- a/Code/Editor/particles_tree_02.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:19b1ee36ba28ede080ef34bd13d37a8b579ad8e106089cd1b800b15aef1b58df
-size 252
diff --git a/Code/Editor/particles_tree_03.png b/Code/Editor/particles_tree_03.png
deleted file mode 100644
index 3ead10b3b4..0000000000
--- a/Code/Editor/particles_tree_03.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9e6ef5e26d5d1566f51824c3bfa0ed3d2653cb49e38111aaf0572590b2fd15be
-size 261
diff --git a/Code/Editor/particles_tree_04.png b/Code/Editor/particles_tree_04.png
deleted file mode 100644
index 0920a2667d..0000000000
--- a/Code/Editor/particles_tree_04.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:acbeaa97474bd203ac35bf87fdea49d8b3d60f18db62d64dd47c3b1b50e54816
-size 303
diff --git a/Code/Editor/particles_tree_05.png b/Code/Editor/particles_tree_05.png
deleted file mode 100644
index 0a4ce61ba0..0000000000
--- a/Code/Editor/particles_tree_05.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d92fc6ec4afc582ff5d019f5b26c48e3dbe6c5f3c753271d7918cd5ca95b8b32
-size 254
diff --git a/Code/Editor/particles_tree_06.png b/Code/Editor/particles_tree_06.png
deleted file mode 100644
index e0ab042cb3..0000000000
--- a/Code/Editor/particles_tree_06.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:02066aed1d53c3ffc53c0f844a88ba8870b6c2c9c846c47ef6443c21ce4b7d0c
-size 224
diff --git a/Code/Editor/particles_tree_07.png b/Code/Editor/particles_tree_07.png
deleted file mode 100644
index 2ab767a7e9..0000000000
--- a/Code/Editor/particles_tree_07.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:67668cc830b553605d2f9ccad57f2fcd422da6a7515cfc4e9af0f43aa8591543
-size 213
diff --git a/Code/Editor/water.png b/Code/Editor/water.png
deleted file mode 100644
index 342dee81e3..0000000000
--- a/Code/Editor/water.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4abde33fa9c29e927e403e275979536e7defbb6476eb375e85f847396645953f
-size 41419
diff --git a/Code/Framework/AzCore/AzCore/Component/ComponentApplication.cpp b/Code/Framework/AzCore/AzCore/Component/ComponentApplication.cpp
index a760061215..b0194febff 100644
--- a/Code/Framework/AzCore/AzCore/Component/ComponentApplication.cpp
+++ b/Code/Framework/AzCore/AzCore/Component/ComponentApplication.cpp
@@ -558,10 +558,6 @@ namespace AZ
m_entityActivatedEvent.DisconnectAllHandlers();
m_entityDeactivatedEvent.DisconnectAllHandlers();
-#if !defined(_RELEASE)
- m_budgetTracker.Reset();
-#endif
-
DestroyAllocator();
}
@@ -751,6 +747,12 @@ namespace AZ
static_cast(m_settingsRegistry.get())->ClearNotifiers();
static_cast(m_settingsRegistry.get())->ClearMergeEvents();
+#if !defined(_RELEASE)
+ // the budget tracker must be cleaned up prior to module unloading to ensure
+ // budgets initialized cross boundary are freed properly
+ m_budgetTracker.Reset();
+#endif
+
// Uninit and unload any dynamic modules.
m_moduleManager->UnloadModules();
ComponentApplicationLifecycle::SignalEvent(*m_settingsRegistry, "GemsUnloaded", R"({})");
diff --git a/Code/Framework/AzCore/AzCore/DOM/Backends/JSON/JsonSerializationUtils.cpp b/Code/Framework/AzCore/AzCore/DOM/Backends/JSON/JsonSerializationUtils.cpp
index 17f9bfea54..3baf78b63d 100644
--- a/Code/Framework/AzCore/AzCore/DOM/Backends/JSON/JsonSerializationUtils.cpp
+++ b/Code/Framework/AzCore/AzCore/DOM/Backends/JSON/JsonSerializationUtils.cpp
@@ -361,7 +361,7 @@ namespace AZ::Dom::Json
bool RapidJsonReadHandler::String(const char* str, rapidjson::SizeType length, bool copy)
{
- const Lifetime lifetime = copy ? m_stringLifetime : Lifetime::Temporary;
+ const Lifetime lifetime = !copy ? m_stringLifetime : Lifetime::Temporary;
return CheckResult(m_visitor->String(AZStd::string_view(str, length), lifetime));
}
@@ -373,11 +373,7 @@ namespace AZ::Dom::Json
bool RapidJsonReadHandler::Key(const char* str, rapidjson::SizeType length, [[maybe_unused]] bool copy)
{
AZStd::string_view key = AZStd::string_view(str, length);
- if (!m_visitor->SupportsRawKeys())
- {
- m_visitor->Key(AZ::Name(key));
- }
- const Lifetime lifetime = copy ? m_stringLifetime : Lifetime::Temporary;
+ const Lifetime lifetime = !copy ? m_stringLifetime : Lifetime::Temporary;
return CheckResult(m_visitor->RawKey(key, lifetime));
}
diff --git a/Code/Framework/AzCore/AzCore/DOM/DomUtils.cpp b/Code/Framework/AzCore/AzCore/DOM/DomUtils.cpp
index 9751b9cecc..bc5c2b28cf 100644
--- a/Code/Framework/AzCore/AzCore/DOM/DomUtils.cpp
+++ b/Code/Framework/AzCore/AzCore/DOM/DomUtils.cpp
@@ -21,4 +21,164 @@ namespace AZ::Dom::Utils
{
return backend.ReadFromBufferInPlace(string.data(), string.size(), visitor);
}
-}
+
+ AZ::Outcome WriteToValue(const Backend::WriteCallback& writeCallback)
+ {
+ Value value;
+ AZStd::unique_ptr writer = value.GetWriteHandler();
+ Visitor::Result result = writeCallback(*writer);
+ if (!result.IsSuccess())
+ {
+ return AZ::Failure(result.GetError().FormatVisitorErrorMessage());
+ }
+ return AZ::Success(AZStd::move(value));
+ }
+
+ bool DeepCompareIsEqual(const Value& lhs, const Value& rhs)
+ {
+ const Value::ValueType& lhsValue = lhs.GetInternalValue();
+ const Value::ValueType& rhsValue = rhs.GetInternalValue();
+
+ if (lhs.IsString() && rhs.IsString())
+ {
+ // If we both hold the same ref counted string we don't need to do a full comparison
+ if (AZStd::holds_alternative(lhsValue) && lhsValue == rhsValue)
+ {
+ return true;
+ }
+ return lhs.GetString() == rhs.GetString();
+ }
+
+ return AZStd::visit(
+ [&](auto&& ourValue) -> bool
+ {
+ using Alternative = AZStd::decay_t;
+
+ if constexpr (AZStd::is_same_v)
+ {
+ if (!rhs.IsObject())
+ {
+ return false;
+ }
+ auto&& theirValue = AZStd::get>(rhsValue);
+ if (ourValue == theirValue)
+ {
+ return true;
+ }
+
+ const Object::ContainerType& ourValues = ourValue->GetValues();
+ const Object::ContainerType& theirValues = theirValue->GetValues();
+
+ if (ourValues.size() != theirValues.size())
+ {
+ return false;
+ }
+
+ for (size_t i = 0; i < ourValues.size(); ++i)
+ {
+ const Object::EntryType& lhsChild = ourValues[i];
+ auto rhsIt = rhs.FindMember(lhsChild.first);
+ if (rhsIt == rhs.MemberEnd() || !DeepCompareIsEqual(lhsChild.second, rhsIt->second))
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+ else if constexpr (AZStd::is_same_v)
+ {
+ if (!rhs.IsArray())
+ {
+ return false;
+ }
+ auto&& theirValue = AZStd::get>(rhsValue);
+ if (ourValue == theirValue)
+ {
+ return true;
+ }
+
+ const Array::ContainerType& ourValues = ourValue->GetValues();
+ const Array::ContainerType& theirValues = theirValue->GetValues();
+
+ if (ourValues.size() != theirValues.size())
+ {
+ return false;
+ }
+
+ for (size_t i = 0; i < ourValues.size(); ++i)
+ {
+ const Value& lhsChild = ourValues[i];
+ const Value& rhsChild = theirValues[i];
+ if (!DeepCompareIsEqual(lhsChild, rhsChild))
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+ else if constexpr (AZStd::is_same_v)
+ {
+ if (!rhs.IsNode())
+ {
+ return false;
+ }
+ auto&& theirValue = AZStd::get>(rhsValue);
+ if (ourValue == theirValue)
+ {
+ return true;
+ }
+
+ const Node& ourNode = *ourValue;
+ const Node& theirNode = *theirValue;
+
+ const Object::ContainerType& ourProperties = ourNode.GetProperties();
+ const Object::ContainerType& theirProperties = theirNode.GetProperties();
+
+ if (ourProperties.size() != theirProperties.size())
+ {
+ return false;
+ }
+
+ for (size_t i = 0; i < ourProperties.size(); ++i)
+ {
+ const Object::EntryType& lhsChild = ourProperties[i];
+ auto rhsIt = rhs.FindMember(lhsChild.first);
+ if (rhsIt == rhs.MemberEnd() || !DeepCompareIsEqual(lhsChild.second, rhsIt->second))
+ {
+ return false;
+ }
+ }
+
+ const Array::ContainerType& ourChildren = ourNode.GetChildren();
+ const Array::ContainerType& theirChildren = theirNode.GetChildren();
+
+ for (size_t i = 0; i < ourChildren.size(); ++i)
+ {
+ const Value& lhsChild = ourChildren[i];
+ const Value& rhsChild = theirChildren[i];
+ if (!DeepCompareIsEqual(lhsChild, rhsChild))
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+ else
+ {
+ return lhs == rhs;
+ }
+ },
+ lhsValue);
+ }
+
+ Value DeepCopy(const Value& value, bool copyStrings)
+ {
+ Value copiedValue;
+ AZStd::unique_ptr writer = copiedValue.GetWriteHandler();
+ value.Accept(*writer, copyStrings);
+ return copiedValue;
+ }
+} // namespace AZ::Dom::Utils
diff --git a/Code/Framework/AzCore/AzCore/DOM/DomUtils.h b/Code/Framework/AzCore/AzCore/DOM/DomUtils.h
index 84a6eb5687..5403b93714 100644
--- a/Code/Framework/AzCore/AzCore/DOM/DomUtils.h
+++ b/Code/Framework/AzCore/AzCore/DOM/DomUtils.h
@@ -9,9 +9,15 @@
#pragma once
#include
+#include
namespace AZ::Dom::Utils
{
Visitor::Result ReadFromString(Backend& backend, AZStd::string_view string, AZ::Dom::Lifetime lifetime, Visitor& visitor);
Visitor::Result ReadFromStringInPlace(Backend& backend, AZStd::string& string, Visitor& visitor);
+
+ AZ::Outcome WriteToValue(const Backend::WriteCallback& writeCallback);
+
+ bool DeepCompareIsEqual(const Value& lhs, const Value& rhs);
+ Value DeepCopy(const Value& value, bool copyStrings = true);
} // namespace AZ::Dom::Utils
diff --git a/Code/Framework/AzCore/AzCore/DOM/DomValue.cpp b/Code/Framework/AzCore/AzCore/DOM/DomValue.cpp
new file mode 100644
index 0000000000..10c8e33715
--- /dev/null
+++ b/Code/Framework/AzCore/AzCore/DOM/DomValue.cpp
@@ -0,0 +1,1180 @@
+/*
+ * 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 AZ::Dom
+{
+ namespace Internal
+ {
+ template
+ AZStd::shared_ptr& CheckCopyOnWrite(AZStd::shared_ptr& refCountedPointer)
+ {
+ if (refCountedPointer.use_count() == 1)
+ {
+ return refCountedPointer;
+ }
+ else
+ {
+ refCountedPointer = AZStd::allocate_shared(StdValueAllocator(), *refCountedPointer);
+ return refCountedPointer;
+ }
+ }
+
+ template
+ constexpr size_t GetTypeIndexInternal(size_t index = 0);
+
+ template
+ constexpr size_t GetTypeIndexInternal(size_t index = 0)
+ {
+ if constexpr (AZStd::is_same_v)
+ {
+ return index;
+ }
+ else
+ {
+ return GetTypeIndexInternal(index + 1);
+ }
+ }
+
+ template
+ struct ExtractTypeArgs
+ {
+ };
+
+ template class TypeToExtract, typename... Args>
+ struct ExtractTypeArgs>
+ {
+ template
+ static constexpr size_t GetTypeIndex()
+ {
+ return GetTypeIndexInternal();
+ }
+ };
+ } // namespace Internal
+
+ // Helper function, looks up the index of a type within Value::m_value's storage
+ template
+ constexpr size_t GetTypeIndex()
+ {
+ return Internal::ExtractTypeArgs::GetTypeIndex();
+ }
+
+ const Array::ContainerType& Array::GetValues() const
+ {
+ return m_values;
+ }
+
+ const Object::ContainerType& Object::GetValues() const
+ {
+ return m_values;
+ }
+
+ Node::Node(AZ::Name name)
+ : m_name(AZStd::move(name))
+ {
+ }
+
+ AZ::Name Node::GetName() const
+ {
+ return m_name;
+ }
+
+ void Node::SetName(AZ::Name name)
+ {
+ m_name = AZStd::move(name);
+ }
+
+ Object::ContainerType& Node::GetProperties()
+ {
+ return m_properties;
+ }
+
+ const Object::ContainerType& Node::GetProperties() const
+ {
+ return m_properties;
+ }
+
+ Array::ContainerType& Node::GetChildren()
+ {
+ return m_children;
+ }
+
+ const Array::ContainerType& Node::GetChildren() const
+ {
+ return m_children;
+ }
+
+ Value::Value(SharedStringType sharedString)
+ : m_value(AZStd::move(sharedString))
+ {
+ }
+
+ Value::Value(const Value& value)
+ : m_value(value.m_value)
+ {
+ }
+
+ Value::Value(Value&& value) noexcept
+ {
+ memcpy(this, &value, sizeof(Value));
+ memset(&value, 0, sizeof(Value));
+ }
+
+ Value::Value(AZStd::string_view stringView, bool copy)
+ {
+ if (copy)
+ {
+ CopyFromString(stringView);
+ }
+ else
+ {
+ SetString(stringView);
+ }
+ }
+
+ Value::Value(AZStd::any opaqueValue)
+ : m_value(AZStd::allocate_shared(StdValueAllocator(), AZStd::move(opaqueValue)))
+ {
+ }
+
+ Value Value::FromOpaqueValue(const AZStd::any& value)
+ {
+ return Value(value);
+ }
+
+ Value::Value(int8_t value)
+ : m_value(aznumeric_cast(value))
+ {
+ }
+
+ Value::Value(uint8_t value)
+ : m_value(aznumeric_cast(value))
+ {
+ }
+
+ Value::Value(int16_t value)
+ : m_value(aznumeric_cast(value))
+ {
+ }
+
+ Value::Value(uint16_t value)
+ : m_value(aznumeric_cast(value))
+ {
+ }
+
+ Value::Value(int32_t value)
+ : m_value(aznumeric_cast(value))
+ {
+ }
+
+ Value::Value(uint32_t value)
+ : m_value(aznumeric_cast(value))
+ {
+ }
+
+ Value::Value(int64_t value)
+ : m_value(value)
+ {
+ }
+
+ Value::Value(uint64_t value)
+ : m_value(value)
+ {
+ }
+
+ Value::Value(float value)
+ : m_value(aznumeric_cast(value))
+ {
+ }
+
+ Value::Value(double value)
+ : m_value(value)
+ {
+ }
+
+ Value::Value(bool value)
+ : m_value(value)
+ {
+ }
+
+ Value::Value(Type type)
+ {
+ switch (type)
+ {
+ case Type::Null:
+ // Null is the default initialized value
+ break;
+ case Type::Bool:
+ m_value = false;
+ break;
+ case Type::Object:
+ SetObject();
+ break;
+ case Type::Array:
+ SetArray();
+ break;
+ case Type::String:
+ SetString("");
+ break;
+ case Type::Int64:
+ m_value = int64_t{};
+ break;
+ case Type::Uint64:
+ m_value = uint64_t{};
+ break;
+ case Type::Double:
+ m_value = double{};
+ break;
+ case Type::Node:
+ SetNode("");
+ break;
+ case Type::Opaque:
+ AZ_Assert(false, "AZ::Dom::Value may not be constructed with an empty opaque type");
+ break;
+ }
+ }
+
+ Value& Value::operator=(const Value& other)
+ {
+ m_value = other.m_value;
+ return *this;
+ }
+
+ Value& Value::operator=(Value&& other) noexcept
+ {
+ SetNull();
+ memcpy(this, &other, sizeof(Value));
+ memset(&other, 0, sizeof(Value));
+ return *this;
+ }
+
+ bool Value::operator==(const Value& rhs) const
+ {
+ if (IsString() && rhs.IsString())
+ {
+ return GetString() == rhs.GetString();
+ }
+ else
+ {
+ return m_value == rhs.m_value;
+ }
+ }
+
+ bool Value::operator!=(const Value& rhs) const
+ {
+ return !operator==(rhs);
+ }
+
+ void Value::Swap(Value& other) noexcept
+ {
+ AZStd::aligned_storage_for_t temp;
+ memcpy(&temp, this, sizeof(Value));
+ memcpy(this, &other, sizeof(Value));
+ memcpy(&other, &temp, sizeof(Value));
+ }
+
+ Type Dom::Value::GetType() const
+ {
+ switch (m_value.index())
+ {
+ case GetTypeIndex():
+ return Type::Null;
+ case GetTypeIndex():
+ return Type::Int64;
+ case GetTypeIndex():
+ return Type::Uint64;
+ case GetTypeIndex():
+ return Type::Double;
+ case GetTypeIndex():
+ return Type::Bool;
+ case GetTypeIndex():
+ case GetTypeIndex():
+ case GetTypeIndex():
+ return Type::String;
+ case GetTypeIndex():
+ return Type::Object;
+ case GetTypeIndex():
+ return Type::Array;
+ case GetTypeIndex():
+ return Type::Node;
+ case GetTypeIndex>():
+ return Type::Opaque;
+ }
+ AZ_Assert(false, "AZ::Dom::Value::GetType: m_value has an unexpected type");
+ return Type::Null;
+ }
+
+ bool Value::IsNull() const
+ {
+ return AZStd::holds_alternative(m_value);
+ }
+
+ bool Value::IsFalse() const
+ {
+ const bool* value = AZStd::get_if(&m_value);
+ return value != nullptr ? !(*value) : false;
+ }
+
+ bool Value::IsTrue() const
+ {
+ const bool* value = AZStd::get_if(&m_value);
+ return value != nullptr ? *value : false;
+ }
+
+ bool Value::IsBool() const
+ {
+ return AZStd::holds_alternative(m_value);
+ }
+
+ bool Value::IsNode() const
+ {
+ return AZStd::holds_alternative(m_value);
+ }
+
+ bool Value::IsObject() const
+ {
+ return AZStd::holds_alternative(m_value);
+ }
+
+ bool Value::IsArray() const
+ {
+ return AZStd::holds_alternative(m_value);
+ }
+
+ bool Value::IsOpaqueValue() const
+ {
+ return AZStd::holds_alternative(m_value);
+ }
+
+ bool Value::IsNumber() const
+ {
+ return AZStd::visit(
+ [](auto&& value) -> bool
+ {
+ using CurrentType = AZStd::decay_t;
+ if constexpr (AZStd::is_same_v)
+ {
+ return true;
+ }
+ else if constexpr (AZStd::is_same_v)
+ {
+ return true;
+ }
+ else if constexpr (AZStd::is_same_v)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ },
+ m_value);
+ }
+
+ bool Value::IsInt() const
+ {
+ return AZStd::holds_alternative(m_value);
+ }
+
+ bool Value::IsUint() const
+ {
+ return AZStd::holds_alternative(m_value);
+ }
+
+ bool Value::IsDouble() const
+ {
+ return AZStd::holds_alternative(m_value);
+ }
+
+ bool Value::IsString() const
+ {
+ return AZStd::visit(
+ [](auto&& value) -> bool
+ {
+ using CurrentType = AZStd::decay_t;
+ if constexpr (AZStd::is_same_v)
+ {
+ return true;
+ }
+ else if constexpr (AZStd::is_same_v