context: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: service.proto
  #pragma warning disable 1591, 0612, 3021
  #region Designer generated code
  
  using pb = global::Google.Protobuf;
  using pbc = global::Google.Protobuf.Collections;
  using pbr = global::Google.Protobuf.Reflection;
  using scg = global::System.Collections.Generic;
  namespace Nodes.Pathing {
  
    /// <summary>Holder for reflection information generated from service.proto</summary>
    public static partial class ServiceReflection {
  
      #region Descriptor
      /// <summary>File descriptor for service.proto</summary>
      public static pbr::FileDescriptor Descriptor {
        get { return descriptor; }
      }
      private static pbr::FileDescriptor descriptor;
  
      static ServiceReflection() {
        byte[] descriptorData = global::System.Convert.FromBase64String(
            string.Concat(
              "Cg1zZXJ2aWNlLnByb3RvIhsKC0hhbmdSZXF1ZXN0EgwKBFRlc3QYASABKAki",
              "MwoJUGF0aFBvaW50EhcKCFBvc2l0aW9uGAEgASgLMgUuVmVjMxINCgVGbGFn",
              "cxgCIAEoDSInCgRWZWMzEgkKAVgYASABKAESCQoBWRgCIAEoARIJCgFaGAMg",
              "ASgBIhAKDlJlc3RhcnRSZXF1ZXN0IhEKD1Jlc3RhcnRSZXNwb25zZSIcChpM",
              "aXN0TG9hZGVkTmF2bWVzaGVzUmVxdWVzdCIwChtMaXN0TG9hZGVkTmF2bWVz",
              "aGVzUmVzcG9uc2USEQoJTmF2bWVzaGVzGAEgAygNImAKDlBhdGhpbmdSZXF1",
              "ZXN0Eg8KB05hdm1lc2gYASABKA0SHAoNU3RhcnRpbmdQb2ludBgCIAEoCzIF",
              "LlZlYzMSHwoQRGVzdGluYXRpb25Qb2ludBgDIAEoCzIFLlZlYzMiTwoPUGF0",
              "aGluZ1Jlc3BvbnNlEiIKClJlc3VsdENvZGUYASABKA4yDi5QYXRoaW5nUmVz",
              "dWx0EhgKBFBhdGgYAiADKAsyCi5QYXRoUG9pbnQiUQoVR2V0UmFuZG9tUG9p",
              "bnRSZXF1ZXN0Eg8KB05hdm1lc2gYASABKA0SFwoIUG9zaXRpb24YAiABKAsy",
              "BS5WZWMzEg4KBlJhZGl1cxgDIAEoAiIuChZHZXRSYW5kb21Qb2ludFJlc3Bv",
              "bnNlEhQKBVBvaW50GAEgASgLMgUuVmVjMyJYChZHZXRDbG9zZXN0UG9pbnRS",
              "ZXF1ZXN0Eg8KB05hdm1lc2gYASABKA0SFwoIUG9zaXRpb24YAiABKAsyBS5W",
              "ZWMzEhQKBVJhbmdlGAMgASgLMgUuVmVjMyIvChdHZXRDbG9zZXN0UG9pbnRS",
              "ZXNwb25zZRIUCgVQb2ludBgBIAEoCzIFLlZlYzMqagoNUGF0aGluZ1Jlc3Vs",
              "dBILCgdVTktOT1dOEAASDQoJUGF0aEZvdW5kEAESFAoQUGFydGlhbFBhdGhG",
              "b3VuZBACEg8KC05vUGF0aEZvdW5kEAMSFgoSTmF2bWVzaFVuYXZhaWxhYmxl",
              "EAQy9wIKDlBhdGhpbmdTZXJ2aWNlEiwKB1Jlc3RhcnQSDy5SZXN0YXJ0UmVx",
              "dWVzdBoQLlJlc3RhcnRSZXNwb25zZRJQChNMaXN0TG9hZGVkTmF2bWVzaGVz",
              "EhsuTGlzdExvYWRlZE5hdm1lc2hlc1JlcXVlc3QaHC5MaXN0TG9hZGVkTmF2",
              "bWVzaGVzUmVzcG9uc2USNAoPR2V0UGF0aFN0cmFpZ2h0Eg8uUGF0aGluZ1Jl",
              "cXVlc3QaEC5QYXRoaW5nUmVzcG9uc2USQQoOR2V0UmFuZG9tUG9pbnQSFi5H",
              "ZXRSYW5kb21Qb2ludFJlcXVlc3QaFy5HZXRSYW5kb21Qb2ludFJlc3BvbnNl",
              "EkQKD0dldENsb3Nlc3RQb2ludBIXLkdldENsb3Nlc3RQb2ludFJlcXVlc3Qa",
              "GC5HZXRDbG9zZXN0UG9pbnRSZXNwb25zZRImCghIYW5nVGVzdBIMLkhhbmdS",
              "ZXF1ZXN0GgwuSGFuZ1JlcXVlc3RCEKoCDU5vZGVzLlBhdGhpbmdiBnByb3Rv",
              "Mw=="));
        descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
            new pbr::FileDescriptor[] { },
            new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Nodes.Pathing.PathingResult), }, new pbr::GeneratedClrTypeInfo[] {
              new pbr::GeneratedClrTypeInfo(typeof(global::Nodes.Pathing.HangRequest), global::Nodes.Pathing.HangRequest.Parser, new[]{ "Test" }, null, null, null),
              new pbr::GeneratedClrTypeInfo(typeof(global::Nodes.Pathing.PathPoint), global::Nodes.Pathing.PathPoint.Parser, new[]{ "Position", "Flags" }, null, null, null),
              new pbr::GeneratedClrTypeInfo(typeof(global::Nodes.Pathing.Vec3), global::Nodes.Pathing.Vec3.Parser, new[]{ "X", "Y", "Z" }, null, null, null),
              new pbr::GeneratedClrTypeInfo(typeof(global::Nodes.Pathing.RestartRequest), global::Nodes.Pathing.RestartRequest.Parser, null, null, null, null),
              new pbr::GeneratedClrTypeInfo(typeof(global::Nodes.Pathing.RestartResponse), global::Nodes.Pathing.RestartResponse.Parser, null, null, null, null),
              new pbr::GeneratedClrTypeInfo(typeof(global::Nodes.Pathing.ListLoadedNavmeshesRequest), global::Nodes.Pathing.ListLoadedNavmeshesRequest.Parser, null, null, null, null),
              new pbr::GeneratedClrTypeInfo(typeof(global::Nodes.Pathing.ListLoadedNavmeshesResponse), global::Nodes.Pathing.ListLoadedNavmeshesResponse.Parser, new[]{ "Navmeshes" }, null, null, null),
              new pbr::GeneratedClrTypeInfo(typeof(global::Nodes.Pathing.PathingRequest), global::Nodes.Pathing.PathingRequest.Parser, new[]{ "Navmesh", "StartingPoint", "DestinationPoint" }, null, null, null),
              new pbr::GeneratedClrTypeInfo(typeof(global::Nodes.Pathing.PathingResponse), global::Nodes.Pathing.PathingResponse.Parser, new[]{ "ResultCode", "Path" }, null, null, null),
              new pbr::GeneratedClrTypeInfo(typeof(global::Nodes.Pathing.GetRandomPointRequest), global::Nodes.Pathing.GetRandomPointRequest.Parser, new[]{ "Navmesh", "Position", "Radius" }, null, null, null),
              new pbr::GeneratedClrTypeInfo(typeof(global::Nodes.Pathing.GetRandomPointResponse), global::Nodes.Pathing.GetRandomPointResponse.Parser, new[]{ "Point" }, null, null, null),
              new pbr::GeneratedClrTypeInfo(typeof(global::Nodes.Pathing.GetClosestPointRequest), global::Nodes.Pathing.GetClosestPointRequest.Parser, new[]{ "Navmesh", "Position", "Range" }, null, null, null),
              new pbr::GeneratedClrTypeInfo(typeof(global::Nodes.Pathing.GetClosestPointResponse), global::Nodes.Pathing.GetClosestPointResponse.Parser, new[]{ "Point" }, null, null, null)
            }));
      }
      #endregion
  
    }
    #region Enums
    public enum PathingResult {
      [pbr::OriginalName("UNKNOWN")] Unknown = 0,
      [pbr::OriginalName("PathFound")] PathFound = 1,
      [pbr::OriginalName("PartialPathFound")] PartialPathFound = 2,
      [pbr::OriginalName("NoPathFound")] NoPathFound = 3,
      [pbr::OriginalName("NavmeshUnavailable")] NavmeshUnavailable = 4,
    }
  
    #endregion
  
    #region Messages
    public sealed partial class HangRequest : pb::IMessage<HangRequest> {
      private static readonly pb::MessageParser<HangRequest> _parser = new pb::MessageParser<HangRequest>(() => new HangRequest());
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pb::MessageParser<HangRequest> Parser { get { return _parser; } }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pbr::MessageDescriptor Descriptor {
        get { return global::Nodes.Pathing.ServiceReflection.Descriptor.MessageTypes[0]; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      pbr::MessageDescriptor pb::IMessage.Descriptor {
        get { return Descriptor; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public HangRequest() {
        OnConstruction();
      }
  
      partial void OnConstruction();
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public HangRequest(HangRequest other) : this() {
        test_ = other.test_;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public HangRequest Clone() {
        return new HangRequest(this);
      }
  
      /// <summary>Field number for the "Test" field.</summary>
      public const int TestFieldNumber = 1;
      private string test_ = "";
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public string Test {
        get { return test_; }
        set {
          test_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override bool Equals(object other) {
        return Equals(other as HangRequest);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public bool Equals(HangRequest other) {
        if (ReferenceEquals(other, null)) {
          return false;
        }
        if (ReferenceEquals(other, this)) {
          return true;
        }
        if (Test != other.Test) return false;
        return true;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override int GetHashCode() {
        int hash = 1;
        if (Test.Length != 0) hash ^= Test.GetHashCode();
        return hash;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override string ToString() {
        return pb::JsonFormatter.ToDiagnosticString(this);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void WriteTo(pb::CodedOutputStream output) {
        if (Test.Length != 0) {
          output.WriteRawTag(10);
          output.WriteString(Test);
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int CalculateSize() {
        int size = 0;
        if (Test.Length != 0) {
          size += 1 + pb::CodedOutputStream.ComputeStringSize(Test);
        }
        return size;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(HangRequest other) {
        if (other == null) {
          return;
        }
        if (other.Test.Length != 0) {
          Test = other.Test;
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(pb::CodedInputStream input) {
        uint tag;
        while ((tag = input.ReadTag()) != 0) {
          switch(tag) {
            default:
              input.SkipLastField();
              break;
            case 10: {
              Test = input.ReadString();
              break;
            }
          }
        }
      }
  
    }
  
    public sealed partial class PathPoint : pb::IMessage<PathPoint> {
      private static readonly pb::MessageParser<PathPoint> _parser = new pb::MessageParser<PathPoint>(() => new PathPoint());
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pb::MessageParser<PathPoint> Parser { get { return _parser; } }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pbr::MessageDescriptor Descriptor {
        get { return global::Nodes.Pathing.ServiceReflection.Descriptor.MessageTypes[1]; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      pbr::MessageDescriptor pb::IMessage.Descriptor {
        get { return Descriptor; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public PathPoint() {
        OnConstruction();
      }
  
      partial void OnConstruction();
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public PathPoint(PathPoint other) : this() {
        Position = other.position_ != null ? other.Position.Clone() : null;
        flags_ = other.flags_;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public PathPoint Clone() {
        return new PathPoint(this);
      }
  
      /// <summary>Field number for the "Position" field.</summary>
      public const int PositionFieldNumber = 1;
      private global::Nodes.Pathing.Vec3 position_;
      /// <summary>
      ///  Position
      /// </summary>
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public global::Nodes.Pathing.Vec3 Position {
        get { return position_; }
        set {
          position_ = value;
        }
      }
  
      /// <summary>Field number for the "Flags" field.</summary>
      public const int FlagsFieldNumber = 2;
      private uint flags_;
      /// <summary>
      ///  dtPolyFlags
      /// </summary>
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public uint Flags {
        get { return flags_; }
        set {
          flags_ = value;
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override bool Equals(object other) {
        return Equals(other as PathPoint);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public bool Equals(PathPoint other) {
        if (ReferenceEquals(other, null)) {
          return false;
        }
        if (ReferenceEquals(other, this)) {
          return true;
        }
        if (!object.Equals(Position, other.Position)) return false;
        if (Flags != other.Flags) return false;
        return true;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override int GetHashCode() {
        int hash = 1;
        if (position_ != null) hash ^= Position.GetHashCode();
        if (Flags != 0) hash ^= Flags.GetHashCode();
        return hash;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override string ToString() {
        return pb::JsonFormatter.ToDiagnosticString(this);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void WriteTo(pb::CodedOutputStream output) {
        if (position_ != null) {
          output.WriteRawTag(10);
          output.WriteMessage(Position);
        }
        if (Flags != 0) {
          output.WriteRawTag(16);
          output.WriteUInt32(Flags);
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int CalculateSize() {
        int size = 0;
        if (position_ != null) {
          size += 1 + pb::CodedOutputStream.ComputeMessageSize(Position);
        }
        if (Flags != 0) {
          size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Flags);
        }
        return size;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(PathPoint other) {
        if (other == null) {
          return;
        }
        if (other.position_ != null) {
          if (position_ == null) {
            position_ = new global::Nodes.Pathing.Vec3();
          }
          Position.MergeFrom(other.Position);
        }
        if (other.Flags != 0) {
          Flags = other.Flags;
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(pb::CodedInputStream input) {
        uint tag;
        while ((tag = input.ReadTag()) != 0) {
          switch(tag) {
            default:
              input.SkipLastField();
              break;
            case 10: {
              if (position_ == null) {
                position_ = new global::Nodes.Pathing.Vec3();
              }
              input.ReadMessage(position_);
              break;
            }
            case 16: {
              Flags = input.ReadUInt32();
              break;
            }
          }
        }
      }
  
    }
  
    public sealed partial class Vec3 : pb::IMessage<Vec3> {
      private static readonly pb::MessageParser<Vec3> _parser = new pb::MessageParser<Vec3>(() => new Vec3());
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pb::MessageParser<Vec3> Parser { get { return _parser; } }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pbr::MessageDescriptor Descriptor {
        get { return global::Nodes.Pathing.ServiceReflection.Descriptor.MessageTypes[2]; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      pbr::MessageDescriptor pb::IMessage.Descriptor {
        get { return Descriptor; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public Vec3() {
        OnConstruction();
      }
  
      partial void OnConstruction();
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public Vec3(Vec3 other) : this() {
        x_ = other.x_;
        y_ = other.y_;
        z_ = other.z_;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public Vec3 Clone() {
        return new Vec3(this);
      }
  
      /// <summary>Field number for the "X" field.</summary>
      public const int XFieldNumber = 1;
      private double x_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public double X {
        get { return x_; }
        set {
          x_ = value;
        }
      }
  
      /// <summary>Field number for the "Y" field.</summary>
      public const int YFieldNumber = 2;
      private double y_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public double Y {
        get { return y_; }
        set {
          y_ = value;
        }
      }
  
      /// <summary>Field number for the "Z" field.</summary>
      public const int ZFieldNumber = 3;
      private double z_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public double Z {
        get { return z_; }
        set {
          z_ = value;
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override bool Equals(object other) {
        return Equals(other as Vec3);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public bool Equals(Vec3 other) {
        if (ReferenceEquals(other, null)) {
          return false;
        }
        if (ReferenceEquals(other, this)) {
          return true;
        }
        if (X != other.X) return false;
        if (Y != other.Y) return false;
        if (Z != other.Z) return false;
        return true;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override int GetHashCode() {
        int hash = 1;
        if (X != 0D) hash ^= X.GetHashCode();
        if (Y != 0D) hash ^= Y.GetHashCode();
        if (Z != 0D) hash ^= Z.GetHashCode();
        return hash;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override string ToString() {
        return pb::JsonFormatter.ToDiagnosticString(this);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void WriteTo(pb::CodedOutputStream output) {
        if (X != 0D) {
          output.WriteRawTag(9);
          output.WriteDouble(X);
        }
        if (Y != 0D) {
          output.WriteRawTag(17);
          output.WriteDouble(Y);
        }
        if (Z != 0D) {
          output.WriteRawTag(25);
          output.WriteDouble(Z);
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int CalculateSize() {
        int size = 0;
        if (X != 0D) {
          size += 1 + 8;
        }
        if (Y != 0D) {
          size += 1 + 8;
        }
        if (Z != 0D) {
          size += 1 + 8;
        }
        return size;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(Vec3 other) {
        if (other == null) {
          return;
        }
        if (other.X != 0D) {
          X = other.X;
        }
        if (other.Y != 0D) {
          Y = other.Y;
        }
        if (other.Z != 0D) {
          Z = other.Z;
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(pb::CodedInputStream input) {
        uint tag;
        while ((tag = input.ReadTag()) != 0) {
          switch(tag) {
            default:
              input.SkipLastField();
              break;
            case 9: {
              X = input.ReadDouble();
              break;
            }
            case 17: {
              Y = input.ReadDouble();
              break;
            }
            case 25: {
              Z = input.ReadDouble();
              break;
            }
          }
        }
      }
  
    }
  
    public sealed partial class RestartRequest : pb::IMessage<RestartRequest> {
      private static readonly pb::MessageParser<RestartRequest> _parser = new pb::MessageParser<RestartRequest>(() => new RestartRequest());
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pb::MessageParser<RestartRequest> Parser { get { return _parser; } }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pbr::MessageDescriptor Descriptor {
        get { return global::Nodes.Pathing.ServiceReflection.Descriptor.MessageTypes[3]; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      pbr::MessageDescriptor pb::IMessage.Descriptor {
        get { return Descriptor; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public RestartRequest() {
        OnConstruction();
      }
  
      partial void OnConstruction();
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public RestartRequest(RestartRequest other) : this() {
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public RestartRequest Clone() {
        return new RestartRequest(this);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override bool Equals(object other) {
        return Equals(other as RestartRequest);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public bool Equals(RestartRequest other) {
        if (ReferenceEquals(other, null)) {
          return false;
        }
        if (ReferenceEquals(other, this)) {
          return true;
        }
        return true;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override int GetHashCode() {
        int hash = 1;
        return hash;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override string ToString() {
        return pb::JsonFormatter.ToDiagnosticString(this);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void WriteTo(pb::CodedOutputStream output) {
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int CalculateSize() {
        int size = 0;
        return size;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(RestartRequest other) {
        if (other == null) {
          return;
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(pb::CodedInputStream input) {
        uint tag;
        while ((tag = input.ReadTag()) != 0) {
          switch(tag) {
            default:
              input.SkipLastField();
              break;
          }
        }
      }
  
    }
  
    public sealed partial class RestartResponse : pb::IMessage<RestartResponse> {
      private static readonly pb::MessageParser<RestartResponse> _parser = new pb::MessageParser<RestartResponse>(() => new RestartResponse());
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pb::MessageParser<RestartResponse> Parser { get { return _parser; } }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pbr::MessageDescriptor Descriptor {
        get { return global::Nodes.Pathing.ServiceReflection.Descriptor.MessageTypes[4]; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      pbr::MessageDescriptor pb::IMessage.Descriptor {
        get { return Descriptor; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public RestartResponse() {
        OnConstruction();
      }
  
      partial void OnConstruction();
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public RestartResponse(RestartResponse other) : this() {
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public RestartResponse Clone() {
        return new RestartResponse(this);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override bool Equals(object other) {
        return Equals(other as RestartResponse);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public bool Equals(RestartResponse other) {
        if (ReferenceEquals(other, null)) {
          return false;
        }
        if (ReferenceEquals(other, this)) {
          return true;
        }
        return true;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override int GetHashCode() {
        int hash = 1;
        return hash;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override string ToString() {
        return pb::JsonFormatter.ToDiagnosticString(this);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void WriteTo(pb::CodedOutputStream output) {
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int CalculateSize() {
        int size = 0;
        return size;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(RestartResponse other) {
        if (other == null) {
          return;
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(pb::CodedInputStream input) {
        uint tag;
        while ((tag = input.ReadTag()) != 0) {
          switch(tag) {
            default:
              input.SkipLastField();
              break;
          }
        }
      }
  
    }
  
    public sealed partial class ListLoadedNavmeshesRequest : pb::IMessage<ListLoadedNavmeshesRequest> {
      private static readonly pb::MessageParser<ListLoadedNavmeshesRequest> _parser = new pb::MessageParser<ListLoadedNavmeshesRequest>(() => new ListLoadedNavmeshesRequest());
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pb::MessageParser<ListLoadedNavmeshesRequest> Parser { get { return _parser; } }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pbr::MessageDescriptor Descriptor {
        get { return global::Nodes.Pathing.ServiceReflection.Descriptor.MessageTypes[5]; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      pbr::MessageDescriptor pb::IMessage.Descriptor {
        get { return Descriptor; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public ListLoadedNavmeshesRequest() {
        OnConstruction();
      }
  
      partial void OnConstruction();
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public ListLoadedNavmeshesRequest(ListLoadedNavmeshesRequest other) : this() {
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public ListLoadedNavmeshesRequest Clone() {
        return new ListLoadedNavmeshesRequest(this);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override bool Equals(object other) {
        return Equals(other as ListLoadedNavmeshesRequest);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public bool Equals(ListLoadedNavmeshesRequest other) {
        if (ReferenceEquals(other, null)) {
          return false;
        }
        if (ReferenceEquals(other, this)) {
          return true;
        }
        return true;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override int GetHashCode() {
        int hash = 1;
        return hash;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override string ToString() {
        return pb::JsonFormatter.ToDiagnosticString(this);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void WriteTo(pb::CodedOutputStream output) {
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int CalculateSize() {
        int size = 0;
        return size;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(ListLoadedNavmeshesRequest other) {
        if (other == null) {
          return;
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(pb::CodedInputStream input) {
        uint tag;
        while ((tag = input.ReadTag()) != 0) {
          switch(tag) {
            default:
              input.SkipLastField();
              break;
          }
        }
      }
  
    }
  
    public sealed partial class ListLoadedNavmeshesResponse : pb::IMessage<ListLoadedNavmeshesResponse> {
      private static readonly pb::MessageParser<ListLoadedNavmeshesResponse> _parser = new pb::MessageParser<ListLoadedNavmeshesResponse>(() => new ListLoadedNavmeshesResponse());
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pb::MessageParser<ListLoadedNavmeshesResponse> Parser { get { return _parser; } }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pbr::MessageDescriptor Descriptor {
        get { return global::Nodes.Pathing.ServiceReflection.Descriptor.MessageTypes[6]; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      pbr::MessageDescriptor pb::IMessage.Descriptor {
        get { return Descriptor; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public ListLoadedNavmeshesResponse() {
        OnConstruction();
      }
  
      partial void OnConstruction();
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public ListLoadedNavmeshesResponse(ListLoadedNavmeshesResponse other) : this() {
        navmeshes_ = other.navmeshes_.Clone();
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public ListLoadedNavmeshesResponse Clone() {
        return new ListLoadedNavmeshesResponse(this);
      }
  
      /// <summary>Field number for the "Navmeshes" field.</summary>
      public const int NavmeshesFieldNumber = 1;
      private static readonly pb::FieldCodec<uint> _repeated_navmeshes_codec
          = pb::FieldCodec.ForUInt32(10);
      private readonly pbc::RepeatedField<uint> navmeshes_ = new pbc::RepeatedField<uint>();
      /// <summary>
      ///  List of all navmeshes
      /// </summary>
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public pbc::RepeatedField<uint> Navmeshes {
        get { return navmeshes_; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override bool Equals(object other) {
        return Equals(other as ListLoadedNavmeshesResponse);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public bool Equals(ListLoadedNavmeshesResponse other) {
        if (ReferenceEquals(other, null)) {
          return false;
        }
        if (ReferenceEquals(other, this)) {
          return true;
        }
        if(!navmeshes_.Equals(other.navmeshes_)) return false;
        return true;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override int GetHashCode() {
        int hash = 1;
        hash ^= navmeshes_.GetHashCode();
        return hash;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override string ToString() {
        return pb::JsonFormatter.ToDiagnosticString(this);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void WriteTo(pb::CodedOutputStream output) {
        navmeshes_.WriteTo(output, _repeated_navmeshes_codec);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int CalculateSize() {
        int size = 0;
        size += navmeshes_.CalculateSize(_repeated_navmeshes_codec);
        return size;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(ListLoadedNavmeshesResponse other) {
        if (other == null) {
          return;
        }
        navmeshes_.Add(other.navmeshes_);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(pb::CodedInputStream input) {
        uint tag;
        while ((tag = input.ReadTag()) != 0) {
          switch(tag) {
            default:
              input.SkipLastField();
              break;
            case 10:
            case 8: {
              navmeshes_.AddEntriesFrom(input, _repeated_navmeshes_codec);
              break;
            }
          }
        }
      }
  
    }
  
    public sealed partial class PathingRequest : pb::IMessage<PathingRequest> {
      private static readonly pb::MessageParser<PathingRequest> _parser = new pb::MessageParser<PathingRequest>(() => new PathingRequest());
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pb::MessageParser<PathingRequest> Parser { get { return _parser; } }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pbr::MessageDescriptor Descriptor {
        get { return global::Nodes.Pathing.ServiceReflection.Descriptor.MessageTypes[7]; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      pbr::MessageDescriptor pb::IMessage.Descriptor {
        get { return Descriptor; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public PathingRequest() {
        OnConstruction();
      }
  
      partial void OnConstruction();
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public PathingRequest(PathingRequest other) : this() {
        navmesh_ = other.navmesh_;
        StartingPoint = other.startingPoint_ != null ? other.StartingPoint.Clone() : null;
        DestinationPoint = other.destinationPoint_ != null ? other.DestinationPoint.Clone() : null;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public PathingRequest Clone() {
        return new PathingRequest(this);
      }
  
      /// <summary>Field number for the "Navmesh" field.</summary>
      public const int NavmeshFieldNumber = 1;
      private uint navmesh_;
      /// <summary>
      ///  Navmesh ID (Zone ClientID)
      /// </summary>
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public uint Navmesh {
        get { return navmesh_; }
        set {
          navmesh_ = value;
        }
      }
  
      /// <summary>Field number for the "StartingPoint" field.</summary>
      public const int StartingPointFieldNumber = 2;
      private global::Nodes.Pathing.Vec3 startingPoint_;
      /// <summary>
      ///  Starting point of the path
      /// </summary>
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public global::Nodes.Pathing.Vec3 StartingPoint {
        get { return startingPoint_; }
        set {
          startingPoint_ = value;
        }
      }
  
      /// <summary>Field number for the "DestinationPoint" field.</summary>
      public const int DestinationPointFieldNumber = 3;
      private global::Nodes.Pathing.Vec3 destinationPoint_;
      /// <summary>
      ///  Destination of the path
      /// </summary>
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public global::Nodes.Pathing.Vec3 DestinationPoint {
        get { return destinationPoint_; }
        set {
          destinationPoint_ = value;
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override bool Equals(object other) {
        return Equals(other as PathingRequest);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public bool Equals(PathingRequest other) {
        if (ReferenceEquals(other, null)) {
          return false;
        }
        if (ReferenceEquals(other, this)) {
          return true;
        }
        if (Navmesh != other.Navmesh) return false;
        if (!object.Equals(StartingPoint, other.StartingPoint)) return false;
        if (!object.Equals(DestinationPoint, other.DestinationPoint)) return false;
        return true;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override int GetHashCode() {
        int hash = 1;
        if (Navmesh != 0) hash ^= Navmesh.GetHashCode();
        if (startingPoint_ != null) hash ^= StartingPoint.GetHashCode();
        if (destinationPoint_ != null) hash ^= DestinationPoint.GetHashCode();
        return hash;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override string ToString() {
        return pb::JsonFormatter.ToDiagnosticString(this);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void WriteTo(pb::CodedOutputStream output) {
        if (Navmesh != 0) {
          output.WriteRawTag(8);
          output.WriteUInt32(Navmesh);
        }
        if (startingPoint_ != null) {
          output.WriteRawTag(18);
          output.WriteMessage(StartingPoint);
        }
        if (destinationPoint_ != null) {
          output.WriteRawTag(26);
          output.WriteMessage(DestinationPoint);
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int CalculateSize() {
        int size = 0;
        if (Navmesh != 0) {
          size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Navmesh);
        }
        if (startingPoint_ != null) {
          size += 1 + pb::CodedOutputStream.ComputeMessageSize(StartingPoint);
        }
        if (destinationPoint_ != null) {
          size += 1 + pb::CodedOutputStream.ComputeMessageSize(DestinationPoint);
        }
        return size;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(PathingRequest other) {
        if (other == null) {
          return;
        }
        if (other.Navmesh != 0) {
          Navmesh = other.Navmesh;
        }
        if (other.startingPoint_ != null) {
          if (startingPoint_ == null) {
            startingPoint_ = new global::Nodes.Pathing.Vec3();
          }
          StartingPoint.MergeFrom(other.StartingPoint);
        }
        if (other.destinationPoint_ != null) {
          if (destinationPoint_ == null) {
            destinationPoint_ = new global::Nodes.Pathing.Vec3();
          }
          DestinationPoint.MergeFrom(other.DestinationPoint);
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(pb::CodedInputStream input) {
        uint tag;
        while ((tag = input.ReadTag()) != 0) {
          switch(tag) {
            default:
              input.SkipLastField();
              break;
            case 8: {
              Navmesh = input.ReadUInt32();
              break;
            }
            case 18: {
              if (startingPoint_ == null) {
                startingPoint_ = new global::Nodes.Pathing.Vec3();
              }
              input.ReadMessage(startingPoint_);
              break;
            }
            case 26: {
              if (destinationPoint_ == null) {
                destinationPoint_ = new global::Nodes.Pathing.Vec3();
              }
              input.ReadMessage(destinationPoint_);
              break;
            }
          }
        }
      }
  
    }
  
    public sealed partial class PathingResponse : pb::IMessage<PathingResponse> {
      private static readonly pb::MessageParser<PathingResponse> _parser = new pb::MessageParser<PathingResponse>(() => new PathingResponse());
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pb::MessageParser<PathingResponse> Parser { get { return _parser; } }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pbr::MessageDescriptor Descriptor {
        get { return global::Nodes.Pathing.ServiceReflection.Descriptor.MessageTypes[8]; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      pbr::MessageDescriptor pb::IMessage.Descriptor {
        get { return Descriptor; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public PathingResponse() {
        OnConstruction();
      }
  
      partial void OnConstruction();
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public PathingResponse(PathingResponse other) : this() {
        resultCode_ = other.resultCode_;
        path_ = other.path_.Clone();
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public PathingResponse Clone() {
        return new PathingResponse(this);
      }
  
      /// <summary>Field number for the "ResultCode" field.</summary>
      public const int ResultCodeFieldNumber = 1;
      private global::Nodes.Pathing.PathingResult resultCode_ = 0;
      /// <summary>
      ///  Error (if any)
      /// </summary>
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public global::Nodes.Pathing.PathingResult ResultCode {
        get { return resultCode_; }
        set {
          resultCode_ = value;
        }
      }
  
      /// <summary>Field number for the "Path" field.</summary>
      public const int PathFieldNumber = 2;
      private static readonly pb::FieldCodec<global::Nodes.Pathing.PathPoint> _repeated_path_codec
          = pb::FieldCodec.ForMessage(18, global::Nodes.Pathing.PathPoint.Parser);
      private readonly pbc::RepeatedField<global::Nodes.Pathing.PathPoint> path_ = new pbc::RepeatedField<global::Nodes.Pathing.PathPoint>();
      /// <summary>
      ///  Path nodes
      /// </summary>
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public pbc::RepeatedField<global::Nodes.Pathing.PathPoint> Path {
        get { return path_; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override bool Equals(object other) {
        return Equals(other as PathingResponse);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public bool Equals(PathingResponse other) {
        if (ReferenceEquals(other, null)) {
          return false;
        }
        if (ReferenceEquals(other, this)) {
          return true;
        }
        if (ResultCode != other.ResultCode) return false;
        if(!path_.Equals(other.path_)) return false;
        return true;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override int GetHashCode() {
        int hash = 1;
        if (ResultCode != 0) hash ^= ResultCode.GetHashCode();
        hash ^= path_.GetHashCode();
        return hash;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override string ToString() {
        return pb::JsonFormatter.ToDiagnosticString(this);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void WriteTo(pb::CodedOutputStream output) {
        if (ResultCode != 0) {
          output.WriteRawTag(8);
          output.WriteEnum((int) ResultCode);
        }
        path_.WriteTo(output, _repeated_path_codec);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int CalculateSize() {
        int size = 0;
        if (ResultCode != 0) {
          size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ResultCode);
        }
        size += path_.CalculateSize(_repeated_path_codec);
        return size;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(PathingResponse other) {
        if (other == null) {
          return;
        }
        if (other.ResultCode != 0) {
          ResultCode = other.ResultCode;
        }
        path_.Add(other.path_);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(pb::CodedInputStream input) {
        uint tag;
        while ((tag = input.ReadTag()) != 0) {
          switch(tag) {
            default:
              input.SkipLastField();
              break;
            case 8: {
              resultCode_ = (global::Nodes.Pathing.PathingResult) input.ReadEnum();
              break;
            }
            case 18: {
              path_.AddEntriesFrom(input, _repeated_path_codec);
              break;
            }
          }
        }
      }
  
    }
  
    public sealed partial class GetRandomPointRequest : pb::IMessage<GetRandomPointRequest> {
      private static readonly pb::MessageParser<GetRandomPointRequest> _parser = new pb::MessageParser<GetRandomPointRequest>(() => new GetRandomPointRequest());
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pb::MessageParser<GetRandomPointRequest> Parser { get { return _parser; } }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pbr::MessageDescriptor Descriptor {
        get { return global::Nodes.Pathing.ServiceReflection.Descriptor.MessageTypes[9]; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      pbr::MessageDescriptor pb::IMessage.Descriptor {
        get { return Descriptor; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public GetRandomPointRequest() {
        OnConstruction();
      }
  
      partial void OnConstruction();
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public GetRandomPointRequest(GetRandomPointRequest other) : this() {
        navmesh_ = other.navmesh_;
        Position = other.position_ != null ? other.Position.Clone() : null;
        radius_ = other.radius_;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public GetRandomPointRequest Clone() {
        return new GetRandomPointRequest(this);
      }
  
      /// <summary>Field number for the "Navmesh" field.</summary>
      public const int NavmeshFieldNumber = 1;
      private uint navmesh_;
      /// <summary>
      ///  Navmesh ID (Zone ClientID)
      /// </summary>
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public uint Navmesh {
        get { return navmesh_; }
        set {
          navmesh_ = value;
        }
      }
  
      /// <summary>Field number for the "Position" field.</summary>
      public const int PositionFieldNumber = 2;
      private global::Nodes.Pathing.Vec3 position_;
      /// <summary>
      ///  Position (center)
      /// </summary>
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public global::Nodes.Pathing.Vec3 Position {
        get { return position_; }
        set {
          position_ = value;
        }
      }
  
      /// <summary>Field number for the "Radius" field.</summary>
      public const int RadiusFieldNumber = 3;
      private float radius_;
      /// <summary>
      ///  Radius around center
      /// </summary>
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public float Radius {
        get { return radius_; }
        set {
          radius_ = value;
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override bool Equals(object other) {
        return Equals(other as GetRandomPointRequest);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public bool Equals(GetRandomPointRequest other) {
        if (ReferenceEquals(other, null)) {
          return false;
        }
        if (ReferenceEquals(other, this)) {
          return true;
        }
        if (Navmesh != other.Navmesh) return false;
        if (!object.Equals(Position, other.Position)) return false;
        if (Radius != other.Radius) return false;
        return true;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override int GetHashCode() {
        int hash = 1;
        if (Navmesh != 0) hash ^= Navmesh.GetHashCode();
        if (position_ != null) hash ^= Position.GetHashCode();
        if (Radius != 0F) hash ^= Radius.GetHashCode();
        return hash;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override string ToString() {
        return pb::JsonFormatter.ToDiagnosticString(this);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void WriteTo(pb::CodedOutputStream output) {
        if (Navmesh != 0) {
          output.WriteRawTag(8);
          output.WriteUInt32(Navmesh);
        }
        if (position_ != null) {
          output.WriteRawTag(18);
          output.WriteMessage(Position);
        }
        if (Radius != 0F) {
          output.WriteRawTag(29);
          output.WriteFloat(Radius);
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int CalculateSize() {
        int size = 0;
        if (Navmesh != 0) {
          size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Navmesh);
        }
        if (position_ != null) {
          size += 1 + pb::CodedOutputStream.ComputeMessageSize(Position);
        }
        if (Radius != 0F) {
          size += 1 + 4;
        }
        return size;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(GetRandomPointRequest other) {
        if (other == null) {
          return;
        }
        if (other.Navmesh != 0) {
          Navmesh = other.Navmesh;
        }
        if (other.position_ != null) {
          if (position_ == null) {
            position_ = new global::Nodes.Pathing.Vec3();
          }
          Position.MergeFrom(other.Position);
        }
        if (other.Radius != 0F) {
          Radius = other.Radius;
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(pb::CodedInputStream input) {
        uint tag;
        while ((tag = input.ReadTag()) != 0) {
          switch(tag) {
            default:
              input.SkipLastField();
              break;
            case 8: {
              Navmesh = input.ReadUInt32();
              break;
            }
            case 18: {
              if (position_ == null) {
                position_ = new global::Nodes.Pathing.Vec3();
              }
              input.ReadMessage(position_);
              break;
            }
            case 29: {
              Radius = input.ReadFloat();
              break;
            }
          }
        }
      }
  
    }
  
    public sealed partial class GetRandomPointResponse : pb::IMessage<GetRandomPointResponse> {
      private static readonly pb::MessageParser<GetRandomPointResponse> _parser = new pb::MessageParser<GetRandomPointResponse>(() => new GetRandomPointResponse());
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pb::MessageParser<GetRandomPointResponse> Parser { get { return _parser; } }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pbr::MessageDescriptor Descriptor {
        get { return global::Nodes.Pathing.ServiceReflection.Descriptor.MessageTypes[10]; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      pbr::MessageDescriptor pb::IMessage.Descriptor {
        get { return Descriptor; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public GetRandomPointResponse() {
        OnConstruction();
      }
  
      partial void OnConstruction();
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public GetRandomPointResponse(GetRandomPointResponse other) : this() {
  
gt:       Point = other.point_ != null ? other.Point.Clone() : null;