/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 - 2 0 2 0 ĠMagic ĠLe ap , ĠInc . ĠAll ĠRights ĠReserved Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . mag icle ap . magic script . ar Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġcom . google . ar . core . Plane Ċ import Ġcom . google . ar . core . Tracking State Ċ import Ġcom . google . ar . scene form . ux . Ar Fragment Ċ import Ġcom . mag icle ap . magic script . plane . AR Plane Detector Bridge Ċ Ċ class ĠCustom Ar Fragment Ġ: ĠAr Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġon Ready Called Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġlast Timestamp : ĠLong Ġ= Ġ 0 L ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġval Ġar Resources Manager Ġ= ĠAr Resources Manager . INSTANCE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠRuntimeException (" Ar Resources Manager Ġnot Ġinitialized ") ĊĊĠĠĠĠĠĠĠ Ġar Resources Manager . setup Scene ( ar Scene View . scene ) ĊĊĠĠĠĠĠĠĠ Ġar Scene View . scene . camera . far Clip Plane Ġ= ĠFAR _ CLIP _ PL ANE ĊĊĠĠĠĠĠĠĠ Ġar Scene View . scene . add On Update Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġar Scene View . ar Frame ?. camera ?. let Ġ{ Ġcamera Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! on Ready Called Ġ&& Ġcamera . tracking State Ġ== ĠTracking State . TRACK ING ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġcan Ġadd ĠAR Ġobjects Ġafter Ġsession Ġis Ġready Ġand Ġcamera Ġis Ġin Ġtracking Ġmode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġar Scene View . session ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġar Resources Manager . setup Session ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġar Resources Manager . setup Transformation System ( transformation System ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġar Resources Manager . on Ar Core Loaded () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Ready Called Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġar Resources Manager . on Camera Updated ( camera . pose , Ġcamera . tracking State ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( on Ready Called Ġ&& ĠAR Plane Detector Bridge . INSTANCE . is Detect ing ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Frame Ġ= Ġar Scene View . session ?. update () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Frame Ġ!= Ġnull Ġ&& Ġnew Frame . timestamp Ġ!= Ġlast Timestamp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Timestamp Ġ= Ġnew Frame . timestamp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAR Plane Detector Bridge . INSTANCE . on Plane Update ( new Frame . get Updated Track ables ( Plane :: class . java ). toList ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset On Tap Ar Plane Listener Ġ{ Ġhit Result , Ġplane , Ġmotion Event Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAR Plane Detector Bridge . INSTANCE . on Plane T apped ( plane , Ġhit Result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġar Resources Manager . on Plane T apped ( hit Result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠHide Ġthe Ġinstructions ĊĠĠĠĠĠĠĠ Ġplane Discovery Controller . hide () ĊĠĠĠĠĠĠĠ Ġplane Discovery Controller . set Instruction View ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOver ridden Ġto Ġdo Ġnothing , Ġbecause Ġthe Ġdefault Ġimplementation Ġof ĠBase Ar Fragment ĊĠĠĠĠ Ġ* Ġchanges Ġthe Ġapp Ġmode Ġto Ġfull Ġscreen Ġcausing Ġartifacts Ġe . g . Ġwhen Ġdisplaying ĊĠĠĠĠ Ġ* Ġoverlay Ġview Ġon Ġtop Ġof ĠAr View Ġin ĠReact ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Window Focus Changed ( has Focus : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġno - up ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ ĠAr Resources Manager . INSTANCE ?. clear Ar References () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFAR _ CLIP _ PL ANE Ġ= Ġ 1 5 f Ġ// Ġin Ġmeters ĊĠĠĠ Ġ} Ċ }