Example #1
0
        /// <summary>
        /// Create a new netcode.io server.
        /// </summary>
        /// <param name="bindAddress">The address to bind to.</param>
        /// <param name="protocolId">The protocol ID.  This should be unique to your game or application.</param>
        /// <param name="privateKey">The symmetric private key used between your clients and the dedicated servers.</param>
        /// <param name="time">The starting time for the server as a double value.  Normally this will be 0 in the constructor.</param>
        public Server(string bindAddress, UInt64 protocolId, byte[] privateKey, double time)
        {
            NetcodeLibrary.Init();

            if (privateKey == null)
            {
                throw new ArgumentNullException(nameof(privateKey));
            }

            if (privateKey.Length != netcodeNATIVE.NETCODE_KEY_BYTES)
            {
                throw new ArgumentException(
                          $"The private symmetric key must be {netcodeNATIVE.NETCODE_KEY_BYTES} bytes long.",
                          nameof(privateKey));
            }

            var unmanagedPrivateKey = Marshal.AllocHGlobal(privateKey.Length);

            Marshal.Copy(privateKey, 0, unmanagedPrivateKey, privateKey.Length);
            _server = netcodeNATIVE.netcode_server_create(
                bindAddress,
                protocolId,
                unmanagedPrivateKey,
                time);
            Marshal.FreeHGlobal(unmanagedPrivateKey);

            if (_server == null)
            {
                throw new InvalidOperationException("Unable to create native netcode.io server");
            }
        }
Example #2
0
    public static SWIGTYPE_p_void netcode_server_receive_packet(SWIGTYPE_p_netcode_server_t server, int client_index, SWIGTYPE_p_int packet_bytes)
    {
        global::System.IntPtr cPtr = netcodePINVOKE.netcode_server_receive_packet(SWIGTYPE_p_netcode_server_t.getCPtr(server), client_index, SWIGTYPE_p_int.getCPtr(packet_bytes));
        SWIGTYPE_p_void       ret  = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_void(cPtr, false);

        return(ret);
    }
Example #3
0
    public static SWIGTYPE_p_netcode_server_t netcode_server_create(string bind_address, string public_address, SWIGTYPE_p_uint64_t protocol_id, SWIGTYPE_p_uint8_t private_key, double time)
    {
        global::System.IntPtr       cPtr = netcodePINVOKE.netcode_server_create(bind_address, public_address, SWIGTYPE_p_uint64_t.getCPtr(protocol_id), SWIGTYPE_p_uint8_t.getCPtr(private_key), time);
        SWIGTYPE_p_netcode_server_t ret  = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_netcode_server_t(cPtr, false);

        if (netcodePINVOKE.SWIGPendingException.Pending)
        {
            throw netcodePINVOKE.SWIGPendingException.Retrieve();
        }
        return(ret);
    }
Example #4
0
 public static void netcode_server_destroy(SWIGTYPE_p_netcode_server_t server)
 {
     netcodePINVOKE.netcode_server_destroy(SWIGTYPE_p_netcode_server_t.getCPtr(server));
 }
Example #5
0
    public static int netcode_server_num_clients_connected(SWIGTYPE_p_netcode_server_t server)
    {
        int ret = netcodePINVOKE.netcode_server_num_clients_connected(SWIGTYPE_p_netcode_server_t.getCPtr(server));

        return(ret);
    }
Example #6
0
 public static void netcode_server_free_packet(SWIGTYPE_p_netcode_server_t server, SWIGTYPE_p_void packet)
 {
     netcodePINVOKE.netcode_server_free_packet(SWIGTYPE_p_netcode_server_t.getCPtr(server), SWIGTYPE_p_void.getCPtr(packet));
 }
Example #7
0
 public static void netcode_server_send_packet(SWIGTYPE_p_netcode_server_t server, int client_index, SWIGTYPE_p_uint8_t packet_data, int packet_bytes)
 {
     netcodePINVOKE.netcode_server_send_packet(SWIGTYPE_p_netcode_server_t.getCPtr(server), client_index, SWIGTYPE_p_uint8_t.getCPtr(packet_data), packet_bytes);
 }
Example #8
0
 public static void netcode_server_disconnect_all_clients(SWIGTYPE_p_netcode_server_t server)
 {
     netcodePINVOKE.netcode_server_disconnect_all_clients(SWIGTYPE_p_netcode_server_t.getCPtr(server));
 }
Example #9
0
 public static void netcode_server_disconnect_client(SWIGTYPE_p_netcode_server_t server, int client_index)
 {
     netcodePINVOKE.netcode_server_disconnect_client(SWIGTYPE_p_netcode_server_t.getCPtr(server), client_index);
 }
Example #10
0
    public static int netcode_server_client_connected(SWIGTYPE_p_netcode_server_t server, int client_index)
    {
        int ret = netcodePINVOKE.netcode_server_client_connected(SWIGTYPE_p_netcode_server_t.getCPtr(server), client_index);

        return(ret);
    }
Example #11
0
 public static void netcode_server_update(SWIGTYPE_p_netcode_server_t client, double time)
 {
     netcodePINVOKE.netcode_server_update(SWIGTYPE_p_netcode_server_t.getCPtr(client), time);
 }
Example #12
0
 public static void netcode_server_start(SWIGTYPE_p_netcode_server_t server, int max_clients)
 {
     netcodePINVOKE.netcode_server_start(SWIGTYPE_p_netcode_server_t.getCPtr(server), max_clients);
 }