// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: define.proto

package io.grasscutter.net.proto.define;

public interface RoutePointOrBuilder extends
    // @@protoc_insertion_point(interface_extends:RoutePoint)
    com.google.protobuf.MessageOrBuilder {

  /**
   * <code>.Vector position = 1;</code>
   * @return Whether the position field is set.
   */
  boolean hasPosition();
  /**
   * <code>.Vector position = 1;</code>
   * @return The position.
   */
  io.grasscutter.net.proto.define.Vector getPosition();
  /**
   * <code>.Vector position = 1;</code>
   */
  io.grasscutter.net.proto.define.VectorOrBuilder getPositionOrBuilder();

  /**
   * <code>float arrive_range = 2;</code>
   * @return The arriveRange.
   */
  float getArriveRange();

  /**
   * <code>bool has_reach_event = 3;</code>
   * @return The hasReachEvent.
   */
  boolean getHasReachEvent();

  /**
   * <code>float velocity = 11;</code>
   * @return Whether the velocity field is set.
   */
  boolean hasVelocity();
  /**
   * <code>float velocity = 11;</code>
   * @return The velocity.
   */
  float getVelocity();

  /**
   * <code>float time = 12;</code>
   * @return Whether the time field is set.
   */
  boolean hasTime();
  /**
   * <code>float time = 12;</code>
   * @return The time.
   */
  float getTime();

  /**
   * <code>.ALGFPDOAAFA point_type = 24;</code>
   * @return The enum numeric value on the wire for pointType.
   */
  int getPointTypeValue();
  /**
   * <code>.ALGFPDOAAFA point_type = 24;</code>
   * @return The pointType.
   */
  io.grasscutter.net.proto.define.ALGFPDOAAFA getPointType();

  /**
   * <code>.MathQuaternion axis_speed = 23;</code>
   * @return Whether the axisSpeed field is set.
   */
  boolean hasAxisSpeed();
  /**
   * <code>.MathQuaternion axis_speed = 23;</code>
   * @return The axisSpeed.
   */
  io.grasscutter.net.proto.define.MathQuaternion getAxisSpeed();
  /**
   * <code>.MathQuaternion axis_speed = 23;</code>
   */
  io.grasscutter.net.proto.define.MathQuaternionOrBuilder getAxisSpeedOrBuilder();

  /**
   * <code>.Vector rotation = 21;</code>
   * @return Whether the rotation field is set.
   */
  boolean hasRotation();
  /**
   * <code>.Vector rotation = 21;</code>
   * @return The rotation.
   */
  io.grasscutter.net.proto.define.Vector getRotation();
  /**
   * <code>.Vector rotation = 21;</code>
   */
  io.grasscutter.net.proto.define.VectorOrBuilder getRotationOrBuilder();

  /**
   * <code>.MathQuaternion rotation_speed = 22;</code>
   * @return Whether the rotationSpeed field is set.
   */
  boolean hasRotationSpeed();
  /**
   * <code>.MathQuaternion rotation_speed = 22;</code>
   * @return The rotationSpeed.
   */
  io.grasscutter.net.proto.define.MathQuaternion getRotationSpeed();
  /**
   * <code>.MathQuaternion rotation_speed = 22;</code>
   */
  io.grasscutter.net.proto.define.MathQuaternionOrBuilder getRotationSpeedOrBuilder();

  public io.grasscutter.net.proto.define.RoutePoint.PPKBBEKFPIACase getPPKBBEKFPIACase();

  public io.grasscutter.net.proto.define.RoutePoint.CFCAEGJNCDLCase getCFCAEGJNCDLCase();
}
