/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 0 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 . replica . replic ais land Ċ Ċ // ĠSimple Ġcollision Ġdetection Ġcomponent Ġfor Ġobjects Ġnot Ġrequiring Ġcomplex Ġcollision Ġ( project iles , Ġetc ) Ċ class ĠSimple Collision Component Ġ: ĠGame Component () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġm Previous Position : ĠVector 2 ĊĠĠĠ Ġprivate Ġval ĠmCurrent Position : ĠVector 2 ĊĠĠĠ Ġprivate Ġval Ġm Movement Direction : ĠVector 2 ĊĠĠĠ Ġprivate Ġval Ġm Hit Point : ĠVector 2 ĊĠĠĠ Ġprivate Ġval Ġm Hit Normal : ĠVector 2 ĊĠĠĠ Ġoverride Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Previous Position . zero () ĊĠĠĠĠĠĠĠ ĠmCurrent Position . zero () ĊĠĠĠĠĠĠĠ Ġm Movement Direction . zero () ĊĠĠĠĠĠĠĠ Ġm Hit Point . zero () ĊĠĠĠĠĠĠĠ Ġm Hit Normal . zero () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate ( time Delta : ĠFloat , Ġparent : ĠBase Object ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparent Object Ġ= Ġparent Ġas ĠGameObject ĊĠĠĠĠĠĠĠ Ġif Ġ( m Previous Position . length 2 () Ġ> Ġ 0 . 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠmCurrent Position [ parent Object . centered Position X ] Ġ= Ġparent Object . centered Position Y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Movement Direction . set ( m Current Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Movement Direction . subtract ( m Previous Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Movement Direction . length 2 () Ġ> Ġ 0 . 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollision Ġ= Ġs System Registry . collision System ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( collision Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhit Ġ= Ġcollision . cast Ray ( m Previous Position , ĠmCurrent Position , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Movement Direction , Ġm Hit Point , Ġm Hit Normal , Ġparent Object ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsnap ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhalf Width Ġ= Ġparent Object . width Ġ/ Ġ 2 . 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhalf Height Ġ= Ġparent Object . height Ġ/ Ġ 2 . 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Utils . close ( m Hit Normal . x , Ġ 0 . 0 f )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Object . position . x Ġ= Ġm Hit Point . x Ġ- Ġhalf Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Utils . close ( m Hit Normal . y , Ġ 0 . 0 f )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Object . position . y Ġ= Ġm Hit Point . y Ġ- Ġhalf Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime System Ġ= Ġs System Registry . time System ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( time System Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġtime System . game Time ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Hit Normal . x Ġ> Ġ 0 . 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Object . last Tou ched Left Wall Time Ġ= Ġtime ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( m Hit Normal . x Ġ< Ġ 0 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Object . last Tou ched Right Wall Time Ġ= Ġtime ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Hit Normal . y Ġ> Ġ 0 . 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Object . last Tou ched Floor Time Ġ= Ġtime ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( m Hit Normal . y Ġ< Ġ 0 . 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Object . last Tou ched Ce iling Time Ġ= Ġtime ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Object . background Collision Normal Ġ= Ġm Hit Normal ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Previous Position [ parent Object . centered Position X ] Ġ= Ġparent Object . centered Position Y ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġset Phase To This ( Component Ph ases . COLL ISION _ DE TE CTION . ordinal ) ĊĠĠĠĠĠĠĠ Ġm Previous Position Ġ= ĠVector 2 () ĊĠĠĠĠĠĠĠ ĠmCurrent Position Ġ= ĠVector 2 () ĊĠĠĠĠĠĠĠ Ġm Movement Direction Ġ= ĠVector 2 () ĊĠĠĠĠĠĠĠ Ġm Hit Point Ġ= ĠVector 2 () ĊĠĠĠĠĠĠĠ Ġm Hit Normal Ġ= ĠVector 2 () ĊĠĠĠ Ġ} Ċ }