Updated the Default Project template to enable the "Standard" list of gems (#1325)

* Added a ModuleInterface class for sharing an AZ::Module implementation

The ModuleInterface class registers the SystemComponent that that comes
with the Client module and returns in it's GetRequiredSystemComponent
the Clients module SystemComponent

An EditorModule class has been added which inherits from the
ModuleInterface class and extends the registered SystemComponent
descriptors with it's SystemComponent.
It then overrides teh GetRequiredSystemComponent function and replaces
the required SystemComponent with it's Tools module SystemComponent

* Updated the DefaultProject list of Gems to match the decided Standard list of gems

* Updated the comment in the EditorModule constructor

The comment indicates that all component descriptors should be added to the m_descriptors list

* Added more detail to the ModuleInterface constructor about the registering the Component Descriptors
This commit is contained in:
lumberyard-employee-dm
2021-06-15 20:45:10 -05:00
committed by GitHub
parent 4014cacff8
commit b945e1689a
14 changed files with 169 additions and 106 deletions
@@ -0,0 +1,51 @@
// {BEGIN_LICENSE}
/*
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
* its licensors.
*
* For complete copyright and license terms please see the LICENSE at the root of this
* distribution (the "License"). All use of this software is governed by the License,
* or, if provided, by the license below or the license accompanying this file. Do not
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
*/
// {END_LICENSE}
#include <${Name}ModuleInterface.h>
#include <${Name}EditorSystemComponent.h>
namespace ${SanitizedCppName}
{
class ${SanitizedCppName}EditorModule
: public ${SanitizedCppName}ModuleInterface
{
public:
AZ_RTTI(${SanitizedCppName}EditorModule, "${ModuleClassId}", ${SanitizedCppName}ModuleInterface);
AZ_CLASS_ALLOCATOR(${SanitizedCppName}EditorModule, AZ::SystemAllocator, 0);
${SanitizedCppName}EditorModule()
{
// Push results of [MyComponent]::CreateDescriptor() into m_descriptors here.
// Add ALL components descriptors associated with this gem to m_descriptors.
// This will associate the AzTypeInfo information for the components with the the SerializeContext, BehaviorContext and EditContext.
// This happens through the [MyComponent]::Reflect() function.
m_descriptors.insert(m_descriptors.end(), {
${SanitizedCppName}EditorSystemComponent::CreateDescriptor(),
});
}
/**
* Add required SystemComponents to the SystemEntity.
* Non-SystemComponents should not be added here
*/
AZ::ComponentTypeList GetRequiredSystemComponents() const override
{
return AZ::ComponentTypeList {
azrtti_typeid<${SanitizedCppName}EditorSystemComponent>(),
};
}
};
}// namespace ${SanitizedCppName}
AZ_DECLARE_MODULE_CLASS(Gem_${SanitizedCppName}, ${SanitizedCppName}::${SanitizedCppName}EditorModule)