Revision e1a86bf2
Added by Leszek Koltunski over 2 years ago
src/main/java/org/distorted/objectlib/main/ObjectPreRender.java | ||
---|---|---|
20 | 20 |
package org.distorted.objectlib.main; |
21 | 21 |
|
22 | 22 |
import java.io.InputStream; |
23 |
import java.lang.ref.WeakReference; |
|
24 | 23 |
|
25 | 24 |
import android.app.Activity; |
26 | 25 |
import android.content.SharedPreferences; |
27 |
import android.content.res.Resources; |
|
28 | 26 |
|
29 | 27 |
import org.distorted.library.message.EffectListener; |
30 | 28 |
import org.distorted.library.type.Static3D; |
31 | 29 |
|
30 |
import org.distorted.library.type.Static4D; |
|
32 | 31 |
import org.distorted.objectlib.helpers.ObjectLibInterface; |
33 | 32 |
import org.distorted.objectlib.effects.BaseEffect; |
34 | 33 |
import org.distorted.objectlib.effects.scramble.ScrambleEffect; |
... | ... | |
39 | 38 |
|
40 | 39 |
public class ObjectPreRender implements EffectListener |
41 | 40 |
{ |
42 |
private final WeakReference<Activity> mAct; |
|
43 | 41 |
private final ObjectControl mController; |
44 |
private ObjectType mNextObject; |
|
42 |
private InputStream mJsonStream, mMeshStream; |
|
43 |
private int mOrdinal; |
|
45 | 44 |
private TwistyObject mOldObject, mNewObject; |
46 | 45 |
private SharedPreferences mPreferences; |
47 | 46 |
private MovesFinished mAddActionListener; |
... | ... | |
51 | 50 |
private float mMoveX, mMoveY; |
52 | 51 |
|
53 | 52 |
private boolean mFinishRotation, mRemoveRotation, mRemovePatternRotation, mAddRotation, |
54 |
mSetQuat, mChangeObject, mSolveObject, mScrambleObject, mRecreateObject,
|
|
53 |
mSetQuat, mChangeObject, mSolveObject, mScrambleObject, |
|
55 | 54 |
mInitializeObject, mSetTextureMap, mResetAllTextureMaps, mSolve; |
56 | 55 |
private boolean mUIBlocked, mTouchBlocked, mIsSolved; |
57 | 56 |
private long mRotationFinishedID; |
... | ... | |
69 | 68 |
|
70 | 69 |
public ObjectPreRender(Activity act, ObjectControl controller, ObjectLibInterface actioner) |
71 | 70 |
{ |
72 |
mAct = new WeakReference<>(act); |
|
73 | 71 |
mInterface = actioner; |
74 | 72 |
mController = controller; |
75 | 73 |
|
... | ... | |
79 | 77 |
mAddRotation = false; |
80 | 78 |
mSetQuat = false; |
81 | 79 |
mChangeObject = false; |
82 |
mRecreateObject = false; |
|
83 | 80 |
mSolveObject = false; |
84 | 81 |
mSolve = false; |
85 | 82 |
mScrambleObject = false; |
... | ... | |
98 | 95 |
|
99 | 96 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
100 | 97 |
|
101 |
private void createObjectNow(ObjectType object)
|
|
98 |
private void createObjectNow(int ordinal, InputStream jsonStream, InputStream meshStream)
|
|
102 | 99 |
{ |
103 | 100 |
boolean firstTime = (mNewObject==null); |
104 | 101 |
|
105 | 102 |
if( mOldObject!=null ) mOldObject.releaseResources(); |
106 | 103 |
mOldObject = mNewObject; |
107 | 104 |
Static3D move = new Static3D(mMoveX,mMoveY,0); |
108 |
Resources res = mAct.get().getResources();
|
|
105 |
Static4D quat = mController.getQuat();
|
|
109 | 106 |
|
110 | 107 |
long time1 = System.currentTimeMillis(); |
111 | 108 |
|
112 |
int meshID = object.getMeshID(); |
|
113 |
InputStream meshStream = ( meshID!=0 && ObjectControl.isInDmeshMode() ) ? res.openRawResource(meshID) : null; |
|
114 |
|
|
115 |
if( !ObjectControl.isInJsonMode() ) |
|
116 |
{ |
|
117 |
mNewObject = object.create( mController.getQuat(), move, meshStream); |
|
118 |
} |
|
119 |
else |
|
120 |
{ |
|
121 |
int jsonID = object.getJsonID(); |
|
122 |
InputStream jsonStream = jsonID!=0 ? res.openRawResource(jsonID) : null; |
|
123 |
mNewObject = new TwistyJson(jsonStream, mController.getQuat(), move, meshStream); |
|
124 |
} |
|
109 |
if( jsonStream==null ) mNewObject = ObjectType.create( ordinal, quat, move, meshStream); |
|
110 |
else mNewObject = new TwistyJson( jsonStream, quat, move, meshStream); |
|
125 | 111 |
|
126 | 112 |
long time2 = System.currentTimeMillis(); |
127 | 113 |
mInterface.onObjectCreated(time2-time1); |
... | ... | |
233 | 219 |
private void changeObjectNow() |
234 | 220 |
{ |
235 | 221 |
mChangeObject = false; |
236 |
|
|
237 |
if ( mNewObject==null || mNewObject.getObjectType()!=mNextObject ) |
|
238 |
{ |
|
239 |
blockEverything(BlockController.PLACE_1); |
|
240 |
createObjectNow(mNextObject); |
|
241 |
doEffectNow( BaseEffect.Type.SIZECHANGE ); |
|
242 |
} |
|
243 |
} |
|
244 |
|
|
245 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
246 |
|
|
247 |
private void recreateObjectNow() |
|
248 |
{ |
|
249 |
mRecreateObject = false; |
|
250 |
|
|
251 |
if ( mNewObject!=null ) |
|
252 |
{ |
|
253 |
blockEverything(BlockController.PLACE_1); |
|
254 |
createObjectNow(mNewObject.getObjectType()); |
|
255 |
doEffectNow( BaseEffect.Type.SIZECHANGE ); |
|
256 |
} |
|
222 |
blockEverything(BlockController.PLACE_1); |
|
223 |
createObjectNow(mOrdinal,mJsonStream,mMeshStream); |
|
224 |
doEffectNow( BaseEffect.Type.SIZECHANGE ); |
|
257 | 225 |
} |
258 | 226 |
|
259 | 227 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
422 | 390 |
|
423 | 391 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
424 | 392 |
|
425 |
public void changeObject(ObjectType object)
|
|
393 |
public void changeObject(int ordinal, InputStream jsonStream, InputStream meshStream)
|
|
426 | 394 |
{ |
427 | 395 |
mChangeObject = true; |
428 |
mNextObject = object; |
|
429 |
} |
|
430 |
|
|
431 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
432 |
|
|
433 |
public void recreateObject() |
|
434 |
{ |
|
435 |
mRecreateObject = true; |
|
396 |
mOrdinal = ordinal; |
|
397 |
mJsonStream = jsonStream; |
|
398 |
mMeshStream = meshStream; |
|
436 | 399 |
} |
437 | 400 |
|
438 | 401 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
503 | 466 |
if( mRemoveRotation ) removeRotationNow(); |
504 | 467 |
if( mRemovePatternRotation ) removePatternRotationNow(); |
505 | 468 |
if( mChangeObject ) changeObjectNow(); |
506 |
if( mRecreateObject ) recreateObjectNow(); |
|
507 | 469 |
if( mSolveObject ) solveObjectNow(); |
508 | 470 |
if( mScrambleObject ) scrambleObjectNow(); |
509 | 471 |
if( mAddRotation ) addRotationNow(); |
Also available in: Unified diff
Move the main app to the 'J1M1' object creation mode, i.e. create them from the Json files and using the Dmesh fiels as well.
Make it possible for any app descending from the 'objectlib' to use any of the J0M0, J0M1, J1M0, J1M1 modes.