Revision 11fa413d
Added by Leszek Koltunski over 2 years ago
src/main/java/org/distorted/objectlib/helpers/ObjectLibInterface.java | ||
---|---|---|
31 | 31 |
void failedToDrag(); |
32 | 32 |
void onSolved(); |
33 | 33 |
void onObjectCreated(long time); |
34 |
void onReplaceModeDown(int cubit, int face); |
|
35 |
void onReplaceModeUp(); |
|
36 |
|
|
34 | 37 |
void reportBlockProblem(int type, int place, long pause, long resume, long time); |
35 | 38 |
void reportProblem(String problem); |
36 |
|
|
37 |
// objectlib calls those to figure out app's state |
|
38 |
int getCurrentColor(); |
|
39 |
int cubitIsLocked(int cubit); |
|
40 | 39 |
} |
src/main/java/org/distorted/objectlib/json/JsonWriter.java | ||
---|---|---|
471 | 471 |
{ |
472 | 472 |
JSONObject touchControl = new JSONObject(); |
473 | 473 |
|
474 |
touchControl.put("movementType" , object.getMovementType() );
|
|
475 |
touchControl.put("movementSplit", object.getMovementSplit() );
|
|
474 |
touchControl.put("movementType" , object.getTouchControlType() );
|
|
475 |
touchControl.put("movementSplit", object.getTouchControlSplit() );
|
|
476 | 476 |
|
477 | 477 |
int[][][] enabled = object.getEnabled(); |
478 | 478 |
|
src/main/java/org/distorted/objectlib/main/ObjectControl.java | ||
---|---|---|
33 | 33 |
import org.distorted.objectlib.helpers.MovesFinished; |
34 | 34 |
import org.distorted.objectlib.helpers.ObjectLibInterface; |
35 | 35 |
import org.distorted.objectlib.touchcontrol.TouchControl; |
36 |
import org.distorted.objectlib.touchcontrol.TouchControlShapeChanging; |
|
36 | 37 |
|
37 | 38 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
38 | 39 |
|
... | ... | |
55 | 56 |
|
56 | 57 |
private final ObjectLibInterface mInterface; |
57 | 58 |
private final ObjectPreRender mPreRender; |
58 |
private TouchControl mTouchControl; |
|
59 |
private TouchControl mTouchControl, mTouchControlBackup;
|
|
59 | 60 |
private TwistyObjectNode mObjectNode; |
60 | 61 |
private boolean mDragging, mBeginningRotation, mContinuingRotation; |
61 | 62 |
private int mScreenWidth, mScreenHeight, mScreenMin; |
62 | 63 |
private float mMoveX, mMoveY; |
64 |
private int mLastMode; |
|
63 | 65 |
|
64 | 66 |
private float mRotAngle, mInitDistance; |
65 | 67 |
private float mStartRotX, mStartRotY; |
66 | 68 |
private float mRotationFactor; |
67 |
private int mLastCubitColor, mLastCubit; |
|
68 | 69 |
private int mCurrentAxis, mCurrentRow; |
69 | 70 |
private float mCurrentAngle, mCurrRotSpeed; |
70 | 71 |
private final float[] mLastX; |
... | ... | |
152 | 153 |
|
153 | 154 |
if( down ) |
154 | 155 |
{ |
155 |
int color = mInterface.getCurrentColor(); |
|
156 |
float[] point = mTouchControl.getTouchedPoint3D(); |
|
157 |
TwistyObject object = mPreRender.getObject(); |
|
158 |
mLastCubit = object.getCubit(point); |
|
159 |
mLastCubitColor = mInterface.cubitIsLocked(mLastCubit); |
|
160 |
int face; |
|
161 |
|
|
162 |
if( mLastCubitColor>=0 ) |
|
163 |
{ |
|
164 |
face =4; |
|
165 |
} |
|
166 |
else |
|
167 |
{ |
|
168 |
int touchedFace = mTouchControl.getTouchedFace(); |
|
169 |
if( mLastCubit<8 ) face = touchedFace; |
|
170 |
else |
|
171 |
{ |
|
172 |
switch(touchedFace) |
|
173 |
{ |
|
174 |
case 0: face = mLastCubit==15 || mLastCubit==18 ? 3 : 5; break; |
|
175 |
case 1: face = mLastCubit==13 || mLastCubit==16 ? 3 : 5; break; |
|
176 |
case 2: face = mLastCubit==10 ? 5 : 3; break; |
|
177 |
case 3: face = mLastCubit== 8 ? 3 : 5; break; |
|
178 |
case 4: face = mLastCubit== 9 ? 3 : 5; break; |
|
179 |
case 5: face = mLastCubit== 8 ? 5 : 3; break; |
|
180 |
default: face =-1; |
|
181 |
} |
|
182 |
} |
|
183 |
} |
|
184 |
|
|
185 |
mPreRender.setTextureMap( mLastCubit, face , color ); |
|
156 |
int cubit = mTouchControl.getTouchedCubit(); |
|
157 |
int face = mTouchControl.getTouchedCubitFace(); |
|
158 |
mInterface.onReplaceModeDown(cubit,face); |
|
186 | 159 |
} |
187 | 160 |
} |
188 | 161 |
|
189 | 162 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
190 | 163 |
|
191 |
private void setUpDragOrRotate(boolean down, float x, float y, int mode)
|
|
164 |
private void setUpDragOrRotate(boolean down, float x, float y) |
|
192 | 165 |
{ |
193 |
if( mode==MODE_DRAG ) |
|
166 |
if( mLastMode==MODE_DRAG )
|
|
194 | 167 |
{ |
195 | 168 |
mDragging = true; |
196 | 169 |
mBeginningRotation = false; |
... | ... | |
208 | 181 |
mDragging = false; |
209 | 182 |
mContinuingRotation = false; |
210 | 183 |
|
211 |
if( mode==MODE_ROTATE ) mBeginningRotation = !mPreRender.isTouchBlocked(); |
|
212 |
else if( mode==MODE_REPLACE ) replaceMode(down); |
|
184 |
if( mLastMode==MODE_ROTATE ) mBeginningRotation = !mPreRender.isTouchBlocked();
|
|
185 |
else if( mLastMode==MODE_REPLACE ) replaceMode(down);
|
|
213 | 186 |
} |
214 | 187 |
else |
215 | 188 |
{ |
... | ... | |
415 | 388 |
|
416 | 389 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
417 | 390 |
|
418 |
private void actionMove(float x1, float y1, float x2, float y2, int mode)
|
|
391 |
private void actionMove(float x1, float y1, float x2, float y2) |
|
419 | 392 |
{ |
420 | 393 |
float pX = mPointer1 != INVALID_POINTER_ID ? x1 : x2; |
421 | 394 |
float pY = mPointer1 != INVALID_POINTER_ID ? y1 : y2; |
... | ... | |
440 | 413 |
} |
441 | 414 |
else |
442 | 415 |
{ |
443 |
setUpDragOrRotate(false,x,y,mode);
|
|
416 |
setUpDragOrRotate(false,x,y); |
|
444 | 417 |
} |
445 | 418 |
} |
446 | 419 |
|
447 | 420 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
448 | 421 |
|
449 |
private void actionDown(float x, float y, int mode)
|
|
422 |
private void actionDown(float x, float y) |
|
450 | 423 |
{ |
451 | 424 |
mX = (x - mScreenWidth*0.5f)/mScreenMin; |
452 | 425 |
mY = (mScreenHeight*0.5f - y)/mScreenMin; |
453 | 426 |
|
454 |
setUpDragOrRotate(true,mX,mY,mode);
|
|
427 |
setUpDragOrRotate(true,mX,mY); |
|
455 | 428 |
} |
456 | 429 |
|
457 | 430 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
463 | 436 |
finishRotation(); |
464 | 437 |
} |
465 | 438 |
|
466 |
if( mLastCubitColor>=0 ) |
|
467 |
{ |
|
468 |
mPreRender.setTextureMap( mLastCubit, 4, mLastCubitColor ); |
|
469 |
mLastCubitColor = -1; |
|
470 |
} |
|
439 |
if( mLastMode==MODE_REPLACE ) mInterface.onReplaceModeUp(); |
|
471 | 440 |
} |
472 | 441 |
|
473 | 442 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
510 | 479 |
|
511 | 480 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
512 | 481 |
|
513 |
void setMovement(TouchControl touchControl)
|
|
482 |
void setTouchControl(TwistyObject object)
|
|
514 | 483 |
{ |
515 |
mTouchControl = touchControl; |
|
484 |
if( mLastMode!=MODE_REPLACE ) mTouchControl = object.getTouchControl(); |
|
485 |
else mTouchControl = new TouchControlShapeChanging(object); |
|
516 | 486 |
} |
517 | 487 |
|
518 | 488 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
556 | 526 |
mBuffer = new int[2]; |
557 | 527 |
mAxis = new float[2]; |
558 | 528 |
|
559 |
mLastCubitColor = -1;
|
|
560 |
mCurrRotSpeed = 0.0f;
|
|
529 |
mCurrRotSpeed= 0.0f;
|
|
530 |
mLastMode = -1;
|
|
561 | 531 |
|
562 | 532 |
mLastX = new float[NUM_SPEED_PROBES]; |
563 | 533 |
mLastY = new float[NUM_SPEED_PROBES]; |
... | ... | |
850 | 820 |
mIsLocked = mRemLocked; |
851 | 821 |
} |
852 | 822 |
|
823 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
824 |
|
|
825 |
public void setTextureMap(int cubit, int face, int newColor) |
|
826 |
{ |
|
827 |
mPreRender.setTextureMap(cubit,face,newColor); |
|
828 |
} |
|
829 |
|
|
830 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
831 |
|
|
832 |
private void switchTouchControl(int oldMode, int newMode) |
|
833 |
{ |
|
834 |
if( newMode==MODE_REPLACE ) |
|
835 |
{ |
|
836 |
if( mTouchControlBackup!=null ) |
|
837 |
{ |
|
838 |
TouchControl tmp = mTouchControlBackup; |
|
839 |
mTouchControlBackup = mTouchControl; |
|
840 |
mTouchControl = tmp; |
|
841 |
} |
|
842 |
else |
|
843 |
{ |
|
844 |
mTouchControlBackup = mTouchControl; |
|
845 |
TwistyObject object = getObject(); |
|
846 |
mTouchControl = new TouchControlShapeChanging(object); |
|
847 |
float ratio = object.getObjectRatio(); |
|
848 |
mTouchControl.setObjectRatio(ratio); |
|
849 |
} |
|
850 |
} |
|
851 |
if( oldMode==MODE_REPLACE ) |
|
852 |
{ |
|
853 |
if( mTouchControlBackup!=null ) |
|
854 |
{ |
|
855 |
TouchControl tmp = mTouchControlBackup; |
|
856 |
mTouchControlBackup = mTouchControl; |
|
857 |
mTouchControl = tmp; |
|
858 |
} |
|
859 |
else |
|
860 |
{ |
|
861 |
mTouchControlBackup = mTouchControl; |
|
862 |
TwistyObject object = getObject(); |
|
863 |
mTouchControl = object.getTouchControl(); |
|
864 |
float ratio = object.getObjectRatio(); |
|
865 |
mTouchControl.setObjectRatio(ratio); |
|
866 |
} |
|
867 |
} |
|
868 |
} |
|
869 |
|
|
853 | 870 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
854 | 871 |
|
855 | 872 |
public boolean onTouchEvent(MotionEvent event, int mode) |
856 | 873 |
{ |
857 | 874 |
int action = event.getActionMasked(); |
858 | 875 |
|
876 |
if( mode!=mLastMode) |
|
877 |
{ |
|
878 |
switchTouchControl(mLastMode,mode); |
|
879 |
mLastMode = mode; |
|
880 |
} |
|
881 |
|
|
859 | 882 |
switch(action) |
860 | 883 |
{ |
861 | 884 |
case MotionEvent.ACTION_DOWN : prepareDown(event); |
862 |
actionDown(mX1, mY1, mode);
|
|
885 |
actionDown(mX1, mY1); |
|
863 | 886 |
break; |
864 | 887 |
case MotionEvent.ACTION_MOVE : prepareMove(event); |
865 |
actionMove(mX1, mY1, mX2, mY2, mode);
|
|
888 |
actionMove(mX1, mY1, mX2, mY2); |
|
866 | 889 |
break; |
867 | 890 |
case MotionEvent.ACTION_UP : prepareUp(event); |
868 | 891 |
actionUp(); |
src/main/java/org/distorted/objectlib/main/ObjectPreRender.java | ||
---|---|---|
120 | 120 |
if( mNewObject!=null ) |
121 | 121 |
{ |
122 | 122 |
mNewObject.setLibInterface(mInterface); |
123 |
mController.setMovement(mNewObject.getMovement());
|
|
123 |
mController.setTouchControl(mNewObject);
|
|
124 | 124 |
TwistyObjectNode node = mController.getNode(); |
125 | 125 |
if( node!=null ) mNewObject.setObjectRatioNow(mScale, node.getMinSize() ); |
126 | 126 |
if( firstTime && mPreferences!=null ) mNewObject.restorePreferences(mPreferences); |
src/main/java/org/distorted/objectlib/main/TwistyJson.java | ||
---|---|---|
99 | 99 |
|
100 | 100 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
101 | 101 |
|
102 |
public int getMovementType()
|
|
102 |
public int getTouchControlType()
|
|
103 | 103 |
{ |
104 | 104 |
return mReader.getMovementType(); |
105 | 105 |
} |
106 | 106 |
|
107 | 107 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
108 | 108 |
|
109 |
public int getMovementSplit()
|
|
109 |
public int getTouchControlSplit()
|
|
110 | 110 |
{ |
111 | 111 |
return mReader.getMovementSplit(); |
112 | 112 |
} |
src/main/java/org/distorted/objectlib/main/TwistyObject.java | ||
---|---|---|
1127 | 1127 |
float scale = mObjectScreenRatio*mInitScreenRatio*nodeSize/mSize; |
1128 | 1128 |
mObjectScale.set(scale,scale,scale); |
1129 | 1129 |
|
1130 |
if( mTouchControl ==null ) mTouchControl = getMovement();
|
|
1130 |
if( mTouchControl ==null ) mTouchControl = getTouchControl();
|
|
1131 | 1131 |
mTouchControl.setObjectRatio(mObjectScreenRatio*mInitScreenRatio); |
1132 | 1132 |
} |
1133 | 1133 |
|
... | ... | |
1157 | 1157 |
return mObjectScreenRatio; |
1158 | 1158 |
} |
1159 | 1159 |
|
1160 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
1161 |
|
|
1162 |
public float getObjectRatio() |
|
1163 |
{ |
|
1164 |
return mObjectScreenRatio*mInitScreenRatio; |
|
1165 |
} |
|
1166 |
|
|
1160 | 1167 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
1161 | 1168 |
|
1162 | 1169 |
boolean isSolved() |
... | ... | |
1325 | 1332 |
|
1326 | 1333 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
1327 | 1334 |
|
1328 |
public TouchControl getMovement()
|
|
1335 |
public TouchControl getTouchControl()
|
|
1329 | 1336 |
{ |
1330 | 1337 |
if( mTouchControl==null ) |
1331 | 1338 |
{ |
1332 |
switch(getMovementType())
|
|
1339 |
switch(getTouchControlType())
|
|
1333 | 1340 |
{ |
1334 | 1341 |
case TC_TETRAHEDRON : mTouchControl = new TouchControlTetrahedron(this); |
1335 | 1342 |
break; |
... | ... | |
1369 | 1376 |
|
1370 | 1377 |
// for JSON only |
1371 | 1378 |
public abstract int getSolvedFunctionIndex(); |
1372 |
public abstract int getMovementType();
|
|
1373 |
public abstract int getMovementSplit();
|
|
1379 |
public abstract int getTouchControlType();
|
|
1380 |
public abstract int getTouchControlSplit();
|
|
1374 | 1381 |
public abstract boolean[][] getLayerRotatable(int[] numLayers); |
1375 | 1382 |
public abstract int[][][] getEnabled(); |
1376 | 1383 |
public abstract float[] getDist3D(int[] numLayers); |
src/main/java/org/distorted/objectlib/objects/TwistyBandagedAbstract.java | ||
---|---|---|
358 | 358 |
|
359 | 359 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
360 | 360 |
|
361 |
public int getMovementType()
|
|
361 |
public int getTouchControlType()
|
|
362 | 362 |
{ |
363 | 363 |
return TC_HEXAHEDRON; |
364 | 364 |
} |
365 | 365 |
|
366 | 366 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
367 | 367 |
|
368 |
public int getMovementSplit()
|
|
368 |
public int getTouchControlSplit()
|
|
369 | 369 |
{ |
370 | 370 |
return TYPE_NOT_SPLIT; |
371 | 371 |
} |
src/main/java/org/distorted/objectlib/objects/TwistyCuboid.java | ||
---|---|---|
643 | 643 |
|
644 | 644 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
645 | 645 |
|
646 |
public int getMovementType()
|
|
646 |
public int getTouchControlType()
|
|
647 | 647 |
{ |
648 | 648 |
return TC_CUBOID; |
649 | 649 |
} |
650 | 650 |
|
651 | 651 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
652 | 652 |
|
653 |
public int getMovementSplit()
|
|
653 |
public int getTouchControlSplit()
|
|
654 | 654 |
{ |
655 | 655 |
return TYPE_NOT_SPLIT; |
656 | 656 |
} |
src/main/java/org/distorted/objectlib/objects/TwistyDiamond.java | ||
---|---|---|
186 | 186 |
|
187 | 187 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
188 | 188 |
|
189 |
public int getMovementType()
|
|
189 |
public int getTouchControlType()
|
|
190 | 190 |
{ |
191 | 191 |
return TC_OCTAHEDRON; |
192 | 192 |
} |
193 | 193 |
|
194 | 194 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
195 | 195 |
|
196 |
public int getMovementSplit()
|
|
196 |
public int getTouchControlSplit()
|
|
197 | 197 |
{ |
198 | 198 |
return TYPE_NOT_SPLIT; |
199 | 199 |
} |
src/main/java/org/distorted/objectlib/objects/TwistyDino.java | ||
---|---|---|
116 | 116 |
|
117 | 117 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
118 | 118 |
|
119 |
public int getMovementType()
|
|
119 |
public int getTouchControlType()
|
|
120 | 120 |
{ |
121 | 121 |
return TC_HEXAHEDRON; |
122 | 122 |
} |
123 | 123 |
|
124 | 124 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
125 | 125 |
|
126 |
public int getMovementSplit()
|
|
126 |
public int getTouchControlSplit()
|
|
127 | 127 |
{ |
128 | 128 |
return TYPE_SPLIT_CORNER; |
129 | 129 |
} |
src/main/java/org/distorted/objectlib/objects/TwistyHelicopter.java | ||
---|---|---|
186 | 186 |
|
187 | 187 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
188 | 188 |
|
189 |
public int getMovementType()
|
|
189 |
public int getTouchControlType()
|
|
190 | 190 |
{ |
191 | 191 |
return TC_HEXAHEDRON; |
192 | 192 |
} |
193 | 193 |
|
194 | 194 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
195 | 195 |
|
196 |
public int getMovementSplit()
|
|
196 |
public int getTouchControlSplit()
|
|
197 | 197 |
{ |
198 | 198 |
return TYPE_SPLIT_EDGE; |
199 | 199 |
} |
src/main/java/org/distorted/objectlib/objects/TwistyIvy.java | ||
---|---|---|
166 | 166 |
|
167 | 167 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
168 | 168 |
|
169 |
public int getMovementType()
|
|
169 |
public int getTouchControlType()
|
|
170 | 170 |
{ |
171 | 171 |
return TC_HEXAHEDRON; |
172 | 172 |
} |
173 | 173 |
|
174 | 174 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
175 | 175 |
|
176 |
public int getMovementSplit()
|
|
176 |
public int getTouchControlSplit()
|
|
177 | 177 |
{ |
178 | 178 |
return TYPE_SPLIT_CORNER; |
179 | 179 |
} |
src/main/java/org/distorted/objectlib/objects/TwistyJing.java | ||
---|---|---|
197 | 197 |
|
198 | 198 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
199 | 199 |
|
200 |
public int getMovementType()
|
|
200 |
public int getTouchControlType()
|
|
201 | 201 |
{ |
202 | 202 |
return TC_TETRAHEDRON; |
203 | 203 |
} |
204 | 204 |
|
205 | 205 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
206 | 206 |
|
207 |
public int getMovementSplit()
|
|
207 |
public int getTouchControlSplit()
|
|
208 | 208 |
{ |
209 | 209 |
return TYPE_NOT_SPLIT; |
210 | 210 |
} |
src/main/java/org/distorted/objectlib/objects/TwistyMinx.java | ||
---|---|---|
561 | 561 |
|
562 | 562 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
563 | 563 |
|
564 |
public int getMovementType()
|
|
564 |
public int getTouchControlType()
|
|
565 | 565 |
{ |
566 | 566 |
return TC_DODECAHEDRON; |
567 | 567 |
} |
568 | 568 |
|
569 | 569 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
570 | 570 |
|
571 |
public int getMovementSplit()
|
|
571 |
public int getTouchControlSplit()
|
|
572 | 572 |
{ |
573 | 573 |
return TYPE_SPLIT_EDGE; |
574 | 574 |
} |
src/main/java/org/distorted/objectlib/objects/TwistyMirror.java | ||
---|---|---|
582 | 582 |
|
583 | 583 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
584 | 584 |
|
585 |
public int getMovementType()
|
|
585 |
public int getTouchControlType()
|
|
586 | 586 |
{ |
587 | 587 |
return TC_HEXAHEDRON; |
588 | 588 |
} |
589 | 589 |
|
590 | 590 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
591 | 591 |
|
592 |
public int getMovementSplit()
|
|
592 |
public int getTouchControlSplit()
|
|
593 | 593 |
{ |
594 | 594 |
return TYPE_NOT_SPLIT; |
595 | 595 |
} |
src/main/java/org/distorted/objectlib/objects/TwistyPyraminx.java | ||
---|---|---|
254 | 254 |
|
255 | 255 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
256 | 256 |
|
257 |
public int getMovementType()
|
|
257 |
public int getTouchControlType()
|
|
258 | 258 |
{ |
259 | 259 |
return TC_TETRAHEDRON; |
260 | 260 |
} |
261 | 261 |
|
262 | 262 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
263 | 263 |
|
264 |
public int getMovementSplit()
|
|
264 |
public int getTouchControlSplit()
|
|
265 | 265 |
{ |
266 | 266 |
return TYPE_NOT_SPLIT; |
267 | 267 |
} |
src/main/java/org/distorted/objectlib/objects/TwistyRedi.java | ||
---|---|---|
166 | 166 |
|
167 | 167 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
168 | 168 |
|
169 |
public int getMovementType()
|
|
169 |
public int getTouchControlType()
|
|
170 | 170 |
{ |
171 | 171 |
return TC_HEXAHEDRON; |
172 | 172 |
} |
173 | 173 |
|
174 | 174 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
175 | 175 |
|
176 |
public int getMovementSplit()
|
|
176 |
public int getTouchControlSplit()
|
|
177 | 177 |
{ |
178 | 178 |
return TYPE_SPLIT_CORNER; |
179 | 179 |
} |
src/main/java/org/distorted/objectlib/objects/TwistyRex.java | ||
---|---|---|
161 | 161 |
|
162 | 162 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
163 | 163 |
|
164 |
public int getMovementType()
|
|
164 |
public int getTouchControlType()
|
|
165 | 165 |
{ |
166 | 166 |
return TC_HEXAHEDRON; |
167 | 167 |
} |
168 | 168 |
|
169 | 169 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
170 | 170 |
|
171 |
public int getMovementSplit()
|
|
171 |
public int getTouchControlSplit()
|
|
172 | 172 |
{ |
173 | 173 |
return TYPE_SPLIT_CORNER; |
174 | 174 |
} |
src/main/java/org/distorted/objectlib/objects/TwistySkewb.java | ||
---|---|---|
182 | 182 |
|
183 | 183 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
184 | 184 |
|
185 |
public int getMovementType()
|
|
185 |
public int getTouchControlType()
|
|
186 | 186 |
{ |
187 | 187 |
return TC_HEXAHEDRON; |
188 | 188 |
} |
189 | 189 |
|
190 | 190 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
191 | 191 |
|
192 |
public int getMovementSplit()
|
|
192 |
public int getTouchControlSplit()
|
|
193 | 193 |
{ |
194 | 194 |
return TYPE_SPLIT_CORNER; |
195 | 195 |
} |
src/main/java/org/distorted/objectlib/objects/TwistySquare.java | ||
---|---|---|
135 | 135 |
|
136 | 136 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
137 | 137 |
|
138 |
public int getMovementType()
|
|
138 |
public int getTouchControlType()
|
|
139 | 139 |
{ |
140 | 140 |
return TC_HEXAHEDRON; |
141 | 141 |
} |
142 | 142 |
|
143 | 143 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
144 | 144 |
|
145 |
public int getMovementSplit()
|
|
145 |
public int getTouchControlSplit()
|
|
146 | 146 |
{ |
147 | 147 |
return TYPE_NOT_SPLIT; |
148 | 148 |
} |
src/main/java/org/distorted/objectlib/objects/TwistyUltimate.java | ||
---|---|---|
397 | 397 |
|
398 | 398 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
399 | 399 |
|
400 |
public int getMovementType()
|
|
400 |
public int getTouchControlType()
|
|
401 | 401 |
{ |
402 | 402 |
return TC_DODECAHEDRON; |
403 | 403 |
} |
404 | 404 |
|
405 | 405 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
406 | 406 |
|
407 |
public int getMovementSplit()
|
|
407 |
public int getTouchControlSplit()
|
|
408 | 408 |
{ |
409 | 409 |
return TYPE_NOT_SPLIT; |
410 | 410 |
} |
src/main/java/org/distorted/objectlib/touchcontrol/TouchControl.java | ||
---|---|---|
19 | 19 |
|
20 | 20 |
package org.distorted.objectlib.touchcontrol; |
21 | 21 |
|
22 |
import org.distorted.library.type.Static2D; |
|
23 | 22 |
import org.distorted.library.type.Static4D; |
24 | 23 |
|
25 | 24 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
44 | 43 |
|
45 | 44 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
46 | 45 |
|
47 |
public TouchControl() |
|
46 |
public TouchControl(float ratio)
|
|
48 | 47 |
{ |
49 |
mObjectRatio = 1.0f;
|
|
48 |
mObjectRatio = ratio;
|
|
50 | 49 |
} |
51 | 50 |
|
52 | 51 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
61 | 60 |
public abstract boolean objectTouched(Static4D rotatedTouchPoint, Static4D rotatedCamera); |
62 | 61 |
public abstract void newRotation(int[] output, Static4D rotatedTouchPoint); |
63 | 62 |
public abstract void getCastedRotAxis(float[] output, Static4D quat, int rotIndex); |
64 |
public abstract int getTouchedFace(); |
|
65 |
public abstract float[] getTouchedPoint3D();
|
|
63 |
public abstract int getTouchedCubitFace();
|
|
64 |
public abstract int getTouchedCubit();
|
|
66 | 65 |
public abstract float returnRotationFactor(int[] numLayers, int row); |
67 | 66 |
} |
src/main/java/org/distorted/objectlib/touchcontrol/TouchControlShapeChanging.java | ||
---|---|---|
107 | 107 |
|
108 | 108 |
public TouchControlShapeChanging(TwistyObject object) |
109 | 109 |
{ |
110 |
super(object.getObjectRatio()); |
|
111 |
|
|
110 | 112 |
mPoint = new float[3]; |
111 | 113 |
mCamera= new float[3]; |
112 | 114 |
mTouch = new float[3]; |
... | ... | |
252 | 254 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
253 | 255 |
// vertices are counterclockwise |
254 | 256 |
|
255 |
private boolean isInside(float[] point, float[][] vertices )
|
|
257 |
private boolean isInside(float[] point, float[][] vertices) |
|
256 | 258 |
{ |
257 | 259 |
int numVert = vertices.length; |
258 | 260 |
|
... | ... | |
323 | 325 |
// 4) else, rotate 'vertices' by quat and see if the casted point lies inside the polygon defined by them |
324 | 326 |
// 5) if yes, return its Z; otherwise, return NOT_TOUCHED |
325 | 327 |
|
326 |
private float cubitFaceTouched(FaceInfo info, float[] quat, float closestSoFar, int cubit, int face)
|
|
328 |
private float cubitFaceTouched(FaceInfo info, float[] quat, float closestSoFar) |
|
327 | 329 |
{ |
328 | 330 |
QuatHelper.rotateVectorByQuat(mTmp,info.vector,quat); |
329 | 331 |
float nx = mTmp[0]; |
... | ... | |
376 | 378 |
|
377 | 379 |
for(int face=0; face<mNumFaces[cubit]; face++) |
378 | 380 |
{ |
379 |
float dist = cubitFaceTouched(mInfos[cubit][face],quat,closestSoFar,cubit,face);
|
|
381 |
float dist = cubitFaceTouched(mInfos[cubit][face],quat,closestSoFar); |
|
380 | 382 |
|
381 | 383 |
if( dist!=NOT_TOUCHED ) |
382 | 384 |
{ |
... | ... | |
386 | 388 |
} |
387 | 389 |
} |
388 | 390 |
} |
389 |
|
|
391 |
/* |
|
390 | 392 |
if( closestSoFar!=NOT_TOUCHED ) |
391 | 393 |
{ |
392 | 394 |
android.util.Log.e("D", "cubit="+mTouchedCubit+" face="+mTouchedFace+" result: "+closestSoFar); |
393 | 395 |
} |
394 |
|
|
396 |
*/ |
|
395 | 397 |
return closestSoFar!=NOT_TOUCHED; |
396 | 398 |
} |
397 | 399 |
|
... | ... | |
419 | 421 |
} |
420 | 422 |
|
421 | 423 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
422 |
// replace mode only |
|
423 | 424 |
|
424 |
public int getTouchedFace() |
|
425 |
public int getTouchedCubitFace()
|
|
425 | 426 |
{ |
426 |
return -1;
|
|
427 |
return mTouchedFace;
|
|
427 | 428 |
} |
428 | 429 |
|
429 | 430 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
430 |
// replace mode only |
|
431 | 431 |
|
432 |
public float[] getTouchedPoint3D()
|
|
432 |
public int getTouchedCubit()
|
|
433 | 433 |
{ |
434 |
return null;
|
|
434 |
return mTouchedCubit;
|
|
435 | 435 |
} |
436 | 436 |
|
437 | 437 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objectlib/touchcontrol/TouchControlShapeConstant.java | ||
---|---|---|
55 | 55 |
|
56 | 56 |
TouchControlShapeConstant(TwistyObject object, float[] distance3D, Static3D[] faceAxis) |
57 | 57 |
{ |
58 |
super(object.getObjectRatio()); |
|
59 |
|
|
58 | 60 |
int[] numLayers = object.getNumLayers(); |
59 | 61 |
float[][] cuts = object.getCuts(numLayers); |
60 | 62 |
boolean[][] rotatable = object.getLayerRotatable(numLayers); |
... | ... | |
68 | 70 |
mPoint2D = new float[2]; |
69 | 71 |
mMove2D = new float[2]; |
70 | 72 |
|
71 |
mSplit = object.getMovementSplit();
|
|
73 |
mSplit = object.getTouchControlSplit();
|
|
72 | 74 |
mEnabled = object.getEnabled(); |
73 | 75 |
mFaceAxis = faceAxis; |
74 | 76 |
mNumFaceAxis= mFaceAxis.length; |
... | ... | |
481 | 483 |
|
482 | 484 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
483 | 485 |
|
484 |
public int getTouchedFace() |
|
486 |
public int getTouchedCubitFace()
|
|
485 | 487 |
{ |
486 |
return mLastTouchedFace;
|
|
488 |
return 0;
|
|
487 | 489 |
} |
488 | 490 |
|
489 | 491 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
490 | 492 |
|
491 |
public float[] getTouchedPoint3D()
|
|
493 |
public int getTouchedCubit()
|
|
492 | 494 |
{ |
493 |
return mTouch;
|
|
495 |
return 0;
|
|
494 | 496 |
} |
495 | 497 |
} |
Also available in: Unified diff
Make the ShapeChanging the default TouchControl during MODE_REPLACE.