// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: rec_room/persistence/object_group_data.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021, 8981
#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 RecRoom.Protobuf {

  /// <summary>Holder for reflection information generated from rec_room/persistence/object_group_data.proto</summary>
  public static partial class ObjectGroupDataReflection {

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

    static ObjectGroupDataReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "CixyZWNfcm9vbS9wZXJzaXN0ZW5jZS9vYmplY3RfZ3JvdXBfZGF0YS5wcm90",
            "bxIIcmVjX3Jvb20aF2NvcmUvdmVjdG9yM19kYXRhLnByb3RvGh1yZWNfcm9v",
            "bS90cmFuc2Zvcm1fZGF0YS5wcm90byKDAgodT2JqZWN0R3JvdXBEYXRhQ29s",
            "bGVjdGlvbkRhdGESYQoNb2JqZWN0X2dyb3VwcxgBIAMoCzJKLnJlY19yb29t",
            "Lk9iamVjdEdyb3VwRGF0YUNvbGxlY3Rpb25EYXRhLk9iamVjdEdyb3VwRGF0",
            "YUNvbGxlY3Rpb25FbnRyeURhdGEafwoiT2JqZWN0R3JvdXBEYXRhQ29sbGVj",
            "dGlvbkVudHJ5RGF0YRIWCg5waG90b25fdmlld19pZBgBIAEoBRIvCgxvYmpl",
            "Y3RfZ3JvdXAYAiABKAsyGS5yZWNfcm9vbS5PYmplY3RHcm91cERhdGESEAoI",
            "cmV2aXNpb24YAyABKAUilAEKD09iamVjdEdyb3VwRGF0YRIYChBncm91cF9t",
            "ZW1iZXJfaWRzGAEgAygMEjYKEmNpcmN1aXRfZ3JvdXBfZGF0YRgCIAEoCzIa",
            "LnJlY19yb29tLkNpcmN1aXRHcm91cERhdGESLwoOYW5pbWF0aW9uX2RhdGEY",
            "AyABKAsyFy5yZWNfcm9vbS5BbmltYXRpb25EYXRhIuQBChBDaXJjdWl0R3Jv",
            "dXBEYXRhEkYKFWlucHV0X2ludGVyZmFjZV9ub2RlcxgBIAMoCzInLnJlY19y",
            "b29tLkNpcmN1aXRHcm91cEludGVyZmFjZU5vZGVEYXRhEkcKFm91dHB1dF9p",
            "bnRlcmZhY2Vfbm9kZXMYAiADKAsyJy5yZWNfcm9vbS5DaXJjdWl0R3JvdXBJ",
            "bnRlcmZhY2VOb2RlRGF0YRIMCgRuYW1lGAMgASgJEjEKEGxvY2FsX3RyYW5z",
            "Zm9ybXMYBCADKAsyFy5yZWNfcm9vbS5UcmFuc2Zvcm1EYXRhIrMBCh1DaXJj",
            "dWl0R3JvdXBJbnRlcmZhY2VOb2RlRGF0YRJBChNpbnRlcm5hbF9jb25uZWN0",
            "aW9uGAEgASgLMiQucmVjX3Jvb20uQ2lyY3VpdEdyb3VwQ29ubmVjdGlvbkRh",
            "dGESQQoTZXh0ZXJuYWxfY29ubmVjdGlvbhgCIAEoCzIkLnJlY19yb29tLkNp",
            "cmN1aXRHcm91cENvbm5lY3Rpb25EYXRhEgwKBG5hbWUYAyABKAkiwQEKGkNp",
            "cmN1aXRHcm91cENvbm5lY3Rpb25EYXRhEkoKFmNpcmN1aXRfcmVmZXJlbmNl",
            "X2RhdGEYASABKAsyKi5yZWNfcm9vbS5DaXJjdWl0R3JvdXBDaXJjdWl0UmVm",
            "ZXJlbmNlRGF0YRJXCh1pbnRlcmZhY2Vfbm9kZV9yZWZlcmVuY2VfZGF0YRgC",
            "IAEoCzIwLnJlY19yb29tLkNpcmN1aXRHcm91cEludGVyZmFjZU5vZGVSZWZl",
            "cmVuY2VEYXRhIlsKIENpcmN1aXRHcm91cENpcmN1aXRSZWZlcmVuY2VEYXRh",
            "EhcKD2NpcmN1aXRfbm9kZV9pZBgBIAEoDBIMCgRzbG90GAIgASgFEhAKCGlz",
            "X2lucHV0GAMgASgIImMKJkNpcmN1aXRHcm91cEludGVyZmFjZU5vZGVSZWZl",
            "cmVuY2VEYXRhEhgKEGNpcmN1aXRfZ3JvdXBfaWQYASABKAwSDQoFaW5kZXgY",
            "AiABKAUSEAoIaXNfaW5wdXQYAyABKAgibQoST2JqZWN0S2V5RnJhbWVEYXRh",
            "EiMKCHBvc2l0aW9uGAEgASgLMhEuY29yZS5WZWN0b3IzRGF0YRIjCghyb3Rh",
            "dGlvbhgCIAEoCzIRLmNvcmUuVmVjdG9yM0RhdGESDQoFZmxhZ3MYAyABKAUi",
            "VQoMS2V5RnJhbWVEYXRhEgwKBHRpbWUYASABKAISNwoRb2JqZWN0X2tleV9m",
            "cmFtZXMYAiADKAsyHC5yZWNfcm9vbS5PYmplY3RLZXlGcmFtZURhdGEidgoN",
            "QW5pbWF0aW9uRGF0YRIqCgprZXlfZnJhbWVzGAIgAygLMhYucmVjX3Jvb20u",
            "S2V5RnJhbWVEYXRhEhgKEHNwZWVkX3BlcmNlbnRhZ2UYBSABKAUSEAoIcHJp",
            "b3JpdHkYBiABKAUSDQoFZmxhZ3MYByABKAVCE6oCEFJlY1Jvb20uUHJvdG9i",
            "dWZiBnByb3RvMw=="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::RecRoom.Protobuf.Core.Vector3DataReflection.Descriptor, global::RecRoom.Protobuf.TransformDataReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.ObjectGroupDataCollectionData), global::RecRoom.Protobuf.ObjectGroupDataCollectionData.Parser, new[]{ "ObjectGroups" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.ObjectGroupDataCollectionData.Types.ObjectGroupDataCollectionEntryData), global::RecRoom.Protobuf.ObjectGroupDataCollectionData.Types.ObjectGroupDataCollectionEntryData.Parser, new[]{ "PhotonViewId", "ObjectGroup", "Revision" }, null, null, null, null)}),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.ObjectGroupData), global::RecRoom.Protobuf.ObjectGroupData.Parser, new[]{ "GroupMemberIds", "CircuitGroupData", "AnimationData" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.CircuitGroupData), global::RecRoom.Protobuf.CircuitGroupData.Parser, new[]{ "InputInterfaceNodes", "OutputInterfaceNodes", "Name", "LocalTransforms" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.CircuitGroupInterfaceNodeData), global::RecRoom.Protobuf.CircuitGroupInterfaceNodeData.Parser, new[]{ "InternalConnection", "ExternalConnection", "Name" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.CircuitGroupConnectionData), global::RecRoom.Protobuf.CircuitGroupConnectionData.Parser, new[]{ "CircuitReferenceData", "InterfaceNodeReferenceData" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.CircuitGroupCircuitReferenceData), global::RecRoom.Protobuf.CircuitGroupCircuitReferenceData.Parser, new[]{ "CircuitNodeId", "Slot", "IsInput" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.CircuitGroupInterfaceNodeReferenceData), global::RecRoom.Protobuf.CircuitGroupInterfaceNodeReferenceData.Parser, new[]{ "CircuitGroupId", "Index", "IsInput" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.ObjectKeyFrameData), global::RecRoom.Protobuf.ObjectKeyFrameData.Parser, new[]{ "Position", "Rotation", "Flags" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.KeyFrameData), global::RecRoom.Protobuf.KeyFrameData.Parser, new[]{ "Time", "ObjectKeyFrames" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.AnimationData), global::RecRoom.Protobuf.AnimationData.Parser, new[]{ "KeyFrames", "SpeedPercentage", "Priority", "Flags" }, null, null, null, null)
          }));
    }
    #endregion

  }
  #region Messages
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class ObjectGroupDataCollectionData : pb::IMessage<ObjectGroupDataCollectionData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ObjectGroupDataCollectionData> _parser = new pb::MessageParser<ObjectGroupDataCollectionData>(() => new ObjectGroupDataCollectionData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ObjectGroupDataCollectionData> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.Protobuf.ObjectGroupDataReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ObjectGroupDataCollectionData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ObjectGroupDataCollectionData(ObjectGroupDataCollectionData other) : this() {
      objectGroups_ = other.objectGroups_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ObjectGroupDataCollectionData Clone() {
      return new ObjectGroupDataCollectionData(this);
    }

    /// <summary>Field number for the "object_groups" field.</summary>
    public const int ObjectGroupsFieldNumber = 1;
    private static readonly pb::FieldCodec<global::RecRoom.Protobuf.ObjectGroupDataCollectionData.Types.ObjectGroupDataCollectionEntryData> _repeated_objectGroups_codec
        = pb::FieldCodec.ForMessage(10, global::RecRoom.Protobuf.ObjectGroupDataCollectionData.Types.ObjectGroupDataCollectionEntryData.Parser);
    private readonly pbc::RepeatedField<global::RecRoom.Protobuf.ObjectGroupDataCollectionData.Types.ObjectGroupDataCollectionEntryData> objectGroups_ = new pbc::RepeatedField<global::RecRoom.Protobuf.ObjectGroupDataCollectionData.Types.ObjectGroupDataCollectionEntryData>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::RecRoom.Protobuf.ObjectGroupDataCollectionData.Types.ObjectGroupDataCollectionEntryData> ObjectGroups {
      get { return objectGroups_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as ObjectGroupDataCollectionData);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ObjectGroupDataCollectionData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!objectGroups_.Equals(other.objectGroups_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= objectGroups_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      objectGroups_.WriteTo(output, _repeated_objectGroups_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      objectGroups_.WriteTo(ref output, _repeated_objectGroups_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += objectGroups_.CalculateSize(_repeated_objectGroups_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ObjectGroupDataCollectionData other) {
      if (other == null) {
        return;
      }
      objectGroups_.Add(other.objectGroups_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            objectGroups_.AddEntriesFrom(input, _repeated_objectGroups_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            objectGroups_.AddEntriesFrom(ref input, _repeated_objectGroups_codec);
            break;
          }
        }
      }
    }
    #endif

    #region Nested types
    /// <summary>Container for nested types declared in the ObjectGroupDataCollectionData message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static partial class Types {
      [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
      public sealed partial class ObjectGroupDataCollectionEntryData : pb::IMessage<ObjectGroupDataCollectionEntryData>
      #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
          , pb::IBufferMessage
      #endif
      {
        private static readonly pb::MessageParser<ObjectGroupDataCollectionEntryData> _parser = new pb::MessageParser<ObjectGroupDataCollectionEntryData>(() => new ObjectGroupDataCollectionEntryData());
        private pb::UnknownFieldSet _unknownFields;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public static pb::MessageParser<ObjectGroupDataCollectionEntryData> Parser { get { return _parser; } }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::RecRoom.Protobuf.ObjectGroupDataCollectionData.Descriptor.NestedTypes[0]; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        pbr::MessageDescriptor pb::IMessage.Descriptor {
          get { return Descriptor; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public ObjectGroupDataCollectionEntryData() {
          OnConstruction();
        }

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public ObjectGroupDataCollectionEntryData(ObjectGroupDataCollectionEntryData other) : this() {
          photonViewId_ = other.photonViewId_;
          objectGroup_ = other.objectGroup_ != null ? other.objectGroup_.Clone() : null;
          revision_ = other.revision_;
          _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public ObjectGroupDataCollectionEntryData Clone() {
          return new ObjectGroupDataCollectionEntryData(this);
        }

        /// <summary>Field number for the "photon_view_id" field.</summary>
        public const int PhotonViewIdFieldNumber = 1;
        private int photonViewId_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public int PhotonViewId {
          get { return photonViewId_; }
          set {
            photonViewId_ = value;
          }
        }

        /// <summary>Field number for the "object_group" field.</summary>
        public const int ObjectGroupFieldNumber = 2;
        private global::RecRoom.Protobuf.ObjectGroupData objectGroup_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public global::RecRoom.Protobuf.ObjectGroupData ObjectGroup {
          get { return objectGroup_; }
          set {
            objectGroup_ = value;
          }
        }

        /// <summary>Field number for the "revision" field.</summary>
        public const int RevisionFieldNumber = 3;
        private int revision_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public int Revision {
          get { return revision_; }
          set {
            revision_ = value;
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public override bool Equals(object other) {
          return Equals(other as ObjectGroupDataCollectionEntryData);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public bool Equals(ObjectGroupDataCollectionEntryData other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (PhotonViewId != other.PhotonViewId) return false;
          if (!object.Equals(ObjectGroup, other.ObjectGroup)) return false;
          if (Revision != other.Revision) return false;
          return Equals(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public override int GetHashCode() {
          int hash = 1;
          if (PhotonViewId != 0) hash ^= PhotonViewId.GetHashCode();
          if (objectGroup_ != null) hash ^= ObjectGroup.GetHashCode();
          if (Revision != 0) hash ^= Revision.GetHashCode();
          if (_unknownFields != null) {
            hash ^= _unknownFields.GetHashCode();
          }
          return hash;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public override string ToString() {
          return pb::JsonFormatter.ToDiagnosticString(this);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public void WriteTo(pb::CodedOutputStream output) {
        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
          output.WriteRawMessage(this);
        #else
          if (PhotonViewId != 0) {
            output.WriteRawTag(8);
            output.WriteInt32(PhotonViewId);
          }
          if (objectGroup_ != null) {
            output.WriteRawTag(18);
            output.WriteMessage(ObjectGroup);
          }
          if (Revision != 0) {
            output.WriteRawTag(24);
            output.WriteInt32(Revision);
          }
          if (_unknownFields != null) {
            _unknownFields.WriteTo(output);
          }
        #endif
        }

        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
          if (PhotonViewId != 0) {
            output.WriteRawTag(8);
            output.WriteInt32(PhotonViewId);
          }
          if (objectGroup_ != null) {
            output.WriteRawTag(18);
            output.WriteMessage(ObjectGroup);
          }
          if (Revision != 0) {
            output.WriteRawTag(24);
            output.WriteInt32(Revision);
          }
          if (_unknownFields != null) {
            _unknownFields.WriteTo(ref output);
          }
        }
        #endif

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public int CalculateSize() {
          int size = 0;
          if (PhotonViewId != 0) {
            size += 1 + pb::CodedOutputStream.ComputeInt32Size(PhotonViewId);
          }
          if (objectGroup_ != null) {
            size += 1 + pb::CodedOutputStream.ComputeMessageSize(ObjectGroup);
          }
          if (Revision != 0) {
            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Revision);
          }
          if (_unknownFields != null) {
            size += _unknownFields.CalculateSize();
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public void MergeFrom(ObjectGroupDataCollectionEntryData other) {
          if (other == null) {
            return;
          }
          if (other.PhotonViewId != 0) {
            PhotonViewId = other.PhotonViewId;
          }
          if (other.objectGroup_ != null) {
            if (objectGroup_ == null) {
              ObjectGroup = new global::RecRoom.Protobuf.ObjectGroupData();
            }
            ObjectGroup.MergeFrom(other.ObjectGroup);
          }
          if (other.Revision != 0) {
            Revision = other.Revision;
          }
          _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public void MergeFrom(pb::CodedInputStream input) {
        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
          input.ReadRawMessage(this);
        #else
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
          if ((tag & 7) == 4) {
            // Abort on any end group tag.
            return;
          }
          switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                break;
              case 8: {
                PhotonViewId = input.ReadInt32();
                break;
              }
              case 18: {
                if (objectGroup_ == null) {
                  ObjectGroup = new global::RecRoom.Protobuf.ObjectGroupData();
                }
                input.ReadMessage(ObjectGroup);
                break;
              }
              case 24: {
                Revision = input.ReadInt32();
                break;
              }
            }
          }
        #endif
        }

        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
          if ((tag & 7) == 4) {
            // Abort on any end group tag.
            return;
          }
          switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
                break;
              case 8: {
                PhotonViewId = input.ReadInt32();
                break;
              }
              case 18: {
                if (objectGroup_ == null) {
                  ObjectGroup = new global::RecRoom.Protobuf.ObjectGroupData();
                }
                input.ReadMessage(ObjectGroup);
                break;
              }
              case 24: {
                Revision = input.ReadInt32();
                break;
              }
            }
          }
        }
        #endif

      }

    }
    #endregion

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class ObjectGroupData : pb::IMessage<ObjectGroupData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ObjectGroupData> _parser = new pb::MessageParser<ObjectGroupData>(() => new ObjectGroupData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ObjectGroupData> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.Protobuf.ObjectGroupDataReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ObjectGroupData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ObjectGroupData(ObjectGroupData other) : this() {
      groupMemberIds_ = other.groupMemberIds_.Clone();
      circuitGroupData_ = other.circuitGroupData_ != null ? other.circuitGroupData_.Clone() : null;
      animationData_ = other.animationData_ != null ? other.animationData_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ObjectGroupData Clone() {
      return new ObjectGroupData(this);
    }

    /// <summary>Field number for the "group_member_ids" field.</summary>
    public const int GroupMemberIdsFieldNumber = 1;
    private static readonly pb::FieldCodec<pb::ByteString> _repeated_groupMemberIds_codec
        = pb::FieldCodec.ForBytes(10);
    private readonly pbc::RepeatedField<pb::ByteString> groupMemberIds_ = new pbc::RepeatedField<pb::ByteString>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<pb::ByteString> GroupMemberIds {
      get { return groupMemberIds_; }
    }

    /// <summary>Field number for the "circuit_group_data" field.</summary>
    public const int CircuitGroupDataFieldNumber = 2;
    private global::RecRoom.Protobuf.CircuitGroupData circuitGroupData_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.CircuitGroupData CircuitGroupData {
      get { return circuitGroupData_; }
      set {
        circuitGroupData_ = value;
      }
    }

    /// <summary>Field number for the "animation_data" field.</summary>
    public const int AnimationDataFieldNumber = 3;
    private global::RecRoom.Protobuf.AnimationData animationData_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.AnimationData AnimationData {
      get { return animationData_; }
      set {
        animationData_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as ObjectGroupData);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ObjectGroupData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!groupMemberIds_.Equals(other.groupMemberIds_)) return false;
      if (!object.Equals(CircuitGroupData, other.CircuitGroupData)) return false;
      if (!object.Equals(AnimationData, other.AnimationData)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= groupMemberIds_.GetHashCode();
      if (circuitGroupData_ != null) hash ^= CircuitGroupData.GetHashCode();
      if (animationData_ != null) hash ^= AnimationData.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      groupMemberIds_.WriteTo(output, _repeated_groupMemberIds_codec);
      if (circuitGroupData_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(CircuitGroupData);
      }
      if (animationData_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(AnimationData);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      groupMemberIds_.WriteTo(ref output, _repeated_groupMemberIds_codec);
      if (circuitGroupData_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(CircuitGroupData);
      }
      if (animationData_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(AnimationData);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += groupMemberIds_.CalculateSize(_repeated_groupMemberIds_codec);
      if (circuitGroupData_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(CircuitGroupData);
      }
      if (animationData_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AnimationData);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ObjectGroupData other) {
      if (other == null) {
        return;
      }
      groupMemberIds_.Add(other.groupMemberIds_);
      if (other.circuitGroupData_ != null) {
        if (circuitGroupData_ == null) {
          CircuitGroupData = new global::RecRoom.Protobuf.CircuitGroupData();
        }
        CircuitGroupData.MergeFrom(other.CircuitGroupData);
      }
      if (other.animationData_ != null) {
        if (animationData_ == null) {
          AnimationData = new global::RecRoom.Protobuf.AnimationData();
        }
        AnimationData.MergeFrom(other.AnimationData);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            groupMemberIds_.AddEntriesFrom(input, _repeated_groupMemberIds_codec);
            break;
          }
          case 18: {
            if (circuitGroupData_ == null) {
              CircuitGroupData = new global::RecRoom.Protobuf.CircuitGroupData();
            }
            input.ReadMessage(CircuitGroupData);
            break;
          }
          case 26: {
            if (animationData_ == null) {
              AnimationData = new global::RecRoom.Protobuf.AnimationData();
            }
            input.ReadMessage(AnimationData);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            groupMemberIds_.AddEntriesFrom(ref input, _repeated_groupMemberIds_codec);
            break;
          }
          case 18: {
            if (circuitGroupData_ == null) {
              CircuitGroupData = new global::RecRoom.Protobuf.CircuitGroupData();
            }
            input.ReadMessage(CircuitGroupData);
            break;
          }
          case 26: {
            if (animationData_ == null) {
              AnimationData = new global::RecRoom.Protobuf.AnimationData();
            }
            input.ReadMessage(AnimationData);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class CircuitGroupData : pb::IMessage<CircuitGroupData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<CircuitGroupData> _parser = new pb::MessageParser<CircuitGroupData>(() => new CircuitGroupData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<CircuitGroupData> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.Protobuf.ObjectGroupDataReflection.Descriptor.MessageTypes[2]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CircuitGroupData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CircuitGroupData(CircuitGroupData other) : this() {
      inputInterfaceNodes_ = other.inputInterfaceNodes_.Clone();
      outputInterfaceNodes_ = other.outputInterfaceNodes_.Clone();
      name_ = other.name_;
      localTransforms_ = other.localTransforms_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CircuitGroupData Clone() {
      return new CircuitGroupData(this);
    }

    /// <summary>Field number for the "input_interface_nodes" field.</summary>
    public const int InputInterfaceNodesFieldNumber = 1;
    private static readonly pb::FieldCodec<global::RecRoom.Protobuf.CircuitGroupInterfaceNodeData> _repeated_inputInterfaceNodes_codec
        = pb::FieldCodec.ForMessage(10, global::RecRoom.Protobuf.CircuitGroupInterfaceNodeData.Parser);
    private readonly pbc::RepeatedField<global::RecRoom.Protobuf.CircuitGroupInterfaceNodeData> inputInterfaceNodes_ = new pbc::RepeatedField<global::RecRoom.Protobuf.CircuitGroupInterfaceNodeData>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::RecRoom.Protobuf.CircuitGroupInterfaceNodeData> InputInterfaceNodes {
      get { return inputInterfaceNodes_; }
    }

    /// <summary>Field number for the "output_interface_nodes" field.</summary>
    public const int OutputInterfaceNodesFieldNumber = 2;
    private static readonly pb::FieldCodec<global::RecRoom.Protobuf.CircuitGroupInterfaceNodeData> _repeated_outputInterfaceNodes_codec
        = pb::FieldCodec.ForMessage(18, global::RecRoom.Protobuf.CircuitGroupInterfaceNodeData.Parser);
    private readonly pbc::RepeatedField<global::RecRoom.Protobuf.CircuitGroupInterfaceNodeData> outputInterfaceNodes_ = new pbc::RepeatedField<global::RecRoom.Protobuf.CircuitGroupInterfaceNodeData>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::RecRoom.Protobuf.CircuitGroupInterfaceNodeData> OutputInterfaceNodes {
      get { return outputInterfaceNodes_; }
    }

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 3;
    private string name_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "local_transforms" field.</summary>
    public const int LocalTransformsFieldNumber = 4;
    private static readonly pb::FieldCodec<global::RecRoom.Protobuf.TransformData> _repeated_localTransforms_codec
        = pb::FieldCodec.ForMessage(34, global::RecRoom.Protobuf.TransformData.Parser);
    private readonly pbc::RepeatedField<global::RecRoom.Protobuf.TransformData> localTransforms_ = new pbc::RepeatedField<global::RecRoom.Protobuf.TransformData>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::RecRoom.Protobuf.TransformData> LocalTransforms {
      get { return localTransforms_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as CircuitGroupData);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(CircuitGroupData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!inputInterfaceNodes_.Equals(other.inputInterfaceNodes_)) return false;
      if(!outputInterfaceNodes_.Equals(other.outputInterfaceNodes_)) return false;
      if (Name != other.Name) return false;
      if(!localTransforms_.Equals(other.localTransforms_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= inputInterfaceNodes_.GetHashCode();
      hash ^= outputInterfaceNodes_.GetHashCode();
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      hash ^= localTransforms_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      inputInterfaceNodes_.WriteTo(output, _repeated_inputInterfaceNodes_codec);
      outputInterfaceNodes_.WriteTo(output, _repeated_outputInterfaceNodes_codec);
      if (Name.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Name);
      }
      localTransforms_.WriteTo(output, _repeated_localTransforms_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      inputInterfaceNodes_.WriteTo(ref output, _repeated_inputInterfaceNodes_codec);
      outputInterfaceNodes_.WriteTo(ref output, _repeated_outputInterfaceNodes_codec);
      if (Name.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Name);
      }
      localTransforms_.WriteTo(ref output, _repeated_localTransforms_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += inputInterfaceNodes_.CalculateSize(_repeated_inputInterfaceNodes_codec);
      size += outputInterfaceNodes_.CalculateSize(_repeated_outputInterfaceNodes_codec);
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      size += localTransforms_.CalculateSize(_repeated_localTransforms_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(CircuitGroupData other) {
      if (other == null) {
        return;
      }
      inputInterfaceNodes_.Add(other.inputInterfaceNodes_);
      outputInterfaceNodes_.Add(other.outputInterfaceNodes_);
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      localTransforms_.Add(other.localTransforms_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            inputInterfaceNodes_.AddEntriesFrom(input, _repeated_inputInterfaceNodes_codec);
            break;
          }
          case 18: {
            outputInterfaceNodes_.AddEntriesFrom(input, _repeated_outputInterfaceNodes_codec);
            break;
          }
          case 26: {
            Name = input.ReadString();
            break;
          }
          case 34: {
            localTransforms_.AddEntriesFrom(input, _repeated_localTransforms_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            inputInterfaceNodes_.AddEntriesFrom(ref input, _repeated_inputInterfaceNodes_codec);
            break;
          }
          case 18: {
            outputInterfaceNodes_.AddEntriesFrom(ref input, _repeated_outputInterfaceNodes_codec);
            break;
          }
          case 26: {
            Name = input.ReadString();
            break;
          }
          case 34: {
            localTransforms_.AddEntriesFrom(ref input, _repeated_localTransforms_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class CircuitGroupInterfaceNodeData : pb::IMessage<CircuitGroupInterfaceNodeData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<CircuitGroupInterfaceNodeData> _parser = new pb::MessageParser<CircuitGroupInterfaceNodeData>(() => new CircuitGroupInterfaceNodeData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<CircuitGroupInterfaceNodeData> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.Protobuf.ObjectGroupDataReflection.Descriptor.MessageTypes[3]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CircuitGroupInterfaceNodeData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CircuitGroupInterfaceNodeData(CircuitGroupInterfaceNodeData other) : this() {
      internalConnection_ = other.internalConnection_ != null ? other.internalConnection_.Clone() : null;
      externalConnection_ = other.externalConnection_ != null ? other.externalConnection_.Clone() : null;
      name_ = other.name_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CircuitGroupInterfaceNodeData Clone() {
      return new CircuitGroupInterfaceNodeData(this);
    }

    /// <summary>Field number for the "internal_connection" field.</summary>
    public const int InternalConnectionFieldNumber = 1;
    private global::RecRoom.Protobuf.CircuitGroupConnectionData internalConnection_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.CircuitGroupConnectionData InternalConnection {
      get { return internalConnection_; }
      set {
        internalConnection_ = value;
      }
    }

    /// <summary>Field number for the "external_connection" field.</summary>
    public const int ExternalConnectionFieldNumber = 2;
    private global::RecRoom.Protobuf.CircuitGroupConnectionData externalConnection_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.CircuitGroupConnectionData ExternalConnection {
      get { return externalConnection_; }
      set {
        externalConnection_ = value;
      }
    }

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 3;
    private string name_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as CircuitGroupInterfaceNodeData);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(CircuitGroupInterfaceNodeData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(InternalConnection, other.InternalConnection)) return false;
      if (!object.Equals(ExternalConnection, other.ExternalConnection)) return false;
      if (Name != other.Name) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (internalConnection_ != null) hash ^= InternalConnection.GetHashCode();
      if (externalConnection_ != null) hash ^= ExternalConnection.GetHashCode();
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (internalConnection_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(InternalConnection);
      }
      if (externalConnection_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(ExternalConnection);
      }
      if (Name.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Name);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (internalConnection_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(InternalConnection);
      }
      if (externalConnection_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(ExternalConnection);
      }
      if (Name.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Name);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (internalConnection_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(InternalConnection);
      }
      if (externalConnection_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ExternalConnection);
      }
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(CircuitGroupInterfaceNodeData other) {
      if (other == null) {
        return;
      }
      if (other.internalConnection_ != null) {
        if (internalConnection_ == null) {
          InternalConnection = new global::RecRoom.Protobuf.CircuitGroupConnectionData();
        }
        InternalConnection.MergeFrom(other.InternalConnection);
      }
      if (other.externalConnection_ != null) {
        if (externalConnection_ == null) {
          ExternalConnection = new global::RecRoom.Protobuf.CircuitGroupConnectionData();
        }
        ExternalConnection.MergeFrom(other.ExternalConnection);
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (internalConnection_ == null) {
              InternalConnection = new global::RecRoom.Protobuf.CircuitGroupConnectionData();
            }
            input.ReadMessage(InternalConnection);
            break;
          }
          case 18: {
            if (externalConnection_ == null) {
              ExternalConnection = new global::RecRoom.Protobuf.CircuitGroupConnectionData();
            }
            input.ReadMessage(ExternalConnection);
            break;
          }
          case 26: {
            Name = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (internalConnection_ == null) {
              InternalConnection = new global::RecRoom.Protobuf.CircuitGroupConnectionData();
            }
            input.ReadMessage(InternalConnection);
            break;
          }
          case 18: {
            if (externalConnection_ == null) {
              ExternalConnection = new global::RecRoom.Protobuf.CircuitGroupConnectionData();
            }
            input.ReadMessage(ExternalConnection);
            break;
          }
          case 26: {
            Name = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class CircuitGroupConnectionData : pb::IMessage<CircuitGroupConnectionData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<CircuitGroupConnectionData> _parser = new pb::MessageParser<CircuitGroupConnectionData>(() => new CircuitGroupConnectionData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<CircuitGroupConnectionData> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.Protobuf.ObjectGroupDataReflection.Descriptor.MessageTypes[4]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CircuitGroupConnectionData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CircuitGroupConnectionData(CircuitGroupConnectionData other) : this() {
      circuitReferenceData_ = other.circuitReferenceData_ != null ? other.circuitReferenceData_.Clone() : null;
      interfaceNodeReferenceData_ = other.interfaceNodeReferenceData_ != null ? other.interfaceNodeReferenceData_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CircuitGroupConnectionData Clone() {
      return new CircuitGroupConnectionData(this);
    }

    /// <summary>Field number for the "circuit_reference_data" field.</summary>
    public const int CircuitReferenceDataFieldNumber = 1;
    private global::RecRoom.Protobuf.CircuitGroupCircuitReferenceData circuitReferenceData_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.CircuitGroupCircuitReferenceData CircuitReferenceData {
      get { return circuitReferenceData_; }
      set {
        circuitReferenceData_ = value;
      }
    }

    /// <summary>Field number for the "interface_node_reference_data" field.</summary>
    public const int InterfaceNodeReferenceDataFieldNumber = 2;
    private global::RecRoom.Protobuf.CircuitGroupInterfaceNodeReferenceData interfaceNodeReferenceData_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.CircuitGroupInterfaceNodeReferenceData InterfaceNodeReferenceData {
      get { return interfaceNodeReferenceData_; }
      set {
        interfaceNodeReferenceData_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as CircuitGroupConnectionData);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(CircuitGroupConnectionData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(CircuitReferenceData, other.CircuitReferenceData)) return false;
      if (!object.Equals(InterfaceNodeReferenceData, other.InterfaceNodeReferenceData)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (circuitReferenceData_ != null) hash ^= CircuitReferenceData.GetHashCode();
      if (interfaceNodeReferenceData_ != null) hash ^= InterfaceNodeReferenceData.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (circuitReferenceData_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(CircuitReferenceData);
      }
      if (interfaceNodeReferenceData_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(InterfaceNodeReferenceData);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (circuitReferenceData_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(CircuitReferenceData);
      }
      if (interfaceNodeReferenceData_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(InterfaceNodeReferenceData);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (circuitReferenceData_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(CircuitReferenceData);
      }
      if (interfaceNodeReferenceData_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(InterfaceNodeReferenceData);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(CircuitGroupConnectionData other) {
      if (other == null) {
        return;
      }
      if (other.circuitReferenceData_ != null) {
        if (circuitReferenceData_ == null) {
          CircuitReferenceData = new global::RecRoom.Protobuf.CircuitGroupCircuitReferenceData();
        }
        CircuitReferenceData.MergeFrom(other.CircuitReferenceData);
      }
      if (other.interfaceNodeReferenceData_ != null) {
        if (interfaceNodeReferenceData_ == null) {
          InterfaceNodeReferenceData = new global::RecRoom.Protobuf.CircuitGroupInterfaceNodeReferenceData();
        }
        InterfaceNodeReferenceData.MergeFrom(other.InterfaceNodeReferenceData);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (circuitReferenceData_ == null) {
              CircuitReferenceData = new global::RecRoom.Protobuf.CircuitGroupCircuitReferenceData();
            }
            input.ReadMessage(CircuitReferenceData);
            break;
          }
          case 18: {
            if (interfaceNodeReferenceData_ == null) {
              InterfaceNodeReferenceData = new global::RecRoom.Protobuf.CircuitGroupInterfaceNodeReferenceData();
            }
            input.ReadMessage(InterfaceNodeReferenceData);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (circuitReferenceData_ == null) {
              CircuitReferenceData = new global::RecRoom.Protobuf.CircuitGroupCircuitReferenceData();
            }
            input.ReadMessage(CircuitReferenceData);
            break;
          }
          case 18: {
            if (interfaceNodeReferenceData_ == null) {
              InterfaceNodeReferenceData = new global::RecRoom.Protobuf.CircuitGroupInterfaceNodeReferenceData();
            }
            input.ReadMessage(InterfaceNodeReferenceData);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class CircuitGroupCircuitReferenceData : pb::IMessage<CircuitGroupCircuitReferenceData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<CircuitGroupCircuitReferenceData> _parser = new pb::MessageParser<CircuitGroupCircuitReferenceData>(() => new CircuitGroupCircuitReferenceData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<CircuitGroupCircuitReferenceData> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.Protobuf.ObjectGroupDataReflection.Descriptor.MessageTypes[5]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CircuitGroupCircuitReferenceData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CircuitGroupCircuitReferenceData(CircuitGroupCircuitReferenceData other) : this() {
      circuitNodeId_ = other.circuitNodeId_;
      slot_ = other.slot_;
      isInput_ = other.isInput_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CircuitGroupCircuitReferenceData Clone() {
      return new CircuitGroupCircuitReferenceData(this);
    }

    /// <summary>Field number for the "circuit_node_id" field.</summary>
    public const int CircuitNodeIdFieldNumber = 1;
    private pb::ByteString circuitNodeId_ = pb::ByteString.Empty;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pb::ByteString CircuitNodeId {
      get { return circuitNodeId_; }
      set {
        circuitNodeId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "slot" field.</summary>
    public const int SlotFieldNumber = 2;
    private int slot_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Slot {
      get { return slot_; }
      set {
        slot_ = value;
      }
    }

    /// <summary>Field number for the "is_input" field.</summary>
    public const int IsInputFieldNumber = 3;
    private bool isInput_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool IsInput {
      get { return isInput_; }
      set {
        isInput_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as CircuitGroupCircuitReferenceData);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(CircuitGroupCircuitReferenceData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (CircuitNodeId != other.CircuitNodeId) return false;
      if (Slot != other.Slot) return false;
      if (IsInput != other.IsInput) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (CircuitNodeId.Length != 0) hash ^= CircuitNodeId.GetHashCode();
      if (Slot != 0) hash ^= Slot.GetHashCode();
      if (IsInput != false) hash ^= IsInput.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (CircuitNodeId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteBytes(CircuitNodeId);
      }
      if (Slot != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(Slot);
      }
      if (IsInput != false) {
        output.WriteRawTag(24);
        output.WriteBool(IsInput);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (CircuitNodeId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteBytes(CircuitNodeId);
      }
      if (Slot != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(Slot);
      }
      if (IsInput != false) {
        output.WriteRawTag(24);
        output.WriteBool(IsInput);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (CircuitNodeId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(CircuitNodeId);
      }
      if (Slot != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Slot);
      }
      if (IsInput != false) {
        size += 1 + 1;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(CircuitGroupCircuitReferenceData other) {
      if (other == null) {
        return;
      }
      if (other.CircuitNodeId.Length != 0) {
        CircuitNodeId = other.CircuitNodeId;
      }
      if (other.Slot != 0) {
        Slot = other.Slot;
      }
      if (other.IsInput != false) {
        IsInput = other.IsInput;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            CircuitNodeId = input.ReadBytes();
            break;
          }
          case 16: {
            Slot = input.ReadInt32();
            break;
          }
          case 24: {
            IsInput = input.ReadBool();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            CircuitNodeId = input.ReadBytes();
            break;
          }
          case 16: {
            Slot = input.ReadInt32();
            break;
          }
          case 24: {
            IsInput = input.ReadBool();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class CircuitGroupInterfaceNodeReferenceData : pb::IMessage<CircuitGroupInterfaceNodeReferenceData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<CircuitGroupInterfaceNodeReferenceData> _parser = new pb::MessageParser<CircuitGroupInterfaceNodeReferenceData>(() => new CircuitGroupInterfaceNodeReferenceData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<CircuitGroupInterfaceNodeReferenceData> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.Protobuf.ObjectGroupDataReflection.Descriptor.MessageTypes[6]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CircuitGroupInterfaceNodeReferenceData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CircuitGroupInterfaceNodeReferenceData(CircuitGroupInterfaceNodeReferenceData other) : this() {
      circuitGroupId_ = other.circuitGroupId_;
      index_ = other.index_;
      isInput_ = other.isInput_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CircuitGroupInterfaceNodeReferenceData Clone() {
      return new CircuitGroupInterfaceNodeReferenceData(this);
    }

    /// <summary>Field number for the "circuit_group_id" field.</summary>
    public const int CircuitGroupIdFieldNumber = 1;
    private pb::ByteString circuitGroupId_ = pb::ByteString.Empty;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pb::ByteString CircuitGroupId {
      get { return circuitGroupId_; }
      set {
        circuitGroupId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "index" field.</summary>
    public const int IndexFieldNumber = 2;
    private int index_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Index {
      get { return index_; }
      set {
        index_ = value;
      }
    }

    /// <summary>Field number for the "is_input" field.</summary>
    public const int IsInputFieldNumber = 3;
    private bool isInput_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool IsInput {
      get { return isInput_; }
      set {
        isInput_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as CircuitGroupInterfaceNodeReferenceData);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(CircuitGroupInterfaceNodeReferenceData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (CircuitGroupId != other.CircuitGroupId) return false;
      if (Index != other.Index) return false;
      if (IsInput != other.IsInput) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (CircuitGroupId.Length != 0) hash ^= CircuitGroupId.GetHashCode();
      if (Index != 0) hash ^= Index.GetHashCode();
      if (IsInput != false) hash ^= IsInput.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (CircuitGroupId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteBytes(CircuitGroupId);
      }
      if (Index != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(Index);
      }
      if (IsInput != false) {
        output.WriteRawTag(24);
        output.WriteBool(IsInput);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (CircuitGroupId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteBytes(CircuitGroupId);
      }
      if (Index != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(Index);
      }
      if (IsInput != false) {
        output.WriteRawTag(24);
        output.WriteBool(IsInput);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (CircuitGroupId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(CircuitGroupId);
      }
      if (Index != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Index);
      }
      if (IsInput != false) {
        size += 1 + 1;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(CircuitGroupInterfaceNodeReferenceData other) {
      if (other == null) {
        return;
      }
      if (other.CircuitGroupId.Length != 0) {
        CircuitGroupId = other.CircuitGroupId;
      }
      if (other.Index != 0) {
        Index = other.Index;
      }
      if (other.IsInput != false) {
        IsInput = other.IsInput;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            CircuitGroupId = input.ReadBytes();
            break;
          }
          case 16: {
            Index = input.ReadInt32();
            break;
          }
          case 24: {
            IsInput = input.ReadBool();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            CircuitGroupId = input.ReadBytes();
            break;
          }
          case 16: {
            Index = input.ReadInt32();
            break;
          }
          case 24: {
            IsInput = input.ReadBool();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class ObjectKeyFrameData : pb::IMessage<ObjectKeyFrameData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ObjectKeyFrameData> _parser = new pb::MessageParser<ObjectKeyFrameData>(() => new ObjectKeyFrameData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ObjectKeyFrameData> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.Protobuf.ObjectGroupDataReflection.Descriptor.MessageTypes[7]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ObjectKeyFrameData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ObjectKeyFrameData(ObjectKeyFrameData other) : this() {
      position_ = other.position_ != null ? other.position_.Clone() : null;
      rotation_ = other.rotation_ != null ? other.rotation_.Clone() : null;
      flags_ = other.flags_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ObjectKeyFrameData Clone() {
      return new ObjectKeyFrameData(this);
    }

    /// <summary>Field number for the "position" field.</summary>
    public const int PositionFieldNumber = 1;
    private global::RecRoom.Protobuf.Core.Vector3Data position_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.Core.Vector3Data Position {
      get { return position_; }
      set {
        position_ = value;
      }
    }

    /// <summary>Field number for the "rotation" field.</summary>
    public const int RotationFieldNumber = 2;
    private global::RecRoom.Protobuf.Core.Vector3Data rotation_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.Core.Vector3Data Rotation {
      get { return rotation_; }
      set {
        rotation_ = value;
      }
    }

    /// <summary>Field number for the "flags" field.</summary>
    public const int FlagsFieldNumber = 3;
    private int flags_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Flags {
      get { return flags_; }
      set {
        flags_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as ObjectKeyFrameData);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ObjectKeyFrameData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Position, other.Position)) return false;
      if (!object.Equals(Rotation, other.Rotation)) return false;
      if (Flags != other.Flags) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (position_ != null) hash ^= Position.GetHashCode();
      if (rotation_ != null) hash ^= Rotation.GetHashCode();
      if (Flags != 0) hash ^= Flags.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (position_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Position);
      }
      if (rotation_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Rotation);
      }
      if (Flags != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(Flags);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (position_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Position);
      }
      if (rotation_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Rotation);
      }
      if (Flags != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(Flags);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (position_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Position);
      }
      if (rotation_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Rotation);
      }
      if (Flags != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Flags);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ObjectKeyFrameData other) {
      if (other == null) {
        return;
      }
      if (other.position_ != null) {
        if (position_ == null) {
          Position = new global::RecRoom.Protobuf.Core.Vector3Data();
        }
        Position.MergeFrom(other.Position);
      }
      if (other.rotation_ != null) {
        if (rotation_ == null) {
          Rotation = new global::RecRoom.Protobuf.Core.Vector3Data();
        }
        Rotation.MergeFrom(other.Rotation);
      }
      if (other.Flags != 0) {
        Flags = other.Flags;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (position_ == null) {
              Position = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(Position);
            break;
          }
          case 18: {
            if (rotation_ == null) {
              Rotation = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(Rotation);
            break;
          }
          case 24: {
            Flags = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (position_ == null) {
              Position = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(Position);
            break;
          }
          case 18: {
            if (rotation_ == null) {
              Rotation = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(Rotation);
            break;
          }
          case 24: {
            Flags = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class KeyFrameData : pb::IMessage<KeyFrameData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<KeyFrameData> _parser = new pb::MessageParser<KeyFrameData>(() => new KeyFrameData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<KeyFrameData> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.Protobuf.ObjectGroupDataReflection.Descriptor.MessageTypes[8]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public KeyFrameData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public KeyFrameData(KeyFrameData other) : this() {
      time_ = other.time_;
      objectKeyFrames_ = other.objectKeyFrames_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public KeyFrameData Clone() {
      return new KeyFrameData(this);
    }

    /// <summary>Field number for the "time" field.</summary>
    public const int TimeFieldNumber = 1;
    private float time_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Time {
      get { return time_; }
      set {
        time_ = value;
      }
    }

    /// <summary>Field number for the "object_key_frames" field.</summary>
    public const int ObjectKeyFramesFieldNumber = 2;
    private static readonly pb::FieldCodec<global::RecRoom.Protobuf.ObjectKeyFrameData> _repeated_objectKeyFrames_codec
        = pb::FieldCodec.ForMessage(18, global::RecRoom.Protobuf.ObjectKeyFrameData.Parser);
    private readonly pbc::RepeatedField<global::RecRoom.Protobuf.ObjectKeyFrameData> objectKeyFrames_ = new pbc::RepeatedField<global::RecRoom.Protobuf.ObjectKeyFrameData>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::RecRoom.Protobuf.ObjectKeyFrameData> ObjectKeyFrames {
      get { return objectKeyFrames_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as KeyFrameData);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(KeyFrameData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Time, other.Time)) return false;
      if(!objectKeyFrames_.Equals(other.objectKeyFrames_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Time != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Time);
      hash ^= objectKeyFrames_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Time != 0F) {
        output.WriteRawTag(13);
        output.WriteFloat(Time);
      }
      objectKeyFrames_.WriteTo(output, _repeated_objectKeyFrames_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Time != 0F) {
        output.WriteRawTag(13);
        output.WriteFloat(Time);
      }
      objectKeyFrames_.WriteTo(ref output, _repeated_objectKeyFrames_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Time != 0F) {
        size += 1 + 4;
      }
      size += objectKeyFrames_.CalculateSize(_repeated_objectKeyFrames_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(KeyFrameData other) {
      if (other == null) {
        return;
      }
      if (other.Time != 0F) {
        Time = other.Time;
      }
      objectKeyFrames_.Add(other.objectKeyFrames_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 13: {
            Time = input.ReadFloat();
            break;
          }
          case 18: {
            objectKeyFrames_.AddEntriesFrom(input, _repeated_objectKeyFrames_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 13: {
            Time = input.ReadFloat();
            break;
          }
          case 18: {
            objectKeyFrames_.AddEntriesFrom(ref input, _repeated_objectKeyFrames_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AnimationData : pb::IMessage<AnimationData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AnimationData> _parser = new pb::MessageParser<AnimationData>(() => new AnimationData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AnimationData> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.Protobuf.ObjectGroupDataReflection.Descriptor.MessageTypes[9]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AnimationData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AnimationData(AnimationData other) : this() {
      keyFrames_ = other.keyFrames_.Clone();
      speedPercentage_ = other.speedPercentage_;
      priority_ = other.priority_;
      flags_ = other.flags_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AnimationData Clone() {
      return new AnimationData(this);
    }

    /// <summary>Field number for the "key_frames" field.</summary>
    public const int KeyFramesFieldNumber = 2;
    private static readonly pb::FieldCodec<global::RecRoom.Protobuf.KeyFrameData> _repeated_keyFrames_codec
        = pb::FieldCodec.ForMessage(18, global::RecRoom.Protobuf.KeyFrameData.Parser);
    private readonly pbc::RepeatedField<global::RecRoom.Protobuf.KeyFrameData> keyFrames_ = new pbc::RepeatedField<global::RecRoom.Protobuf.KeyFrameData>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::RecRoom.Protobuf.KeyFrameData> KeyFrames {
      get { return keyFrames_; }
    }

    /// <summary>Field number for the "speed_percentage" field.</summary>
    public const int SpeedPercentageFieldNumber = 5;
    private int speedPercentage_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int SpeedPercentage {
      get { return speedPercentage_; }
      set {
        speedPercentage_ = value;
      }
    }

    /// <summary>Field number for the "priority" field.</summary>
    public const int PriorityFieldNumber = 6;
    private int priority_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Priority {
      get { return priority_; }
      set {
        priority_ = value;
      }
    }

    /// <summary>Field number for the "flags" field.</summary>
    public const int FlagsFieldNumber = 7;
    private int flags_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Flags {
      get { return flags_; }
      set {
        flags_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AnimationData);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AnimationData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!keyFrames_.Equals(other.keyFrames_)) return false;
      if (SpeedPercentage != other.SpeedPercentage) return false;
      if (Priority != other.Priority) return false;
      if (Flags != other.Flags) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= keyFrames_.GetHashCode();
      if (SpeedPercentage != 0) hash ^= SpeedPercentage.GetHashCode();
      if (Priority != 0) hash ^= Priority.GetHashCode();
      if (Flags != 0) hash ^= Flags.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      keyFrames_.WriteTo(output, _repeated_keyFrames_codec);
      if (SpeedPercentage != 0) {
        output.WriteRawTag(40);
        output.WriteInt32(SpeedPercentage);
      }
      if (Priority != 0) {
        output.WriteRawTag(48);
        output.WriteInt32(Priority);
      }
      if (Flags != 0) {
        output.WriteRawTag(56);
        output.WriteInt32(Flags);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      keyFrames_.WriteTo(ref output, _repeated_keyFrames_codec);
      if (SpeedPercentage != 0) {
        output.WriteRawTag(40);
        output.WriteInt32(SpeedPercentage);
      }
      if (Priority != 0) {
        output.WriteRawTag(48);
        output.WriteInt32(Priority);
      }
      if (Flags != 0) {
        output.WriteRawTag(56);
        output.WriteInt32(Flags);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += keyFrames_.CalculateSize(_repeated_keyFrames_codec);
      if (SpeedPercentage != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(SpeedPercentage);
      }
      if (Priority != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Priority);
      }
      if (Flags != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Flags);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AnimationData other) {
      if (other == null) {
        return;
      }
      keyFrames_.Add(other.keyFrames_);
      if (other.SpeedPercentage != 0) {
        SpeedPercentage = other.SpeedPercentage;
      }
      if (other.Priority != 0) {
        Priority = other.Priority;
      }
      if (other.Flags != 0) {
        Flags = other.Flags;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 18: {
            keyFrames_.AddEntriesFrom(input, _repeated_keyFrames_codec);
            break;
          }
          case 40: {
            SpeedPercentage = input.ReadInt32();
            break;
          }
          case 48: {
            Priority = input.ReadInt32();
            break;
          }
          case 56: {
            Flags = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 18: {
            keyFrames_.AddEntriesFrom(ref input, _repeated_keyFrames_codec);
            break;
          }
          case 40: {
            SpeedPercentage = input.ReadInt32();
            break;
          }
          case 48: {
            Priority = input.ReadInt32();
            break;
          }
          case 56: {
            Flags = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  #endregion

}

#endregion Designer generated code
