private byte[] SerializeParams() { var writer = new DataStreamWriter(1000, Allocator.Temp); for (var i = 0; i < _animator.parameterCount; i++) { switch (_animatorControllerParameters[i].type) { case AnimatorControllerParameterType.Float: writer.WriteFloat(_animator.GetFloat(_animatorControllerParameters[i].nameHash)); break; case AnimatorControllerParameterType.Int: writer.WriteInt(_animator.GetInteger(_animatorControllerParameters[i].nameHash)); break; case AnimatorControllerParameterType.Bool: case AnimatorControllerParameterType.Trigger: writer.WriteBool(_animator.GetBool(_animatorControllerParameters[i].nameHash)); break; default: throw new ArgumentOutOfRangeException(); } } return(writer.AsNativeArray().ToArray()); }
public void DenyGameAction(GameAction gameAction, GameAction.IParameters parameters, int actorNumber, float triggerTime) { if (State == ServerState.Debug) { return; } if (State != ServerState.Started) { throw new InvalidOperationException($"Cannot deny {gameAction}: Server not running"); } var streamWriter = new DataStreamWriter(MaxBytesPerMessage, Allocator.Temp); streamWriter.WriteInt(Commands.GameAction); streamWriter.WriteInt(GameActionManager.Instance.GetID(gameAction)); streamWriter.WriteInt(actorNumber); streamWriter.WriteFloat(triggerTime); streamWriter.WriteBool(false); // invalid gameAction.SerializeParameters(ref streamWriter, parameters); for (var i = 0; i < _connections.Length; i++) { if (_connections[i].InternalId == actorNumber) { DataStreamWriter writer = _serverDriver.BeginSend(_reliablePipeline, _connections[i]); writer.WriteBytes(streamWriter.AsNativeArray()); _serverDriver.EndSend(writer); } } }