diff --git a/engine/parallax.go b/engine/parallax.go index df58728..7eca0f5 100644 --- a/engine/parallax.go +++ b/engine/parallax.go @@ -17,16 +17,17 @@ func init() { gob.Register(&Parallax{}) } -// Parallax is a container that changes its transform based on the position of a +// Parallax is a container that translates based on the position of a // camera, intended to produce a "parallax" like effect. type Parallax struct { CameraID string - Factor float64 // how much to change in response to the camera + Factor float64 // how much to translate in response to the camera Child interface{} camera *Camera } +// Prepare obtains a reference to the camera. func (p *Parallax) Prepare(game *Game) error { c, ok := game.Component(p.CameraID).(*Camera) if !ok { @@ -36,8 +37,10 @@ func (p *Parallax) Prepare(game *Game) error { return nil } +// Scan returns the child component. func (p *Parallax) Scan() []interface{} { return []interface{}{p.Child} } +// Transform returns a GeoM translation of Factor * camera.Centre. func (p *Parallax) Transform() (opts ebiten.DrawImageOptions) { x, y := float2(p.camera.Centre) opts.GeoM.Translate(x*p.Factor, y*p.Factor)