Revision 5974d2ae
Added by Leszek Koltunski almost 5 years ago
src/main/java/org/distorted/effect/scramble/ScrambleEffectRotations.java | ||
---|---|---|
30 | 30 |
|
31 | 31 |
import java.util.Random; |
32 | 32 |
|
33 |
import static org.distorted.magic.RubikRenderer.TEXTURE_SIZE;
|
|
33 |
import static org.distorted.magic.RubikRenderer.NODE_MESH_SIZE;
|
|
34 | 34 |
|
35 | 35 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
36 | 36 |
|
... | ... | |
78 | 78 |
|
79 | 79 |
mCubeEffects[0] = new MatrixEffectQuaternion(dq, new Static3D(0,0,0)); |
80 | 80 |
|
81 |
float Z = TEXTURE_SIZE/3;
|
|
81 |
float Z = NODE_MESH_SIZE /3;
|
|
82 | 82 |
|
83 | 83 |
Dynamic3D d0 = new Dynamic3D(duration, 0.5f); |
84 | 84 |
d0.setMode(Dynamic.MODE_PATH); |
src/main/java/org/distorted/effect/sizechange/SizeChangeEffectRound.java | ||
---|---|---|
26 | 26 |
import org.distorted.library.type.Dynamic3D; |
27 | 27 |
import org.distorted.library.type.Static3D; |
28 | 28 |
|
29 |
import static org.distorted.magic.RubikRenderer.TEXTURE_SIZE;
|
|
29 |
import static org.distorted.magic.RubikRenderer.NODE_MESH_SIZE;
|
|
30 | 30 |
|
31 | 31 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
32 | 32 |
|
... | ... | |
34 | 34 |
{ |
35 | 35 |
public int createEffectsPhase0(int duration) |
36 | 36 |
{ |
37 |
float X = TEXTURE_SIZE/3;
|
|
37 |
float X = NODE_MESH_SIZE /3;
|
|
38 | 38 |
|
39 | 39 |
mCubeEffectPosition[0] = new int[] {6,7}; |
40 | 40 |
mCubeEffects[0] = new Effect[mCubeEffectPosition[0].length]; |
... | ... | |
58 | 58 |
|
59 | 59 |
public int createEffectsPhase1(int duration) |
60 | 60 |
{ |
61 |
float X = TEXTURE_SIZE/3;
|
|
61 |
float X = NODE_MESH_SIZE /3;
|
|
62 | 62 |
|
63 | 63 |
mCubeEffectPosition[1] = new int[] {6,7}; |
64 | 64 |
mCubeEffects[1] = new Effect[mCubeEffectPosition[1].length]; |
src/main/java/org/distorted/effect/win/WinEffectGlow.java | ||
---|---|---|
28 | 28 |
import org.distorted.library.type.Static3D; |
29 | 29 |
import org.distorted.library.type.Static4D; |
30 | 30 |
|
31 |
import static org.distorted.magic.RubikRenderer.TEXTURE_SIZE;
|
|
31 |
import static org.distorted.magic.RubikRenderer.NODE_MESH_SIZE;
|
|
32 | 32 |
|
33 | 33 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
34 | 34 |
|
... | ... | |
63 | 63 |
degreeDyn.add(new Static1D(2.5f)); |
64 | 64 |
degreeDyn.add(new Static1D(1.0f)); |
65 | 65 |
|
66 |
float centerPoint = TEXTURE_SIZE*0.5f;
|
|
66 |
float centerPoint = NODE_MESH_SIZE *0.5f;
|
|
67 | 67 |
Static3D center = new Static3D(centerPoint,centerPoint,centerPoint); |
68 | 68 |
|
69 | 69 |
mNodeEffects[1] = new VertexEffectSink(degreeDyn,center); |
src/main/java/org/distorted/magic/RubikRenderer.java | ||
---|---|---|
40 | 40 |
public class RubikRenderer implements GLSurfaceView.Renderer, EffectListener |
41 | 41 |
{ |
42 | 42 |
static final float CAMERA_DISTANCE = 0.6f; // 0.6 of the length of min(scrHeight,scrWidth) |
43 |
public static final int TEXTURE_SIZE = 600;
|
|
43 |
public static final int NODE_MESH_SIZE = 600;
|
|
44 | 44 |
|
45 | 45 |
private RubikSurfaceView mView; |
46 | 46 |
private DistortedScreen mScreen; |
src/main/java/org/distorted/object/Cubit.java | ||
---|---|---|
160 | 160 |
float z = position.get2(); |
161 | 161 |
|
162 | 162 |
float nc = parent.mSize*0.5f; |
163 |
int TS = RubikObject.TEXTURE_SIZE; |
|
164 |
Static3D vector = new Static3D(TS*(x-nc), TS*(y-nc), TS*(z-nc)); |
|
163 |
Static3D vector = new Static3D(x-nc, y-nc, z-nc); |
|
165 | 164 |
|
166 | 165 |
mParent = parent; |
167 | 166 |
mMesh = mesh; |
... | ... | |
172 | 171 |
mCurrentPosition = position; |
173 | 172 |
mRotateEffect = new MatrixEffectRotate(mRotationAngle, mRotationAxis, matrCenter); |
174 | 173 |
|
175 |
mEffect = new DistortedEffects(); |
|
174 |
mEffect = new DistortedEffects(1);
|
|
176 | 175 |
mEffect.apply(mParent.mSinkEffect); |
177 | 176 |
mEffect.apply( new MatrixEffectMove(vector) ); |
178 | 177 |
mEffect.apply( new MatrixEffectQuaternion(mQuatScramble, matrCenter)); |
src/main/java/org/distorted/object/RubikObject.java | ||
---|---|---|
42 | 42 |
public abstract class RubikObject extends DistortedNode |
43 | 43 |
{ |
44 | 44 |
static final float OBJECT_SCREEN_RATIO = 0.5f; |
45 |
static final int TEXTURE_SIZE = 100; |
|
46 | 45 |
final float[] LEGAL_QUATS; |
47 | 46 |
|
48 | 47 |
private static final int POST_ROTATION_MILLISEC = 500; |
... | ... | |
51 | 50 |
private Static3D mRotAxis; |
52 | 51 |
private Static3D mMove, mScale, mNodeMove, mNodeScale; |
53 | 52 |
private Static4D mQuatAccumulated; |
54 |
private DistortedTexture mNodeTexture; |
|
55 | 53 |
private Cubit[] mCubits; |
56 | 54 |
|
57 | 55 |
int mSize; |
... | ... | |
74 | 72 |
LEGAL_QUATS = getLegalQuats(); |
75 | 73 |
NUM_CUBITS = getNumCubits(size); |
76 | 74 |
|
77 |
mNodeTexture = texture; |
|
78 | 75 |
mSize = size; |
79 | 76 |
|
80 | 77 |
mRotationAngleStatic = new Static1D(0); |
... | ... | |
88 | 85 |
|
89 | 86 |
mQuatAccumulated = quatAcc; |
90 | 87 |
|
91 |
Static3D sinkCenter = new Static3D(TEXTURE_SIZE*0.5f, TEXTURE_SIZE*0.5f, TEXTURE_SIZE*0.5f);
|
|
88 |
Static3D sinkCenter = new Static3D(0.5f,0.5f,0.5f);
|
|
92 | 89 |
Static3D matrCenter = new Static3D(0,0,0); |
93 |
Static4D region = new Static4D(0,0,0, TEXTURE_SIZE*0.72f);
|
|
90 |
Static4D region = new Static4D(0,0,0,0.72f); |
|
94 | 91 |
|
95 | 92 |
mSinkEffect = new VertexEffectSink( new Static1D(getSinkStrength()), sinkCenter, region ); |
96 | 93 |
mMoveEffect = new MatrixEffectMove(mMove); |
... | ... | |
105 | 102 |
effects.apply(nodeMoveEffect); |
106 | 103 |
|
107 | 104 |
mCubits = new Cubit[NUM_CUBITS]; |
108 |
mTexture = new DistortedTexture(TEXTURE_SIZE,TEXTURE_SIZE);
|
|
105 |
mTexture = new DistortedTexture(); |
|
109 | 106 |
|
110 | 107 |
int vertices = (int)(24.0f/mSize + 2.0f); |
111 | 108 |
int[][] positions = getCubitPositions(size); |
... | ... | |
172 | 169 |
|
173 | 170 |
public void recomputeScaleFactor(int screenWidth, int screenHeight) |
174 | 171 |
{ |
175 |
int texW = mNodeTexture.getWidth();
|
|
176 |
int texH = mNodeTexture.getHeight();
|
|
172 |
int sizeX = getEffects().getStartchX();
|
|
173 |
int sizeY = getEffects().getStartchY();
|
|
177 | 174 |
|
178 |
if( (float)texH/texW > (float)screenHeight/screenWidth )
|
|
175 |
if( (float)sizeY/sizeX > (float)screenHeight/screenWidth )
|
|
179 | 176 |
{ |
180 |
int w = (screenHeight*texW)/texH;
|
|
181 |
float factor = (float)screenHeight/texH;
|
|
177 |
int w = (screenHeight*sizeX)/sizeY;
|
|
178 |
float factor = (float)screenHeight/sizeY;
|
|
182 | 179 |
mNodeMove.set((screenWidth-w)*0.5f ,0, 0); |
183 | 180 |
mNodeScale.set(factor,factor,factor); |
184 | 181 |
} |
185 | 182 |
else |
186 | 183 |
{ |
187 |
int h = (screenWidth*texH)/texW;
|
|
188 |
float factor = (float)screenWidth/texW;
|
|
184 |
int h = (screenWidth*sizeY)/sizeX;
|
|
185 |
float factor = (float)screenWidth/sizeX;
|
|
189 | 186 |
mNodeMove.set(0,(screenHeight-h)*0.5f,0); |
190 | 187 |
mNodeScale.set(factor,factor,factor); |
191 | 188 |
} |
192 | 189 |
|
193 |
float scaleFactor = (OBJECT_SCREEN_RATIO*texW/(TEXTURE_SIZE*mSize));
|
|
190 |
float scaleFactor = (OBJECT_SCREEN_RATIO*sizeX/mSize);
|
|
194 | 191 |
|
195 |
mMove.set( texW*0.5f , texH*0.5f , 0.0f );
|
|
192 |
mMove.set( sizeX*0.5f , sizeY*0.5f , 0.0f );
|
|
196 | 193 |
mScale.set(scaleFactor,scaleFactor,scaleFactor); |
197 | 194 |
} |
198 | 195 |
|
src/main/java/org/distorted/object/RubikObjectList.java | ||
---|---|---|
25 | 25 |
import org.distorted.library.type.Static4D; |
26 | 26 |
import org.distorted.magic.R; |
27 | 27 |
|
28 |
import static org.distorted.magic.RubikRenderer.TEXTURE_SIZE;
|
|
28 |
import static org.distorted.magic.RubikRenderer.NODE_MESH_SIZE;
|
|
29 | 29 |
|
30 | 30 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
31 | 31 |
|
... | ... | |
84 | 84 |
|
85 | 85 |
public RubikObject create(Static4D quatCur, Static4D quatAcc) |
86 | 86 |
{ |
87 |
DistortedTexture texture = new DistortedTexture(TEXTURE_SIZE,TEXTURE_SIZE);
|
|
88 |
DistortedEffects effects = new DistortedEffects(); |
|
87 |
DistortedTexture texture = new DistortedTexture(); |
|
88 |
DistortedEffects effects = new DistortedEffects(NODE_MESH_SIZE,NODE_MESH_SIZE,0);
|
|
89 | 89 |
MeshRectangles mesh = new MeshRectangles(20,20); // mesh of the node, not of the cubits |
90 | 90 |
|
91 | 91 |
return new RubikCube(mObjectSize, quatCur, quatAcc, texture, mesh, effects); |
Also available in: Unified diff
Move the 'pre-multiply mesh before applying any effects' thing from [(Xsize of texture, Ysize of texture) x Mesh's zFactor] to Effects.setStretch(sx,sy,sz)