/* * 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. * */ #include "ComponentEntityEditorPlugin_precompiled.h" #include "UI/QComponentLevelEntityEditorMainWindow.h" #include #include #include #include #include #include QComponentLevelEntityEditorInspectorWindow::QComponentLevelEntityEditorInspectorWindow(QWidget* parent) : QMainWindow(parent) , m_propertyEditor(nullptr) { GetIEditor()->RegisterNotifyListener(this); AzToolsFramework::SliceMetadataEntityContextNotificationBus::Handler::BusConnect(); Init(); } QComponentLevelEntityEditorInspectorWindow::~QComponentLevelEntityEditorInspectorWindow() { AzToolsFramework::SliceMetadataEntityContextNotificationBus::Handler::BusDisconnect(); GetIEditor()->UnregisterNotifyListener(this); } void QComponentLevelEntityEditorInspectorWindow::Init() { QVBoxLayout* layout = new QVBoxLayout(); m_propertyEditor = new AzToolsFramework::EntityPropertyEditor(nullptr, Qt::WindowFlags(), true); layout->addWidget(m_propertyEditor); // On initialization, notify our property editor about the root metadata entity if it exists RefreshPropertyEditor(); QWidget* window = new QWidget(); window->setLayout(layout); setCentralWidget(window); } void QComponentLevelEntityEditorInspectorWindow::OnMetadataEntityAdded(AZ::EntityId entityId) { AZ::EntityId rootSliceMetaDataEntity = GetRootMetaDataEntityId(); if (rootSliceMetaDataEntity == entityId) { AzToolsFramework::EntityIdSet entities; entities.insert(rootSliceMetaDataEntity); m_propertyEditor->SetOverrideEntityIds(entities); } } void QComponentLevelEntityEditorInspectorWindow::RefreshPropertyEditor() { AZ::EntityId rootSliceMetaDataEntity = GetRootMetaDataEntityId(); OnMetadataEntityAdded(rootSliceMetaDataEntity); } AZ::EntityId QComponentLevelEntityEditorInspectorWindow::GetRootMetaDataEntityId() const { AZ::EntityId levelEntityId; AzToolsFramework::ToolsApplicationRequestBus::BroadcastResult(levelEntityId, &AzToolsFramework::ToolsApplicationRequests::GetCurrentLevelEntityId); return levelEntityId; } void QComponentLevelEntityEditorInspectorWindow::OnEditorNotifyEvent(EEditorNotifyEvent event) { switch (event) { // Refresh the Level Component Property Editor any time we start or end // a level creation or load. case eNotify_OnBeginLoad: case eNotify_OnEndLoad: case eNotify_OnBeginCreate: case eNotify_OnEndCreate: RefreshPropertyEditor(); break; default: break; } } /////////////////////////////////////////////////////////////////////////////// // End of context menu handling /////////////////////////////////////////////////////////////////////////////// #include