Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        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);
                }
            }
        }