// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: rec_room/persistence/shape_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/shape_data.proto</summary>
  public static partial class ShapeDataReflection {

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

    static ShapeDataReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "CiVyZWNfcm9vbS9wZXJzaXN0ZW5jZS9zaGFwZV9kYXRhLnByb3RvEghyZWNf",
            "cm9vbRoXY29yZS92ZWN0b3IzX2RhdGEucHJvdG8iqAIKIFNoYXBlQ29udGFp",
            "bmVyRGF0YUNvbGxlY3Rpb25EYXRhEmoKEHNoYXBlX2NvbnRhaW5lcnMYASAD",
            "KAsyUC5yZWNfcm9vbS5TaGFwZUNvbnRhaW5lckRhdGFDb2xsZWN0aW9uRGF0",
            "YS5TaGFwZUNvbnRhaW5lckRhdGFDb2xsZWN0aW9uRW50cnlEYXRhGpcBCiVT",
            "aGFwZUNvbnRhaW5lckRhdGFDb2xsZWN0aW9uRW50cnlEYXRhEhYKDnBob3Rv",
            "bl92aWV3X2lkGAEgASgFEjEKBnNoYXBlcxgCIAEoCzIhLnJlY19yb29tLlNo",
            "YXBlRGF0YUNvbGxlY3Rpb25EYXRhEhEKCXVuY2hhbmdlZBgEIAEoCBIQCghy",
            "ZXZpc2lvbhgFIAEoBSKlAQoSU2hhcGVDb250YWluZXJEYXRhEjsKEHNoYXBl",
            "X2NvbGxlY3Rpb24YASABKAsyIS5yZWNfcm9vbS5TaGFwZURhdGFDb2xsZWN0",
            "aW9uRGF0YRIUCgxwaHlzaWNzX21vZGUYAiABKAUSIAoYY2FuX21vZGlmeV93",
            "aXRoX2NpcmN1aXRzGAMgASgIEhoKEm9wdGltaXplX2NvbGxpZGVycxgEIAEo",
            "CCI+ChdTaGFwZURhdGFDb2xsZWN0aW9uRGF0YRIjCgZzaGFwZXMYASADKAsy",
            "Ey5yZWNfcm9vbS5TaGFwZURhdGEi6gQKCVNoYXBlRGF0YRISCgpzaGFwZV90",
            "eXBlGAEgASgFEhMKC3NoYXBlX2NvbG9yGAIgASgFEhYKDnNoYXBlX21hdGVy",
            "aWFsGBIgASgFEjwKIURFUFJFQ0FURURfaW5pdGlhbF9sb2NhbF9wb3NpdGlv",
            "bhgFIAEoCzIRLmNvcmUuVmVjdG9yM0RhdGESPAohREVQUkVDQVRFRF9pbml0",
            "aWFsX2xvY2FsX3JvdGF0aW9uGAYgASgLMhEuY29yZS5WZWN0b3IzRGF0YRIx",
            "ChZjdXJyZW50X2xvY2FsX3Bvc2l0aW9uGAcgASgLMhEuY29yZS5WZWN0b3Iz",
            "RGF0YRIxChZjdXJyZW50X2xvY2FsX3JvdGF0aW9uGAggASgLMhEuY29yZS5W",
            "ZWN0b3IzRGF0YRI3ChxERVBSRUNBVEVEX3NjYWxlX25vbl91bmlmb3JtGAkg",
            "ASgLMhEuY29yZS5WZWN0b3IzRGF0YRIhChl1c2VfdW5jb21wcmVzc2VkX3Jv",
            "dGF0aW9uGAogASgIEg8KB2RlbnNpdHkYCyABKAISCgoCaWQYDCABKAwSDQoF",
            "c2NhbGUYDSABKAISJAoJdXZfb2Zmc2V0GA4gASgLMhEuY29yZS5WZWN0b3Iz",
            "RGF0YRIQCgh1dl9zY2FsZRgPIAEoAhIUCgxjb25maWdfZmxhZ3MYEyABKAUS",
            "MAoPbWVzaF9zaGFwZV9kYXRhGBAgASgLMhcucmVjX3Jvb20uTWVzaFNoYXBl",
            "RGF0YRIyChBjdXJ2ZV9zaGFwZV9kYXRhGBEgASgLMhgucmVjX3Jvb20uQ3Vy",
            "dmVTaGFwZURhdGEiYQoNTWVzaFNoYXBlRGF0YRInCgxsZWdhY3lfc2NhbGUY",
            "ASABKAsyES5jb3JlLlZlY3RvcjNEYXRhEicKDGFzcGVjdF9yYXRpbxgCIAEo",
            "CzIRLmNvcmUuVmVjdG9yM0RhdGEiqQEKDkN1cnZlU2hhcGVEYXRhEjIKDmNv",
            "bnRyb2xfcG9pbnRzGAEgAygLMhoucmVjX3Jvb20uQ29udHJvbFBvaW50RGF0",
            "YRITCgtmbGF0X3NoYWRlZBgCIAEoCBIZChF0dWJlX2hlaWdodF9zY2FsZRgD",
            "IAEoAhIYChB0dWJlX3JpbmdfcG9pbnRzGAQgASgFEhkKEW5ld19lbmRfY2Fw",
            "X3N0eWxlGAUgASgIImoKEENvbnRyb2xQb2ludERhdGESIwoIcG9zaXRpb24Y",
            "ASABKAsyES5jb3JlLlZlY3RvcjNEYXRhEiEKBm5vcm1hbBgCIAEoCzIRLmNv",
            "cmUuVmVjdG9yM0RhdGESDgoGcmFkaXVzGAMgASgCQhOqAhBSZWNSb29tLlBy",
            "b3RvYnVmYgZwcm90bzM="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::RecRoom.Protobuf.Core.Vector3DataReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.ShapeContainerDataCollectionData), global::RecRoom.Protobuf.ShapeContainerDataCollectionData.Parser, new[]{ "ShapeContainers" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.ShapeContainerDataCollectionData.Types.ShapeContainerDataCollectionEntryData), global::RecRoom.Protobuf.ShapeContainerDataCollectionData.Types.ShapeContainerDataCollectionEntryData.Parser, new[]{ "PhotonViewId", "Shapes", "Unchanged", "Revision" }, null, null, null, null)}),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.ShapeContainerData), global::RecRoom.Protobuf.ShapeContainerData.Parser, new[]{ "ShapeCollection", "PhysicsMode", "CanModifyWithCircuits", "OptimizeColliders" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.ShapeDataCollectionData), global::RecRoom.Protobuf.ShapeDataCollectionData.Parser, new[]{ "Shapes" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.ShapeData), global::RecRoom.Protobuf.ShapeData.Parser, new[]{ "ShapeType", "ShapeColor", "ShapeMaterial", "DEPRECATEDInitialLocalPosition", "DEPRECATEDInitialLocalRotation", "CurrentLocalPosition", "CurrentLocalRotation", "DEPRECATEDScaleNonUniform", "UseUncompressedRotation", "Density", "Id", "Scale", "UvOffset", "UvScale", "ConfigFlags", "MeshShapeData", "CurveShapeData" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.MeshShapeData), global::RecRoom.Protobuf.MeshShapeData.Parser, new[]{ "LegacyScale", "AspectRatio" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.CurveShapeData), global::RecRoom.Protobuf.CurveShapeData.Parser, new[]{ "ControlPoints", "FlatShaded", "TubeHeightScale", "TubeRingPoints", "NewEndCapStyle" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.Protobuf.ControlPointData), global::RecRoom.Protobuf.ControlPointData.Parser, new[]{ "Position", "Normal", "Radius" }, null, null, null, null)
          }));
    }
    #endregion

  }
  #region Messages
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class ShapeContainerDataCollectionData : pb::IMessage<ShapeContainerDataCollectionData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ShapeContainerDataCollectionData> _parser = new pb::MessageParser<ShapeContainerDataCollectionData>(() => new ShapeContainerDataCollectionData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ShapeContainerDataCollectionData> 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.ShapeDataReflection.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 ShapeContainerDataCollectionData() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "shape_containers" field.</summary>
    public const int ShapeContainersFieldNumber = 1;
    private static readonly pb::FieldCodec<global::RecRoom.Protobuf.ShapeContainerDataCollectionData.Types.ShapeContainerDataCollectionEntryData> _repeated_shapeContainers_codec
        = pb::FieldCodec.ForMessage(10, global::RecRoom.Protobuf.ShapeContainerDataCollectionData.Types.ShapeContainerDataCollectionEntryData.Parser);
    private readonly pbc::RepeatedField<global::RecRoom.Protobuf.ShapeContainerDataCollectionData.Types.ShapeContainerDataCollectionEntryData> shapeContainers_ = new pbc::RepeatedField<global::RecRoom.Protobuf.ShapeContainerDataCollectionData.Types.ShapeContainerDataCollectionEntryData>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::RecRoom.Protobuf.ShapeContainerDataCollectionData.Types.ShapeContainerDataCollectionEntryData> ShapeContainers {
      get { return shapeContainers_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ShapeContainerDataCollectionData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!shapeContainers_.Equals(other.shapeContainers_)) 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 ^= shapeContainers_.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
      shapeContainers_.WriteTo(output, _repeated_shapeContainers_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) {
      shapeContainers_.WriteTo(ref output, _repeated_shapeContainers_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 += shapeContainers_.CalculateSize(_repeated_shapeContainers_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ShapeContainerDataCollectionData other) {
      if (other == null) {
        return;
      }
      shapeContainers_.Add(other.shapeContainers_);
      _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: {
            shapeContainers_.AddEntriesFrom(input, _repeated_shapeContainers_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: {
            shapeContainers_.AddEntriesFrom(ref input, _repeated_shapeContainers_codec);
            break;
          }
        }
      }
    }
    #endif

    #region Nested types
    /// <summary>Container for nested types declared in the ShapeContainerDataCollectionData 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 ShapeContainerDataCollectionEntryData : pb::IMessage<ShapeContainerDataCollectionEntryData>
      #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
          , pb::IBufferMessage
      #endif
      {
        private static readonly pb::MessageParser<ShapeContainerDataCollectionEntryData> _parser = new pb::MessageParser<ShapeContainerDataCollectionEntryData>(() => new ShapeContainerDataCollectionEntryData());
        private pb::UnknownFieldSet _unknownFields;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public static pb::MessageParser<ShapeContainerDataCollectionEntryData> 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.ShapeContainerDataCollectionData.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 ShapeContainerDataCollectionEntryData() {
          OnConstruction();
        }

        partial void OnConstruction();

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public ShapeContainerDataCollectionEntryData Clone() {
          return new ShapeContainerDataCollectionEntryData(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 "shapes" field.</summary>
        public const int ShapesFieldNumber = 2;
        private global::RecRoom.Protobuf.ShapeDataCollectionData shapes_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public global::RecRoom.Protobuf.ShapeDataCollectionData Shapes {
          get { return shapes_; }
          set {
            shapes_ = value;
          }
        }

        /// <summary>Field number for the "unchanged" field.</summary>
        public const int UnchangedFieldNumber = 4;
        private bool unchanged_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public bool Unchanged {
          get { return unchanged_; }
          set {
            unchanged_ = value;
          }
        }

        /// <summary>Field number for the "revision" field.</summary>
        public const int RevisionFieldNumber = 5;
        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 ShapeContainerDataCollectionEntryData);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public bool Equals(ShapeContainerDataCollectionEntryData other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (PhotonViewId != other.PhotonViewId) return false;
          if (!object.Equals(Shapes, other.Shapes)) return false;
          if (Unchanged != other.Unchanged) 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 (shapes_ != null) hash ^= Shapes.GetHashCode();
          if (Unchanged != false) hash ^= Unchanged.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 (shapes_ != null) {
            output.WriteRawTag(18);
            output.WriteMessage(Shapes);
          }
          if (Unchanged != false) {
            output.WriteRawTag(32);
            output.WriteBool(Unchanged);
          }
          if (Revision != 0) {
            output.WriteRawTag(40);
            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 (shapes_ != null) {
            output.WriteRawTag(18);
            output.WriteMessage(Shapes);
          }
          if (Unchanged != false) {
            output.WriteRawTag(32);
            output.WriteBool(Unchanged);
          }
          if (Revision != 0) {
            output.WriteRawTag(40);
            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 (shapes_ != null) {
            size += 1 + pb::CodedOutputStream.ComputeMessageSize(Shapes);
          }
          if (Unchanged != false) {
            size += 1 + 1;
          }
          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(ShapeContainerDataCollectionEntryData other) {
          if (other == null) {
            return;
          }
          if (other.PhotonViewId != 0) {
            PhotonViewId = other.PhotonViewId;
          }
          if (other.shapes_ != null) {
            if (shapes_ == null) {
              Shapes = new global::RecRoom.Protobuf.ShapeDataCollectionData();
            }
            Shapes.MergeFrom(other.Shapes);
          }
          if (other.Unchanged != false) {
            Unchanged = other.Unchanged;
          }
          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 (shapes_ == null) {
                  Shapes = new global::RecRoom.Protobuf.ShapeDataCollectionData();
                }
                input.ReadMessage(Shapes);
                break;
              }
              case 32: {
                Unchanged = input.ReadBool();
                break;
              }
              case 40: {
                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 (shapes_ == null) {
                  Shapes = new global::RecRoom.Protobuf.ShapeDataCollectionData();
                }
                input.ReadMessage(Shapes);
                break;
              }
              case 32: {
                Unchanged = input.ReadBool();
                break;
              }
              case 40: {
                Revision = input.ReadInt32();
                break;
              }
            }
          }
        }
        #endif

      }

    }
    #endregion

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class ShapeContainerData : pb::IMessage<ShapeContainerData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ShapeContainerData> _parser = new pb::MessageParser<ShapeContainerData>(() => new ShapeContainerData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ShapeContainerData> 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.ShapeDataReflection.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 ShapeContainerData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ShapeContainerData(ShapeContainerData other) : this() {
      shapeCollection_ = other.shapeCollection_ != null ? other.shapeCollection_.Clone() : null;
      physicsMode_ = other.physicsMode_;
      canModifyWithCircuits_ = other.canModifyWithCircuits_;
      optimizeColliders_ = other.optimizeColliders_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

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

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

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

    /// <summary>Field number for the "optimize_colliders" field.</summary>
    public const int OptimizeCollidersFieldNumber = 4;
    private bool optimizeColliders_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool OptimizeColliders {
      get { return optimizeColliders_; }
      set {
        optimizeColliders_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ShapeContainerData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(ShapeCollection, other.ShapeCollection)) return false;
      if (PhysicsMode != other.PhysicsMode) return false;
      if (CanModifyWithCircuits != other.CanModifyWithCircuits) return false;
      if (OptimizeColliders != other.OptimizeColliders) 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 (shapeCollection_ != null) hash ^= ShapeCollection.GetHashCode();
      if (PhysicsMode != 0) hash ^= PhysicsMode.GetHashCode();
      if (CanModifyWithCircuits != false) hash ^= CanModifyWithCircuits.GetHashCode();
      if (OptimizeColliders != false) hash ^= OptimizeColliders.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 (shapeCollection_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(ShapeCollection);
      }
      if (PhysicsMode != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(PhysicsMode);
      }
      if (CanModifyWithCircuits != false) {
        output.WriteRawTag(24);
        output.WriteBool(CanModifyWithCircuits);
      }
      if (OptimizeColliders != false) {
        output.WriteRawTag(32);
        output.WriteBool(OptimizeColliders);
      }
      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 (shapeCollection_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(ShapeCollection);
      }
      if (PhysicsMode != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(PhysicsMode);
      }
      if (CanModifyWithCircuits != false) {
        output.WriteRawTag(24);
        output.WriteBool(CanModifyWithCircuits);
      }
      if (OptimizeColliders != false) {
        output.WriteRawTag(32);
        output.WriteBool(OptimizeColliders);
      }
      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 (shapeCollection_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ShapeCollection);
      }
      if (PhysicsMode != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(PhysicsMode);
      }
      if (CanModifyWithCircuits != false) {
        size += 1 + 1;
      }
      if (OptimizeColliders != 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(ShapeContainerData other) {
      if (other == null) {
        return;
      }
      if (other.shapeCollection_ != null) {
        if (shapeCollection_ == null) {
          ShapeCollection = new global::RecRoom.Protobuf.ShapeDataCollectionData();
        }
        ShapeCollection.MergeFrom(other.ShapeCollection);
      }
      if (other.PhysicsMode != 0) {
        PhysicsMode = other.PhysicsMode;
      }
      if (other.CanModifyWithCircuits != false) {
        CanModifyWithCircuits = other.CanModifyWithCircuits;
      }
      if (other.OptimizeColliders != false) {
        OptimizeColliders = other.OptimizeColliders;
      }
      _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 (shapeCollection_ == null) {
              ShapeCollection = new global::RecRoom.Protobuf.ShapeDataCollectionData();
            }
            input.ReadMessage(ShapeCollection);
            break;
          }
          case 16: {
            PhysicsMode = input.ReadInt32();
            break;
          }
          case 24: {
            CanModifyWithCircuits = input.ReadBool();
            break;
          }
          case 32: {
            OptimizeColliders = 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: {
            if (shapeCollection_ == null) {
              ShapeCollection = new global::RecRoom.Protobuf.ShapeDataCollectionData();
            }
            input.ReadMessage(ShapeCollection);
            break;
          }
          case 16: {
            PhysicsMode = input.ReadInt32();
            break;
          }
          case 24: {
            CanModifyWithCircuits = input.ReadBool();
            break;
          }
          case 32: {
            OptimizeColliders = input.ReadBool();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class ShapeDataCollectionData : pb::IMessage<ShapeDataCollectionData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ShapeDataCollectionData> _parser = new pb::MessageParser<ShapeDataCollectionData>(() => new ShapeDataCollectionData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ShapeDataCollectionData> 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.ShapeDataReflection.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 ShapeDataCollectionData() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ShapeDataCollectionData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!shapes_.Equals(other.shapes_)) 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 ^= shapes_.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
      shapes_.WriteTo(output, _repeated_shapes_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) {
      shapes_.WriteTo(ref output, _repeated_shapes_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 += shapes_.CalculateSize(_repeated_shapes_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ShapeDataCollectionData other) {
      if (other == null) {
        return;
      }
      shapes_.Add(other.shapes_);
      _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: {
            shapes_.AddEntriesFrom(input, _repeated_shapes_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: {
            shapes_.AddEntriesFrom(ref input, _repeated_shapes_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class ShapeData : pb::IMessage<ShapeData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ShapeData> _parser = new pb::MessageParser<ShapeData>(() => new ShapeData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ShapeData> 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.ShapeDataReflection.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 ShapeData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ShapeData(ShapeData other) : this() {
      shapeType_ = other.shapeType_;
      shapeColor_ = other.shapeColor_;
      shapeMaterial_ = other.shapeMaterial_;
      dEPRECATEDInitialLocalPosition_ = other.dEPRECATEDInitialLocalPosition_ != null ? other.dEPRECATEDInitialLocalPosition_.Clone() : null;
      dEPRECATEDInitialLocalRotation_ = other.dEPRECATEDInitialLocalRotation_ != null ? other.dEPRECATEDInitialLocalRotation_.Clone() : null;
      currentLocalPosition_ = other.currentLocalPosition_ != null ? other.currentLocalPosition_.Clone() : null;
      currentLocalRotation_ = other.currentLocalRotation_ != null ? other.currentLocalRotation_.Clone() : null;
      dEPRECATEDScaleNonUniform_ = other.dEPRECATEDScaleNonUniform_ != null ? other.dEPRECATEDScaleNonUniform_.Clone() : null;
      useUncompressedRotation_ = other.useUncompressedRotation_;
      density_ = other.density_;
      id_ = other.id_;
      scale_ = other.scale_;
      uvOffset_ = other.uvOffset_ != null ? other.uvOffset_.Clone() : null;
      uvScale_ = other.uvScale_;
      configFlags_ = other.configFlags_;
      meshShapeData_ = other.meshShapeData_ != null ? other.meshShapeData_.Clone() : null;
      curveShapeData_ = other.curveShapeData_ != null ? other.curveShapeData_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

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

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

    /// <summary>Field number for the "shape_material" field.</summary>
    public const int ShapeMaterialFieldNumber = 18;
    private int shapeMaterial_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ShapeMaterial {
      get { return shapeMaterial_; }
      set {
        shapeMaterial_ = value;
      }
    }

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

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

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

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

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

    /// <summary>Field number for the "use_uncompressed_rotation" field.</summary>
    public const int UseUncompressedRotationFieldNumber = 10;
    private bool useUncompressedRotation_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool UseUncompressedRotation {
      get { return useUncompressedRotation_; }
      set {
        useUncompressedRotation_ = value;
      }
    }

    /// <summary>Field number for the "density" field.</summary>
    public const int DensityFieldNumber = 11;
    private float density_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Density {
      get { return density_; }
      set {
        density_ = value;
      }
    }

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

    /// <summary>Field number for the "scale" field.</summary>
    public const int ScaleFieldNumber = 13;
    private float scale_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Scale {
      get { return scale_; }
      set {
        scale_ = value;
      }
    }

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

    /// <summary>Field number for the "uv_scale" field.</summary>
    public const int UvScaleFieldNumber = 15;
    private float uvScale_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float UvScale {
      get { return uvScale_; }
      set {
        uvScale_ = value;
      }
    }

    /// <summary>Field number for the "config_flags" field.</summary>
    public const int ConfigFlagsFieldNumber = 19;
    private int configFlags_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ConfigFlags {
      get { return configFlags_; }
      set {
        configFlags_ = value;
      }
    }

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ShapeData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ShapeType != other.ShapeType) return false;
      if (ShapeColor != other.ShapeColor) return false;
      if (ShapeMaterial != other.ShapeMaterial) return false;
      if (!object.Equals(DEPRECATEDInitialLocalPosition, other.DEPRECATEDInitialLocalPosition)) return false;
      if (!object.Equals(DEPRECATEDInitialLocalRotation, other.DEPRECATEDInitialLocalRotation)) return false;
      if (!object.Equals(CurrentLocalPosition, other.CurrentLocalPosition)) return false;
      if (!object.Equals(CurrentLocalRotation, other.CurrentLocalRotation)) return false;
      if (!object.Equals(DEPRECATEDScaleNonUniform, other.DEPRECATEDScaleNonUniform)) return false;
      if (UseUncompressedRotation != other.UseUncompressedRotation) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Density, other.Density)) return false;
      if (Id != other.Id) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Scale, other.Scale)) return false;
      if (!object.Equals(UvOffset, other.UvOffset)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(UvScale, other.UvScale)) return false;
      if (ConfigFlags != other.ConfigFlags) return false;
      if (!object.Equals(MeshShapeData, other.MeshShapeData)) return false;
      if (!object.Equals(CurveShapeData, other.CurveShapeData)) 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 (ShapeType != 0) hash ^= ShapeType.GetHashCode();
      if (ShapeColor != 0) hash ^= ShapeColor.GetHashCode();
      if (ShapeMaterial != 0) hash ^= ShapeMaterial.GetHashCode();
      if (dEPRECATEDInitialLocalPosition_ != null) hash ^= DEPRECATEDInitialLocalPosition.GetHashCode();
      if (dEPRECATEDInitialLocalRotation_ != null) hash ^= DEPRECATEDInitialLocalRotation.GetHashCode();
      if (currentLocalPosition_ != null) hash ^= CurrentLocalPosition.GetHashCode();
      if (currentLocalRotation_ != null) hash ^= CurrentLocalRotation.GetHashCode();
      if (dEPRECATEDScaleNonUniform_ != null) hash ^= DEPRECATEDScaleNonUniform.GetHashCode();
      if (UseUncompressedRotation != false) hash ^= UseUncompressedRotation.GetHashCode();
      if (Density != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Density);
      if (Id.Length != 0) hash ^= Id.GetHashCode();
      if (Scale != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Scale);
      if (uvOffset_ != null) hash ^= UvOffset.GetHashCode();
      if (UvScale != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(UvScale);
      if (ConfigFlags != 0) hash ^= ConfigFlags.GetHashCode();
      if (meshShapeData_ != null) hash ^= MeshShapeData.GetHashCode();
      if (curveShapeData_ != null) hash ^= CurveShapeData.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 (ShapeType != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ShapeType);
      }
      if (ShapeColor != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(ShapeColor);
      }
      if (dEPRECATEDInitialLocalPosition_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(DEPRECATEDInitialLocalPosition);
      }
      if (dEPRECATEDInitialLocalRotation_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(DEPRECATEDInitialLocalRotation);
      }
      if (currentLocalPosition_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(CurrentLocalPosition);
      }
      if (currentLocalRotation_ != null) {
        output.WriteRawTag(66);
        output.WriteMessage(CurrentLocalRotation);
      }
      if (dEPRECATEDScaleNonUniform_ != null) {
        output.WriteRawTag(74);
        output.WriteMessage(DEPRECATEDScaleNonUniform);
      }
      if (UseUncompressedRotation != false) {
        output.WriteRawTag(80);
        output.WriteBool(UseUncompressedRotation);
      }
      if (Density != 0F) {
        output.WriteRawTag(93);
        output.WriteFloat(Density);
      }
      if (Id.Length != 0) {
        output.WriteRawTag(98);
        output.WriteBytes(Id);
      }
      if (Scale != 0F) {
        output.WriteRawTag(109);
        output.WriteFloat(Scale);
      }
      if (uvOffset_ != null) {
        output.WriteRawTag(114);
        output.WriteMessage(UvOffset);
      }
      if (UvScale != 0F) {
        output.WriteRawTag(125);
        output.WriteFloat(UvScale);
      }
      if (meshShapeData_ != null) {
        output.WriteRawTag(130, 1);
        output.WriteMessage(MeshShapeData);
      }
      if (curveShapeData_ != null) {
        output.WriteRawTag(138, 1);
        output.WriteMessage(CurveShapeData);
      }
      if (ShapeMaterial != 0) {
        output.WriteRawTag(144, 1);
        output.WriteInt32(ShapeMaterial);
      }
      if (ConfigFlags != 0) {
        output.WriteRawTag(152, 1);
        output.WriteInt32(ConfigFlags);
      }
      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 (ShapeType != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ShapeType);
      }
      if (ShapeColor != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(ShapeColor);
      }
      if (dEPRECATEDInitialLocalPosition_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(DEPRECATEDInitialLocalPosition);
      }
      if (dEPRECATEDInitialLocalRotation_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(DEPRECATEDInitialLocalRotation);
      }
      if (currentLocalPosition_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(CurrentLocalPosition);
      }
      if (currentLocalRotation_ != null) {
        output.WriteRawTag(66);
        output.WriteMessage(CurrentLocalRotation);
      }
      if (dEPRECATEDScaleNonUniform_ != null) {
        output.WriteRawTag(74);
        output.WriteMessage(DEPRECATEDScaleNonUniform);
      }
      if (UseUncompressedRotation != false) {
        output.WriteRawTag(80);
        output.WriteBool(UseUncompressedRotation);
      }
      if (Density != 0F) {
        output.WriteRawTag(93);
        output.WriteFloat(Density);
      }
      if (Id.Length != 0) {
        output.WriteRawTag(98);
        output.WriteBytes(Id);
      }
      if (Scale != 0F) {
        output.WriteRawTag(109);
        output.WriteFloat(Scale);
      }
      if (uvOffset_ != null) {
        output.WriteRawTag(114);
        output.WriteMessage(UvOffset);
      }
      if (UvScale != 0F) {
        output.WriteRawTag(125);
        output.WriteFloat(UvScale);
      }
      if (meshShapeData_ != null) {
        output.WriteRawTag(130, 1);
        output.WriteMessage(MeshShapeData);
      }
      if (curveShapeData_ != null) {
        output.WriteRawTag(138, 1);
        output.WriteMessage(CurveShapeData);
      }
      if (ShapeMaterial != 0) {
        output.WriteRawTag(144, 1);
        output.WriteInt32(ShapeMaterial);
      }
      if (ConfigFlags != 0) {
        output.WriteRawTag(152, 1);
        output.WriteInt32(ConfigFlags);
      }
      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 (ShapeType != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ShapeType);
      }
      if (ShapeColor != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ShapeColor);
      }
      if (ShapeMaterial != 0) {
        size += 2 + pb::CodedOutputStream.ComputeInt32Size(ShapeMaterial);
      }
      if (dEPRECATEDInitialLocalPosition_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(DEPRECATEDInitialLocalPosition);
      }
      if (dEPRECATEDInitialLocalRotation_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(DEPRECATEDInitialLocalRotation);
      }
      if (currentLocalPosition_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(CurrentLocalPosition);
      }
      if (currentLocalRotation_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(CurrentLocalRotation);
      }
      if (dEPRECATEDScaleNonUniform_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(DEPRECATEDScaleNonUniform);
      }
      if (UseUncompressedRotation != false) {
        size += 1 + 1;
      }
      if (Density != 0F) {
        size += 1 + 4;
      }
      if (Id.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Id);
      }
      if (Scale != 0F) {
        size += 1 + 4;
      }
      if (uvOffset_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(UvOffset);
      }
      if (UvScale != 0F) {
        size += 1 + 4;
      }
      if (ConfigFlags != 0) {
        size += 2 + pb::CodedOutputStream.ComputeInt32Size(ConfigFlags);
      }
      if (meshShapeData_ != null) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(MeshShapeData);
      }
      if (curveShapeData_ != null) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(CurveShapeData);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ShapeData other) {
      if (other == null) {
        return;
      }
      if (other.ShapeType != 0) {
        ShapeType = other.ShapeType;
      }
      if (other.ShapeColor != 0) {
        ShapeColor = other.ShapeColor;
      }
      if (other.ShapeMaterial != 0) {
        ShapeMaterial = other.ShapeMaterial;
      }
      if (other.dEPRECATEDInitialLocalPosition_ != null) {
        if (dEPRECATEDInitialLocalPosition_ == null) {
          DEPRECATEDInitialLocalPosition = new global::RecRoom.Protobuf.Core.Vector3Data();
        }
        DEPRECATEDInitialLocalPosition.MergeFrom(other.DEPRECATEDInitialLocalPosition);
      }
      if (other.dEPRECATEDInitialLocalRotation_ != null) {
        if (dEPRECATEDInitialLocalRotation_ == null) {
          DEPRECATEDInitialLocalRotation = new global::RecRoom.Protobuf.Core.Vector3Data();
        }
        DEPRECATEDInitialLocalRotation.MergeFrom(other.DEPRECATEDInitialLocalRotation);
      }
      if (other.currentLocalPosition_ != null) {
        if (currentLocalPosition_ == null) {
          CurrentLocalPosition = new global::RecRoom.Protobuf.Core.Vector3Data();
        }
        CurrentLocalPosition.MergeFrom(other.CurrentLocalPosition);
      }
      if (other.currentLocalRotation_ != null) {
        if (currentLocalRotation_ == null) {
          CurrentLocalRotation = new global::RecRoom.Protobuf.Core.Vector3Data();
        }
        CurrentLocalRotation.MergeFrom(other.CurrentLocalRotation);
      }
      if (other.dEPRECATEDScaleNonUniform_ != null) {
        if (dEPRECATEDScaleNonUniform_ == null) {
          DEPRECATEDScaleNonUniform = new global::RecRoom.Protobuf.Core.Vector3Data();
        }
        DEPRECATEDScaleNonUniform.MergeFrom(other.DEPRECATEDScaleNonUniform);
      }
      if (other.UseUncompressedRotation != false) {
        UseUncompressedRotation = other.UseUncompressedRotation;
      }
      if (other.Density != 0F) {
        Density = other.Density;
      }
      if (other.Id.Length != 0) {
        Id = other.Id;
      }
      if (other.Scale != 0F) {
        Scale = other.Scale;
      }
      if (other.uvOffset_ != null) {
        if (uvOffset_ == null) {
          UvOffset = new global::RecRoom.Protobuf.Core.Vector3Data();
        }
        UvOffset.MergeFrom(other.UvOffset);
      }
      if (other.UvScale != 0F) {
        UvScale = other.UvScale;
      }
      if (other.ConfigFlags != 0) {
        ConfigFlags = other.ConfigFlags;
      }
      if (other.meshShapeData_ != null) {
        if (meshShapeData_ == null) {
          MeshShapeData = new global::RecRoom.Protobuf.MeshShapeData();
        }
        MeshShapeData.MergeFrom(other.MeshShapeData);
      }
      if (other.curveShapeData_ != null) {
        if (curveShapeData_ == null) {
          CurveShapeData = new global::RecRoom.Protobuf.CurveShapeData();
        }
        CurveShapeData.MergeFrom(other.CurveShapeData);
      }
      _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: {
            ShapeType = input.ReadInt32();
            break;
          }
          case 16: {
            ShapeColor = input.ReadInt32();
            break;
          }
          case 42: {
            if (dEPRECATEDInitialLocalPosition_ == null) {
              DEPRECATEDInitialLocalPosition = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(DEPRECATEDInitialLocalPosition);
            break;
          }
          case 50: {
            if (dEPRECATEDInitialLocalRotation_ == null) {
              DEPRECATEDInitialLocalRotation = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(DEPRECATEDInitialLocalRotation);
            break;
          }
          case 58: {
            if (currentLocalPosition_ == null) {
              CurrentLocalPosition = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(CurrentLocalPosition);
            break;
          }
          case 66: {
            if (currentLocalRotation_ == null) {
              CurrentLocalRotation = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(CurrentLocalRotation);
            break;
          }
          case 74: {
            if (dEPRECATEDScaleNonUniform_ == null) {
              DEPRECATEDScaleNonUniform = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(DEPRECATEDScaleNonUniform);
            break;
          }
          case 80: {
            UseUncompressedRotation = input.ReadBool();
            break;
          }
          case 93: {
            Density = input.ReadFloat();
            break;
          }
          case 98: {
            Id = input.ReadBytes();
            break;
          }
          case 109: {
            Scale = input.ReadFloat();
            break;
          }
          case 114: {
            if (uvOffset_ == null) {
              UvOffset = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(UvOffset);
            break;
          }
          case 125: {
            UvScale = input.ReadFloat();
            break;
          }
          case 130: {
            if (meshShapeData_ == null) {
              MeshShapeData = new global::RecRoom.Protobuf.MeshShapeData();
            }
            input.ReadMessage(MeshShapeData);
            break;
          }
          case 138: {
            if (curveShapeData_ == null) {
              CurveShapeData = new global::RecRoom.Protobuf.CurveShapeData();
            }
            input.ReadMessage(CurveShapeData);
            break;
          }
          case 144: {
            ShapeMaterial = input.ReadInt32();
            break;
          }
          case 152: {
            ConfigFlags = 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: {
            ShapeType = input.ReadInt32();
            break;
          }
          case 16: {
            ShapeColor = input.ReadInt32();
            break;
          }
          case 42: {
            if (dEPRECATEDInitialLocalPosition_ == null) {
              DEPRECATEDInitialLocalPosition = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(DEPRECATEDInitialLocalPosition);
            break;
          }
          case 50: {
            if (dEPRECATEDInitialLocalRotation_ == null) {
              DEPRECATEDInitialLocalRotation = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(DEPRECATEDInitialLocalRotation);
            break;
          }
          case 58: {
            if (currentLocalPosition_ == null) {
              CurrentLocalPosition = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(CurrentLocalPosition);
            break;
          }
          case 66: {
            if (currentLocalRotation_ == null) {
              CurrentLocalRotation = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(CurrentLocalRotation);
            break;
          }
          case 74: {
            if (dEPRECATEDScaleNonUniform_ == null) {
              DEPRECATEDScaleNonUniform = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(DEPRECATEDScaleNonUniform);
            break;
          }
          case 80: {
            UseUncompressedRotation = input.ReadBool();
            break;
          }
          case 93: {
            Density = input.ReadFloat();
            break;
          }
          case 98: {
            Id = input.ReadBytes();
            break;
          }
          case 109: {
            Scale = input.ReadFloat();
            break;
          }
          case 114: {
            if (uvOffset_ == null) {
              UvOffset = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(UvOffset);
            break;
          }
          case 125: {
            UvScale = input.ReadFloat();
            break;
          }
          case 130: {
            if (meshShapeData_ == null) {
              MeshShapeData = new global::RecRoom.Protobuf.MeshShapeData();
            }
            input.ReadMessage(MeshShapeData);
            break;
          }
          case 138: {
            if (curveShapeData_ == null) {
              CurveShapeData = new global::RecRoom.Protobuf.CurveShapeData();
            }
            input.ReadMessage(CurveShapeData);
            break;
          }
          case 144: {
            ShapeMaterial = input.ReadInt32();
            break;
          }
          case 152: {
            ConfigFlags = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class MeshShapeData : pb::IMessage<MeshShapeData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<MeshShapeData> _parser = new pb::MessageParser<MeshShapeData>(() => new MeshShapeData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<MeshShapeData> 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.ShapeDataReflection.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 MeshShapeData() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(MeshShapeData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(LegacyScale, other.LegacyScale)) return false;
      if (!object.Equals(AspectRatio, other.AspectRatio)) 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 (legacyScale_ != null) hash ^= LegacyScale.GetHashCode();
      if (aspectRatio_ != null) hash ^= AspectRatio.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 (legacyScale_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(LegacyScale);
      }
      if (aspectRatio_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(AspectRatio);
      }
      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 (legacyScale_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(LegacyScale);
      }
      if (aspectRatio_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(AspectRatio);
      }
      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 (legacyScale_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(LegacyScale);
      }
      if (aspectRatio_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AspectRatio);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(MeshShapeData other) {
      if (other == null) {
        return;
      }
      if (other.legacyScale_ != null) {
        if (legacyScale_ == null) {
          LegacyScale = new global::RecRoom.Protobuf.Core.Vector3Data();
        }
        LegacyScale.MergeFrom(other.LegacyScale);
      }
      if (other.aspectRatio_ != null) {
        if (aspectRatio_ == null) {
          AspectRatio = new global::RecRoom.Protobuf.Core.Vector3Data();
        }
        AspectRatio.MergeFrom(other.AspectRatio);
      }
      _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 (legacyScale_ == null) {
              LegacyScale = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(LegacyScale);
            break;
          }
          case 18: {
            if (aspectRatio_ == null) {
              AspectRatio = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(AspectRatio);
            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 (legacyScale_ == null) {
              LegacyScale = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(LegacyScale);
            break;
          }
          case 18: {
            if (aspectRatio_ == null) {
              AspectRatio = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(AspectRatio);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class CurveShapeData : pb::IMessage<CurveShapeData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<CurveShapeData> _parser = new pb::MessageParser<CurveShapeData>(() => new CurveShapeData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<CurveShapeData> 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.ShapeDataReflection.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 CurveShapeData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CurveShapeData(CurveShapeData other) : this() {
      controlPoints_ = other.controlPoints_.Clone();
      flatShaded_ = other.flatShaded_;
      tubeHeightScale_ = other.tubeHeightScale_;
      tubeRingPoints_ = other.tubeRingPoints_;
      newEndCapStyle_ = other.newEndCapStyle_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

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

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

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

    /// <summary>Field number for the "tube_ring_points" field.</summary>
    public const int TubeRingPointsFieldNumber = 4;
    private int tubeRingPoints_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int TubeRingPoints {
      get { return tubeRingPoints_; }
      set {
        tubeRingPoints_ = value;
      }
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(CurveShapeData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!controlPoints_.Equals(other.controlPoints_)) return false;
      if (FlatShaded != other.FlatShaded) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(TubeHeightScale, other.TubeHeightScale)) return false;
      if (TubeRingPoints != other.TubeRingPoints) return false;
      if (NewEndCapStyle != other.NewEndCapStyle) 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 ^= controlPoints_.GetHashCode();
      if (FlatShaded != false) hash ^= FlatShaded.GetHashCode();
      if (TubeHeightScale != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(TubeHeightScale);
      if (TubeRingPoints != 0) hash ^= TubeRingPoints.GetHashCode();
      if (NewEndCapStyle != false) hash ^= NewEndCapStyle.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
      controlPoints_.WriteTo(output, _repeated_controlPoints_codec);
      if (FlatShaded != false) {
        output.WriteRawTag(16);
        output.WriteBool(FlatShaded);
      }
      if (TubeHeightScale != 0F) {
        output.WriteRawTag(29);
        output.WriteFloat(TubeHeightScale);
      }
      if (TubeRingPoints != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(TubeRingPoints);
      }
      if (NewEndCapStyle != false) {
        output.WriteRawTag(40);
        output.WriteBool(NewEndCapStyle);
      }
      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) {
      controlPoints_.WriteTo(ref output, _repeated_controlPoints_codec);
      if (FlatShaded != false) {
        output.WriteRawTag(16);
        output.WriteBool(FlatShaded);
      }
      if (TubeHeightScale != 0F) {
        output.WriteRawTag(29);
        output.WriteFloat(TubeHeightScale);
      }
      if (TubeRingPoints != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(TubeRingPoints);
      }
      if (NewEndCapStyle != false) {
        output.WriteRawTag(40);
        output.WriteBool(NewEndCapStyle);
      }
      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 += controlPoints_.CalculateSize(_repeated_controlPoints_codec);
      if (FlatShaded != false) {
        size += 1 + 1;
      }
      if (TubeHeightScale != 0F) {
        size += 1 + 4;
      }
      if (TubeRingPoints != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(TubeRingPoints);
      }
      if (NewEndCapStyle != 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(CurveShapeData other) {
      if (other == null) {
        return;
      }
      controlPoints_.Add(other.controlPoints_);
      if (other.FlatShaded != false) {
        FlatShaded = other.FlatShaded;
      }
      if (other.TubeHeightScale != 0F) {
        TubeHeightScale = other.TubeHeightScale;
      }
      if (other.TubeRingPoints != 0) {
        TubeRingPoints = other.TubeRingPoints;
      }
      if (other.NewEndCapStyle != false) {
        NewEndCapStyle = other.NewEndCapStyle;
      }
      _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: {
            controlPoints_.AddEntriesFrom(input, _repeated_controlPoints_codec);
            break;
          }
          case 16: {
            FlatShaded = input.ReadBool();
            break;
          }
          case 29: {
            TubeHeightScale = input.ReadFloat();
            break;
          }
          case 32: {
            TubeRingPoints = input.ReadInt32();
            break;
          }
          case 40: {
            NewEndCapStyle = 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: {
            controlPoints_.AddEntriesFrom(ref input, _repeated_controlPoints_codec);
            break;
          }
          case 16: {
            FlatShaded = input.ReadBool();
            break;
          }
          case 29: {
            TubeHeightScale = input.ReadFloat();
            break;
          }
          case 32: {
            TubeRingPoints = input.ReadInt32();
            break;
          }
          case 40: {
            NewEndCapStyle = input.ReadBool();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class ControlPointData : pb::IMessage<ControlPointData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ControlPointData> _parser = new pb::MessageParser<ControlPointData>(() => new ControlPointData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ControlPointData> 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.ShapeDataReflection.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 ControlPointData() {
      OnConstruction();
    }

    partial void OnConstruction();

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ControlPointData Clone() {
      return new ControlPointData(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 "normal" field.</summary>
    public const int NormalFieldNumber = 2;
    private global::RecRoom.Protobuf.Core.Vector3Data normal_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.Protobuf.Core.Vector3Data Normal {
      get { return normal_; }
      set {
        normal_ = value;
      }
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ControlPointData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Position, other.Position)) return false;
      if (!object.Equals(Normal, other.Normal)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Radius, other.Radius)) 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 (normal_ != null) hash ^= Normal.GetHashCode();
      if (Radius != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Radius);
      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 (normal_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Normal);
      }
      if (Radius != 0F) {
        output.WriteRawTag(29);
        output.WriteFloat(Radius);
      }
      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 (normal_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Normal);
      }
      if (Radius != 0F) {
        output.WriteRawTag(29);
        output.WriteFloat(Radius);
      }
      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 (normal_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Normal);
      }
      if (Radius != 0F) {
        size += 1 + 4;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ControlPointData 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.normal_ != null) {
        if (normal_ == null) {
          Normal = new global::RecRoom.Protobuf.Core.Vector3Data();
        }
        Normal.MergeFrom(other.Normal);
      }
      if (other.Radius != 0F) {
        Radius = other.Radius;
      }
      _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 (normal_ == null) {
              Normal = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(Normal);
            break;
          }
          case 29: {
            Radius = input.ReadFloat();
            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 (normal_ == null) {
              Normal = new global::RecRoom.Protobuf.Core.Vector3Data();
            }
            input.ReadMessage(Normal);
            break;
          }
          case 29: {
            Radius = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

  #endregion

}

#endregion Designer generated code
