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.struct; 006 007import edu.wpi.first.math.geometry.Rotation2d; 008import edu.wpi.first.math.geometry.Transform2d; 009import edu.wpi.first.math.geometry.Translation2d; 010import edu.wpi.first.util.struct.Struct; 011import java.nio.ByteBuffer; 012 013public class Transform2dStruct implements Struct<Transform2d> { 014 @Override 015 public Class<Transform2d> getTypeClass() { 016 return Transform2d.class; 017 } 018 019 @Override 020 public String getTypeString() { 021 return "struct:Transform2d"; 022 } 023 024 @Override 025 public int getSize() { 026 return Translation2d.struct.getSize() + Rotation2d.struct.getSize(); 027 } 028 029 @Override 030 public String getSchema() { 031 return "Translation2d translation;Rotation2d rotation"; 032 } 033 034 @Override 035 public Struct<?>[] getNested() { 036 return new Struct<?>[] {Translation2d.struct, Rotation2d.struct}; 037 } 038 039 @Override 040 public Transform2d unpack(ByteBuffer bb) { 041 Translation2d translation = Translation2d.struct.unpack(bb); 042 Rotation2d rotation = Rotation2d.struct.unpack(bb); 043 return new Transform2d(translation, rotation); 044 } 045 046 @Override 047 public void pack(ByteBuffer bb, Transform2d value) { 048 Translation2d.struct.pack(bb, value.getTranslation()); 049 Rotation2d.struct.pack(bb, value.getRotation()); 050 } 051}