001// Copyright (c) FIRST and other WPILib contributors.
002// Open Source Software; you can modify and/or share it under the terms of
003// the WPILib BSD license file in the root directory of this project.
004
005package edu.wpi.first.math.geometry.proto;
006
007import edu.wpi.first.math.geometry.Pose2d;
008import edu.wpi.first.math.geometry.Rotation2d;
009import edu.wpi.first.math.geometry.Translation2d;
010import edu.wpi.first.math.proto.Geometry2D.ProtobufPose2d;
011import edu.wpi.first.util.protobuf.Protobuf;
012import us.hebi.quickbuf.Descriptors.Descriptor;
013
014public class Pose2dProto implements Protobuf<Pose2d, ProtobufPose2d> {
015  @Override
016  public Class<Pose2d> getTypeClass() {
017    return Pose2d.class;
018  }
019
020  @Override
021  public Descriptor getDescriptor() {
022    return ProtobufPose2d.getDescriptor();
023  }
024
025  @Override
026  public ProtobufPose2d createMessage() {
027    return ProtobufPose2d.newInstance();
028  }
029
030  @Override
031  public Pose2d unpack(ProtobufPose2d msg) {
032    return new Pose2d(
033        Translation2d.proto.unpack(msg.getTranslation()),
034        Rotation2d.proto.unpack(msg.getRotation()));
035  }
036
037  @Override
038  public void pack(ProtobufPose2d msg, Pose2d value) {
039    Translation2d.proto.pack(msg.getMutableTranslation(), value.getTranslation());
040    Rotation2d.proto.pack(msg.getMutableRotation(), value.getRotation());
041  }
042
043  @Override
044  public boolean isImmutable() {
045    return true;
046  }
047}