You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
4.4 KiB
Python
127 lines
4.4 KiB
Python
"""
|
|
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
|
|
"""
|
|
|
|
# Tests component properties that are containers
|
|
|
|
import azlmbr.bus as bus
|
|
import azlmbr.editor as editor
|
|
import azlmbr.entity as entity
|
|
import azlmbr.surface_data
|
|
import azlmbr.globals
|
|
|
|
# Open a level
|
|
editor.EditorToolsApplicationRequestBus(bus.Broadcast, 'OpenLevelNoPrompt', 'auto_test')
|
|
|
|
def print_result(message, result):
|
|
if result:
|
|
print(message + ": SUCCESS")
|
|
else:
|
|
print(message + ": FAILURE")
|
|
|
|
def is_container(pte, path):
|
|
return pte.is_container(path)
|
|
|
|
def get_container_count(pte, path):
|
|
outcome = pte.get_container_count(path)
|
|
if(outcome.IsSuccess()):
|
|
return outcome.GetValue()
|
|
return False
|
|
|
|
def reset_container(pte, path):
|
|
outcome = pte.reset_container(path)
|
|
if(outcome.IsSuccess()):
|
|
return outcome.GetValue()
|
|
return False
|
|
|
|
def add_container_item(pte, path, key, item):
|
|
outcome = pte.add_container_item(path, key, item)
|
|
if(outcome.IsSuccess()):
|
|
return outcome.GetValue()
|
|
return False
|
|
|
|
def remove_container_item(pte, path, key):
|
|
outcome = pte.remove_container_item(path, key)
|
|
if(outcome.IsSuccess()):
|
|
return outcome.GetValue()
|
|
return False
|
|
|
|
def update_container_item(pte, path, key, value):
|
|
outcome = pte.update_container_item(path, key, value)
|
|
if(outcome.IsSuccess()):
|
|
return outcome.GetValue()
|
|
return False
|
|
|
|
def get_container_item(pte, path, key):
|
|
outcome = pte.get_container_item(path, key)
|
|
if(outcome.IsSuccess()):
|
|
return outcome.GetValue()
|
|
return False
|
|
|
|
# Create new Entity
|
|
entityId = editor.ToolsApplicationRequestBus(bus.Broadcast, 'CreateNewEntity', entity.EntityId())
|
|
print_result("New entity with no parent created", entityId)
|
|
|
|
tagOne = azlmbr.surface_data.SurfaceTag()
|
|
tagOne.SetTag('one')
|
|
|
|
tagTwo = azlmbr.surface_data.SurfaceTag()
|
|
tagTwo.SetTag('two')
|
|
|
|
tagThree = azlmbr.surface_data.SurfaceTag()
|
|
tagThree.SetTag('three')
|
|
|
|
tagFour = azlmbr.surface_data.SurfaceTag()
|
|
tagFour.SetTag('four')
|
|
|
|
# create a component with a TagSurface container
|
|
typeIdsList = [azlmbr.globals.property.GradientSurfaceDataComponentTypeId]
|
|
|
|
componentOutcome = editor.EditorComponentAPIBus(bus.Broadcast, 'AddComponentsOfType', entityId, typeIdsList)
|
|
if (componentOutcome.IsSuccess()):
|
|
print("GradientSurfaceDataComponent added to entity :SUCCESS")
|
|
else:
|
|
raise Exception('FAILURE FATAL: AddComponentsOfType')
|
|
|
|
components = componentOutcome.GetValue()
|
|
tagList = components[0]
|
|
|
|
pteOutcome = editor.EditorComponentAPIBus(bus.Broadcast, 'BuildComponentPropertyTreeEditor', tagList)
|
|
if(pteOutcome.IsSuccess()):
|
|
pte = pteOutcome.GetValue()
|
|
print("Created a PropertyTreeEditor :SUCCESS")
|
|
else:
|
|
raise Exception('FAILURE FATAL: BuildComponentPropertyTreeEditor')
|
|
|
|
# Test BuildComponentPropertyList
|
|
paths = pte.build_paths_list()
|
|
for p in paths:
|
|
print('>> {}'.format(p))
|
|
|
|
tagListPropertyPath = 'm_template|Extended Tags'
|
|
|
|
print_result('Has a container', is_container(pte, tagListPropertyPath))
|
|
print_result('Has zero items', get_container_count(pte, tagListPropertyPath) == 0)
|
|
print_result('Add an item 0', add_container_item(pte, tagListPropertyPath, 0, tagOne))
|
|
print_result('Has one item 0', get_container_count(pte, tagListPropertyPath) == 1)
|
|
print_result('Add an item 1', add_container_item(pte, tagListPropertyPath, 1, tagOne))
|
|
print_result('Add an item 2', add_container_item(pte, tagListPropertyPath, 2, tagTwo))
|
|
print_result('Add an item 3', add_container_item(pte, tagListPropertyPath, 3, tagThree))
|
|
print_result('Has four items', get_container_count(pte, tagListPropertyPath) == 4)
|
|
print_result('Updated an item', update_container_item(pte, tagListPropertyPath, 2, tagFour))
|
|
|
|
itemTag = get_container_item(pte, tagListPropertyPath, 2)
|
|
print_result ('itemTag equals tagFour', itemTag.Equal(tagFour))
|
|
|
|
print_result('Removed one item 0', remove_container_item(pte, tagListPropertyPath, 0))
|
|
print_result('Removed one item 1', remove_container_item(pte, tagListPropertyPath, 0))
|
|
print_result('Has two items', get_container_count(pte, tagListPropertyPath) == 2)
|
|
print_result('Reset items', reset_container(pte, tagListPropertyPath))
|
|
print_result('Has cleared the items', get_container_count(pte, tagListPropertyPath) == 0)
|
|
|
|
# All Done!
|
|
editor.EditorToolsApplicationRequestBus(bus.Broadcast, 'ExitNoPrompt')
|