/** *@brief handle connects and disconnects */ private void Run() { byte[] data = new byte[native.Networking.kPacketSize]; native.Networking.ErrorMessage msg = 0; Message message = new Message(); UInt32 id = 0; while (run_) { if (native.Networking.SNetIsConnected() == false) { msg = native.Networking.SNetEditorConnect("localhost", 8008); native.Networking.SNetRetrievePacket(ref id, data, (uint)data.Length); } else { NotificationEventArgs args = new NotificationEventArgs(message, (uint)Notifications.kConnected, id <MessageHandler> .type_id_); OnNotification handler = notify_subscribers; handler?.Invoke(this, args); ProcessMessages(); } Thread.Sleep(1000 / 30); } }
/** *@brief handle incomming notifiactaion from the message handler *@param[in] sender (object) the original sender of the notification *@param[in] e (sulphut.editor.NotificationEventArgs) event aruments passed when the event was fired */ private void HandleNetworkedMessage(object sender, NotificationEventArgs e) { if (e.type_id == id <MessageHandler> .type_id_) { switch ((MessageHandler.Notifications)e.notification_id) { case MessageHandler.Notifications.kConnected: byte[] data = Utils.StructToBytes(engine_.window.ToInt64()); native.Networking.ErrorMessage msg = native.Networking.SNetSendData((UInt32)native.NetworkMessages.kWindowHandle, data, (uint)data.Length); break; } } }