/// <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"); } }
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); }
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); }
public static void netcode_server_destroy(SWIGTYPE_p_netcode_server_t server) { netcodePINVOKE.netcode_server_destroy(SWIGTYPE_p_netcode_server_t.getCPtr(server)); }
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); }
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)); }
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); }
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)); }
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); }
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); }
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); }
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); }