Refactored away circular dependencies in Multiplayer gem.

Signed-off-by: Olex Lozitskiy <5432499+AMZN-Olex@users.noreply.github.com>
This commit is contained in:
Olex Lozitskiy
2021-11-16 20:29:15 -05:00
parent 38a03817bb
commit 89f4ebb298
5 changed files with 27 additions and 89 deletions
+7 -43
View File
@@ -85,52 +85,12 @@ ly_create_alias(NAME Multiplayer.Clients NAMESPACE Gem TARGETS Gem::Multiplayer
ly_create_alias(NAME Multiplayer.Servers NAMESPACE Gem TARGETS Gem::Multiplayer Gem::Multiplayer.Debug)
if (PAL_TRAIT_BUILD_HOST_TOOLS)
ly_add_target(
NAME Multiplayer.Builders.Static STATIC
NAMESPACE Gem
FILES_CMAKE
multiplayer_tools_files.cmake
COMPILE_DEFINITIONS
PUBLIC
MULTIPLAYER_TOOLS
INCLUDE_DIRECTORIES
PRIVATE
.
Source
${pal_source_dir}
PUBLIC
Include
BUILD_DEPENDENCIES
PUBLIC
AZ::AzToolsFramework
Gem::Multiplayer.Static
)
# by naming this target Multiplayer.Builders it ensures that it is loaded
# in any pipeline tools (Like Asset Processor, AssetBuilder, etc)
ly_add_target(
NAME Multiplayer.Builders GEM_MODULE
NAMESPACE Gem
FILES_CMAKE
multiplayer_tools_files.cmake
INCLUDE_DIRECTORIES
PRIVATE
Source
.
PUBLIC
Include
BUILD_DEPENDENCIES
PRIVATE
Gem::Multiplayer.Builders.Static
RUNTIME_DEPENDENCIES
Gem::Multiplayer.Editor
)
ly_add_target(
NAME Multiplayer.Editor GEM_MODULE
NAMESPACE Gem
FILES_CMAKE
multiplayer_editor_shared_files.cmake
multiplayer_tools_files.cmake
COMPILE_DEFINITIONS
PUBLIC
MULTIPLAYER_EDITOR
@@ -154,7 +114,8 @@ if (PAL_TRAIT_BUILD_HOST_TOOLS)
Gem::Multiplayer.Static
Gem::Multiplayer.Builders
)
ly_create_alias(NAME Multiplayer.Builders NAMESPACE Gem TARGETS Gem::Multiplayer.Editor)
# use the Multiplayer.Editor module in tools like the Editor: Such tools also get the visual debug view:
ly_create_alias(NAME Multiplayer.Tools NAMESPACE Gem TARGETS Gem::Multiplayer.Editor Gem::Multiplayer.Debug Gem::Multiplayer.Builders)
endif()
@@ -197,6 +158,7 @@ if (PAL_TRAIT_BUILD_TESTS_SUPPORTED)
NAMESPACE Gem
FILES_CMAKE
multiplayer_tools_tests_files.cmake
multiplayer_tools_files.cmake
INCLUDE_DIRECTORIES
PRIVATE
Tests
@@ -206,8 +168,10 @@ if (PAL_TRAIT_BUILD_TESTS_SUPPORTED)
PRIVATE
AZ::AzTest
AZ::AzTestShared
AZ::AzToolsFramework
AZ::AzToolsFrameworkTestCommon
Gem::Multiplayer.Builders.Static
AZ::AzNetworking
Gem::Multiplayer.Static
)
ly_add_googletest(
NAME Gem::Multiplayer.Builders.Tests
+17 -11
View File
@@ -6,10 +6,9 @@
*
*/
#include <MultiplayerToolsSystemComponent.h>
#include <AzNetworking/Framework/NetworkingSystemComponent.h>
#include <Multiplayer/Components/NetBindComponent.h>
#include <Multiplayer/Components/NetworkHierarchyChildComponent.h>
#include <Multiplayer/Components/NetworkHierarchyRootComponent.h>
#include <Source/MultiplayerGem.h>
#include <Source/MultiplayerSystemComponent.h>
#include <Source/AutoGen/AutoComponentTypes.h>
@@ -20,25 +19,32 @@ namespace Multiplayer
MultiplayerModule::MultiplayerModule()
: AZ::Module()
{
m_descriptors.insert(m_descriptors.end(), {
AzNetworking::NetworkingSystemComponent::CreateDescriptor(),
MultiplayerSystemComponent::CreateDescriptor(),
NetBindComponent::CreateDescriptor(),
NetworkSpawnableHolderComponent::CreateDescriptor(),
});
m_descriptors.insert(
m_descriptors.end(),
{
AzNetworking::NetworkingSystemComponent::CreateDescriptor(),
MultiplayerSystemComponent::CreateDescriptor(),
NetBindComponent::CreateDescriptor(),
NetworkSpawnableHolderComponent::CreateDescriptor(),
#ifdef MULTIPLAYER_EDITOR
MultiplayerToolsSystemComponent::CreateDescriptor(),
#endif
});
CreateComponentDescriptors(m_descriptors);
}
AZ::ComponentTypeList MultiplayerModule::GetRequiredSystemComponents() const
{
return AZ::ComponentTypeList
{
return AZ::ComponentTypeList{
azrtti_typeid<AzNetworking::NetworkingSystemComponent>(),
azrtti_typeid<MultiplayerSystemComponent>(),
#ifdef MULTIPLAYER_EDITOR
azrtti_typeid<MultiplayerToolsSystemComponent>(),
#endif
};
}
}
} // namespace Multiplayer
#if !defined(MULTIPLAYER_EDITOR)
AZ_DECLARE_MODULE_CLASS(Gem_Multiplayer, Multiplayer::MultiplayerModule);
@@ -6,7 +6,7 @@
*
*/
#include <MultiplayerToolsModule.h>
#include <MultiplayerToolsSystemComponent.h>
#include <Pipeline/NetworkPrefabProcessor.h>
#include <AzCore/Serialization/Json/RegistrationContext.h>
@@ -39,22 +39,4 @@ namespace Multiplayer
{
m_didProcessNetPrefabs = didProcessNetPrefabs;
}
MultiplayerToolsModule::MultiplayerToolsModule()
: AZ::Module()
{
m_descriptors.insert(m_descriptors.end(), {
MultiplayerToolsSystemComponent::CreateDescriptor(),
});
}
AZ::ComponentTypeList MultiplayerToolsModule::GetRequiredSystemComponents() const
{
return AZ::ComponentTypeList
{
azrtti_typeid<MultiplayerToolsSystemComponent>(),
};
}
} // namespace Multiplayer
AZ_DECLARE_MODULE_CLASS(Gem_Multiplayer_Tools, Multiplayer::MultiplayerToolsModule);
@@ -37,19 +37,5 @@ namespace Multiplayer
bool m_didProcessNetPrefabs = false;
};
class MultiplayerToolsModule
: public AZ::Module
{
public:
AZ_RTTI(MultiplayerToolsModule, "{3F726172-21FC-48FA-8CFA-7D87EBA07E55}", AZ::Module);
AZ_CLASS_ALLOCATOR(MultiplayerToolsModule, AZ::SystemAllocator, 0);
MultiplayerToolsModule();
~MultiplayerToolsModule() override = default;
AZ::ComponentTypeList GetRequiredSystemComponents() const override;
};
} // namespace Multiplayer
@@ -10,6 +10,6 @@ set(FILES
Include/Multiplayer/IMultiplayerTools.h
Source/Pipeline/NetworkPrefabProcessor.cpp
Source/Pipeline/NetworkPrefabProcessor.h
Source/MultiplayerToolsModule.h
Source/MultiplayerToolsModule.cpp
Source/MultiplayerToolsSystemComponent.cpp
Source/MultiplayerToolsSystemComponent.h
)