// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: proto/topicData/topicDataRecord/topicDataRecord.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Ubii.TopicData {

  /// <summary>Holder for reflection information generated from proto/topicData/topicDataRecord/topicDataRecord.proto</summary>
  public static partial class TopicDataRecordReflection {

    #region Descriptor
    /// <summary>File descriptor for proto/topicData/topicDataRecord/topicDataRecord.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static TopicDataRecordReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "CjVwcm90by90b3BpY0RhdGEvdG9waWNEYXRhUmVjb3JkL3RvcGljRGF0YVJl",
            "Y29yZC5wcm90bxIOdWJpaS50b3BpY0RhdGEaL3Byb3RvL3RvcGljRGF0YS90",
            "b3BpY0RhdGFSZWNvcmQvdGltZXN0YW1wLnByb3RvGjlwcm90by90b3BpY0Rh",
            "dGEvdG9waWNEYXRhUmVjb3JkL2RhdGFTdHJ1Y3R1cmUvbGlzdHMucHJvdG8a",
            "O3Byb3RvL3RvcGljRGF0YS90b3BpY0RhdGFSZWNvcmQvZGF0YVN0cnVjdHVy",
            "ZS92ZWN0b3IyLnByb3RvGjtwcm90by90b3BpY0RhdGEvdG9waWNEYXRhUmVj",
            "b3JkL2RhdGFTdHJ1Y3R1cmUvdmVjdG9yMy5wcm90bxo7cHJvdG8vdG9waWNE",
            "YXRhL3RvcGljRGF0YVJlY29yZC9kYXRhU3RydWN0dXJlL3ZlY3RvcjQucHJv",
            "dG8aPnByb3RvL3RvcGljRGF0YS90b3BpY0RhdGFSZWNvcmQvZGF0YVN0cnVj",
            "dHVyZS9xdWF0ZXJuaW9uLnByb3RvGj1wcm90by90b3BpY0RhdGEvdG9waWNE",
            "YXRhUmVjb3JkL2RhdGFTdHJ1Y3R1cmUvbWF0cml4M3gyLnByb3RvGj1wcm90",
            "by90b3BpY0RhdGEvdG9waWNEYXRhUmVjb3JkL2RhdGFTdHJ1Y3R1cmUvbWF0",
            "cml4NHg0LnByb3RvGjlwcm90by90b3BpY0RhdGEvdG9waWNEYXRhUmVjb3Jk",
            "L2RhdGFTdHJ1Y3R1cmUvY29sb3IucHJvdG8aPnByb3RvL3RvcGljRGF0YS90",
            "b3BpY0RhdGFSZWNvcmQvZGF0YVN0cnVjdHVyZS90b3VjaEV2ZW50LnByb3Rv",
            "Gjxwcm90by90b3BpY0RhdGEvdG9waWNEYXRhUmVjb3JkL2RhdGFTdHJ1Y3R1",
            "cmUva2V5RXZlbnQucHJvdG8aPnByb3RvL3RvcGljRGF0YS90b3BpY0RhdGFS",
            "ZWNvcmQvZGF0YVN0cnVjdHVyZS9tb3VzZUV2ZW50LnByb3RvGjxwcm90by90",
            "b3BpY0RhdGEvdG9waWNEYXRhUmVjb3JkL2RhdGFTdHJ1Y3R1cmUvbXlvRXZl",
            "bnQucHJvdG8aOnByb3RvL3RvcGljRGF0YS90b3BpY0RhdGFSZWNvcmQvZGF0",
            "YVN0cnVjdHVyZS9wb3NlMmQucHJvdG8aOnByb3RvL3RvcGljRGF0YS90b3Bp",
            "Y0RhdGFSZWNvcmQvZGF0YVN0cnVjdHVyZS9wb3NlM2QucHJvdG8aPHByb3Rv",
            "L3RvcGljRGF0YS90b3BpY0RhdGFSZWNvcmQvZGF0YVN0cnVjdHVyZS9vYmpl",
            "Y3QyZC5wcm90bxo8cHJvdG8vdG9waWNEYXRhL3RvcGljRGF0YVJlY29yZC9k",
            "YXRhU3RydWN0dXJlL29iamVjdDNkLnByb3RvGjlwcm90by90b3BpY0RhdGEv",
            "dG9waWNEYXRhUmVjb3JkL2RhdGFTdHJ1Y3R1cmUvaW1hZ2UucHJvdG8aHHBy",
            "b3RvL3Nlc3Npb25zL3Nlc3Npb24ucHJvdG8aJ3Byb3RvL3Byb2Nlc3Npbmcv",
            "cHJvY2Vzc2luZ01vZHVsZS5wcm90byLVDQoPVG9waWNEYXRhUmVjb3JkEg0K",
            "BXRvcGljGAEgASgJEiwKCXRpbWVzdGFtcBgCIAEoCzIZLnViaWkudG9waWNE",
            "YXRhLlRpbWVzdGFtcBIQCgZkb3VibGUYAyABKAFIABIOCgRib29sGAQgASgI",
            "SAASEAoGc3RyaW5nGAUgASgJSAASDwoFaW50MzIYFyABKAVIABIPCgVmbG9h",
            "dBgYIAEoAkgAEi4KB3ZlY3RvcjIYBiABKAsyGy51YmlpLmRhdGFTdHJ1Y3R1",
            "cmUuVmVjdG9yMkgAEjcKDHZlY3RvcjJfbGlzdBgjIAEoCzIfLnViaWkuZGF0",
            "YVN0cnVjdHVyZS5WZWN0b3IyTGlzdEgAEi4KB3ZlY3RvcjMYByABKAsyGy51",
            "YmlpLmRhdGFTdHJ1Y3R1cmUuVmVjdG9yM0gAEjcKDHZlY3RvcjNfbGlzdBgk",
            "IAEoCzIfLnViaWkuZGF0YVN0cnVjdHVyZS5WZWN0b3IzTGlzdEgAEi4KB3Zl",
            "Y3RvcjQYCCABKAsyGy51YmlpLmRhdGFTdHJ1Y3R1cmUuVmVjdG9yNEgAEjcK",
            "DHZlY3RvcjRfbGlzdBglIAEoCzIfLnViaWkuZGF0YVN0cnVjdHVyZS5WZWN0",
            "b3I0TGlzdEgAEjQKCnF1YXRlcm5pb24YCSABKAsyHi51YmlpLmRhdGFTdHJ1",
            "Y3R1cmUuUXVhdGVybmlvbkgAEjkKD3F1YXRlcm5pb25fbGlzdBgmIAEoCzIe",
            "LnViaWkuZGF0YVN0cnVjdHVyZS5RdWF0ZXJuaW9uSAASMgoJbWF0cml4M3gy",
            "GAogASgLMh0udWJpaS5kYXRhU3RydWN0dXJlLk1hdHJpeDN4MkgAEjIKCW1h",
            "dHJpeDR4NBgLIAEoCzIdLnViaWkuZGF0YVN0cnVjdHVyZS5NYXRyaXg0eDRI",
            "ABIqCgVjb2xvchgMIAEoCzIZLnViaWkuZGF0YVN0cnVjdHVyZS5Db2xvckgA",
            "EjUKC3RvdWNoX2V2ZW50GA0gASgLMh4udWJpaS5kYXRhU3RydWN0dXJlLlRv",
            "dWNoRXZlbnRIABI+ChB0b3VjaF9ldmVudF9saXN0GCIgASgLMiIudWJpaS5k",
            "YXRhU3RydWN0dXJlLlRvdWNoRXZlbnRMaXN0SAASMQoJa2V5X2V2ZW50GA4g",
            "ASgLMhwudWJpaS5kYXRhU3RydWN0dXJlLktleUV2ZW50SAASNQoLbW91c2Vf",
            "ZXZlbnQYDyABKAsyHi51YmlpLmRhdGFTdHJ1Y3R1cmUuTW91c2VFdmVudEgA",
            "EjEKCW15b19ldmVudBgQIAEoCzIcLnViaWkuZGF0YVN0cnVjdHVyZS5NeW9F",
            "dmVudEgAEiwKBnBvc2UyRBgRIAEoCzIaLnViaWkuZGF0YVN0cnVjdHVyZS5Q",
            "b3NlMkRIABIsCgZwb3NlM0QYEiABKAsyGi51YmlpLmRhdGFTdHJ1Y3R1cmUu",
            "UG9zZTNESAASMAoIb2JqZWN0MkQYEyABKAsyHC51YmlpLmRhdGFTdHJ1Y3R1",
            "cmUuT2JqZWN0MkRIABIwCghvYmplY3QzRBgUIAEoCzIcLnViaWkuZGF0YVN0",
            "cnVjdHVyZS5PYmplY3QzREgAEjkKDW9iamVjdDJEX2xpc3QYFSABKAsyIC51",
            "YmlpLmRhdGFTdHJ1Y3R1cmUuT2JqZWN0MkRMaXN0SAASOQoNb2JqZWN0M0Rf",
            "bGlzdBgWIAEoCzIgLnViaWkuZGF0YVN0cnVjdHVyZS5PYmplY3QzRExpc3RI",
            "ABIzCgppbnQzMl9saXN0GBkgASgLMh0udWJpaS5kYXRhU3RydWN0dXJlLklu",
            "dDMyTGlzdEgAEjMKCmZsb2F0X2xpc3QYGiABKAsyHS51YmlpLmRhdGFTdHJ1",
            "Y3R1cmUuRmxvYXRMaXN0SAASNQoLZG91YmxlX2xpc3QYGyABKAsyHi51Ymlp",
            "LmRhdGFTdHJ1Y3R1cmUuRG91YmxlTGlzdEgAEjUKC3N0cmluZ19saXN0GBwg",
            "ASgLMh4udWJpaS5kYXRhU3RydWN0dXJlLlN0cmluZ0xpc3RIABIxCglib29s",
            "X2xpc3QYHSABKAsyHC51YmlpLmRhdGFTdHJ1Y3R1cmUuQm9vbExpc3RIABIu",
            "CgdpbWFnZTJEGB4gASgLMhsudWJpaS5kYXRhU3RydWN0dXJlLkltYWdlMkRI",
            "ABI3CgxpbWFnZTJEX2xpc3QYHyABKAsyHy51YmlpLmRhdGFTdHJ1Y3R1cmUu",
            "SW1hZ2UyRExpc3RIABIpCgdzZXNzaW9uGCAgASgLMhYudWJpaS5zZXNzaW9u",
            "cy5TZXNzaW9uSABCBgoEdHlwZSJIChNUb3BpY0RhdGFSZWNvcmRMaXN0EjEK",
            "CGVsZW1lbnRzGAEgAygLMh8udWJpaS50b3BpY0RhdGEuVG9waWNEYXRhUmVj",
            "b3JkYgZwcm90bzM="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Ubii.TopicData.TimestampReflection.Descriptor, global::Ubii.DataStructure.ListsReflection.Descriptor, global::Ubii.DataStructure.Vector2Reflection.Descriptor, global::Ubii.DataStructure.Vector3Reflection.Descriptor, global::Ubii.DataStructure.Vector4Reflection.Descriptor, global::Ubii.DataStructure.QuaternionReflection.Descriptor, global::Ubii.DataStructure.Matrix3X2Reflection.Descriptor, global::Ubii.DataStructure.Matrix4X4Reflection.Descriptor, global::Ubii.DataStructure.ColorReflection.Descriptor, global::Ubii.DataStructure.TouchEventReflection.Descriptor, global::Ubii.DataStructure.KeyEventReflection.Descriptor, global::Ubii.DataStructure.MouseEventReflection.Descriptor, global::Ubii.DataStructure.MyoEventReflection.Descriptor, global::Ubii.DataStructure.Pose2DReflection.Descriptor, global::Ubii.DataStructure.Pose3DReflection.Descriptor, global::Ubii.DataStructure.Object2DReflection.Descriptor, global::Ubii.DataStructure.Object3DReflection.Descriptor, global::Ubii.DataStructure.ImageReflection.Descriptor, global::Ubii.Sessions.SessionReflection.Descriptor, global::Ubii.Processing.ProcessingModuleReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Ubii.TopicData.TopicDataRecord), global::Ubii.TopicData.TopicDataRecord.Parser, new[]{ "Topic", "Timestamp", "Double", "Bool", "String", "Int32", "Float", "Vector2", "Vector2List", "Vector3", "Vector3List", "Vector4", "Vector4List", "Quaternion", "QuaternionList", "Matrix3X2", "Matrix4X4", "Color", "TouchEvent", "TouchEventList", "KeyEvent", "MouseEvent", "MyoEvent", "Pose2D", "Pose3D", "Object2D", "Object3D", "Object2DList", "Object3DList", "Int32List", "FloatList", "DoubleList", "StringList", "BoolList", "Image2D", "Image2DList", "Session" }, new[]{ "Type" }, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Ubii.TopicData.TopicDataRecordList), global::Ubii.TopicData.TopicDataRecordList.Parser, new[]{ "Elements" }, null, null, null)
          }));
    }
    #endregion

  }
  #region Messages
  /// <summary>
  /// continuous index: 38
  /// </summary>
  public sealed partial class TopicDataRecord : pb::IMessage<TopicDataRecord> {
    private static readonly pb::MessageParser<TopicDataRecord> _parser = new pb::MessageParser<TopicDataRecord>(() => new TopicDataRecord());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<TopicDataRecord> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Ubii.TopicData.TopicDataRecordReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TopicDataRecord() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TopicDataRecord(TopicDataRecord other) : this() {
      topic_ = other.topic_;
      timestamp_ = other.timestamp_ != null ? other.timestamp_.Clone() : null;
      switch (other.TypeCase) {
        case TypeOneofCase.Double:
          Double = other.Double;
          break;
        case TypeOneofCase.Bool:
          Bool = other.Bool;
          break;
        case TypeOneofCase.String:
          String = other.String;
          break;
        case TypeOneofCase.Int32:
          Int32 = other.Int32;
          break;
        case TypeOneofCase.Float:
          Float = other.Float;
          break;
        case TypeOneofCase.Vector2:
          Vector2 = other.Vector2.Clone();
          break;
        case TypeOneofCase.Vector2List:
          Vector2List = other.Vector2List.Clone();
          break;
        case TypeOneofCase.Vector3:
          Vector3 = other.Vector3.Clone();
          break;
        case TypeOneofCase.Vector3List:
          Vector3List = other.Vector3List.Clone();
          break;
        case TypeOneofCase.Vector4:
          Vector4 = other.Vector4.Clone();
          break;
        case TypeOneofCase.Vector4List:
          Vector4List = other.Vector4List.Clone();
          break;
        case TypeOneofCase.Quaternion:
          Quaternion = other.Quaternion.Clone();
          break;
        case TypeOneofCase.QuaternionList:
          QuaternionList = other.QuaternionList.Clone();
          break;
        case TypeOneofCase.Matrix3X2:
          Matrix3X2 = other.Matrix3X2.Clone();
          break;
        case TypeOneofCase.Matrix4X4:
          Matrix4X4 = other.Matrix4X4.Clone();
          break;
        case TypeOneofCase.Color:
          Color = other.Color.Clone();
          break;
        case TypeOneofCase.TouchEvent:
          TouchEvent = other.TouchEvent.Clone();
          break;
        case TypeOneofCase.TouchEventList:
          TouchEventList = other.TouchEventList.Clone();
          break;
        case TypeOneofCase.KeyEvent:
          KeyEvent = other.KeyEvent.Clone();
          break;
        case TypeOneofCase.MouseEvent:
          MouseEvent = other.MouseEvent.Clone();
          break;
        case TypeOneofCase.MyoEvent:
          MyoEvent = other.MyoEvent.Clone();
          break;
        case TypeOneofCase.Pose2D:
          Pose2D = other.Pose2D.Clone();
          break;
        case TypeOneofCase.Pose3D:
          Pose3D = other.Pose3D.Clone();
          break;
        case TypeOneofCase.Object2D:
          Object2D = other.Object2D.Clone();
          break;
        case TypeOneofCase.Object3D:
          Object3D = other.Object3D.Clone();
          break;
        case TypeOneofCase.Object2DList:
          Object2DList = other.Object2DList.Clone();
          break;
        case TypeOneofCase.Object3DList:
          Object3DList = other.Object3DList.Clone();
          break;
        case TypeOneofCase.Int32List:
          Int32List = other.Int32List.Clone();
          break;
        case TypeOneofCase.FloatList:
          FloatList = other.FloatList.Clone();
          break;
        case TypeOneofCase.DoubleList:
          DoubleList = other.DoubleList.Clone();
          break;
        case TypeOneofCase.StringList:
          StringList = other.StringList.Clone();
          break;
        case TypeOneofCase.BoolList:
          BoolList = other.BoolList.Clone();
          break;
        case TypeOneofCase.Image2D:
          Image2D = other.Image2D.Clone();
          break;
        case TypeOneofCase.Image2DList:
          Image2DList = other.Image2DList.Clone();
          break;
        case TypeOneofCase.Session:
          Session = other.Session.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TopicDataRecord Clone() {
      return new TopicDataRecord(this);
    }

    /// <summary>Field number for the "topic" field.</summary>
    public const int TopicFieldNumber = 1;
    private string topic_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Topic {
      get { return topic_; }
      set {
        topic_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "timestamp" field.</summary>
    public const int TimestampFieldNumber = 2;
    private global::Ubii.TopicData.Timestamp timestamp_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.TopicData.Timestamp Timestamp {
      get { return timestamp_; }
      set {
        timestamp_ = value;
      }
    }

    /// <summary>Field number for the "double" field.</summary>
    public const int DoubleFieldNumber = 3;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public double Double {
      get { return typeCase_ == TypeOneofCase.Double ? (double) type_ : 0D; }
      set {
        type_ = value;
        typeCase_ = TypeOneofCase.Double;
      }
    }

    /// <summary>Field number for the "bool" field.</summary>
    public const int BoolFieldNumber = 4;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Bool {
      get { return typeCase_ == TypeOneofCase.Bool ? (bool) type_ : false; }
      set {
        type_ = value;
        typeCase_ = TypeOneofCase.Bool;
      }
    }

    /// <summary>Field number for the "string" field.</summary>
    public const int StringFieldNumber = 5;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string String {
      get { return typeCase_ == TypeOneofCase.String ? (string) type_ : ""; }
      set {
        type_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
        typeCase_ = TypeOneofCase.String;
      }
    }

    /// <summary>Field number for the "int32" field.</summary>
    public const int Int32FieldNumber = 23;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int Int32 {
      get { return typeCase_ == TypeOneofCase.Int32 ? (int) type_ : 0; }
      set {
        type_ = value;
        typeCase_ = TypeOneofCase.Int32;
      }
    }

    /// <summary>Field number for the "float" field.</summary>
    public const int FloatFieldNumber = 24;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Float {
      get { return typeCase_ == TypeOneofCase.Float ? (float) type_ : 0F; }
      set {
        type_ = value;
        typeCase_ = TypeOneofCase.Float;
      }
    }

    /// <summary>Field number for the "vector2" field.</summary>
    public const int Vector2FieldNumber = 6;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.Vector2 Vector2 {
      get { return typeCase_ == TypeOneofCase.Vector2 ? (global::Ubii.DataStructure.Vector2) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Vector2;
      }
    }

    /// <summary>Field number for the "vector2_list" field.</summary>
    public const int Vector2ListFieldNumber = 35;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.Vector2List Vector2List {
      get { return typeCase_ == TypeOneofCase.Vector2List ? (global::Ubii.DataStructure.Vector2List) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Vector2List;
      }
    }

    /// <summary>Field number for the "vector3" field.</summary>
    public const int Vector3FieldNumber = 7;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.Vector3 Vector3 {
      get { return typeCase_ == TypeOneofCase.Vector3 ? (global::Ubii.DataStructure.Vector3) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Vector3;
      }
    }

    /// <summary>Field number for the "vector3_list" field.</summary>
    public const int Vector3ListFieldNumber = 36;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.Vector3List Vector3List {
      get { return typeCase_ == TypeOneofCase.Vector3List ? (global::Ubii.DataStructure.Vector3List) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Vector3List;
      }
    }

    /// <summary>Field number for the "vector4" field.</summary>
    public const int Vector4FieldNumber = 8;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.Vector4 Vector4 {
      get { return typeCase_ == TypeOneofCase.Vector4 ? (global::Ubii.DataStructure.Vector4) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Vector4;
      }
    }

    /// <summary>Field number for the "vector4_list" field.</summary>
    public const int Vector4ListFieldNumber = 37;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.Vector4List Vector4List {
      get { return typeCase_ == TypeOneofCase.Vector4List ? (global::Ubii.DataStructure.Vector4List) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Vector4List;
      }
    }

    /// <summary>Field number for the "quaternion" field.</summary>
    public const int QuaternionFieldNumber = 9;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.Quaternion Quaternion {
      get { return typeCase_ == TypeOneofCase.Quaternion ? (global::Ubii.DataStructure.Quaternion) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Quaternion;
      }
    }

    /// <summary>Field number for the "quaternion_list" field.</summary>
    public const int QuaternionListFieldNumber = 38;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.Quaternion QuaternionList {
      get { return typeCase_ == TypeOneofCase.QuaternionList ? (global::Ubii.DataStructure.Quaternion) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.QuaternionList;
      }
    }

    /// <summary>Field number for the "matrix3x2" field.</summary>
    public const int Matrix3X2FieldNumber = 10;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.Matrix3x2 Matrix3X2 {
      get { return typeCase_ == TypeOneofCase.Matrix3X2 ? (global::Ubii.DataStructure.Matrix3x2) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Matrix3X2;
      }
    }

    /// <summary>Field number for the "matrix4x4" field.</summary>
    public const int Matrix4X4FieldNumber = 11;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.Matrix4x4 Matrix4X4 {
      get { return typeCase_ == TypeOneofCase.Matrix4X4 ? (global::Ubii.DataStructure.Matrix4x4) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Matrix4X4;
      }
    }

    /// <summary>Field number for the "color" field.</summary>
    public const int ColorFieldNumber = 12;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.Color Color {
      get { return typeCase_ == TypeOneofCase.Color ? (global::Ubii.DataStructure.Color) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Color;
      }
    }

    /// <summary>Field number for the "touch_event" field.</summary>
    public const int TouchEventFieldNumber = 13;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.TouchEvent TouchEvent {
      get { return typeCase_ == TypeOneofCase.TouchEvent ? (global::Ubii.DataStructure.TouchEvent) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.TouchEvent;
      }
    }

    /// <summary>Field number for the "touch_event_list" field.</summary>
    public const int TouchEventListFieldNumber = 34;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.TouchEventList TouchEventList {
      get { return typeCase_ == TypeOneofCase.TouchEventList ? (global::Ubii.DataStructure.TouchEventList) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.TouchEventList;
      }
    }

    /// <summary>Field number for the "key_event" field.</summary>
    public const int KeyEventFieldNumber = 14;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.KeyEvent KeyEvent {
      get { return typeCase_ == TypeOneofCase.KeyEvent ? (global::Ubii.DataStructure.KeyEvent) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.KeyEvent;
      }
    }

    /// <summary>Field number for the "mouse_event" field.</summary>
    public const int MouseEventFieldNumber = 15;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.MouseEvent MouseEvent {
      get { return typeCase_ == TypeOneofCase.MouseEvent ? (global::Ubii.DataStructure.MouseEvent) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.MouseEvent;
      }
    }

    /// <summary>Field number for the "myo_event" field.</summary>
    public const int MyoEventFieldNumber = 16;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.MyoEvent MyoEvent {
      get { return typeCase_ == TypeOneofCase.MyoEvent ? (global::Ubii.DataStructure.MyoEvent) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.MyoEvent;
      }
    }

    /// <summary>Field number for the "pose2D" field.</summary>
    public const int Pose2DFieldNumber = 17;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.Pose2D Pose2D {
      get { return typeCase_ == TypeOneofCase.Pose2D ? (global::Ubii.DataStructure.Pose2D) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Pose2D;
      }
    }

    /// <summary>Field number for the "pose3D" field.</summary>
    public const int Pose3DFieldNumber = 18;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.Pose3D Pose3D {
      get { return typeCase_ == TypeOneofCase.Pose3D ? (global::Ubii.DataStructure.Pose3D) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Pose3D;
      }
    }

    /// <summary>Field number for the "object2D" field.</summary>
    public const int Object2DFieldNumber = 19;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.Object2D Object2D {
      get { return typeCase_ == TypeOneofCase.Object2D ? (global::Ubii.DataStructure.Object2D) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Object2D;
      }
    }

    /// <summary>Field number for the "object3D" field.</summary>
    public const int Object3DFieldNumber = 20;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.Object3D Object3D {
      get { return typeCase_ == TypeOneofCase.Object3D ? (global::Ubii.DataStructure.Object3D) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Object3D;
      }
    }

    /// <summary>Field number for the "object2D_list" field.</summary>
    public const int Object2DListFieldNumber = 21;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.Object2DList Object2DList {
      get { return typeCase_ == TypeOneofCase.Object2DList ? (global::Ubii.DataStructure.Object2DList) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Object2DList;
      }
    }

    /// <summary>Field number for the "object3D_list" field.</summary>
    public const int Object3DListFieldNumber = 22;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.Object3DList Object3DList {
      get { return typeCase_ == TypeOneofCase.Object3DList ? (global::Ubii.DataStructure.Object3DList) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Object3DList;
      }
    }

    /// <summary>Field number for the "int32_list" field.</summary>
    public const int Int32ListFieldNumber = 25;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.Int32List Int32List {
      get { return typeCase_ == TypeOneofCase.Int32List ? (global::Ubii.DataStructure.Int32List) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Int32List;
      }
    }

    /// <summary>Field number for the "float_list" field.</summary>
    public const int FloatListFieldNumber = 26;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.FloatList FloatList {
      get { return typeCase_ == TypeOneofCase.FloatList ? (global::Ubii.DataStructure.FloatList) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.FloatList;
      }
    }

    /// <summary>Field number for the "double_list" field.</summary>
    public const int DoubleListFieldNumber = 27;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.DoubleList DoubleList {
      get { return typeCase_ == TypeOneofCase.DoubleList ? (global::Ubii.DataStructure.DoubleList) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.DoubleList;
      }
    }

    /// <summary>Field number for the "string_list" field.</summary>
    public const int StringListFieldNumber = 28;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.StringList StringList {
      get { return typeCase_ == TypeOneofCase.StringList ? (global::Ubii.DataStructure.StringList) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.StringList;
      }
    }

    /// <summary>Field number for the "bool_list" field.</summary>
    public const int BoolListFieldNumber = 29;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.BoolList BoolList {
      get { return typeCase_ == TypeOneofCase.BoolList ? (global::Ubii.DataStructure.BoolList) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.BoolList;
      }
    }

    /// <summary>Field number for the "image2D" field.</summary>
    public const int Image2DFieldNumber = 30;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.Image2D Image2D {
      get { return typeCase_ == TypeOneofCase.Image2D ? (global::Ubii.DataStructure.Image2D) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Image2D;
      }
    }

    /// <summary>Field number for the "image2D_list" field.</summary>
    public const int Image2DListFieldNumber = 31;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.DataStructure.Image2DList Image2DList {
      get { return typeCase_ == TypeOneofCase.Image2DList ? (global::Ubii.DataStructure.Image2DList) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Image2DList;
      }
    }

    /// <summary>Field number for the "session" field.</summary>
    public const int SessionFieldNumber = 32;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Ubii.Sessions.Session Session {
      get { return typeCase_ == TypeOneofCase.Session ? (global::Ubii.Sessions.Session) type_ : null; }
      set {
        type_ = value;
        typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Session;
      }
    }

    private object type_;
    /// <summary>Enum of possible cases for the "type" oneof.</summary>
    public enum TypeOneofCase {
      None = 0,
      Double = 3,
      Bool = 4,
      String = 5,
      Int32 = 23,
      Float = 24,
      Vector2 = 6,
      Vector2List = 35,
      Vector3 = 7,
      Vector3List = 36,
      Vector4 = 8,
      Vector4List = 37,
      Quaternion = 9,
      QuaternionList = 38,
      Matrix3X2 = 10,
      Matrix4X4 = 11,
      Color = 12,
      TouchEvent = 13,
      TouchEventList = 34,
      KeyEvent = 14,
      MouseEvent = 15,
      MyoEvent = 16,
      Pose2D = 17,
      Pose3D = 18,
      Object2D = 19,
      Object3D = 20,
      Object2DList = 21,
      Object3DList = 22,
      Int32List = 25,
      FloatList = 26,
      DoubleList = 27,
      StringList = 28,
      BoolList = 29,
      Image2D = 30,
      Image2DList = 31,
      Session = 32,
    }
    private TypeOneofCase typeCase_ = TypeOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TypeOneofCase TypeCase {
      get { return typeCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearType() {
      typeCase_ = TypeOneofCase.None;
      type_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as TopicDataRecord);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(TopicDataRecord other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Topic != other.Topic) return false;
      if (!object.Equals(Timestamp, other.Timestamp)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(Double, other.Double)) return false;
      if (Bool != other.Bool) return false;
      if (String != other.String) return false;
      if (Int32 != other.Int32) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Float, other.Float)) return false;
      if (!object.Equals(Vector2, other.Vector2)) return false;
      if (!object.Equals(Vector2List, other.Vector2List)) return false;
      if (!object.Equals(Vector3, other.Vector3)) return false;
      if (!object.Equals(Vector3List, other.Vector3List)) return false;
      if (!object.Equals(Vector4, other.Vector4)) return false;
      if (!object.Equals(Vector4List, other.Vector4List)) return false;
      if (!object.Equals(Quaternion, other.Quaternion)) return false;
      if (!object.Equals(QuaternionList, other.QuaternionList)) return false;
      if (!object.Equals(Matrix3X2, other.Matrix3X2)) return false;
      if (!object.Equals(Matrix4X4, other.Matrix4X4)) return false;
      if (!object.Equals(Color, other.Color)) return false;
      if (!object.Equals(TouchEvent, other.TouchEvent)) return false;
      if (!object.Equals(TouchEventList, other.TouchEventList)) return false;
      if (!object.Equals(KeyEvent, other.KeyEvent)) return false;
      if (!object.Equals(MouseEvent, other.MouseEvent)) return false;
      if (!object.Equals(MyoEvent, other.MyoEvent)) return false;
      if (!object.Equals(Pose2D, other.Pose2D)) return false;
      if (!object.Equals(Pose3D, other.Pose3D)) return false;
      if (!object.Equals(Object2D, other.Object2D)) return false;
      if (!object.Equals(Object3D, other.Object3D)) return false;
      if (!object.Equals(Object2DList, other.Object2DList)) return false;
      if (!object.Equals(Object3DList, other.Object3DList)) return false;
      if (!object.Equals(Int32List, other.Int32List)) return false;
      if (!object.Equals(FloatList, other.FloatList)) return false;
      if (!object.Equals(DoubleList, other.DoubleList)) return false;
      if (!object.Equals(StringList, other.StringList)) return false;
      if (!object.Equals(BoolList, other.BoolList)) return false;
      if (!object.Equals(Image2D, other.Image2D)) return false;
      if (!object.Equals(Image2DList, other.Image2DList)) return false;
      if (!object.Equals(Session, other.Session)) return false;
      if (TypeCase != other.TypeCase) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Topic.Length != 0) hash ^= Topic.GetHashCode();
      if (timestamp_ != null) hash ^= Timestamp.GetHashCode();
      if (typeCase_ == TypeOneofCase.Double) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(Double);
      if (typeCase_ == TypeOneofCase.Bool) hash ^= Bool.GetHashCode();
      if (typeCase_ == TypeOneofCase.String) hash ^= String.GetHashCode();
      if (typeCase_ == TypeOneofCase.Int32) hash ^= Int32.GetHashCode();
      if (typeCase_ == TypeOneofCase.Float) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Float);
      if (typeCase_ == TypeOneofCase.Vector2) hash ^= Vector2.GetHashCode();
      if (typeCase_ == TypeOneofCase.Vector2List) hash ^= Vector2List.GetHashCode();
      if (typeCase_ == TypeOneofCase.Vector3) hash ^= Vector3.GetHashCode();
      if (typeCase_ == TypeOneofCase.Vector3List) hash ^= Vector3List.GetHashCode();
      if (typeCase_ == TypeOneofCase.Vector4) hash ^= Vector4.GetHashCode();
      if (typeCase_ == TypeOneofCase.Vector4List) hash ^= Vector4List.GetHashCode();
      if (typeCase_ == TypeOneofCase.Quaternion) hash ^= Quaternion.GetHashCode();
      if (typeCase_ == TypeOneofCase.QuaternionList) hash ^= QuaternionList.GetHashCode();
      if (typeCase_ == TypeOneofCase.Matrix3X2) hash ^= Matrix3X2.GetHashCode();
      if (typeCase_ == TypeOneofCase.Matrix4X4) hash ^= Matrix4X4.GetHashCode();
      if (typeCase_ == TypeOneofCase.Color) hash ^= Color.GetHashCode();
      if (typeCase_ == TypeOneofCase.TouchEvent) hash ^= TouchEvent.GetHashCode();
      if (typeCase_ == TypeOneofCase.TouchEventList) hash ^= TouchEventList.GetHashCode();
      if (typeCase_ == TypeOneofCase.KeyEvent) hash ^= KeyEvent.GetHashCode();
      if (typeCase_ == TypeOneofCase.MouseEvent) hash ^= MouseEvent.GetHashCode();
      if (typeCase_ == TypeOneofCase.MyoEvent) hash ^= MyoEvent.GetHashCode();
      if (typeCase_ == TypeOneofCase.Pose2D) hash ^= Pose2D.GetHashCode();
      if (typeCase_ == TypeOneofCase.Pose3D) hash ^= Pose3D.GetHashCode();
      if (typeCase_ == TypeOneofCase.Object2D) hash ^= Object2D.GetHashCode();
      if (typeCase_ == TypeOneofCase.Object3D) hash ^= Object3D.GetHashCode();
      if (typeCase_ == TypeOneofCase.Object2DList) hash ^= Object2DList.GetHashCode();
      if (typeCase_ == TypeOneofCase.Object3DList) hash ^= Object3DList.GetHashCode();
      if (typeCase_ == TypeOneofCase.Int32List) hash ^= Int32List.GetHashCode();
      if (typeCase_ == TypeOneofCase.FloatList) hash ^= FloatList.GetHashCode();
      if (typeCase_ == TypeOneofCase.DoubleList) hash ^= DoubleList.GetHashCode();
      if (typeCase_ == TypeOneofCase.StringList) hash ^= StringList.GetHashCode();
      if (typeCase_ == TypeOneofCase.BoolList) hash ^= BoolList.GetHashCode();
      if (typeCase_ == TypeOneofCase.Image2D) hash ^= Image2D.GetHashCode();
      if (typeCase_ == TypeOneofCase.Image2DList) hash ^= Image2DList.GetHashCode();
      if (typeCase_ == TypeOneofCase.Session) hash ^= Session.GetHashCode();
      hash ^= (int) typeCase_;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (Topic.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Topic);
      }
      if (timestamp_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Timestamp);
      }
      if (typeCase_ == TypeOneofCase.Double) {
        output.WriteRawTag(25);
        output.WriteDouble(Double);
      }
      if (typeCase_ == TypeOneofCase.Bool) {
        output.WriteRawTag(32);
        output.WriteBool(Bool);
      }
      if (typeCase_ == TypeOneofCase.String) {
        output.WriteRawTag(42);
        output.WriteString(String);
      }
      if (typeCase_ == TypeOneofCase.Vector2) {
        output.WriteRawTag(50);
        output.WriteMessage(Vector2);
      }
      if (typeCase_ == TypeOneofCase.Vector3) {
        output.WriteRawTag(58);
        output.WriteMessage(Vector3);
      }
      if (typeCase_ == TypeOneofCase.Vector4) {
        output.WriteRawTag(66);
        output.WriteMessage(Vector4);
      }
      if (typeCase_ == TypeOneofCase.Quaternion) {
        output.WriteRawTag(74);
        output.WriteMessage(Quaternion);
      }
      if (typeCase_ == TypeOneofCase.Matrix3X2) {
        output.WriteRawTag(82);
        output.WriteMessage(Matrix3X2);
      }
      if (typeCase_ == TypeOneofCase.Matrix4X4) {
        output.WriteRawTag(90);
        output.WriteMessage(Matrix4X4);
      }
      if (typeCase_ == TypeOneofCase.Color) {
        output.WriteRawTag(98);
        output.WriteMessage(Color);
      }
      if (typeCase_ == TypeOneofCase.TouchEvent) {
        output.WriteRawTag(106);
        output.WriteMessage(TouchEvent);
      }
      if (typeCase_ == TypeOneofCase.KeyEvent) {
        output.WriteRawTag(114);
        output.WriteMessage(KeyEvent);
      }
      if (typeCase_ == TypeOneofCase.MouseEvent) {
        output.WriteRawTag(122);
        output.WriteMessage(MouseEvent);
      }
      if (typeCase_ == TypeOneofCase.MyoEvent) {
        output.WriteRawTag(130, 1);
        output.WriteMessage(MyoEvent);
      }
      if (typeCase_ == TypeOneofCase.Pose2D) {
        output.WriteRawTag(138, 1);
        output.WriteMessage(Pose2D);
      }
      if (typeCase_ == TypeOneofCase.Pose3D) {
        output.WriteRawTag(146, 1);
        output.WriteMessage(Pose3D);
      }
      if (typeCase_ == TypeOneofCase.Object2D) {
        output.WriteRawTag(154, 1);
        output.WriteMessage(Object2D);
      }
      if (typeCase_ == TypeOneofCase.Object3D) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(Object3D);
      }
      if (typeCase_ == TypeOneofCase.Object2DList) {
        output.WriteRawTag(170, 1);
        output.WriteMessage(Object2DList);
      }
      if (typeCase_ == TypeOneofCase.Object3DList) {
        output.WriteRawTag(178, 1);
        output.WriteMessage(Object3DList);
      }
      if (typeCase_ == TypeOneofCase.Int32) {
        output.WriteRawTag(184, 1);
        output.WriteInt32(Int32);
      }
      if (typeCase_ == TypeOneofCase.Float) {
        output.WriteRawTag(197, 1);
        output.WriteFloat(Float);
      }
      if (typeCase_ == TypeOneofCase.Int32List) {
        output.WriteRawTag(202, 1);
        output.WriteMessage(Int32List);
      }
      if (typeCase_ == TypeOneofCase.FloatList) {
        output.WriteRawTag(210, 1);
        output.WriteMessage(FloatList);
      }
      if (typeCase_ == TypeOneofCase.DoubleList) {
        output.WriteRawTag(218, 1);
        output.WriteMessage(DoubleList);
      }
      if (typeCase_ == TypeOneofCase.StringList) {
        output.WriteRawTag(226, 1);
        output.WriteMessage(StringList);
      }
      if (typeCase_ == TypeOneofCase.BoolList) {
        output.WriteRawTag(234, 1);
        output.WriteMessage(BoolList);
      }
      if (typeCase_ == TypeOneofCase.Image2D) {
        output.WriteRawTag(242, 1);
        output.WriteMessage(Image2D);
      }
      if (typeCase_ == TypeOneofCase.Image2DList) {
        output.WriteRawTag(250, 1);
        output.WriteMessage(Image2DList);
      }
      if (typeCase_ == TypeOneofCase.Session) {
        output.WriteRawTag(130, 2);
        output.WriteMessage(Session);
      }
      if (typeCase_ == TypeOneofCase.TouchEventList) {
        output.WriteRawTag(146, 2);
        output.WriteMessage(TouchEventList);
      }
      if (typeCase_ == TypeOneofCase.Vector2List) {
        output.WriteRawTag(154, 2);
        output.WriteMessage(Vector2List);
      }
      if (typeCase_ == TypeOneofCase.Vector3List) {
        output.WriteRawTag(162, 2);
        output.WriteMessage(Vector3List);
      }
      if (typeCase_ == TypeOneofCase.Vector4List) {
        output.WriteRawTag(170, 2);
        output.WriteMessage(Vector4List);
      }
      if (typeCase_ == TypeOneofCase.QuaternionList) {
        output.WriteRawTag(178, 2);
        output.WriteMessage(QuaternionList);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Topic.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Topic);
      }
      if (timestamp_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Timestamp);
      }
      if (typeCase_ == TypeOneofCase.Double) {
        size += 1 + 8;
      }
      if (typeCase_ == TypeOneofCase.Bool) {
        size += 1 + 1;
      }
      if (typeCase_ == TypeOneofCase.String) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(String);
      }
      if (typeCase_ == TypeOneofCase.Int32) {
        size += 2 + pb::CodedOutputStream.ComputeInt32Size(Int32);
      }
      if (typeCase_ == TypeOneofCase.Float) {
        size += 2 + 4;
      }
      if (typeCase_ == TypeOneofCase.Vector2) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Vector2);
      }
      if (typeCase_ == TypeOneofCase.Vector2List) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Vector2List);
      }
      if (typeCase_ == TypeOneofCase.Vector3) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Vector3);
      }
      if (typeCase_ == TypeOneofCase.Vector3List) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Vector3List);
      }
      if (typeCase_ == TypeOneofCase.Vector4) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Vector4);
      }
      if (typeCase_ == TypeOneofCase.Vector4List) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Vector4List);
      }
      if (typeCase_ == TypeOneofCase.Quaternion) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Quaternion);
      }
      if (typeCase_ == TypeOneofCase.QuaternionList) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(QuaternionList);
      }
      if (typeCase_ == TypeOneofCase.Matrix3X2) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Matrix3X2);
      }
      if (typeCase_ == TypeOneofCase.Matrix4X4) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Matrix4X4);
      }
      if (typeCase_ == TypeOneofCase.Color) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Color);
      }
      if (typeCase_ == TypeOneofCase.TouchEvent) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TouchEvent);
      }
      if (typeCase_ == TypeOneofCase.TouchEventList) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(TouchEventList);
      }
      if (typeCase_ == TypeOneofCase.KeyEvent) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(KeyEvent);
      }
      if (typeCase_ == TypeOneofCase.MouseEvent) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(MouseEvent);
      }
      if (typeCase_ == TypeOneofCase.MyoEvent) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(MyoEvent);
      }
      if (typeCase_ == TypeOneofCase.Pose2D) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Pose2D);
      }
      if (typeCase_ == TypeOneofCase.Pose3D) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Pose3D);
      }
      if (typeCase_ == TypeOneofCase.Object2D) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Object2D);
      }
      if (typeCase_ == TypeOneofCase.Object3D) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Object3D);
      }
      if (typeCase_ == TypeOneofCase.Object2DList) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Object2DList);
      }
      if (typeCase_ == TypeOneofCase.Object3DList) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Object3DList);
      }
      if (typeCase_ == TypeOneofCase.Int32List) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Int32List);
      }
      if (typeCase_ == TypeOneofCase.FloatList) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(FloatList);
      }
      if (typeCase_ == TypeOneofCase.DoubleList) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(DoubleList);
      }
      if (typeCase_ == TypeOneofCase.StringList) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(StringList);
      }
      if (typeCase_ == TypeOneofCase.BoolList) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(BoolList);
      }
      if (typeCase_ == TypeOneofCase.Image2D) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Image2D);
      }
      if (typeCase_ == TypeOneofCase.Image2DList) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Image2DList);
      }
      if (typeCase_ == TypeOneofCase.Session) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Session);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(TopicDataRecord other) {
      if (other == null) {
        return;
      }
      if (other.Topic.Length != 0) {
        Topic = other.Topic;
      }
      if (other.timestamp_ != null) {
        if (timestamp_ == null) {
          timestamp_ = new global::Ubii.TopicData.Timestamp();
        }
        Timestamp.MergeFrom(other.Timestamp);
      }
      switch (other.TypeCase) {
        case TypeOneofCase.Double:
          Double = other.Double;
          break;
        case TypeOneofCase.Bool:
          Bool = other.Bool;
          break;
        case TypeOneofCase.String:
          String = other.String;
          break;
        case TypeOneofCase.Int32:
          Int32 = other.Int32;
          break;
        case TypeOneofCase.Float:
          Float = other.Float;
          break;
        case TypeOneofCase.Vector2:
          if (Vector2 == null) {
            Vector2 = new global::Ubii.DataStructure.Vector2();
          }
          Vector2.MergeFrom(other.Vector2);
          break;
        case TypeOneofCase.Vector2List:
          if (Vector2List == null) {
            Vector2List = new global::Ubii.DataStructure.Vector2List();
          }
          Vector2List.MergeFrom(other.Vector2List);
          break;
        case TypeOneofCase.Vector3:
          if (Vector3 == null) {
            Vector3 = new global::Ubii.DataStructure.Vector3();
          }
          Vector3.MergeFrom(other.Vector3);
          break;
        case TypeOneofCase.Vector3List:
          if (Vector3List == null) {
            Vector3List = new global::Ubii.DataStructure.Vector3List();
          }
          Vector3List.MergeFrom(other.Vector3List);
          break;
        case TypeOneofCase.Vector4:
          if (Vector4 == null) {
            Vector4 = new global::Ubii.DataStructure.Vector4();
          }
          Vector4.MergeFrom(other.Vector4);
          break;
        case TypeOneofCase.Vector4List:
          if (Vector4List == null) {
            Vector4List = new global::Ubii.DataStructure.Vector4List();
          }
          Vector4List.MergeFrom(other.Vector4List);
          break;
        case TypeOneofCase.Quaternion:
          if (Quaternion == null) {
            Quaternion = new global::Ubii.DataStructure.Quaternion();
          }
          Quaternion.MergeFrom(other.Quaternion);
          break;
        case TypeOneofCase.QuaternionList:
          if (QuaternionList == null) {
            QuaternionList = new global::Ubii.DataStructure.Quaternion();
          }
          QuaternionList.MergeFrom(other.QuaternionList);
          break;
        case TypeOneofCase.Matrix3X2:
          if (Matrix3X2 == null) {
            Matrix3X2 = new global::Ubii.DataStructure.Matrix3x2();
          }
          Matrix3X2.MergeFrom(other.Matrix3X2);
          break;
        case TypeOneofCase.Matrix4X4:
          if (Matrix4X4 == null) {
            Matrix4X4 = new global::Ubii.DataStructure.Matrix4x4();
          }
          Matrix4X4.MergeFrom(other.Matrix4X4);
          break;
        case TypeOneofCase.Color:
          if (Color == null) {
            Color = new global::Ubii.DataStructure.Color();
          }
          Color.MergeFrom(other.Color);
          break;
        case TypeOneofCase.TouchEvent:
          if (TouchEvent == null) {
            TouchEvent = new global::Ubii.DataStructure.TouchEvent();
          }
          TouchEvent.MergeFrom(other.TouchEvent);
          break;
        case TypeOneofCase.TouchEventList:
          if (TouchEventList == null) {
            TouchEventList = new global::Ubii.DataStructure.TouchEventList();
          }
          TouchEventList.MergeFrom(other.TouchEventList);
          break;
        case TypeOneofCase.KeyEvent:
          if (KeyEvent == null) {
            KeyEvent = new global::Ubii.DataStructure.KeyEvent();
          }
          KeyEvent.MergeFrom(other.KeyEvent);
          break;
        case TypeOneofCase.MouseEvent:
          if (MouseEvent == null) {
            MouseEvent = new global::Ubii.DataStructure.MouseEvent();
          }
          MouseEvent.MergeFrom(other.MouseEvent);
          break;
        case TypeOneofCase.MyoEvent:
          if (MyoEvent == null) {
            MyoEvent = new global::Ubii.DataStructure.MyoEvent();
          }
          MyoEvent.MergeFrom(other.MyoEvent);
          break;
        case TypeOneofCase.Pose2D:
          if (Pose2D == null) {
            Pose2D = new global::Ubii.DataStructure.Pose2D();
          }
          Pose2D.MergeFrom(other.Pose2D);
          break;
        case TypeOneofCase.Pose3D:
          if (Pose3D == null) {
            Pose3D = new global::Ubii.DataStructure.Pose3D();
          }
          Pose3D.MergeFrom(other.Pose3D);
          break;
        case TypeOneofCase.Object2D:
          if (Object2D == null) {
            Object2D = new global::Ubii.DataStructure.Object2D();
          }
          Object2D.MergeFrom(other.Object2D);
          break;
        case TypeOneofCase.Object3D:
          if (Object3D == null) {
            Object3D = new global::Ubii.DataStructure.Object3D();
          }
          Object3D.MergeFrom(other.Object3D);
          break;
        case TypeOneofCase.Object2DList:
          if (Object2DList == null) {
            Object2DList = new global::Ubii.DataStructure.Object2DList();
          }
          Object2DList.MergeFrom(other.Object2DList);
          break;
        case TypeOneofCase.Object3DList:
          if (Object3DList == null) {
            Object3DList = new global::Ubii.DataStructure.Object3DList();
          }
          Object3DList.MergeFrom(other.Object3DList);
          break;
        case TypeOneofCase.Int32List:
          if (Int32List == null) {
            Int32List = new global::Ubii.DataStructure.Int32List();
          }
          Int32List.MergeFrom(other.Int32List);
          break;
        case TypeOneofCase.FloatList:
          if (FloatList == null) {
            FloatList = new global::Ubii.DataStructure.FloatList();
          }
          FloatList.MergeFrom(other.FloatList);
          break;
        case TypeOneofCase.DoubleList:
          if (DoubleList == null) {
            DoubleList = new global::Ubii.DataStructure.DoubleList();
          }
          DoubleList.MergeFrom(other.DoubleList);
          break;
        case TypeOneofCase.StringList:
          if (StringList == null) {
            StringList = new global::Ubii.DataStructure.StringList();
          }
          StringList.MergeFrom(other.StringList);
          break;
        case TypeOneofCase.BoolList:
          if (BoolList == null) {
            BoolList = new global::Ubii.DataStructure.BoolList();
          }
          BoolList.MergeFrom(other.BoolList);
          break;
        case TypeOneofCase.Image2D:
          if (Image2D == null) {
            Image2D = new global::Ubii.DataStructure.Image2D();
          }
          Image2D.MergeFrom(other.Image2D);
          break;
        case TypeOneofCase.Image2DList:
          if (Image2DList == null) {
            Image2DList = new global::Ubii.DataStructure.Image2DList();
          }
          Image2DList.MergeFrom(other.Image2DList);
          break;
        case TypeOneofCase.Session:
          if (Session == null) {
            Session = new global::Ubii.Sessions.Session();
          }
          Session.MergeFrom(other.Session);
          break;
      }

      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Topic = input.ReadString();
            break;
          }
          case 18: {
            if (timestamp_ == null) {
              timestamp_ = new global::Ubii.TopicData.Timestamp();
            }
            input.ReadMessage(timestamp_);
            break;
          }
          case 25: {
            Double = input.ReadDouble();
            break;
          }
          case 32: {
            Bool = input.ReadBool();
            break;
          }
          case 42: {
            String = input.ReadString();
            break;
          }
          case 50: {
            global::Ubii.DataStructure.Vector2 subBuilder = new global::Ubii.DataStructure.Vector2();
            if (typeCase_ == TypeOneofCase.Vector2) {
              subBuilder.MergeFrom(Vector2);
            }
            input.ReadMessage(subBuilder);
            Vector2 = subBuilder;
            break;
          }
          case 58: {
            global::Ubii.DataStructure.Vector3 subBuilder = new global::Ubii.DataStructure.Vector3();
            if (typeCase_ == TypeOneofCase.Vector3) {
              subBuilder.MergeFrom(Vector3);
            }
            input.ReadMessage(subBuilder);
            Vector3 = subBuilder;
            break;
          }
          case 66: {
            global::Ubii.DataStructure.Vector4 subBuilder = new global::Ubii.DataStructure.Vector4();
            if (typeCase_ == TypeOneofCase.Vector4) {
              subBuilder.MergeFrom(Vector4);
            }
            input.ReadMessage(subBuilder);
            Vector4 = subBuilder;
            break;
          }
          case 74: {
            global::Ubii.DataStructure.Quaternion subBuilder = new global::Ubii.DataStructure.Quaternion();
            if (typeCase_ == TypeOneofCase.Quaternion) {
              subBuilder.MergeFrom(Quaternion);
            }
            input.ReadMessage(subBuilder);
            Quaternion = subBuilder;
            break;
          }
          case 82: {
            global::Ubii.DataStructure.Matrix3x2 subBuilder = new global::Ubii.DataStructure.Matrix3x2();
            if (typeCase_ == TypeOneofCase.Matrix3X2) {
              subBuilder.MergeFrom(Matrix3X2);
            }
            input.ReadMessage(subBuilder);
            Matrix3X2 = subBuilder;
            break;
          }
          case 90: {
            global::Ubii.DataStructure.Matrix4x4 subBuilder = new global::Ubii.DataStructure.Matrix4x4();
            if (typeCase_ == TypeOneofCase.Matrix4X4) {
              subBuilder.MergeFrom(Matrix4X4);
            }
            input.ReadMessage(subBuilder);
            Matrix4X4 = subBuilder;
            break;
          }
          case 98: {
            global::Ubii.DataStructure.Color subBuilder = new global::Ubii.DataStructure.Color();
            if (typeCase_ == TypeOneofCase.Color) {
              subBuilder.MergeFrom(Color);
            }
            input.ReadMessage(subBuilder);
            Color = subBuilder;
            break;
          }
          case 106: {
            global::Ubii.DataStructure.TouchEvent subBuilder = new global::Ubii.DataStructure.TouchEvent();
            if (typeCase_ == TypeOneofCase.TouchEvent) {
              subBuilder.MergeFrom(TouchEvent);
            }
            input.ReadMessage(subBuilder);
            TouchEvent = subBuilder;
            break;
          }
          case 114: {
            global::Ubii.DataStructure.KeyEvent subBuilder = new global::Ubii.DataStructure.KeyEvent();
            if (typeCase_ == TypeOneofCase.KeyEvent) {
              subBuilder.MergeFrom(KeyEvent);
            }
            input.ReadMessage(subBuilder);
            KeyEvent = subBuilder;
            break;
          }
          case 122: {
            global::Ubii.DataStructure.MouseEvent subBuilder = new global::Ubii.DataStructure.MouseEvent();
            if (typeCase_ == TypeOneofCase.MouseEvent) {
              subBuilder.MergeFrom(MouseEvent);
            }
            input.ReadMessage(subBuilder);
            MouseEvent = subBuilder;
            break;
          }
          case 130: {
            global::Ubii.DataStructure.MyoEvent subBuilder = new global::Ubii.DataStructure.MyoEvent();
            if (typeCase_ == TypeOneofCase.MyoEvent) {
              subBuilder.MergeFrom(MyoEvent);
            }
            input.ReadMessage(subBuilder);
            MyoEvent = subBuilder;
            break;
          }
          case 138: {
            global::Ubii.DataStructure.Pose2D subBuilder = new global::Ubii.DataStructure.Pose2D();
            if (typeCase_ == TypeOneofCase.Pose2D) {
              subBuilder.MergeFrom(Pose2D);
            }
            input.ReadMessage(subBuilder);
            Pose2D = subBuilder;
            break;
          }
          case 146: {
            global::Ubii.DataStructure.Pose3D subBuilder = new global::Ubii.DataStructure.Pose3D();
            if (typeCase_ == TypeOneofCase.Pose3D) {
              subBuilder.MergeFrom(Pose3D);
            }
            input.ReadMessage(subBuilder);
            Pose3D = subBuilder;
            break;
          }
          case 154: {
            global::Ubii.DataStructure.Object2D subBuilder = new global::Ubii.DataStructure.Object2D();
            if (typeCase_ == TypeOneofCase.Object2D) {
              subBuilder.MergeFrom(Object2D);
            }
            input.ReadMessage(subBuilder);
            Object2D = subBuilder;
            break;
          }
          case 162: {
            global::Ubii.DataStructure.Object3D subBuilder = new global::Ubii.DataStructure.Object3D();
            if (typeCase_ == TypeOneofCase.Object3D) {
              subBuilder.MergeFrom(Object3D);
            }
            input.ReadMessage(subBuilder);
            Object3D = subBuilder;
            break;
          }
          case 170: {
            global::Ubii.DataStructure.Object2DList subBuilder = new global::Ubii.DataStructure.Object2DList();
            if (typeCase_ == TypeOneofCase.Object2DList) {
              subBuilder.MergeFrom(Object2DList);
            }
            input.ReadMessage(subBuilder);
            Object2DList = subBuilder;
            break;
          }
          case 178: {
            global::Ubii.DataStructure.Object3DList subBuilder = new global::Ubii.DataStructure.Object3DList();
            if (typeCase_ == TypeOneofCase.Object3DList) {
              subBuilder.MergeFrom(Object3DList);
            }
            input.ReadMessage(subBuilder);
            Object3DList = subBuilder;
            break;
          }
          case 184: {
            Int32 = input.ReadInt32();
            break;
          }
          case 197: {
            Float = input.ReadFloat();
            break;
          }
          case 202: {
            global::Ubii.DataStructure.Int32List subBuilder = new global::Ubii.DataStructure.Int32List();
            if (typeCase_ == TypeOneofCase.Int32List) {
              subBuilder.MergeFrom(Int32List);
            }
            input.ReadMessage(subBuilder);
            Int32List = subBuilder;
            break;
          }
          case 210: {
            global::Ubii.DataStructure.FloatList subBuilder = new global::Ubii.DataStructure.FloatList();
            if (typeCase_ == TypeOneofCase.FloatList) {
              subBuilder.MergeFrom(FloatList);
            }
            input.ReadMessage(subBuilder);
            FloatList = subBuilder;
            break;
          }
          case 218: {
            global::Ubii.DataStructure.DoubleList subBuilder = new global::Ubii.DataStructure.DoubleList();
            if (typeCase_ == TypeOneofCase.DoubleList) {
              subBuilder.MergeFrom(DoubleList);
            }
            input.ReadMessage(subBuilder);
            DoubleList = subBuilder;
            break;
          }
          case 226: {
            global::Ubii.DataStructure.StringList subBuilder = new global::Ubii.DataStructure.StringList();
            if (typeCase_ == TypeOneofCase.StringList) {
              subBuilder.MergeFrom(StringList);
            }
            input.ReadMessage(subBuilder);
            StringList = subBuilder;
            break;
          }
          case 234: {
            global::Ubii.DataStructure.BoolList subBuilder = new global::Ubii.DataStructure.BoolList();
            if (typeCase_ == TypeOneofCase.BoolList) {
              subBuilder.MergeFrom(BoolList);
            }
            input.ReadMessage(subBuilder);
            BoolList = subBuilder;
            break;
          }
          case 242: {
            global::Ubii.DataStructure.Image2D subBuilder = new global::Ubii.DataStructure.Image2D();
            if (typeCase_ == TypeOneofCase.Image2D) {
              subBuilder.MergeFrom(Image2D);
            }
            input.ReadMessage(subBuilder);
            Image2D = subBuilder;
            break;
          }
          case 250: {
            global::Ubii.DataStructure.Image2DList subBuilder = new global::Ubii.DataStructure.Image2DList();
            if (typeCase_ == TypeOneofCase.Image2DList) {
              subBuilder.MergeFrom(Image2DList);
            }
            input.ReadMessage(subBuilder);
            Image2DList = subBuilder;
            break;
          }
          case 258: {
            global::Ubii.Sessions.Session subBuilder = new global::Ubii.Sessions.Session();
            if (typeCase_ == TypeOneofCase.Session) {
              subBuilder.MergeFrom(Session);
            }
            input.ReadMessage(subBuilder);
            Session = subBuilder;
            break;
          }
          case 274: {
            global::Ubii.DataStructure.TouchEventList subBuilder = new global::Ubii.DataStructure.TouchEventList();
            if (typeCase_ == TypeOneofCase.TouchEventList) {
              subBuilder.MergeFrom(TouchEventList);
            }
            input.ReadMessage(subBuilder);
            TouchEventList = subBuilder;
            break;
          }
          case 282: {
            global::Ubii.DataStructure.Vector2List subBuilder = new global::Ubii.DataStructure.Vector2List();
            if (typeCase_ == TypeOneofCase.Vector2List) {
              subBuilder.MergeFrom(Vector2List);
            }
            input.ReadMessage(subBuilder);
            Vector2List = subBuilder;
            break;
          }
          case 290: {
            global::Ubii.DataStructure.Vector3List subBuilder = new global::Ubii.DataStructure.Vector3List();
            if (typeCase_ == TypeOneofCase.Vector3List) {
              subBuilder.MergeFrom(Vector3List);
            }
            input.ReadMessage(subBuilder);
            Vector3List = subBuilder;
            break;
          }
          case 298: {
            global::Ubii.DataStructure.Vector4List subBuilder = new global::Ubii.DataStructure.Vector4List();
            if (typeCase_ == TypeOneofCase.Vector4List) {
              subBuilder.MergeFrom(Vector4List);
            }
            input.ReadMessage(subBuilder);
            Vector4List = subBuilder;
            break;
          }
          case 306: {
            global::Ubii.DataStructure.Quaternion subBuilder = new global::Ubii.DataStructure.Quaternion();
            if (typeCase_ == TypeOneofCase.QuaternionList) {
              subBuilder.MergeFrom(QuaternionList);
            }
            input.ReadMessage(subBuilder);
            QuaternionList = subBuilder;
            break;
          }
        }
      }
    }

  }

  public sealed partial class TopicDataRecordList : pb::IMessage<TopicDataRecordList> {
    private static readonly pb::MessageParser<TopicDataRecordList> _parser = new pb::MessageParser<TopicDataRecordList>(() => new TopicDataRecordList());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<TopicDataRecordList> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Ubii.TopicData.TopicDataRecordReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TopicDataRecordList() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TopicDataRecordList(TopicDataRecordList other) : this() {
      elements_ = other.elements_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TopicDataRecordList Clone() {
      return new TopicDataRecordList(this);
    }

    /// <summary>Field number for the "elements" field.</summary>
    public const int ElementsFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Ubii.TopicData.TopicDataRecord> _repeated_elements_codec
        = pb::FieldCodec.ForMessage(10, global::Ubii.TopicData.TopicDataRecord.Parser);
    private readonly pbc::RepeatedField<global::Ubii.TopicData.TopicDataRecord> elements_ = new pbc::RepeatedField<global::Ubii.TopicData.TopicDataRecord>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Ubii.TopicData.TopicDataRecord> Elements {
      get { return elements_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as TopicDataRecordList);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(TopicDataRecordList other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!elements_.Equals(other.elements_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= elements_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      elements_.WriteTo(output, _repeated_elements_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += elements_.CalculateSize(_repeated_elements_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(TopicDataRecordList other) {
      if (other == null) {
        return;
      }
      elements_.Add(other.elements_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            elements_.AddEntriesFrom(input, _repeated_elements_codec);
            break;
          }
        }
      }
    }

  }

  #endregion

}

#endregion Designer generated code
