void IChannelToServerZone.Invoke(int clientId, int entityId, IInvokePayload payload) { var serverEntity = GetEntity(entityId); if (serverEntity == null) { EntityInvalidTargetInvoked?.Invoke(clientId, entityId, payload); return; } // Check Ownership if (((serverEntity.Flags & EntityFlags.AnyoneCanControl) == 0) && ((payload.Flags & PayloadFlags.AnyoneCanCall) == 0) && serverEntity.OwnerId != clientId) { EntityInvalidOwnershipInvoked?.Invoke(clientId, serverEntity, payload); return; } if ((payload.Flags & PayloadFlags.PassThrough) != 0) { ((IServerZone)this).Invoke(entityId, payload); } else { payload.InvokeServer((IEntityServerHandler)serverEntity); } }
void IZone.Invoke(int entityId, IInvokePayload payload) { foreach (var clientZone in _clientChannelMap.Values) { clientZone.Invoke(entityId, payload); } }
void IChannelToClientZone.Invoke(int entityId, IInvokePayload payload) { var entity = GetEntity(entityId); if (entity != null) { payload.InvokeClient((IEntityClientHandler)entity); } }
protected virtual void OnEntityInvalidOwnershipInvoke(int clientId, IServerEntity entity, IInvokePayload payload) { Debug.LogWarningFormat("OnEntityInvalidOwnershipInvoke({0}, {1}, {2}, {3})", clientId, entity.Id, entity.OwnerId, payload.GetType().Name); }
protected virtual void OnEntityInvalidTargetInvoke(int clientId, int entityId, IInvokePayload payload) { Debug.LogWarningFormat("OnEntityInvalidTargetInvoke({0}, {1}, {2})", clientId, entityId, payload.GetType().Name); }
protected void SendInvoke(IInvokePayload payload) { Zone.Invoke(Id, payload); }
private void OnInvalidOwnershipInvoke(int clientId, IServerEntity entity, IInvokePayload payload) { Logs.Add(Tuple.Create(entity.Id, "InvalidOwnershipInvoke")); }
void IZone.Invoke(int entityId, IInvokePayload payload) { _serverChannel.Invoke(0, entityId, payload); }
public void Invoke(int entityId, IInvokePayload payload) { _writer.Write((byte)4); _writer.Write(entityId); ProtobufStreamHelper.WriteObject(_writer, payload, TypeTable, TypeModel); }