Esempio n. 1
0
        public async Task InvokeAsync(uint dimension, ulong nativeHash, IEnumerable <object> arguments)
        {
            Contract.NotNull(arguments, nameof(arguments));

            var data = ArgumentConverter.ConvertFromObjects(arguments);

            await TickScheduler.Instance
            .Schedule(() => Rage.PlayerPool.PlayerPool__InvokeInDimension(_nativePointer, dimension, nativeHash, data, (ulong)data.Length));

            ArgumentData.Dispose(data);
        }
Esempio n. 2
0
        public async Task InvokeAsync(IEnumerable <IPlayer> players, ulong nativeHash, IEnumerable <object> arguments)
        {
            Contract.NotNull(players, nameof(players));
            Contract.NotNull(arguments, nameof(arguments));

            var data           = ArgumentConverter.ConvertFromObjects(arguments);
            var playerPointers = players.Select(x => x.NativePointer).ToArray();

            await TickScheduler.Instance
            .Schedule(() => Rage.PlayerPool.PlayerPool__InvokeFor(_nativePointer, playerPointers, (ulong)playerPointers.Length, nativeHash, data, (ulong)data.Length));

            ArgumentData.Dispose(data);
        }
Esempio n. 3
0
        public async Task InvokeAsync(ulong nativeHash, IEnumerable <object> arguments)
        {
            Contract.NotNull(arguments, nameof(arguments));
            CheckExistence();

            var data = ArgumentConverter.ConvertFromObjects(arguments);

            await TickScheduler.Instance
            .Schedule(() => Rage.Player.Player__Invoke(NativePointer, nativeHash, data, (ulong)data.Length))
            .ConfigureAwait(false);

            ArgumentData.Dispose(data);
        }
Esempio n. 4
0
        public async Task CallAsync(Vector3 position, float range, uint dimension, string eventName, IEnumerable <object> arguments)
        {
            Contract.NotEmpty(eventName, nameof(eventName));
            Contract.NotNull(arguments, nameof(arguments));

            var data = ArgumentConverter.ConvertFromObjects(arguments);

            using (var converter = new StringConverter())
            {
                var eventNamePointer = converter.StringToPointer(eventName);

                await TickScheduler.Instance.Schedule(() => Rage.PlayerPool.PlayerPool__CallInRange(_nativePointer, position, range, dimension, eventNamePointer, data, (ulong)data.Length));
            }

            ArgumentData.Dispose(data);
        }
Esempio n. 5
0
        public async Task CallClientAsync(string eventName, IEnumerable <object> arguments)
        {
            Contract.NotEmpty(eventName, nameof(eventName));
            Contract.NotNull(arguments, nameof(arguments));
            CheckExistence();

            var data = ArgumentConverter.ConvertFromObjects(arguments);

            using (var converter = new StringConverter())
            {
                var eventNamePointer = converter.StringToPointer(eventName);

                await TickScheduler.Instance
                .Schedule(() => Rage.Player.Player__Call(NativePointer, eventNamePointer, data, (ulong)data.Length))
                .ConfigureAwait(false);
            }

            ArgumentData.Dispose(data);
        }
Esempio n. 6
0
        public async Task CallAsync(IEnumerable <IPlayer> players, string eventName, IEnumerable <object> arguments)
        {
            Contract.NotNull(players, nameof(players));
            Contract.NotEmpty(eventName, nameof(eventName));
            Contract.NotNull(arguments, nameof(arguments));

            var data           = ArgumentConverter.ConvertFromObjects(arguments);
            var playerPointers = players.Select(x => x.NativePointer).ToArray();

            if (playerPointers.Any() == false)
            {
                return;
            }

            using (var converter = new StringConverter())
            {
                var eventNamePointer = converter.StringToPointer(eventName);

                await TickScheduler.Instance
                .Schedule(() => Rage.PlayerPool.PlayerPool__CallFor(_nativePointer, playerPointers, (ulong)playerPointers.Length, eventNamePointer, data, (ulong)data.Length));
            }

            ArgumentData.Dispose(data);
        }