Esempio n. 1
0
        private void LateUpdate()
        {
            // Check if the receiver has returned any metadataFrames
            if (_send != null && !_send.IsClosed)
            {
                Interop.MetadataFrame recvMetadataFrame = new Interop.MetadataFrame();
                while (_send.Capture(out recvMetadataFrame, 0) == Interop.FrameType.Metadata)
                {
                    // Dispatch UnityEvent
                    onMetaDataReceived?.Invoke(Util.Utf8ToString(recvMetadataFrame.Data));

                    // Free the metadataFrame
                    _send.FreeMetadata(ref recvMetadataFrame);
                }
            }

            if (!string.IsNullOrEmpty(sendMetadataFrameData) && _enableMetadataFrames)
            {
                // Send some metadata
                Interop.MetadataFrame metadataFrame = new Interop.MetadataFrame();
                int length;
                metadataFrame.Data   = Util.StringToUtf8(sendMetadataFrameData, out length);
                metadataFrame.Length = length;
                if (_send != null && !_send.IsClosed)
                {
                    _send.SendMetadata(metadataFrame);
                }
                Marshal.FreeHGlobal(metadataFrame.Data);
                sendMetadataFrameData = null;

                // Dispatch metaData sent event
                _onMetadataSent?.Invoke();
            }
        }