comments
This commit is contained in:
parent
2b5987a95e
commit
228f8b9b9a
1 changed files with 5 additions and 2 deletions
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue