package Ġf rc . robot . vision Ċ Ċ import Ġedu . wpi . first . network tables . Network Table Instance Ċ import Ġf rc . robot . utils . div Ċ import Ġf rc . robot . utils . plus Ċ import Ġf rc . robot . utils . tan Ċ import Ġsystems . u om . common . US Custom ary Ċ import Ġtech . units . ind ri ya . quantity . Quant ities Ċ import Ġjavax . measure . Quantity Ċ import Ġjavax . measure . quantity . Angle Ċ import Ġjavax . measure . quantity . Length Ċ Ċ object ĠL ime light 2 Ġ{ ĊĠ Ġprivate Ġval Ġnetwork Table Ġ= ĠNetwork Table Instance . getDefault (). getTable (" lime light ") ĊĠ Ġprivate Ġval Ġhas Target Entry Ġ= Ġnetwork Table . getEntry (" tv ") ĊĠ Ġprivate Ġval Ġtarget X Offset Entry Ġ= Ġnetwork Table . getEntry (" tx ") ĊĠ Ġprivate Ġval Ġtarget Y Offset Entry Ġ= Ġnetwork Table . getEntry (" ty ") ĊĊĠ Ġprivate Ġconst Ġval Ġpixel Width : ĠInt Ġ= Ġ 3 2 0 ĊĠ Ġprivate Ġconst Ġval Ġpixel Height : ĠInt Ġ= Ġ 3 2 0 ĊĠ Ġprivate Ġval Ġf ov X : ĠQuantity < Angle > Ġ= ĠQuant ities . get Quantity ( 2 9 . 8 Ġ* Ġ 2 , ĠU SC ustom ary . DEG REE _ ANGLE ) ĊĠ Ġprivate Ġval Ġf ov Y : ĠQuantity < Angle > Ġ= ĠQuant ities . get Quantity ( 2 4 . 8 5 Ġ* Ġ 2 , ĠU SC ustom ary . DEG REE _ ANGLE ) ĊĊĠ Ġval Ġhas Target : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġhas Target Entry . getNumber ( 0 ). toInt () Ġ== Ġ 1 ĊĠ Ġval Ġtarget X Offset : ĠQuantity < Angle >? ĊĠĠĠ Ġget () Ġ= Ġif Ġ( has Target ) ĠQuant ities . get Quantity ( target X Offset Entry . getDouble ( 0 . 0 ), ĠU SC ustom ary . DEG REE _ ANGLE ) Ġelse Ġnull ĊĠ Ġval Ġtarget Y Offset : ĠQuantity < Angle >? ĊĠĠĠ Ġget () Ġ= Ġif Ġ( has Target ) ĠQuant ities . get Quantity ( target Y Offset Entry . getDouble ( 0 . 0 ), ĠU SC ustom ary . DEG REE _ ANGLE ) Ġelse Ġnull ĊĊĠ Ġfun Ġget Target Distance ( camera Angle : ĠQuantity < Angle >, Ġtarget Height : ĠQuantity < Length >): ĠQuantity < Length >? Ġ{ ĊĠĠĠ Ġtarget Y Offset ?. let Ġ{ ĊĠĠĠĠĠ Ġreturn Ġtarget Height Ġ/ Ġtan ( camera Angle Ġ+ Ġit ) ĊĠĠĠ Ġ} Ġ?: Ġreturn Ġnull ĊĠ Ġ} Ċ }