Integrating latest 47acbe8
This commit is contained in:
@@ -0,0 +1,152 @@
|
||||
"""
|
||||
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.
|
||||
"""
|
||||
|
||||
# Tests the Python API for Entity CRUD while the Editor is running
|
||||
|
||||
import azlmbr.bus as bus
|
||||
import azlmbr.editor as editor
|
||||
from azlmbr.entity import EntityId
|
||||
|
||||
createdEntityIds = []
|
||||
|
||||
|
||||
def onEditorEntityCreated(parameters):
|
||||
global createdEntityIds
|
||||
|
||||
entityId = parameters[0]
|
||||
createdEntityIds.append(entityId)
|
||||
|
||||
|
||||
def onEditorEntityDeleted(parameters):
|
||||
global createdEntityIds
|
||||
|
||||
deletedEntityId = parameters[0]
|
||||
for entityId in createdEntityIds:
|
||||
if (entityId.invoke("Equal", deletedEntityId)):
|
||||
createdEntityIds.remove(entityId)
|
||||
break
|
||||
|
||||
|
||||
# Open a level (any level should work)
|
||||
editor.EditorToolsApplicationRequestBus(bus.Broadcast, 'OpenLevelNoPrompt', 'WaterSample')
|
||||
|
||||
# Listen for notifications when entities are created/deleted
|
||||
handler = bus.NotificationHandler('EditorEntityContextNotificationBus')
|
||||
handler.connect()
|
||||
handler.add_callback('OnEditorEntityCreated', onEditorEntityCreated)
|
||||
handler.add_callback('OnEditorEntityDeleted', onEditorEntityDeleted)
|
||||
|
||||
# Create a new Entity at the root level
|
||||
rootEntityId = editor.ToolsApplicationRequestBus(bus.Broadcast, 'CreateNewEntity', EntityId())
|
||||
if (rootEntityId):
|
||||
print("New entity with no parent created")
|
||||
if (rootEntityId.invoke("Equal", createdEntityIds[0])):
|
||||
print("New root entity matches entity received from notification")
|
||||
|
||||
# Create a new Entity parented to the first Entity we created
|
||||
firstChildEntityId = editor.ToolsApplicationRequestBus(bus.Broadcast, 'CreateNewEntity', rootEntityId)
|
||||
if (firstChildEntityId):
|
||||
print("New entity with valid parent created")
|
||||
if (firstChildEntityId.invoke("Equal", createdEntityIds[1])):
|
||||
print("First child entity matches entity received from notification")
|
||||
|
||||
# Create another Entity parented to the first Entity we created
|
||||
secondChildEntityId = editor.ToolsApplicationRequestBus(bus.Broadcast, 'CreateNewEntity', rootEntityId)
|
||||
if (secondChildEntityId):
|
||||
print("Another new entity with valid parent created")
|
||||
if (secondChildEntityId.invoke("Equal", createdEntityIds[2])):
|
||||
print("Second child entity matches entity received from notification")
|
||||
|
||||
# Create two more entities and then delete them using the API that takes a list instead of a single entity
|
||||
thirdChildEntityId = editor.ToolsApplicationRequestBus(bus.Broadcast, 'CreateNewEntity', secondChildEntityId)
|
||||
fourthChildEntityId = editor.ToolsApplicationRequestBus(bus.Broadcast, 'CreateNewEntity', secondChildEntityId)
|
||||
editor.ToolsApplicationRequestBus(bus.Broadcast, 'DeleteEntities', [thirdChildEntityId, fourthChildEntityId])
|
||||
|
||||
# Delete the second child Entity we created
|
||||
editor.ToolsApplicationRequestBus(bus.Broadcast, 'DeleteEntityById', secondChildEntityId)
|
||||
|
||||
# Delete the root Entity we created and all its children (so this should also delete the firstChildEntityId)
|
||||
editor.ToolsApplicationRequestBus(bus.Broadcast, 'DeleteEntityAndAllDescendants', rootEntityId)
|
||||
|
||||
# There should be no more entities left that we created
|
||||
if (len(createdEntityIds) == 0):
|
||||
print("Deleted all entities we created")
|
||||
|
||||
# Stop listening for entity creation/deletion notifications
|
||||
handler.disconnect()
|
||||
|
||||
# Create new Entity
|
||||
entityId = editor.ToolsApplicationRequestBus(bus.Broadcast, 'CreateNewEntity', EntityId())
|
||||
|
||||
# Get current name
|
||||
oldName = editor.EditorEntityInfoRequestBus(bus.Event, 'GetName', entityId);
|
||||
|
||||
# Set a new name
|
||||
editor.EditorEntityAPIBus(bus.Event, 'SetName', entityId, "TestName")
|
||||
|
||||
# Get new name
|
||||
newName = editor.EditorEntityInfoRequestBus(bus.Event, 'GetName', entityId);
|
||||
|
||||
if not(oldName == newName):
|
||||
print("GetName and SetName work")
|
||||
|
||||
# Create new Entity
|
||||
parentId = editor.ToolsApplicationRequestBus(bus.Broadcast, 'CreateNewEntity', EntityId())
|
||||
|
||||
# Create new Entity with parentId as parent
|
||||
childId = editor.ToolsApplicationRequestBus(bus.Broadcast, 'CreateNewEntity', parentId)
|
||||
|
||||
getId = editor.EditorEntityInfoRequestBus(bus.Event, 'GetParent', childId);
|
||||
|
||||
if(getId.Equal(parentId)):
|
||||
print("GetParent works")
|
||||
|
||||
# Find the entity in the scene
|
||||
|
||||
import azlmbr.bus as bus
|
||||
import azlmbr.entity
|
||||
|
||||
searchFilter = azlmbr.entity.SearchFilter()
|
||||
searchFilter.names = ['TestName']
|
||||
|
||||
# Search by name
|
||||
searchEntityIdList = azlmbr.entity.SearchBus(bus.Broadcast, 'SearchEntities', searchFilter)
|
||||
|
||||
for entityId in searchEntityIdList:
|
||||
entityName = editor.EditorEntityInfoRequestBus(bus.Event, 'GetName', entityId)
|
||||
if(entityName == 'TestName'):
|
||||
print("TestName entity found")
|
||||
|
||||
# Search by name path (DAG)
|
||||
editor.EditorEntityAPIBus(bus.Event, 'SetName', parentId, "TestParent")
|
||||
editor.EditorEntityAPIBus(bus.Event, 'SetName', childId, "TestChild")
|
||||
|
||||
searchFilter = azlmbr.entity.SearchFilter()
|
||||
searchFilter.names = ['TestParent|TestChild']
|
||||
|
||||
searchEntityIdList = azlmbr.entity.SearchBus(bus.Broadcast, 'SearchEntities', searchFilter)
|
||||
|
||||
for entityId in searchEntityIdList:
|
||||
entityName = editor.EditorEntityInfoRequestBus(bus.Event, 'GetName', entityId)
|
||||
if(entityName == 'TestChild'):
|
||||
print("TestChild entity found")
|
||||
|
||||
# Search using wildcard
|
||||
searchFilter = azlmbr.entity.SearchFilter()
|
||||
searchFilter.names = ['Test*']
|
||||
|
||||
searchEntityIdList = azlmbr.entity.SearchBus(bus.Broadcast, 'SearchEntities', searchFilter)
|
||||
|
||||
if(len(searchEntityIdList) == 3):
|
||||
print("Test* 3 entities found")
|
||||
|
||||
# Close Editor
|
||||
editor.EditorToolsApplicationRequestBus(bus.Broadcast, 'ExitNoPrompt')
|
||||
Reference in New Issue
Block a user