Project

General

Profile

« Previous | Next » 

Revision b63235a0

Added by Leszek Koltunski over 1 year ago

Make it possible to create Diamond and Icosahedron-shaped objects to be read from json.

View differences:

src/main/java/org/distorted/objectlib/json/JsonReader.java
161 161

  
162 162
///////////////////////////////////////////////////////////////////////////////////////////////////
163 163

  
164
  private void parseMetadata5(JSONObject object) throws JSONException
164
  private void parseMetadata5or6(JSONObject object) throws JSONException
165 165
    {
166 166
    mLongName        = object.getString("longname");
167 167
    mShortName       = object.getString("shortname");
......
490 490

  
491 491
///////////////////////////////////////////////////////////////////////////////////////////////////
492 492

  
493
  private void parseAxis2or3or4or5(JSONArray object) throws JSONException
493
  private void parseAxis2or3or4or5or6(JSONArray object) throws JSONException
494 494
    {
495 495
    int numAxis = object.length();
496 496

  
......
696 696
    JSONObject mesh        = object.getJSONObject("mesh");
697 697
    parseMesh(mesh);
698 698
    JSONArray axis         = object.getJSONArray("axis");
699
    parseAxis2or3or4or5(axis);
699
    parseAxis2or3or4or5or6(axis);
700 700
    JSONArray quats        = object.getJSONArray("quats");
701 701
    parseQuats(quats);
702 702
    JSONObject scrambling  = object.getJSONObject("scrambling");
......
711 711

  
712 712
///////////////////////////////////////////////////////////////////////////////////////////////////
713 713

  
714
  private void parseVersion5(JSONObject object) throws JSONException
714
  private void parseVersion5or6(JSONObject object) throws JSONException
715 715
    {
716 716
    JSONObject metadata    = object.getJSONObject("metadata");
717
    parseMetadata5(metadata);
717
    parseMetadata5or6(metadata);
718 718
    JSONObject mesh        = object.getJSONObject("mesh");
719 719
    parseMesh(mesh);
720 720
    JSONArray axis         = object.getJSONArray("axis");
721
    parseAxis2or3or4or5(axis);
721
    parseAxis2or3or4or5or6(axis);
722 722
    JSONArray quats        = object.getJSONArray("quats");
723 723
    parseQuats(quats);
724 724
    JSONObject scrambling  = object.getJSONObject("scrambling");
......
769 769

  
770 770
///////////////////////////////////////////////////////////////////////////////////////////////////
771 771

  
772
  private void parseVersion5Metadata(JSONObject object) throws JSONException
772
  private void parseVersion5or6Metadata(JSONObject object) throws JSONException
773 773
    {
774 774
    JSONObject metadata = object.getJSONObject("metadata");
775
    parseMetadata5(metadata);
775
    parseMetadata5or6(metadata);
776 776
    }
777 777

  
778 778
///////////////////////////////////////////////////////////////////////////////////////////////////
......
798 798
      {
799 799
      parseVersion2or3or4(object);
800 800
      }
801
    else if( major==5 )
801
    else if( major==5 || major==6 )
802 802
      {
803
      parseVersion5(object);
803
      parseVersion5or6(object);
804 804
      }
805 805
    else
806 806
      {
......
831 831
      {
832 832
      parseVersion2or3or4Metadata(object);
833 833
      }
834
    else if( major==5 )
834
    else if( major==5 || major==6 )
835 835
      {
836
      parseVersion5Metadata(object);
836
      parseVersion5or6Metadata(object);
837 837
      }
838 838
    else
839 839
      {
src/main/java/org/distorted/objectlib/json/JsonWriter.java
33 33

  
34 34
public class JsonWriter
35 35
{
36
  public static final int VERSION_OBJECT_MAJOR = 5;
36
  public static final int VERSION_OBJECT_MAJOR = 6;
37 37
  public static final int VERSION_OBJECT_MINOR = 0;
38 38
  public static final int VERSION_EXTRAS_MAJOR = 1;
39 39
  public static final int VERSION_EXTRAS_MINOR = 0;
src/main/java/org/distorted/objectlib/main/TwistyJson.java
20 20
import org.distorted.objectlib.helpers.ObjectStickerOverride;
21 21
import org.distorted.objectlib.scrambling.ScrambleState;
22 22
import org.distorted.objectlib.json.JsonReader;
23
import org.distorted.objectlib.shape.ShapeDiamond;
23 24
import org.distorted.objectlib.shape.ShapeDodecahedron;
24 25
import org.distorted.objectlib.shape.ShapeHexahedron;
26
import org.distorted.objectlib.shape.ShapeIcosahedron;
25 27
import org.distorted.objectlib.shape.ShapeOctahedron;
26 28
import org.distorted.objectlib.shape.ShapeTetrahedron;
29
import org.distorted.objectlib.touchcontrol.TouchControlBall;
27 30
import org.distorted.objectlib.touchcontrol.TouchControlDodecahedron;
28 31
import org.distorted.objectlib.touchcontrol.TouchControlHexahedron;
32
import org.distorted.objectlib.touchcontrol.TouchControlIcosahedron;
29 33
import org.distorted.objectlib.touchcontrol.TouchControlOctahedron;
30 34
import org.distorted.objectlib.touchcontrol.TouchControlTetrahedron;
31 35

  
......
238 242
      case  6: return TouchControlHexahedron.FACE_AXIS;
239 243
      case  8: return TouchControlOctahedron.FACE_AXIS;
240 244
      case 12: return TouchControlDodecahedron.FACE_AXIS;
245
      case 16: return TouchControlBall.FACE_AXIS;
246
      case 20: return TouchControlIcosahedron.FACE_AXIS;
241 247
      }
242 248

  
243 249
    android.util.Log.e("D", "Unsupported number of faces in JSON file: "+numFaces);
......
412 418
      case  6: return ShapeHexahedron.FOV;
413 419
      case  8: return ShapeOctahedron.FOV;
414 420
      case 12: return ShapeDodecahedron.FOV;
421
      case 16: return ShapeDiamond.FOV;
422
      case 20: return ShapeIcosahedron.FOV;
415 423
      }
416 424

  
417 425
    return 0;
......
427 435
      case  6: return ShapeHexahedron.RATIO;
428 436
      case  8: return ShapeOctahedron.RATIO;
429 437
      case 12: return ShapeDodecahedron.RATIO;
438
      case 16: return ShapeDiamond.RATIO;
439
      case 20: return ShapeIcosahedron.RATIO;
430 440
      }
431 441

  
432 442
    return 0.0f;
src/main/java/org/distorted/objectlib/objects/TwistyMasterball.java
21 21
import org.distorted.objectlib.main.ObjectType;
22 22
import org.distorted.objectlib.shape.ShapeDiamond;
23 23
import org.distorted.objectlib.scrambling.ScrambleState;
24
import org.distorted.objectlib.touchcontrol.TouchControlBall;
24 25

  
25 26
import java.io.InputStream;
26 27

  
......
192 193
    }
193 194

  
194 195
///////////////////////////////////////////////////////////////////////////////////////////////////
195
// A = PI/8
196 196

  
197 197
  public Static3D[] getFaceAxis()
198 198
    {
199
    final float sinA = (float)(0.5f*Math.sqrt(2-SQ2));
200
    final float cosA = (float)(0.5f*Math.sqrt(2+SQ2));
201

  
202
    float X = sinA*cosA/(1+cosA*cosA);
203
    float Y = cosA*cosA/(1+cosA*cosA);
204
    float Z = cosA*cosA/(1+cosA*cosA);
205

  
206
    float LEN = (float)Math.sqrt(X*X + Y*Y + Z*Z);
207
    X /= LEN;
208
    Y /= LEN;
209
    Z /= LEN;
210

  
211
    return new Static3D[]
212
        {
213
          new Static3D( X, Y, Z),
214
          new Static3D( X,-Y, Z),
215
          new Static3D( Z, Y, X),
216
          new Static3D( Z,-Y, X),
217
          new Static3D( Z, Y,-X),
218
          new Static3D( Z,-Y,-X),
219
          new Static3D( X, Y,-Z),
220
          new Static3D( X,-Y,-Z),
221
          new Static3D(-X, Y,-Z),
222
          new Static3D(-X,-Y,-Z),
223
          new Static3D(-Z, Y,-X),
224
          new Static3D(-Z,-Y,-X),
225
          new Static3D(-Z, Y, X),
226
          new Static3D(-Z,-Y, X),
227
          new Static3D(-X, Y, Z),
228
          new Static3D(-X,-Y, Z),
229
        };
199
    return TouchControlBall.FACE_AXIS;
230 200
    }
231 201

  
232 202
///////////////////////////////////////////////////////////////////////////////////////////////////
src/main/java/org/distorted/objectlib/touchcontrol/TouchControlBall.java
14 14
import org.distorted.library.type.Static4D;
15 15
import org.distorted.objectlib.main.TwistyObject;
16 16

  
17
import static org.distorted.objectlib.main.TwistyObject.SQ2;
18

  
17 19
///////////////////////////////////////////////////////////////////////////////////////////////////
18 20
// Ball-shaped objects: map the 2D swipes of user's fingers to 3D rotations
19 21

  
......
33 35
  private float mLongitude, mLatitude;
34 36
  private float mX, mY, mZ;
35 37

  
38
  private static final float X = (float)Math.sqrt( (2-SQ2)/(6+SQ2) );
39
  private static final float Y = (float)Math.sqrt( (2+SQ2)/(6+SQ2) );
40

  
41
  public static final Static3D[] FACE_AXIS = new Static3D[]
42
        {
43
          new Static3D( X, Y, Y),
44
          new Static3D( X,-Y, Y),
45
          new Static3D( Y, Y, X),
46
          new Static3D( Y,-Y, X),
47
          new Static3D( Y, Y,-X),
48
          new Static3D( Y,-Y,-X),
49
          new Static3D( X, Y,-Y),
50
          new Static3D( X,-Y,-Y),
51
          new Static3D(-X, Y,-Y),
52
          new Static3D(-X,-Y,-Y),
53
          new Static3D(-Y, Y,-X),
54
          new Static3D(-Y,-Y,-X),
55
          new Static3D(-Y, Y, X),
56
          new Static3D(-Y,-Y, X),
57
          new Static3D(-X, Y, Y),
58
          new Static3D(-X,-Y, Y),
59
        };
60

  
36 61
///////////////////////////////////////////////////////////////////////////////////////////////////
37 62

  
38 63
  public TouchControlBall(TwistyObject object)

Also available in: Unified diff