Merge branch 'development' of https://github.com/o3de/o3de into MultiplayerWeapons

This commit is contained in:
kberg-amzn
2021-07-20 14:13:24 -07:00
2202 changed files with 18110 additions and 156389 deletions
@@ -459,6 +459,7 @@ namespace {{ Component.attrib['Namespace'] }}
{{ DeclareNetworkPropertyGetters(Component, 'Authority', 'Server', false)|indent(8) -}}
{{ DeclareNetworkPropertyGetters(Component, 'Authority', 'Client', false)|indent(8) -}}
{{ DeclareNetworkPropertyGetters(Component, 'Autonomous', 'Authority', false)|indent(8) -}}
{{ DeclareArchetypePropertyGetters(Component)|indent(8) -}}
{{ DeclareRpcInvocations(Component, 'Server', 'Authority', false)|indent(8) -}}
{{ AutoComponentMacros.DeclareRpcEventGetters(Component, 'Authority', 'Client')|indent(8) -}}
@@ -483,6 +484,7 @@ namespace {{ Component.attrib['Namespace'] }}
{{ DeclareNetworkPropertyGetters(Component, 'Authority', 'Server', true)|indent(8) -}}
{{ DeclareNetworkPropertyGetters(Component, 'Authority', 'Client', true)|indent(8) -}}
{{ DeclareNetworkPropertyGetters(Component, 'Autonomous', 'Authority', true)|indent(8) -}}
{{ DeclareRpcInvocations(Component, 'Server', 'Authority', true)|indent(8) -}}
{{ AutoComponentMacros.DeclareRpcHandlers(Component, 'Authority', 'Client', false)|indent(8) -}}
{{ AutoComponentMacros.DeclareRpcSignals(Component, 'Authority', 'Client')|indent(8) -}}
@@ -1540,8 +1540,10 @@ namespace {{ Component.attrib['Namespace'] }}
{{ DefineNetworkPropertyGets(Component, 'Authority', 'Server', false, ComponentBaseName)|indent(4) -}}
{{ DefineNetworkPropertyGets(Component, 'Authority', 'Client', false, ComponentBaseName)|indent(4) -}}
{{ DefineNetworkPropertyGets(Component, 'Autonomous', 'Authority', false, ComponentBaseName)|indent(4) -}}
{{ DefineNetworkPropertyGets(Component, 'Authority', 'Server', true, ComponentBaseName)|indent(4) -}}
{{ DefineNetworkPropertyGets(Component, 'Authority', 'Client', true, ComponentBaseName)|indent(4) }}
{{ DefineNetworkPropertyGets(Component, 'Autonomous', 'Authority', true, ComponentBaseName)|indent(4) }}
{{ DefineArchetypePropertyGets(Component, ClassType, ComponentBaseName)|indent(4) -}}
{{ DefineRpcInvocations(Component, ComponentBaseName, 'Server', 'Authority', false)|indent(4) -}}
{{ DefineRpcInvocations(Component, ComponentBaseName, 'Server', 'Authority', true)|indent(4) }}
@@ -6,7 +6,6 @@
*
*/
#include <Source/Multiplayer_precompiled.h>
#include <Source/Debug/MultiplayerDebugModule.h>
#include <Source/Debug/MultiplayerDebugSystemComponent.h>
@@ -6,7 +6,6 @@
*
*/
#include <Multiplayer_precompiled.h>
#include <MultiplayerGem.h>
#include <MultiplayerSystemComponent.h>
#include <Editor/MultiplayerEditorGem.h>
@@ -6,7 +6,6 @@
*
*/
#include <Source/Multiplayer_precompiled.h>
#include <Source/MultiplayerGem.h>
#include <Source/MultiplayerSystemComponent.h>
#include <Source/AutoGen/AutoComponentTypes.h>
@@ -660,6 +660,7 @@ namespace Multiplayer
AZStd::unique_ptr<IReplicationWindow> window = AZStd::make_unique<NullReplicationWindow>();
reinterpret_cast<ClientToServerConnectionData*>(connection->GetUserData())->GetReplicationManager().SetEntityActivationTimeSliceMs(cl_defaultNetworkEntityActivationTimeSliceMs);
reinterpret_cast<ClientToServerConnectionData*>(connection->GetUserData())->GetReplicationManager().SetReplicationWindow(AZStd::move(window));
}
}
@@ -6,7 +6,6 @@
*
*/
#include <Multiplayer_precompiled.h>
#include <MultiplayerToolsModule.h>
#include <Pipeline/NetworkPrefabProcessor.h>
@@ -1,12 +0,0 @@
/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#pragma once
#include <AzCore/Module/Module.h>
#include <AzNetworking/Framework/INetworking.h>
@@ -185,16 +185,14 @@ namespace Multiplayer
// Generate a list of all our entities that need updates
EntityReplicatorList toSendList;
uint32_t elementsAdded = 0;
for (auto iter = m_replicatorsPendingSend.begin(); iter != m_replicatorsPendingSend.end() && elementsAdded < m_replicationWindow->GetMaxEntityReplicatorSendCount(); )
uint32_t proxySendCount = 0;
for (auto iter = m_replicatorsPendingSend.begin(); iter != m_replicatorsPendingSend.end();)
{
EntityReplicator* replicator = GetEntityReplicator(*iter);
bool clearPendingSend = true;
if (replicator)
if (EntityReplicator* replicator = GetEntityReplicator(*iter))
{
NetEntityId entityId = replicator->GetEntityHandle().GetNetEntityId();
PropertyPublisher* propPublisher = replicator->GetPropertyPublisher();
if (propPublisher)
if (PropertyPublisher* propPublisher = replicator->GetPropertyPublisher())
{
// don't have too many replicators pending creation outstanding at a time
bool canSend = true;
@@ -220,19 +218,17 @@ namespace Multiplayer
m_remoteEntitiesPendingCreation.insert(entityId);
}
if (replicator->GetRemoteNetworkRole() == NetEntityRole::Autonomous)
if (replicator->GetRemoteNetworkRole() == NetEntityRole::Autonomous ||
replicator->GetBoundLocalNetworkRole() == NetEntityRole::Autonomous)
{
toSendList.push_back(replicator);
}
else
else if (proxySendCount < m_replicationWindow->GetMaxProxyEntityReplicatorSendCount())
{
if (elementsAdded < m_replicationWindow->GetMaxEntityReplicatorSendCount())
{
toSendList.push_back(replicator);
}
toSendList.push_back(replicator);
++proxySendCount;
}
}
++elementsAdded;
}
}
@@ -305,16 +305,12 @@ namespace Multiplayer
bool EntityReplicator::RemoteManagerOwnsEntityLifetime() const
{
bool ret(false);
bool isServer = (GetBoundLocalNetworkRole() == NetEntityRole::Server)
&& (GetRemoteNetworkRole() == NetEntityRole::Authority);
bool isClient = (GetBoundLocalNetworkRole() == NetEntityRole::Client)
|| (GetBoundLocalNetworkRole() == NetEntityRole::Autonomous);
if (isServer || isClient)
{
ret = true;
}
return ret;
return isServer || isClient;
}
void EntityReplicator::MarkForRemoval()
@@ -22,6 +22,14 @@ namespace Multiplayer
, m_pendingRecord(remoteNetworkRole)
, m_sentRecords(net_EntityReplicatorRecordsMax)
{
if ( ownsLifetime == OwnsLifetime::False )
{
// This entity is owned by some other authority; this publisher will only be used for updating (not creating).
// Since this replicator does not own it's lifetime, the remote replicator must exist (otherwise, we would never have created a replicator that doesn't own its lifetime).
m_remoteReplicatorEstablished = true;
m_replicatorState = EntityReplicatorState::Updating;
}
AZ_Assert(m_netBindComponent, "NetBindComponent is nullptr");
m_pendingRecord.SetRemoteNetworkRole(remoteNetworkRole);
}
@@ -20,7 +20,7 @@ namespace Multiplayer
return m_emptySet;
}
uint32_t NullReplicationWindow::GetMaxEntityReplicatorSendCount() const
uint32_t NullReplicationWindow::GetMaxProxyEntityReplicatorSendCount() const
{
return 0;
}
@@ -22,7 +22,7 @@ namespace Multiplayer
//! @{
bool ReplicationSetUpdateReady() override;
const ReplicationSet& GetReplicationSet() const override;
uint32_t GetMaxEntityReplicatorSendCount() const override;
uint32_t GetMaxProxyEntityReplicatorSendCount() const override;
bool IsInWindow(const ConstNetworkEntityHandle& entityPtr, NetEntityRole& outNetworkRole) const override;
void UpdateWindow() override;
void DebugDraw() const override;
@@ -85,7 +85,7 @@ namespace Multiplayer
return m_replicationSet;
}
uint32_t ServerToClientReplicationWindow::GetMaxEntityReplicatorSendCount() const
uint32_t ServerToClientReplicationWindow::GetMaxProxyEntityReplicatorSendCount() const
{
return m_isPoorConnection ? sv_MinEntitiesToReplicate : sv_MaxEntitiesToReplicate;
}
@@ -44,7 +44,7 @@ namespace Multiplayer
//! @{
bool ReplicationSetUpdateReady() override;
const ReplicationSet& GetReplicationSet() const override;
uint32_t GetMaxEntityReplicatorSendCount() const override;
uint32_t GetMaxProxyEntityReplicatorSendCount() const override;
bool IsInWindow(const ConstNetworkEntityHandle& entityPtr, NetEntityRole& outNetworkRole) const override;
void UpdateWindow() override;
void DebugDraw() const override;