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 Protobuf<?, ?>[] getNested() { 027 return new Protobuf<?, ?>[] {Translation2d.proto, Rotation2d.proto}; 028 } 029 030 @Override 031 public ProtobufPose2d createMessage() { 032 return ProtobufPose2d.newInstance(); 033 } 034 035 @Override 036 public Pose2d unpack(ProtobufPose2d msg) { 037 return new Pose2d( 038 Translation2d.proto.unpack(msg.getTranslation()), 039 Rotation2d.proto.unpack(msg.getRotation())); 040 } 041 042 @Override 043 public void pack(ProtobufPose2d msg, Pose2d value) { 044 Translation2d.proto.pack(msg.getMutableTranslation(), value.getTranslation()); 045 Rotation2d.proto.pack(msg.getMutableRotation(), value.getRotation()); 046 } 047}