1cb93a386Sopenharmony_ci{
2cb93a386Sopenharmony_ci   "MaxCount": 6000,
3cb93a386Sopenharmony_ci   "Drawable": {
4cb93a386Sopenharmony_ci      "Type": "SkCircleDrawable",
5cb93a386Sopenharmony_ci      "Radius": 2
6cb93a386Sopenharmony_ci   },
7cb93a386Sopenharmony_ci   "Code": [
8cb93a386Sopenharmony_ci      "void effectSpawn(inout Effect effect) {",
9cb93a386Sopenharmony_ci      "  effect.rate = 2000;",
10cb93a386Sopenharmony_ci      "}",
11cb93a386Sopenharmony_ci      "",
12cb93a386Sopenharmony_ci      "void effectUpdate(inout Effect effect) {",
13cb93a386Sopenharmony_ci      "}",
14cb93a386Sopenharmony_ci      "",
15cb93a386Sopenharmony_ci      "void spawn(inout Particle p) {",
16cb93a386Sopenharmony_ci      "  p.pos.y += sin(effect.age * 6.28) * 40;",
17cb93a386Sopenharmony_ci      "  p.lifetime = 2 + (rand(p.seed) * 2);",
18cb93a386Sopenharmony_ci      "  p.vel.x = (30 * rand(p.seed)) + 50;",
19cb93a386Sopenharmony_ci      "  p.vel.y = (20 * rand(p.seed)) - 10;",
20cb93a386Sopenharmony_ci      "}",
21cb93a386Sopenharmony_ci      "",
22cb93a386Sopenharmony_ci      "void update(inout Particle p) {",
23cb93a386Sopenharmony_ci      "  p.color.r = p.age;",
24cb93a386Sopenharmony_ci      "  p.color.g = 1 - p.age;",
25cb93a386Sopenharmony_ci      "  float s1 = 0.5 + (1.5 * p.age);",
26cb93a386Sopenharmony_ci      "  float s2 = 1.0 + (-0.75 * p.age);",
27cb93a386Sopenharmony_ci      "  p.scale = s1 + (s2 - s1) * rand(p.seed);",
28cb93a386Sopenharmony_ci      "  p.vel.y += 20.0 * dt;",
29cb93a386Sopenharmony_ci      "}",
30cb93a386Sopenharmony_ci      ""
31cb93a386Sopenharmony_ci   ],
32cb93a386Sopenharmony_ci   "Bindings": []
33cb93a386Sopenharmony_ci}