Guest User

Untitled

a guest
Jan 22nd, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "github.com/hajimehoshi/ebiten"
  5. "github.com/peterhellberg/gfx"
  6. )
  7.  
  8. var (
  9. w, h = 256, 256
  10. palette = gfx.PaletteEN4
  11. center = gfx.V(128, 128)
  12. pos = center
  13. p = gfx.Polygon{
  14. {-64, -64},
  15. {-32, -32},
  16. {-64, 64},
  17. {64, 64},
  18. {64, -64},
  19. }
  20. )
  21.  
  22. func main() {
  23. ebiten.SetFullscreen(true)
  24. ebiten.Run(run, w, h, 1, "Ebiten GFX Moving Polygon")
  25. }
  26.  
  27. func run(screen *ebiten.Image) error {
  28. if ebiten.IsKeyPressed(ebiten.KeyEscape) || ebiten.IsKeyPressed(ebiten.KeyQ) {
  29. return gfx.ErrDone
  30. }
  31.  
  32. if ebiten.IsDrawingSkipped() {
  33. return nil
  34. }
  35.  
  36. m := gfx.NewPaletted(w, h, palette, palette[3])
  37. d := float64(int(pos.X) % 360)
  38.  
  39. matrix := gfx.IM.Moved(pos)
  40.  
  41. tp := center
  42.  
  43. touches := ebiten.Touches()
  44.  
  45. switch {
  46. case len(touches) > 0:
  47. tp = gfx.IV(touches[0].Position())
  48. case ebiten.IsMouseButtonPressed(ebiten.MouseButtonLeft):
  49. tp = gfx.IV(ebiten.CursorPosition())
  50. }
  51.  
  52. pos = gfx.Lerp(pos, tp, 0.2)
  53.  
  54. gfx.DrawPolygon(m, p.Project(matrix), 0, palette[2])
  55. gfx.DrawPolygon(m, p.Project(matrix.Scaled(pos, 0.5).RotatedDegrees(pos, d)), 0, palette[1])
  56.  
  57. gfx.DrawFastFilledCircle(m, pos, 4, palette[0])
  58.  
  59. return screen.ReplacePixels(m.Pixels())
  60. }
Add Comment
Please, Sign In to add comment