12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- """
- Copyright (c) Contributors to the Open 3D Engine Project.
- For complete copyright and license terms please see the LICENSE at the root of this distribution.
- SPDX-License-Identifier: Apache-2.0 OR MIT
- """
- def CreatePrefab_UnderAnEntity():
- """
- Test description:
- - Creates two entities, parent and child. Child entity has Parent entity as its parent.
- - Creates a prefab of the child entity.
- Test is successful if the new instanced prefab of the child has the parent entity id
- """
- from pathlib import Path
- CAR_PREFAB_FILE_NAME = Path(__file__).stem + 'car_prefab'
- from editor_python_test_tools.editor_entity_utils import EditorEntity
- from editor_python_test_tools.prefab_utils import Prefab
- import Prefab.tests.PrefabTestUtils as prefab_test_utils
- prefab_test_utils.open_base_tests_level()
- # Creates a new Entity at the root level
- # Asserts if creation didn't succeed
- parent_entity = EditorEntity.create_editor_entity_at((100.0, 100.0, 100.0))
- assert parent_entity.id.IsValid(), "Couldn't create parent entity"
- child_entity = EditorEntity.create_editor_entity(parent_id=parent_entity.id)
- assert child_entity.id.IsValid(), "Couldn't create child entity"
- assert child_entity.get_world_translation().IsClose(parent_entity.get_world_translation()), f"Child entity position{child_entity.get_world_translation().ToString()}" \
- f" is not located at the same position as the parent{parent_entity.get_world_translation().ToString()}"
- # Asserts if prefab creation doesn't succeed
- child_prefab, child_instance = Prefab.create_prefab([child_entity], CAR_PREFAB_FILE_NAME)
- # Test undo/redo on prefab creation
- prefab_test_utils.validate_undo_redo_on_prefab_creation(child_instance, parent_entity.id)
- child_entity_on_child_instance = child_instance.get_direct_child_entities()[0]
- assert child_instance.container_entity.get_parent_id().IsValid(), "Newly instanced entity has no parent"
- assert child_instance.container_entity.get_parent_id() == parent_entity.id, "Newly instanced entity parent does not match the expected parent"
- assert child_instance.container_entity.get_world_translation().IsClose(parent_entity.get_world_translation()), "Newly instanced entity position is not located at the same position as the parent"
- # Move the parent position, it should update the child position
- parent_entity.set_world_translation((200.0, 200.0, 200.0))
- child_instance_translation = child_instance.container_entity.get_world_translation()
- assert child_instance_translation.IsClose(azlmbr.math.Vector3(200.0, 200.0, 200.0)), f"Instance position position{child_instance_translation.ToString()} didn't get updated" \
- f" to the same position as the parent{parent_entity.get_world_translation().ToString()}"
- child_translation = child_entity_on_child_instance.get_world_translation()
- assert child_translation.IsClose(azlmbr.math.Vector3(200.0, 200.0, 200.0)), f"Entity position{child_translation.ToString()} of the instance didn't get updated" \
- f" to the same position as the parent{parent_entity.get_world_translation().ToString()}"
- if __name__ == "__main__":
- from editor_python_test_tools.utils import Report
- Report.start_test(CreatePrefab_UnderAnEntity)
|