Loading libs/rs/java/Fountain/res/raw/fountain.rs +7 −7 Original line number Original line Diff line number Diff line Loading @@ -8,7 +8,6 @@ #include "../../../../scriptc/rs_graphics.rsh" #include "../../../../scriptc/rs_graphics.rsh" static int newPart = 0; static int newPart = 0; static float4 partColor; rs_mesh partMesh; rs_mesh partMesh; typedef struct __attribute__((packed, aligned(4))) Point { typedef struct __attribute__((packed, aligned(4))) Point { Loading Loading @@ -40,16 +39,17 @@ int root() { return 1; return 1; } } void addParticles(int rate, float x, float y, bool newColor) static float4 partColor[10]; void addParticles(int rate, float x, float y, int index, bool newColor) { { if (newColor) { if (newColor) { partColor.x = rsRand(0.5f, 1.0f); partColor[index].x = rsRand(0.5f, 1.0f); partColor.y = rsRand(1.0f); partColor[index].y = rsRand(1.0f); partColor.z = rsRand(1.0f); partColor[index].z = rsRand(1.0f); } } float rMax = ((float)rate) * 0.005f; float rMax = ((float)rate) * 0.02f; int size = rsAllocationGetDimX(rsGetAllocation(point)); int size = rsAllocationGetDimX(rsGetAllocation(point)); uchar4 c = rsPackColorTo8888(partColor); uchar4 c = rsPackColorTo8888(partColor[index]); Point_t * np = &point[newPart]; Point_t * np = &point[newPart]; float2 p = {x, y}; float2 p = {x, y}; Loading libs/rs/java/Fountain/res/raw/fountain_bc.bc +76 B (2.93 KiB) File changed.No diff preview for this file type. View original file View changed file libs/rs/java/Fountain/src/com/android/fountain/FountainRS.java +12 −5 Original line number Original line Diff line number Diff line Loading @@ -48,13 +48,20 @@ public class FountainRS { mRS.contextBindRootScript(mScript); mRS.contextBindRootScript(mScript); } } boolean holdingColor = false; boolean holdingColor[] = new boolean[10]; public void newTouchPosition(int x, int y, int rate) { public void newTouchPosition(float x, float y, float pressure, int id) { if (id > holdingColor.length) { return; } int rate = (int)(pressure * pressure * 500.f); if(rate > 500) { rate = 500; } if (rate > 0) { if (rate > 0) { mScript.invoke_addParticles(rate, x, y, !holdingColor); mScript.invoke_addParticles(rate, x, y, id, !holdingColor[id]); holdingColor = true; holdingColor[id] = true; } else { } else { holdingColor = false; holdingColor[id] = false; } } } } Loading libs/rs/java/Fountain/src/com/android/fountain/FountainView.java +18 −6 Original line number Original line Diff line number Diff line Loading @@ -73,15 +73,27 @@ public class FountainView extends RSSurfaceView { { { int act = ev.getAction(); int act = ev.getAction(); if (act == ev.ACTION_UP) { if (act == ev.ACTION_UP) { mRender.newTouchPosition(0, 0, 0); mRender.newTouchPosition(0, 0, 0, 0); return false; return false; } } float rate = (ev.getPressure() * 50.f); rate *= rate; int count = ev.getHistorySize(); if(rate > 2000.f) { int pcount = ev.getPointerCount(); rate = 2000.f; for (int p=0; p < pcount; p++) { int id = ev.getPointerId(p); mRender.newTouchPosition(ev.getX(p), ev.getY(p), ev.getPressure(p), id); for (int i=0; i < count; i++) { mRender.newTouchPosition(ev.getHistoricalX(p, i), ev.getHistoricalY(p, i), ev.getHistoricalPressure(p, i), id); } } } mRender.newTouchPosition((int)ev.getX(), (int)ev.getY(), (int)rate); return true; return true; } } } } Loading libs/rs/java/Fountain/src/com/android/fountain/ScriptC_Fountain.java +3 −2 Original line number Original line Diff line number Diff line Loading @@ -50,11 +50,12 @@ public class ScriptC_Fountain extends ScriptC { } } private final static int mExportFuncIdx_addParticles = 0; private final static int mExportFuncIdx_addParticles = 0; public void invoke_addParticles(int rate, float x, float y, boolean newColor) { public void invoke_addParticles(int rate, float x, float y, int index, boolean newColor) { FieldPacker addParticles_fp = new FieldPacker(16); FieldPacker addParticles_fp = new FieldPacker(20); addParticles_fp.addI32(rate); addParticles_fp.addI32(rate); addParticles_fp.addF32(x); addParticles_fp.addF32(x); addParticles_fp.addF32(y); addParticles_fp.addF32(y); addParticles_fp.addI32(index); addParticles_fp.addBoolean(newColor); addParticles_fp.addBoolean(newColor); addParticles_fp.skip(3); addParticles_fp.skip(3); invoke(mExportFuncIdx_addParticles, addParticles_fp); invoke(mExportFuncIdx_addParticles, addParticles_fp); Loading Loading
libs/rs/java/Fountain/res/raw/fountain.rs +7 −7 Original line number Original line Diff line number Diff line Loading @@ -8,7 +8,6 @@ #include "../../../../scriptc/rs_graphics.rsh" #include "../../../../scriptc/rs_graphics.rsh" static int newPart = 0; static int newPart = 0; static float4 partColor; rs_mesh partMesh; rs_mesh partMesh; typedef struct __attribute__((packed, aligned(4))) Point { typedef struct __attribute__((packed, aligned(4))) Point { Loading Loading @@ -40,16 +39,17 @@ int root() { return 1; return 1; } } void addParticles(int rate, float x, float y, bool newColor) static float4 partColor[10]; void addParticles(int rate, float x, float y, int index, bool newColor) { { if (newColor) { if (newColor) { partColor.x = rsRand(0.5f, 1.0f); partColor[index].x = rsRand(0.5f, 1.0f); partColor.y = rsRand(1.0f); partColor[index].y = rsRand(1.0f); partColor.z = rsRand(1.0f); partColor[index].z = rsRand(1.0f); } } float rMax = ((float)rate) * 0.005f; float rMax = ((float)rate) * 0.02f; int size = rsAllocationGetDimX(rsGetAllocation(point)); int size = rsAllocationGetDimX(rsGetAllocation(point)); uchar4 c = rsPackColorTo8888(partColor); uchar4 c = rsPackColorTo8888(partColor[index]); Point_t * np = &point[newPart]; Point_t * np = &point[newPart]; float2 p = {x, y}; float2 p = {x, y}; Loading
libs/rs/java/Fountain/res/raw/fountain_bc.bc +76 B (2.93 KiB) File changed.No diff preview for this file type. View original file View changed file
libs/rs/java/Fountain/src/com/android/fountain/FountainRS.java +12 −5 Original line number Original line Diff line number Diff line Loading @@ -48,13 +48,20 @@ public class FountainRS { mRS.contextBindRootScript(mScript); mRS.contextBindRootScript(mScript); } } boolean holdingColor = false; boolean holdingColor[] = new boolean[10]; public void newTouchPosition(int x, int y, int rate) { public void newTouchPosition(float x, float y, float pressure, int id) { if (id > holdingColor.length) { return; } int rate = (int)(pressure * pressure * 500.f); if(rate > 500) { rate = 500; } if (rate > 0) { if (rate > 0) { mScript.invoke_addParticles(rate, x, y, !holdingColor); mScript.invoke_addParticles(rate, x, y, id, !holdingColor[id]); holdingColor = true; holdingColor[id] = true; } else { } else { holdingColor = false; holdingColor[id] = false; } } } } Loading
libs/rs/java/Fountain/src/com/android/fountain/FountainView.java +18 −6 Original line number Original line Diff line number Diff line Loading @@ -73,15 +73,27 @@ public class FountainView extends RSSurfaceView { { { int act = ev.getAction(); int act = ev.getAction(); if (act == ev.ACTION_UP) { if (act == ev.ACTION_UP) { mRender.newTouchPosition(0, 0, 0); mRender.newTouchPosition(0, 0, 0, 0); return false; return false; } } float rate = (ev.getPressure() * 50.f); rate *= rate; int count = ev.getHistorySize(); if(rate > 2000.f) { int pcount = ev.getPointerCount(); rate = 2000.f; for (int p=0; p < pcount; p++) { int id = ev.getPointerId(p); mRender.newTouchPosition(ev.getX(p), ev.getY(p), ev.getPressure(p), id); for (int i=0; i < count; i++) { mRender.newTouchPosition(ev.getHistoricalX(p, i), ev.getHistoricalY(p, i), ev.getHistoricalPressure(p, i), id); } } } mRender.newTouchPosition((int)ev.getX(), (int)ev.getY(), (int)rate); return true; return true; } } } } Loading
libs/rs/java/Fountain/src/com/android/fountain/ScriptC_Fountain.java +3 −2 Original line number Original line Diff line number Diff line Loading @@ -50,11 +50,12 @@ public class ScriptC_Fountain extends ScriptC { } } private final static int mExportFuncIdx_addParticles = 0; private final static int mExportFuncIdx_addParticles = 0; public void invoke_addParticles(int rate, float x, float y, boolean newColor) { public void invoke_addParticles(int rate, float x, float y, int index, boolean newColor) { FieldPacker addParticles_fp = new FieldPacker(16); FieldPacker addParticles_fp = new FieldPacker(20); addParticles_fp.addI32(rate); addParticles_fp.addI32(rate); addParticles_fp.addF32(x); addParticles_fp.addF32(x); addParticles_fp.addF32(y); addParticles_fp.addF32(y); addParticles_fp.addI32(index); addParticles_fp.addBoolean(newColor); addParticles_fp.addBoolean(newColor); addParticles_fp.skip(3); addParticles_fp.skip(3); invoke(mExportFuncIdx_addParticles, addParticles_fp); invoke(mExportFuncIdx_addParticles, addParticles_fp); Loading