Revision 5974d2ae
Added by Leszek Koltunski over 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)