Project

General

Profile

« Previous | Next » 

Revision 5a4d4fba

Added by Leszek Koltunski almost 4 years ago

Convert the PostRender to a PreRender, called before we render.
This makes more sense as this way things are prepared for the very first render.

View differences:

src/main/java/org/distorted/main/RubikSurfaceView.java
64 64
    private final Static4D CAMERA_POINT = new Static4D(0, 0, (float)Math.sqrt(3)*0.5f, 0);
65 65

  
66 66
    private RubikRenderer mRenderer;
67
    private RubikPostRender mPostRender;
67
    private RubikPreRender mPreRender;
68 68
    private RubikObjectMovement mMovement;
69 69
    private boolean mDragging, mBeginningRotation, mContinuingRotation;
70 70
    private int mScreenWidth, mScreenHeight, mScreenMin;
......
108 108

  
109 109
///////////////////////////////////////////////////////////////////////////////////////////////////
110 110

  
111
    RubikPostRender getPostRender()
111
    RubikPreRender getPreRender()
112 112
      {
113
      return mPostRender;
113
      return mPreRender;
114 114
      }
115 115

  
116 116
///////////////////////////////////////////////////////////////////////////////////////////////////
......
200 200

  
201 201
          if( mode==MODE_ROTATE )
202 202
            {
203
            mBeginningRotation= mPostRender.canRotate();
203
            mBeginningRotation= mPreRender.canRotate();
204 204
            }
205 205
          else if( mode==MODE_REPLACE )
206 206
            {
......
212 212
              mLastCubitFace = mMovement.getTouchedFace();
213 213
              float[] point = mMovement.getTouchedPoint3D();
214 214
              int color = solver.getCurrentColor();
215
              RubikObject object = mPostRender.getObject();
215
              RubikObject object = mPreRender.getObject();
216 216
              mLastCubit = object.getCubit(point);
217
              mPostRender.setTextureMap( mLastCubit, mLastCubitFace, color );
217
              mPreRender.setTextureMap( mLastCubit, mLastCubitFace, color );
218 218
              mLastCubitColor = SolverMain.cubitIsLocked(object.getObjectList(), object.getSize(), mLastCubit);
219 219
              }
220 220
            }
......
327 327
        {
328 328
        mLastCubitColor = -1;
329 329

  
330
        mRenderer   = new RubikRenderer(this);
331
        mPostRender = new RubikPostRender(this);
330
        mRenderer  = new RubikRenderer(this);
331
        mPreRender = new RubikPreRender(this);
332 332

  
333 333
        final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
334 334
        final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
......
363 363
                                           Static4D rotatedTouchPoint2= rotateVectorByInvertedQuat(touchPoint2, mQuatAccumulated);
364 364

  
365 365
                                           Static2D res = mMovement.newRotation(rotatedTouchPoint2);
366
                                           RubikObject object = mPostRender.getObject();
366
                                           RubikObject object = mPreRender.getObject();
367 367

  
368 368
                                           mCurrentAxis = (int)res.get0();
369 369
                                           float offset = res.get1();
......
398 398
                                         {
399 399
                                         float angle = continueRotation(x-mStartRotX,y-mStartRotY);
400 400
                                         mCurrentAngle = SWIPING_SENSITIVITY*angle;
401
                                         mPostRender.getObject().continueRotation(mCurrentAngle);
401
                                         mPreRender.getObject().continueRotation(mCurrentAngle);
402 402
                                         }
403 403
                                       else if( mDragging )
404 404
                                         {
405 405
                                         mTempCurrent.set(quatFromDrag(mX-x,y-mY));
406
                                         mPostRender.setQuatCurrentOnNextRender();
406
                                         mPreRender.setQuatCurrentOnNextRender();
407 407

  
408 408
                                         if( (mX-x)*(mX-x) + (mY-y)*(mY-y) > 1.0f/(DIRECTION_SENSITIVITY*DIRECTION_SENSITIVITY) )
409 409
                                           {
......
411 411
                                           mY = y;
412 412
                                           mTempAccumulated.set(quatMultiply(mQuatCurrent, mQuatAccumulated));
413 413
                                           mTempCurrent.set(0f, 0f, 0f, 1f);
414
                                           mPostRender.setQuatCurrentOnNextRender();
415
                                           mPostRender.setQuatAccumulatedOnNextRender();
414
                                           mPreRender.setQuatCurrentOnNextRender();
415
                                           mPreRender.setQuatAccumulatedOnNextRender();
416 416
                                           }
417 417
                                         }
418 418
                                       else
......
424 424
                                         {
425 425
                                         mTempAccumulated.set(quatMultiply(mQuatCurrent, mQuatAccumulated));
426 426
                                         mTempCurrent.set(0f, 0f, 0f, 1f);
427
                                         mPostRender.setQuatCurrentOnNextRender();
428
                                         mPostRender.setQuatAccumulatedOnNextRender();
427
                                         mPreRender.setQuatCurrentOnNextRender();
428
                                         mPreRender.setQuatAccumulatedOnNextRender();
429 429
                                         }
430 430

  
431 431
                                       if( mContinuingRotation )
432 432
                                         {
433
                                         mPostRender.finishRotation();
433
                                         mPreRender.finishRotation();
434 434

  
435 435
                                         if( RubikState.getCurrentState()==RubikState.SOLV )
436 436
                                           {
437 437
                                           RubikStateSolving solving = (RubikStateSolving)RubikState.SOLV.getStateClass();
438 438

  
439
                                           int angle = mPostRender.getObject().computeNearestAngle(mCurrentAngle);
439
                                           int angle = mPreRender.getObject().computeNearestAngle(mCurrentAngle);
440 440

  
441 441
                                           if( angle!=0 )
442 442
                                             solving.addMove(mCurrentAxis, mCurrentRow, angle);
......
444 444
                                         }
445 445
                                       if( mLastCubitColor>=0 )
446 446
                                         {
447
                                          mPostRender.setTextureMap( mLastCubit, mLastCubitFace, mLastCubitColor );
447
                                          mPreRender.setTextureMap( mLastCubit, mLastCubitFace, mLastCubitColor );
448 448
                                         }
449 449
                                       break;
450 450
         }

Also available in: Unified diff