Project

General

Profile

« Previous | Next » 

Revision e1a86bf2

Added by Leszek Koltunski over 2 years ago

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.

View differences:

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