/* Ċ Ġ* Ġ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 . clip Ċ Ċ import Ġcom . google . ar . scene form . rendering . Material Ċ import Ġcom . mag icle ap . magic script . scene . nodes . base . Transform Node Ċ import Ġcom . mag icle ap . magic script . scene . nodes . props . AABB Ċ import Ġcom . mag icle ap . magic script . scene . nodes . props . Bounding Ċ import Ġcom . mag icle ap . magic script . utils . Utils Ċ Ċ /** Ċ Ġ* ĠTexture Ġclip per Ġintended Ġto Ġuse Ġwith Ġnodes Ġcontaining Ġa Ġ 2 d Ġtext ured Ġobject Ġas Ġa Ġrender able Ċ Ġ*/ Ċ class ĠTexture Clip per Ġ: ĠClip per Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCLI P _ LEFT _ PARAM Ġ= Ġ" left " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCLI P _ RIGHT _ PARAM Ġ= Ġ" right " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCLI P _ TOP _ PARAM Ġ= Ġ" top " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCLI P _ BOTTOM _ PARAM Ġ= Ġ" bottom " ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠDefault Ġmaterial Ġclipping Ġmakes Ġall Ġthe Ġnode Ġvisible . ĊĠĠĠĠĠĠĠĠ Ġ* ĠOrigin Ġ( 0 , Ġ 0 ) Ġis Ġat Ġbottom - center . ĠValues Ġare Ġrelative Ġto Ġwidth Ġand Ġheight . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdefault Material Cli pping Ġ= ĠBounding (- 0 . 5 f , Ġ 0 . 0 f , Ġ 0 . 5 f , Ġ 1 . 0 f ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply Clip Bounds ( node : ĠTransform Node , Ġclip Bounds : ĠA ABB ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġnode . content Node . render able ?. material ?. let Ġ{ Ġmaterial Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmaterial Clip Ġ= Ġif Ġ( clip Bounds Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . calculate Material Cli pping ( node . get Bounding (), Ġclip Bounds ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Material Cli pping ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Material Cli pping ( material , Ġmaterial Clip ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSetting Ġtexture Ġclipping Ġat Ġa Ġshader Ġlevel Ġ( shader Ġis Ġcontained Ġinside Ġmaterial ĊĠĠĠĠ Ġ* Ġfile Ġfrom Ġwhich Ġandroid _ view . s fb Ġis Ġbuilt ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġhttps :// google . github . io / fil ament / Materials . md . html ĊĠĠĠĠ Ġ* ĠBy Ġdefault Ġget Position () Ġreturns ĠN DC Ġ- ĠNormal ized ĠDevice ĠCoordinates ; ĊĠĠĠĠ Ġ* Ġfor Ġ" vertex Domain " Ġ: Ġobject Ġit Ġmeans Ġthat Ġcoordinates Ġare Ġnormalized Ġrelative ĊĠĠĠĠ Ġ* Ġto Ġa Ġmodel Ġsize Ġ( 0 Ġ- Ġ 1 ), Ġorigin Ġ( 0 , Ġ 0 ) Ġis Ġat Ġbottom - center . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset Material Cli pping ( material : ĠMaterial , Ġmaterial Clip : ĠBounding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmaterial . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Float ( CLIP _ LEFT _ PARAM , Ġmaterial Clip . left ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Float ( CLIP _ RIGHT _ PARAM , Ġmaterial Clip . right ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Float ( CLIP _ TOP _ PARAM , Ġmaterial Clip . top ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Float ( CLIP _ BOTTOM _ PARAM , Ġmaterial Clip . bottom ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }