summaryrefslogtreecommitdiffstats
path: root/res/raw
diff options
context:
space:
mode:
authorJason Sams <rjsams@android.com>2009-10-19 14:45:45 -0700
committerJason Sams <rjsams@android.com>2009-10-19 14:45:45 -0700
commitc1c521edf4fbb7048a4fba601d13a765e073e402 (patch)
treeaab2f51cbe19aea2e7e12cd255378340188c78ab /res/raw
parent37e7c2b6e4ee280b9cad39e53d9206ca7a46c510 (diff)
downloadandroid_packages_apps_Trebuchet-c1c521edf4fbb7048a4fba601d13a765e073e402.tar.gz
android_packages_apps_Trebuchet-c1c521edf4fbb7048a4fba601d13a765e073e402.tar.bz2
android_packages_apps_Trebuchet-c1c521edf4fbb7048a4fba601d13a765e073e402.zip
Add support for MoveTo.
Diffstat (limited to 'res/raw')
-rw-r--r--res/raw/rollo3.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/res/raw/rollo3.c b/res/raw/rollo3.c
index bb0237376..253709a44 100644
--- a/res/raw/rollo3.c
+++ b/res/raw/rollo3.c
@@ -22,6 +22,10 @@ float g_Zoom;
float g_OldPosPage;
float g_OldPosVelocity;
float g_OldZoom;
+float g_MoveToTotalTime;
+float g_MoveToTime;
+float g_MoveToOldPos;
+
// Drawing constants, should be parameters ======
#define VIEW_ANGLE 1.28700222f
@@ -79,6 +83,9 @@ void init() {
g_LastPositionX = 0;
g_Zoom = 0;
g_SpecialHWWar = 1;
+ g_MoveToTime = 0;
+ g_MoveToOldPos = 0;
+ g_MoveToTotalTime = 0.5f;
}
void resetHWWar() {
@@ -97,9 +104,16 @@ void move() {
}
g_LastTouchDown = state->newTouchDown;
g_LastPositionX = state->newPositionX;
+ g_MoveToTime = 0;
//debugF("Move P", g_PosPage);
}
+void moveTo() {
+ g_MoveToTime = g_MoveToTotalTime;
+ g_PosVelocity = 0;
+ g_MoveToOldPos = g_PosPage;
+}
+
void fling() {
g_LastTouchDown = 0;
g_PosVelocity = -state->flingVelocity * 4;
@@ -145,6 +159,25 @@ void updatePos() {
tablePosFrac) * g_DT;
float friction = 4.f * g_DT;
+ if (g_MoveToTime) {
+ float a = 2.f * (state->targetPos - g_MoveToOldPos) /
+ (g_MoveToTotalTime * g_MoveToTotalTime);
+ if (g_MoveToTime > (g_MoveToTotalTime * 0.5f)) {
+ // slowing
+ g_PosPage = state->targetPos - 0.5f * a * (g_MoveToTime * g_MoveToTime);
+ } else {
+ // accelerating.
+ float t = g_MoveToTotalTime - g_MoveToTime;
+ g_PosPage = g_MoveToOldPos + 0.5f * a * (t * t);
+ }
+ g_MoveToTime -= g_DT;
+ if (g_MoveToTime <= 0) {
+ g_MoveToTime = 0;
+ g_PosPage = state->targetPos;
+ }
+ return;
+ }
+
if (g_PosPage < -0.5f) {
accel = g_AttractionTable[0] * g_DT;
outOfRange = 1;