MCPcopy Create free account
hub / github.com/FlaxEngine/FlaxEngine / EndInvokeRPC

Method EndInvokeRPC

Source/Engine/Networking/NetworkReplicator.cpp:1820–1848  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1818}
1819
1820bool NetworkReplicator::EndInvokeRPC(ScriptingObject* obj, const ScriptingTypeHandle& type, const StringAnsiView& name, NetworkStream* argsStream, Span<uint32> targetIds)
1821{
1822 if (targetIds.IsValid() && targetIds.Length() == 0)
1823 return true; // Target list is provided, but it's empty so nobody will get this RPC
1824 Scripting::ObjectsLookupIdMapping.Set(nullptr);
1825 const NetworkRpcInfo* info = NetworkRpcInfo::RPCsTable.TryGet(NetworkRpcName(type, name));
1826 if (!info || !obj || NetworkManager::IsOffline())
1827 return false;
1828 PROFILE_MEM(Networking);
1829 ObjectsLock.Lock();
1830 auto& rpc = RpcQueue.AddOne();
1831 rpc.Object = obj;
1832 rpc.Name.First = type;
1833 rpc.Name.Second = name;
1834 rpc.Info = *info;
1835 rpc.ArgsData.Copy(Span<byte>(argsStream->GetBuffer(), argsStream->GetPosition()));
1836 rpc.Targets.Copy(targetIds);
1837 ObjectsLock.Unlock();
1838
1839 // Check if skip local execution (eg. server rpc called from client or client rpc with specific targets)
1840 const NetworkManagerMode networkMode = NetworkManager::Mode;
1841 if (info->Server && networkMode == NetworkManagerMode::Client)
1842 return true;
1843 if (info->Client && networkMode == NetworkManagerMode::Server)
1844 return true;
1845 if (info->Client && networkMode == NetworkManagerMode::Host && targetIds.IsValid() && !SpanContains(targetIds, NetworkManager::LocalClientId))
1846 return true;
1847 return false;
1848}
1849
1850void NetworkInternal::NetworkReplicatorClientConnected(NetworkClient* client)
1851{

Callers

nothing calls this directly

Calls 12

IsOfflineFunction · 0.85
SpanContainsFunction · 0.85
LockMethod · 0.80
AddOneMethod · 0.80
UnlockMethod · 0.80
IsValidMethod · 0.45
LengthMethod · 0.45
SetMethod · 0.45
TryGetMethod · 0.45
CopyMethod · 0.45
GetBufferMethod · 0.45
GetPositionMethod · 0.45

Tested by

no test coverage detected