Project

General

Profile

« Previous | Next » 

Revision 0df17fad

Added by Leszek Koltunski almost 8 years ago

- Javadoc for EffectNames
- make Matrix effects consistent with the rest (center of effect as last parameter!)
- bugfix for yesterday's bugfix (we only want to send 'EFFECT_REMOVED' messages if it was really the Application that called 'abortAll' and not when we are cleaning up everything)

View differences:

src/main/java/org/distorted/library/EffectQueueMatrix.java
105 105
   
106 106
    for(int i=0; i<mNumEffects; i++)
107 107
      {
108
      if( mInter[0][i]!=null && mInter[0][i].interpolateMain(mUniforms ,NUM_UNIFORMS*i+3, mCurrentDuration[i], step) )
108
      if( mInter[0][i]!=null && mInter[0][i].interpolateMain(mUniforms ,NUM_UNIFORMS*i, mCurrentDuration[i], step) )
109 109
        {
110 110
        for(int j=0; j<mNumListeners; j++)
111 111
          EffectMessageSender.newMessage( mListeners.elementAt(j),
......
115 115
                                          mBitmapID,
116 116
                                          null);
117 117

  
118
        if( EffectNames.isUnity(mType[i], mUniforms, NUM_UNIFORMS*i+3) )
118
        if( EffectNames.isUnity(mType[i], mUniforms, NUM_UNIFORMS*i) )
119 119
          {
120 120
          remove(i);
121 121
          i--;
......
125 125

  
126 126
      if( mInter[1][i]!=null )
127 127
        {
128
        mInter[1][i].interpolateMain(mUniforms, NUM_UNIFORMS*i, mCurrentDuration[i]);
128
        mInter[1][i].interpolateMain(mUniforms, NUM_UNIFORMS*i+4, mCurrentDuration[i]);
129 129
        }
130 130

  
131 131
      mCurrentDuration[i] += step;
......
161 161
      {
162 162
      if (mType[i] == EffectNames.ROTATE.ordinal() )
163 163
        {
164
        x = mUniforms[NUM_UNIFORMS*i  ];
165
        y = mUniforms[NUM_UNIFORMS*i+1];
166
        z = mUniforms[NUM_UNIFORMS*i+2];
164
        x = mUniforms[NUM_UNIFORMS*i+4];
165
        y = mUniforms[NUM_UNIFORMS*i+5];
166
        z = mUniforms[NUM_UNIFORMS*i+6];
167 167

  
168 168
        Matrix.translateM(viewMatrix, 0, x,-y, z); 
169
        Matrix.rotateM( viewMatrix, 0, mUniforms[NUM_UNIFORMS*i+3], mUniforms[NUM_UNIFORMS*i+4], mUniforms[NUM_UNIFORMS*i+5], mUniforms[NUM_UNIFORMS*i+6]);  
169
        Matrix.rotateM( viewMatrix, 0, mUniforms[NUM_UNIFORMS*i], mUniforms[NUM_UNIFORMS*i+1], mUniforms[NUM_UNIFORMS*i+2], mUniforms[NUM_UNIFORMS*i+3]);
170 170
        Matrix.translateM(viewMatrix, 0,-x, y,-z);  
171 171
        }
172 172
      else if(mType[i] == EffectNames.QUATERNION.ordinal() )
173 173
        {
174
        x = mUniforms[NUM_UNIFORMS*i  ];
175
        y = mUniforms[NUM_UNIFORMS*i+1];
176
        z = mUniforms[NUM_UNIFORMS*i+2];
174
        x = mUniforms[NUM_UNIFORMS*i+4];
175
        y = mUniforms[NUM_UNIFORMS*i+5];
176
        z = mUniforms[NUM_UNIFORMS*i+6];
177 177
     	
178 178
        Matrix.translateM(viewMatrix, 0, x,-y, z); 
179
        multiplyByQuat(viewMatrix, mUniforms[NUM_UNIFORMS*i+3], mUniforms[NUM_UNIFORMS*i+4], mUniforms[NUM_UNIFORMS*i+5], mUniforms[NUM_UNIFORMS*i+6]);
179
        multiplyByQuat(viewMatrix, mUniforms[NUM_UNIFORMS*i], mUniforms[NUM_UNIFORMS*i+1], mUniforms[NUM_UNIFORMS*i+2], mUniforms[NUM_UNIFORMS*i+3]);
180 180
        Matrix.translateM(viewMatrix, 0,-x, y,-z);  
181 181
        }
182 182
      else if(mType[i] == EffectNames.MOVE.ordinal() )
183 183
        {
184
        sx = mUniforms[NUM_UNIFORMS*i+3];   
185
        sy = mUniforms[NUM_UNIFORMS*i+4];   
186
        sz = mUniforms[NUM_UNIFORMS*i+5];   
184
        sx = mUniforms[NUM_UNIFORMS*i  ];
185
        sy = mUniforms[NUM_UNIFORMS*i+1];
186
        sz = mUniforms[NUM_UNIFORMS*i+2];
187 187
        
188 188
        Matrix.translateM(viewMatrix, 0, sx,-sy, sz);   
189 189
        }
190 190
      else if(mType[i] == EffectNames.SCALE.ordinal() )
191 191
        {
192
        sx = mUniforms[NUM_UNIFORMS*i+3];   
193
        sy = mUniforms[NUM_UNIFORMS*i+4];   
194
        sz = mUniforms[NUM_UNIFORMS*i+5];   
192
        sx = mUniforms[NUM_UNIFORMS*i  ];
193
        sy = mUniforms[NUM_UNIFORMS*i+1];
194
        sz = mUniforms[NUM_UNIFORMS*i+2];
195 195

  
196 196
        Matrix.scaleM(viewMatrix, 0, sx, sy, sz);  
197 197
        }
198 198
      else if(mType[i] == EffectNames.SHEAR.ordinal() )
199 199
        {
200
        x  = mUniforms[NUM_UNIFORMS*i  ];
201
        y  = mUniforms[NUM_UNIFORMS*i+1];
202
        z  = mUniforms[NUM_UNIFORMS*i+2];
203
        
204
        sx = mUniforms[NUM_UNIFORMS*i+3];   
205
        sy = mUniforms[NUM_UNIFORMS*i+4];   
206
        sz = mUniforms[NUM_UNIFORMS*i+5];   
207
        
200
        sx = mUniforms[NUM_UNIFORMS*i  ];
201
        sy = mUniforms[NUM_UNIFORMS*i+1];
202
        sz = mUniforms[NUM_UNIFORMS*i+2];
203

  
204
        x  = mUniforms[NUM_UNIFORMS*i+4];
205
        y  = mUniforms[NUM_UNIFORMS*i+5];
206
        z  = mUniforms[NUM_UNIFORMS*i+6];
207

  
208 208
        Matrix.translateM(viewMatrix, 0, x,-y, z); 
209 209
      
210 210
        viewMatrix[4] += sx*viewMatrix[0]; // Multiply viewMatrix by 1 x 0 0 , i.e. X-shear. TODO: change this so it is symmetric w respect to all the axis.
......
260 260
      else if( vector instanceof Static3D )
261 261
        {
262 262
        mInter[0][mNumEffects] = null;
263
        mUniforms[NUM_UNIFORMS*mNumEffects+3] = ((Static3D)vector).getX();
264
        mUniforms[NUM_UNIFORMS*mNumEffects+4] = ((Static3D)vector).getY();
265
        mUniforms[NUM_UNIFORMS*mNumEffects+5] = ((Static3D)vector).getZ();
263
        mUniforms[NUM_UNIFORMS*mNumEffects  ] = ((Static3D)vector).getX();
264
        mUniforms[NUM_UNIFORMS*mNumEffects+1] = ((Static3D)vector).getY();
265
        mUniforms[NUM_UNIFORMS*mNumEffects+2] = ((Static3D)vector).getZ();
266 266
        }
267 267
      else return -1;
268 268

  
......
275 275
///////////////////////////////////////////////////////////////////////////////////////////////////
276 276
// rotate - static axis
277 277

  
278
  synchronized long add(EffectNames eln, Data3D center, Data1D angle, Static3D axis)
278
  synchronized long add(EffectNames eln, Data1D angle, Static3D axis, Data3D center)
279 279
    {
280 280
    if( mMax[INDEX]>mNumEffects )
281 281
      {
282
           if( center instanceof Dynamic3D) mInter[1][mNumEffects] = (Dynamic3D)center;
283
      else if( center instanceof Static3D )
284
        {
285
        mInter[1][mNumEffects] = null;
286
        mUniforms[NUM_UNIFORMS*mNumEffects  ] = ((Static3D)center).getX();
287
        mUniforms[NUM_UNIFORMS*mNumEffects+1] = ((Static3D)center).getY();
288
        mUniforms[NUM_UNIFORMS*mNumEffects+2] = ((Static3D)center).getZ();
289
        }
290
      else return -1;
291

  
292 282
           if( angle instanceof Dynamic1D) mInter[0][mNumEffects] = (Dynamic1D)angle;
293 283
      else if( angle instanceof Static1D)
294 284
        {
295 285
        mInter[0][mNumEffects] = null;
296
        mUniforms[NUM_UNIFORMS*mNumEffects+3] = ((Static1D)angle).getX();
286
        mUniforms[NUM_UNIFORMS*mNumEffects] = ((Static1D)angle).getX();
297 287
        }
298 288
      else return -1;
299 289

  
300
      mUniforms[NUM_UNIFORMS*mNumEffects+4] = axis.getX();
301
      mUniforms[NUM_UNIFORMS*mNumEffects+5] = axis.getY();
302
      mUniforms[NUM_UNIFORMS*mNumEffects+6] = axis.getZ();
290
      mUniforms[NUM_UNIFORMS*mNumEffects+1] = axis.getX();
291
      mUniforms[NUM_UNIFORMS*mNumEffects+2] = axis.getY();
292
      mUniforms[NUM_UNIFORMS*mNumEffects+3] = axis.getZ();
293

  
294
      if( center instanceof Dynamic3D) mInter[1][mNumEffects] = (Dynamic3D)center;
295
      else if( center instanceof Static3D )
296
        {
297
        mInter[1][mNumEffects] = null;
298
        mUniforms[NUM_UNIFORMS*mNumEffects+4] = ((Static3D)center).getX();
299
        mUniforms[NUM_UNIFORMS*mNumEffects+5] = ((Static3D)center).getY();
300
        mUniforms[NUM_UNIFORMS*mNumEffects+6] = ((Static3D)center).getZ();
301
        }
302
      else return -1;
303 303

  
304 304
      return addBase(eln);
305 305
      }
......
310 310
///////////////////////////////////////////////////////////////////////////////////////////////////
311 311
// quaternion or rotate - dynamic axis
312 312

  
313
  synchronized long add(EffectNames eln, Data3D center, Data4D data)
313
  synchronized long add(EffectNames eln, Data4D data, Data3D center)
314 314
    {
315 315
    if( mMax[INDEX]>mNumEffects )
316 316
      {
317
           if( center instanceof Dynamic3D) mInter[1][mNumEffects] = (Dynamic3D)center;
318
      else if( center instanceof Static3D )
319
        {
320
        mInter[1][mNumEffects] = null;
321
        mUniforms[NUM_UNIFORMS*mNumEffects  ] = ((Static3D)center).getX();
322
        mUniforms[NUM_UNIFORMS*mNumEffects+1] = ((Static3D)center).getY();
323
        mUniforms[NUM_UNIFORMS*mNumEffects+2] = ((Static3D)center).getZ();
324
        }
325
      else return -1;
326

  
327 317
           if( data instanceof Dynamic4D  ) mInter[0][mNumEffects] = (Dynamic4D)data;
328 318
      else if( data instanceof DynamicQuat) mInter[0][mNumEffects] = (DynamicQuat)data;
329 319
      else if( data instanceof Static4D   )
330 320
        {
331 321
        mInter[0][mNumEffects] = null;
332
        mUniforms[NUM_UNIFORMS*mNumEffects+3] = ((Static4D)data).getX();
333
        mUniforms[NUM_UNIFORMS*mNumEffects+4] = ((Static4D)data).getY();
334
        mUniforms[NUM_UNIFORMS*mNumEffects+5] = ((Static4D)data).getZ();
335
        mUniforms[NUM_UNIFORMS*mNumEffects+6] = ((Static4D)data).getW();
322
        mUniforms[NUM_UNIFORMS*mNumEffects  ] = ((Static4D)data).getX();
323
        mUniforms[NUM_UNIFORMS*mNumEffects+1] = ((Static4D)data).getY();
324
        mUniforms[NUM_UNIFORMS*mNumEffects+2] = ((Static4D)data).getZ();
325
        mUniforms[NUM_UNIFORMS*mNumEffects+3] = ((Static4D)data).getW();
326
        }
327
      else return -1;
328

  
329
      if( center instanceof Dynamic3D) mInter[1][mNumEffects] = (Dynamic3D)center;
330
      else if( center instanceof Static3D )
331
        {
332
        mInter[1][mNumEffects] = null;
333
        mUniforms[NUM_UNIFORMS*mNumEffects+4] = ((Static3D)center).getX();
334
        mUniforms[NUM_UNIFORMS*mNumEffects+5] = ((Static3D)center).getY();
335
        mUniforms[NUM_UNIFORMS*mNumEffects+6] = ((Static3D)center).getZ();
336 336
        }
337 337
      else return -1;
338 338

  
......
345 345
///////////////////////////////////////////////////////////////////////////////////////////////////
346 346
// shear
347 347

  
348
  synchronized long add(EffectNames eln, Data3D center, Data3D shear)
348
  synchronized long add(EffectNames eln, Data3D shear, Data3D center)
349 349
    {
350 350
    if( mMax[INDEX]>mNumEffects )
351 351
      {
352
           if( center instanceof Dynamic3D) mInter[1][mNumEffects] = (Dynamic3D)center;
353
      else if( center instanceof Static3D )
352
           if( shear instanceof Dynamic3D) mInter[0][mNumEffects] = (Dynamic3D)shear;
353
      else if( shear instanceof Static3D )
354 354
        {
355
        mInter[1][mNumEffects] = null;
356
        mUniforms[NUM_UNIFORMS*mNumEffects  ] = ((Static3D)center).getX();
357
        mUniforms[NUM_UNIFORMS*mNumEffects+1] = ((Static3D)center).getY();
358
        mUniforms[NUM_UNIFORMS*mNumEffects+2] = ((Static3D)center).getZ();
355
        mInter[0][mNumEffects] = null;
356
        mUniforms[NUM_UNIFORMS*mNumEffects  ] = ((Static3D)shear).getX();
357
        mUniforms[NUM_UNIFORMS*mNumEffects+1] = ((Static3D)shear).getY();
358
        mUniforms[NUM_UNIFORMS*mNumEffects+2] = ((Static3D)shear).getZ();
359 359
        }
360 360
      else return -1;
361 361

  
362
           if( shear instanceof Dynamic3D) mInter[0][mNumEffects] = (Dynamic3D)shear;
363
      else if( shear instanceof Static3D )
362
      if( center instanceof Dynamic3D) mInter[1][mNumEffects] = (Dynamic3D)center;
363
      else if( center instanceof Static3D )
364 364
        {
365
        mInter[0][mNumEffects] = null;
366
        mUniforms[NUM_UNIFORMS*mNumEffects+3] = ((Static3D)shear).getX();
367
        mUniforms[NUM_UNIFORMS*mNumEffects+4] = ((Static3D)shear).getY();
368
        mUniforms[NUM_UNIFORMS*mNumEffects+5] = ((Static3D)shear).getZ();
365
        mInter[1][mNumEffects] = null;
366
        mUniforms[NUM_UNIFORMS*mNumEffects+4] = ((Static3D)center).getX();
367
        mUniforms[NUM_UNIFORMS*mNumEffects+5] = ((Static3D)center).getY();
368
        mUniforms[NUM_UNIFORMS*mNumEffects+6] = ((Static3D)center).getZ();
369 369
        }
370 370
      else return -1;
371 371

  

Also available in: Unified diff