move RegisterSystemHandlers from ClientScene to NetworkClient. There is no reason why it should be in ClientScene, especially since it passes a NetworkClient, which is very strange. Additionally, not all delegates are in ClientScene anyway (like NetworkTime) (#473)

This commit is contained in:
vis2k 2019-03-01 11:38:00 +01:00 committed by GitHub
parent f0949f299e
commit fcc3f06feb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 46 additions and 51 deletions

View File

@ -190,42 +190,6 @@ internal static NetworkIdentity SpawnSceneObject(uint sceneId)
return null;
}
internal static void RegisterSystemHandlers(NetworkClient client, bool localClient)
{
// local client / regular client react to some messages differently.
// but we still need to add handlers for all of them to avoid
// 'message id not found' errors.
if (localClient)
{
client.RegisterHandler(MsgType.LocalClientAuthority, OnClientAuthority);
client.RegisterHandler(MsgType.ObjectDestroy, OnLocalClientObjectDestroy);
client.RegisterHandler(MsgType.ObjectHide, OnLocalClientObjectHide);
client.RegisterHandler(MsgType.Owner, (msg) => {});
client.RegisterHandler(MsgType.Pong, (msg) => {});
client.RegisterHandler(MsgType.SpawnPrefab, OnLocalClientSpawnPrefab);
client.RegisterHandler(MsgType.SpawnSceneObject, OnLocalClientSpawnSceneObject);
client.RegisterHandler(MsgType.SpawnStarted, (msg) => {});
client.RegisterHandler(MsgType.SpawnFinished, (msg) => {});
client.RegisterHandler(MsgType.UpdateVars, (msg) => {});
}
else
{
client.RegisterHandler(MsgType.LocalClientAuthority, OnClientAuthority);
client.RegisterHandler(MsgType.ObjectDestroy, OnObjectDestroy);
client.RegisterHandler(MsgType.ObjectHide, OnObjectDestroy);
client.RegisterHandler(MsgType.Owner, OnOwnerMessage);
client.RegisterHandler(MsgType.Pong, NetworkTime.OnClientPong);
client.RegisterHandler(MsgType.SpawnPrefab, OnSpawnPrefab);
client.RegisterHandler(MsgType.SpawnSceneObject, OnSpawnSceneObject);
client.RegisterHandler(MsgType.SpawnStarted, OnObjectSpawnStarted);
client.RegisterHandler(MsgType.SpawnFinished, OnObjectSpawnFinished);
client.RegisterHandler(MsgType.UpdateVars, OnUpdateVarsMessage);
}
client.RegisterHandler(MsgType.Rpc, OnRPCMessage);
client.RegisterHandler(MsgType.SyncEvent, OnSyncEventMessage);
}
// spawn handlers and prefabs //////////////////////////////////////////
internal static bool GetPrefab(Guid assetId, out GameObject prefab)
{
@ -408,7 +372,7 @@ static void ApplySpawnPayload(NetworkIdentity identity, Vector3 position, Quater
}
}
static void OnSpawnPrefab(NetworkMessage netMsg)
internal static void OnSpawnPrefab(NetworkMessage netMsg)
{
SpawnPrefabMessage msg = netMsg.ReadMessage<SpawnPrefabMessage>();
@ -469,7 +433,7 @@ static void OnSpawnPrefab(NetworkMessage netMsg)
}
}
static void OnSpawnSceneObject(NetworkMessage netMsg)
internal static void OnSpawnSceneObject(NetworkMessage netMsg)
{
SpawnSceneObjectMessage msg = netMsg.ReadMessage<SpawnSceneObjectMessage>();
@ -498,7 +462,7 @@ static void OnSpawnSceneObject(NetworkMessage netMsg)
ApplySpawnPayload(spawnedId, msg.position, msg.rotation, msg.payload, msg.netId);
}
static void OnObjectSpawnStarted(NetworkMessage netMsg)
internal static void OnObjectSpawnStarted(NetworkMessage netMsg)
{
if (LogFilter.Debug) { Debug.Log("SpawnStarted"); }
@ -506,7 +470,7 @@ static void OnObjectSpawnStarted(NetworkMessage netMsg)
s_IsSpawnFinished = false;
}
static void OnObjectSpawnFinished(NetworkMessage netMsg)
internal static void OnObjectSpawnFinished(NetworkMessage netMsg)
{
if (LogFilter.Debug) { Debug.Log("SpawnFinished"); }
@ -524,7 +488,7 @@ static void OnObjectSpawnFinished(NetworkMessage netMsg)
s_IsSpawnFinished = true;
}
static void OnObjectDestroy(NetworkMessage netMsg)
internal static void OnObjectDestroy(NetworkMessage netMsg)
{
ObjectDestroyMessage msg = netMsg.ReadMessage<ObjectDestroyMessage>();
if (LogFilter.Debug) { Debug.Log("ClientScene::OnObjDestroy netId:" + msg.netId); }
@ -556,7 +520,7 @@ static void OnObjectDestroy(NetworkMessage netMsg)
}
}
static void OnLocalClientObjectDestroy(NetworkMessage netMsg)
internal static void OnLocalClientObjectDestroy(NetworkMessage netMsg)
{
ObjectDestroyMessage msg = netMsg.ReadMessage<ObjectDestroyMessage>();
if (LogFilter.Debug) { Debug.Log("ClientScene::OnLocalObjectObjDestroy netId:" + msg.netId); }
@ -564,7 +528,7 @@ static void OnLocalClientObjectDestroy(NetworkMessage netMsg)
NetworkIdentity.spawned.Remove(msg.netId);
}
static void OnLocalClientObjectHide(NetworkMessage netMsg)
internal static void OnLocalClientObjectHide(NetworkMessage netMsg)
{
ObjectDestroyMessage msg = netMsg.ReadMessage<ObjectDestroyMessage>();
if (LogFilter.Debug) { Debug.Log("ClientScene::OnLocalObjectObjHide netId:" + msg.netId); }
@ -575,7 +539,7 @@ static void OnLocalClientObjectHide(NetworkMessage netMsg)
}
}
static void OnLocalClientSpawnPrefab(NetworkMessage netMsg)
internal static void OnLocalClientSpawnPrefab(NetworkMessage netMsg)
{
SpawnPrefabMessage msg = netMsg.ReadMessage<SpawnPrefabMessage>();
@ -585,7 +549,7 @@ static void OnLocalClientSpawnPrefab(NetworkMessage netMsg)
}
}
static void OnLocalClientSpawnSceneObject(NetworkMessage netMsg)
internal static void OnLocalClientSpawnSceneObject(NetworkMessage netMsg)
{
SpawnSceneObjectMessage msg = netMsg.ReadMessage<SpawnSceneObjectMessage>();
@ -595,7 +559,7 @@ static void OnLocalClientSpawnSceneObject(NetworkMessage netMsg)
}
}
static void OnUpdateVarsMessage(NetworkMessage netMsg)
internal static void OnUpdateVarsMessage(NetworkMessage netMsg)
{
UpdateVarsMessage msg = netMsg.ReadMessage<UpdateVarsMessage>();
@ -611,7 +575,7 @@ static void OnUpdateVarsMessage(NetworkMessage netMsg)
}
}
static void OnRPCMessage(NetworkMessage netMsg)
internal static void OnRPCMessage(NetworkMessage netMsg)
{
RpcMessage msg = netMsg.ReadMessage<RpcMessage>();
@ -623,7 +587,7 @@ static void OnRPCMessage(NetworkMessage netMsg)
}
}
static void OnSyncEventMessage(NetworkMessage netMsg)
internal static void OnSyncEventMessage(NetworkMessage netMsg)
{
SyncEventMessage msg = netMsg.ReadMessage<SyncEventMessage>();
@ -639,7 +603,7 @@ static void OnSyncEventMessage(NetworkMessage netMsg)
}
}
static void OnClientAuthority(NetworkMessage netMsg)
internal static void OnClientAuthority(NetworkMessage netMsg)
{
ClientAuthorityMessage msg = netMsg.ReadMessage<ClientAuthorityMessage>();
@ -652,7 +616,7 @@ static void OnClientAuthority(NetworkMessage netMsg)
}
// OnClientAddedPlayer?
static void OnOwnerMessage(NetworkMessage netMsg)
internal static void OnOwnerMessage(NetworkMessage netMsg)
{
OwnerMessage msg = netMsg.ReadMessage<OwnerMessage>();

View File

@ -224,7 +224,38 @@ public float GetRTT()
internal void RegisterSystemHandlers(bool localClient)
{
ClientScene.RegisterSystemHandlers(this, localClient);
// local client / regular client react to some messages differently.
// but we still need to add handlers for all of them to avoid
// 'message id not found' errors.
if (localClient)
{
RegisterHandler(MsgType.LocalClientAuthority, ClientScene.OnClientAuthority);
RegisterHandler(MsgType.ObjectDestroy, ClientScene.OnLocalClientObjectDestroy);
RegisterHandler(MsgType.ObjectHide, ClientScene.OnLocalClientObjectHide);
RegisterHandler(MsgType.Owner, (msg) => {});
RegisterHandler(MsgType.Pong, (msg) => {});
RegisterHandler(MsgType.SpawnPrefab, ClientScene.OnLocalClientSpawnPrefab);
RegisterHandler(MsgType.SpawnSceneObject, ClientScene.OnLocalClientSpawnSceneObject);
RegisterHandler(MsgType.SpawnStarted, (msg) => {});
RegisterHandler(MsgType.SpawnFinished, (msg) => {});
RegisterHandler(MsgType.UpdateVars, (msg) => {});
}
else
{
RegisterHandler(MsgType.LocalClientAuthority, ClientScene.OnClientAuthority);
RegisterHandler(MsgType.ObjectDestroy, ClientScene.OnObjectDestroy);
RegisterHandler(MsgType.ObjectHide, ClientScene.OnObjectDestroy);
RegisterHandler(MsgType.Owner, ClientScene.OnOwnerMessage);
RegisterHandler(MsgType.Pong, NetworkTime.OnClientPong);
RegisterHandler(MsgType.SpawnPrefab, ClientScene.OnSpawnPrefab);
RegisterHandler(MsgType.SpawnSceneObject, ClientScene.OnSpawnSceneObject);
RegisterHandler(MsgType.SpawnStarted, ClientScene.OnObjectSpawnStarted);
RegisterHandler(MsgType.SpawnFinished, ClientScene.OnObjectSpawnFinished);
RegisterHandler(MsgType.UpdateVars, ClientScene.OnUpdateVarsMessage);
}
RegisterHandler(MsgType.Rpc, ClientScene.OnRPCMessage);
RegisterHandler(MsgType.SyncEvent, ClientScene.OnSyncEventMessage);
}
public void RegisterHandler(short msgType, NetworkMessageDelegate handler)