effects.lua 941 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. Effects = class()
  2. function Effects:init()
  3. self.active = love.graphics.isSupported('shader')
  4. self.effects = {}
  5. end
  6. function Effects:update()
  7. if not self.active then return end
  8. for i = 1, #self.effects do f.exe(self.effects[i].update, self.effects[i]) end
  9. end
  10. function Effects:resize()
  11. if not self.active then return end
  12. for i = 1, #self.effects do f.exe(self.effects[i].resize, self.effects[i]) end
  13. end
  14. function Effects:add(kind)
  15. if not self.active then return end
  16. local effect = new(kind)
  17. f.exe(effect.activate, effect)
  18. table.insert(self.effects, effect)
  19. self.effects[kind] = effect
  20. ctx.view:register(effect, 'effect')
  21. end
  22. function Effects:remove(code)
  23. self.effects[code] = nil
  24. for i = #self.effects, 1, -1 do
  25. if self.effects[i].code == code then
  26. ctx.view:unregister(self.effects[i])
  27. table.remove(self.effects, i)
  28. end
  29. end
  30. end
  31. function Effects:get(code)
  32. return self.effects[code]
  33. end