commit 643844c983ad2d80df45a09c85f79973b8c7cfa2
Author: leszek <leszek@koltunski.pl>
Date:   Mon Apr 3 23:16:05 2017 +0100

    Improve Around the World.

diff --git a/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldActivity.java b/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldActivity.java
index 918e417..6e8999d 100644
--- a/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldActivity.java
+++ b/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldActivity.java
@@ -32,9 +32,9 @@ public class AroundTheWorldActivity extends Activity
 ///////////////////////////////////////////////////////////////////////////////////////////////////
     
     @Override
-    protected void onCreate(Bundle icicle) 
+    protected void onCreate(Bundle savedState)
       {
-      super.onCreate(icicle);
+      super.onCreate(savedState);
       setContentView(R.layout.aroundtheworldlayout);
 
       AroundTheWorldSurfaceView       view = (AroundTheWorldSurfaceView)       this.findViewById(R.id.aroundTheWorldSurfaceView);
@@ -42,8 +42,11 @@ public class AroundTheWorldActivity extends Activity
       AroundTheWorldEffectsManager    mana = view.getManager();
       AroundTheWorldRendererPicker    renp = pick.getRenderer();
 
-      renp.move(0,0);
-      mana.setRace(0.33f,0.33f);
+      if( savedState==null )
+        {
+        renp.move(0, 0);
+        mana.setRace(0.33f, 0.33f);
+        }
 
       pick.setEffectsManager(mana);
       }
@@ -78,4 +81,33 @@ public class AroundTheWorldActivity extends Activity
       Distorted.onDestroy();  
       super.onDestroy();
       }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+    @Override
+    public void onSaveInstanceState(Bundle savedInstanceState)
+      {
+      super.onSaveInstanceState(savedInstanceState);
+
+      AroundTheWorldSurfaceViewPicker pick = (AroundTheWorldSurfaceViewPicker) this.findViewById(R.id.aroundTheWorldSurfaceViewPicker);
+
+      savedInstanceState.putFloat("x", pick.getx() );
+      savedInstanceState.putFloat("y", pick.gety() );
+      }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+    @Override
+    public void onRestoreInstanceState(Bundle savedInstanceState)
+      {
+      super.onRestoreInstanceState(savedInstanceState);
+
+      AroundTheWorldSurfaceViewPicker pick = (AroundTheWorldSurfaceViewPicker) this.findViewById(R.id.aroundTheWorldSurfaceViewPicker);
+
+      float x = savedInstanceState.getFloat("x");
+      float y = savedInstanceState.getFloat("y");
+
+      pick.set(x,y);
+      }
+
 }
diff --git a/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldSurfaceViewPicker.java b/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldSurfaceViewPicker.java
index 0d89e57..7a72aa9 100644
--- a/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldSurfaceViewPicker.java
+++ b/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldSurfaceViewPicker.java
@@ -33,6 +33,8 @@ class AroundTheWorldSurfaceViewPicker extends GLSurfaceView
     private AroundTheWorldRendererPicker mRenderer;
     private AroundTheWorldEffectsManager mManager;
 
+    private float mX, mY;
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
     public AroundTheWorldSurfaceViewPicker(Context context, AttributeSet attrs)
@@ -66,6 +68,36 @@ class AroundTheWorldSurfaceViewPicker extends GLSurfaceView
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
+    float getx()
+      {
+      return mX;
+      }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+    float gety()
+      {
+      return mY;
+      }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+    void set(float x, float y)
+      {
+      mX = x;
+      mY = y;
+
+      mRenderer.move(mX,mY);
+
+      float distance_from_left =(mX+0.865f)/(3*0.865f);
+      float distance_from_top  =0.333f*(1-mY)-0.192f*mX;
+
+      mManager.setRace( distance_from_top, distance_from_left );
+      }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+
     @Override public boolean onTouchEvent(MotionEvent event)
       {
       int x = (int)event.getX();
@@ -74,34 +106,29 @@ class AroundTheWorldSurfaceViewPicker extends GLSurfaceView
       int h = mRenderer.getHeight();
       int w = mRenderer.getWidth();
 
-      float xf = (x-w/2)*3.0f/h;
-      float yf =-(y-h/2)*3.0f/h;
+      mX = (x-w/2)*3.0f/h;
+      mY =-(y-h/2)*3.0f/h;
 
-      if( yf>-1.5f && yf<1.5f )
+      if( mY>-1.5f && mY<1.5f )
         {
-        if( yf>=0 && yf> 1-0.577f*xf )
+        if( mY>=0 && mY> 1-0.577f*mX )
           {
-          float d = 0.577f*xf + yf;
-          yf /= d;
-          xf /= d;
+          float d = 0.577f*mX + mY;
+          mY /= d;
+          mX /= d;
           }
-        else if( yf<=0 && yf< 0.577f*xf-1 )
+        else if( mY<=0 && mY< 0.577f*mX-1 )
           {
-          float d = 0.577f*xf - yf;
-          yf /= d;
-          xf /= d;
+          float d = 0.577f*mX - mY;
+          mY /= d;
+          mX /= d;
           }
-        else if( xf< -0.865f )
+        else if( mX< -0.865f )
           {
-          xf  =  -0.865f;
+          mX  =  -0.865f;
           }
 
-        mRenderer.move(xf,yf);
-
-        float distance_from_left =(xf+0.865f)/(3*0.865f);
-        float distance_from_top  =0.333f*(1-yf)-0.192f*xf;
-
-        mManager.setRace( distance_from_top, distance_from_left );
+        set(mX,mY);
         }
 
       return true;
