Пример #1
0
        private void Start()
        {
            //get ip address since we aren't using NetworkManager and cannot use that singleton:
            ipAddress = "::ffff:" + IPManager.GetIP(ADDRESSFAM.IPv4);

            //setup:
            broadcastPort = broadcastingPort;

            Initialize();
            StartAsClient();

            //configurations:
            _client = new NetworkClient();

            ConnectionConfig config = new ConnectionConfig();

            PrimaryChannel          = config.AddChannel(primaryQualityOfService);
            SecondaryChannel        = config.AddChannel(secondaryQualityOfService);
            config.InitialBandwidth = initialBandwidth;

            HostTopology topology = new HostTopology(config, 1);

            _client.Configure(topology);

            //event hooks:
            _client.RegisterHandler(MsgType.Error, HandleNetworkError);
            _client.RegisterHandler(MsgType.Connect, HandleConnected);
            _client.RegisterHandler(MsgType.Disconnect, HandleDisconnected);
            _client.RegisterHandler((short)NetworkMsg.FloatMsg, HandleFloat);
            _client.RegisterHandler((short)NetworkMsg.FloatArrayMsg, HandleFloatArray);
            _client.RegisterHandler((short)NetworkMsg.IntMsg, HandleInt);
            _client.RegisterHandler((short)NetworkMsg.IntArrayMsg, HandleIntArray);
            _client.RegisterHandler((short)NetworkMsg.Vector2Msg, HandleVector2);
            _client.RegisterHandler((short)NetworkMsg.Vector2ArrayMsg, HandleVector2Array);
            _client.RegisterHandler((short)NetworkMsg.Vector3Msg, HandleVector3);
            _client.RegisterHandler((short)NetworkMsg.Vector3ArrayMsg, HandleVector3Array);
            _client.RegisterHandler((short)NetworkMsg.QuaternionMsg, HandleQuaternion);
            _client.RegisterHandler((short)NetworkMsg.QuaternionArrayMsg, HandleQuaternionArray);
            _client.RegisterHandler((short)NetworkMsg.Vector4Msg, HandleVector4);
            _client.RegisterHandler((short)NetworkMsg.Vector4ArrayMsg, HandleVector4Array);
            _client.RegisterHandler((short)NetworkMsg.RectMsg, HandleRect);
            _client.RegisterHandler((short)NetworkMsg.RectArrayMsg, HandleRectArray);
            _client.RegisterHandler((short)NetworkMsg.StringMsg, HandleString);
            _client.RegisterHandler((short)NetworkMsg.StringArrayMsg, HandleStringArray);
            _client.RegisterHandler((short)NetworkMsg.ByteMsg, HandleByte);
            _client.RegisterHandler((short)NetworkMsg.ByteArrayMsg, HandleByteArray);
            _client.RegisterHandler((short)NetworkMsg.ColorMsg, HandleColor);
            _client.RegisterHandler((short)NetworkMsg.ColorArrayMsg, HandleColorArray);
            _client.RegisterHandler((short)NetworkMsg.Color32Msg, HandleColor32);
            _client.RegisterHandler((short)NetworkMsg.Color32ArrayMsg, HandleColor32Array);
            _client.RegisterHandler((short)NetworkMsg.BoolMsg, HandleBool);
            _client.RegisterHandler((short)NetworkMsg.BoolArrayMsg, HandleBoolArray);
            _client.RegisterHandler((short)NetworkMsg.Matrix4x4Msg, HandleMatrix4x4);
            _client.RegisterHandler((short)NetworkMsg.Matrix4x4ArrayMsg, HandleMatrix4x4Array);
        }
Пример #2
0
        private void Start()
        {
            //get ip address since we aren't using NetworkManager and cannot use that singleton:
            ipAddress = "::ffff:" + IPManager.GetIP(ADDRESSFAM.IPv4);

            //setup:
            broadcastPort = broadcastingPort;

            //set device id:
            broadcastData = ServerPort.ToString();
            if (string.IsNullOrEmpty(customDeviceId))
            {
                broadcastData += "_" + DeviceId;
            }
            else
            {
                broadcastData += "_" + customDeviceId;
            }

            //HACK: this is a fix for the broadcastData bug where Unity will combine different
            //data if the length is different because they internally reuse this object
            broadcastData += "~!~";

            Init();

            //configurations:
            ConnectionConfig config = new ConnectionConfig();

            PrimaryChannel          = config.AddChannel(primaryQualityOfService);
            SecondaryChannel        = config.AddChannel(secondaryQualityOfService);
            config.InitialBandwidth = initialBandwidth;

            HostTopology topology = new HostTopology(config, maxConnections);

            _server.Listen(ServerPort, topology);

            //event hooks:
            _server.OnConnection    += HandleConnect;
            _server.OnDisconnection += HandleDisconnect;
            _server.RegisterHandler((short)NetworkMsg.FloatMsg, HandleFloat);
            _server.RegisterHandler((short)NetworkMsg.FloatArrayMsg, HandleFloatArray);
            _server.RegisterHandler((short)NetworkMsg.IntMsg, HandleInt);
            _server.RegisterHandler((short)NetworkMsg.IntArrayMsg, HandleIntArray);
            _server.RegisterHandler((short)NetworkMsg.Vector2Msg, HandleVector2);
            _server.RegisterHandler((short)NetworkMsg.Vector2ArrayMsg, HandleVector2Array);
            _server.RegisterHandler((short)NetworkMsg.Vector3Msg, HandleVector3);
            _server.RegisterHandler((short)NetworkMsg.Vector3ArrayMsg, HandleVector3Array);
            _server.RegisterHandler((short)NetworkMsg.QuaternionMsg, HandleQuaternion);
            _server.RegisterHandler((short)NetworkMsg.QuaternionArrayMsg, HandleQuaternionArray);
            _server.RegisterHandler((short)NetworkMsg.Vector4Msg, HandleVector4);
            _server.RegisterHandler((short)NetworkMsg.Vector4ArrayMsg, HandleVector4Array);
            _server.RegisterHandler((short)NetworkMsg.RectMsg, HandleRect);
            _server.RegisterHandler((short)NetworkMsg.RectArrayMsg, HandleRectArray);
            _server.RegisterHandler((short)NetworkMsg.StringMsg, HandleString);
            _server.RegisterHandler((short)NetworkMsg.StringArrayMsg, HandleStringArray);
            _server.RegisterHandler((short)NetworkMsg.ByteMsg, HandleByte);
            _server.RegisterHandler((short)NetworkMsg.ByteArrayMsg, HandleByteArray);
            _server.RegisterHandler((short)NetworkMsg.ColorMsg, HandleColor);
            _server.RegisterHandler((short)NetworkMsg.ColorArrayMsg, HandleColorArray);
            _server.RegisterHandler((short)NetworkMsg.Color32Msg, HandleColor32);
            _server.RegisterHandler((short)NetworkMsg.Color32ArrayMsg, HandleColor32Array);
            _server.RegisterHandler((short)NetworkMsg.BoolMsg, HandleBool);
            _server.RegisterHandler((short)NetworkMsg.BoolArrayMsg, HandleBoolArray);
            _server.RegisterHandler((short)NetworkMsg.Matrix4x4Msg, HandleMatrix4x4);
            _server.RegisterHandler((short)NetworkMsg.Matrix4x4ArrayMsg, HandleMatrix4x4Array);

            //dont destroy:
            transform.parent = null;
            DontDestroyOnLoad(gameObject);
        }