1cb93a386Sopenharmony_ci{ 2cb93a386Sopenharmony_ci "MaxCount": 2000, 3cb93a386Sopenharmony_ci "Drawable": { 4cb93a386Sopenharmony_ci "Type": "SkCircleDrawable", 5cb93a386Sopenharmony_ci "Radius": 4 6cb93a386Sopenharmony_ci }, 7cb93a386Sopenharmony_ci "Code": [ 8cb93a386Sopenharmony_ci "void effectSpawn(inout Effect effect) {", 9cb93a386Sopenharmony_ci " effect.lifetime = 2;", 10cb93a386Sopenharmony_ci " effect.rate = 200;", 11cb93a386Sopenharmony_ci "}", 12cb93a386Sopenharmony_ci "", 13cb93a386Sopenharmony_ci "void spawn(inout Particle p) {", 14cb93a386Sopenharmony_ci " p.lifetime = 10;", 15cb93a386Sopenharmony_ci "}", 16cb93a386Sopenharmony_ci "", 17cb93a386Sopenharmony_ci "float4x4 rx(float rad) {", 18cb93a386Sopenharmony_ci " float c = cos(rad);", 19cb93a386Sopenharmony_ci " float s = sin(rad);", 20cb93a386Sopenharmony_ci " return float4x4(1, 0, 0, 0,", 21cb93a386Sopenharmony_ci " 0, c, -s, 0,", 22cb93a386Sopenharmony_ci " 0, s, c, 0,", 23cb93a386Sopenharmony_ci " 0, 0, 0, 1);", 24cb93a386Sopenharmony_ci "}", 25cb93a386Sopenharmony_ci "", 26cb93a386Sopenharmony_ci "float4x4 ry(float rad) {", 27cb93a386Sopenharmony_ci " float c = cos(rad);", 28cb93a386Sopenharmony_ci " float s = sin(rad);", 29cb93a386Sopenharmony_ci " return float4x4(c, 0, -s, 0,", 30cb93a386Sopenharmony_ci " 0, 1, 0, 0,", 31cb93a386Sopenharmony_ci " s, 0, c, 0,", 32cb93a386Sopenharmony_ci " 0, 0, 0, 1);", 33cb93a386Sopenharmony_ci "}", 34cb93a386Sopenharmony_ci "", 35cb93a386Sopenharmony_ci "float4x4 rz(float rad) {", 36cb93a386Sopenharmony_ci " float c = cos(rad);", 37cb93a386Sopenharmony_ci " float s = sin(rad);", 38cb93a386Sopenharmony_ci " return float4x4( c, s, 0, 0,", 39cb93a386Sopenharmony_ci " -s, c, 0, 0,", 40cb93a386Sopenharmony_ci " 0, 0, 1, 0,", 41cb93a386Sopenharmony_ci " 0, 0, 0, 1);", 42cb93a386Sopenharmony_ci "}", 43cb93a386Sopenharmony_ci "", 44cb93a386Sopenharmony_ci "void update(inout Particle p) {", 45cb93a386Sopenharmony_ci " float3 pos = float3(rand(p.seed), rand(p.seed), rand(p.seed));", 46cb93a386Sopenharmony_ci " if (rand(p.seed) < 0.33) {", 47cb93a386Sopenharmony_ci " if (pos.x > 0.5) {", 48cb93a386Sopenharmony_ci " pos.x = 1;", 49cb93a386Sopenharmony_ci " p.color.rgb = float3(1, 0.2, 0.2);", 50cb93a386Sopenharmony_ci " } else {", 51cb93a386Sopenharmony_ci " pos.x = 0;", 52cb93a386Sopenharmony_ci " p.color.rgb = float3(0.2, 1, 1);", 53cb93a386Sopenharmony_ci " }", 54cb93a386Sopenharmony_ci " } else if (rand(p.seed) < 0.5) {", 55cb93a386Sopenharmony_ci " if (pos.y > 0.5) {", 56cb93a386Sopenharmony_ci " pos.y = 1;", 57cb93a386Sopenharmony_ci " p.color.rgb = float3(0.2, 0.2, 1);", 58cb93a386Sopenharmony_ci " } else {", 59cb93a386Sopenharmony_ci " pos.y = 0;", 60cb93a386Sopenharmony_ci " p.color.rgb = float3(1, 1, 0.2);", 61cb93a386Sopenharmony_ci " }", 62cb93a386Sopenharmony_ci " } else {", 63cb93a386Sopenharmony_ci " if (pos.z > 0.5) {", 64cb93a386Sopenharmony_ci " pos.z = 1;", 65cb93a386Sopenharmony_ci " p.color.rgb = float3(0.2, 1, 0.2);", 66cb93a386Sopenharmony_ci " } else {", 67cb93a386Sopenharmony_ci " pos.z = 0;", 68cb93a386Sopenharmony_ci " p.color.rgb = float3(1, 0.2, 1);", 69cb93a386Sopenharmony_ci " }", 70cb93a386Sopenharmony_ci " }", 71cb93a386Sopenharmony_ci "", 72cb93a386Sopenharmony_ci " float s = effect.age * 2 - 1;", 73cb93a386Sopenharmony_ci " s = s < 0 ? -s : s;", 74cb93a386Sopenharmony_ci "", 75cb93a386Sopenharmony_ci " pos = pos * 2 - 1;", 76cb93a386Sopenharmony_ci " pos = mix(pos, normalize(pos), s);", 77cb93a386Sopenharmony_ci " pos = pos * 100;", 78cb93a386Sopenharmony_ci "", 79cb93a386Sopenharmony_ci " float age = float(effect.loop) + effect.age;", 80cb93a386Sopenharmony_ci " float4x4 mat = rx(age * radians(60))", 81cb93a386Sopenharmony_ci " * ry(age * radians(70))", 82cb93a386Sopenharmony_ci " * rz(age * radians(80));", 83cb93a386Sopenharmony_ci " pos = (mat * float4(pos, 1)).xyz;", 84cb93a386Sopenharmony_ci "", 85cb93a386Sopenharmony_ci " p.pos.x = pos.x;", 86cb93a386Sopenharmony_ci " p.pos.y = pos.y;", 87cb93a386Sopenharmony_ci " p.scale = ((pos.z + 50) / 100 + 0.5) / 2;", 88cb93a386Sopenharmony_ci "}", 89cb93a386Sopenharmony_ci "" 90cb93a386Sopenharmony_ci ], 91cb93a386Sopenharmony_ci "Bindings": [] 92cb93a386Sopenharmony_ci}