content: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: PlatformInfo.proto
  
  package emu.grasscutter.net.proto;
  
  public final class PlatformInfoOuterClass {
    private PlatformInfoOuterClass() {}
    public static void registerAllExtensions(
        com.google.protobuf.ExtensionRegistryLite registry) {
    }
  
    public static void registerAllExtensions(
        com.google.protobuf.ExtensionRegistry registry) {
      registerAllExtensions(
          (com.google.protobuf.ExtensionRegistryLite) registry);
    }
    public interface PlatformInfoOrBuilder extends
        // @@protoc_insertion_point(interface_extends:PlatformInfo)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>uint32 routeId = 1;</code>
       * @return The routeId.
       */
      int getRouteId();
  
      /**
       * <code>int32 startIndex = 2;</code>
       * @return The startIndex.
       */
      int getStartIndex();
  
      /**
       * <code>uint32 startRouteTime = 3;</code>
       * @return The startRouteTime.
       */
      int getStartRouteTime();
  
      /**
       * <code>uint32 startSceneTime = 4;</code>
       * @return The startSceneTime.
       */
      int getStartSceneTime();
  
      /**
       * <code>.Vector startPos = 7;</code>
       * @return Whether the startPos field is set.
       */
      boolean hasStartPos();
      /**
       * <code>.Vector startPos = 7;</code>
       * @return The startPos.
       */
      emu.grasscutter.net.proto.VectorOuterClass.Vector getStartPos();
      /**
       * <code>.Vector startPos = 7;</code>
       */
      emu.grasscutter.net.proto.VectorOuterClass.VectorOrBuilder getStartPosOrBuilder();
  
      /**
       * <code>bool isStarted = 8;</code>
       * @return The isStarted.
       */
      boolean getIsStarted();
  
      /**
       * <code>.MathQuaternion startRot = 9;</code>
       * @return Whether the startRot field is set.
       */
      boolean hasStartRot();
      /**
       * <code>.MathQuaternion startRot = 9;</code>
       * @return The startRot.
       */
      emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion getStartRot();
      /**
       * <code>.MathQuaternion startRot = 9;</code>
       */
      emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternionOrBuilder getStartRotOrBuilder();
  
      /**
       * <code>uint32 stopSceneTime = 10;</code>
       * @return The stopSceneTime.
       */
      int getStopSceneTime();
  
      /**
       * <code>.Vector posOffset = 11;</code>
       * @return Whether the posOffset field is set.
       */
      boolean hasPosOffset();
      /**
       * <code>.Vector posOffset = 11;</code>
       * @return The posOffset.
       */
      emu.grasscutter.net.proto.VectorOuterClass.Vector getPosOffset();
      /**
       * <code>.Vector posOffset = 11;</code>
       */
      emu.grasscutter.net.proto.VectorOuterClass.VectorOrBuilder getPosOffsetOrBuilder();
  
      /**
       * <code>.MathQuaternion rotOffset = 12;</code>
       * @return Whether the rotOffset field is set.
       */
      boolean hasRotOffset();
      /**
       * <code>.MathQuaternion rotOffset = 12;</code>
       * @return The rotOffset.
       */
      emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion getRotOffset();
      /**
       * <code>.MathQuaternion rotOffset = 12;</code>
       */
      emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternionOrBuilder getRotOffsetOrBuilder();
  
      /**
       * <code>.MovingPlatformType movingPlatformType = 13;</code>
       * @return The enum numeric value on the wire for movingPlatformType.
       */
      int getMovingPlatformTypeValue();
      /**
       * <code>.MovingPlatformType movingPlatformType = 13;</code>
       * @return The movingPlatformType.
       */
      emu.grasscutter.net.proto.MovingPlatformTypeOuterClass.MovingPlatformType getMovingPlatformType();
  
      /**
       * <code>bool isActive = 14;</code>
       * @return The isActive.
       */
      boolean getIsActive();
  
      /**
       * <code>.Route route = 15;</code>
       * @return Whether the route field is set.
       */
      boolean hasRoute();
      /**
       * <code>.Route route = 15;</code>
       * @return The route.
       */
      emu.grasscutter.net.proto.RouteOuterClass.Route getRoute();
      /**
       * <code>.Route route = 15;</code>
       */
      emu.grasscutter.net.proto.RouteOuterClass.RouteOrBuilder getRouteOrBuilder();
  
      /**
       * <code>uint32 pointId = 16;</code>
       * @return The pointId.
       */
      int getPointId();
    }
    /**
     * Protobuf type {@code PlatformInfo}
     */
    public static final class PlatformInfo extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:PlatformInfo)
        PlatformInfoOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use PlatformInfo.newBuilder() to construct.
      private PlatformInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private PlatformInfo() {
        movingPlatformType_ = 0;
      }
  
      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new PlatformInfo();
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private PlatformInfo(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
  
                routeId_ = input.readUInt32();
                break;
              }
              case 16: {
  
                startIndex_ = input.readInt32();
                break;
              }
              case 24: {
  
                startRouteTime_ = input.readUInt32();
                break;
              }
              case 32: {
  
                startSceneTime_ = input.readUInt32();
                break;
              }
              case 58: {
                emu.grasscutter.net.proto.VectorOuterClass.Vector.Builder subBuilder = null;
                if (startPos_ != null) {
                  subBuilder = startPos_.toBuilder();
                }
                startPos_ = input.readMessage(emu.grasscutter.net.proto.VectorOuterClass.Vector.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(startPos_);
                  startPos_ = subBuilder.buildPartial();
                }
  
                break;
              }
              case 64: {
  
                isStarted_ = input.readBool();
                break;
              }
              case 74: {
                emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion.Builder subBuilder = null;
                if (startRot_ != null) {
                  subBuilder = startRot_.toBuilder();
                }
                startRot_ = input.readMessage(emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(startRot_);
                  startRot_ = subBuilder.buildPartial();
                }
  
                break;
              }
              case 80: {
  
                stopSceneTime_ = input.readUInt32();
                break;
              }
              case 90: {
                emu.grasscutter.net.proto.VectorOuterClass.Vector.Builder subBuilder = null;
                if (posOffset_ != null) {
                  subBuilder = posOffset_.toBuilder();
                }
                posOffset_ = input.readMessage(emu.grasscutter.net.proto.VectorOuterClass.Vector.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(posOffset_);
                  posOffset_ = subBuilder.buildPartial();
                }
  
                break;
              }
              case 98: {
                emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion.Builder subBuilder = null;
                if (rotOffset_ != null) {
                  subBuilder = rotOffset_.toBuilder();
                }
                rotOffset_ = input.readMessage(emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(rotOffset_);
                  rotOffset_ = subBuilder.buildPartial();
                }
  
                break;
              }
              case 104: {
                int rawValue = input.readEnum();
  
                movingPlatformType_ = rawValue;
                break;
              }
              case 112: {
  
                isActive_ = input.readBool();
                break;
              }
              case 122: {
                emu.grasscutter.net.proto.RouteOuterClass.Route.Builder subBuilder = null;
                if (route_ != null) {
                  subBuilder = route_.toBuilder();
                }
                route_ = input.readMessage(emu.grasscutter.net.proto.RouteOuterClass.Route.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(route_);
                  route_ = subBuilder.buildPartial();
                }
  
                break;
              }
              case 128: {
  
                pointId_ = input.readUInt32();
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return emu.grasscutter.net.proto.PlatformInfoOuterClass.internal_static_PlatformInfo_descriptor;
      }
  
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return emu.grasscutter.net.proto.PlatformInfoOuterClass.internal_static_PlatformInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo.class, emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo.Builder.class);
      }
  
      public static final int ROUTEID_FIELD_NUMBER = 1;
      private int routeId_;
      /**
       * <code>uint32 routeId = 1;</code>
       * @return The routeId.
       */
      @java.lang.Override
      public int getRouteId() {
        return routeId_;
      }
  
      public static final int STARTINDEX_FIELD_NUMBER = 2;
      private int startIndex_;
      /**
       * <code>int32 startIndex = 2;</code>
       * @return The startIndex.
       */
      @java.lang.Override
      public int getStartIndex() {
        return startIndex_;
      }
  
      public static final int STARTROUTETIME_FIELD_NUMBER = 3;
      private int startRouteTime_;
      /**
       * <code>uint32 startRouteTime = 3;</code>
       * @return The startRouteTime.
       */
      @java.lang.Override
      public int getStartRouteTime() {
        return startRouteTime_;
      }
  
      public static final int STARTSCENETIME_FIELD_NUMBER = 4;
      private int startSceneTime_;
      /**
       * <code>uint32 startSceneTime = 4;</code>
       * @return The startSceneTime.
       */
      @java.lang.Override
      public int getStartSceneTime() {
        return startSceneTime_;
      }
  
      public static final int STARTPOS_FIELD_NUMBER = 7;
      private emu.grasscutter.net.proto.VectorOuterClass.Vector startPos_;
      /**
       * <code>.Vector startPos = 7;</code>
       * @return Whether the startPos field is set.
       */
      @java.lang.Override
      public boolean hasStartPos() {
        return startPos_ != null;
      }
      /**
       * <code>.Vector startPos = 7;</code>
       * @return The startPos.
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.VectorOuterClass.Vector getStartPos() {
        return startPos_ == null ? emu.grasscutter.net.proto.VectorOuterClass.Vector.getDefaultInstance() : startPos_;
      }
      /**
       * <code>.Vector startPos = 7;</code>
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.VectorOuterClass.VectorOrBuilder getStartPosOrBuilder() {
        return getStartPos();
      }
  
      public static final int ISSTARTED_FIELD_NUMBER = 8;
      private boolean isStarted_;
      /**
       * <code>bool isStarted = 8;</code>
       * @return The isStarted.
       */
      @java.lang.Override
      public boolean getIsStarted() {
        return isStarted_;
      }
  
      public static final int STARTROT_FIELD_NUMBER = 9;
      private emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion startRot_;
      /**
       * <code>.MathQuaternion startRot = 9;</code>
       * @return Whether the startRot field is set.
       */
      @java.lang.Override
      public boolean hasStartRot() {
        return startRot_ != null;
      }
      /**
       * <code>.MathQuaternion startRot = 9;</code>
       * @return The startRot.
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion getStartRot() {
        return startRot_ == null ? emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion.getDefaultInstance() : startRot_;
      }
      /**
       * <code>.MathQuaternion startRot = 9;</code>
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternionOrBuilder getStartRotOrBuilder() {
        return getStartRot();
      }
  
      public static final int STOPSCENETIME_FIELD_NUMBER = 10;
      private int stopSceneTime_;
      /**
       * <code>uint32 stopSceneTime = 10;</code>
       * @return The stopSceneTime.
       */
      @java.lang.Override
      public int getStopSceneTime() {
        return stopSceneTime_;
      }
  
      public static final int POSOFFSET_FIELD_NUMBER = 11;
      private emu.grasscutter.net.proto.VectorOuterClass.Vector posOffset_;
      /**
       * <code>.Vector posOffset = 11;</code>
       * @return Whether the posOffset field is set.
       */
      @java.lang.Override
      public boolean hasPosOffset() {
        return posOffset_ != null;
      }
      /**
       * <code>.Vector posOffset = 11;</code>
       * @return The posOffset.
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.VectorOuterClass.Vector getPosOffset() {
        return posOffset_ == null ? emu.grasscutter.net.proto.VectorOuterClass.Vector.getDefaultInstance() : posOffset_;
      }
      /**
       * <code>.Vector posOffset = 11;</code>
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.VectorOuterClass.VectorOrBuilder getPosOffsetOrBuilder() {
        return getPosOffset();
      }
  
      public static final int ROTOFFSET_FIELD_NUMBER = 12;
      private emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion rotOffset_;
      /**
       * <code>.MathQuaternion rotOffset = 12;</code>
       * @return Whether the rotOffset field is set.
       */
      @java.lang.Override
      public boolean hasRotOffset() {
        return rotOffset_ != null;
      }
      /**
       * <code>.MathQuaternion rotOffset = 12;</code>
       * @return The rotOffset.
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion getRotOffset() {
        return rotOffset_ == null ? emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion.getDefaultInstance() : rotOffset_;
      }
      /**
       * <code>.MathQuaternion rotOffset = 12;</code>
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternionOrBuilder getRotOffsetOrBuilder() {
        return getRotOffset();
      }
  
      public static final int MOVINGPLATFORMTYPE_FIELD_NUMBER = 13;
      private int movingPlatformType_;
      /**
       * <code>.MovingPlatformType movingPlatformType = 13;</code>
       * @return The enum numeric value on the wire for movingPlatformType.
       */
      @java.lang.Override public int getMovingPlatformTypeValue() {
        return movingPlatformType_;
      }
      /**
       * <code>.MovingPlatformType movingPlatformType = 13;</code>
       * @return The movingPlatformType.
       */
      @java.lang.Override public emu.grasscutter.net.proto.MovingPlatformTypeOuterClass.MovingPlatformType getMovingPlatformType() {
        @SuppressWarnings("deprecation")
        emu.grasscutter.net.proto.MovingPlatformTypeOuterClass.MovingPlatformType result = emu.grasscutter.net.proto.MovingPlatformTypeOuterClass.MovingPlatformType.valueOf(movingPlatformType_);
        return result == null ? emu.grasscutter.net.proto.MovingPlatformTypeOuterClass.MovingPlatformType.UNRECOGNIZED : result;
      }
  
      public static final int ISACTIVE_FIELD_NUMBER = 14;
      private boolean isActive_;
      /**
       * <code>bool isActive = 14;</code>
       * @return The isActive.
       */
      @java.lang.Override
      public boolean getIsActive() {
        return isActive_;
      }
  
      public static final int ROUTE_FIELD_NUMBER = 15;
      private emu.grasscutter.net.proto.RouteOuterClass.Route route_;
      /**
       * <code>.Route route = 15;</code>
       * @return Whether the route field is set.
       */
      @java.lang.Override
      public boolean hasRoute() {
        return route_ != null;
      }
      /**
       * <code>.Route route = 15;</code>
       * @return The route.
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.RouteOuterClass.Route getRoute() {
        return route_ == null ? emu.grasscutter.net.proto.RouteOuterClass.Route.getDefaultInstance() : route_;
      }
      /**
       * <code>.Route route = 15;</code>
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.RouteOuterClass.RouteOrBuilder getRouteOrBuilder() {
        return getRoute();
      }
  
      public static final int POINTID_FIELD_NUMBER = 16;
      private int pointId_;
      /**
       * <code>uint32 pointId = 16;</code>
       * @return The pointId.
       */
      @java.lang.Override
      public int getPointId() {
        return pointId_;
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (routeId_ != 0) {
          output.writeUInt32(1, routeId_);
        }
        if (startIndex_ != 0) {
          output.writeInt32(2, startIndex_);
        }
        if (startRouteTime_ != 0) {
          output.writeUInt32(3, startRouteTime_);
        }
        if (startSceneTime_ != 0) {
          output.writeUInt32(4, startSceneTime_);
        }
        if (startPos_ != null) {
          output.writeMessage(7, getStartPos());
        }
        if (isStarted_ != false) {
          output.writeBool(8, isStarted_);
        }
        if (startRot_ != null) {
          output.writeMessage(9, getStartRot());
        }
        if (stopSceneTime_ != 0) {
          output.writeUInt32(10, stopSceneTime_);
        }
        if (posOffset_ != null) {
          output.writeMessage(11, getPosOffset());
        }
        if (rotOffset_ != null) {
          output.writeMessage(12, getRotOffset());
        }
        if (movingPlatformType_ != emu.grasscutter.net.proto.MovingPlatformTypeOuterClass.MovingPlatformType.MOVING_PLATFORM_TYPE_NONE.getNumber()) {
          output.writeEnum(13, movingPlatformType_);
        }
        if (isActive_ != false) {
          output.writeBool(14, isActive_);
        }
        if (route_ != null) {
          output.writeMessage(15, getRoute());
        }
        if (pointId_ != 0) {
          output.writeUInt32(16, pointId_);
        }
        unknownFields.writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (routeId_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, routeId_);
        }
        if (startIndex_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(2, startIndex_);
        }
        if (startRouteTime_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(3, startRouteTime_);
        }
        if (startSceneTime_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(4, startSceneTime_);
        }
        if (startPos_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(7, getStartPos());
        }
        if (isStarted_ != false) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(8, isStarted_);
        }
        if (startRot_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(9, getStartRot());
        }
        if (stopSceneTime_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(10, stopSceneTime_);
        }
        if (posOffset_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(11, getPosOffset());
        }
        if (rotOffset_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(12, getRotOffset());
        }
        if (movingPlatformType_ != emu.grasscutter.net.proto.MovingPlatformTypeOuterClass.MovingPlatformType.MOVING_PLATFORM_TYPE_NONE.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(13, movingPlatformType_);
        }
        if (isActive_ != false) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(14, isActive_);
        }
        if (route_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(15, getRoute());
        }
        if (pointId_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(16, pointId_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo)) {
          return super.equals(obj);
        }
        emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo other = (emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo) obj;
  
        if (getRouteId()
            != other.getRouteId()) return false;
        if (getStartIndex()
            != other.getStartIndex()) return false;
        if (getStartRouteTime()
            != other.getStartRouteTime()) return false;
        if (getStartSceneTime()
            != other.getStartSceneTime()) return false;
        if (hasStartPos() != other.hasStartPos()) return false;
        if (hasStartPos()) {
          if (!getStartPos()
              .equals(other.getStartPos())) return false;
        }
        if (getIsStarted()
            != other.getIsStarted()) return false;
        if (hasStartRot() != other.hasStartRot()) return false;
        if (hasStartRot()) {
          if (!getStartRot()
              .equals(other.getStartRot())) return false;
        }
        if (getStopSceneTime()
            != other.getStopSceneTime()) return false;
        if (hasPosOffset() != other.hasPosOffset()) return false;
        if (hasPosOffset()) {
          if (!getPosOffset()
              .equals(other.getPosOffset())) return false;
        }
        if (hasRotOffset() != other.hasRotOffset()) return false;
        if (hasRotOffset()) {
          if (!getRotOffset()
              .equals(other.getRotOffset())) return false;
        }
        if (movingPlatformType_ != other.movingPlatformType_) return false;
        if (getIsActive()
            != other.getIsActive()) return false;
        if (hasRoute() != other.hasRoute()) return false;
        if (hasRoute()) {
          if (!getRoute()
              .equals(other.getRoute())) return false;
        }
        if (getPointId()
            != other.getPointId()) return false;
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + ROUTEID_FIELD_NUMBER;
        hash = (53 * hash) + getRouteId();
        hash = (37 * hash) + STARTINDEX_FIELD_NUMBER;
        hash = (53 * hash) + getStartIndex();
        hash = (37 * hash) + STARTROUTETIME_FIELD_NUMBER;
        hash = (53 * hash) + getStartRouteTime();
        hash = (37 * hash) + STARTSCENETIME_FIELD_NUMBER;
        hash = (53 * hash) + getStartSceneTime();
        if (hasStartPos()) {
          hash = (37 * hash) + STARTPOS_FIELD_NUMBER;
          hash = (53 * hash) + getStartPos().hashCode();
        }
        hash = (37 * hash) + ISSTARTED_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsStarted());
        if (hasStartRot()) {
          hash = (37 * hash) + STARTROT_FIELD_NUMBER;
          hash = (53 * hash) + getStartRot().hashCode();
        }
        hash = (37 * hash) + STOPSCENETIME_FIELD_NUMBER;
        hash = (53 * hash) + getStopSceneTime();
        if (hasPosOffset()) {
          hash = (37 * hash) + POSOFFSET_FIELD_NUMBER;
          hash = (53 * hash) + getPosOffset().hashCode();
        }
        if (hasRotOffset()) {
          hash = (37 * hash) + ROTOFFSET_FIELD_NUMBER;
          hash = (53 * hash) + getRotOffset().hashCode();
        }
        hash = (37 * hash) + MOVINGPLATFORMTYPE_FIELD_NUMBER;
        hash = (53 * hash) + movingPlatformType_;
        hash = (37 * hash) + ISACTIVE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsActive());
        if (hasRoute()) {
          hash = (37 * hash) + ROUTE_FIELD_NUMBER;
          hash = (53 * hash) + getRoute().hashCode();
        }
        hash = (37 * hash) + POINTID_FIELD_NUMBER;
        hash = (53 * hash) + getPointId();
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code PlatformInfo}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:PlatformInfo)
          emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfoOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return emu.grasscutter.net.proto.PlatformInfoOuterClass.internal_static_PlatformInfo_descriptor;
        }
  
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return emu.grasscutter.net.proto.PlatformInfoOuterClass.internal_static_PlatformInfo_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo.class, emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo.Builder.class);
        }
  
        // Construct using emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          routeId_ = 0;
  
          startIndex_ = 0;
  
          startRouteTime_ = 0;
  
          startSceneTime_ = 0;
  
          if (startPosBuilder_ == null) {
            startPos_ = null;
          } else {
            startPos_ = null;
            startPosBuilder_ = null;
          }
          isStarted_ = false;
  
          if (startRotBuilder_ == null) {
            startRot_ = null;
          } else {
            startRot_ = null;
            startRotBuilder_ = null;
          }
          stopSceneTime_ = 0;
  
          if (posOffsetBuilder_ == null) {
            posOffset_ = null;
          } else {
            posOffset_ = null;
            posOffsetBuilder_ = null;
          }
          if (rotOffsetBuilder_ == null) {
            rotOffset_ = null;
          } else {
            rotOffset_ = null;
            rotOffsetBuilder_ = null;
          }
          movingPlatformType_ = 0;
  
          isActive_ = false;
  
          if (routeBuilder_ == null) {
            route_ = null;
          } else {
            route_ = null;
            routeBuilder_ = null;
          }
          pointId_ = 0;
  
          return this;
        }
  
        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return emu.grasscutter.net.proto.PlatformInfoOuterClass.internal_static_PlatformInfo_descriptor;
        }
  
        @java.lang.Override
        public emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo getDefaultInstanceForType() {
          return emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo.getDefaultInstance();
        }
  
        @java.lang.Override
        public emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo build() {
          emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo buildPartial() {
          emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo result = new emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo(this);
          result.routeId_ = routeId_;
          result.startIndex_ = startIndex_;
          result.startRouteTime_ = startRouteTime_;
          result.startSceneTime_ = startSceneTime_;
          if (startPosBuilder_ == null) {
            result.startPos_ = startPos_;
          } else {
            result.startPos_ = startPosBuilder_.build();
          }
          result.isStarted_ = isStarted_;
          if (startRotBuilder_ == null) {
            result.startRot_ = startRot_;
          } else {
            result.startRot_ = startRotBuilder_.build();
          }
          result.stopSceneTime_ = stopSceneTime_;
          if (posOffsetBuilder_ == null) {
            result.posOffset_ = posOffset_;
          } else {
            result.posOffset_ = posOffsetBuilder_.build();
          }
          if (rotOffsetBuilder_ == null) {
            result.rotOffset_ = rotOffset_;
          } else {
            result.rotOffset_ = rotOffsetBuilder_.build();
          }
          result.movingPlatformType_ = movingPlatformType_;
          result.isActive_ = isActive_;
          if (routeBuilder_ == null) {
            result.route_ = route_;
          } else {
            result.route_ = routeBuilder_.build();
          }
          result.pointId_ = pointId_;
          onBuilt();
          return result;
        }
  
        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo) {
            return mergeFrom((emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo other) {
          if (other == emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo.getDefaultInstance()) return this;
          if (other.getRouteId() != 0) {
            setRouteId(other.getRouteId());
          }
          if (other.getStartIndex() != 0) {
            setStartIndex(other.getStartIndex());
          }
          if (other.getStartRouteTime() != 0) {
            setStartRouteTime(other.getStartRouteTime());
          }
          if (other.getStartSceneTime() != 0) {
            setStartSceneTime(other.getStartSceneTime());
          }
          if (other.hasStartPos()) {
            mergeStartPos(other.getStartPos());
          }
          if (other.getIsStarted() != false) {
            setIsStarted(other.getIsStarted());
          }
          if (other.hasStartRot()) {
            mergeStartRot(other.getStartRot());
          }
          if (other.getStopSceneTime() != 0) {
            setStopSceneTime(other.getStopSceneTime());
          }
          if (other.hasPosOffset()) {
            mergePosOffset(other.getPosOffset());
          }
          if (other.hasRotOffset()) {
            mergeRotOffset(other.getRotOffset());
          }
          if (other.movingPlatformType_ != 0) {
            setMovingPlatformTypeValue(other.getMovingPlatformTypeValue());
          }
          if (other.getIsActive() != false) {
            setIsActive(other.getIsActive());
          }
          if (other.hasRoute()) {
            mergeRoute(other.getRoute());
          }
          if (other.getPointId() != 0) {
            setPointId(other.getPointId());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
  
        private int routeId_ ;
        /**
         * <code>uint32 routeId = 1;</code>
         * @return The routeId.
         */
        @java.lang.Override
        public int getRouteId() {
          return routeId_;
        }
        /**
         * <code>uint32 routeId = 1;</code>
         * @param value The routeId to set.
         * @return This builder for chaining.
         */
        public Builder setRouteId(int value) {
          
          routeId_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>uint32 routeId = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearRouteId() {
          
          routeId_ = 0;
          onChanged();
          return this;
        }
  
        private int startIndex_ ;
        /**
         * <code>int32 startIndex = 2;</code>
         * @return The startIndex.
         */
        @java.lang.Override
        public int getStartIndex() {
          return startIndex_;
        }
        /**
         * <code>int32 startIndex = 2;</code>
         * @param value The startIndex to set.
         * @return This builder for chaining.
         */
        public Builder setStartIndex(int value) {
          
          startIndex_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>int32 startIndex = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearStartIndex() {
          
          startIndex_ = 0;
          onChanged();
          return this;
        }
  
        private int startRouteTime_ ;
        /**
         * <code>uint32 startRouteTime = 3;</code>
         * @return The startRouteTime.
         */
        @java.lang.Override
        public int getStartRouteTime() {
          return startRouteTime_;
        }
        /**
         * <code>uint32 startRouteTime = 3;</code>
         * @param value The startRouteTime to set.
         * @return This builder for chaining.
         */
        public Builder setStartRouteTime(int value) {
          
          startRouteTime_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>uint32 startRouteTime = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearStartRouteTime() {
          
          startRouteTime_ = 0;
          onChanged();
          return this;
        }
  
        private int startSceneTime_ ;
        /**
         * <code>uint32 startSceneTime = 4;</code>
         * @return The startSceneTime.
         */
        @java.lang.Override
        public int getStartSceneTime() {
          return startSceneTime_;
        }
        /**
         * <code>uint32 startSceneTime = 4;</code>
         * @param value The startSceneTime to set.
         * @return This builder for chaining.
         */
        public Builder setStartSceneTime(int value) {
          
          startSceneTime_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>uint32 startSceneTime = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearStartSceneTime() {
          
          startSceneTime_ = 0;
          onChanged();
          return this;
        }
  
        private emu.grasscutter.net.proto.VectorOuterClass.Vector startPos_;
        private com.google.protobuf.SingleFieldBuilderV3<
            emu.grasscutter.net.proto.VectorOuterClass.Vector, emu.grasscutter.net.proto.VectorOuterClass.Vector.Builder, emu.grasscutter.net.proto.VectorOuterClass.VectorOrBuilder> startPosBuilder_;
        /**
         * <code>.Vector startPos = 7;</code>
         * @return Whether the startPos field is set.
         */
        public boolean hasStartPos() {
          return startPosBuilder_ != null || startPos_ != null;
        }
        /**
         * <code>.Vector startPos = 7;</code>
         * @return The startPos.
         */
        public emu.grasscutter.net.proto.VectorOuterClass.Vector getStartPos() {
          if (startPosBuilder_ == null) {
            return startPos_ == null ? emu.grasscutter.net.proto.VectorOuterClass.Vector.getDefaultInstance() : startPos_;
          } else {
            return startPosBuilder_.getMessage();
          }
        }
        /**
         * <code>.Vector startPos = 7;</code>
         */
        public Builder setStartPos(emu.grasscutter.net.proto.VectorOuterClass.Vector value) {
          if (startPosBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            startPos_ = value;
            onChanged();
          } else {
            startPosBuilder_.setMessage(value);
          }
  
          return this;
        }
        /**
         * <code>.Vector startPos = 7;</code>
         */
        public Builder setStartPos(
            emu.grasscutter.net.proto.VectorOuterClass.Vector.Builder builderForValue) {
          if (startPosBuilder_ == null) {
            startPos_ = builderForValue.build();
            onChanged();
          } else {
            startPosBuilder_.setMessage(builderForValue.build());
          }
  
          return this;
        }
        /**
         * <code>.Vector startPos = 7;</code>
         */
        public Builder mergeStartPos(emu.grasscutter.net.proto.VectorOuterClass.Vector value) {
          if (startPosBuilder_ == null) {
            if (startPos_ != null) {
              startPos_ =
                emu.grasscutter.net.proto.VectorOuterClass.Vector.newBuilder(startPos_).mergeFrom(value).buildPartial();
            } else {
              startPos_ = value;
            }
            onChanged();
          } else {
            startPosBuilder_.mergeFrom(value);
          }
  
          return this;
        }
        /**
         * <code>.Vector startPos = 7;</code>
         */
        public Builder clearStartPos() {
          if (startPosBuilder_ == null) {
            startPos_ = null;
            onChanged();
          } else {
            startPos_ = null;
            startPosBuilder_ = null;
          }
  
          return this;
        }
        /**
         * <code>.Vector startPos = 7;</code>
         */
        public emu.grasscutter.net.proto.VectorOuterClass.Vector.Builder getStartPosBuilder() {
          
          onChanged();
          return getStartPosFieldBuilder().getBuilder();
        }
        /**
         * <code>.Vector startPos = 7;</code>
         */
        public emu.grasscutter.net.proto.VectorOuterClass.VectorOrBuilder getStartPosOrBuilder() {
          if (startPosBuilder_ != null) {
            return startPosBuilder_.getMessageOrBuilder();
          } else {
            return startPos_ == null ?
                emu.grasscutter.net.proto.VectorOuterClass.Vector.getDefaultInstance() : startPos_;
          }
        }
        /**
         * <code>.Vector startPos = 7;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            emu.grasscutter.net.proto.VectorOuterClass.Vector, emu.grasscutter.net.proto.VectorOuterClass.Vector.Builder, emu.grasscutter.net.proto.VectorOuterClass.VectorOrBuilder> 
            getStartPosFieldBuilder() {
          if (startPosBuilder_ == null) {
            startPosBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                emu.grasscutter.net.proto.VectorOuterClass.Vector, emu.grasscutter.net.proto.VectorOuterClass.Vector.Builder, emu.grasscutter.net.proto.VectorOuterClass.VectorOrBuilder>(
                    getStartPos(),
                    getParentForChildren(),
                    isClean());
            startPos_ = null;
          }
          return startPosBuilder_;
        }
  
        private boolean isStarted_ ;
        /**
         * <code>bool isStarted = 8;</code>
         * @return The isStarted.
         */
        @java.lang.Override
        public boolean getIsStarted() {
          return isStarted_;
        }
        /**
         * <code>bool isStarted = 8;</code>
         * @param value The isStarted to set.
         * @return This builder for chaining.
         */
        public Builder setIsStarted(boolean value) {
          
          isStarted_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>bool isStarted = 8;</code>
         * @return This builder for chaining.
         */
        public Builder clearIsStarted() {
          
          isStarted_ = false;
          onChanged();
          return this;
        }
  
        private emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion startRot_;
        private com.google.protobuf.SingleFieldBuilderV3<
            emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion, emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion.Builder, emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternionOrBuilder> startRotBuilder_;
        /**
         * <code>.MathQuaternion startRot = 9;</code>
         * @return Whether the startRot field is set.
         */
        public boolean hasStartRot() {
          return startRotBuilder_ != null || startRot_ != null;
        }
        /**
         * <code>.MathQuaternion startRot = 9;</code>
         * @return The startRot.
         */
        public emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion getStartRot() {
          if (startRotBuilder_ == null) {
            return startRot_ == null ? emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion.getDefaultInstance() : startRot_;
          } else {
            return startRotBuilder_.getMessage();
          }
        }
        /**
         * <code>.MathQuaternion startRot = 9;</code>
         */
        public Builder setStartRot(emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion value) {
          if (startRotBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            startRot_ = value;
            onChanged();
          } else {
            startRotBuilder_.setMessage(value);
          }
  
          return this;
        }
        /**
         * <code>.MathQuaternion startRot = 9;</code>
         */
        public Builder setStartRot(
            emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion.Builder builderForValue) {
          if (startRotBuilder_ == null) {
            startRot_ = builderForValue.build();
            onChanged();
          } else {
            startRotBuilder_.setMessage(builderForValue.build());
          }
  
          return this;
        }
        /**
         * <code>.MathQuaternion startRot = 9;</code>
         */
        public Builder mergeStartRot(emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion value) {
          if (startRotBuilder_ == null) {
            if (startRot_ != null) {
              startRot_ =
                emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion.newBuilder(startRot_).mergeFrom(value).buildPartial();
            } else {
              startRot_ = value;
            }
            onChanged();
          } else {
            startRotBuilder_.mergeFrom(value);
          }
  
          return this;
        }
        /**
         * <code>.MathQuaternion startRot = 9;</code>
         */
        public Builder clearStartRot() {
          if (startRotBuilder_ == null) {
            startRot_ = null;
            onChanged();
          } else {
            startRot_ = null;
            startRotBuilder_ = null;
          }
  
          return this;
        }
        /**
         * <code>.MathQuaternion startRot = 9;</code>
         */
        public emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion.Builder getStartRotBuilder() {
          
          onChanged();
          return getStartRotFieldBuilder().getBuilder();
        }
        /**
         * <code>.MathQuaternion startRot = 9;</code>
         */
        public emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternionOrBuilder getStartRotOrBuilder() {
          if (startRotBuilder_ != null) {
            return startRotBuilder_.getMessageOrBuilder();
          } else {
            return startRot_ == null ?
                emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion.getDefaultInstance() : startRot_;
          }
        }
        /**
         * <code>.MathQuaternion startRot = 9;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion, emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion.Builder, emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternionOrBuilder> 
            getStartRotFieldBuilder() {
          if (startRotBuilder_ == null) {
            startRotBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion, emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion.Builder, emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternionOrBuilder>(
                    getStartRot(),
                    getParentForChildren(),
                    isClean());
            startRot_ = null;
          }
          return startRotBuilder_;
        }
  
        private int stopSceneTime_ ;
        /**
         * <code>uint32 stopSceneTime = 10;</code>
         * @return The stopSceneTime.
         */
        @java.lang.Override
        public int getStopSceneTime() {
          return stopSceneTime_;
        }
        /**
         * <code>uint32 stopSceneTime = 10;</code>
         * @param value The stopSceneTime to set.
         * @return This builder for chaining.
         */
        public Builder setStopSceneTime(int value) {
          
          stopSceneTime_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>uint32 stopSceneTime = 10;</code>
         * @return This builder for chaining.
         */
        public Builder clearStopSceneTime() {
          
          stopSceneTime_ = 0;
          onChanged();
          return this;
        }
  
        private emu.grasscutter.net.proto.VectorOuterClass.Vector posOffset_;
        private com.google.protobuf.SingleFieldBuilderV3<
            emu.grasscutter.net.proto.VectorOuterClass.Vector, emu.grasscutter.net.proto.VectorOuterClass.Vector.Builder, emu.grasscutter.net.proto.VectorOuterClass.VectorOrBuilder> posOffsetBuilder_;
        /**
         * <code>.Vector posOffset = 11;</code>
         * @return Whether the posOffset field is set.
         */
        public boolean hasPosOffset() {
          return posOffsetBuilder_ != null || posOffset_ != null;
        }
        /**
         * <code>.Vector posOffset = 11;</code>
         * @return The posOffset.
         */
        public emu.grasscutter.net.proto.VectorOuterClass.Vector getPosOffset() {
          if (posOffsetBuilder_ == null) {
            return posOffset_ == null ? emu.grasscutter.net.proto.VectorOuterClass.Vector.getDefaultInstance() : posOffset_;
          } else {
            return posOffsetBuilder_.getMessage();
          }
        }
        /**
         * <code>.Vector posOffset = 11;</code>
         */
        public Builder setPosOffset(emu.grasscutter.net.proto.VectorOuterClass.Vector value) {
          if (posOffsetBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            posOffset_ = value;
            onChanged();
          } else {
            posOffsetBuilder_.setMessage(value);
          }
  
          return this;
        }
        /**
         * <code>.Vector posOffset = 11;</code>
         */
        public Builder setPosOffset(
            emu.grasscutter.net.proto.VectorOuterClass.Vector.Builder builderForValue) {
          if (posOffsetBuilder_ == null) {
            posOffset_ = builderForValue.build();
            onChanged();
          } else {
            posOffsetBuilder_.setMessage(builderForValue.build());
          }
  
          return this;
        }
        /**
         * <code>.Vector posOffset = 11;</code>
         */
        public Builder mergePosOffset(emu.grasscutter.net.proto.VectorOuterClass.Vector value) {
          if (posOffsetBuilder_ == null) {
            if (posOffset_ != null) {
              posOffset_ =
                emu.grasscutter.net.proto.VectorOuterClass.Vector.newBuilder(posOffset_).mergeFrom(value).buildPartial();
            } else {
              posOffset_ = value;
            }
            onChanged();
          } else {
            posOffsetBuilder_.mergeFrom(value);
          }
  
          return this;
        }
        /**
         * <code>.Vector posOffset = 11;</code>
         */
        public Builder clearPosOffset() {
          if (posOffsetBuilder_ == null) {
            posOffset_ = null;
            onChanged();
          } else {
            posOffset_ = null;
            posOffsetBuilder_ = null;
          }
  
          return this;
        }
        /**
         * <code>.Vector posOffset = 11;</code>
         */
        public emu.grasscutter.net.proto.VectorOuterClass.Vector.Builder getPosOffsetBuilder() {
          
          onChanged();
          return getPosOffsetFieldBuilder().getBuilder();
        }
        /**
         * <code>.Vector posOffset = 11;</code>
         */
        public emu.grasscutter.net.proto.VectorOuterClass.VectorOrBuilder getPosOffsetOrBuilder() {
          if (posOffsetBuilder_ != null) {
            return posOffsetBuilder_.getMessageOrBuilder();
          } else {
            return posOffset_ == null ?
                emu.grasscutter.net.proto.VectorOuterClass.Vector.getDefaultInstance() : posOffset_;
          }
        }
        /**
         * <code>.Vector posOffset = 11;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            emu.grasscutter.net.proto.VectorOuterClass.Vector, emu.grasscutter.net.proto.VectorOuterClass.Vector.Builder, emu.grasscutter.net.proto.VectorOuterClass.VectorOrBuilder> 
            getPosOffsetFieldBuilder() {
          if (posOffsetBuilder_ == null) {
            posOffsetBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                emu.grasscutter.net.proto.VectorOuterClass.Vector, emu.grasscutter.net.proto.VectorOuterClass.Vector.Builder, emu.grasscutter.net.proto.VectorOuterClass.VectorOrBuilder>(
                    getPosOffset(),
                    getParentForChildren(),
                    isClean());
            posOffset_ = null;
          }
          return posOffsetBuilder_;
        }
  
        private emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion rotOffset_;
        private com.google.protobuf.SingleFieldBuilderV3<
            emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion, emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion.Builder, emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternionOrBuilder> rotOffsetBuilder_;
        /**
         * <code>.MathQuaternion rotOffset = 12;</code>
         * @return Whether the rotOffset field is set.
         */
        public boolean hasRotOffset() {
          return rotOffsetBuilder_ != null || rotOffset_ != null;
        }
        /**
         * <code>.MathQuaternion rotOffset = 12;</code>
         * @return The rotOffset.
         */
        public emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion getRotOffset() {
          if (rotOffsetBuilder_ == null) {
            return rotOffset_ == null ? emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion.getDefaultInstance() : rotOffset_;
          } else {
            return rotOffsetBuilder_.getMessage();
          }
        }
        /**
         * <code>.MathQuaternion rotOffset = 12;</code>
         */
        public Builder setRotOffset(emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion value) {
          if (rotOffsetBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            rotOffset_ = value;
            onChanged();
          } else {
            rotOffsetBuilder_.setMessage(value);
          }
  
          return this;
        }
        /**
         * <code>.MathQuaternion rotOffset = 12;</code>
         */
        public Builder setRotOffset(
            emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion.Builder builderForValue) {
          if (rotOffsetBuilder_ == null) {
            rotOffset_ = builderForValue.build();
            onChanged();
          } else {
            rotOffsetBuilder_.setMessage(builderForValue.build());
          }
  
          return this;
        }
        /**
         * <code>.MathQuaternion rotOffset = 12;</code>
         */
        public Builder mergeRotOffset(emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion value) {
          if (rotOffsetBuilder_ == null) {
            if (rotOffset_ != null) {
              rotOffset_ =
                emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion.newBuilder(rotOffset_).mergeFrom(value).buildPartial();
            } else {
              rotOffset_ = value;
            }
            onChanged();
          } else {
            rotOffsetBuilder_.mergeFrom(value);
          }
  
          return this;
        }
        /**
         * <code>.MathQuaternion rotOffset = 12;</code>
         */
        public Builder clearRotOffset() {
          if (rotOffsetBuilder_ == null) {
            rotOffset_ = null;
            onChanged();
          } else {
            rotOffset_ = null;
            rotOffsetBuilder_ = null;
          }
  
          return this;
        }
        /**
         * <code>.MathQuaternion rotOffset = 12;</code>
         */
        public emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion.Builder getRotOffsetBuilder() {
          
          onChanged();
          return getRotOffsetFieldBuilder().getBuilder();
        }
        /**
         * <code>.MathQuaternion rotOffset = 12;</code>
         */
        public emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternionOrBuilder getRotOffsetOrBuilder() {
          if (rotOffsetBuilder_ != null) {
            return rotOffsetBuilder_.getMessageOrBuilder();
          } else {
            return rotOffset_ == null ?
                emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion.getDefaultInstance() : rotOffset_;
          }
        }
        /**
         * <code>.MathQuaternion rotOffset = 12;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion, emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion.Builder, emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternionOrBuilder> 
            getRotOffsetFieldBuilder() {
          if (rotOffsetBuilder_ == null) {
            rotOffsetBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion, emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternion.Builder, emu.grasscutter.net.proto.MathQuaternionOuterClass.MathQuaternionOrBuilder>(
                    getRotOffset(),
                    getParentForChildren(),
                    isClean());
            rotOffset_ = null;
          }
          return rotOffsetBuilder_;
        }
  
        private int movingPlatformType_ = 0;
        /**
         * <code>.MovingPlatformType movingPlatformType = 13;</code>
         * @return The enum numeric value on the wire for movingPlatformType.
         */
        @java.lang.Override public int getMovingPlatformTypeValue() {
          return movingPlatformType_;
        }
        /**
         * <code>.MovingPlatformType movingPlatformType = 13;</code>
         * @param value The enum numeric value on the wire for movingPlatformType to set.
         * @return This builder for chaining.
         */
        public Builder setMovingPlatformTypeValue(int value) {
          
          movingPlatformType_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.MovingPlatformType movingPlatformType = 13;</code>
         * @return The movingPlatformType.
         */
        @java.lang.Override
        public emu.grasscutter.net.proto.MovingPlatformTypeOuterClass.MovingPlatformType getMovingPlatformType() {
          @SuppressWarnings("deprecation")
          emu.grasscutter.net.proto.MovingPlatformTypeOuterClass.MovingPlatformType result = emu.grasscutter.net.proto.MovingPlatformTypeOuterClass.MovingPlatformType.valueOf(movingPlatformType_);
          return result == null ? emu.grasscutter.net.proto.MovingPlatformTypeOuterClass.MovingPlatformType.UNRECOGNIZED : result;
        }
        /**
         * <code>.MovingPlatformType movingPlatformType = 13;</code>
         * @param value The movingPlatformType to set.
         * @return This builder for chaining.
         */
        public Builder setMovingPlatformType(emu.grasscutter.net.proto.MovingPlatformTypeOuterClass.MovingPlatformType value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          movingPlatformType_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.MovingPlatformType movingPlatformType = 13;</code>
         * @return This builder for chaining.
         */
        public Builder clearMovingPlatformType() {
          
          movingPlatformType_ = 0;
          onChanged();
          return this;
        }
  
        private boolean isActive_ ;
        /**
         * <code>bool isActive = 14;</code>
         * @return The isActive.
         */
        @java.lang.Override
        public boolean getIsActive() {
          return isActive_;
        }
        /**
         * <code>bool isActive = 14;</code>
         * @param value The isActive to set.
         * @return This builder for chaining.
         */
        public Builder setIsActive(boolean value) {
          
          isActive_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>bool isActive = 14;</code>
         * @return This builder for chaining.
         */
        public Builder clearIsActive() {
          
          isActive_ = false;
          onChanged();
          return this;
        }
  
        private emu.grasscutter.net.proto.RouteOuterClass.Route route_;
        private com.google.protobuf.SingleFieldBuilderV3<
            emu.grasscutter.net.proto.RouteOuterClass.Route, emu.grasscutter.net.proto.RouteOuterClass.Route.Builder, emu.grasscutter.net.proto.RouteOuterClass.RouteOrBuilder> routeBuilder_;
        /**
         * <code>.Route route = 15;</code>
         * @return Whether the route field is set.
         */
        public boolean hasRoute() {
          return routeBuilder_ != null || route_ != null;
        }
        /**
         * <code>.Route route = 15;</code>
         * @return The route.
         */
        public emu.grasscutter.net.proto.RouteOuterClass.Route getRoute() {
          if (routeBuilder_ == null) {
            return route_ == null ? emu.grasscutter.net.proto.RouteOuterClass.Route.getDefaultInstance() : route_;
          } else {
            return routeBuilder_.getMessage();
          }
        }
        /**
         * <code>.Route route = 15;</code>
         */
        public Builder setRoute(emu.grasscutter.net.proto.RouteOuterClass.Route value) {
          if (routeBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            route_ = value;
            onChanged();
          } else {
            routeBuilder_.setMessage(value);
          }
  
          return this;
        }
        /**
         * <code>.Route route = 15;</code>
         */
        public Builder setRoute(
            emu.grasscutter.net.proto.RouteOuterClass.Route.Builder builderForValue) {
          if (routeBuilder_ == null) {
            route_ = builderForValue.build();
            onChanged();
          } else {
            routeBuilder_.setMessage(builderForValue.build());
          }
  
          return this;
        }
        /**
         * <code>.Route route = 15;</code>
         */
        public Builder mergeRoute(emu.grasscutter.net.proto.RouteOuterClass.Route value) {
          if (routeBuilder_ == null) {
            if (route_ != null) {
              route_ =
                emu.grasscutter.net.proto.RouteOuterClass.Route.newBuilder(route_).mergeFrom(value).buildPartial();
            } else {
              route_ = value;
            }
            onChanged();
          } else {
            routeBuilder_.mergeFrom(value);
          }
  
          return this;
        }
        /**
         * <code>.Route route = 15;</code>
         */
        public Builder clearRoute() {
          if (routeBuilder_ == null) {
            route_ = null;
            onChanged();
          } else {
            route_ = null;
            routeBuilder_ = null;
          }
  
          return this;
        }
        /**
         * <code>.Route route = 15;</code>
         */
        public emu.grasscutter.net.proto.RouteOuterClass.Route.Builder getRouteBuilder() {
          
          onChanged();
          return getRouteFieldBuilder().getBuilder();
        }
        /**
         * <code>.Route route = 15;</code>
         */
        public emu.grasscutter.net.proto.RouteOuterClass.RouteOrBuilder getRouteOrBuilder() {
          if (routeBuilder_ != null) {
            return routeBuilder_.getMessageOrBuilder();
          } else {
            return route_ == null ?
                emu.grasscutter.net.proto.RouteOuterClass.Route.getDefaultInstance() : route_;
          }
        }
        /**
         * <code>.Route route = 15;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            emu.grasscutter.net.proto.RouteOuterClass.Route, emu.grasscutter.net.proto.RouteOuterClass.Route.Builder, emu.grasscutter.net.proto.RouteOuterClass.RouteOrBuilder> 
            getRouteFieldBuilder() {
          if (routeBuilder_ == null) {
            routeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                emu.grasscutter.net.proto.RouteOuterClass.Route, emu.grasscutter.net.proto.RouteOuterClass.Route.Builder, emu.grasscutter.net.proto.RouteOuterClass.RouteOrBuilder>(
                    getRoute(),
                    getParentForChildren(),
                    isClean());
            route_ = null;
          }
          return routeBuilder_;
        }
  
        private int pointId_ ;
        /**
         * <code>uint32 pointId = 16;</code>
         * @return The pointId.
         */
        @java.lang.Override
        public int getPointId() {
          return pointId_;
        }
        /**
         * <code>uint32 pointId = 16;</code>
         * @param value The pointId to set.
         * @return This builder for chaining.
         */
        public Builder setPointId(int value) {
          
          pointId_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>uint32 pointId = 16;</code>
         * @return This builder for chaining.
         */
        public Builder clearPointId() {
          
          pointId_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:PlatformInfo)
      }
  
      // @@protoc_insertion_point(class_scope:PlatformInfo)
      private static final emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo();
      }
  
      public static emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.google.protobuf.Parser<PlatformInfo>
          PARSER = new com.google.protobuf.AbstractParser<PlatformInfo>() {
        @java.lang.Override
        public PlatformInfo parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new PlatformInfo(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<PlatformInfo> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<PlatformInfo> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public emu.grasscutter.net.proto.PlatformInfoOuterClass.PlatformInfo getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_PlatformInfo_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_PlatformInfo_fieldAccessorTable;
  
    public static com.google.protobuf.Descriptors.FileDescriptor
        getDescriptor() {
      return descriptor;
    }
    private static  com.google.protobuf.Descriptors.FileDescriptor
        descriptor;
    static {
      java.lang.String[] descriptorData = {
        "\n\022PlatformInfo.proto\032\024MathQuaternion.pro" +
        "to\032\014Vector.proto\032\023RotationSpeed.proto\032\030M" +
        "ovingPlatformType.proto\032\013Route.proto\"\366\002\n" +
        "\014PlatformInfo\022\017\n\007routeId\030\001 \001(\r\022\022\n\nstartI" +
        "ndex\030\002 \001(\005\022\026\n\016startRouteTime\030\003 \001(\r\022\026\n\016st" +
        "artSceneTime\030\004 \001(\r\022\031\n\010startPos\030\007 \001(\0132\007.V" +
        "ector\022\021\n\tisStarted\030\010 \001(\010\022!\n\010startRot\030\t \001" +
        "(\0132\017.MathQuaternion\022\025\n\rstopSceneTime\030\n \001" +
        "(\r\022\032\n\tposOffset\030\013 \001(\0132\007.Vector\022\"\n\trotOff" +
        "set\030\014 \001(\0132\017.MathQuaternion\022/\n\022movingPlat" +
        "formType\030\r \001(\0162\023.MovingPlatformType\022\020\n\010i" +
        "sActive\030\016 \001(\010\022\025\n\005route\030\017 \001(\0132\006.Route\022\017\n\007" +
        "pointId\030\020 \001(\rB\033\n\031emu.grasscutter.net.pro" +
        "tob\006proto3"
      };
      descriptor = com.google.protobuf.Descriptors.FileDescriptor
        .internalBuildGeneratedFileFrom(descriptorData,
          new com.google.protobuf.Descriptors.FileDescriptor[] {
            emu.grasscutter.net.proto.MathQuaternionOuterClass.getDescriptor(),
            emu.grasscutter.net.proto.VectorOuterClass.getDescriptor(),
            emu.grasscutter.net.proto.RotationSpeed.getDescriptor(),
            emu.grasscutter.net.proto.MovingPlatformTypeOuterClass.getDescriptor(),
            emu.grasscutter.net.proto.RouteOuterClass.getDescriptor(),
          });
      internal_static_PlatformInfo_descriptor =
        getDescriptor().getMessageTypes().get(0);
      internal_static_PlatformInfo_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_PlatformInfo_descriptor,
          new java.lang.String[] { "RouteId", "StartIndex", "StartRouteTime", "StartSceneTime", "StartPos", "IsStarted", "StartRot", "StopSceneTime", "PosOffset", "RotOffset", "MovingPlatformType", "IsActive", "Route", "PointId", });
      emu.grasscutter.net.proto.MathQuaternionOuterClass.getDescriptor();
      emu.grasscutter.net.proto.VectorOuterClass.getDescriptor();
      emu.grasscutter.net.proto.RotationSpeed.getDescriptor();
      emu.grasscutter.net.proto.MovingPlatformTypeOuterClass.getDescriptor();
      emu.grasscutter.net.proto.RouteOuterClass.getDescriptor();
    }
  
    // @@protoc_insertion_point(outer_class_scope)
  }
  