Merge branch 'development' of https://github.com/o3de/o3de into MultiplayerWeapons
This commit is contained in:
@@ -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>
|
||||
+9
-13
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user