private void HandleCustomData(BinaryReader reader)
        {
            var customDataID = reader.ReadInt32();

            var eventData = new CustomDataEvent()
            {
                EventId      = customDataID,
                BinaryReader = reader,
                Handled      = false
            };

            if (OnCustomDataReceived != null)
            {
                OnCustomDataReceived.Invoke(eventData);
            }
        }
        private void HandleCustomData(CustomDataEvent customData)
        {
            // ar preview data stream
            if (customData.EventId == 100)
            {
                var size = customData.BinaryReader.ReadInt32();
                imgData = customData.BinaryReader.ReadBytes(size);

                var format = customData.BinaryReader.ReadInt32();
                var width  = customData.BinaryReader.ReadInt32();
                var height = customData.BinaryReader.ReadInt32();

                if (tex == null)
                {
                    tex = new Texture2D(width, height, (TextureFormat)format, false);
                }
            }
        }
        public static void ProcessCustomEvent(CustomDataEvent eventData)
        {
            if (eventData.CanBeProcessed((int)CustomDataID.InputEvent + 1))
            {
                var reader = eventData.BinaryReader;

                var ph = reader.ReadInt32();
                var x  = reader.ReadSingle();
                var y  = reader.ReadSingle();

                var ts = new TouchState
                {
                    phase    = (PointerPhase)ph,
                    touchId  = 0,
                    position = new Vector2(x, y)
                };

                HandleInput(ts);

                eventData.Handled = true;
            }
        }