""" All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or its licensors. For complete copyright and license terms please see the LICENSE at the root of this distribution (the "License"). All use of this software is governed by the License, or, if provided, by the license below or the license accompanying this file. Do not remove or modify any license notices. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Test case ID : C19723164 Test Case Title : Verify that if we had 512 shape colliders in the level, the level does not crash """ # fmt: off class Tests(): all_entities_created = ("All 512 entities have been created", "Failed to create all 512 entities") game_mode_entered = ("Entered Game Mode", "Failed to enter Game Mode") game_mode_exited = ("Exited Game Mode", "Failed to exit Game Mode") # fmt: on def C19723164_ShapeColliders_WontCrashEditor(): """ Summary: Create 512 entities with shape colliders and verify stability Expected Behavior: After 512 Shape Collider entities exist, the editor should not crash or dip in FPS Test Steps: 1) Load the empty level 2) Create 512 entities with PhysX Shape Collider and Sphere Shape components 3) Enter/Exit game mode and wait to see if editor crashes 4) Close the editor Note: - This test file must be called from the Open 3D Engine Editor command terminal - Any passed and failed tests are written to the Editor.log file. Parsing the file or running a log_monitor are required to observe the test results. :return: None """ # Helper Files import ImportPathHelper as imports imports.init() from editor_python_test_tools.utils import Report from editor_python_test_tools.utils import TestHelper as helper from editor_python_test_tools.editor_entity_utils import EditorEntity as Entity # Open 3D Engine Imports import azlmbr.legacy.general as general def idle_editor_for_check(): """ This will be used to verify that the editor has not crashed by increasing the duration the editor is kept open """ # Enter game mode helper.enter_game_mode(Tests.game_mode_entered) # Wait 60 frames general.idle_wait_frames(60) # Exit game mode helper.exit_game_mode(Tests.game_mode_exited) # Wait 60 frames more general.idle_wait_frames(60) helper.init_idle() # 1) Load the empty level helper.open_level("Physics", "Base") # 2) Create 512 entities with PhysX Shape Collider and Sphere Shape components entity_failure = False for i in range(1, 513): # Create Entity entity = Entity.create_editor_entity(f"Entity_{i}") # Add components entity.add_component("PhysX Shape Collider") if i % 3 == 0: shape_component_name = "Capsule Shape" elif i % 2 == 0: shape_component_name = "Box Shape" else: shape_component_name = "Sphere Shape" entity.add_component(shape_component_name) # Verify the entity contains the components components_added = entity.has_component("PhysX Shape Collider") and entity.has_component(shape_component_name) if not components_added: entity_failure = True Report.info(f"Entity_{i} failed to add either PhysX Shape Collider or {shape_component_name}") Report.result(Tests.all_entities_created, not entity_failure) # 3) Enter/Exit game mode and wait to see if editor crashes idle_editor_for_check() if __name__ == "__main__": import ImportPathHelper as imports imports.init() from editor_python_test_tools.utils import Report Report.start_test(C19723164_ShapeColliders_WontCrashEditor)