Advertisement
lvs

Particle generator

lvs
Oct 15th, 2013
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.65 KB | None | 0 0
  1. -- In storyboard scene function
  2. -- group is self.view
  3.  
  4. -- Colorspace changing function
  5. local function HSVtoRGB(h, s, v)
  6.     local r,g,b
  7.     local i
  8.     local f,p,q,t
  9.     if s == 0 then
  10.         r  = v
  11.         g = v
  12.         b = v
  13.         return math.round(r * 255), math.round(g * 255), math.round(b * 255)
  14.     end
  15.     h =   h / 60;
  16.     i  = math.floor(h);
  17.     f = h - i;
  18.     p = v *  (1 - s);
  19.     q = v * (1 - s * f);
  20.     t = v * (1 - s * (1 - f));
  21.     if i == 0 then        
  22.         r = v
  23.         g = t
  24.         b = p
  25.     elseif i == 1 then
  26.         r = q
  27.         g = v
  28.         b = p
  29.     elseif i == 2 then
  30.         r = p
  31.         g = v
  32.         b = t
  33.     elseif i == 3 then
  34.         r = p
  35.         g = q
  36.         b = v
  37.     elseif i == 4 then
  38.         r = t
  39.         g = p
  40.         b = v
  41.     elseif i == 5 then
  42.         r = v
  43.         g = p
  44.         b = q
  45.     end
  46.     return math.round(r * 255), math.round(g * 255), math.round(b * 255)  
  47. end
  48.  
  49.  
  50. -- Particle generation
  51. local mRandom = math.random
  52. local function newExplosion(params)
  53.     local gr, x, y = params.g, params.x, params.y
  54.     local star, r, g, b
  55.     local s = 1
  56.     if params.big then
  57.         s = 4
  58.     end
  59.     for i = 1, mRandom(5 * s, 15 * s) do
  60.         star = display.newRect(gr, x - 8, y - 4, 8, 8)
  61.         r, g, b = HSVtoRGB(mRandom(1, 359), 1, 1)
  62.         star:setFillColor(r, g, b)
  63.         star.blendMode = 'add'
  64.         transition.to(star, {time = mRandom(100, 500), x = mRandom(-30 * s, 30 * s), y = mRandom(-50 * s, 50 * s), alpha = -1, delta = true, onComplete = function (target) display.remove(target) end})
  65.     end
  66. end
  67.  
  68. newExplosion{g = group, x = 160, y = 240}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement