Merge branch 'main' into MultiplayerPipeline
This commit is contained in:
@@ -70,7 +70,6 @@ if (PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
ly_add_target(
|
||||
NAME AWSCore.Editor MODULE
|
||||
NAMESPACE Gem
|
||||
OUTPUT_SUBDIRECTORY AWSCoreEditorPlugins
|
||||
FILES_CMAKE
|
||||
awscore_editor_shared_files.cmake
|
||||
INCLUDE_DIRECTORIES
|
||||
@@ -85,6 +84,25 @@ if (PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
Gem::AWSCore.Static
|
||||
Gem::AWSCore.Editor.Static
|
||||
)
|
||||
|
||||
ly_add_target(
|
||||
NAME AWSCore.ResourceMappintTool MODULE
|
||||
NAMESPACE Gem
|
||||
OUTPUT_SUBDIRECTORY AWSCoreEditorQtBin
|
||||
FILES_CMAKE
|
||||
awscore_resourcemappingtool_files.cmake
|
||||
INCLUDE_DIRECTORIES
|
||||
PRIVATE
|
||||
Include/Private
|
||||
PUBLIC
|
||||
Include/Public
|
||||
BUILD_DEPENDENCIES
|
||||
PRIVATE
|
||||
3rdParty::Qt::Core
|
||||
3rdParty::Qt::Widgets
|
||||
AZ::AzToolsFramework
|
||||
)
|
||||
ly_add_dependencies(AWSCore.Editor AWSCore.ResourceMappintTool)
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
|
||||
@@ -18,6 +18,11 @@
|
||||
|
||||
#include <QMenu>
|
||||
|
||||
namespace AzFramework
|
||||
{
|
||||
class ProcessWatcher;
|
||||
}
|
||||
|
||||
namespace AWSCore
|
||||
{
|
||||
class AWSCoreEditorMenu
|
||||
@@ -25,7 +30,11 @@ namespace AWSCore
|
||||
, AWSCoreEditorRequestBus::Handler
|
||||
{
|
||||
public:
|
||||
static constexpr const char ResourceMappingToolPath[] = "Gems/AWSCore/Code/Tools/ResourceMappingTool/resource_mapping_tool.cmd";
|
||||
static constexpr const char AWSResourceMappingToolReadMeWarningText[] =
|
||||
"Failed to launch Resource Mapping Tool, please follow <a href=\"file:///%s\">README</a> to setup tool before using it.";
|
||||
static constexpr const char AWSResourceMappingToolIsRunningText[] = "Resource Mapping Tool is running...";
|
||||
static constexpr const char AWSResourceMappingToolLogWarningText[] =
|
||||
"Failed to launch Resource Mapping Tool, please check <a href=\"file:///%s\">logs</a> for details.";
|
||||
static constexpr const char AWSResourceMappingToolActionText[] = "AWS Resource Mapping Tool...";
|
||||
static constexpr const char CredentialConfigurationActionText[] = "Credential Configuration";
|
||||
static constexpr const char CredentialConfigurationUrl[] = "https://docs.aws.amazon.com/sdk-for-cpp/v1/developer-guide/credentials.html";
|
||||
@@ -40,23 +49,17 @@ namespace AWSCore
|
||||
~AWSCoreEditorMenu();
|
||||
|
||||
private:
|
||||
void InitializeEngineRootFolder();
|
||||
void InitializeResourceMappingToolAction();
|
||||
void InitializeAWSDocActions();
|
||||
void InitializeAWSFeatureGemActions();
|
||||
|
||||
void StartResourceMappingProcess();
|
||||
|
||||
// AWSCoreEditorRequestBus interface implementation
|
||||
void SetAWSClientAuthEnabled() override;
|
||||
void SetAWSMetricsEnabled() override;
|
||||
|
||||
void SetAWSFeatureActionsEnabled(const AZStd::string actionText);
|
||||
|
||||
AZStd::string m_engineRootFolder;
|
||||
|
||||
AZStd::mutex m_resourceMappingToolMutex;
|
||||
bool m_resourceMappintToolIsRunning;
|
||||
AZStd::thread m_resourceMappingToolThread;
|
||||
// To improve experience, use process watcher to keep track of ongoing tool process
|
||||
AZStd::unique_ptr<AzFramework::ProcessWatcher> m_resourceMappingToolWatcher;
|
||||
};
|
||||
} // namespace AWSCore
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <AzCore/std/string/string.h>
|
||||
|
||||
#include <QAction>
|
||||
|
||||
namespace AWSCore
|
||||
{
|
||||
class AWSCoreResourceMappingToolAction
|
||||
: public QAction
|
||||
{
|
||||
public:
|
||||
static constexpr const char ResourceMappingToolDirectoryPath[] = "Gems/AWSCore/Code/Tools/ResourceMappingTool";
|
||||
static constexpr const char EngineWindowsPythonEntryScriptPath[] = "python/python.cmd";
|
||||
|
||||
AWSCoreResourceMappingToolAction(const QString& text);
|
||||
|
||||
AZStd::string GetToolLaunchCommand() const;
|
||||
AZStd::string GetToolLogPath() const;
|
||||
AZStd::string GetToolReadMePath() const;
|
||||
|
||||
private:
|
||||
bool m_isDebug;
|
||||
AZStd::string m_enginePythonEntryPath;
|
||||
AZStd::string m_toolScriptPath;
|
||||
AZStd::string m_toolQtBinDirectoryPath;
|
||||
|
||||
AZStd::string m_toolLogPath;
|
||||
AZStd::string m_toolReadMePath;
|
||||
};
|
||||
} // namespace AWSCore
|
||||
@@ -13,17 +13,20 @@
|
||||
#include <AzCore/Debug/Trace.h>
|
||||
#include <AzCore/IO/FileIO.h>
|
||||
#include <AzCore/Jobs/JobFunction.h>
|
||||
#include <AzFramework/Process/ProcessWatcher.h>
|
||||
#include <AzFramework/StringFunc/StringFunc.h>
|
||||
|
||||
#include <AWSCoreEditor_Traits_Platform.h>
|
||||
#include <Editor/UI/AWSCoreEditorMenu.h>
|
||||
#include <Editor/UI/AWSCoreResourceMappingToolAction.h>
|
||||
|
||||
#include <QAction>
|
||||
#include <QApplication>
|
||||
#include <QDesktopServices>
|
||||
#include <QIcon>
|
||||
#include <QList>
|
||||
#include <QMessageBox>
|
||||
#include <QObject>
|
||||
#include <QProcess>
|
||||
#include <QString>
|
||||
#include <QUrl>
|
||||
|
||||
@@ -31,15 +34,9 @@ namespace AWSCore
|
||||
{
|
||||
AWSCoreEditorMenu::AWSCoreEditorMenu(const QString& text)
|
||||
: QMenu(text)
|
||||
, m_engineRootFolder("")
|
||||
, m_resourceMappintToolIsRunning(false)
|
||||
, m_resourceMappingToolWatcher(nullptr)
|
||||
{
|
||||
InitializeEngineRootFolder();
|
||||
|
||||
#ifdef AWSCORE_EDITOR_RESOURCE_MAPPING_TOOL_ENABLED
|
||||
InitializeResourceMappingToolAction();
|
||||
this->addSeparator();
|
||||
#endif
|
||||
InitializeAWSDocActions();
|
||||
this->addSeparator();
|
||||
InitializeAWSFeatureGemActions();
|
||||
@@ -50,46 +47,58 @@ namespace AWSCore
|
||||
AWSCoreEditorMenu::~AWSCoreEditorMenu()
|
||||
{
|
||||
AWSCoreEditorRequestBus::Handler::BusDisconnect();
|
||||
|
||||
if (m_resourceMappingToolThread.joinable())
|
||||
if (m_resourceMappingToolWatcher)
|
||||
{
|
||||
m_resourceMappingToolThread.join();
|
||||
}
|
||||
}
|
||||
|
||||
void AWSCoreEditorMenu::InitializeEngineRootFolder()
|
||||
{
|
||||
auto engineRootFolder = AZ::IO::FileIOBase::GetInstance()->GetAlias("@engroot@");
|
||||
if (!engineRootFolder)
|
||||
{
|
||||
AZ_Error("AWSCoreEditorMenu", false, "Failed to initialize engine root folder path.");
|
||||
}
|
||||
else
|
||||
{
|
||||
m_engineRootFolder = engineRootFolder;
|
||||
if (m_resourceMappingToolWatcher->IsProcessRunning())
|
||||
{
|
||||
m_resourceMappingToolWatcher->TerminateProcess(AZ::u32(-1));
|
||||
}
|
||||
m_resourceMappingToolWatcher.reset();
|
||||
}
|
||||
this->clear();
|
||||
}
|
||||
|
||||
void AWSCoreEditorMenu::InitializeResourceMappingToolAction()
|
||||
{
|
||||
QAction* resourceMappingAction = new QAction(QObject::tr(AWSResourceMappingToolActionText));
|
||||
QObject::connect(resourceMappingAction, &QAction::triggered, this, [this]() {
|
||||
AZStd::lock_guard<AZStd::mutex> lockGuard{m_resourceMappingToolMutex};
|
||||
if (!m_resourceMappintToolIsRunning)
|
||||
{
|
||||
m_resourceMappintToolIsRunning = true;
|
||||
if (m_resourceMappingToolThread.joinable())
|
||||
#ifdef AWSCORE_EDITOR_RESOURCE_MAPPING_TOOL_ENABLED
|
||||
AWSCoreResourceMappingToolAction* resourceMappingTool =
|
||||
new AWSCoreResourceMappingToolAction(QObject::tr(AWSResourceMappingToolActionText));
|
||||
QObject::connect(resourceMappingTool, &QAction::triggered, this,
|
||||
[resourceMappingTool, this]() {
|
||||
AZStd::string launchCommand = resourceMappingTool->GetToolLaunchCommand();
|
||||
if (launchCommand.empty())
|
||||
{
|
||||
m_resourceMappingToolThread.join();
|
||||
AZStd::string resourceMappingToolReadMePath = resourceMappingTool->GetToolReadMePath();
|
||||
AZStd::string message = AZStd::string::format(AWSResourceMappingToolReadMeWarningText, resourceMappingToolReadMePath.c_str());
|
||||
QMessageBox::warning(QApplication::activeWindow(), "Warning", message.c_str(), QMessageBox::Ok);
|
||||
return;
|
||||
}
|
||||
if (m_resourceMappingToolWatcher && m_resourceMappingToolWatcher->IsProcessRunning())
|
||||
{
|
||||
QMessageBox::information(QApplication::activeWindow(), "Info", AWSResourceMappingToolIsRunningText, QMessageBox::Ok);
|
||||
return;
|
||||
}
|
||||
if (m_resourceMappingToolWatcher)
|
||||
{
|
||||
m_resourceMappingToolWatcher.reset();
|
||||
}
|
||||
|
||||
AzFramework::ProcessLauncher::ProcessLaunchInfo processLaunchInfo;
|
||||
processLaunchInfo.m_commandlineParameters = launchCommand;
|
||||
processLaunchInfo.m_showWindow = false;
|
||||
m_resourceMappingToolWatcher = AZStd::unique_ptr<AzFramework::ProcessWatcher>(
|
||||
AzFramework::ProcessWatcher::LaunchProcess(processLaunchInfo, AzFramework::ProcessCommunicationType::COMMUNICATOR_TYPE_NONE));
|
||||
|
||||
if (!m_resourceMappingToolWatcher || !m_resourceMappingToolWatcher->IsProcessRunning())
|
||||
{
|
||||
AZStd::string resourceMappingToolLogPath = resourceMappingTool->GetToolLogPath();
|
||||
AZStd::string message = AZStd::string::format(AWSResourceMappingToolLogWarningText, resourceMappingToolLogPath.c_str());
|
||||
QMessageBox::warning(QApplication::activeWindow(), "Warning", message.c_str(), QMessageBox::Ok);
|
||||
}
|
||||
m_resourceMappingToolThread = AZStd::thread(AZStd::bind(&AWSCoreEditorMenu::StartResourceMappingProcess, this));
|
||||
}
|
||||
else
|
||||
{
|
||||
AZ_Warning("AWSCoreEditorMenu", false, "Resource Mapping Tool is already running...");
|
||||
}
|
||||
});
|
||||
this->addAction(resourceMappingAction);
|
||||
this->addAction(resourceMappingTool);
|
||||
this->addSeparator();
|
||||
#endif
|
||||
}
|
||||
|
||||
void AWSCoreEditorMenu::InitializeAWSDocActions()
|
||||
@@ -124,31 +133,6 @@ namespace AWSCore
|
||||
this->addAction(metrics);
|
||||
}
|
||||
|
||||
void AWSCoreEditorMenu::StartResourceMappingProcess()
|
||||
{
|
||||
AZStd::string toolScriptPath = AZStd::string::format("%s/%s", m_engineRootFolder.c_str(), ResourceMappingToolPath);
|
||||
AzFramework::StringFunc::Path::Normalize(toolScriptPath);
|
||||
QProcess resourceMappingToolProcess;
|
||||
resourceMappingToolProcess.setProgram("cmd.exe");
|
||||
resourceMappingToolProcess.setArguments({"/C", toolScriptPath.c_str()});
|
||||
|
||||
resourceMappingToolProcess.start();
|
||||
while (!resourceMappingToolProcess.waitForFinished())
|
||||
{
|
||||
if (resourceMappingToolProcess.state() != QProcess::Running)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (resourceMappingToolProcess.exitCode() != 0)
|
||||
{
|
||||
AZ_Error("AWSCoreEditorMenu", false,
|
||||
"Failed to launch Resource Mapping Tool, please follow README to setup tool before using it.");
|
||||
}
|
||||
AZStd::lock_guard<AZStd::mutex> lockGuard{m_resourceMappingToolMutex};
|
||||
m_resourceMappintToolIsRunning = false;
|
||||
}
|
||||
|
||||
void AWSCoreEditorMenu::SetAWSClientAuthEnabled()
|
||||
{
|
||||
SetAWSFeatureActionsEnabled(AWSClientAuthActionText);
|
||||
|
||||
@@ -0,0 +1,134 @@
|
||||
/*
|
||||
* 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 <AzCore/IO/FileIO.h>
|
||||
#include <AzCore/Utils/Utils.h>
|
||||
#include <AzFramework/StringFunc/StringFunc.h>
|
||||
|
||||
#include <Editor/UI/AWSCoreResourceMappingToolAction.h>
|
||||
|
||||
namespace AWSCore
|
||||
{
|
||||
AWSCoreResourceMappingToolAction::AWSCoreResourceMappingToolAction(const QString& text)
|
||||
: QAction(text)
|
||||
, m_isDebug(false)
|
||||
, m_enginePythonEntryPath("")
|
||||
, m_toolScriptPath("")
|
||||
, m_toolQtBinDirectoryPath("")
|
||||
, m_toolLogPath("")
|
||||
, m_toolReadMePath("")
|
||||
{
|
||||
auto engineRootPath = AZ::IO::FileIOBase::GetInstance()->GetAlias("@engroot@");
|
||||
if (!engineRootPath)
|
||||
{
|
||||
AZ_Error("AWSCoreEditor", false, "Failed to determine engine root path.");
|
||||
}
|
||||
else
|
||||
{
|
||||
m_enginePythonEntryPath = AZStd::string::format("%s/%s", engineRootPath, EngineWindowsPythonEntryScriptPath);
|
||||
AzFramework::StringFunc::Path::Normalize(m_enginePythonEntryPath);
|
||||
if (!AZ::IO::SystemFile::Exists(m_enginePythonEntryPath.c_str()))
|
||||
{
|
||||
AZ_Error("AWSCoreEditor", false, "Failed to find engine python entry at %s.", m_enginePythonEntryPath.c_str());
|
||||
m_enginePythonEntryPath.clear();
|
||||
}
|
||||
|
||||
m_toolScriptPath = AZStd::string::format("%s/%s/resource_mapping_tool.py", engineRootPath, ResourceMappingToolDirectoryPath);
|
||||
AzFramework::StringFunc::Path::Normalize(m_toolScriptPath);
|
||||
if (!AZ::IO::SystemFile::Exists(m_toolScriptPath.c_str()))
|
||||
{
|
||||
AZ_Error("AWSCoreEditor", false, "Failed to find ResourceMappingTool python script at %s.", m_toolScriptPath.c_str());
|
||||
m_toolScriptPath.clear();
|
||||
}
|
||||
|
||||
m_toolLogPath = AZStd::string::format("%s/%s/resource_mapping_tool.log", engineRootPath, ResourceMappingToolDirectoryPath);
|
||||
AzFramework::StringFunc::Path::Normalize(m_toolLogPath);
|
||||
if (!AZ::IO::SystemFile::Exists(m_toolLogPath.c_str()))
|
||||
{
|
||||
AZ_Error("AWSCoreEditor", false, "Failed to find ResourceMappingTool log file at %s.", m_toolLogPath.c_str());
|
||||
m_toolLogPath.clear();
|
||||
}
|
||||
|
||||
m_toolReadMePath = AZStd::string::format("%s/%s/README.md", engineRootPath, ResourceMappingToolDirectoryPath);
|
||||
AzFramework::StringFunc::Path::Normalize(m_toolReadMePath);
|
||||
if (!AZ::IO::SystemFile::Exists(m_toolReadMePath.c_str()))
|
||||
{
|
||||
AZ_Error("AWSCoreEditor", false, "Failed to find ResourceMappingTool README file at %s.", m_toolReadMePath.c_str());
|
||||
m_toolReadMePath.clear();
|
||||
}
|
||||
|
||||
char executablePath[AZ_MAX_PATH_LEN];
|
||||
auto result = AZ::Utils::GetExecutablePath(executablePath, AZ_MAX_PATH_LEN);
|
||||
if (result.m_pathStored != AZ::Utils::ExecutablePathResult::Success)
|
||||
{
|
||||
AZ_Error("AWSCoreEditor", false, "Failed to find engine executable path.");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (result.m_pathIncludesFilename)
|
||||
{
|
||||
// Remove the file name if it exists, and keep the parent folder only
|
||||
char* lastSeparatorAddress = strrchr(executablePath, AZ_CORRECT_FILESYSTEM_SEPARATOR);
|
||||
if (lastSeparatorAddress)
|
||||
{
|
||||
*lastSeparatorAddress = '\0';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
AZStd::string binDirectoryPath(executablePath);
|
||||
auto lastSeparator = binDirectoryPath.find_last_of(AZ_CORRECT_FILESYSTEM_SEPARATOR);
|
||||
if (lastSeparator != AZStd::string::npos)
|
||||
{
|
||||
m_isDebug = binDirectoryPath.substr(lastSeparator).contains("debug");
|
||||
}
|
||||
|
||||
m_toolQtBinDirectoryPath = AZStd::string::format("%s/%s", binDirectoryPath.c_str(), "AWSCoreEditorQtBin");
|
||||
AzFramework::StringFunc::Path::Normalize(m_toolQtBinDirectoryPath);
|
||||
if (!AZ::IO::SystemFile::Exists(m_toolQtBinDirectoryPath.c_str()))
|
||||
{
|
||||
AZ_Error("AWSCoreEditor", false, "Failed to find ResourceMappingTool Qt binaries at %s.", m_toolQtBinDirectoryPath.c_str());
|
||||
m_toolQtBinDirectoryPath.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
AZStd::string AWSCoreResourceMappingToolAction::GetToolLaunchCommand() const
|
||||
{
|
||||
if (m_enginePythonEntryPath.empty() || m_toolScriptPath.empty() || m_toolQtBinDirectoryPath.empty())
|
||||
{
|
||||
return "";
|
||||
}
|
||||
if (m_isDebug)
|
||||
{
|
||||
return AZStd::string::format(
|
||||
"%s debug %s --binaries_path %s --debug",
|
||||
m_enginePythonEntryPath.c_str(), m_toolScriptPath.c_str(), m_toolQtBinDirectoryPath.c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
return AZStd::string::format(
|
||||
"%s %s --binaries_path %s",
|
||||
m_enginePythonEntryPath.c_str(), m_toolScriptPath.c_str(), m_toolQtBinDirectoryPath.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
AZStd::string AWSCoreResourceMappingToolAction::GetToolLogPath() const
|
||||
{
|
||||
return m_toolLogPath;
|
||||
}
|
||||
|
||||
AZStd::string AWSCoreResourceMappingToolAction::GetToolReadMePath() const
|
||||
{
|
||||
return m_toolReadMePath;
|
||||
}
|
||||
} // namespace AWSCore
|
||||
@@ -36,7 +36,6 @@ class AWSCoreEditorSystemComponentTest
|
||||
AWSCoreEditorUIFixture::SetUp();
|
||||
AWSCoreFixture::SetUp();
|
||||
|
||||
m_localFileIO->SetAlias("@engroot@", "dummy engine root");
|
||||
m_serializeContext = AZStd::make_unique<AZ::SerializeContext>();
|
||||
m_serializeContext->CreateEditContext();
|
||||
m_behaviorContext = AZStd::make_unique<AZ::BehaviorContext>();
|
||||
@@ -46,7 +45,9 @@ class AWSCoreEditorSystemComponentTest
|
||||
|
||||
m_entity = aznew AZ::Entity();
|
||||
m_coreEditorSystemsComponent.reset(m_entity->CreateComponent<AWSCoreEditorSystemComponent>());
|
||||
AZ_TEST_START_TRACE_SUPPRESSION;
|
||||
m_entity->Init();
|
||||
AZ_TEST_STOP_TRACE_SUPPRESSION(1); // expect the above have thrown an AZ_Error
|
||||
m_entity->Activate();
|
||||
}
|
||||
|
||||
|
||||
@@ -27,8 +27,6 @@ class AWSCoreEditorManagerTest
|
||||
{
|
||||
AWSCoreEditorUIFixture::SetUp();
|
||||
AWSCoreFixture::SetUp();
|
||||
|
||||
m_localFileIO->SetAlias("@engroot@", "dummy engine root");
|
||||
}
|
||||
|
||||
void TearDown() override
|
||||
@@ -40,6 +38,8 @@ class AWSCoreEditorManagerTest
|
||||
|
||||
TEST_F(AWSCoreEditorManagerTest, AWSCoreEditorManager_Constructor_HaveExpectedUIResourcesCreated)
|
||||
{
|
||||
AZ_TEST_START_TRACE_SUPPRESSION;
|
||||
AWSCoreEditorManager testManager;
|
||||
AZ_TEST_STOP_TRACE_SUPPRESSION(1); // expect the above have thrown an AZ_Error
|
||||
EXPECT_TRUE(testManager.GetAWSCoreEditorMenu());
|
||||
}
|
||||
|
||||
@@ -35,8 +35,6 @@ class AWSCoreEditorMenuTest
|
||||
{
|
||||
AWSCoreEditorUIFixture::SetUp();
|
||||
AWSCoreFixture::SetUp();
|
||||
|
||||
m_localFileIO->SetAlias("@engroot@", "dummy engine root");
|
||||
}
|
||||
|
||||
void TearDown() override
|
||||
@@ -48,7 +46,6 @@ class AWSCoreEditorMenuTest
|
||||
|
||||
TEST_F(AWSCoreEditorMenuTest, AWSCoreEditorMenu_NoEngineRootFolder_ExpectOneError)
|
||||
{
|
||||
m_localFileIO->ClearAlias("@engroot@");
|
||||
AZ_TEST_START_TRACE_SUPPRESSION;
|
||||
AWSCoreEditorMenu testMenu("dummy title");
|
||||
AZ_TEST_STOP_TRACE_SUPPRESSION(1); // expect the above have thrown an AZ_Error
|
||||
@@ -56,7 +53,9 @@ TEST_F(AWSCoreEditorMenuTest, AWSCoreEditorMenu_NoEngineRootFolder_ExpectOneErro
|
||||
|
||||
TEST_F(AWSCoreEditorMenuTest, AWSCoreEditorMenu_GetAllActions_GetExpectedNumberOfActions)
|
||||
{
|
||||
AZ_TEST_START_TRACE_SUPPRESSION;
|
||||
AWSCoreEditorMenu testMenu("dummy title");
|
||||
AZ_TEST_STOP_TRACE_SUPPRESSION(1); // expect the above have thrown an AZ_Error
|
||||
|
||||
QList<QAction*> actualActions = testMenu.actions();
|
||||
#ifdef AWSCORE_EDITOR_RESOURCE_MAPPING_TOOL_ENABLED
|
||||
@@ -68,7 +67,9 @@ TEST_F(AWSCoreEditorMenuTest, AWSCoreEditorMenu_GetAllActions_GetExpectedNumberO
|
||||
|
||||
TEST_F(AWSCoreEditorMenuTest, AWSCoreEditorMenu_BroadcastFeatureGemsAreEnabled_CorrespondingActionsAreEnabled)
|
||||
{
|
||||
AZ_TEST_START_TRACE_SUPPRESSION;
|
||||
AWSCoreEditorMenu testMenu("dummy title");
|
||||
AZ_TEST_STOP_TRACE_SUPPRESSION(1); // expect the above have thrown an AZ_Error
|
||||
|
||||
AWSCoreEditorRequestBus::Broadcast(&AWSCoreEditorRequests::SetAWSClientAuthEnabled);
|
||||
AWSCoreEditorRequestBus::Broadcast(&AWSCoreEditorRequests::SetAWSMetricsEnabled);
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
* 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 <AzTest/AzTest.h>
|
||||
|
||||
#include <Editor/UI/AWSCoreResourceMappingToolAction.h>
|
||||
#include <Editor/UI/AWSCoreEditorUIFixture.h>
|
||||
#include <TestFramework/AWSCoreFixture.h>
|
||||
|
||||
#include <QAction>
|
||||
|
||||
using namespace AWSCore;
|
||||
|
||||
class AWSCoreResourceMappingToolActionTest
|
||||
: public AWSCoreFixture
|
||||
, public AWSCoreEditorUIFixture
|
||||
{
|
||||
void SetUp() override
|
||||
{
|
||||
AWSCoreEditorUIFixture::SetUp();
|
||||
AWSCoreFixture::SetUp();
|
||||
m_localFileIO->SetAlias("@engroot@", "dummy engine root");
|
||||
}
|
||||
|
||||
void TearDown() override
|
||||
{
|
||||
AWSCoreFixture::TearDown();
|
||||
AWSCoreEditorUIFixture::TearDown();
|
||||
}
|
||||
};
|
||||
|
||||
TEST_F(AWSCoreResourceMappingToolActionTest, AWSCoreResourceMappingToolAction_NoEngineRootFolder_ExpectOneError)
|
||||
{
|
||||
m_localFileIO->ClearAlias("@engroot@");
|
||||
AZ_TEST_START_TRACE_SUPPRESSION;
|
||||
AWSCoreResourceMappingToolAction testAction("dummy title");
|
||||
AZ_TEST_STOP_TRACE_SUPPRESSION(1); // expect the above have thrown an AZ_Error
|
||||
}
|
||||
|
||||
TEST_F(AWSCoreResourceMappingToolActionTest, AWSCoreResourceMappingToolAction_UnableToFindExpectedFileOrFolder_ExpectFiveErrorsAndEmptyResult)
|
||||
{
|
||||
AZ_TEST_START_TRACE_SUPPRESSION;
|
||||
AWSCoreResourceMappingToolAction testAction("dummy title");
|
||||
AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT;
|
||||
EXPECT_TRUE(testAction.GetToolLaunchCommand() == "");
|
||||
EXPECT_TRUE(testAction.GetToolLogPath() == "");
|
||||
EXPECT_TRUE(testAction.GetToolReadMePath() == "");
|
||||
}
|
||||
@@ -3,45 +3,44 @@
|
||||
|
||||
## Setup aws config and credential
|
||||
Resource mapping tool is using boto3 to interact with aws services:
|
||||
* Follow boto3
|
||||
* Read boto3
|
||||
[Configuration](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html) to setup default aws region.
|
||||
* Follow boto3
|
||||
* Read boto3
|
||||
[Credentials](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html) to setup default profile or credential keys.
|
||||
|
||||
Or follow **AWS CLI** configuration which can be reused by boto3 lib:
|
||||
* Follow
|
||||
[Quick configuration with aws configure](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config)
|
||||
|
||||
**In Progress** - Override default aws profile in resource mapping tool
|
||||
|
||||
## Python Environment Setup Options
|
||||
### 1. Engine python environment
|
||||
In order to use engine python environment, it requires to link Qt binaries for this tool.
|
||||
### 1. Engine python environment (Including Editor)
|
||||
1. In order to use engine python environment, it requires to link Qt binaries for this tool.
|
||||
Follow cmake instructions to configure your project, for example:
|
||||
```
|
||||
$ cmake -B <BUILD_FOLDER> -S . -G "Visual Studio 16 2019" -DLY_3RDPARTY_PATH=<PATH_TO_3RDPARTY> -DLY_PROJECTS=<PROJECT_NAME>
|
||||
```
|
||||
|
||||
```
|
||||
$ cmake -B <BUILD_FOLDER> -S . -G "Visual Studio 16 2019" -DLY_3RDPARTY_PATH=<PATH_TO_3RDPARTY> -DLY_PROJECTS=<PROJECT_NAME>
|
||||
```
|
||||
2. At this point, double check engine python environment gets setup under *<ENGINE_ROOT_PATH>/python/runtime* directory
|
||||
|
||||
Build project with **AWSCore.Editor** target to generate required Qt binaries.
|
||||
(Or use **Editor** target)
|
||||
3. Build project with **AWSCore.Editor** (or **AWSCore.ResourceMappintTool**, or **Editor**) target to generate required Qt binaries.
|
||||
```
|
||||
$ cmake --build <BUILD_FOLDER> --target AWSCore.Editor --config <CONFIG> -j <NUM_JOBS>
|
||||
```
|
||||
|
||||
```
|
||||
$ cmake --build <BUILD_FOLDER> --target AWSCore.Editor --config <CONFIG> -j <NUM_JOBS>
|
||||
```
|
||||
|
||||
Launch resource mapping tool under engine root folder:
|
||||
|
||||
#### Windows
|
||||
##### release mode
|
||||
```
|
||||
$ python\python.cmd Gems\AWSCore\Code\Tools\ResourceMappingTool\resource_mapping_tool.py --binaries_path <PATH_TO_BUILD_FOLDER>\bin\profile\AWSCoreEditorPlugins
|
||||
```
|
||||
##### debug mode
|
||||
```
|
||||
$ python\python.cmd debug Gems\AWSCore\Code\Tools\ResourceMappingTool\resource_mapping_tool.py --binaries_path <PATH_TO_BUILD_FOLDER>\bin\debug\AWSCoreEditorPlugins
|
||||
```
|
||||
4. At this point, double check Qt binaries gets generated under *<BUILD_FOLDER>/bin/<CONFIG_FOLDER>/AWSCoreEditorQtBin* directory
|
||||
|
||||
5. Launch resource mapping tool under engine root folder:
|
||||
* Windows
|
||||
* release mode
|
||||
```
|
||||
$ python\python.cmd Gems\AWSCore\Code\Tools\ResourceMappingTool\resource_mapping_tool.py --binaries_path <PATH_TO_BUILD_FOLDER>\bin\profile\AWSCoreEditorQtBin
|
||||
```
|
||||
* debug mode
|
||||
```
|
||||
$ python\python.cmd debug Gems\AWSCore\Code\Tools\ResourceMappingTool\resource_mapping_tool.py --binaries_path <PATH_TO_BUILD_FOLDER>\bin\debug\AWSCoreEditorQtBin
|
||||
```
|
||||
* Note - Editor is integrated with the same engine python environment to launch Resource Mapping Tool. If it is failed to launch the tool
|
||||
in Editor, please follow above steps to make sure expected scripts/binaries are present.
|
||||
|
||||
### 2. Python virtual environment
|
||||
This project is set up like a standard Python project. The initialization
|
||||
@@ -51,47 +50,42 @@ directory. To create the virtualenv it assumes that there is a `python3`
|
||||
package. If for any reason the automatic creation of the virtualenv fails,
|
||||
you can create the virtualenv manually.
|
||||
|
||||
To manually create a virtualenv on MacOS and Linux:
|
||||
1. To manually create a virtualenv:
|
||||
* Windows
|
||||
```
|
||||
$ python -m venv .env
|
||||
```
|
||||
* Mac or Linux
|
||||
```
|
||||
$ python3 -m venv .env
|
||||
```
|
||||
|
||||
```
|
||||
$ python -m venv .env
|
||||
```
|
||||
2. Once the virtualenv is created, you can use the following step to activate your virtualenv:
|
||||
* Windows
|
||||
```
|
||||
% .env\Scripts\activate.bat
|
||||
```
|
||||
* Mac or Linux
|
||||
```
|
||||
$ source .env/bin/activate
|
||||
```
|
||||
|
||||
Once the virtualenv is created, you can use the following step to activate your virtualenv.
|
||||
3. Once the virtualenv is activated, you can install the required dependencies:
|
||||
* Windows
|
||||
```
|
||||
$ pip install -r requirements.txt
|
||||
```
|
||||
* Mac or Linux
|
||||
```
|
||||
$ pip3 install -r requirements.txt
|
||||
```
|
||||
|
||||
```
|
||||
$ source .env/bin/activate
|
||||
```
|
||||
|
||||
If you are a Windows platform, you would activate the virtualenv like this:
|
||||
|
||||
```
|
||||
% .env\Scripts\activate.bat
|
||||
```
|
||||
|
||||
Once the virtualenv is activated, you can install the required dependencies.
|
||||
|
||||
```
|
||||
$ pip install -r requirements.txt
|
||||
```
|
||||
|
||||
#### 2.1 Launch Options
|
||||
##### 2.1.1 Launch Resource Mapping Tool from python directly
|
||||
At this point you can launch tool like other standard python project.
|
||||
|
||||
```
|
||||
$ python resource_mapping_tool.py
|
||||
```
|
||||
|
||||
##### 2.1.2 Launch Resource Mapping Tool from batch script/Editor
|
||||
Update `resource_mapping_tool.cmd` with your virtualenv full path.
|
||||
|
||||
* **VIRTUALENV_PATH**: Fill this variable with your virtualenv full path.
|
||||
|
||||
Then you can launch the resource mapping tool by running the batch script directly.
|
||||
|
||||
```
|
||||
$ resource_mapping_tool.cmd
|
||||
```
|
||||
|
||||
Or you can launch the resource mapping tool from menu action Cloud services/AWS Resource Mapping Tool...
|
||||
4. At this point you can launch tool like other standard python project.
|
||||
* Windows
|
||||
```
|
||||
$ python resource_mapping_tool.py
|
||||
```
|
||||
* Mac or Linux
|
||||
```
|
||||
$ python3 resource_mapping_tool.py
|
||||
```
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
@ECHO OFF
|
||||
REM
|
||||
REM All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
REM its licensors.
|
||||
REM
|
||||
REM For complete copyright and license terms please see the LICENSE at the root of this
|
||||
REM distribution (the "License"). All use of this software is governed by the License,
|
||||
REM or, if provided, by the license below or the license accompanying this file. Do not
|
||||
REM remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
REM
|
||||
REM Original file Copyright Crytek GMBH or its affiliates, used under license.
|
||||
REM
|
||||
|
||||
SETLOCAL
|
||||
SET CMD_DIR=%~dp0
|
||||
SET CMD_DIR=%CMD_DIR:~0,-1%
|
||||
|
||||
SET VIRTUALENV_PATH=
|
||||
SET RESOURCE_MAPPING_DIR=%CMD_DIR%
|
||||
SET LOCAL_PYTHONPATH=%VIRTUALENV_PATH%\Scripts\python.exe
|
||||
|
||||
%LOCAL_PYTHONPATH% %RESOURCE_MAPPING_DIR%\resource_mapping_tool.py %* && exit 0
|
||||
exit 1
|
||||
@@ -19,7 +19,7 @@ from utils import file_utils
|
||||
# arguments setup
|
||||
argument_parser: ArgumentParser = ArgumentParser()
|
||||
argument_parser.add_argument('--binaries_path', help='Path to QT Binaries necessary for PySide.')
|
||||
argument_parser.add_argument('--debug', action='store_true', help='Execute on debug mode.')
|
||||
argument_parser.add_argument('--debug', action='store_true', help='Execute on debug mode to enable DEBUG logging level')
|
||||
arguments: Namespace = argument_parser.parse_args()
|
||||
|
||||
# logging setup
|
||||
|
||||
@@ -13,7 +13,9 @@ set(FILES
|
||||
Include/Private/AWSCoreEditorSystemComponent.h
|
||||
Include/Private/Editor/AWSCoreEditorManager.h
|
||||
Include/Private/Editor/UI/AWSCoreEditorMenu.h
|
||||
Include/Private/Editor/UI/AWSCoreResourceMappingToolAction.h
|
||||
Source/AWSCoreEditorSystemComponent.cpp
|
||||
Source/Editor/AWSCoreEditorManager.cpp
|
||||
Source/Editor/UI/AWSCoreEditorMenu.cpp
|
||||
Source/Editor/UI/AWSCoreResourceMappingToolAction.cpp
|
||||
)
|
||||
|
||||
@@ -13,6 +13,7 @@ set(FILES
|
||||
Tests/AWSCoreEditorSystemComponentTest.cpp
|
||||
Tests/Editor/UI/AWSCoreEditorMenuTest.cpp
|
||||
Tests/Editor/UI/AWSCoreEditorUIFixture.h
|
||||
Tests/Editor/UI/AWSCoreResourceMappingToolActionTest.cpp
|
||||
Tests/Editor/AWSCoreEditorManagerTest.cpp
|
||||
Tests/Editor/AWSCoreEditorTest.cpp
|
||||
)
|
||||
|
||||
+2
-1
@@ -10,5 +10,6 @@
|
||||
#
|
||||
|
||||
set(FILES
|
||||
Source/ScriptCanvasDiagnosticLibraryGem.cpp
|
||||
Include/Private/Editor/UI/AWSCoreResourceMappingToolAction.h
|
||||
Source/Editor/UI/AWSCoreResourceMappingToolAction.cpp
|
||||
)
|
||||
@@ -188,26 +188,6 @@ namespace ImageProcessingAtom
|
||||
// the request will contain the CreateJobResponse you constructed earlier, including any keys and values you placed into the hash table
|
||||
void ImageBuilderWorker::ProcessJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response)
|
||||
{
|
||||
// Exclude the "Engine/EngineAssets/Textures/rotrandom.dds" which is not a legit dds file but required by Cry3dEngine.
|
||||
// [GFX TODO] Remove this block of code when removing Cry3dEngine and its engine assets entirely.
|
||||
AZStd::string assetFileName;
|
||||
AzFramework::StringFunc::Path::GetFullFileName(request.m_sourceFile.data(), assetFileName);
|
||||
if (azstricmp(assetFileName.data(), "rotrandom.dds") == 0)
|
||||
{
|
||||
AZStd::string assetPath = request.m_fullPath;
|
||||
AzFramework::ApplicationRequests::Bus::Broadcast(&AzFramework::ApplicationRequests::MakePathRootRelative, assetPath);
|
||||
// The MakePathRootRelative only normalize but not convert the path to lower case, we need to call NormalizePath to convert it to lower case
|
||||
AzFramework::ApplicationRequests::Bus::Broadcast(&AzFramework::ApplicationRequests::NormalizePath, assetPath);
|
||||
AZStd::string excludePath = "Engine/EngineAssets/Textures/rotrandom.dds";
|
||||
AzFramework::ApplicationRequests::Bus::Broadcast(&AzFramework::ApplicationRequests::NormalizePath, excludePath);
|
||||
|
||||
if (assetPath == excludePath)
|
||||
{
|
||||
response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Before we begin, let's make sure we are not meant to abort.
|
||||
AssetBuilderSDK::JobCancelListener jobCancelListener(request.m_jobId);
|
||||
|
||||
|
||||
@@ -22,13 +22,13 @@ namespace ImageProcessingAtom
|
||||
{
|
||||
namespace Thumbnails
|
||||
{
|
||||
const int ImageThumbnailSize = 200;
|
||||
static constexpr const int ImageThumbnailSize = 256;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// ImageThumbnail
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
ImageThumbnail::ImageThumbnail(AzToolsFramework::Thumbnailer::SharedThumbnailKey key, int thumbnailSize)
|
||||
: Thumbnail(key, thumbnailSize)
|
||||
ImageThumbnail::ImageThumbnail(AzToolsFramework::Thumbnailer::SharedThumbnailKey key)
|
||||
: Thumbnail(key)
|
||||
{
|
||||
auto sourceKey = azrtti_cast<const AzToolsFramework::AssetBrowser::SourceThumbnailKey*>(key.data());
|
||||
if (sourceKey)
|
||||
@@ -66,7 +66,7 @@ namespace ImageProcessingAtom
|
||||
AzToolsFramework::Thumbnailer::ThumbnailerRendererRequestBus::QueueEvent(
|
||||
AZ::RPI::StreamingImageAsset::RTTI_Type(), &AzToolsFramework::Thumbnailer::ThumbnailerRendererRequests::RenderThumbnail,
|
||||
m_key,
|
||||
m_thumbnailSize);
|
||||
ImageThumbnailSize);
|
||||
// wait for response from thumbnail renderer
|
||||
m_renderWait.acquire();
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace ImageProcessingAtom
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
ImageThumbnail(AzToolsFramework::Thumbnailer::SharedThumbnailKey key, int thumbnailSize);
|
||||
ImageThumbnail(AzToolsFramework::Thumbnailer::SharedThumbnailKey key);
|
||||
~ImageThumbnail() override;
|
||||
|
||||
//! AzToolsFramework::ThumbnailerRendererNotificationBus::Handler overrides...
|
||||
|
||||
@@ -19,3 +19,7 @@
|
||||
#define AZ_TRAIT_ASTC_COMPRESSION 1
|
||||
|
||||
static const float4 s_AzslDebugColor = float4(165.0 / 255.0, 30.0 / 255.0, 36.0 / 255.0, 1);
|
||||
|
||||
// Uniform limitation need to be taken into consideration for mobile devices
|
||||
// [ATOM-14949]
|
||||
#define AZ_TRAIT_CONSTANT_BUFFER_LIMITATIONS 1
|
||||
@@ -25,6 +25,7 @@
|
||||
#include <AzCore/std/smart_ptr/unique_ptr.h>
|
||||
#include <AzCore/Casting/numeric_cast.h>
|
||||
#include <AzCore/IO/SystemFile.h>
|
||||
#include <AzCore/Utils/Utils.h>
|
||||
|
||||
#include <AzFramework/StringFunc/StringFunc.h>
|
||||
#include <AzFramework/API/ApplicationAPI.h>
|
||||
@@ -299,6 +300,9 @@ namespace AZ
|
||||
|
||||
// we transfer to a set, to order the folders, uniquify them, and ensure deterministic build behavior
|
||||
AZStd::set<AZStd::string> scanFoldersSet;
|
||||
// Add the project path to list of include paths
|
||||
AZ::IO::FixedMaxPathString projectPath = AZ::Utils::GetProjectPath();
|
||||
scanFoldersSet.emplace(projectPath.c_str(), projectPath.size());
|
||||
// but while we transfer to the set, we're going to keep only folders where +/ShaderLib exists
|
||||
for (AZStd::string folder : scanFoldersVector)
|
||||
{
|
||||
@@ -310,14 +314,12 @@ namespace AZ
|
||||
} // the folders constructed this fashion constitute the base of automatic include search paths
|
||||
|
||||
// get the engine root:
|
||||
AZStd::string engineRoot;
|
||||
AzFramework::ApplicationRequests::Bus::BroadcastResult(engineRoot, &AzFramework::ApplicationRequests::GetEngineRoot);
|
||||
AzFramework::StringFunc::Path::Normalize(engineRoot);
|
||||
AZ::IO::FixedMaxPath engineRoot = AZ::Utils::GetEnginePath();
|
||||
|
||||
// add optional additional options
|
||||
for (AZStd::string& path : options.m_projectIncludePaths)
|
||||
{
|
||||
AzFramework::StringFunc::Path::Join(engineRoot.c_str(), path.c_str(), path);
|
||||
path = (engineRoot / path).String();
|
||||
DeleteFromSet(path, scanFoldersSet); // no need to add a path two times.
|
||||
}
|
||||
// back-insert the default paths (after the config-read paths we just read)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
#include <AzCore/EBus/EBus.h>
|
||||
|
||||
#include <AzFramework/Scene/SceneSystemBus.h>
|
||||
#include <AzFramework/Scene/SceneSystemInterface.h>
|
||||
#include <Atom/RPI.Public/Scene.h>
|
||||
namespace AZ
|
||||
{
|
||||
@@ -43,15 +43,15 @@ namespace AZ
|
||||
EBusConnectionPolicy<Bus>::Connect(busPtr, context, handler, connectLock, id);
|
||||
|
||||
// Check if bootstrap scene already exists and fire notifications if it does
|
||||
AZStd::vector<AzFramework::Scene*> scenes;
|
||||
AzFramework::SceneSystemRequestBus::BroadcastResult(scenes, &AzFramework::SceneSystemRequests::GetAllScenes);
|
||||
AZ_Assert(scenes.size() > 0, "AzFramework didn't set up any scenes.");
|
||||
auto sceneSystem = AzFramework::SceneSystemInterface::Get();
|
||||
AZ_Assert(sceneSystem, "Notification bus called before the scene system has been initialized.");
|
||||
AZStd::shared_ptr<AzFramework::Scene> mainScene = sceneSystem->GetScene(AzFramework::Scene::MainSceneName);
|
||||
AZ_Assert(mainScene, "AzFramework didn't set up any scenes.");
|
||||
|
||||
// Assume first scene is the default scene
|
||||
AZ::RPI::Scene* defaultScene = scenes.at(0)->GetSubsystem<AZ::RPI::Scene>();
|
||||
if (defaultScene && defaultScene->GetDefaultRenderPipeline())
|
||||
AZ::RPI::ScenePtr* defaultScene = mainScene->FindSubsystem<AZ::RPI::ScenePtr>();
|
||||
if (defaultScene && *defaultScene && (*defaultScene)->GetDefaultRenderPipeline())
|
||||
{
|
||||
handler->OnBootstrapSceneReady(defaultScene);
|
||||
handler->OnBootstrapSceneReady(defaultScene->get());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
#include <AzCore/EBus/EBus.h>
|
||||
|
||||
#include <AzFramework/Scene/SceneSystemBus.h>
|
||||
#include <AzFramework/Scene/SceneSystemInterface.h>
|
||||
#include <Atom/RPI.Public/Scene.h>
|
||||
|
||||
namespace AZ::Render::Bootstrap
|
||||
|
||||
@@ -269,7 +269,7 @@ namespace AZ
|
||||
|
||||
// Register scene to RPI system so it will be processed/rendered per tick
|
||||
RPI::RPISystemInterface::Get()->RegisterScene(atomScene);
|
||||
scene->SetSubsystem(atomScene.get());
|
||||
scene->SetSubsystem(atomScene);
|
||||
|
||||
atomSceneHandle = atomScene;
|
||||
|
||||
@@ -279,11 +279,19 @@ namespace AZ
|
||||
void BootstrapSystemComponent::CreateDefaultScene()
|
||||
{
|
||||
// Bind atomScene to the GameEntityContext's AzFramework::Scene
|
||||
AZStd::vector<AzFramework::Scene*> scenes;
|
||||
AzFramework::SceneSystemRequestBus::BroadcastResult(scenes, &AzFramework::SceneSystemRequests::GetAllScenes);
|
||||
AZ_Assert(scenes.size() > 0, "Error: Scenes missing during system component initialization"); // This should never happen unless scene creation has changed.
|
||||
m_defaultFrameworkScene = scenes[0];
|
||||
m_defaultScene = GetOrCreateAtomSceneFromAzScene(m_defaultFrameworkScene);
|
||||
m_defaultFrameworkScene = AzFramework::SceneSystemInterface::Get()->GetScene(AzFramework::Scene::MainSceneName);
|
||||
// This should never happen unless scene creation has changed.
|
||||
AZ_Assert(m_defaultFrameworkScene, "Error: Scenes missing during system component initialization");
|
||||
m_sceneRemovalHandler = AzFramework::Scene::RemovalEvent::Handler(
|
||||
[this](AzFramework::Scene&, AzFramework::Scene::RemovalEventType eventType)
|
||||
{
|
||||
if (eventType == AzFramework::Scene::RemovalEventType::Zombified)
|
||||
{
|
||||
m_defaultFrameworkScene.reset();
|
||||
}
|
||||
});
|
||||
m_defaultFrameworkScene->ConnectToEvents(m_sceneRemovalHandler);
|
||||
m_defaultScene = GetOrCreateAtomSceneFromAzScene(m_defaultFrameworkScene.get());
|
||||
}
|
||||
|
||||
bool BootstrapSystemComponent::EnsureDefaultRenderPipelineInstalledForScene(AZ::RPI::ScenePtr scene, AZ::RPI::ViewportContextPtr viewportContext)
|
||||
@@ -405,15 +413,6 @@ namespace AZ
|
||||
AzFramework::WindowNotificationBus::Handler::BusDisconnect();
|
||||
}
|
||||
|
||||
void BootstrapSystemComponent::SceneAboutToBeRemoved(AzFramework::Scene& scene)
|
||||
{
|
||||
if (&scene == m_defaultFrameworkScene)
|
||||
{
|
||||
// Set to nullptr so we don't try to unbind the RPI::Scene from it later.
|
||||
m_defaultFrameworkScene = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
AzFramework::NativeWindowHandle BootstrapSystemComponent::GetDefaultWindowHandle()
|
||||
{
|
||||
return m_windowHandle;
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
#include <AzFramework/Asset/AssetCatalogBus.h>
|
||||
#include <AzFramework/Scene/Scene.h>
|
||||
#include <AzFramework/Scene/SceneSystemBus.h>
|
||||
#include <AzFramework/Scene/SceneSystemInterface.h>
|
||||
#include <AzFramework/Windowing/NativeWindow.h>
|
||||
#include <AzFramework/Windowing/WindowBus.h>
|
||||
|
||||
@@ -45,7 +45,6 @@ namespace AZ
|
||||
, public TickBus::Handler
|
||||
, public AzFramework::WindowNotificationBus::Handler
|
||||
, public AzFramework::AssetCatalogEventBus::Handler
|
||||
, private AzFramework::SceneSystemNotificationBus::Handler
|
||||
, public AzFramework::WindowSystemNotificationBus::Handler
|
||||
, public AzFramework::WindowSystemRequestBus::Handler
|
||||
, public Render::Bootstrap::DefaultWindowBus::Handler
|
||||
@@ -90,9 +89,6 @@ namespace AZ
|
||||
// AzFramework::AssetCatalogEventBus::Handler overrides ...
|
||||
void OnCatalogLoaded(const char* catalogFile) override;
|
||||
|
||||
// AzFramework::SceneSystemNotificationBus::Handler overrides ...
|
||||
void SceneAboutToBeRemoved(AzFramework::Scene& scene) override;
|
||||
|
||||
// AzFramework::WindowSystemNotificationBus::Handler overrides ...
|
||||
void OnWindowCreated(AzFramework::NativeWindowHandle windowHandle) override;
|
||||
|
||||
@@ -104,12 +100,14 @@ namespace AZ
|
||||
|
||||
void CreateWindowContext();
|
||||
|
||||
AzFramework::Scene::RemovalEvent::Handler m_sceneRemovalHandler;
|
||||
|
||||
AZStd::unique_ptr<AzFramework::NativeWindow> m_nativeWindow;
|
||||
AzFramework::NativeWindowHandle m_windowHandle = nullptr;
|
||||
RPI::ViewportContextPtr m_viewportContext;
|
||||
|
||||
RPI::ScenePtr m_defaultScene = nullptr;
|
||||
AzFramework::Scene* m_defaultFrameworkScene = nullptr;
|
||||
AZStd::shared_ptr<AzFramework::Scene> m_defaultFrameworkScene = nullptr;
|
||||
|
||||
float m_simulateTime = 0;
|
||||
float m_deltaTime = 0.016f;
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"Type": "JsonSerialization",
|
||||
"Version": 1,
|
||||
"ClassName": "PassAsset",
|
||||
"ClassData": {
|
||||
"PassTemplate": {
|
||||
"Name": "ReflectionScreenSpaceBlurMobilePassTemplate",
|
||||
"PassClass": "ReflectionScreenSpaceBlurPass",
|
||||
"Slots": [
|
||||
{
|
||||
"Name": "PreviousFrameInputOutput",
|
||||
"SlotType": "InputOutput",
|
||||
"ScopeAttachmentUsage": "Shader"
|
||||
}
|
||||
],
|
||||
"ImageAttachments": [
|
||||
{
|
||||
"Name": "PreviousFrameImage",
|
||||
"SizeSource": {
|
||||
"Source": {
|
||||
"Pass": "Parent",
|
||||
"Attachment": "SpecularInput"
|
||||
}
|
||||
},
|
||||
"ImageDescriptor": {
|
||||
"Format": "R8G8B8A8_SINT",
|
||||
"MipLevels": "8",
|
||||
"SharedQueueMask": "Graphics"
|
||||
}
|
||||
}
|
||||
],
|
||||
"Connections": [
|
||||
{
|
||||
"LocalSlot": "PreviousFrameInputOutput",
|
||||
"AttachmentRef": {
|
||||
"Pass": "This",
|
||||
"Attachment": "PreviousFrameImage"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,137 @@
|
||||
{
|
||||
"Type": "JsonSerialization",
|
||||
"Version": 1,
|
||||
"ClassName": "PassAsset",
|
||||
"ClassData": {
|
||||
"PassTemplate": {
|
||||
"Name": "ReflectionScreenSpaceMobilePassTemplate",
|
||||
"PassClass": "ParentPass",
|
||||
"Slots": [
|
||||
{
|
||||
"Name": "NormalInput",
|
||||
"SlotType": "Input",
|
||||
"ScopeAttachmentUsage": "Shader"
|
||||
},
|
||||
{
|
||||
"Name": "SpecularF0Input",
|
||||
"SlotType": "Input",
|
||||
"ScopeAttachmentUsage": "Shader"
|
||||
},
|
||||
{
|
||||
"Name": "SpecularInput",
|
||||
"SlotType": "Input",
|
||||
"ScopeAttachmentUsage": "Shader"
|
||||
},
|
||||
{
|
||||
"Name": "DepthStencilInput",
|
||||
"SlotType": "Input",
|
||||
"ScopeAttachmentUsage": "DepthStencil"
|
||||
},
|
||||
{
|
||||
"Name": "ReflectionInputOutput",
|
||||
"SlotType": "InputOutput",
|
||||
"ScopeAttachmentUsage": "RenderTarget"
|
||||
}
|
||||
],
|
||||
"PassRequests": [
|
||||
{
|
||||
"Name": "ReflectionScreenSpaceBlurMobilePass",
|
||||
"TemplateName": "ReflectionScreenSpaceBlurMobilePassTemplate"
|
||||
},
|
||||
{
|
||||
"Name": "ReflectionScreenSpaceTracePass",
|
||||
"TemplateName": "ReflectionScreenSpaceTracePassTemplate",
|
||||
"Connections": [
|
||||
{
|
||||
"LocalSlot": "DepthStencilTextureInput",
|
||||
"AttachmentRef": {
|
||||
"Pass": "Parent",
|
||||
"Attachment": "DepthStencilInput"
|
||||
}
|
||||
},
|
||||
{
|
||||
"LocalSlot": "NormalInput",
|
||||
"AttachmentRef": {
|
||||
"Pass": "Parent",
|
||||
"Attachment": "NormalInput"
|
||||
}
|
||||
},
|
||||
{
|
||||
"LocalSlot": "DepthStencilInput",
|
||||
"AttachmentRef": {
|
||||
"Pass": "Parent",
|
||||
"Attachment": "DepthStencilInput"
|
||||
|
||||
}
|
||||
},
|
||||
{
|
||||
"LocalSlot": "SpecularF0Input",
|
||||
"AttachmentRef": {
|
||||
"Pass": "Parent",
|
||||
"Attachment": "SpecularF0Input"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Name": "ReflectionScreenSpaceCompositePass",
|
||||
"TemplateName": "ReflectionScreenSpaceCompositePassTemplate",
|
||||
"ExecuteAfter": [
|
||||
"ReflectionScreenSpaceBlurPass"
|
||||
],
|
||||
"Connections": [
|
||||
{
|
||||
"LocalSlot": "TraceInput",
|
||||
"AttachmentRef": {
|
||||
"Pass": "ReflectionScreenSpaceTracePass",
|
||||
"Attachment": "Output"
|
||||
}
|
||||
},
|
||||
{
|
||||
"LocalSlot": "PreviousFrameBufferInput",
|
||||
"AttachmentRef": {
|
||||
"Pass": "ReflectionScreenSpaceBlurPass",
|
||||
"Attachment": "PreviousFrameInputOutput"
|
||||
}
|
||||
},
|
||||
{
|
||||
"LocalSlot": "NormalInput",
|
||||
"AttachmentRef": {
|
||||
"Pass": "Parent",
|
||||
"Attachment": "NormalInput"
|
||||
}
|
||||
},
|
||||
{
|
||||
"LocalSlot": "SpecularF0Input",
|
||||
"AttachmentRef": {
|
||||
"Pass": "Parent",
|
||||
"Attachment": "SpecularF0Input"
|
||||
}
|
||||
},
|
||||
{
|
||||
"LocalSlot": "DepthStencilTextureInput",
|
||||
"AttachmentRef": {
|
||||
"Pass": "Parent",
|
||||
"Attachment": "DepthStencilInput"
|
||||
}
|
||||
},
|
||||
{
|
||||
"LocalSlot": "DepthStencilInput",
|
||||
"AttachmentRef": {
|
||||
"Pass": "Parent",
|
||||
"Attachment": "DepthStencilInput"
|
||||
}
|
||||
},
|
||||
{
|
||||
"LocalSlot": "Output",
|
||||
"AttachmentRef": {
|
||||
"Pass": "Parent",
|
||||
"Attachment": "ReflectionInputOutput"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -247,8 +247,10 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "ReflectionScreenSpacePass",
|
||||
"TemplateName": "ReflectionScreenSpacePassTemplate",
|
||||
// Using cut-down version of screen space reflection for handling the attachment format compatibility issues.
|
||||
// This is used for mobile devices with limited capabilities.
|
||||
"Name": "ReflectionScreenSpaceMobilePass",
|
||||
"TemplateName": "ReflectionScreenSpaceMobilePassTemplate",
|
||||
"Enabled": false,
|
||||
"Connections": [
|
||||
{
|
||||
|
||||
@@ -285,11 +285,6 @@ namespace AZ
|
||||
// This is not 100% correct, but in most cases it will give us the correct result.
|
||||
info.depthClampEnable = rasterState.m_depthClipEnable ? VK_FALSE : VK_TRUE;
|
||||
}
|
||||
else if (!rasterState.m_depthClipEnable)
|
||||
{
|
||||
AZ_Error("Vulkan", false, "Depth clipping is being used but it's not supported on this device");
|
||||
return RHI::ResultCode::InvalidArgument;
|
||||
}
|
||||
|
||||
switch (rasterState.m_fillMode)
|
||||
{
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
#include <AzCore/Script/ScriptTimePoint.h>
|
||||
|
||||
#include <AzFramework/Scene/Scene.h>
|
||||
#include <AzFramework/Scene/SceneSystemBus.h>
|
||||
#include <AzFramework/Scene/SceneSystemInterface.h>
|
||||
|
||||
namespace AZ
|
||||
{
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
#include <AzCore/Jobs/JobFunction.h>
|
||||
#include <AzCore/Jobs/JobEmpty.h>
|
||||
|
||||
#include <AzFramework/Entity/EntityContext.h>
|
||||
|
||||
namespace AZ
|
||||
{
|
||||
namespace RPI
|
||||
@@ -71,12 +73,15 @@ namespace AZ
|
||||
Scene* Scene::GetSceneForEntityContextId(AzFramework::EntityContextId entityContextId)
|
||||
{
|
||||
// Find the scene for this entity context.
|
||||
AzFramework::Scene* scene = nullptr;
|
||||
AzFramework::SceneSystemRequestBus::BroadcastResult(scene, &AzFramework::SceneSystemRequestBus::Events::GetSceneFromEntityContextId, entityContextId);
|
||||
AZStd::shared_ptr<AzFramework::Scene> scene = AzFramework::EntityContext::FindContainingScene(entityContextId);
|
||||
if (scene)
|
||||
{
|
||||
// Get the RPI::Scene subsystem from the AZFramework Scene.
|
||||
return scene->GetSubsystem<RPI::Scene>();
|
||||
RPI::ScenePtr* scenePtr = scene->FindSubsystem<RPI::ScenePtr>();
|
||||
if (scenePtr)
|
||||
{
|
||||
return scenePtr->get();
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ namespace AZ
|
||||
nativeWindow,
|
||||
&AzFramework::WindowRequestBus::Events::GetClientAreaSize);
|
||||
AzFramework::WindowNotificationBus::Handler::BusConnect(nativeWindow);
|
||||
AzFramework::ViewportRequestBus::Handler::BusConnect(id);
|
||||
|
||||
m_onProjectionMatrixChangedHandler = ViewportContext::MatrixChangedEvent::Handler([this](const AZ::Matrix4x4& matrix)
|
||||
{
|
||||
@@ -48,6 +49,9 @@ namespace AZ
|
||||
|
||||
ViewportContext::~ViewportContext()
|
||||
{
|
||||
AzFramework::WindowNotificationBus::Handler::BusDisconnect();
|
||||
AzFramework::ViewportRequestBus::Handler::BusDisconnect();
|
||||
|
||||
if (m_currentPipeline)
|
||||
{
|
||||
m_currentPipeline->RemoveFromRenderTick();
|
||||
|
||||
+1
@@ -63,6 +63,7 @@ namespace AtomToolsFramework
|
||||
AZStd::vector<AZStd::string> m_vectorLabels;
|
||||
bool m_visible = true;
|
||||
bool m_readOnly = false;
|
||||
bool m_showThumbnail = false;
|
||||
};
|
||||
|
||||
//! Wraps an AZStd::any value and configuration so that it can be displayed and edited in a ReflectedPropertyEditor.
|
||||
|
||||
+1
-1
@@ -82,7 +82,7 @@ namespace AtomToolsFramework
|
||||
AZ::RPI::ConstViewportContextPtr GetViewportContext() const;
|
||||
//! Creates an AZ::RPI::ScenePtr for the given scene and assigns it to the current ViewportContext.
|
||||
//! If useDefaultRenderPipeline is specified, this will initialize the scene with a rendering pipeline.
|
||||
void SetScene(AzFramework::Scene* scene, bool useDefaultRenderPipeline = true);
|
||||
void SetScene(const AZStd::shared_ptr<AzFramework::Scene>& scene, bool useDefaultRenderPipeline = true);
|
||||
//! Gets the default camera that's been automatically registered to our ViewportContext.
|
||||
AZ::RPI::ViewPtr GetDefaultCamera();
|
||||
AZ::RPI::ConstViewPtr GetDefaultCamera() const;
|
||||
|
||||
@@ -141,6 +141,7 @@ namespace AtomToolsFramework
|
||||
AddEditDataAttributeMemberFunction(AZ::Edit::Attributes::EnumValues, &DynamicProperty::GetEnumValues);
|
||||
AddEditDataAttributeMemberFunction(AZ::Edit::Attributes::ChangeNotify, &DynamicProperty::OnDataChanged);
|
||||
AddEditDataAttribute(AZ::Edit::Attributes::ShowProductAssetFileName, false);
|
||||
AddEditDataAttribute(AZ_CRC_CE("Thumbnail"), m_config.m_showThumbnail);
|
||||
|
||||
switch (m_config.m_dataType)
|
||||
{
|
||||
|
||||
@@ -118,7 +118,7 @@ namespace AtomToolsFramework
|
||||
return m_viewportContext;
|
||||
}
|
||||
|
||||
void RenderViewportWidget::SetScene(AzFramework::Scene* scene, bool useDefaultRenderPipeline)
|
||||
void RenderViewportWidget::SetScene(const AZStd::shared_ptr<AzFramework::Scene>& scene, bool useDefaultRenderPipeline)
|
||||
{
|
||||
if (scene == nullptr)
|
||||
{
|
||||
@@ -128,7 +128,7 @@ namespace AtomToolsFramework
|
||||
AZ::RPI::ScenePtr atomScene;
|
||||
auto initializeScene = [&](AZ::Render::Bootstrap::Request* bootstrapRequests)
|
||||
{
|
||||
atomScene = bootstrapRequests->GetOrCreateAtomSceneFromAzScene(scene);
|
||||
atomScene = bootstrapRequests->GetOrCreateAtomSceneFromAzScene(scene.get());
|
||||
if (useDefaultRenderPipeline)
|
||||
{
|
||||
// atomScene may already have a default render pipeline installed.
|
||||
|
||||
@@ -771,6 +771,7 @@ namespace MaterialEditor
|
||||
if (propertyIndexInBounds)
|
||||
{
|
||||
AtomToolsFramework::ConvertToPropertyConfig(propertyConfig, propertyDefinition);
|
||||
propertyConfig.m_showThumbnail = true;
|
||||
propertyConfig.m_originalValue = AtomToolsFramework::ConvertToEditableType(m_materialAsset->GetPropertyValues()[propertyIndex.GetIndex()]);
|
||||
propertyConfig.m_parentValue = AtomToolsFramework::ConvertToEditableType(parentPropertyValues[propertyIndex.GetIndex()]);
|
||||
propertyConfig.m_groupName = m_materialTypeSourceData.FindGroup(groupNameId)->m_displayName;
|
||||
@@ -810,6 +811,7 @@ namespace MaterialEditor
|
||||
propertyConfig.m_originalValue = propertyConfig.m_defaultValue;
|
||||
propertyConfig.m_parentValue = propertyConfig.m_defaultValue;
|
||||
propertyConfig.m_readOnly = true;
|
||||
propertyConfig.m_showThumbnail = true;
|
||||
|
||||
m_properties[propertyConfig.m_id] = AtomToolsFramework::DynamicProperty(propertyConfig);
|
||||
|
||||
|
||||
@@ -88,10 +88,12 @@ namespace MaterialEditor
|
||||
m_scene->SetShaderResourceGroupCallback(callback);
|
||||
|
||||
// Bind m_defaultScene to the GameEntityContext's AzFramework::Scene
|
||||
AZStd::vector<AzFramework::Scene*> scenes;
|
||||
AzFramework::SceneSystemRequestBus::BroadcastResult(scenes, &AzFramework::SceneSystemRequests::GetAllScenes);
|
||||
AZ_Assert(scenes.size() > 0, "Error: Scenes missing during system component initialization"); // This should never happen unless scene creation has changed.
|
||||
scenes.at(0)->SetSubsystem(m_scene.get());
|
||||
auto sceneSystem = AzFramework::SceneSystemInterface::Get();
|
||||
AZ_Assert(sceneSystem, "MaterialViewportRenderer was unable to get the scene system during construction.");
|
||||
AZStd::shared_ptr<AzFramework::Scene> mainScene = sceneSystem->GetScene(AzFramework::Scene::MainSceneName);
|
||||
// This should never happen unless scene creation has changed.
|
||||
AZ_Assert(mainScene, "Main scenes missing during system component initialization");
|
||||
mainScene->SetSubsystem(m_scene);
|
||||
|
||||
// Create a render pipeline from the specified asset for the window context and add the pipeline to the scene
|
||||
AZ::Data::Asset<AZ::RPI::AnyAsset> pipelineAsset = AZ::RPI::AssetUtils::LoadAssetByProductPath<AZ::RPI::AnyAsset>(m_defaultPipelineAssetPath.c_str(), AZ::RPI::AssetUtils::TraceLevel::Error);
|
||||
@@ -275,6 +277,13 @@ namespace MaterialEditor
|
||||
}
|
||||
m_lightHandles.clear();
|
||||
|
||||
auto sceneSystem = AzFramework::SceneSystemInterface::Get();
|
||||
AZ_Assert(sceneSystem, "MaterialViewportRenderer was unable to get the scene system during destruction.");
|
||||
AZStd::shared_ptr<AzFramework::Scene> mainScene = sceneSystem->GetScene(AzFramework::Scene::MainSceneName);
|
||||
// This should never happen unless scene creation has changed.
|
||||
AZ_Assert(mainScene, "Main scenes missing during system component destruction");
|
||||
mainScene->UnsetSubsystem(m_scene);
|
||||
|
||||
m_swapChainPass = nullptr;
|
||||
AZ::RPI::RPISystemInterface::Get()->UnregisterScene(m_scene);
|
||||
m_scene = nullptr;
|
||||
|
||||
@@ -110,30 +110,19 @@ namespace MaterialEditor
|
||||
{
|
||||
using namespace AzToolsFramework::AssetBrowser;
|
||||
|
||||
// Material Browser uses the following filters:
|
||||
// 1. [All source files (no products) that contain products matching the assetType specified by searchWidget (default is materials and textures)]
|
||||
// 2. [All folders (including empty folders)]
|
||||
// 3. [All Sources and folders matching the search text typed in search widget]
|
||||
// Final filter = ((1 OR 2) AND 3)
|
||||
|
||||
QSharedPointer<EntryTypeFilter> sourceFilter(new EntryTypeFilter);
|
||||
sourceFilter->SetEntryType(AssetBrowserEntry::AssetEntryType::Source);
|
||||
|
||||
QSharedPointer<CompositeFilter> assetTypeFilter(new CompositeFilter(CompositeFilter::LogicOperatorType::AND));
|
||||
assetTypeFilter->AddFilter(sourceFilter);
|
||||
assetTypeFilter->AddFilter(m_ui->m_searchWidget->GetTypesFilter());
|
||||
|
||||
QSharedPointer<EntryTypeFilter> folderFilter(new EntryTypeFilter);
|
||||
folderFilter->SetEntryType(AssetBrowserEntry::AssetEntryType::Folder);
|
||||
|
||||
QSharedPointer<CompositeFilter> sourceOrFolderFilter(new CompositeFilter(CompositeFilter::LogicOperatorType::OR));
|
||||
sourceOrFolderFilter->AddFilter(assetTypeFilter);
|
||||
sourceOrFolderFilter->AddFilter(sourceFilter);
|
||||
sourceOrFolderFilter->AddFilter(folderFilter);
|
||||
|
||||
QSharedPointer<CompositeFilter> finalFilter(new CompositeFilter(CompositeFilter::LogicOperatorType::AND));
|
||||
finalFilter->AddFilter(sourceOrFolderFilter);
|
||||
finalFilter->AddFilter(m_ui->m_searchWidget->GetStringFilter());
|
||||
finalFilter->SetFilterPropagation(AssetBrowserEntryFilter::PropagateDirection::Down);
|
||||
finalFilter->AddFilter(m_ui->m_searchWidget->GetFilter());
|
||||
|
||||
return finalFilter;
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#
|
||||
|
||||
set(GEM_DEPENDENCIES
|
||||
Gem::Atom_RHI_Null.Private
|
||||
Gem::Atom_RHI_DX12.Private
|
||||
Gem::Atom_RHI_Vulkan.Private
|
||||
Gem::Atom_RHI.Private
|
||||
|
||||
+28
-13
@@ -28,6 +28,7 @@
|
||||
#include <AzToolsFramework/Thumbnails/SourceControlThumbnail.h>
|
||||
#include <AtomToolsFramework/Util/Util.h>
|
||||
|
||||
#include <Atom/RPI.Edit/Shader/ShaderVariantListSourceData.h>
|
||||
#include <Atom/Document/ShaderManagementConsoleDocumentSystemRequestBus.h>
|
||||
|
||||
#include <Source/Window/ShaderManagementConsoleBrowserInteractions.h>
|
||||
@@ -81,7 +82,14 @@ namespace ShaderManagementConsole
|
||||
{
|
||||
menu->addAction("Open", [entry]()
|
||||
{
|
||||
QDesktopServices::openUrl(QUrl::fromLocalFile(entry->GetFullPath().c_str()));
|
||||
if (AzFramework::StringFunc::Path::IsExtension(entry->GetFullPath().c_str(), AZ::RPI::ShaderVariantListSourceData::Extension))
|
||||
{
|
||||
ShaderManagementConsoleDocumentSystemRequestBus::Broadcast(&ShaderManagementConsoleDocumentSystemRequestBus::Events::OpenDocument, entry->GetFullPath().c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
QDesktopServices::openUrl(QUrl::fromLocalFile(entry->GetFullPath().c_str()));
|
||||
}
|
||||
});
|
||||
|
||||
menu->addAction("Duplicate...", [entry, caller]()
|
||||
@@ -100,20 +108,27 @@ namespace ShaderManagementConsole
|
||||
}
|
||||
});
|
||||
|
||||
menu->addAction("Run Python on Asset...", [entry]()
|
||||
{
|
||||
const QString script = QFileDialog::getOpenFileName(nullptr, "Run Script", QString(), QString("*.py"));
|
||||
if (!script.isEmpty())
|
||||
{
|
||||
AZStd::vector<AZStd::string_view> pythonArgs { entry->GetFullPath() };
|
||||
AzToolsFramework::EditorPythonRunnerRequestBus::Broadcast(&AzToolsFramework::EditorPythonRunnerRequestBus::Events::ExecuteByFilenameWithArgs, script.toUtf8().constData(), pythonArgs);
|
||||
}
|
||||
});
|
||||
|
||||
menu->addAction(AzQtComponents::fileBrowserActionName(), [entry]()
|
||||
{
|
||||
AzQtComponents::ShowFileOnDesktop(entry->GetFullPath().c_str());
|
||||
});
|
||||
|
||||
menu->addSeparator();
|
||||
menu->addAction("Generate Shader Variant List", [entry]() {
|
||||
const QString script = "@engroot@/Gems/Atom/Tools/ShaderManagementConsole/Scripts/GenerateShaderVariantListForMaterials.py";
|
||||
AZStd::vector<AZStd::string_view> pythonArgs{ entry->GetFullPath() };
|
||||
AzToolsFramework::EditorPythonRunnerRequestBus::Broadcast(&AzToolsFramework::EditorPythonRunnerRequestBus::Events::ExecuteByFilenameWithArgs, script.toUtf8().constData(), pythonArgs);
|
||||
});
|
||||
|
||||
menu->addAction("Run Python on Asset...", [entry]()
|
||||
{
|
||||
const QString script = QFileDialog::getOpenFileName(nullptr, "Run Script", QString(), QString("*.py"));
|
||||
if (!script.isEmpty())
|
||||
{
|
||||
AzQtComponents::ShowFileOnDesktop(entry->GetFullPath().c_str());
|
||||
});
|
||||
AZStd::vector<AZStd::string_view> pythonArgs { entry->GetFullPath() };
|
||||
AzToolsFramework::EditorPythonRunnerRequestBus::Broadcast(&AzToolsFramework::EditorPythonRunnerRequestBus::Events::ExecuteByFilenameWithArgs, script.toUtf8().constData(), pythonArgs);
|
||||
}
|
||||
});
|
||||
|
||||
AddPerforceMenuActions(caller, menu, entry);
|
||||
}
|
||||
|
||||
+1
@@ -368,6 +368,7 @@ namespace ShaderManagementConsole
|
||||
// The document tab contains a table view.
|
||||
auto tableView = new QTableView(m_centralWidget);
|
||||
tableView->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||
tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||
|
||||
auto model = new QStandardItemModel();
|
||||
tableView->setModel(model);
|
||||
|
||||
@@ -15,4 +15,5 @@ set(FILES
|
||||
Source/ShaderManagementConsoleApplication.h
|
||||
Include/Atom/Document/ShaderManagementConsoleDocumentModule.h
|
||||
Source/Document/ShaderManagementConsoleDocumentModule.cpp
|
||||
../Scripts/GenerateShaderVariantListForMaterials.py
|
||||
)
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#
|
||||
|
||||
set(GEM_DEPENDENCIES
|
||||
Gem::Atom_RHI_Null.Private
|
||||
Gem::Atom_RHI_DX12.Private
|
||||
Gem::Atom_RHI_Vulkan.Private
|
||||
Gem::Atom_RHI.Private
|
||||
|
||||
+37
-20
@@ -24,15 +24,6 @@ from PySide2 import QtWidgets
|
||||
|
||||
PROJECT_SHADER_VARIANTS_FOLDER = "ShaderVariants"
|
||||
|
||||
def prompt_message_box(text, informativeText = None, qButtons = QtWidgets.QMessageBox.Yes|QtWidgets.QMessageBox.No|QtWidgets.QMessageBox.Cancel):
|
||||
msgBox = QtWidgets.QMessageBox()
|
||||
msgBox.setText(text)
|
||||
if informativeText:
|
||||
msgBox.setInformativeText(informativeText)
|
||||
msgBox.setStandardButtons(qButtons)
|
||||
|
||||
return msgBox.exec()
|
||||
|
||||
def clean_existing_shadervariantlist_files(filePaths):
|
||||
for file in filePaths:
|
||||
if os.path.exists(file):
|
||||
@@ -66,21 +57,32 @@ def main():
|
||||
shaderAssetInfo.relativePath
|
||||
)
|
||||
|
||||
response = prompt_message_box(
|
||||
"Generating .shadervariantlist File",
|
||||
"This process may take a while. Would you like to save the generated .shadervariantlist file in the project folder? " \
|
||||
"Otherwise, it will be saved in the same location as the .shader file."
|
||||
msgBox = QtWidgets.QMessageBox(
|
||||
QtWidgets.QMessageBox.Question,
|
||||
"Choose Save Location for .shadervariantlist File",
|
||||
"Save .shadervariantlist file in Project folder or in the same folder as shader file?"
|
||||
)
|
||||
projectButton = msgBox.addButton("Project Folder", QtWidgets.QMessageBox.AcceptRole)
|
||||
msgBox.addButton("Same Folder as Shader", QtWidgets.QMessageBox.AcceptRole)
|
||||
cancelButton = msgBox.addButton("Cancel", QtWidgets.QMessageBox.RejectRole)
|
||||
msgBox.exec()
|
||||
|
||||
is_save_in_project_folder = False
|
||||
if response == QtWidgets.QMessageBox.Yes:
|
||||
if msgBox.clickedButton() == projectButton:
|
||||
is_save_in_project_folder = True
|
||||
elif response == QtWidgets.QMessageBox.Cancel:
|
||||
elif msgBox.clickedButton() == cancelButton:
|
||||
return
|
||||
|
||||
# This loop collects all uniquely-identified shader items used by the materials based on its shader variant id.
|
||||
shader_file = os.path.basename(filename)
|
||||
shaderVariantIds = []
|
||||
shaderVariantListShaderOptionGroups = []
|
||||
for materialAssetId in materialAssetIds:
|
||||
progressDialog = QtWidgets.QProgressDialog(f"Generating .shadervariantlist file for:\n{shader_file}", "Cancel", 0, len(materialAssetIds))
|
||||
progressDialog.setMaximumWidth(400)
|
||||
progressDialog.setMaximumHeight(100)
|
||||
progressDialog.setModal(True)
|
||||
progressDialog.setWindowTitle("Generating Shader Variant List")
|
||||
for i, materialAssetId in enumerate(materialAssetIds):
|
||||
materialInstanceShaderItems = azlmbr.shadermanagementconsole.ShaderManagementConsoleRequestBus(azlmbr.bus.Broadcast, 'GetMaterialInstanceShaderItems', materialAssetId)
|
||||
|
||||
for shaderItem in materialInstanceShaderItems:
|
||||
@@ -102,8 +104,14 @@ def main():
|
||||
shaderVariantIds.append(shaderVariantId)
|
||||
shaderVariantListShaderOptionGroups.append(shaderItem.GetShaderOptionGroup())
|
||||
|
||||
progressDialog.setValue(i)
|
||||
if progressDialog.wasCanceled():
|
||||
return
|
||||
|
||||
progressDialog.close()
|
||||
|
||||
# Generate the shader variant list data by collecting shader option name-value pairs.s
|
||||
shaderVariantList = azlmbr.shader.ShaderVariantListSourceData ()
|
||||
shaderVariantList = azlmbr.shader.ShaderVariantListSourceData()
|
||||
shaderVariantList.shaderFilePath = shaderAssetInfo.relativePath
|
||||
shaderVariants = []
|
||||
stableId = 1
|
||||
@@ -144,17 +152,26 @@ def main():
|
||||
shaderVariantListFilePath = projectShaderVariantListFilePath
|
||||
else:
|
||||
shaderVariantListFilePath = defaultShaderVariantListFilePath
|
||||
|
||||
print(f"Saving .shadervariantlist file into: {shaderVariantListFilePath}")
|
||||
|
||||
shaderVariantListFilePath = shaderVariantListFilePath.replace("\\", "/")
|
||||
azlmbr.shader.SaveShaderVariantListSourceData(shaderVariantListFilePath, shaderVariantList)
|
||||
|
||||
# Open the document in shader management console
|
||||
azlmbr.shadermanagementconsole.ShaderManagementConsoleDocumentSystemRequestBus(
|
||||
result = azlmbr.shadermanagementconsole.ShaderManagementConsoleDocumentSystemRequestBus(
|
||||
azlmbr.bus.Broadcast,
|
||||
'OpenDocument',
|
||||
shaderVariantListFilePath
|
||||
)
|
||||
|
||||
if not result.IsNull():
|
||||
msgBox = QtWidgets.QMessageBox(
|
||||
QtWidgets.QMessageBox.Information,
|
||||
"Shader Variant List File Successfully Generated",
|
||||
f".shadervariantlist file was saved in:\n{shaderVariantListFilePath}",
|
||||
QtWidgets.QMessageBox.Ok
|
||||
)
|
||||
msgBox.exec()
|
||||
|
||||
print("==== End shader variant script ============================================================")
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
@@ -1263,7 +1263,12 @@ namespace AZ::AtomBridge
|
||||
const char* text,
|
||||
bool center)
|
||||
{
|
||||
AzFramework::FontDrawInterface* fontDrawInterface = AZ::Interface<AzFramework::FontQueryInterface>::Get()->GetDefaultFontDrawInterface();
|
||||
auto fontQueryInterface = AZ::Interface<AzFramework::FontQueryInterface>::Get();
|
||||
if (!fontQueryInterface)
|
||||
{
|
||||
return;
|
||||
}
|
||||
AzFramework::FontDrawInterface* fontDrawInterface = fontQueryInterface->GetDefaultFontDrawInterface();
|
||||
if (!fontDrawInterface || !text || size == 0.0f)
|
||||
{
|
||||
return;
|
||||
|
||||
+2
-2
@@ -48,8 +48,8 @@ namespace AZ
|
||||
"AssetCollectionAsyncLoaderTest", "The AssetCollectionAsyncLoaderTest component allows you to test the API provided by AssetCollectionAsyncLoader")
|
||||
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
||||
->Attribute(AZ::Edit::Attributes::Category, "Test")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Comment.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Editor/Icons/Components/Viewport/Comment.png")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Comment.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Comment.png")
|
||||
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZStd::vector<AZ::Crc32>({ AZ_CRC("Level", 0x9aeacc13), AZ_CRC("Game", 0x232b318c), AZ_CRC("Layer", 0xe4db211a) }))
|
||||
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
|
||||
->DataElement(AZ::Edit::UIHandlers::LineEdit, &AssetCollectionAsyncLoaderTestComponent::m_pathToAssetListJson, "", "Path To Asset List")
|
||||
|
||||
@@ -99,8 +99,8 @@ void FlyCameraInputComponent::Reflect(AZ::ReflectContext* reflection)
|
||||
editContext->Class<FlyCameraInputComponent>("Fly Camera Input", "The Fly Camera Input allows you to control the camera")
|
||||
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
||||
->Attribute("Category", "Gameplay")
|
||||
->Attribute("Icon", "Editor/Icons/Components/CameraRig.svg")
|
||||
->Attribute("ViewportIcon", "Editor/Icons/Components/Viewport/CameraRig.png")
|
||||
->Attribute("Icon", "Icons/Components/CameraRig.svg")
|
||||
->Attribute("ViewportIcon", "Icons/Components/Viewport/CameraRig.png")
|
||||
->Attribute("AutoExpand", true)
|
||||
->Attribute("AppearsInAddComponentMenu", AZ_CRC("Game", 0x232b318c))
|
||||
->DataElement(0, &FlyCameraInputComponent::m_moveSpeed, "Move Speed", "Speed at which the camera moves")
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
#include <map>
|
||||
|
||||
#include <AzFramework/Font/FontInterface.h>
|
||||
#include <AzFramework/Scene/SceneSystemBus.h>
|
||||
#include <AzFramework/Scene/SceneSystemInterface.h>
|
||||
|
||||
#include <Atom/RPI.Public/DynamicDraw/DynamicDrawContext.h>
|
||||
|
||||
@@ -40,7 +40,6 @@ namespace AZ
|
||||
class AtomFont
|
||||
: public ICryFont
|
||||
, public AzFramework::FontQueryInterface
|
||||
, public AzFramework::SceneSystemNotificationBus::Handler
|
||||
{
|
||||
friend class FFont;
|
||||
|
||||
@@ -92,8 +91,7 @@ namespace AZ
|
||||
AzFramework::FontDrawInterface* GetFontDrawInterface(AzFramework::FontId fontId) const override;
|
||||
AzFramework::FontDrawInterface* GetDefaultFontDrawInterface() const override;
|
||||
|
||||
// SceneSystemNotificationBus handlers
|
||||
void SceneAboutToBeRemoved(AzFramework::Scene& scene) override;
|
||||
void SceneAboutToBeRemoved(AzFramework::Scene& scene);
|
||||
|
||||
|
||||
// Atom DynamicDraw interface management
|
||||
@@ -137,6 +135,8 @@ namespace AZ
|
||||
XmlNodeRef LoadFontFamilyXml(const char* fontFamilyName, string& outputDirectory, string& outputFullPath);
|
||||
|
||||
private:
|
||||
AzFramework::ISceneSystem::SceneEvent::Handler m_sceneEventHandler;
|
||||
|
||||
FontMap m_fonts;
|
||||
FontFamilyMap m_fontFamilies; //!< Map font family names to weak ptrs so we can construct shared_ptrs but not keep a ref ourselves.
|
||||
FontFamilyReverseLookupMap m_fontFamilyReverseLookup; //<! FontFamily pointer reverse-lookup for quick removal
|
||||
|
||||
@@ -353,6 +353,18 @@ AZ::AtomFont::AtomFont(ISystem* system)
|
||||
"Reload all fonts");
|
||||
#endif
|
||||
AZ::Interface<AzFramework::FontQueryInterface>::Register(this);
|
||||
|
||||
m_sceneEventHandler = AzFramework::ISceneSystem::SceneEvent::Handler(
|
||||
[this](AzFramework::ISceneSystem::EventType eventType, const AZStd::shared_ptr<AzFramework::Scene>& scene)
|
||||
{
|
||||
if (eventType == AzFramework::ISceneSystem::EventType::ScenePendingRemoval)
|
||||
{
|
||||
SceneAboutToBeRemoved(*scene);
|
||||
}
|
||||
});
|
||||
auto sceneSystem = AzFramework::SceneSystemInterface::Get();
|
||||
AZ_Assert(sceneSystem, "Font created before the scene system is available.");
|
||||
sceneSystem->ConnectToEvents(m_sceneEventHandler);
|
||||
}
|
||||
|
||||
AZ::AtomFont::~AtomFont()
|
||||
@@ -851,12 +863,14 @@ XmlNodeRef AZ::AtomFont::LoadFontFamilyXml(const char* fontFamilyName, string& o
|
||||
|
||||
void AZ::AtomFont::SceneAboutToBeRemoved(AzFramework::Scene& scene)
|
||||
{
|
||||
AZ::RPI::Scene* rpiScene = scene.GetSubsystem<AZ::RPI::Scene>();
|
||||
|
||||
AZStd::lock_guard<AZStd::shared_mutex> lock(m_sceneToDynamicDrawMutex);
|
||||
if ( auto it = m_sceneToDynamicDrawMap.find(rpiScene); it != m_sceneToDynamicDrawMap.end())
|
||||
AZ::RPI::ScenePtr* rpiScene = scene.FindSubsystem<AZ::RPI::ScenePtr>();
|
||||
if (rpiScene)
|
||||
{
|
||||
m_sceneToDynamicDrawMap.erase(it);
|
||||
AZStd::lock_guard<AZStd::shared_mutex> lock(m_sceneToDynamicDrawMutex);
|
||||
if (auto it = m_sceneToDynamicDrawMap.find(rpiScene->get()); it != m_sceneToDynamicDrawMap.end())
|
||||
{
|
||||
m_sceneToDynamicDrawMap.erase(it);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -49,8 +49,8 @@ namespace AZ
|
||||
"Light", "A light which emits from a point or goemetric shape.")
|
||||
->ClassElement(Edit::ClassElements::EditorData, "")
|
||||
->Attribute(Edit::Attributes::Category, "Atom")
|
||||
->Attribute(Edit::Attributes::Icon, "Editor/Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(Edit::Attributes::ViewportIcon, "editor/icons/components/viewport/component_placeholder.png")
|
||||
->Attribute(Edit::Attributes::Icon, "Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png")
|
||||
->Attribute(Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->Attribute(Edit::Attributes::AutoExpand, true)
|
||||
->Attribute(Edit::Attributes::HelpPageURL, "https://docs.aws.amazon.com/lumberyard/latest/userguide/component-light.html")
|
||||
|
||||
+2
-2
@@ -44,8 +44,8 @@ namespace AZ
|
||||
"Directional Light", "A directional light to cast a shadow of meshes onto meshes.")
|
||||
->ClassElement(Edit::ClassElements::EditorData, "")
|
||||
->Attribute(Edit::Attributes::Category, "Atom")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Component_Placeholder.svg") // [GFX TODO][ATOM-1998] create icons.
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "editor/icons/components/viewport/component_placeholder.png") // [GFX TODO][ATOM-1998] create icons.
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Component_Placeholder.svg") // [GFX TODO][ATOM-1998] create icons.
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png") // [GFX TODO][ATOM-1998] create icons.
|
||||
->Attribute(Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->Attribute(Edit::Attributes::AutoExpand, true)
|
||||
->Attribute(Edit::Attributes::HelpPageURL, "https://") // [GFX TODO][ATOM-1998] create page
|
||||
|
||||
@@ -39,8 +39,8 @@ namespace AZ
|
||||
"Decal (Atom)", "The Decal component allows an entity to project a texture or material onto a mesh")
|
||||
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
||||
->Attribute(AZ::Edit::Attributes::Category, "Atom")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "editor/icons/components/viewport/component_placeholder.png")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png")
|
||||
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC_CE("Game"))
|
||||
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
|
||||
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.aws.amazon.com/lumberyard/latest/userguide/component-decal.html")
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@
|
||||
#include <AzFramework/Entity/EntityContextBus.h>
|
||||
#include <AzFramework/Entity/EntityContext.h>
|
||||
#include <AzFramework/Scene/Scene.h>
|
||||
#include <AzFramework/Scene/SceneSystemBus.h>
|
||||
#include <AzFramework/Scene/SceneSystemInterface.h>
|
||||
|
||||
#include <AzCore/RTTI/BehaviorContext.h>
|
||||
|
||||
|
||||
+2
-2
@@ -43,8 +43,8 @@ namespace AZ
|
||||
"Diffuse Probe Grid", "The DiffuseProbeGrid component generates a grid of diffuse light probes for global illumination")
|
||||
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
||||
->Attribute(AZ::Edit::Attributes::Category, "Atom")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "editor/icons/components/viewport/component_placeholder.png")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png")
|
||||
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
|
||||
->Attribute(AZ::Edit::Attributes::PrimaryAssetType, AZ::AzTypeInfo<RPI::ModelAsset>::Uuid())
|
||||
|
||||
@@ -34,8 +34,8 @@ namespace AZ
|
||||
"Grid", "Adds grid to the scene")
|
||||
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
||||
->Attribute(AZ::Edit::Attributes::Category, "Atom")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "editor/icons/components/viewport/component_placeholder.png")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png")
|
||||
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
|
||||
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.aws.amazon.com/lumberyard/latest/userguide/component-grid.html")
|
||||
|
||||
+2
-2
@@ -34,8 +34,8 @@ namespace AZ
|
||||
"Global Skylight (IBL)", "Adds image based illumination to the scene")
|
||||
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
||||
->Attribute(AZ::Edit::Attributes::Category, "Atom")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "editor/icons/components/viewport/component_placeholder.png")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png")
|
||||
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
|
||||
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.aws.amazon.com/lumberyard/latest/userguide/component-imagebasedlight.html")
|
||||
|
||||
+2
-2
@@ -137,8 +137,8 @@ namespace AZ
|
||||
"Material", "The material component specifies the material to use for this entity")
|
||||
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
||||
->Attribute(AZ::Edit::Attributes::Category, "Atom")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "editor/icons/components/viewport/component_placeholder.png")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png")
|
||||
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
|
||||
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.aws.amazon.com/lumberyard/latest/userguide/component-material.html")
|
||||
|
||||
+1
@@ -250,6 +250,7 @@ namespace AZ
|
||||
propertyConfig.m_id = AZ::RPI::MaterialPropertyId(groupNameId, propertyDefinition.m_nameId).GetFullName();
|
||||
propertyConfig.m_groupName = groupDisplayName;
|
||||
const auto& propertyIndex = m_editData.m_materialAsset->GetMaterialPropertiesLayout()->FindPropertyIndex(propertyConfig.m_id);
|
||||
propertyConfig.m_showThumbnail = true;
|
||||
propertyConfig.m_defaultValue = AtomToolsFramework::ConvertToEditableType(m_editData.m_materialTypeAsset->GetDefaultPropertyValues()[propertyIndex.GetIndex()]);
|
||||
propertyConfig.m_parentValue = AtomToolsFramework::ConvertToEditableType(m_editData.m_materialTypeAsset->GetDefaultPropertyValues()[propertyIndex.GetIndex()]);
|
||||
propertyConfig.m_originalValue = AtomToolsFramework::ConvertToEditableType(m_editData.m_materialAsset->GetPropertyValues()[propertyIndex.GetIndex()]);
|
||||
|
||||
@@ -21,13 +21,13 @@ namespace AZ
|
||||
{
|
||||
namespace Thumbnails
|
||||
{
|
||||
const int MaterialThumbnailSize = 200;
|
||||
static constexpr const int MaterialThumbnailSize = 512; // 512 is the default size in render to texture pass
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// MaterialThumbnail
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
MaterialThumbnail::MaterialThumbnail(AzToolsFramework::Thumbnailer::SharedThumbnailKey key, int thumbnailSize)
|
||||
: Thumbnail(key, thumbnailSize)
|
||||
MaterialThumbnail::MaterialThumbnail(AzToolsFramework::Thumbnailer::SharedThumbnailKey key)
|
||||
: Thumbnail(key)
|
||||
{
|
||||
m_assetId = GetAssetId(key, RPI::MaterialAsset::RTTI_Type());
|
||||
if (!m_assetId.IsValid())
|
||||
@@ -47,7 +47,7 @@ namespace AZ
|
||||
RPI::MaterialAsset::RTTI_Type(),
|
||||
&AzToolsFramework::Thumbnailer::ThumbnailerRendererRequests::RenderThumbnail,
|
||||
m_key,
|
||||
m_thumbnailSize);
|
||||
MaterialThumbnailSize);
|
||||
// wait for response from thumbnail renderer
|
||||
m_renderWait.acquire();
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace AZ
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
MaterialThumbnail(AzToolsFramework::Thumbnailer::SharedThumbnailKey key, int thumbnailSize);
|
||||
MaterialThumbnail(AzToolsFramework::Thumbnailer::SharedThumbnailKey key);
|
||||
~MaterialThumbnail() override;
|
||||
|
||||
//! AzToolsFramework::ThumbnailerRendererNotificationBus::Handler overrides...
|
||||
|
||||
@@ -44,8 +44,8 @@ namespace AZ
|
||||
"Mesh", "The mesh component is the primary method of adding visual geometry to entities")
|
||||
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
||||
->Attribute(AZ::Edit::Attributes::Category, "Atom")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "editor/icons/components/viewport/component_placeholder.png")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png")
|
||||
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
|
||||
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.aws.amazon.com/lumberyard/latest/userguide/component-mesh.html")
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
#include <AzFramework/Entity/EntityContextBus.h>
|
||||
#include <AzFramework/Entity/EntityContext.h>
|
||||
#include <AzFramework/Scene/Scene.h>
|
||||
#include <AzFramework/Scene/SceneSystemBus.h>
|
||||
#include <AzFramework/Scene/SceneSystemInterface.h>
|
||||
|
||||
#include <AzCore/RTTI/BehaviorContext.h>
|
||||
|
||||
|
||||
@@ -22,13 +22,13 @@ namespace AZ
|
||||
{
|
||||
namespace Thumbnails
|
||||
{
|
||||
const int MeshThumbnailSize = 200;
|
||||
static constexpr const int MeshThumbnailSize = 512; // 512 is the default size in render to texture pass
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// MeshThumbnail
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
MeshThumbnail::MeshThumbnail(AzToolsFramework::Thumbnailer::SharedThumbnailKey key, int thumbnailSize)
|
||||
: Thumbnail(key, thumbnailSize)
|
||||
MeshThumbnail::MeshThumbnail(AzToolsFramework::Thumbnailer::SharedThumbnailKey key)
|
||||
: Thumbnail(key)
|
||||
{
|
||||
m_assetId = GetAssetId(key, RPI::ModelAsset::RTTI_Type());
|
||||
if (!m_assetId.IsValid())
|
||||
@@ -48,7 +48,7 @@ namespace AZ
|
||||
RPI::ModelAsset::RTTI_Type(),
|
||||
&AzToolsFramework::Thumbnailer::ThumbnailerRendererRequests::RenderThumbnail,
|
||||
m_key,
|
||||
m_thumbnailSize);
|
||||
MeshThumbnailSize);
|
||||
// wait for response from thumbnail renderer
|
||||
m_renderWait.acquire();
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace AZ
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
MeshThumbnail(AzToolsFramework::Thumbnailer::SharedThumbnailKey key, int thumbnailSize);
|
||||
MeshThumbnail(AzToolsFramework::Thumbnailer::SharedThumbnailKey key);
|
||||
~MeshThumbnail() override;
|
||||
|
||||
//! AzToolsFramework::ThumbnailerRendererNotificationBus::Handler overrides...
|
||||
|
||||
+2
-2
@@ -32,8 +32,8 @@ namespace AZ
|
||||
"Bloom", "Controls the Bloom")
|
||||
->ClassElement(Edit::ClassElements::EditorData, "")
|
||||
->Attribute(Edit::Attributes::Category, "Atom")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Component_Placeholder.svg") // [GFX TODO ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "editor/icons/components/viewport/component_placeholder.png") // [GFX TODO ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Component_Placeholder.svg") // [GFX TODO ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png") // [GFX TODO ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->Attribute(Edit::Attributes::AutoExpand, true)
|
||||
->Attribute(Edit::Attributes::HelpPageURL, "https://") // [TODO ATOM-2672][PostFX] need create page for PostProcessing.
|
||||
|
||||
+2
-2
@@ -32,8 +32,8 @@ namespace AZ
|
||||
"DepthOfField", "Controls the Depth of Field.")
|
||||
->ClassElement(Edit::ClassElements::EditorData, "")
|
||||
->Attribute(Edit::Attributes::Category, "Atom")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Component_Placeholder.svg") // [GFX TODO ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "editor/icons/components/viewport/component_placeholder.png") // [GFX TODO ATOM-2672][PostFX] need to create icons for PostProcessing.y
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Component_Placeholder.svg") // [GFX TODO ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png") // [GFX TODO ATOM-2672][PostFX] need to create icons for PostProcessing.y
|
||||
->Attribute(Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->Attribute(Edit::Attributes::AutoExpand, true)
|
||||
->Attribute(Edit::Attributes::HelpPageURL, "https://") // [GFX TODO][ATOM-2672][PostFX] need create page for PostProcessing.
|
||||
|
||||
+2
-2
@@ -32,8 +32,8 @@ namespace AZ
|
||||
"Display Mapper", "The display mapper applying on the look modification process.")
|
||||
->ClassElement(Edit::ClassElements::EditorData, "")
|
||||
->Attribute(Edit::Attributes::Category, "Atom")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Component_Placeholder.svg") // [GFX TODO][ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "editor/icons/components/viewport/component_placeholder.png") // [GFX TODO][ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Component_Placeholder.svg") // [GFX TODO][ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png") // [GFX TODO][ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(Edit::Attributes::AppearsInAddComponentMenu, AZStd::vector<AZ::Crc32>({ AZ_CRC("Level", 0x9aeacc13), AZ_CRC("Game", 0x232b318c) }))
|
||||
->Attribute(Edit::Attributes::AutoExpand, true)
|
||||
->Attribute(Edit::Attributes::HelpPageURL, "https://") // [GFX TODO][ATOM-2672][PostFX] need to create page for PostProcessing.
|
||||
|
||||
+2
-2
@@ -32,8 +32,8 @@ namespace AZ
|
||||
"PostFX Layer", "This component enables the entity to specify post process settings")
|
||||
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
||||
->Attribute(AZ::Edit::Attributes::Category, "Atom")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "editor/icons/components/viewport/component_placeholder.png")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png")
|
||||
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
|
||||
->Attribute(AZ::Edit::Attributes::HelpPageURL, "")
|
||||
|
||||
+2
-2
@@ -32,8 +32,8 @@ namespace AZ
|
||||
"Exposure Control", "Exposure component control exposure value for rendered scene.")
|
||||
->ClassElement(Edit::ClassElements::EditorData, "")
|
||||
->Attribute(Edit::Attributes::Category, "Atom")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Component_Placeholder.svg") // [GFX TODO ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "editor/icons/components/viewport/component_placeholder.png") // [GFX TODO ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Component_Placeholder.svg") // [GFX TODO ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png") // [GFX TODO ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->Attribute(Edit::Attributes::AutoExpand, true)
|
||||
->Attribute(Edit::Attributes::HelpPageURL, "https://") // [TODO ATOM-2672][PostFX] need create page for PostProcessing.
|
||||
|
||||
+2
-2
@@ -32,8 +32,8 @@ namespace AZ
|
||||
"PostFX Gradient Weight Modifier", "Modifies PostFX override factor based on a gradient signal sampled from an entity")
|
||||
->ClassElement(Edit::ClassElements::EditorData, "")
|
||||
->Attribute(Edit::Attributes::Category, "Atom")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "editor/icons/components/viewport/component_placeholder.png")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png")
|
||||
->Attribute(Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->Attribute(Edit::Attributes::AutoExpand, true)
|
||||
->Attribute(Edit::Attributes::HelpPageURL, "")
|
||||
|
||||
+2
-2
@@ -32,8 +32,8 @@ namespace AZ
|
||||
"Look Modification", "The look modification process.")
|
||||
->ClassElement(Edit::ClassElements::EditorData, "")
|
||||
->Attribute(Edit::Attributes::Category, "Atom")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Component_Placeholder.svg") // [GFX TODO ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "editor/icons/components/viewport/component_placeholder.png") // [GFX TODO ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Component_Placeholder.svg") // [GFX TODO ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png") // [GFX TODO ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->Attribute(Edit::Attributes::AutoExpand, true)
|
||||
->Attribute(Edit::Attributes::HelpPageURL, "https://") // [TODO ATOM-2672][PostFX] need to create page for PostProcessing.
|
||||
|
||||
+2
-2
@@ -32,8 +32,8 @@ namespace AZ
|
||||
"Radius Weight Modifier", "Modifies PostFX override factor based on proximity of an influencer against this entity's bounding sphere")
|
||||
->ClassElement(Edit::ClassElements::EditorData, "")
|
||||
->Attribute(Edit::Attributes::Category, "Atom")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "editor/icons/components/viewport/component_placeholder.png")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png")
|
||||
->Attribute(Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->Attribute(Edit::Attributes::AutoExpand, true)
|
||||
->Attribute(Edit::Attributes::HelpPageURL, "")
|
||||
|
||||
+2
-2
@@ -32,8 +32,8 @@ namespace AZ
|
||||
"PostFX Shape Weight Modifier", "Modifies PostFX override factor based on proximity of an influencer against this entity's bounding sphere")
|
||||
->ClassElement(Edit::ClassElements::EditorData, "")
|
||||
->Attribute(Edit::Attributes::Category, "Atom")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "editor/icons/components/viewport/component_placeholder.png")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png")
|
||||
->Attribute(Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->Attribute(Edit::Attributes::AutoExpand, true)
|
||||
->Attribute(Edit::Attributes::HelpPageURL, "")
|
||||
|
||||
+2
-2
@@ -32,8 +32,8 @@ namespace AZ
|
||||
"SSAO", "Controls SSAO.")
|
||||
->ClassElement(Edit::ClassElements::EditorData, "")
|
||||
->Attribute(Edit::Attributes::Category, "Atom")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Component_Placeholder.svg") // [GFX TODO ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "editor/icons/components/viewport/component_placeholder.png") // [GFX TODO ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Component_Placeholder.svg") // [GFX TODO ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png") // [GFX TODO ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC_CE("Game"))
|
||||
->Attribute(Edit::Attributes::AutoExpand, true)
|
||||
->Attribute(Edit::Attributes::HelpPageURL, "https://") // [GFX TODO][ATOM-2672][PostFX] need create page for PostProcessing.
|
||||
|
||||
+2
-2
@@ -49,8 +49,8 @@ namespace AZ
|
||||
"Reflection Probe", "The ReflectionProbe component captures an IBL specular reflection at a specific position in the level")
|
||||
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
||||
->Attribute(AZ::Edit::Attributes::Category, "Atom")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "editor/icons/components/viewport/component_placeholder.png")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png")
|
||||
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
|
||||
->Attribute(AZ::Edit::Attributes::Visibility, AZ::Edit::PropertyVisibility::ShowChildrenOnly)
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@
|
||||
#include <AzFramework/Entity/EntityContextBus.h>
|
||||
#include <AzFramework/Entity/EntityContext.h>
|
||||
#include <AzFramework/Scene/Scene.h>
|
||||
#include <AzFramework/Scene/SceneSystemBus.h>
|
||||
#include <AzFramework/Scene/SceneSystemInterface.h>
|
||||
|
||||
#include <AzCore/RTTI/BehaviorContext.h>
|
||||
|
||||
|
||||
+2
-2
@@ -32,8 +32,8 @@ namespace AZ
|
||||
"Deferred Fog", "Controls the Deferred Fog")
|
||||
->ClassElement(Edit::ClassElements::EditorData, "")
|
||||
->Attribute(Edit::Attributes::Category, "Atom")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Component_Placeholder.svg") // [GFX TODO ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "editor/icons/components/viewport/component_placeholder.png") // [GFX TODO ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Component_Placeholder.svg") // [GFX TODO ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png") // [GFX TODO ATOM-2672][PostFX] need to create icons for PostProcessing.
|
||||
->Attribute(Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->Attribute(Edit::Attributes::AutoExpand, true)
|
||||
->Attribute(Edit::Attributes::HelpPageURL, "https://") // [TODO][ATOM-13427] Create Wiki for Deferred Fog
|
||||
|
||||
+2
-2
@@ -31,8 +31,8 @@ namespace AZ
|
||||
"Entity Reference", "Contains a reference list to other entities")
|
||||
->ClassElement(Edit::ClassElements::EditorData, "")
|
||||
->Attribute(Edit::Attributes::Category, "Atom")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "editor/icons/components/viewport/component_placeholder.png")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png")
|
||||
->Attribute(Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->Attribute(Edit::Attributes::AutoExpand, true)
|
||||
->Attribute(Edit::Attributes::HelpPageURL, "")
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@
|
||||
#include <SkinnedMesh/SkinnedMeshDebugDisplay.h>
|
||||
#include <Atom/Feature/SkinnedMesh/SkinnedMeshStatsBus.h>
|
||||
#include <Atom/RPI.Public/Scene.h>
|
||||
#include <AzFramework/Scene/SceneSystemBus.h>
|
||||
#include <AzFramework/Scene/SceneSystemInterface.h>
|
||||
|
||||
#include <AzToolsFramework/Entity/EditorEntityContextBus.h>
|
||||
|
||||
|
||||
+2
-2
@@ -32,8 +32,8 @@ namespace AZ
|
||||
"HDRi Skybox", "SkyBox component render the background of your scene with cubemap")
|
||||
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
||||
->Attribute(AZ::Edit::Attributes::Category, "Atom")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "editor/icons/components/viewport/component_placeholder.png")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png")
|
||||
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
|
||||
->Attribute(AZ::Edit::Attributes::HelpPageURL, "")
|
||||
|
||||
+2
-2
@@ -32,8 +32,8 @@ namespace AZ
|
||||
"Physical Sky", "Physical Sky render the background of your scene with physical simulation")
|
||||
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
||||
->Attribute(AZ::Edit::Attributes::Category, "Atom")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "editor/icons/components/viewport/component_placeholder.png")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Component_Placeholder.svg")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png")
|
||||
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
|
||||
->Attribute(AZ::Edit::Attributes::HelpPageURL, "")
|
||||
|
||||
+2
-1
@@ -82,8 +82,9 @@ namespace AZ
|
||||
return m_data;
|
||||
}
|
||||
|
||||
void CommonThumbnailRenderer::RenderThumbnail(AzToolsFramework::Thumbnailer::SharedThumbnailKey thumbnailKey, [[maybe_unused]] int thumbnailSize)
|
||||
void CommonThumbnailRenderer::RenderThumbnail(AzToolsFramework::Thumbnailer::SharedThumbnailKey thumbnailKey, int thumbnailSize)
|
||||
{
|
||||
m_data->m_thumbnailSize = thumbnailSize;
|
||||
m_data->m_thumbnailQueue.push(thumbnailKey);
|
||||
if (m_currentStep == Step::None)
|
||||
{
|
||||
|
||||
+2
-1
@@ -42,7 +42,7 @@ namespace AZ
|
||||
RPI::ScenePtr m_scene;
|
||||
AZStd::string m_sceneName = "Material Thumbnail Scene";
|
||||
AZStd::string m_pipelineName = "Material Thumbnail Pipeline";
|
||||
AzFramework::Scene* m_frameworkScene = nullptr;
|
||||
AZStd::shared_ptr<AzFramework::Scene> m_frameworkScene;
|
||||
RPI::RenderPipelinePtr m_renderPipeline;
|
||||
AZStd::unique_ptr<AzFramework::EntityContext> m_entityContext;
|
||||
AZStd::vector<AZStd::string> m_passHierarchy;
|
||||
@@ -52,6 +52,7 @@ namespace AZ
|
||||
|
||||
double m_simulateTime = 0.0f;
|
||||
float m_deltaTime = 0.0f;
|
||||
int m_thumbnailSize = 512;
|
||||
|
||||
//! Incoming thumbnail requests are appended to this queue and processed one at a time in OnTick function.
|
||||
AZStd::queue<AzToolsFramework::Thumbnailer::SharedThumbnailKey> m_thumbnailQueue;
|
||||
|
||||
+7
-16
@@ -100,24 +100,15 @@ namespace AZ
|
||||
data->m_scene->SetShaderResourceGroupCallback(callback);
|
||||
|
||||
// Bind m_defaultScene to the GameEntityContext's AzFramework::Scene
|
||||
Outcome<AzFramework::Scene*, AZStd::string> createSceneOutcome;
|
||||
AzFramework::SceneSystemRequestBus::BroadcastResult(
|
||||
createSceneOutcome,
|
||||
&AzFramework::SceneSystemRequests::CreateScene,
|
||||
data->m_sceneName);
|
||||
auto* sceneSystem = AzFramework::SceneSystemInterface::Get();
|
||||
AZ_Assert(sceneSystem, "Thumbnail system failed to get scene system implementation.");
|
||||
Outcome<AZStd::shared_ptr<AzFramework::Scene>, AZStd::string> createSceneOutcome =
|
||||
sceneSystem->CreateScene(data->m_sceneName);
|
||||
AZ_Assert(createSceneOutcome, createSceneOutcome.GetError().c_str()); // This should never happen unless scene creation has changed.
|
||||
createSceneOutcome.GetValue()->SetSubsystem(data->m_scene.get());
|
||||
data->m_frameworkScene = createSceneOutcome.GetValue();
|
||||
data->m_frameworkScene->SetSubsystem(data->m_scene.get());
|
||||
|
||||
bool success = false;
|
||||
AzFramework::SceneSystemRequestBus::BroadcastResult(
|
||||
success,
|
||||
&AzFramework::SceneSystemRequests::SetSceneForEntityContextId,
|
||||
data->m_entityContext->GetContextId(),
|
||||
data->m_frameworkScene);
|
||||
AZ_Assert(success, "Unable to set entity context on AzFramework::Scene: %s", data->m_sceneName.c_str());
|
||||
data->m_frameworkScene = createSceneOutcome.TakeValue();
|
||||
data->m_frameworkScene->SetSubsystem(data->m_scene);
|
||||
|
||||
data->m_frameworkScene->SetSubsystem(data->m_entityContext.get());
|
||||
// Create a render pipeline from the specified asset for the window context and add the pipeline to the scene
|
||||
RPI::RenderPipelineDescriptor pipelineDesc;
|
||||
pipelineDesc.m_mainViewTagName = "MainCamera";
|
||||
|
||||
+8
-6
@@ -14,7 +14,7 @@
|
||||
#include <Atom/RPI.Public/RPISystemInterface.h>
|
||||
#include <Atom/RPI.Public/Scene.h>
|
||||
#include <AzFramework/Scene/Scene.h>
|
||||
#include <AzFramework/Scene/SceneSystemBus.h>
|
||||
#include <AzFramework/Scene/SceneSystemInterface.h>
|
||||
#include <Thumbnails/Rendering/ThumbnailRendererContext.h>
|
||||
#include <Thumbnails/Rendering/ThumbnailRendererData.h>
|
||||
#include <Thumbnails/Rendering/ThumbnailRendererSteps/ReleaseResourcesStep.h>
|
||||
@@ -49,11 +49,13 @@ namespace AZ
|
||||
m_context->GetData()->m_scene->Deactivate();
|
||||
m_context->GetData()->m_scene->RemoveRenderPipeline(m_context->GetData()->m_renderPipeline->GetId());
|
||||
RPI::RPISystemInterface::Get()->UnregisterScene(m_context->GetData()->m_scene);
|
||||
bool sceneRemovedSuccessfully = false;
|
||||
AzFramework::SceneSystemRequestBus::BroadcastResult(
|
||||
sceneRemovedSuccessfully,
|
||||
&AzFramework::SceneSystemRequests::RemoveScene,
|
||||
m_context->GetData()->m_sceneName);
|
||||
|
||||
auto sceneSystem = AzFramework::SceneSystemInterface::Get();
|
||||
AZ_Assert(sceneSystem, "Thumbnail system failed to get scene system implementation.");
|
||||
[[maybe_unused]] bool sceneRemovedSuccessfully = sceneSystem->RemoveScene(m_context->GetData()->m_sceneName);
|
||||
AZ_Assert(
|
||||
sceneRemovedSuccessfully, "Thumbnail system was unable to remove scene '%s' from the scene system.",
|
||||
m_context->GetData()->m_sceneName.c_str());
|
||||
m_context->GetData()->m_scene = nullptr;
|
||||
m_context->GetData()->m_renderPipeline = nullptr;
|
||||
}
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<CmdLine Description="Generate ATL Data">"$(WwiseProjectPath)\..\..\..\Tools\Python\python3.cmd" "$(WwiseProjectPath)\..\..\..\Gems\AudioEngineWwise\Tools\WwiseATLGen\wwise_atl_gen_tool.py" --autoLoad --atlName generated_controls.xml --atlPath "$(WwiseProjectPath)\..\..\libs\gameaudio\wwise" --bankPath "$(WwiseProjectPath)\..\wwise"</CmdLine>
|
||||
<CmdLine Description="Generate ATL Data">"$(WwiseProjectPath)\..\..\..\python\python.cmd" "$(WwiseProjectPath)\..\..\..\Gems\AudioEngineWwise\Tools\WwiseATLGen\wwise_atl_gen_tool.py" --autoLoad --atlName generated_controls.xml --atlPath "$(WwiseProjectPath)\..\..\libs\gameaudio\wwise" --bankPath "$(WwiseProjectPath)\..\wwise"</CmdLine>
|
||||
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<CmdLine Description="Copy Streamed Files and Generate Dependency Info">"$(WwiseExePath)\CopyStreamedFiles.exe" -info "$(InfoFilePath)" -outputpath "$(SoundBankPath)" -banks "$(SoundBankListAsTextFile)" -languages "$(LanguageList)"
|
||||
"$(WwiseProjectPath)\..\..\..\Tools\Python\python3.cmd" "$(WwiseProjectPath)\..\..\..\Gems\AudioEngineWwise\Tools\WwiseAuthoringScripts\bank_info_parser.py" "$(InfoFilePath)" "$(SoundBankPath)"</CmdLine>
|
||||
"$(WwiseProjectPath)\..\..\..\python.cmd" "$(WwiseProjectPath)\..\..\..\Gems\AudioEngineWwise\Tools\WwiseAuthoringScripts\bank_info_parser.py" "$(InfoFilePath)" "$(SoundBankPath)"</CmdLine>
|
||||
|
||||
@@ -147,7 +147,7 @@ namespace AudioControls
|
||||
|
||||
QWidgetAction* pWidgetAction = new QWidgetAction(this);
|
||||
|
||||
m_unassignedFilterButton = new QFilterButton(QIcon(":/Editor/Icons/Unassigned.svg"), "", this);
|
||||
m_unassignedFilterButton = new QFilterButton(QIcon(":/Icons/Unassigned.svg"), "", this);
|
||||
m_unassignedFilterButton->SetText("Unassigned");
|
||||
m_unassignedFilterButton->SetChecked(m_showUnassignedControls);
|
||||
pWidgetAction->setDefaultWidget(m_unassignedFilterButton);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<RCC>
|
||||
<qresource prefix="/Editor/Icons">
|
||||
<qresource prefix="/Icons">
|
||||
<file alias="Bank_Icon.png">Icons/Bank_Icon.png</file>
|
||||
<file alias="Config_Blue_Icon.png">Icons/Config_Blue_Icon.png</file>
|
||||
<file alias="Config_Green_Icon.png">Icons/Config_Green_Icon.png</file>
|
||||
|
||||
@@ -26,26 +26,26 @@ namespace AudioControls
|
||||
switch (type)
|
||||
{
|
||||
case AudioControls::eACET_TRIGGER:
|
||||
iconFile = ":/Editor/Icons/Trigger_Icon.svg";
|
||||
iconFile = ":/Icons/Trigger_Icon.svg";
|
||||
break;
|
||||
case AudioControls::eACET_RTPC:
|
||||
iconFile = ":/Editor/Icons/RTPC_Icon.svg";
|
||||
iconFile = ":/Icons/RTPC_Icon.svg";
|
||||
break;
|
||||
case AudioControls::eACET_SWITCH:
|
||||
iconFile = ":/Editor/Icons/Switch_Icon.svg";
|
||||
iconFile = ":/Icons/Switch_Icon.svg";
|
||||
break;
|
||||
case AudioControls::eACET_SWITCH_STATE:
|
||||
iconFile = ":/Editor/Icons/Property_Icon.svg";
|
||||
iconFile = ":/Icons/Property_Icon.svg";
|
||||
break;
|
||||
case AudioControls::eACET_ENVIRONMENT:
|
||||
iconFile = ":/Editor/Icons/Environment_Icon.svg";
|
||||
iconFile = ":/Icons/Environment_Icon.svg";
|
||||
break;
|
||||
case AudioControls::eACET_PRELOAD:
|
||||
iconFile = ":/Editor/Icons/Preload_Icon.svg";
|
||||
iconFile = ":/Icons/Preload_Icon.svg";
|
||||
break;
|
||||
default:
|
||||
// should make a "default"/empty icon...
|
||||
iconFile = ":/Editor/Icons/RTPC_Icon.svg";
|
||||
iconFile = ":/Icons/RTPC_Icon.svg";
|
||||
}
|
||||
|
||||
QIcon icon(iconFile);
|
||||
@@ -56,16 +56,16 @@ namespace AudioControls
|
||||
//-------------------------------------------------------------------------------------------//
|
||||
inline QIcon GetFolderIcon()
|
||||
{
|
||||
QIcon icon = QIcon(":/Editor/Icons/Folder_Icon.svg");
|
||||
icon.addFile(":/Editor/Icons/Folder_Icon_Selected.svg", QSize(), QIcon::Selected);
|
||||
QIcon icon = QIcon(":/Icons/Folder_Icon.svg");
|
||||
icon.addFile(":/Icons/Folder_Icon_Selected.svg", QSize(), QIcon::Selected);
|
||||
return icon;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------//
|
||||
inline QIcon GetSoundBankIcon()
|
||||
{
|
||||
QIcon icon = QIcon(":/Editor/Icons/Preload_Icon.svg");
|
||||
icon.addFile(":/Editor/Icons/Preload_Icon.svg", QSize(), QIcon::Selected);
|
||||
QIcon icon = QIcon(":/Icons/Preload_Icon.svg");
|
||||
icon.addFile(":/Icons/Preload_Icon.svg", QSize(), QIcon::Selected);
|
||||
return icon;
|
||||
}
|
||||
|
||||
@@ -78,22 +78,22 @@ namespace AudioControls
|
||||
switch (group)
|
||||
{
|
||||
case 0:
|
||||
path = ":/Editor/Icons/folder purple.svg";
|
||||
path = ":/Icons/folder purple.svg";
|
||||
break;
|
||||
case 1:
|
||||
path = ":/Editor/Icons/folder blue.svg";
|
||||
path = ":/Icons/folder blue.svg";
|
||||
break;
|
||||
case 2:
|
||||
path = ":/Editor/Icons/folder green.svg";
|
||||
path = ":/Icons/folder green.svg";
|
||||
break;
|
||||
case 3:
|
||||
path = ":/Editor/Icons/folder red.svg";
|
||||
path = ":/Icons/folder red.svg";
|
||||
break;
|
||||
case 4:
|
||||
path = ":/Editor/Icons/folder yellow.svg";
|
||||
path = ":/Icons/folder yellow.svg";
|
||||
break;
|
||||
default:
|
||||
path = "Editor/Icons/folder red.svg";
|
||||
path = "Icons/folder red.svg";
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@ namespace Blast
|
||||
|
||||
const char* BlastAssetHandler::GetBrowserIcon() const
|
||||
{
|
||||
return "Editor/Icons/Components/Box.png";
|
||||
return "Icons/Components/Box.png";
|
||||
}
|
||||
|
||||
void BlastAssetHandler::GetAssetTypeExtensions(AZStd::vector<AZStd::string>& extensions)
|
||||
|
||||
@@ -39,8 +39,8 @@ namespace Blast
|
||||
"Blast Family", "Used to add a Blast family for destruction that will spawn Blast actors")
|
||||
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
||||
->Attribute(AZ::Edit::Attributes::Category, "Destruction")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Box.png")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Editor/Icons/Components/Viewport/Box.png")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Box.png")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Box.png")
|
||||
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->Attribute(
|
||||
AZ::Edit::Attributes::HelpPageURL,
|
||||
|
||||
@@ -61,8 +61,8 @@ namespace Blast
|
||||
"Blast Family Mesh Data", "Used to keep track of mesh assets for a Blast family")
|
||||
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
||||
->Attribute(AZ::Edit::Attributes::Category, "Destruction")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Box.png")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Editor/Icons/Components/Viewport/Box.png")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Box.png")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Box.png")
|
||||
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->Attribute(
|
||||
AZ::Edit::Attributes::HelpPageURL,
|
||||
|
||||
@@ -55,8 +55,8 @@ namespace Blast
|
||||
"Blast Slice Storage Component", "Used process blast slice data")
|
||||
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
||||
->Attribute(AZ::Edit::Attributes::Category, "Physics")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/Box.png")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Editor/Icons/Components/Viewport/Box.png")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Box.png")
|
||||
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Box.png")
|
||||
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC_CE("Game"))
|
||||
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
|
||||
->Attribute(AZ::Edit::Attributes::AddableByUser, false)
|
||||
@@ -339,7 +339,7 @@ namespace Blast
|
||||
|
||||
const char* EditorBlastSliceAssetHandler::GetBrowserIcon() const
|
||||
{
|
||||
return "Editor/Icons/Components/Box.png";
|
||||
return "Icons/Components/Box.png";
|
||||
}
|
||||
|
||||
void EditorBlastSliceAssetHandler::GetAssetTypeExtensions(AZStd::vector<AZStd::string>& extensions)
|
||||
|
||||
@@ -52,7 +52,6 @@ add_subdirectory(ScriptCanvas)
|
||||
add_subdirectory(ScriptedEntityTweener)
|
||||
add_subdirectory(StartingPointMovement)
|
||||
add_subdirectory(StartingPointInput)
|
||||
add_subdirectory(ScriptCanvasDiagnosticLibrary)
|
||||
add_subdirectory(ScriptCanvasPhysics)
|
||||
add_subdirectory(StartingPointCamera)
|
||||
add_subdirectory(Presence)
|
||||
|
||||
@@ -37,7 +37,7 @@ namespace DebugDraw
|
||||
"DebugDraw Line", "Draws debug line on the screen from this entity's location to specified end entity's location.")
|
||||
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
||||
->Attribute(AZ::Edit::Attributes::Category, "Debugging")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/DebugDrawLine.svg")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/DebugDrawLine.svg")
|
||||
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->DataElement(0, &EditorDebugDrawLineComponent::m_element, "Line element settings", "Settings for the line element.")
|
||||
->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorDebugDrawLineComponent::OnPropertyUpdate)
|
||||
|
||||
@@ -37,7 +37,7 @@ namespace DebugDraw
|
||||
"DebugDraw Obb", "Draws debug obb on the screen from this entity's location to specified end entity's location.")
|
||||
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
||||
->Attribute(AZ::Edit::Attributes::Category, "Debugging")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/DebugDrawObb.svg")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/DebugDrawObb.svg")
|
||||
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->DataElement(0, &EditorDebugDrawObbComponent::m_element, "Obb element settings", "Settings for the obb element.")
|
||||
->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorDebugDrawObbComponent::OnPropertyUpdate)
|
||||
|
||||
@@ -37,7 +37,7 @@ namespace DebugDraw
|
||||
"DebugDraw Ray", "Draws debug ray on the screen from this entity's location to specified end entity's location.")
|
||||
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
||||
->Attribute(AZ::Edit::Attributes::Category, "Debugging")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/DebugDrawRay.svg")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/DebugDrawRay.svg")
|
||||
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->DataElement(0, &EditorDebugDrawRayComponent::m_element, "Ray element settings", "Settings for the ray element.")
|
||||
->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorDebugDrawRayComponent::OnPropertyUpdate)
|
||||
|
||||
@@ -37,7 +37,7 @@ namespace DebugDraw
|
||||
"DebugDraw Sphere", "Draws debug ray on the screen from this entity's location to specified end entity's location.")
|
||||
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
||||
->Attribute(AZ::Edit::Attributes::Category, "Debugging")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/DebugDrawSphere.svg")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/DebugDrawSphere.svg")
|
||||
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->DataElement(0, &EditorDebugDrawSphereComponent::m_element, "Sphere element settings", "Settings for the sphere element.")
|
||||
->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorDebugDrawSphereComponent::OnPropertyUpdate)
|
||||
|
||||
@@ -37,7 +37,7 @@ namespace DebugDraw
|
||||
"DebugDraw Text", "Draws debug text on the screen at this entity's location.")
|
||||
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
||||
->Attribute(AZ::Edit::Attributes::Category, "Debugging")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/DebugDrawText.svg")
|
||||
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/DebugDrawText.svg")
|
||||
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
|
||||
->DataElement(0, &EditorDebugDrawTextComponent::m_element, "Text element settings", "Settings for the text element.")
|
||||
->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorDebugDrawTextComponent::OnPropertyUpdate)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user