From 8d57c78704797dff5df2df2b10a08dec885fe489 Mon Sep 17 00:00:00 2001 From: Marco Nelissen Date: Wed, 19 Jan 2011 09:19:39 -0800 Subject: Fix horizontal and vertical panning. Change-Id: I5177f3f3424233371136bdcbf358ce7056ea055d --- src/com/android/magicsmoke/MagicSmokeRS.java | 5 ++++- src/com/android/magicsmoke/RenderScriptScene.java | 2 +- src/com/android/magicsmoke/RenderScriptWallpaper.java | 2 +- src/com/android/magicsmoke/clouds.rs | 15 ++++++++++----- 4 files changed, 16 insertions(+), 8 deletions(-) (limited to 'src/com/android') diff --git a/src/com/android/magicsmoke/MagicSmokeRS.java b/src/com/android/magicsmoke/MagicSmokeRS.java index 6b0e8ff..201aacd 100644 --- a/src/com/android/magicsmoke/MagicSmokeRS.java +++ b/src/com/android/magicsmoke/MagicSmokeRS.java @@ -44,6 +44,7 @@ class MagicSmokeRS extends RenderScriptScene implements OnSharedPreferenceChange static class WorldState { public float mXOffset; + public float mYOffset; public int mPreset; public int mTextureMask; public int mRotate; @@ -226,10 +227,12 @@ class MagicSmokeRS extends RenderScriptScene implements OnSharedPreferenceChange }*/ @Override - public void setOffset(float xOffset, float yOffset, int xPixels, int yPixels) { + public void setOffset(float xOffset, float yOffset, float xStep, float yStep, int xPixels, int yPixels) { // update our state, then push it to the renderscript mWorldState.mXOffset = xOffset; + mWorldState.mYOffset = yOffset; mScript.set_gXOffset(mWorldState.mXOffset); + mScript.set_gYOffset(mWorldState.mYOffset); } @Override diff --git a/src/com/android/magicsmoke/RenderScriptScene.java b/src/com/android/magicsmoke/RenderScriptScene.java index 9f3859e..fdf4935 100644 --- a/src/com/android/magicsmoke/RenderScriptScene.java +++ b/src/com/android/magicsmoke/RenderScriptScene.java @@ -83,7 +83,7 @@ public abstract class RenderScriptScene { } @SuppressWarnings({"UnusedDeclaration"}) - public void setOffset(float xOffset, float yOffset, int xPixels, int yPixels) { + public void setOffset(float xOffset, float yOffset, float xStep, float yStep, int xPixels, int yPixels) { } @SuppressWarnings({"UnusedDeclaration"}) diff --git a/src/com/android/magicsmoke/RenderScriptWallpaper.java b/src/com/android/magicsmoke/RenderScriptWallpaper.java index 28c68af..c9bbdd9 100644 --- a/src/com/android/magicsmoke/RenderScriptWallpaper.java +++ b/src/com/android/magicsmoke/RenderScriptWallpaper.java @@ -93,7 +93,7 @@ public abstract class RenderScriptWallpaper extends @Override public void onOffsetsChanged(float xOffset, float yOffset, float xStep, float yStep, int xPixels, int yPixels) { - mRenderer.setOffset(xOffset, yOffset, xPixels, yPixels); + mRenderer.setOffset(xOffset, yOffset, xStep, yStep, xPixels, yPixels); } @Override diff --git a/src/com/android/magicsmoke/clouds.rs b/src/com/android/magicsmoke/clouds.rs index cc81e57..b0d55bf 100644 --- a/src/com/android/magicsmoke/clouds.rs +++ b/src/com/android/magicsmoke/clouds.rs @@ -31,6 +31,7 @@ // State set from java float gXOffset; +float gYOffset; int gPreset; int gTextureMask; int gRotate; @@ -48,6 +49,7 @@ typedef struct VertexShaderConstants_s { float4 layer2; float4 layer3; float4 layer4; + float2 panoffset; } VertexShaderConstants; VertexShaderConstants *gVSConstants; @@ -136,11 +138,11 @@ static void update() rotate(gVSConstants->layer3, rotation[3]); rotate(gVSConstants->layer4, rotation[4]); - gVSConstants->layer0.w = -gXOffset * 0 + xshift[0]; - gVSConstants->layer1.w = -gXOffset * 8 + xshift[1]; - gVSConstants->layer2.w = -gXOffset * 16 + xshift[2]; - gVSConstants->layer3.w = -gXOffset * 24 + xshift[3]; - gVSConstants->layer4.w = -gXOffset * 32 + xshift[4]; + gVSConstants->layer0.w = xshift[0]; + gVSConstants->layer1.w = xshift[1]; + gVSConstants->layer2.w = xshift[2]; + gVSConstants->layer3.w = xshift[3]; + gVSConstants->layer4.w = xshift[4]; float m = 0.35f; gVSConstants->layer0.z = m * scale[0]; @@ -149,6 +151,9 @@ static void update() gVSConstants->layer3.z = m * scale[3]; gVSConstants->layer4.z = m * scale[4]; + gVSConstants->panoffset.x = gXOffset; + gVSConstants->panoffset.y = -gYOffset; + gFSConstants->clearColor = clearColor; int pos = 0; -- cgit v1.2.3