Revision 5a4d4fba
Added by Leszek Koltunski almost 4 years ago
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
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.