Merge branch 'stabilization/2106' into Helios_LYN-3723-FixPBRNormalMapImport

This commit is contained in:
amzn-mike
2021-06-23 17:36:04 -05:00
151 changed files with 545 additions and 655 deletions
@@ -181,7 +181,7 @@ namespace AZ
//! @code{.cpp}
//! editContext->Class<ScriptEditorComponent>("Lua Script", "The Lua Script component allows you to add arbitrary Lua logic to an entity in the form of a Lua script")
//! ->ClassElement(AZ::Edit::ClassElements::EditorData, "")
//! ->Attribute(AZ::Edit::Attributes::HelpPageURL, "http://docs.aws.amazon.com/lumberyard/latest/userguide/component-lua-script.html")
//! ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/lua-script/")
//! @endcode
const static AZ::Crc32 HelpPageURL = AZ_CRC("HelpPageURL", 0xa344d681);
@@ -19,7 +19,7 @@
* API refernce for all tools developers that are extending Open 3D Engine. The API reference
* is intended for C++ programmers building tools. For UX designers looking to understand
* the best patterns and practices when making a tool to comfortably integrate with
* the Open 3D Engine editor, see the [UI 2.0 design guide](https://docs.aws.amazon.com/lumberyard/latest/ui/).
* the Open 3D Engine editor, see the [UI 2.0 design guide](https://docs.o3de.org/docs/tools-ui/ui-dev-intro/).
*/
#include <AzCore/PlatformDef.h>
@@ -64,7 +64,7 @@ AzQtComponents::CardHeader* header = ui->functionalCard->header();
header->setIcon(QIcon(":/Cards/img/UI20/Cards/slice_item.png"));
// Set the help url to open in a browser if the user clicks the help button
header->setHelpURL("https://aws.amazon.com/documentation/lumberyard/");
header->setHelpURL("https://docs.o3de.org/docs/");
// Clear the help url
header->clearHelpURL();
@@ -103,7 +103,7 @@ card->mockDisabledState(true);
ui->disabledCard->setTitle("Actually Disabled Card");
ui->disabledCard->setContentWidget(new QWidget());
ui->disabledCard->header()->setIcon(QIcon(QStringLiteral(":/stylesheet/img/search.svg")));
ui->disabledCard->header()->setHelpURL("https://aws.amazon.com/documentation/lumberyard/");
ui->disabledCard->header()->setHelpURL("https://docs.o3de.org/docs/");
ui->disabledCard->setSecondaryTitle("Secondary Title");
ui->disabledCard->setSecondaryContentWidget(new QWidget());
ui->disabledCard->setEnabled(false);
@@ -111,7 +111,7 @@ card->mockDisabledState(true);
ui->disabledCard2->setTitle("Mock Disabled Card");
ui->disabledCard2->setContentWidget(new QWidget());
ui->disabledCard2->header()->setIcon(QIcon(QStringLiteral(":/stylesheet/img/search.svg")));
ui->disabledCard2->header()->setHelpURL("https://aws.amazon.com/documentation/lumberyard/");
ui->disabledCard2->header()->setHelpURL("https://docs.o3de.org/docs/");
ui->disabledCard2->setSecondaryTitle("Secondary Title");
ui->disabledCard2->setSecondaryContentWidget(new QWidget());
ui->disabledCard2->mockDisabledState(true);
@@ -122,7 +122,7 @@ card->mockDisabledState(true);
// put in an example icon
AzQtComponents::CardHeader* header = ui->functionalCard->header();
header->setIcon(QIcon(":/Cards/img/UI20/Cards/slice_item.png"));
header->setHelpURL("https://aws.amazon.com/documentation/lumberyard/");
header->setHelpURL("https://docs.o3de.org/docs/");
connect(ui->addButton, &QPushButton::clicked, this, &CardPage::addNotification);
@@ -316,7 +316,7 @@ See the documentation linked above for more details.
)";
ui->exampleText->setHtml(exampleText);
ui->hyperlinkLabel->setText(QStringLiteral(R"(<a href="https://docs.aws.amazon.com/lumberyard/latest/userguide/component-entity-system-reflect-component.html">Reflected Property Editor docs</a>)"));
ui->hyperlinkLabel->setText(QStringLiteral(R"(<a href="https://docs.o3de.org/docs/user-guide/components/development/reflection/">Reflected Property Editor docs</a>)"));
}
ReflectedPropertyEditorPage::~ReflectedPropertyEditorPage()
@@ -51,7 +51,7 @@ namespace AzToolsFramework
connect(ui->SCRIPT_INPUT, &QLineEdit::textChanged, this, &CScriptTermDialog::OnScriptInputTextChanged);
connect(ui->SCRIPT_HELP, &QToolButton::clicked, this, &CScriptTermDialog::OnScriptHelp);
connect(ui->SCRIPT_DOCS, &QToolButton::clicked, this, []() {
QDesktopServices::openUrl(QUrl("https://docs.aws.amazon.com/lumberyard/latest/tutorials/tutorials-python.html"));
QDesktopServices::openUrl(QUrl("https://docs.o3de.org/docs/user-guide/scripting/"));
});
InitCompleter();
@@ -2670,7 +2670,7 @@ namespace AzToolsFramework
"You can also review and update your save locations in the AssetProcessorPlatformConfig.ini file.";
AZ_Error("Slice", false, errorMessage.c_str());
QString learnMoreLink(QObject::tr("https://docs.aws.amazon.com/console/lumberyard/slices/save"));
QString learnMoreLink(QObject::tr(""));
QString learnMoreDescription(QObject::tr(" <a href='%1'>Learn more</a>").arg(learnMoreLink));
// Display a pop-up, the logs are easy to miss. This will make sure a user who encounters this error immediately knows their slice save has failed.
@@ -1023,7 +1023,7 @@ namespace AzToolsFramework
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/LuaScript.svg")
->Attribute(AZ::Edit::Attributes::PrimaryAssetType, AZ::AzTypeInfo<AZ::ScriptAsset>::Uuid())
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Script.png")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.aws.amazon.com/lumberyard/latest/userguide/component-lua-script.html")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/lua-script/")
->DataElement("AssetRef", &ScriptEditorComponent::m_scriptAsset, "Script", "Which script to use")
->Attribute(AZ::Edit::Attributes::ChangeNotify, &ScriptEditorComponent::ScriptHasChanged)
->Attribute("BrowseIcon", ":/stylesheet/img/UI20/browse-edit-select-files.svg")
@@ -47,7 +47,7 @@ namespace AzToolsFramework
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Tag.png")
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Tag.png")
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://www.amazongames.com/")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components")
->DataElement(AZ::Edit::UIHandlers::Default, &EntitySearch_TestComponent1::m_boolValue, "Bool", "")
->DataElement(AZ::Edit::UIHandlers::Default, &EntitySearch_TestComponent1::m_intValue, "Int", "")
;
@@ -106,7 +106,7 @@ namespace AzToolsFramework
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Tag.png")
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Tag.png")
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://www.amazongames.com/")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components")
->DataElement(AZ::Edit::UIHandlers::Default, &EntitySearch_TestComponent2::m_floatValue, "Float", "")
;
}
@@ -118,7 +118,7 @@ namespace UnitTest
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Tag.png")
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Tag.png")
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://www.amazongames.com/")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components")
->DataElement(AZ::Edit::UIHandlers::Default, &Inspector_TestComponent2::m_data, "Data", "The component's Data");
}
}
@@ -187,7 +187,7 @@ namespace UnitTest
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Tag.png")
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Tag.png")
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://www.amazongames.com/")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components")
->DataElement(AZ::Edit::UIHandlers::Default, &Inspector_TestComponent3::m_data, "Data", "The component's Data");
}
}
+2 -2
View File
@@ -81,12 +81,12 @@ void CAboutDialog::mouseReleaseEvent(QMouseEvent* event)
void CAboutDialog::OnCustomerAgreement()
{
QDesktopServices::openUrl(QUrl(QStringLiteral("http://aws.amazon.com/agreement/")));
QDesktopServices::openUrl(QUrl(QStringLiteral("https://lfprojects.org/policies/terms-of-use/")));
}
void CAboutDialog::OnPrivacyNotice()
{
QDesktopServices::openUrl(QUrl(QStringLiteral("http://aws.amazon.com/privacy/")));
QDesktopServices::openUrl(QUrl(QStringLiteral("https://lfprojects.org/policies/privacy-policy/")));
}
#include <moc_AboutDialog.cpp>
+1 -1
View File
@@ -154,7 +154,7 @@
<item>
<widget class="ClickableLabel" name="m_transparentAgreement">
<property name="text">
<string>AWS Customer Agreement</string>
<string>Terms of Use</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
@@ -19,7 +19,7 @@ AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
static const char* g_assetProcessorLink = "<a href=\"https://docs.aws.amazon.com/console/lumberyard/userguide/asset-processor\">Asset Processor</a>";
static const char* g_assetProcessorLink = "<a href=\"https://docs.o3de.org/docs/user-guide/assets/pipeline/processor-ui/\">Asset Processor</a>";
static const char* g_copyFilesMessage = "The original file will remain outside of the project and the %1 will not monitor the file.";
static const char* g_moveFilesMessage = "The original file will be moved inside of the project and the %1 will monitor the file for changes.";
static const char* g_selectDestinationFilesPath = "AssetImporter/SelectDestinationFilesPath";
@@ -798,7 +798,7 @@ QMenu* LevelEditorMenuHandler::CreateHelpMenu()
auto text = lineEdit->text();
if (text.isEmpty())
{
QDesktopServices::openUrl(QUrl("https://aws.amazon.com/documentation/lumberyard/"));
QDesktopServices::openUrl(QUrl("https://docs.o3de.org/docs/"));
}
else
{
@@ -836,9 +836,6 @@ QMenu* LevelEditorMenuHandler::CreateHelpMenu()
// Documentation
auto documentationMenu = helpMenu.AddMenu(tr("Documentation"));
// Glossary
documentationMenu.AddAction(ID_DOCUMENTATION_GLOSSARY);
// Open 3D Engine Documentation
documentationMenu.AddAction(ID_DOCUMENTATION_O3DE);
@@ -854,9 +851,6 @@ QMenu* LevelEditorMenuHandler::CreateHelpMenu()
// Game Dev Blog
gameDevResourceMenu.AddAction(ID_DOCUMENTATION_GAMEDEVBLOG);
// GameDev Twitch Channel
gameDevResourceMenu.AddAction(ID_DOCUMENTATION_TWITCHCHANNEL);
// Forums
gameDevResourceMenu.AddAction(ID_DOCUMENTATION_FORUMS);
@@ -865,12 +859,6 @@ QMenu* LevelEditorMenuHandler::CreateHelpMenu()
helpMenu.AddSeparator();
// Give Us Feedback
helpMenu.AddAction(ID_DOCUMENTATION_FEEDBACK);
// Report a Bug???
// auto reportBugMenu = helpMenu.Get()->addAction(tr("Report a Bug"));
// About Open 3D Engine
helpMenu.AddAction(ID_APP_ABOUT);
+6 -32
View File
@@ -111,7 +111,6 @@ AZ_POP_DISABLE_WARNING
#include "LevelInfo.h"
#include "EditorPreferencesDialog.h"
#include "GraphicsSettingsDialog.h"
#include "FeedbackDialog/FeedbackDialog.h"
#include "AnimationContext.h"
#include "GotoPositionDlg.h"
@@ -355,17 +354,13 @@ void CCryEditApp::RegisterActionHandlers()
{
ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
ON_COMMAND(ID_APP_SHOW_WELCOME, OnAppShowWelcomeScreen)
ON_COMMAND(ID_DOCUMENTATION_GETTINGSTARTEDGUIDE, OnDocumentationGettingStartedGuide)
ON_COMMAND(ID_DOCUMENTATION_TUTORIALS, OnDocumentationTutorials)
ON_COMMAND(ID_DOCUMENTATION_GLOSSARY, OnDocumentationGlossary)
ON_COMMAND(ID_DOCUMENTATION_O3DE, OnDocumentationO3DE)
ON_COMMAND(ID_DOCUMENTATION_GAMELIFT, OnDocumentationGamelift)
ON_COMMAND(ID_DOCUMENTATION_RELEASENOTES, OnDocumentationReleaseNotes)
ON_COMMAND(ID_DOCUMENTATION_GAMEDEVBLOG, OnDocumentationGameDevBlog)
ON_COMMAND(ID_DOCUMENTATION_TWITCHCHANNEL, OnDocumentationTwitchChannel)
ON_COMMAND(ID_DOCUMENTATION_FORUMS, OnDocumentationForums)
ON_COMMAND(ID_DOCUMENTATION_AWSSUPPORT, OnDocumentationAWSSupport)
ON_COMMAND(ID_DOCUMENTATION_FEEDBACK, OnDocumentationFeedback)
ON_COMMAND(ID_FILE_EXPORT_SELECTEDOBJECTS, OnExportSelectedObjects)
ON_COMMAND(ID_EDIT_HOLD, OnEditHold)
ON_COMMAND(ID_EDIT_FETCH, OnEditFetch)
@@ -2012,40 +2007,33 @@ void CCryEditApp::OnUpdateShowWelcomeScreen(QAction* action)
&& !m_savingLevel);
}
// App command to open online documentation page
void CCryEditApp::OnDocumentationGettingStartedGuide()
{
QString webLink = tr("https://docs.aws.amazon.com/lumberyard/latest/gettingstartedguide");
QDesktopServices::openUrl(QUrl(webLink));
}
void CCryEditApp::OnDocumentationTutorials()
{
QString webLink = tr("https://www.youtube.com/amazonlumberyardtutorials");
QString webLink = tr("https://o3deorg.netlify.app/docs/learning-guide/");
QDesktopServices::openUrl(QUrl(webLink));
}
void CCryEditApp::OnDocumentationGlossary()
{
QString webLink = tr("https://docs.aws.amazon.com/lumberyard/userguide/glossary");
QString webLink = tr("https://docs.o3de.org/docs/user-guide/appendix/glossary/");
QDesktopServices::openUrl(QUrl(webLink));
}
void CCryEditApp::OnDocumentationO3DE()
{
QString webLink = tr("https://docs.aws.amazon.com/lumberyard/userguide");
QString webLink = tr("https://o3deorg.netlify.app/docs/");
QDesktopServices::openUrl(QUrl(webLink));
}
void CCryEditApp::OnDocumentationGamelift()
{
QString webLink = tr("https://docs.aws.amazon.com/gamelift/developerguide");
QString webLink = tr("https://docs.aws.amazon.com/gamelift/");
QDesktopServices::openUrl(QUrl(webLink));
}
void CCryEditApp::OnDocumentationReleaseNotes()
{
QString webLink = tr("https://docs.aws.amazon.com/lumberyard/releasenotes");
QString webLink = tr("https://o3deorg.netlify.app/docs/release-notes/");
QDesktopServices::openUrl(QUrl(webLink));
}
@@ -2055,15 +2043,9 @@ void CCryEditApp::OnDocumentationGameDevBlog()
QDesktopServices::openUrl(QUrl(webLink));
}
void CCryEditApp::OnDocumentationTwitchChannel()
{
QString webLink = tr("http://twitch.tv/amazongamedev");
QDesktopServices::openUrl(QUrl(webLink));
}
void CCryEditApp::OnDocumentationForums()
{
QString webLink = tr("https://gamedev.amazon.com/forums");
QString webLink = tr("https://o3deorg.netlify.app/community/");
QDesktopServices::openUrl(QUrl(webLink));
}
@@ -2073,14 +2055,6 @@ void CCryEditApp::OnDocumentationAWSSupport()
QDesktopServices::openUrl(QUrl(webLink));
}
void CCryEditApp::OnDocumentationFeedback()
{
FeedbackDialog dialog;
dialog.show();
dialog.adjustSize();
dialog.exec();
}
bool CCryEditApp::FixDanglingSharedMemory(const QString& sharedMemName) const
{
QSystemSemaphore sem(sharedMemName + "_sem", 1);
-3
View File
@@ -193,11 +193,8 @@ public:
void OnDocumentationGamelift();
void OnDocumentationReleaseNotes();
void OnDocumentationGameDevBlog();
void OnDocumentationGettingStartedGuide();
void OnDocumentationTwitchChannel();
void OnDocumentationForums();
void OnDocumentationAWSSupport();
void OnDocumentationFeedback();
void OnCommercePublish();
void OnCommerceMerch();
void SaveTagLocations();
@@ -1,41 +0,0 @@
/*
* Copyright (c) Contributors to the Open 3D Engine Project
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#include "EditorDefs.h"
#include "FeedbackDialog.h"
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
#include <FeedbackDialog/ui_FeedbackDialog.h>
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
namespace {
QString feedbackText = "<h3>We love getting feedback from our customers.</h3>"
"Feedback from our community helps us to constantly improve Open 3D Engine.<br/><br/>"
"In addition to using our forums and AWS support channels, you can always email us with your comments and suggestions at "
"<a href=\"mailto:o3de-feedback@amazon.com\" style=\"color: #4285F4;\">o3de-feedback@amazon.com</a>. "
"While we do not respond to everyone who submits feedback, we read everything and aspire to use your feedback to improve Open 3D Engine for everyone.";
}
FeedbackDialog::FeedbackDialog(QWidget* pParent)
: QDialog(pParent)
, ui(new Ui::FeedbackDialog)
{
ui->setupUi(this);
ui->feedbackLabel->setText(feedbackText);
resize(size().expandedTo(sizeHint()));
}
FeedbackDialog::~FeedbackDialog()
{
}
#include <FeedbackDialog/moc_FeedbackDialog.cpp>
@@ -1,31 +0,0 @@
/*
* Copyright (c) Contributors to the Open 3D Engine Project
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#pragma once
#if !defined(Q_MOC_RUN)
#include <QDialog>
#endif
namespace Ui {
class FeedbackDialog;
}
class QStringListModel;
class FeedbackDialog
: public QDialog
{
Q_OBJECT
public:
FeedbackDialog(QWidget* pParent = nullptr);
~FeedbackDialog();
private:
QScopedPointer<Ui::FeedbackDialog> ui;
};
@@ -1,80 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>FeedbackDialog</class>
<widget class="QWidget" name="FeedbackDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>580</width>
<height>204</height>
</rect>
</property>
<property name="focusPolicy">
<enum>Qt::TabFocus</enum>
</property>
<property name="windowTitle">
<string>Give us Feedback</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<item>
<widget class="QWidget" name="Contents" native="true">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QVBoxLayout" name="verticalLayout_3">
<property name="leftMargin">
<number>20</number>
</property>
<property name="topMargin">
<number>20</number>
</property>
<property name="rightMargin">
<number>20</number>
</property>
<property name="bottomMargin">
<number>20</number>
</property>
<item>
<widget class="QLabel" name="feedbackLabel">
<property name="text">
<string>&lt;h3&gt;We love putting in placeholder text for our dialogs. &lt;/h3&gt; Placeholder text like this helps us to see how this dialog will look in Qt Designer without having to recompile for every change.&lt;br/&gt;&lt;br/&gt;In addition to using placeholder text and placeholder text, you can always use this place holder text to hold your place and show how an html link will look. WHile we do not always use placeholder text like this text, we do use it when we are designing our dialog boxes and we know that the text will need to be in a localization file which we have not yet setup.</string>
</property>
<property name="textFormat">
<enum>Qt::RichText</enum>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources>
<include location="FeedbackDialog.qrc"/>
<include location="WelcomeScreenDialog.qrc"/>
</resources>
<connections/>
</ui>
-8
View File
@@ -1022,13 +1022,9 @@ void MainWindow::InitActions()
.Connect(&QAction::triggered, this, &MainWindow::RefreshStyle);
// Help actions
am->AddAction(ID_DOCUMENTATION_GETTINGSTARTEDGUIDE, tr("Getting Started"))
.SetReserved();
am->AddAction(ID_DOCUMENTATION_TUTORIALS, tr("Tutorials"))
.SetReserved();
am->AddAction(ID_DOCUMENTATION_GLOSSARY, tr("Glossary"))
.SetReserved();
am->AddAction(ID_DOCUMENTATION_O3DE, tr("Open 3D Engine Documentation"))
.SetReserved();
am->AddAction(ID_DOCUMENTATION_GAMELIFT, tr("GameLift Documentation"))
@@ -1038,15 +1034,11 @@ void MainWindow::InitActions()
am->AddAction(ID_DOCUMENTATION_GAMEDEVBLOG, tr("GameDev Blog"))
.SetReserved();
am->AddAction(ID_DOCUMENTATION_TWITCHCHANNEL, tr("GameDev Twitch Channel"))
.SetReserved();
am->AddAction(ID_DOCUMENTATION_FORUMS, tr("Forums"))
.SetReserved();
am->AddAction(ID_DOCUMENTATION_AWSSUPPORT, tr("AWS Support"))
.SetReserved();
am->AddAction(ID_DOCUMENTATION_FEEDBACK, tr("Give Us Feedback"))
.SetReserved();
am->AddAction(ID_APP_ABOUT, tr("&About Open 3D Engine"))
.SetStatusTip(tr("Display program information, version number and copyright"))
.SetReserved();
@@ -477,9 +477,6 @@ set(FILES
Export/OBJExporter.h
Export/OCMExporter.cpp
Export/OCMExporter.h
FeedbackDialog/FeedbackDialog.h
FeedbackDialog/FeedbackDialog.cpp
FeedbackDialog/FeedbackDialog.ui
EditorFileMonitor.cpp
EditorFileMonitor.h
Include/IEditorFileMonitor.h
@@ -199,7 +199,7 @@ namespace AssetBundler
void MainWindow::OnSupportClicked()
{
QDesktopServices::openUrl(
QStringLiteral("https://docs.aws.amazon.com/lumberyard/latest/userguide/asset-bundler-overview.html"));
QStringLiteral("https://docs.o3de.org/docs/user-guide/packaging/asset-bundler/"));
}
void MainWindow::ShowLogContextMenu(const QPoint& pos)
@@ -782,16 +782,6 @@ namespace AssetProcessor
}
// if we get here, we are good to go in terms of disk space and sources existing, so we make the best attempt we can.
// first, we broadcast the name of ALL of the outputs we are about to change:
for (const QPair<QString, QString>& filePair : outputsToCopy)
{
const QString& productAbsolutePath = filePair.second;
// note that this absolute path is a real file system path, and the following API requires normalized paths:
QString normalized = AssetUtilities::NormalizeFilePath(productAbsolutePath);
AssetProcessor::ProcessingJobInfoBus::Broadcast(&AssetProcessor::ProcessingJobInfoBus::Events::BeginCacheFileUpdate, normalized.toUtf8().constData());
}
// after we do the above notify its important that we do not early exit this function without undoing those locks.
bool anyFileFailed = false;
@@ -815,16 +805,6 @@ namespace AssetProcessor
AZ_TracePrintf(AssetBuilderSDK::WarningWindow, "Unable to change permission for the file: %s.\n", productAbsolutePath.toUtf8().data());
}
}
// once we're done, regardless of success or failure, we 'unlock' those files for further process.
// if we failed, also re-trigger them to rebuild (the bool param at the end of the ebus call)
for (const QPair<QString, QString>& filePair : outputsToCopy)
{
const QString& productAbsolutePath = filePair.second;
// note that this absolute path is a real file system path, and the following API requires normalized paths:
QString normalized = AssetUtilities::NormalizeFilePath(productAbsolutePath);
AssetProcessor::ProcessingJobInfoBus::Broadcast(&AssetProcessor::ProcessingJobInfoBus::Events::EndCacheFileUpdate, normalized.toUtf8().constData(), anyFileFailed);
}
return !anyFileFailed;
}
@@ -509,7 +509,7 @@ void MainWindow::OnRescanButtonClicked()
void MainWindow::OnSupportClicked(bool /*checked*/)
{
QDesktopServices::openUrl(
QStringLiteral("https://docs.aws.amazon.com/lumberyard/latest/userguide/asset-pipeline-processor.html"));
QStringLiteral("https://docs.o3de.org/docs/user-guide/assets/pipeline/"));
}
void MainWindow::EditConnection(const QModelIndex& index)
@@ -438,7 +438,7 @@ namespace AssetProcessor
void ProductAssetDetailsPanel::OnSupportClicked(bool /*checked*/)
{
QDesktopServices::openUrl(
QStringLiteral("https://docs.aws.amazon.com/lumberyard/latest/userguide/asset-bundler-assets-resolving.html"));
QStringLiteral("https://docs.o3de.org/docs/user-guide/packaging/asset-bundler/assets-resolving/"));
}
@@ -83,6 +83,10 @@ namespace AssetUtilsInternal
timer.start();
do
{
QString normalized = AssetUtilities::NormalizeFilePath(outputFile);
AssetProcessor::ProcessingJobInfoBus::Broadcast(
&AssetProcessor::ProcessingJobInfoBus::Events::BeginCacheFileUpdate, normalized.toUtf8().constData());
//Removing the old file if it exists
if (outFile.exists())
{
@@ -133,11 +137,19 @@ namespace AssetUtilsInternal
}
}
} while (!timer.hasExpired(waitTimeInSeconds * 1000)); //We will keep retrying until the timer has expired the inputted timeout
// once we're done, regardless of success or failure, we 'unlock' those files for further process.
// if we failed, also re-trigger them to rebuild (the bool param at the end of the ebus call)
QString normalized = AssetUtilities::NormalizeFilePath(outputFile);
AssetProcessor::ProcessingJobInfoBus::Broadcast(
&AssetProcessor::ProcessingJobInfoBus::Events::EndCacheFileUpdate, normalized.toUtf8().constData(), !operationSucceeded);
if (!operationSucceeded)
{
//operation failed for the given timeout
AZ_Warning(AssetProcessor::ConsoleChannel, false, "WARNING: Could not copy/move source %s to %s, giving up\n", sourceFile.toUtf8().constData(), outputFile.toUtf8().constData());
AZ_Warning(AssetProcessor::ConsoleChannel, false, "WARNING: Could not %s source from %s to %s, giving up\n",
isCopy ? "copy" : "move (via rename)",
sourceFile.toUtf8().constData(), outputFile.toUtf8().constData());
return false;
}
else if (failureOccurredOnce)
@@ -458,22 +458,20 @@ namespace AZ
decltype(boneAnimations) fillerAnimations;
// Go through all the animations and make sure we create animations for bones who's parents don't have an animation
// Go through all the animations and make sure we create placeholder animations for any bones missing them
for (auto&& anim : boneAnimations)
{
const aiNode* node = scene->mRootNode->FindNode(anim.first.c_str());
const aiNode* parent = node->mParent;
while (parent && parent != scene->mRootNode)
for (auto boneName : boneList)
{
if (!IsPivotNode(parent->mName))
if (!IsPivotNode(aiString(boneName.c_str())))
{
if (!boneAnimations.contains(parent->mName.C_Str()) &&
!fillerAnimations.contains(parent->mName.C_Str()))
if (!boneAnimations.contains(boneName) &&
!fillerAnimations.contains(boneName))
{
// Create 1 key for each type that just copies the current transform
ConsolidatedNodeAnim emptyAnimation;
aiMatrix4x4 globalTransform = GetConcatenatedLocalTransform(parent);
auto node = scene->mRootNode->FindNode(boneName.c_str());
aiMatrix4x4 globalTransform = GetConcatenatedLocalTransform(node);
aiVector3D position, scale;
aiQuaternion rotation;
@@ -490,13 +488,11 @@ namespace AZ
emptyAnimation.m_ownedScalingKeys.emplace_back(0, scale);
emptyAnimation.mScalingKeys = emptyAnimation.m_ownedScalingKeys.data();
fillerAnimations.insert(AZStd::make_pair(
parent->mName.C_Str(), AZStd::make_pair(anim.second.first, AZStd::move(emptyAnimation))));
fillerAnimations.insert(
AZStd::make_pair(boneName, AZStd::make_pair(anim.second.first, AZStd::move(emptyAnimation))));
}
}
parent = parent->mParent;
}
}
@@ -168,7 +168,7 @@ namespace ImageProcessingAtomEditor
void TexturePropertyEditor::OnHelp()
{
QString webLink = tr("https://docs.aws.amazon.com/console/lumberyard/texturepipeline");
QString webLink = tr("https://docs.o3de.org/docs/");
QDesktopServices::openUrl(QUrl(webLink));
}
@@ -37,9 +37,13 @@ namespace AZ
InitializeShaderOption();
m_shaderOptionInitialized = true;
}
m_shadowmapType = type;
const uint32_t typeIndex = aznumeric_cast<uint32_t>(type);
SetShaderVariantKeyFallbackValue();
}
void DepthExponentiationPass::SetShaderVariantKeyFallbackValue()
{
const uint32_t typeIndex = aznumeric_cast<uint32_t>(m_shadowmapType);
RPI::ShaderOptionGroup shaderOption = m_shader->CreateShaderOptionGroup();
shaderOption.SetValue(m_optionName, m_optionValues[typeIndex]);
@@ -54,6 +58,11 @@ namespace AZ
return m_shadowmapType;
}
void DepthExponentiationPass::BuildInternal()
{
InitializeShaderOption();
}
void DepthExponentiationPass::FrameBeginInternal(FramePrepareParams params)
{
if (!m_shaderOptionInitialized)
@@ -45,13 +45,16 @@ namespace AZ
explicit DepthExponentiationPass(const RPI::PassDescriptor& descriptor);
// RPI::Pass overrides...
void BuildInternal() override;
void FrameBeginInternal(FramePrepareParams params) override;
// Scope producer functions...
void CompileResources(const RHI::FrameGraphCompileContext& context) override;
void BuildCommandListInternal(const RHI::FrameGraphExecuteContext& context) override;
void InitializeShaderOption();
void SetShaderVariantKeyFallbackValue();
const Name m_optionName;
const AZStd::vector<Name> m_optionValues;
@@ -149,7 +149,7 @@ namespace AZ
// --- Utility functions ---
//! Queues the pass to have Build() and Initilize() called by the PassSystem on frame update
//! Queues the pass to have Build() and Initialize() called by the PassSystem on frame update
void QueueForBuildAndInitialization();
//! Queues the pass to have RemoveFromParent() called by the PassSystem on frame update
@@ -69,7 +69,7 @@ namespace AZ
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
->Attribute(
AZ::Edit::Attributes::HelpPageURL,
"https://docs.aws.amazon.com/lumberyard/latest/userguide/component-attachment.html")
"https://docs.o3de.org/docs/user-guide/components/reference/attachment/")
->DataElement(0, &EditorAttachmentComponent::m_targetId, "Target entity", "Attach to this entity.")
->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorAttachmentComponent::OnTargetIdChanged)
->DataElement(
@@ -48,7 +48,7 @@ namespace AZ
->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")
->Attribute(Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/atom/area-light/")
;
editContext->Class<AreaLightComponentController>(
@@ -38,7 +38,7 @@ namespace AZ
->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")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/atom/decal/")
;
editContext->Class<DecalComponentController>(
@@ -33,7 +33,7 @@ namespace AZ
->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")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/atom/")
;
editContext->Class<GridComponentController>(
@@ -33,7 +33,7 @@ namespace AZ
->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")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/atom/")
;
editContext->Class<ImageBasedLightComponentController>(
@@ -136,7 +136,7 @@ namespace AZ
->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")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/atom/")
->Attribute(AZ::Edit::Attributes::PrimaryAssetType, AZ::AzTypeInfo<RPI::MaterialAsset>::Uuid())
->DataElement(AZ::Edit::UIHandlers::MultiLineEdit, &EditorMaterialComponent::m_message, "Message", "")
->Attribute(AZ_CRC("PlaceholderText", 0xa23ec278), "Component cannot be edited with multiple entities selected")
@@ -43,7 +43,7 @@ namespace AZ
->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")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/atom/")
->Attribute(AZ::Edit::Attributes::PrimaryAssetType, AZ::AzTypeInfo<RPI::ModelAsset>::Uuid())
->DataElement(AZ::Edit::UIHandlers::Button, &EditorMeshComponent::m_addMaterialComponentFlag, "Add Material Component", "Add Material Component")
->Attribute(AZ::Edit::Attributes::NameLabelOverride, "")
@@ -31,7 +31,7 @@ namespace AZ
->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, "")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/atom/")
;
editContext->Class<PostFxLayerComponentController>(
@@ -31,7 +31,7 @@ namespace AZ
->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, "")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/atom/")
;
editContext->Class<HDRiSkyboxComponentController>(
@@ -31,7 +31,7 @@ namespace AZ
->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, "")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/atom/")
;
editContext->Class<PhysicalSkyComponentController>(
@@ -28,6 +28,6 @@ namespace SurfaceData
static constexpr const char* const s_componentDescription = "Enables a static mesh to emit surface tags";
static constexpr const char* const s_icon = "Editor/Icons/Components/SurfaceData.svg";
static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/SurfaceData.png";
static constexpr const char* const s_helpUrl = "https://docs.aws.amazon.com/console/lumberyard/surfacedata/mesh-surface-tag-emitter";
static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/";
};
}
@@ -1391,12 +1391,12 @@ namespace Audio
else
{
implFileEntryData->nAKBankID = AK_INVALID_BANK_ID;
g_audioImplLogger_wwise.Log(eALT_ERROR, "Failed to load file %s\n", fileEntryInfo->sFileName);
g_audioImplLogger_wwise.Log(eALT_ERROR, "Wwise failed to load bank '%s'\n", fileEntryInfo->sFileName);
}
}
else
{
g_audioImplLogger_wwise.Log(eALT_ERROR, "Invalid AudioFileEntryData passed to the Wwise implementation of RegisterInMemoryFile");
g_audioImplLogger_wwise.Log(eALT_ERROR, "Invalid AudioFileEntryData passed to RegisterInMemoryFile");
}
}
@@ -1422,12 +1422,12 @@ namespace Audio
}
else
{
g_audioImplLogger_wwise.Log(eALT_ERROR, "Wwise Failed to unregister in memory file %s\n", fileEntryInfo->sFileName);
g_audioImplLogger_wwise.Log(eALT_ERROR, "Wwise failed to unload bank '%s'\n", fileEntryInfo->sFileName);
}
}
else
{
g_audioImplLogger_wwise.Log(eALT_ERROR, "Invalid AudioFileEntryData passed to the Wwise implementation of UnregisterInMemoryFile");
g_audioImplLogger_wwise.Log(eALT_ERROR, "Invalid AudioFileEntryData passed to UnregisterInMemoryFile");
}
}
@@ -18,8 +18,7 @@ namespace Audio
: public AZ::SystemAllocator
{
public:
AZ_CLASS_ALLOCATOR(AudioSystemAllocator, AZ::SystemAllocator, 0)
AZ_TYPE_INFO(AudioSystemAllocator, "{AE15F55D-BD65-4666-B18B-9ED81999A85B}")
AZ_TYPE_INFO(AudioSystemAllocator, "{AE15F55D-BD65-4666-B18B-9ED81999A85B}");
///////////////////////////////////////////////////////////////////////////////////////////
// IAllocator
@@ -30,20 +29,20 @@ namespace Audio
const char* GetDescription() const override
{
return "Generic allocator for use in the Audio System Module.";
return "Generic allocator for use in the Audio System module";
}
///////////////////////////////////////////////////////////////////////////////////////////
};
using AudioSystemStdAllocator = AZ::AZStdAlloc<AZ::SystemAllocator>;
///////////////////////////////////////////////////////////////////////////////////////////////
class AudioImplAllocator final
: public AZ::SystemAllocator
{
public:
AZ_CLASS_ALLOCATOR(AudioImplAllocator, AZ::SystemAllocator, 0)
AZ_TYPE_INFO(AudioImplAllocator, "{197D999F-3093-4F9D-A9A0-BA9E2AAA11DC}")
AZ_TYPE_INFO(AudioImplAllocator, "{197D999F-3093-4F9D-A9A0-BA9E2AAA11DC}");
///////////////////////////////////////////////////////////////////////////////////////////
// IAllocator
@@ -54,13 +53,35 @@ namespace Audio
const char* GetDescription() const override
{
return "Generic allocator for use in the Audio Implementation Module.";
return "Generic allocator for use in the Audio Engine Implementation module";
}
///////////////////////////////////////////////////////////////////////////////////////////
};
using AudioImplStdAllocator = AZ::AZStdAlloc<AZ::SystemAllocator>;
///////////////////////////////////////////////////////////////////////////////////////////////
class AudioBankAllocator final
: public AZ::SystemAllocator
{
public:
AZ_TYPE_INFO(AudioBankAllocator, "{19E89718-400F-42F9-92C3-E7F0DC1CCC1F}");
///////////////////////////////////////////////////////////////////////////////////////////
// IAllocator
const char* GetName() const override
{
return "AudioBankAllocator";
}
const char* GetDescription() const override
{
return "Generic allocator for use by the Audio File Cache Manager for sound banks";
}
///////////////////////////////////////////////////////////////////////////////////////////
};
} // namespace Audio
@@ -8,4 +8,5 @@
set(FILES
AudioSystem_Traits_Platform.h
AudioSystem_Traits_Android.h
../Common/Default/AudioSystemGemSystemComponent_default.cpp
)
@@ -0,0 +1,67 @@
/*
* Copyright (c) Contributors to the Open 3D Engine Project
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#include <AudioAllocators.h>
#include <AudioLogger.h>
#include <SoundCVars.h>
namespace Audio::Platform
{
void InitializeAudioAllocators()
{
// Create audio system memory pool
if (!AZ::AllocatorInstance<AudioSystemAllocator>::IsReady())
{
const size_t heapSize = Audio::CVars::s_ATLMemorySize << 10;
AudioSystemAllocator::Descriptor allocDesc;
// Generic Allocator:
allocDesc.m_allocationRecords = true;
allocDesc.m_heap.m_numFixedMemoryBlocks = 1;
allocDesc.m_heap.m_fixedMemoryBlocksByteSize[0] = heapSize;
allocDesc.m_heap.m_fixedMemoryBlocks[0] = AZ::AllocatorInstance<AZ::OSAllocator>::Get().Allocate(
allocDesc.m_heap.m_fixedMemoryBlocksByteSize[0],
allocDesc.m_heap.m_memoryBlockAlignment
);
AZ::AllocatorInstance<AudioSystemAllocator>::Create(allocDesc);
}
// Create the Bank allocator...
if (!AZ::AllocatorInstance<AudioBankAllocator>::IsReady())
{
const size_t heapSize = Audio::CVars::s_FileCacheManagerMemorySize << 10;
AudioBankAllocator::Descriptor allocDesc;
allocDesc.m_allocationRecords = true;
allocDesc.m_heap.m_numFixedMemoryBlocks = 1;
allocDesc.m_heap.m_fixedMemoryBlocksByteSize[0] = heapSize;
allocDesc.m_heap.m_fixedMemoryBlocks[0] = AZ::AllocatorInstance<AZ::OSAllocator>::Get().Allocate(
allocDesc.m_heap.m_fixedMemoryBlocksByteSize[0],
allocDesc.m_heap.m_memoryBlockAlignment
);
AZ::AllocatorInstance<AudioBankAllocator>::Create(allocDesc);
}
}
void ShutdownAudioAllocators()
{
if (AZ::AllocatorInstance<Audio::AudioBankAllocator>::IsReady())
{
AZ::AllocatorInstance<Audio::AudioBankAllocator>::Destroy();
}
if (AZ::AllocatorInstance<Audio::AudioSystemAllocator>::IsReady())
{
AZ::AllocatorInstance<Audio::AudioSystemAllocator>::Destroy();
}
}
} // namespace Audio::Platform
@@ -8,4 +8,5 @@
set(FILES
AudioSystem_Traits_Platform.h
AudioSystem_Traits_Linux.h
../Common/Default/AudioSystemGemSystemComponent_default.cpp
)
@@ -8,4 +8,5 @@
set(FILES
AudioSystem_Traits_Platform.h
AudioSystem_Traits_Mac.h
../Common/Default/AudioSystemGemSystemComponent_default.cpp
)
@@ -8,4 +8,5 @@
set(FILES
AudioSystem_Traits_Platform.h
AudioSystem_Traits_Windows.h
../Common/Default/AudioSystemGemSystemComponent_default.cpp
)
@@ -8,4 +8,5 @@
set(FILES
AudioSystem_Traits_Platform.h
AudioSystem_Traits_iOS.h
../Common/Default/AudioSystemGemSystemComponent_default.cpp
)
@@ -32,6 +32,12 @@ namespace Audio
CSoundCVars g_audioCVars;
CAudioLogger g_audioLogger;
AZ::EnvironmentVariable<int*> g_audioVerbosityVar;
namespace Platform
{
void InitializeAudioAllocators();
void ShutdownAudioAllocators();
}
} // namespace Audio
namespace AudioSystemGem
@@ -79,6 +85,16 @@ namespace AudioSystemGem
AZ_UNUSED(dependent);
}
AudioSystemGemSystemComponent::AudioSystemGemSystemComponent()
{
Audio::Platform::InitializeAudioAllocators();
}
AudioSystemGemSystemComponent::~AudioSystemGemSystemComponent()
{
Audio::Platform::ShutdownAudioAllocators();
}
void AudioSystemGemSystemComponent::Init()
{
m_loseFocusRequest.nFlags = Audio::eARF_PRIORITY_HIGH;
@@ -110,48 +126,30 @@ namespace AudioSystemGem
bool AudioSystemGemSystemComponent::Initialize(const SSystemInitParams* initParams)
{
using namespace Audio;
// When nullptr is passed, create a NullAudioSystem instead of the real thing.
if (!initParams)
{
return CreateNullAudioSystem();
}
Audio::g_audioCVars.RegisterVariables();
g_audioCVars.RegisterVariables();
#if !defined(AUDIO_RELEASE)
Audio::g_audioVerbosityVar = AZ::Environment::CreateVariable<int*>("AudioLogVerbosity");
Audio::g_audioVerbosityVar.Set(&Audio::g_audioCVars.m_nAudioLoggingOptions);
g_audioVerbosityVar = AZ::Environment::CreateVariable<int*>("AudioLogVerbosity");
g_audioVerbosityVar.Set(&g_audioCVars.m_nAudioLoggingOptions);
#endif // !AUDIO_RELEASE
bool success = false;
// initialize audio system memory pool
if (!AZ::AllocatorInstance<Audio::AudioSystemAllocator>::IsReady())
{
const size_t poolSize = Audio::g_audioCVars.m_nATLPoolSize << 10;
Audio::AudioSystemAllocator::Descriptor allocDesc;
// Generic Allocator:
allocDesc.m_allocationRecords = true;
allocDesc.m_heap.m_numFixedMemoryBlocks = 1;
allocDesc.m_heap.m_fixedMemoryBlocksByteSize[0] = poolSize;
allocDesc.m_heap.m_fixedMemoryBlocks[0] = AZ::AllocatorInstance<AZ::OSAllocator>::Get().Allocate(
allocDesc.m_heap.m_fixedMemoryBlocksByteSize[0],
allocDesc.m_heap.m_memoryBlockAlignment
);
AZ::AllocatorInstance<Audio::AudioSystemAllocator>::Create(allocDesc);
}
if (CreateAudioSystem())
{
Audio::g_audioLogger.Log(Audio::eALT_ALWAYS, "AudioSystem created!");
g_audioLogger.Log(eALT_ALWAYS, "AudioSystem created!");
// Initialize the implementation module...
bool initImplSuccess = false;
Audio::Gem::AudioEngineGemRequestBus::BroadcastResult(initImplSuccess, &Audio::Gem::AudioEngineGemRequestBus::Events::Initialize);
Gem::AudioEngineGemRequestBus::BroadcastResult(initImplSuccess, &Gem::AudioEngineGemRequestBus::Events::Initialize);
if (initImplSuccess)
{
@@ -161,13 +159,13 @@ namespace AudioSystemGem
}
else
{
if (Audio::Gem::AudioEngineGemRequestBus::HasHandlers())
if (Gem::AudioEngineGemRequestBus::HasHandlers())
{
Audio::g_audioLogger.Log(Audio::eALT_ERROR, "The Audio Engine did not initialize correctly!");
g_audioLogger.Log(eALT_ERROR, "The Audio Engine did not initialize correctly!");
}
else
{
Audio::g_audioLogger.Log(Audio::eALT_WARNING, "Running without any AudioEngine!");
g_audioLogger.Log(eALT_WARNING, "Running without any AudioEngine!");
}
}
@@ -185,20 +183,16 @@ namespace AudioSystemGem
void AudioSystemGemSystemComponent::Release()
{
Audio::AudioSystemRequestBus::Broadcast(&Audio::AudioSystemRequestBus::Events::Release);
Audio::Gem::AudioEngineGemRequestBus::Broadcast(&Audio::Gem::AudioEngineGemRequestBus::Events::Release);
using namespace Audio;
AudioSystemRequestBus::Broadcast(&AudioSystemRequestBus::Events::Release);
Gem::AudioEngineGemRequestBus::Broadcast(&Gem::AudioEngineGemRequestBus::Events::Release);
// Delete the Audio System
// It should be the last object that is freed from the audio system memory pool before the allocator is destroyed.
m_audioSystem.reset();
if (AZ::AllocatorInstance<Audio::AudioSystemAllocator>::IsReady())
{
AZ::AllocatorInstance<Audio::AudioSystemAllocator>::Destroy();
}
Audio::g_audioVerbosityVar.Reset();
Audio::g_audioCVars.UnregisterVariables();
g_audioVerbosityVar.Reset();
g_audioCVars.UnregisterVariables();
GetISystem()->GetISystemEventDispatcher()->RemoveListener(this);
}
@@ -32,7 +32,6 @@ namespace AudioSystemGem
{
public:
AZ_COMPONENT(AudioSystemGemSystemComponent, "{55095EE9-38E6-485F-8314-DF35CDFECC6B}", AZ::Component);
static void Reflect(AZ::ReflectContext* context);
static void GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided);
@@ -40,6 +39,9 @@ namespace AudioSystemGem
static void GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required);
static void GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent);
AudioSystemGemSystemComponent();
~AudioSystemGemSystemComponent() override;
protected:
////////////////////////////////////////////////////////////////////////
// AZ::Component interface implementation
+2 -2
View File
@@ -505,7 +505,7 @@ namespace Audio
case eAMRT_LOSE_FOCUS:
{
#if !defined(AUDIO_RELEASE)
if (g_audioCVars.m_nIgnoreWindowFocus == 0 && (m_nFlags & eAIS_IS_MUTED) == 0)
if (!Audio::CVars::s_IgnoreWindowFocus && (m_nFlags & eAIS_IS_MUTED) == 0)
#endif // !AUDIO_RELEASE
{
auto it = m_cTriggers.find(ATLInternalControlIDs::LoseFocusTriggerID);
@@ -525,7 +525,7 @@ namespace Audio
case eAMRT_GET_FOCUS:
{
#if !defined(AUDIO_RELEASE)
if (g_audioCVars.m_nIgnoreWindowFocus == 0 && (m_nFlags & eAIS_IS_MUTED) == 0)
if (!Audio::CVars::s_IgnoreWindowFocus && (m_nFlags & eAIS_IS_MUTED) == 0)
#endif // !AUDIO_RELEASE
{
AudioSystemImplementationNotificationBus::Broadcast(&AudioSystemImplementationNotificationBus::Events::OnAudioSystemGetFocus);
@@ -383,7 +383,7 @@ namespace Audio
const AZ::Vector3 cPositionDelta = m_oPosition.GetPositionVec() - m_oPreviousPosition.GetPositionVec();
const float fCurrentVelocity = (1000.0f * cPositionDelta.GetLength()) / fUpdateIntervalMS; // fCurrentVelocity is given in units per second
if (AZ::GetAbs(fCurrentVelocity - m_fPreviousVelocity) > g_audioCVars.m_fVelocityTrackingThreshold)
if (AZ::GetAbs(fCurrentVelocity - m_fPreviousVelocity) > Audio::CVars::s_VelocityTrackingThreshold)
{
m_fPreviousVelocity = fCurrentVelocity;
SAudioRequest oRequest;
@@ -427,8 +427,8 @@ namespace Audio
///////////////////////////////////////////////////////////////////////////////////////////////////
bool CATLAudioObject::CanRunRaycasts() const
{
return Audio::s_EnableRaycasts // This is the CVar to enable/disable audio raycasts.
&& Audio::s_RaycastMinDistance < Audio::s_RaycastMaxDistance
return Audio::CVars::s_EnableRaycasts // This is the CVar to enable/disable audio raycasts.
&& Audio::CVars::s_RaycastMinDistance < Audio::CVars::s_RaycastMaxDistance
&& m_raycastProcessor.CanRun();
}
@@ -470,7 +470,7 @@ namespace Audio
info.UpdateContribution();
info.m_cached = true;
info.m_cacheTimerMs = Audio::s_RaycastCacheTimeMs;
info.m_cacheTimerMs = Audio::CVars::s_RaycastCacheTimeMs;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -495,7 +495,7 @@ namespace Audio
// Max extent is the s_RaycastMaxDistance, and use the distance embedded in the raycast request as a percent (inverse).
// Objects closer to the listener will have greater contribution amounts.
// Objects farther away will contribute less obstruction/occlusion, but distance attenuation will be the larger contributing factor.
const float maxDistance = static_cast<float>(s_RaycastMaxDistance);
const float maxDistance = static_cast<float>(Audio::CVars::s_RaycastMaxDistance);
float clampedDistance = AZ::GetClamp(m_raycastRequest.m_distance, 0.f, maxDistance);
float distanceScale = 1.f - (clampedDistance / maxDistance);
@@ -523,8 +523,8 @@ namespace Audio
RaycastProcessor::RaycastProcessor(const TAudioObjectID objectId, const SATLWorldPosition& objectPosition)
: m_rayInfos(s_maxRaysPerObject, RaycastInfo())
, m_position(objectPosition)
, m_obstructionValue(s_RaycastSmoothFactor, s_epsilon)
, m_occlusionValue(s_RaycastSmoothFactor, s_epsilon)
, m_obstructionValue(Audio::CVars::s_RaycastSmoothFactor, s_epsilon)
, m_occlusionValue(Audio::CVars::s_RaycastSmoothFactor, s_epsilon)
, m_audioObjectId(objectId)
, m_obstOccType(eAOOCT_IGNORE)
{
@@ -563,8 +563,8 @@ namespace Audio
}
}
m_obstructionValue.Update(s_RaycastSmoothFactor);
m_occlusionValue.Update(s_RaycastSmoothFactor);
m_obstructionValue.Update(Audio::CVars::s_RaycastSmoothFactor);
m_occlusionValue.Update(Audio::CVars::s_RaycastSmoothFactor);
}
///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -623,7 +623,7 @@ namespace Audio
const float distance = ray.GetLength();
// Prevent raycast when individual sources are not within the allowed distance range...
if (Audio::s_RaycastMinDistance >= distance || distance >= Audio::s_RaycastMaxDistance)
if (Audio::CVars::s_RaycastMinDistance >= distance || distance >= Audio::CVars::s_RaycastMaxDistance)
{
Reset();
return;
@@ -639,7 +639,7 @@ namespace Audio
constexpr float spreadDistanceMaxExtent = 10.f;
constexpr float spreadDistanceDelta = spreadDistanceMaxExtent - spreadDistanceMinExtent;
const float rayDistancePercent = (distance / Audio::s_RaycastMaxDistance);
const float rayDistancePercent = (distance / Audio::CVars::s_RaycastMaxDistance);
const float spreadDist = spreadDistanceMinExtent + rayDistancePercent * spreadDistanceDelta;
@@ -695,7 +695,7 @@ namespace Audio
// Set the pending flag to true, so the results aren't discarded.
m_rayInfos[rayIndex].m_pending = true;
// Set the distance in the request structure so it doesn't have the default.
m_rayInfos[rayIndex].m_raycastRequest.m_distance = (s_RaycastMaxDistance / 4.f);
m_rayInfos[rayIndex].m_raycastRequest.m_distance = (Audio::CVars::s_RaycastMaxDistance / 4.f);
}
}
@@ -809,7 +809,7 @@ namespace Audio
// Inspect triggers and apply filter (if set)...
TTriggerCountMap cTriggerCounts;
AZStd::string triggerFilter(g_audioCVars.m_pAudioTriggersDebugFilter->GetString());
auto triggerFilter = static_cast<AZ::CVarFixedString>(Audio::CVars::s_AudioTriggersDebugFilter);
AZStd::to_lower(triggerFilter.begin(), triggerFilter.end());
for (auto& trigger : m_cTriggers)
@@ -59,7 +59,7 @@ namespace Audio
///////////////////////////////////////////////////////////////////////////////////////////////////
CAudioEventManager::CAudioEventManager()
: m_oAudioEventPool(g_audioCVars.m_nAudioEventPoolSize, 1)
: m_oAudioEventPool(Audio::CVars::s_AudioEventPoolSize, 1)
#if !defined(AUDIO_RELEASE)
, m_pDebugNameStore(nullptr)
#endif // !AUDIO_RELEASE
@@ -284,7 +284,7 @@ namespace Audio
///////////////////////////////////////////////////////////////////////////////////////////////////
CAudioObjectManager::CAudioObjectManager(CAudioEventManager& refAudioEventManager)
: m_cObjectPool(g_audioCVars.m_nAudioObjectPoolSize, AudioObjectIDFactory::s_minValidAudioObjectID)
: m_cObjectPool(Audio::CVars::s_AudioObjectPoolSize, AudioObjectIDFactory::s_minValidAudioObjectID)
, m_fTimeSinceLastVelocityUpdateMS(0.0f)
, m_refAudioEventManager(refAudioEventManager)
#if !defined(AUDIO_RELEASE)
@@ -1782,7 +1782,7 @@ namespace Audio
fPosX += 20.0f;
fPosY += 17.0f;
AZStd::string triggerFilter(g_audioCVars.m_pAudioTriggersDebugFilter->GetString());
auto triggerFilter = static_cast<AZ::CVarFixedString>(Audio::CVars::s_AudioTriggersDebugFilter);
AZStd::to_lower(triggerFilter.begin(), triggerFilter.end());
for (auto& audioEventPair : m_cActiveAudioEvents)
@@ -1882,7 +1882,7 @@ namespace Audio
///////////////////////////////////////////////////////////////////////////////////////////////////
void CAudioObjectManager::DrawPerObjectDebugInfo(IRenderAuxGeom& rAuxGeom, const AZ::Vector3& rListenerPos) const
{
AZStd::string audioObjectFilter(g_audioCVars.m_pAudioObjectsDebugFilter->GetString());
auto audioObjectFilter = static_cast<AZ::CVarFixedString>(Audio::CVars::s_AudioObjectsDebugFilter);
AZStd::to_lower(audioObjectFilter.begin(), audioObjectFilter.end());
for (auto& audioObjectPair : m_cAudioObjects)
@@ -1894,7 +1894,7 @@ namespace Audio
bool bDraw = AudioDebugDrawFilter(audioObjectName, audioObjectFilter);
bDraw = bDraw && (g_audioCVars.m_nShowActiveAudioObjectsOnly == 0 || audioObject->HasActiveEvents());
bDraw = bDraw && (!Audio::CVars::s_ShowActiveAudioObjectsOnly || audioObject->HasActiveEvents());
if (bDraw)
{
@@ -1919,7 +1919,7 @@ namespace Audio
fPosX += 20.0f;
fPosY += 17.0f;
AZStd::string audioObjectFilter(g_audioCVars.m_pAudioObjectsDebugFilter->GetString());
auto audioObjectFilter = static_cast<AZ::CVarFixedString>(Audio::CVars::s_AudioObjectsDebugFilter);
AZStd::to_lower(audioObjectFilter.begin(), audioObjectFilter.end());
for (auto& audioObjectPair : m_cAudioObjects)
@@ -1931,7 +1931,7 @@ namespace Audio
bool bDraw = AudioDebugDrawFilter(audioObjectName, audioObjectFilter);
bool hasActiveEvents = audioObject->HasActiveEvents();
bDraw = bDraw && (g_audioCVars.m_nShowActiveAudioObjectsOnly == 0 || hasActiveEvents);
bDraw = bDraw && (!Audio::CVars::s_ShowActiveAudioObjectsOnly || hasActiveEvents);
if (bDraw)
{
@@ -385,7 +385,7 @@ namespace Audio
, m_memoryBlockAlignment(AUDIO_MEMORY_ALIGNMENT)
, m_flags(eAFF_NOTFOUND)
, m_dataScope(eADS_ALL)
// , m_memoryBlock(nullptr) // ToDo: Update to use non-legacy memory: LYN-3792
, m_memoryBlock(nullptr)
, m_implData(implData)
{
}
@@ -398,7 +398,7 @@ namespace Audio
size_t m_memoryBlockAlignment;
Flags<TATLEnumFlagsType> m_flags;
EATLDataScope m_dataScope;
// AZStd::unique_ptr<???> m_memoryBlock; // ToDo: Update to use non-legacy memory: LYN-3792
void* m_memoryBlock;
AZ::IO::FileRequestPtr m_asyncStreamRequest;
@@ -40,7 +40,8 @@ namespace Audio
///////////////////////////////////////////////////////////////////////////////////////////////////
void CAudioProxy::Initialize(const char* const sObjectName, const bool bInitAsync /* = true */)
{
if ((bInitAsync && g_audioCVars.m_nAudioProxiesInitType == 0) || g_audioCVars.m_nAudioProxiesInitType == 2)
auto audioProxiesInitType = static_cast<AZ::u32>(Audio::CVars::s_AudioProxiesInitType);
if ((bInitAsync && audioProxiesInitType == 0) || audioProxiesInitType == 2)
{
if ((m_nFlags & eAPF_WAITING_FOR_ID) == 0)
{
@@ -255,8 +256,8 @@ namespace Audio
if ((m_nFlags & eAPF_WAITING_FOR_ID) == 0)
{
// Update position only if the delta exceeds a given value.
if (g_audioCVars.m_fPositionUpdateThreshold <= 0.f // <-- no gating
|| !refPosition.GetPositionVec().IsClose(m_oPosition.GetPositionVec(), g_audioCVars.m_fPositionUpdateThreshold))
if (Audio::CVars::s_PositionUpdateThreshold <= 0.f // <-- no gating
|| !refPosition.GetPositionVec().IsClose(m_oPosition.GetPositionVec(), Audio::CVars::s_PositionUpdateThreshold))
{
m_oPosition = refPosition;
@@ -75,7 +75,7 @@ namespace Audio
CAudioSystem::CAudioSystem()
: m_bSystemInitialized(false)
{
m_apAudioProxies.reserve(g_audioCVars.m_nAudioObjectPoolSize);
m_apAudioProxies.reserve(Audio::CVars::s_AudioObjectPoolSize);
m_apAudioProxiesToBeFreed.reserve(16);
AudioSystemRequestBus::Handler::BusConnect();
@@ -247,7 +247,7 @@ namespace Audio
m_oATL.Initialize();
m_audioSystemThread.Activate(this);
for (int i = 0; i < g_audioCVars.m_nAudioObjectPoolSize; ++i)
for (AZ::u64 i = 0; i < Audio::CVars::s_AudioObjectPoolSize; ++i)
{
auto audioProxy = azcreate(CAudioProxy, (), Audio::AudioSystemAllocator, "AudioProxy");
m_apAudioProxies.push_back(audioProxy);
@@ -437,7 +437,7 @@ namespace Audio
return;
}
if (m_apAudioProxies.size() < g_audioCVars.m_nAudioObjectPoolSize)
if (m_apAudioProxies.size() < Audio::CVars::s_AudioObjectPoolSize)
{
m_apAudioProxies.push_back(audioProxy);
}
@@ -9,18 +9,19 @@
#include <FileCacheManager.h>
#include <AzCore/IO/IStreamer.h>
#include <AzCore/IO/Path/Path.h>
#include <AzCore/std/string/conversions.h>
#include <AzCore/std/parallel/binary_semaphore.h>
#include <AzCore/StringFunc/StringFunc.h>
#include <AzFramework/Archive/IArchive.h>
#include <AudioAllocators.h>
#include <AudioInternalInterfaces.h>
#include <IAudioSystemImplementation.h>
#include <SoundCVars.h>
#include <AudioSystem_Traits_Platform.h>
#include <IRenderAuxGeom.h>
#include <CryPath.h>
namespace Audio
{
@@ -42,7 +43,7 @@ namespace Audio
///////////////////////////////////////////////////////////////////////////////////////////////
void CFileCacheManager::Initialize()
{
AllocateHeap(static_cast<size_t>(g_audioCVars.m_nFileCacheManagerSize), "AudioFileCacheManager");
AllocateHeap(static_cast<size_t>(Audio::CVars::s_FileCacheManagerMemorySize), "AudioFileCacheManager");
AudioFileCacheManagerNotficationBus::Handler::BusConnect();
}
@@ -70,13 +71,7 @@ namespace Audio
{
if (size > 0)
{
// ToDo: Update to use non-legacy memory: LYN-3792
/*m_memoryHeap.reset(???);
if (m_memoryHeap.get())
{
m_maxByteTotal = size << 10;
}*/
m_maxByteTotal = size << 10;
}
}
@@ -536,7 +531,7 @@ namespace Audio
CATLAudioFileEntry* audioFileEntry = fileEntryIter->second;
AZ_Assert(audioFileEntry, "FileCacheManager - Audio file entry is null!");
// AZ_Assert(buffer == audioFileEntry->m_memoryBlock->GetData(), "FileCacheManager - The memory buffer doesn't match the file entry memory block!"); // ToDo: Update to use non-legacy memory: LYN-3792
AZ_Assert(buffer == audioFileEntry->m_memoryBlock, "FileCacheManager - The memory buffer doesn't match the file entry memory block!");
FinishCachingFileInternal(audioFileEntry, numBytesRead, streamer->GetRequestStatus(request));
}
}
@@ -563,16 +558,17 @@ namespace Audio
audioFileEntry->m_flags.AddFlags(eAFF_CACHED);
audioFileEntry->m_flags.ClearFlags(eAFF_LOADING);
#if !defined(AUDIO_RELEASE)
#if !defined(AUDIO_RELEASE)
audioFileEntry->m_timeCached = AZStd::chrono::system_clock::now();
#endif // !AUDIO_RELEASE
#endif // !AUDIO_RELEASE
SATLAudioFileEntryInfo fileEntryInfo;
fileEntryInfo.nMemoryBlockAlignment = audioFileEntry->m_memoryBlockAlignment;
// fileEntryInfo.pFileData = audioFileEntry->m_memoryBlock->GetData(); // ToDo: Update to use non-legacy memory: LYN-3792
fileEntryInfo.pFileData = audioFileEntry->m_memoryBlock;
fileEntryInfo.nSize = audioFileEntry->m_fileSize;
fileEntryInfo.pImplData = audioFileEntry->m_implData;
fileEntryInfo.sFileName = PathUtil::GetFile(audioFileEntry->m_filePath.c_str());
AZ::IO::PathView filePath{ audioFileEntry->m_filePath };
fileEntryInfo.sFileName = filePath.Filename().Native().data();
AudioSystemImplementationRequestBus::Broadcast(&AudioSystemImplementationRequestBus::Events::RegisterInMemoryFile, &fileEntryInfo);
success = true;
@@ -644,41 +640,40 @@ namespace Audio
}
///////////////////////////////////////////////////////////////////////////////////////////////
bool CFileCacheManager::AllocateMemoryBlockInternal([[maybe_unused]]CATLAudioFileEntry* const audioFileEntry)
bool CFileCacheManager::AllocateMemoryBlockInternal(CATLAudioFileEntry* const audioFileEntry)
{
// ToDo: Update to use non-legacy memory: LYN-3792
return false;
/*AZ_PROFILE_FUNCTION(AZ::Debug::ProfileCategory::Audio);
AZ_PROFILE_FUNCTION(AZ::Debug::ProfileCategory::Audio);
// Must not have valid memory yet.
AZ_Assert(!audioFileEntry->m_memoryBlock, "FileCacheManager AllocateMemoryBlockInternal - Memory appears to be set already!");
if (m_memoryHeap)
{
audioFileEntry->m_memoryBlock.reset(m_memoryHeap->AllocateBlock(audioFileEntry->m_fileSize, audioFileEntry->m_filePath.c_str(), audioFileEntry->m_memoryBlockAlignment));
}
audioFileEntry->m_memoryBlock = AZ::AllocatorInstance<AudioBankAllocator>::Get().Allocate(
audioFileEntry->m_fileSize,
audioFileEntry->m_memoryBlockAlignment,
0,
audioFileEntry->m_filePath.c_str(),
__FILE__, __LINE__);
if (!audioFileEntry->m_memoryBlock)
{
// Memory block is either full or too fragmented, let's try to throw everything out that can be removed and allocate again.
TryToUncacheFiles();
// And try again!
if (m_memoryHeap)
{
audioFileEntry->m_memoryBlock.reset(m_memoryHeap->AllocateBlock(audioFileEntry->m_fileSize, audioFileEntry->m_filePath.c_str(), audioFileEntry->m_memoryBlockAlignment));
}
// And try again
audioFileEntry->m_memoryBlock = AZ::AllocatorInstance<AudioBankAllocator>::Get().Allocate(
audioFileEntry->m_fileSize,
audioFileEntry->m_memoryBlockAlignment,
0,
audioFileEntry->m_filePath.c_str(),
__FILE__, __LINE__);
}
return (audioFileEntry->m_memoryBlock != nullptr);*/
return (audioFileEntry->m_memoryBlock != nullptr);
}
///////////////////////////////////////////////////////////////////////////////////////////////
void CFileCacheManager::UncacheFile(CATLAudioFileEntry* const audioFileEntry)
{
m_currentByteTotal -= audioFileEntry->m_fileSize;
if (audioFileEntry->m_asyncStreamRequest)
{
auto streamer = AZ::Interface<AZ::IO::IStreamer>::Get();
@@ -698,22 +693,36 @@ namespace Audio
audioFileEntry->m_asyncStreamRequest.reset();
}
// ToDo: Update to use non-legacy memory heap: LYN-3792
/*if (audioFileEntry->m_memoryBlock && audioFileEntry->m_memoryBlock->GetData())
if (audioFileEntry->m_memoryBlock)
{
SATLAudioFileEntryInfo fileEntryInfo;
fileEntryInfo.nMemoryBlockAlignment = audioFileEntry->m_memoryBlockAlignment;
fileEntryInfo.pFileData = audioFileEntry->m_memoryBlock->GetData();
fileEntryInfo.pFileData = audioFileEntry->m_memoryBlock;
fileEntryInfo.nSize = audioFileEntry->m_fileSize;
fileEntryInfo.pImplData = audioFileEntry->m_implData;
fileEntryInfo.sFileName = PathUtil::GetFile(audioFileEntry->m_filePath.c_str());
AZ::IO::PathView filePath{ audioFileEntry->m_filePath };
fileEntryInfo.sFileName = filePath.Filename().Native().data();
AudioSystemImplementationRequestBus::Broadcast(&AudioSystemImplementationRequestBus::Events::UnregisterInMemoryFile, &fileEntryInfo);
g_audioLogger.Log(eALT_COMMENT, "FileCacheManager - File Uncached: '%s'\n", fileEntryInfo.sFileName);
EAudioRequestStatus result = eARS_SUCCESS;
AudioSystemImplementationRequestBus::BroadcastResult(result, &AudioSystemImplementationRequestBus::Events::UnregisterInMemoryFile, &fileEntryInfo);
if (result == eARS_SUCCESS)
{
g_audioLogger.Log(eALT_COMMENT, "FileCacheManager - File Uncached: '%s'\n", fileEntryInfo.sFileName);
}
else
{
g_audioLogger.Log(eALT_COMMENT, "FileCacheManager - Unable to uncache file '%s'\n", fileEntryInfo.sFileName);
return;
}
}
audioFileEntry->m_memoryBlock.reset();*/
AZ::AllocatorInstance<AudioBankAllocator>::Get().DeAllocate(
audioFileEntry->m_memoryBlock,
audioFileEntry->m_fileSize,
audioFileEntry->m_memoryBlockAlignment
);
audioFileEntry->m_flags.ClearFlags(eAFF_CACHED | eAFF_REMOVABLE);
m_currentByteTotal -= audioFileEntry->m_fileSize;
AZ_Warning("FileCacheManager", audioFileEntry->m_useCount == 0, "Use-count of file '%s' is non-zero while uncaching it! Use Count: %d", audioFileEntry->m_filePath.c_str(), audioFileEntry->m_useCount);
audioFileEntry->m_useCount = 0;
@@ -745,19 +754,27 @@ namespace Audio
fileEntryInfo.pFileData = nullptr;
fileEntryInfo.nMemoryBlockAlignment = 0;
AZStd::string fileName(PathUtil::GetFile(audioFileEntry->m_filePath.c_str()));
AZ::IO::FixedMaxPath filePath{ audioFileEntry->m_filePath };
AZStd::string_view fileName{ filePath.Filename().Native() };
fileEntryInfo.pImplData = audioFileEntry->m_implData;
fileEntryInfo.sFileName = fileName.c_str();
fileEntryInfo.sFileName = fileName.data();
const char* fileLocation = nullptr;
AudioSystemImplementationRequestBus::BroadcastResult(fileLocation, &AudioSystemImplementationRequestBus::Events::GetAudioFileLocation, &fileEntryInfo);
audioFileEntry->m_filePath = fileLocation;
audioFileEntry->m_filePath += fileName.c_str();
if (fileLocation && fileLocation[0] != '\0')
{
audioFileEntry->m_filePath.assign(fileLocation);
audioFileEntry->m_filePath.append(fileName.data(), fileName.size());
}
else
{
AZ_WarningOnce("FileCacheManager", fileLocation != nullptr, "GetAudioFileLocation returned null when getting a localized file path! Path will not be changed.");
}
AZStd::to_lower(audioFileEntry->m_filePath.begin(), audioFileEntry->m_filePath.end());
audioFileEntry->m_fileSize = gEnv->pCryPak->FGetSize(audioFileEntry->m_filePath.c_str());
AZ_Assert(audioFileEntry->m_fileSize > 0, "FileCacheManager UpdateLocalizedFileEntryData - Expected file size to be greater than zero!");
AZ_Assert(audioFileEntry->m_fileSize > 0, "FileCacheManager - UpdateLocalizedFileEntryData expected file size to be greater than zero!");
}
///////////////////////////////////////////////////////////////////////////////////////////////
@@ -774,8 +791,7 @@ namespace Audio
if (!audioFileEntry->m_filePath.empty() && !audioFileEntry->m_flags.AreAnyFlagsActive(eAFF_CACHED | eAFF_LOADING))
{
// ToDo: Update to use non-legacy memory heap: LYN-3792
/*if (DoesRequestFitInternal(audioFileEntry->m_fileSize) && AllocateMemoryBlockInternal(audioFileEntry))
if (DoesRequestFitInternal(audioFileEntry->m_fileSize) && AllocateMemoryBlockInternal(audioFileEntry))
{
auto streamer = AZ::Interface<AZ::IO::IStreamer>::Get();
AZ_Assert(streamer, "FileCacheManager - Streamer should be ready!");
@@ -786,8 +802,8 @@ namespace Audio
{
AZ::IO::FileRequestPtr request = streamer->Read(
audioFileEntry->m_filePath.c_str(),
audioFileEntry->m_memoryBlock->GetData(),
audioFileEntry->m_memoryBlock->GetSize(),
audioFileEntry->m_memoryBlock,
audioFileEntry->m_fileSize,
audioFileEntry->m_fileSize,
AZ::IO::IStreamerTypes::s_deadlineNow,
AZ::IO::IStreamerTypes::s_priorityHigh);
@@ -815,8 +831,8 @@ namespace Audio
streamer->Read(
audioFileEntry->m_asyncStreamRequest,
audioFileEntry->m_filePath.c_str(),
audioFileEntry->m_memoryBlock->GetData(),
audioFileEntry->m_memoryBlock->GetSize(),
audioFileEntry->m_memoryBlock,
audioFileEntry->m_fileSize,
audioFileEntry->m_fileSize,
AZ::IO::IStreamerTypes::s_noDeadline,
AZ::IO::IStreamerTypes::s_priorityHigh);
@@ -841,24 +857,24 @@ namespace Audio
else
{
// Cannot have a valid memory block!
AZ_Assert(!audioFileEntry->m_memoryBlock || !audioFileEntry->m_memoryBlock->GetData(),
"FileCacheManager TryCacheFileCacheEntryInternal - Cannot have a valid memory block after memory allocation failure!");
AZ_Assert(audioFileEntry->m_memoryBlock == nullptr,
"FileCacheManager - Memory block should be null after memory allocation failure!");
// This unfortunately is a total memory allocation fail.
audioFileEntry->m_flags.AddFlags(eAFF_MEMALLOCFAIL);
// The user should be made aware of it.
g_audioLogger.Log(eALT_ERROR, "FileCacheManager: Could not cache '%s' - out of memory or fragmented memory!", audioFileEntry->m_filePath.c_str());
}*/
g_audioLogger.Log(eALT_ERROR, "FileCacheManager - Could not cache '%s' - out of memory or fragmented memory!", audioFileEntry->m_filePath.c_str());
}
}
else if (audioFileEntry->m_flags.AreAnyFlagsActive(eAFF_CACHED | eAFF_LOADING))
{
g_audioLogger.Log(eALT_COMMENT, "FileCacheManager: Skipping '%s' - it's either already loaded or currently loading!", audioFileEntry->m_filePath.c_str());
g_audioLogger.Log(eALT_COMMENT, "FileCacheManager - Skipping '%s' - it's either already loaded or currently loading!", audioFileEntry->m_filePath.c_str());
success = true;
}
else if (audioFileEntry->m_flags.AreAnyFlagsActive(eAFF_NOTFOUND))
{
g_audioLogger.Log(eALT_ERROR, "FileCacheManager: Could not cache '%s' - file was not found at the target location!", audioFileEntry->m_filePath.c_str());
g_audioLogger.Log(eALT_WARNING, "FileCacheManager - Could not cache '%s' - file was not found at that location!", audioFileEntry->m_filePath.c_str());
}
// Increment the used count on manually-loaded files.
@@ -97,7 +97,6 @@ namespace Audio
TATLPreloadRequestLookup& m_preloadRequests;
TAudioFileEntries m_audioFileEntries;
// AZStd::unique_ptr<???> m_memoryHeap; // ToDo: Update to use non-legacy memory: LYN-3792
size_t m_currentByteTotal;
size_t m_maxByteTotal;
};
@@ -17,11 +17,8 @@
#include <MicrophoneBus.h>
namespace Audio
namespace Audio::CVars
{
extern CAudioLogger g_audioLogger;
// CVar: s_EnableRaycasts
// Usage: s_EnableRaycasts=true (false)
AZ_CVAR(bool, s_EnableRaycasts, true,
@@ -93,7 +90,7 @@ namespace Audio
// CVar: s_RaycastSmoothFactor
// Usage: s_RaycastSmoothFactor=5.0
AZ_CVAR(float, s_RaycastSmoothFactor, 7.f,
[](const float& smoothFactor) ->void
[](const float& smoothFactor) -> void
{
static constexpr float s_absoluteMinRaycastSmoothFactor = 0.f;
static constexpr float s_absoluteMaxRaycastSmoothFactor = 10.f;
@@ -106,104 +103,97 @@ namespace Audio
"How slowly the smoothing of obstruction/occlusion values should smooth to target: delta / (smoothFactor^2 + 1). "
"Low values will smooth faster, high values will smooth slower.");
AZ_CVAR(AZ::u64, s_ATLMemorySize, AZ_TRAIT_AUDIOSYSTEM_ATL_POOL_SIZE,
nullptr, AZ::ConsoleFunctorFlags::Null,
"The size in KiB of memory to be used by the ATL/Audio System.\n"
"Usage: s_ATLMemorySize=" AZ_TRAIT_AUDIOSYSTEM_ATL_POOL_SIZE_DEFAULT_TEXT "\n");
AZ_CVAR(AZ::u64, s_FileCacheManagerMemorySize, AZ_TRAIT_AUDIOSYSTEM_FILE_CACHE_MANAGER_SIZE,
nullptr, AZ::ConsoleFunctorFlags::Null,
"The size in KiB the File Cache Manager will use for banks.\n"
"Usage: s_FileCacheManagerMemorySize=" AZ_TRAIT_AUDIOSYSTEM_FILE_CACHE_MANAGER_SIZE_DEFAULT_TEXT "\n");
AZ_CVAR(AZ::u64, s_AudioEventPoolSize, AZ_TRAIT_AUDIOSYSTEM_AUDIO_EVENT_POOL_SIZE,
nullptr, AZ::ConsoleFunctorFlags::Null,
"The number of audio events to preallocate in a pool.\n"
"Usage: s_AudioEventPoolSize=" AZ_TRAIT_AUDIOSYSTEM_AUDIO_EVENT_POOL_SIZE_DEFAULT_TEXT "\n");
AZ_CVAR(AZ::u64, s_AudioObjectPoolSize, AZ_TRAIT_AUDIOSYSTEM_AUDIO_OBJECT_POOL_SIZE,
nullptr, AZ::ConsoleFunctorFlags::Null,
"The number of audio objects to preallocate in a pool.\n"
"Usage: s_AudioObjectPoolSize=" AZ_TRAIT_AUDIOSYSTEM_AUDIO_OBJECT_POOL_SIZE_DEFAULT_TEXT "\n");
AZ_CVAR(float, s_PositionUpdateThreshold, 0.1f,
nullptr, AZ::ConsoleFunctorFlags::Null,
"An audio object needs to move by this distance in order to issue a position update to the audio system.\n"
"Usage: s_PositionUpdateThreshold=5.0\n");
AZ_CVAR(float, s_VelocityTrackingThreshold, 0.1f,
nullptr, AZ::ConsoleFunctorFlags::Null,
"An audio object needs to have its velocity changed by this amount in order to issue an 'object_speed' Rtpc update to the audio system.\n"
"Usage: s_VelocityTrackingThreshold=0.5\n");
AZ_CVAR(AZ::u32, s_AudioProxiesInitType, 0,
[](const AZ::u32& initType) -> void
{
static constexpr AZ::u32 s_numAudioProxyInitTypes = 3;
if (initType < s_numAudioProxyInitTypes)
{
s_AudioProxiesInitType = initType;
}
},
AZ::ConsoleFunctorFlags::Null,
"Overrides the initialization mode of audio proxies globally.\n"
"0: AudioProxy-specific initiaization (Default).\n"
"1: All AudioProxy's initialize synchronously.\n"
"2: All AudioProxy's initialize asynchronously.\n"
"Usage: s_AudioProxiesInitType=2\n");
#if !defined(AUDIO_RELEASE)
AZ_CVAR(bool, s_IgnoreWindowFocus, false,
nullptr, AZ::ConsoleFunctorFlags::Null,
"Determines whether application focus should issue events to the audio system or not.\n"
"false: Window focus event should be issued (Default).\n"
"true: Ignore window focus events.\n"
"Usage: s_IgnoreWindowFocus=true\n");
AZ_CVAR(bool, s_ShowActiveAudioObjectsOnly, false,
nullptr, AZ::ConsoleFunctorFlags::Null,
"Determines whether active or all audio objects should be drawn when debug drawing is enabled.\n"
"false: Draws all audio objects (Default).\n"
"true: Draws only active audio objects.\n"
"Usage: s_ShowActiveAudioObjectsOnly=true\n");
AZ_CVAR(AZ::CVarFixedString, s_AudioTriggersDebugFilter, "",
nullptr, AZ::ConsoleFunctorFlags::Null,
"Filters debug drawing to only audio triggers that match this filter as sub-string.\n"
"Usage: s_AudioTriggersDebugFilter=impact_hit\n");
AZ_CVAR(AZ::CVarFixedString, s_AudioObjectsDebugFilter, "",
nullptr, AZ::ConsoleFunctorFlags::Null,
"Filters debug drawing to only audio objects whose name matches this filter as a sub-string.\n"
"Usage: s_AudioObjectsDebugFilter=weapon_axe\n");
#endif // !AUDIO_RELEASE
} // namespace Audio::CVars
namespace Audio
{
extern CAudioLogger g_audioLogger;
///////////////////////////////////////////////////////////////////////////////////////////////////
CSoundCVars::CSoundCVars()
: m_nATLPoolSize(0)
, m_nFileCacheManagerSize(0)
, m_nAudioObjectPoolSize(0)
, m_nAudioEventPoolSize(0)
, m_nAudioProxiesInitType(0)
, m_fPositionUpdateThreshold(0.0f)
, m_fVelocityTrackingThreshold(0.0f)
, m_audioListenerTranslationPercentage(0.f)
, m_audioListenerTranslationZOffset(0.f)
#if !defined(AUDIO_RELEASE)
, m_nIgnoreWindowFocus(0)
, m_nDrawAudioDebug(0)
: m_nDrawAudioDebug(0)
, m_nFileCacheManagerDebugFilter(0)
, m_nAudioLoggingOptions(0)
, m_nShowActiveAudioObjectsOnly(0)
, m_pAudioTriggersDebugFilter(nullptr)
, m_pAudioObjectsDebugFilter(nullptr)
#endif // !AUDIO_RELEASE
{
}
///////////////////////////////////////////////////////////////////////////////////////////////////
CSoundCVars::~CSoundCVars()
{
}
///////////////////////////////////////////////////////////////////////////////////////////////////
void CSoundCVars::RegisterVariables()
{
m_nATLPoolSize = AZ_TRAIT_AUDIOSYSTEM_ATL_POOL_SIZE;
m_nAudioEventPoolSize = AZ_TRAIT_AUDIOSYSTEM_AUDIO_EVENT_POOL_SIZE;
m_nAudioObjectPoolSize = AZ_TRAIT_AUDIOSYSTEM_AUDIO_OBJECT_POOL_SIZE;
m_nFileCacheManagerSize = AZ_TRAIT_AUDIOSYSTEM_FILE_CACHE_MANAGER_SIZE;
// Common Cross-Platform Defaults
m_nAudioProxiesInitType = 0;
m_fPositionUpdateThreshold = 0.1f;
m_fVelocityTrackingThreshold = 0.1f;
REGISTER_CVAR2("s_ATLPoolSize", &m_nATLPoolSize, m_nATLPoolSize, VF_REQUIRE_APP_RESTART,
"Specifies the size (in KiB) of the memory pool to be used by the ATL.\n"
"Usage: s_ATLPoolSize [0/...]\n"
"Default: " AZ_TRAIT_AUDIOSYSTEM_ATL_POOL_SIZE_DEFAULT_TEXT "\n");
REGISTER_CVAR2("s_AudioEventPoolSize", &m_nAudioEventPoolSize, m_nAudioEventPoolSize, VF_REQUIRE_APP_RESTART,
"Sets the number of preallocated audio events.\n"
"Usage: s_AudioEventPoolSize [0/...]\n"
"Default: " AZ_TRAIT_AUDIOSYSTEM_AUDIO_EVENT_POOL_SIZE_DEFAULT_TEXT "\n");
REGISTER_CVAR2("s_AudioObjectPoolSize", &m_nAudioObjectPoolSize, m_nAudioObjectPoolSize, VF_REQUIRE_APP_RESTART,
"Sets the number of preallocated audio objects and corresponding audio proxies.\n"
"Usage: s_AudioObjectPoolSize [0/...]\n"
"Default: " AZ_TRAIT_AUDIOSYSTEM_AUDIO_OBJECT_POOL_SIZE_DEFAULT_TEXT "\n");
REGISTER_CVAR2("s_FileCacheManagerSize", &m_nFileCacheManagerSize, m_nFileCacheManagerSize, VF_REQUIRE_APP_RESTART,
"Sets the size in KiB the AFCM will allocate on the heap.\n"
"Usage: s_FileCacheManagerSize [0/...]\n"
"Default: " AZ_TRAIT_AUDIOSYSTEM_FILE_CACHE_MANAGER_SIZE_DEFAULT_TEXT "\n");
REGISTER_CVAR2("s_PositionUpdateThreshold", &m_fPositionUpdateThreshold, m_fPositionUpdateThreshold, VF_CHEAT | VF_CHEAT_NOCHECK,
"An audio object has to move by at least this amount to issue a position update request to the audio system.\n"
"This kind of optimization should ideally be done by the parent system so this is here for convenience.\n"
"Usage: s_PositionUpdateThreshold [0/...]\n"
"Default: 0.1 (10 cm)\n");
REGISTER_CVAR2("s_VelocityTrackingThreshold", &m_fVelocityTrackingThreshold, m_fVelocityTrackingThreshold, VF_CHEAT | VF_CHEAT_NOCHECK,
"An audio object has to change its velocity by at least this amount to issue an \"object_speed\" RTPC update request to the audio system.\n"
"Usage: s_VelocityTrackingThreshold [0/...]\n"
"Default: 0.1 (10 cm/s)\n");
REGISTER_CVAR2("s_AudioProxiesInitType", &m_nAudioProxiesInitType, m_nAudioProxiesInitType, VF_NULL,
"Can override AudioProxies' init type on a global scale.\n"
"If set it determines whether AudioProxies initialize synchronously or asynchronously.\n"
"This is a performance type cvar as asynchronously initializing AudioProxies\n"
"will have a greatly reduced impact on the calling thread.\n"
"Be aware though that when set to initialize asynchronously that audio will play back delayed.\n"
"By how much will greatly depend on the audio thread's work load.\n"
"0: AudioProxy specific initialization.\n"
"1: All AudioProxies initialize synchronously.\n"
"2: All AudioProxies initialize asynchronously.\n"
"Usage: s_AudioProxiesInitType [0/1/2]\n"
"Default: 0\n");
REGISTER_CVAR2("s_AudioListenerTranslationZOffset", &m_audioListenerTranslationZOffset, 0.f, VF_NULL,
"Use this to specify a Z-Offset (\"Up\") for the audio listener's position.\n"
"Usage: s_AudioListenerTranslationZOffset 1.3\n"
"Default: 0.0\n");
REGISTER_CVAR2("s_AudioListenerTranslationPercentage", &m_audioListenerTranslationPercentage, 0.f, VF_NULL,
"Use this to specify a percentage of translation of the audio listener between two points\n"
"(usually these are the camera's location and player's location).\n"
"Usage: s_AudioListenerTranslationPercentage [0.0..1.0]\n"
"Default: 0.0\n");
#if !defined(AUDIO_RELEASE)
REGISTER_COMMAND("s_ExecuteTrigger", CmdExecuteTrigger, VF_CHEAT,
"Execute an Audio Trigger.\n"
@@ -277,11 +267,6 @@ namespace Audio
"Usage: s_SetPanningMode headphones\n"
);
REGISTER_CVAR2("s_IgnoreWindowFocus", &m_nIgnoreWindowFocus, 0, VF_DEV_ONLY,
"If set to 1, the sound system will continue playing when the Editor or Game window loses focus.\n"
"Usage: s_IgnoreWindowFocus [0/1]\n"
"Default: 0 (off)\n");
REGISTER_CVAR2("s_DrawAudioDebug", &m_nDrawAudioDebug, 0, VF_CHEAT | VF_CHEAT_NOCHECK | VF_BITFIELD,
"Draws AudioTranslationLayer related debug data to the screen.\n"
"Usage: s_DrawAudioDebug [0ab...] (flags can be combined)\n"
@@ -317,40 +302,12 @@ namespace Audio
"a: Errors\n"
"b: Warnings\n"
"c: Comments\n");
REGISTER_CVAR2("s_ShowActiveAudioObjectsOnly", &m_nShowActiveAudioObjectsOnly, 1, VF_DEV_ONLY,
"When drawing audio object names on the screen this cvar can be used to choose between all registered audio objects or only those that reference active audio triggers.\n"
"Usage: s_ShowActiveAudioObjectsOnly [0/1]\n"
"Default: 1 (active only)\n");
m_pAudioTriggersDebugFilter = REGISTER_STRING("s_AudioTriggersDebugFilter", "", 0,
"Allows for filtered display of audio triggers by a search string.\n"
"Usage: s_AudioTriggersDebugFilter laser\n"
"Default: \"\" (all)\n");
m_pAudioObjectsDebugFilter = REGISTER_STRING("s_AudioObjectsDebugFilter", "", 0,
"Allows for filtered display of audio objects by a search string.\n"
"Usage: s_AudioObjectsDebugFilter spaceship.\n"
"Default: \"\" (all)\n");
#endif // !AUDIO_RELEASE
}
///////////////////////////////////////////////////////////////////////////////////////////////////
void CSoundCVars::UnregisterVariables()
{
UNREGISTER_CVAR("s_ATLPoolSize");
UNREGISTER_CVAR("s_PositionUpdateThreshold");
UNREGISTER_CVAR("s_VelocityTrackingThreshold");
UNREGISTER_CVAR("s_FileCacheManagerSize");
UNREGISTER_CVAR("s_AudioObjectPoolSize");
UNREGISTER_CVAR("s_AudioEventPoolSize");
UNREGISTER_CVAR("s_AudioProxiesInitType");
UNREGISTER_CVAR("s_AudioListenerTranslationYOffset");
UNREGISTER_CVAR("s_AudioListenerTranslationPercentage");
#if !defined(AUDIO_RELEASE)
UNREGISTER_COMMAND("s_ExecuteTrigger");
UNREGISTER_COMMAND("s_StopTrigger");
@@ -361,19 +318,14 @@ namespace Audio
UNREGISTER_COMMAND("s_PlayFile");
UNREGISTER_COMMAND("s_PlayExternalSource");
UNREGISTER_COMMAND("s_SetPanningMode");
UNREGISTER_CVAR("s_IgnoreWindowFocus");
UNREGISTER_CVAR("s_DrawAudioDebug");
UNREGISTER_CVAR("s_FileCacheManagerDebugFilter");
UNREGISTER_CVAR("s_AudioLoggingOptions");
UNREGISTER_CVAR("s_ShowActiveAudioObjectsOnly");
UNREGISTER_CVAR("s_AudioTriggersDebugFilter");
UNREGISTER_CVAR("s_AudioObjectsDebugFilter");
#endif // !AUDIO_RELEASE
}
#if !defined(AUDIO_RELEASE)
///////////////////////////////////////////////////////////////////////////////////////////////////
void CSoundCVars::CmdExecuteTrigger(IConsoleCmdArgs* pCmdArgs)
{
@@ -13,22 +13,41 @@
struct IConsoleCmdArgs;
namespace Audio
namespace Audio::CVars
{
///////////////////////////////////////////////////////////////////////////////////////////////////
// AZ CVars (new)
AZ_CVAR_EXTERNED(AZ::u64, s_ATLMemorySize);
AZ_CVAR_EXTERNED(AZ::u64, s_FileCacheManagerMemorySize);
AZ_CVAR_EXTERNED(AZ::u64, s_AudioObjectPoolSize);
AZ_CVAR_EXTERNED(AZ::u64, s_AudioEventPoolSize);
AZ_CVAR_EXTERNED(bool, s_EnableRaycasts);
AZ_CVAR_EXTERNED(float, s_RaycastMinDistance);
AZ_CVAR_EXTERNED(float, s_RaycastMaxDistance);
AZ_CVAR_EXTERNED(float, s_RaycastCacheTimeMs);
AZ_CVAR_EXTERNED(float, s_RaycastSmoothFactor);
AZ_CVAR_EXTERNED(float, s_PositionUpdateThreshold);
AZ_CVAR_EXTERNED(float, s_VelocityTrackingThreshold);
AZ_CVAR_EXTERNED(AZ::u32, s_AudioProxiesInitType);
#if !defined(AUDIO_RELEASE)
AZ_CVAR_EXTERNED(bool, s_IgnoreWindowFocus);
AZ_CVAR_EXTERNED(bool, s_ShowActiveAudioObjectsOnly);
AZ_CVAR_EXTERNED(AZ::CVarFixedString, s_AudioTriggersDebugFilter);
AZ_CVAR_EXTERNED(AZ::CVarFixedString, s_AudioObjectsDebugFilter);
#endif // !AUDIO_RELEASE
} // namespace Audio::CVars
namespace Audio
{
///////////////////////////////////////////////////////////////////////////////////////////////////
class CSoundCVars
{
public:
CSoundCVars();
~CSoundCVars();
~CSoundCVars() = default;
CSoundCVars(const CSoundCVars&) = delete; // Copy protection
CSoundCVars& operator=(const CSoundCVars&) = delete; // Copy protection
@@ -36,27 +55,10 @@ namespace Audio
void RegisterVariables();
void UnregisterVariables();
int m_nATLPoolSize;
int m_nFileCacheManagerSize;
int m_nAudioObjectPoolSize;
int m_nAudioEventPoolSize;
int m_nAudioProxiesInitType;
float m_fPositionUpdateThreshold;
float m_fVelocityTrackingThreshold;
float m_audioListenerTranslationZOffset;
float m_audioListenerTranslationPercentage;
#if !defined(AUDIO_RELEASE)
int m_nIgnoreWindowFocus;
int m_nDrawAudioDebug;
int m_nFileCacheManagerDebugFilter;
int m_nAudioLoggingOptions;
int m_nShowActiveAudioObjectsOnly;
ICVar* m_pAudioTriggersDebugFilter;
ICVar* m_pAudioObjectsDebugFilter;
private:
static void CmdExecuteTrigger(IConsoleCmdArgs* pCmdArgs);
@@ -106,7 +106,7 @@ namespace Camera
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Editor/Icons/Components/Viewport/Camera.png")
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.aws.amazon.com/lumberyard/latest/userguide/component-camera.html")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/camera/")
->UIElement(AZ::Edit::UIHandlers::Button,"", "Sets the view to this camera")
->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorCameraComponent::OnPossessCameraButtonClicked)
->Attribute(AZ::Edit::Attributes::ButtonText, &EditorCameraComponent::GetCameraViewButtonText)
@@ -125,7 +125,7 @@ namespace Camera
->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/CameraRig.svg")
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Editor/Icons/Components/Viewport/CameraRig.png")
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.aws.amazon.com/lumberyard/latest/userguide/component-camera-rig.html")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/camera-rig/")
->DataElement(0, &CameraRigComponent::m_targetAcquirers, "Target acquirers",
"A list of behaviors that define how a camera will select a target. They are executed in order until one succeeds")
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
@@ -461,12 +461,12 @@ namespace EMStudio
menu->addAction("Documentation", this, []
{
QDesktopServices::openUrl(QUrl("https://docs.aws.amazon.com/lumberyard/"));
QDesktopServices::openUrl(QUrl("https://docs.o3de.org/docs/"));
});
menu->addAction("Forums", this, []
{
QDesktopServices::openUrl(QUrl("https://forums.awsgametech.com/"));
QDesktopServices::openUrl(QUrl("https://docs.o3de.org/community/"));
});
menu->addSeparator();
@@ -66,7 +66,7 @@ namespace EMotionFX
->Attribute(AZ::Edit::Attributes::ViewportIcon, ":/EMotionFX/ActorComponent.svg")
->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-actor.html")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/actor/")
->DataElement(0, &EditorActorComponent::m_actorAsset,
"Actor asset", "Assigned actor asset")
->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorActorComponent::OnAssetSelected)
@@ -65,7 +65,7 @@ namespace EMotionFX
->Attribute(AZ::Edit::Attributes::ViewportIcon, ":/EMotionFX/AnimGraphComponent.svg")
->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-animgraph.html")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/animgraph/")
->DataElement(AZ::Edit::UIHandlers::Default, &EditorAnimGraphComponent::m_motionSetAsset,
"Motion set asset", "EMotion FX motion set asset to be loaded for this actor.")
->Attribute("EditButton", "")
@@ -51,7 +51,7 @@ namespace EMotionFX
->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorSimpleMotionComponent::OnEditorPropertyChanged)
->DataElement(0, &EditorSimpleMotionComponent::m_configuration, "Configuration", "Settings for this Simple Motion")
->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorSimpleMotionComponent::OnEditorPropertyChanged)
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.aws.amazon.com/lumberyard/latest/userguide/component-simple-motion.html")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/simple-motion/")
;
}
}
@@ -27,7 +27,7 @@ namespace FastNoiseGem
static constexpr const char* const s_componentDescription = "Generates gradient values using FastNoise a noise generation library with a collection of realtime noise algorithms";
static constexpr const char* const s_icon = "Editor/Icons/Components/Gradient.svg";
static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Gradient.png";
static constexpr const char* const s_helpUrl = "https://docs.aws.amazon.com/console/lumberyard/gradients/fast-noise-gradient";
static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/";
private:
AZ::Crc32 OnGenerateRandomSeed();
@@ -25,6 +25,6 @@ namespace GradientSignal
static constexpr const char* const s_componentDescription = "Returns a specified value as a gradient when sampled";
static constexpr const char* const s_icon = "Editor/Icons/Components/Gradient.svg";
static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Gradient.png";
static constexpr const char* const s_helpUrl = "https://docs.aws.amazon.com/console/lumberyard/gradients/constant-gradient";
static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/";
};
}
@@ -25,7 +25,7 @@ namespace GradientSignal
static constexpr const char* const s_componentDescription = "Applies ordered dithering to the input gradient";
static constexpr const char* const s_icon = "Editor/Icons/Components/GradientModifier.svg";
static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/GradientModifier.png";
static constexpr const char* const s_helpUrl = "https://docs.aws.amazon.com/console/lumberyard/gradientmodifiers/dither-gradient-modifier";
static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/";
protected:
AZ::u32 ConfigurationChanged() override;
@@ -32,7 +32,7 @@ namespace GradientSignal
static constexpr const char* const s_componentDescription = "Enables a gradient to emit surface tags";
static constexpr const char* const s_icon = "Editor/Icons/Components/SurfaceData.svg";
static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/SurfaceData.png";
static constexpr const char* const s_helpUrl = "https://docs.aws.amazon.com/console/lumberyard/surfacedata/gradient-surface-tag-emitter";
static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/";
private:
AZ::u32 ConfigurationChanged() override;
@@ -34,7 +34,7 @@ namespace GradientSignal
static constexpr const char* const s_componentDescription = "Transforms coordinates into a space relative to a shape, allowing other transform and sampling modifications";
static constexpr const char* const s_icon = "Editor/Icons/Components/GradientModifier.svg";
static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/GradientModifier.png";
static constexpr const char* const s_helpUrl = "https://docs.aws.amazon.com/console/lumberyard/gradients/gradient-transform-modifier";
static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/";
private:
AZ::u32 ConfigurationChanged() override;
@@ -25,6 +25,6 @@ namespace GradientSignal
static constexpr const char* const s_componentDescription = "Generates a gradient by sampling an image asset";
static constexpr const char* const s_icon = "Editor/Icons/Components/Gradient.svg";
static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Gradient.png";
static constexpr const char* const s_helpUrl = "https://docs.aws.amazon.com/console/lumberyard/gradients/image-gradient";
static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/";
};
}
@@ -25,6 +25,6 @@ namespace GradientSignal
static constexpr const char* const s_componentDescription = "Inverts a gradient's values";
static constexpr const char* const s_icon = "Editor/Icons/Components/GradientModifier.svg";
static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/GradientModifier.png";
static constexpr const char* const s_helpUrl = "https://docs.aws.amazon.com/console/lumberyard/gradientmodifiers/invert-gradient-modifier";
static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/";
};
}
@@ -25,6 +25,6 @@ namespace GradientSignal
static constexpr const char* const s_componentDescription = "Modifies an input gradient's signal using low/mid/high points and allows clamping of min/max output values";
static constexpr const char* const s_icon = "Editor/Icons/Components/GradientModifier.svg";
static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/GradientModifier.png";
static constexpr const char* const s_helpUrl = "https://docs.aws.amazon.com/console/lumberyard/gradientmodifiers/levels-gradient-modifier";
static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/";
};
}
@@ -57,7 +57,7 @@ namespace GradientSignal
static constexpr const char* const s_componentDescription = "Generates a new gradient by combining other gradients";
static constexpr const char* const s_icon = "Editor/Icons/Components/GradientModifier.svg";
static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/GradientModifier.png";
static constexpr const char* const s_helpUrl = "https://docs.aws.amazon.com/console/lumberyard/gradientmodifiers/gradient-mixer";
static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/";
protected:
@@ -26,7 +26,7 @@ namespace GradientSignal
static constexpr const char* const s_componentDescription = "Generates a gradient by sampling a perlin noise generator";
static constexpr const char* const s_icon = "Editor/Icons/Components/Gradient.svg";
static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Gradient.png";
static constexpr const char* const s_helpUrl = "https://docs.aws.amazon.com/console/lumberyard/gradients/perlin-noise-gradient";
static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/";
private:
AZ::Crc32 OnGenerateRandomSeed();
@@ -25,6 +25,6 @@ namespace GradientSignal
static constexpr const char* const s_componentDescription = "Divides an input gradient's signal into a specified number of bands";
static constexpr const char* const s_icon = "Editor/Icons/Components/GradientModifier.svg";
static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/GradientModifier.png";
static constexpr const char* const s_helpUrl = "https://docs.aws.amazon.com/console/lumberyard/gradientmodifiers/posterize-gradient-modifier";
static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/";
};
}
@@ -28,7 +28,7 @@ namespace GradientSignal
static constexpr const char* const s_componentDescription = "Generates a gradient by sampling a random noise generator";
static constexpr const char* const s_icon = "Editor/Icons/Components/Gradient.svg";
static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Gradient.png";
static constexpr const char* const s_helpUrl = "https://docs.aws.amazon.com/console/lumberyard/gradients/random-noise-gradient";
static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/";
private:
AZ::Crc32 OnGenerateRandomSeed();
@@ -25,6 +25,6 @@ namespace GradientSignal
static constexpr const char* const s_componentDescription = "References another gradient";
static constexpr const char* const s_icon = "Editor/Icons/Components/Gradient.svg";
static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Gradient.png";
static constexpr const char* const s_helpUrl = "https://docs.aws.amazon.com/console/lumberyard/gradients/reference-gradient";
static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/";
};
}
@@ -25,6 +25,6 @@ namespace GradientSignal
static constexpr const char* const s_componentDescription = "Generates a gradient based on distance from a shape";
static constexpr const char* const s_icon = "Editor/Icons/Components/Gradient.svg";
static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Gradient.png";
static constexpr const char* const s_helpUrl = "https://docs.aws.amazon.com/console/lumberyard/gradients/shape-falloff-gradient";
static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/";
};
}
@@ -25,6 +25,6 @@ namespace GradientSignal
static constexpr const char* const s_componentDescription = "Generates a gradient with fall off, which creates a smoother input gradient";
static constexpr const char* const s_icon = "Editor/Icons/Components/GradientModifier.svg";
static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/GradientModifier.png";
static constexpr const char* const s_helpUrl = "https://docs.aws.amazon.com/console/lumberyard/gradientmodifiers/smooth-step-gradient-modifier ";
static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/";
};
}
@@ -25,7 +25,7 @@ namespace GradientSignal
static constexpr const char* const s_componentDescription = "Generates a gradient based on height within a range";
static constexpr const char* const s_icon = "Editor/Icons/Components/Gradient.svg";
static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Gradient.png";
static constexpr const char* const s_helpUrl = "https://docs.aws.amazon.com/console/lumberyard/gradients/altitude-gradient";
static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/";
// AZ::Component interface
void Activate() override;
@@ -25,6 +25,6 @@ namespace GradientSignal
static constexpr const char* const s_componentDescription = "Generates a gradient based on underlying surface types";
static constexpr const char* const s_icon = "Editor/Icons/Components/Gradient.svg";
static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Gradient.png";
static constexpr const char* const s_helpUrl = "https://docs.aws.amazon.com/console/lumberyard/gradients/surface-mask-gradient";
static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/";
};
}
@@ -25,6 +25,6 @@ namespace GradientSignal
static constexpr const char* const s_componentDescription = "Generates a gradient based on surface angle";
static constexpr const char* const s_icon = "Editor/Icons/Components/Gradient.svg";
static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Gradient.png";
static constexpr const char* const s_helpUrl = "https://docs.aws.amazon.com/console/lumberyard/gradients/slope-gradient";
static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/";
};
}
@@ -25,6 +25,6 @@ namespace GradientSignal
static constexpr const char* const s_componentDescription = "Converts input gradient to be 0 if below the threshold or 1 if above the threshold";
static constexpr const char* const s_icon = "Editor/Icons/Components/GradientModifier.svg";
static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/GradientModifier.png";
static constexpr const char* const s_helpUrl = "https://docs.aws.amazon.com/console/lumberyard/gradientmodifiers/threshold-gradient-modifier";
static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/";
};
}
@@ -51,7 +51,7 @@ namespace LmbrCentral
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/NavigationArea.svg")
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/NavigationArea.png")
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.aws.amazon.com/lumberyard/latest/userguide/component-nav-area.html")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/nav-area/")
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
->DataElement(AZ::Edit::UIHandlers::CheckBox, &EditorNavigationAreaComponent::m_exclusion, "Exclusion", "Does this area add or subtract from the Navigation Mesh")
->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorNavigationAreaComponent::OnNavigationAreaChanged)
@@ -36,7 +36,7 @@ namespace LmbrCentral
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/NavigationSeed.svg")
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/NavigationSeed.png")
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.aws.amazon.com/lumberyard/latest/userguide/component-nav-seed.html")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/nav-seed/")
->DataElement(AZ::Edit::UIHandlers::ComboBox, &EditorNavigationSeedComponent::m_agentType, "Agent Type", "Describes the type of the Entity for navigation purposes.")
->Attribute(AZ::Edit::Attributes::StringList, &PopulateAgentTypeList)
->Attribute("ChangeNotify", &EditorNavigationSeedComponent::OnAgentTypeChanged);
@@ -126,7 +126,7 @@ namespace LmbrCentral
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Navigation.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-navigation.html")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/navigation/")
->DataElement(AZ::Edit::UIHandlers::Default, &NavigationComponent::m_agentSpeed, "Agent Speed",
"The speed of the agent while navigating ")
->DataElement(AZ::Edit::UIHandlers::ComboBox, &NavigationComponent::m_agentType, "Agent Type",
@@ -38,7 +38,7 @@ namespace LmbrCentral
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/AudioProxy.svg")
->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c))
->Attribute(AZ::Edit::Attributes::AddableByUser, true)
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.aws.amazon.com/lumberyard/latest/userguide/component-audio-proxy.html")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/audio-proxy/")
;
}
}
@@ -40,7 +40,7 @@ namespace LmbrCentral
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/AudioAreaEnvironment.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-audio-area-environment.html")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/audio-area-environment/")
->DataElement(AZ::Edit::UIHandlers::Default, &EditorAudioAreaEnvironmentComponent::m_broadPhaseTriggerArea,
"Broad-phase trigger area", "The entity that contains a Trigger Area component for broad-phase checks")
->Attribute(AZ::Edit::Attributes::RequiredService, AZ_CRC("ProximityTriggerService", 0x561f262c))
@@ -33,7 +33,7 @@ namespace LmbrCentral
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/AudioEnvironment.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-audio-environment.html")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/audio-environment/")
->DataElement("AudioControl", &EditorAudioEnvironmentComponent::m_defaultEnvironment, "Default Environment", "Name of the default ATL Environment control to use")
;
}
@@ -36,7 +36,7 @@ namespace LmbrCentral
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/AudioListener.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-audio-listener.html")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/audio-listener/")
->DataElement(AZ::Edit::UIHandlers::Default, &EditorAudioListenerComponent::m_rotationEntity,
"Rotation Entity", "The Entity whose rotation the audio listener will adopt. If none set, will assume 'this' Entity")
->DataElement(AZ::Edit::UIHandlers::Default, &EditorAudioListenerComponent::m_positionEntity,
@@ -42,7 +42,7 @@ namespace LmbrCentral
// Icon todo:
//->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/AudioPreload.png")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.aws.amazon.com/lumberyard/latest/userguide/component-audio-preload.html")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/audio-preload/")
->DataElement("AudioControl", &EditorAudioPreloadComponent::m_defaultPreload, "Preload Name", "The default ATL Preload control to use")
->DataElement(AZ::Edit::UIHandlers::ComboBox, &EditorAudioPreloadComponent::m_loadType, "Load Type", "Automatically when the component activates/deactivates, or Manually at user's request")
@@ -34,7 +34,7 @@ namespace LmbrCentral
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/AudioRtpc.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-audio-rtpc.html")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/audio-rtpc/")
->DataElement("AudioControl", &EditorAudioRtpcComponent::m_defaultRtpc, "Default Rtpc", "The default ATL Rtpc control to use")
;
}
@@ -34,7 +34,7 @@ namespace LmbrCentral
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/AudioSwitch.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-audio-switch.html")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/audio-switch/")
->DataElement("AudioControl", &EditorAudioSwitchComponent::m_defaultSwitch, "Default Switch", "The default ATL Switch to use when Activated")
->DataElement("AudioControl", &EditorAudioSwitchComponent::m_defaultState, "Default State", "The default ATL State to set on the default Switch when Activated")
;
@@ -43,7 +43,7 @@ namespace LmbrCentral
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/AudioTrigger.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-audio-trigger.html")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/audio-trigger/")
->DataElement("AudioControl", &EditorAudioTriggerComponent::m_defaultPlayTrigger, "Default 'play' Trigger", "The default ATL Trigger control used by 'Play'")
->DataElement("AudioControl", &EditorAudioTriggerComponent::m_defaultStopTrigger, "Default 'stop' Trigger", "The default ATL Trigger control used by 'Stop'")
->DataElement(AZ::Edit::UIHandlers::ComboBox, &EditorAudioTriggerComponent::m_obstructionType, "Obstruction Type", "Ray-casts used in calculation of obstruction and occlusion")
@@ -33,7 +33,7 @@ namespace LmbrCentral
->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)
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.aws.amazon.com/lumberyard/latest/userguide/component-comment.html")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/comment/")
->DataElement(AZ::Edit::UIHandlers::MultiLineEdit, &EditorCommentComponent::m_comment,"", "Comment")
->Attribute(AZ_CRC("PlaceholderText", 0xa23ec278), "Add comment text here");
}
@@ -40,7 +40,7 @@ namespace LmbrCentral
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Spawner.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-spawner.html")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/spawner/")
->DataElement(0, &EditorSpawnerComponent::m_sliceAsset, "Dynamic slice", "The slice to spawn")
->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorSpawnerComponent::SliceAssetChanged)
->DataElement(0, &EditorSpawnerComponent::m_spawnOnActivate, "Spawn on activate", "Should the component spawn the selected slice upon activation?")
@@ -37,7 +37,7 @@ namespace LmbrCentral
->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Tag.svg")
->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Tag.png")
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.aws.amazon.com/lumberyard/latest/userguide/component-tag.html")
->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/tag/")
->DataElement(AZ::Edit::UIHandlers::Default, &EditorTagComponent::m_tags, "Tags", "The tags that will be on this entity by default")
->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorTagComponent::OnTagChanged);
}

Some files were not shown because too many files have changed in this diff Show More