Project

General

Profile

« Previous | Next » 

Revision a4472437

Added by Leszek Koltunski almost 4 years ago

Progress with dragging.

View differences:

src/main/java/org/distorted/main/RubikSurfaceView.java
42 42
public class RubikSurfaceView extends GLSurfaceView
43 43
{
44 44
    private static final int NUM_SPEED_PROBES = 10;
45
    private static final int INVALID_POINTER_ID = -1;
45 46

  
46 47
    public static final int MODE_ROTATE  = 0;
47 48
    public static final int MODE_DRAG    = 1;
......
70 71
    private boolean mDragging, mBeginningRotation, mContinuingRotation;
71 72
    private int mScreenWidth, mScreenHeight, mScreenMin;
72 73

  
74
    private int mPtrID1, mPtrID2;
73 75
    private int mNumFingersDown;
74 76
    private float mX, mY;
75 77
    private float mStartRotX, mStartRotY;
......
457 459

  
458 460
    private void actionMove(MotionEvent event)
459 461
      {
460
      float x = (event.getX() - mScreenWidth*0.5f)/mScreenMin;
461
      float y = (mScreenHeight*0.5f -event.getY())/mScreenMin;
462
      int pointer = event.findPointerIndex(mPtrID1 != INVALID_POINTER_ID ? mPtrID1:mPtrID2);
462 463

  
463
      //android.util.Log.e("view", "num fingers: "+mNumFingersDown+" x="+event.getX()+" y="+event.getY());
464
      float pX = event.getX(pointer);
465
      float pY = event.getY(pointer);
466

  
467
      float x = (pX - mScreenWidth*0.5f)/mScreenMin;
468
      float y = (mScreenHeight*0.5f -pY)/mScreenMin;
464 469

  
465 470
      if( mBeginningRotation )
466 471
        {
......
488 493
    private void actionDown(MotionEvent event)
489 494
      {
490 495
      mNumFingersDown++;
496
      mPtrID1 = event.getPointerId(0);
491 497

  
492
      int index = event.getActionIndex();
493 498
      float x = event.getX();
494 499
      float y = event.getY();
495 500

  
496
      android.util.Log.e("view", "down1 num fingers: "+mNumFingersDown+" index="+index+" x="+x+" y="+y);
497

  
498 501
      mX = (x - mScreenWidth*0.5f)/mScreenMin;
499 502
      mY = (mScreenHeight*0.5f -y)/mScreenMin;
500 503

  
......
507 510
      {
508 511
      mNumFingersDown--;
509 512

  
510
      int index = event.getActionIndex();
511
      float x = event.getX();
512
      float y = event.getY();
513

  
514
      android.util.Log.e("view", "up1 num fingers: "+mNumFingersDown+" index="+index+" x="+x+" y="+y);
513
      mPtrID1 = INVALID_POINTER_ID;
514
      mPtrID2 = INVALID_POINTER_ID;
515 515

  
516 516
      if( mContinuingRotation )
517 517
        {
......
530 530
      {
531 531
      mNumFingersDown++;
532 532

  
533
      int index = event.getActionIndex();
534

  
535
      if( mPtrID1==INVALID_POINTER_ID )
536
        {
537
        mPtrID1 = event.getPointerId(index);
538
        float x = event.getX(index);
539
        float y = event.getY(index);
540

  
541
        mX = (x - mScreenWidth*0.5f)/mScreenMin;
542
        mY = (mScreenHeight*0.5f -y)/mScreenMin;
543
        }
544
      else if( mPtrID2==INVALID_POINTER_ID )
545
        {
546
        mPtrID2 = event.getPointerId(index);
547

  
548
        if( mBeginningRotation || mContinuingRotation )
549
          {
550
          float x = event.getX();
551
          float y = event.getY();
552

  
553
          mX = (x - mScreenWidth*0.5f)/mScreenMin;
554
          mY = (mScreenHeight*0.5f -y)/mScreenMin;
555
          }
556
        }
557

  
533 558
      if( mBeginningRotation )
534 559
        {
535 560
        mContinuingRotation = false;
......
540 565
        {
541 566
        finishRotation();
542 567
        }
543

  
544
      int index = event.getActionIndex();
545
      float x = event.getX();
546
      float y = event.getY();
547

  
548
      android.util.Log.e("view", "down2 num fingers: "+mNumFingersDown+" index="+index+" x="+x+" y="+y);
549 568
      }
550 569

  
551 570
///////////////////////////////////////////////////////////////////////////////////////////////////
......
555 574
      mNumFingersDown--;
556 575

  
557 576
      int index = event.getActionIndex();
558
      float x = event.getX();
559
      float y = event.getY();
560 577

  
561
      android.util.Log.e("view", "up2 num fingers: "+mNumFingersDown+" index="+index+" x="+x+" y="+y);
578
      if( index==0 )
579
        {
580
        mPtrID1 = INVALID_POINTER_ID;
581
        int pointer = event.findPointerIndex(mPtrID2);
582
        float x1 = event.getX(pointer);
583
        float y1 = event.getY(pointer);
584

  
585
        mX = (x1 - mScreenWidth*0.5f)/mScreenMin;
586
        mY = (mScreenHeight*0.5f -y1)/mScreenMin;
587
        }
588
      else
589
        {
590
        mPtrID2 = INVALID_POINTER_ID;
591
        }
562 592
      }
563 593

  
564 594
///////////////////////////////////////////////////////////////////////////////////////////////////
......
580 610
        mFirstIndex =0;
581 611
        mLastIndex  =0;
582 612

  
613
        mPtrID1 = INVALID_POINTER_ID;
614
        mPtrID2 = INVALID_POINTER_ID;
615

  
583 616
        mNumFingersDown = 0;
584 617

  
585 618
        mRenderer  = new RubikRenderer(this);

Also available in: Unified diff