Revision 568b29d8
Added by Leszek Koltunski almost 8 years ago
src/main/java/org/distorted/library/EffectQueueMatrix.java | ||
---|---|---|
23 | 23 |
import android.opengl.Matrix; |
24 | 24 |
|
25 | 25 |
import org.distorted.library.message.EffectMessage; |
26 |
import org.distorted.library.type.Float3D; |
|
27 |
import org.distorted.library.type.Interpolator; |
|
28 |
import org.distorted.library.type.Interpolator1D; |
|
29 |
import org.distorted.library.type.Interpolator3D; |
|
26 |
import org.distorted.library.type.Data1D; |
|
27 |
import org.distorted.library.type.Data3D; |
|
28 |
import org.distorted.library.type.Data4D; |
|
29 |
import org.distorted.library.type.Dynamic1D; |
|
30 |
import org.distorted.library.type.Dynamic3D; |
|
31 |
import org.distorted.library.type.Dynamic4D; |
|
32 |
import org.distorted.library.type.DynamicQuat; |
|
33 |
import org.distorted.library.type.Static1D; |
|
34 |
import org.distorted.library.type.Static3D; |
|
35 |
import org.distorted.library.type.Dynamic; |
|
36 |
import org.distorted.library.type.Static4D; |
|
30 | 37 |
|
31 | 38 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
32 | 39 |
|
... | ... | |
160 | 167 |
x = mUniforms[NUM_UNIFORMS*i ]; |
161 | 168 |
y = mUniforms[NUM_UNIFORMS*i+1]; |
162 | 169 |
z = mUniforms[NUM_UNIFORMS*i+2]; |
163 |
|
|
170 |
|
|
164 | 171 |
Matrix.translateM(viewMatrix, 0, x,-y, z); |
165 | 172 |
Matrix.rotateM( viewMatrix, 0, mUniforms[NUM_UNIFORMS*i+3], mUniforms[NUM_UNIFORMS*i+4], mUniforms[NUM_UNIFORMS*i+5], mUniforms[NUM_UNIFORMS*i+6]); |
166 | 173 |
Matrix.translateM(viewMatrix, 0,-x, y,-z); |
... | ... | |
244 | 251 |
} |
245 | 252 |
|
246 | 253 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
254 |
// move, scale |
|
247 | 255 |
|
248 |
synchronized long add(EffectNames eln, Interpolator i)
|
|
256 |
synchronized long add(EffectNames eln, Data3D vector)
|
|
249 | 257 |
{ |
250 | 258 |
if( mMax[INDEX]>mNumEffects ) |
251 | 259 |
{ |
252 | 260 |
mInterP[mNumEffects] = null; |
253 |
mInterI[mNumEffects] = i; |
|
261 |
|
|
262 |
if( vector instanceof Dynamic3D) mInterI[mNumEffects] = (Dynamic3D)vector; |
|
263 |
else if( vector instanceof Static3D ) |
|
264 |
{ |
|
265 |
mInterI[mNumEffects] = null; |
|
266 |
mUniforms[NUM_UNIFORMS*mNumEffects+3] = ((Static3D)vector).getX(); |
|
267 |
mUniforms[NUM_UNIFORMS*mNumEffects+4] = ((Static3D)vector).getY(); |
|
268 |
mUniforms[NUM_UNIFORMS*mNumEffects+5] = ((Static3D)vector).getZ(); |
|
269 |
} |
|
270 |
else return -1; |
|
254 | 271 |
|
255 | 272 |
return addBase(eln); |
256 | 273 |
} |
... | ... | |
259 | 276 |
} |
260 | 277 |
|
261 | 278 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
262 |
|
|
263 |
synchronized long add(EffectNames eln, Interpolator3D p, Interpolator i) |
|
264 |
{ |
|
265 |
if( mMax[INDEX]>mNumEffects ) |
|
266 |
{ |
|
267 |
mInterP[mNumEffects] = p; |
|
268 |
mInterI[mNumEffects] = i; |
|
269 |
|
|
270 |
return addBase(eln); |
|
271 |
} |
|
272 |
|
|
273 |
return -1; |
|
274 |
} |
|
279 |
// rotate - static axis |
|
275 | 280 |
|
276 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
277 |
|
|
278 |
synchronized long add(EffectNames eln, Float3D p, Interpolator i) |
|
281 |
synchronized long add(EffectNames eln, Data3D center, Data1D angle, Static3D axis) |
|
279 | 282 |
{ |
280 | 283 |
if( mMax[INDEX]>mNumEffects ) |
281 | 284 |
{ |
282 |
mInterP[mNumEffects] = null; |
|
283 |
mInterI[mNumEffects] = i; |
|
284 |
|
|
285 |
mUniforms[NUM_UNIFORMS*mNumEffects ] = p.getX(); |
|
286 |
mUniforms[NUM_UNIFORMS*mNumEffects+1] = p.getY(); |
|
287 |
mUniforms[NUM_UNIFORMS*mNumEffects+2] = p.getZ(); |
|
288 |
|
|
285 |
if( center instanceof Dynamic3D) mInterP[mNumEffects] = (Dynamic3D)center; |
|
286 |
else if( center instanceof Static3D ) |
|
287 |
{ |
|
288 |
mInterP[mNumEffects] = null; |
|
289 |
mUniforms[NUM_UNIFORMS*mNumEffects ] = ((Static3D)center).getX(); |
|
290 |
mUniforms[NUM_UNIFORMS*mNumEffects+1] = ((Static3D)center).getY(); |
|
291 |
mUniforms[NUM_UNIFORMS*mNumEffects+2] = ((Static3D)center).getZ(); |
|
292 |
} |
|
293 |
else return -1; |
|
294 |
|
|
295 |
if( angle instanceof Dynamic1D) mInterI[mNumEffects] = (Dynamic1D)angle; |
|
296 |
else if( angle instanceof Static1D) |
|
297 |
{ |
|
298 |
mInterI[mNumEffects] = null; |
|
299 |
mUniforms[NUM_UNIFORMS*mNumEffects+3] = ((Static1D)angle).getX(); |
|
300 |
} |
|
301 |
else return -1; |
|
302 |
|
|
303 |
mUniforms[NUM_UNIFORMS*mNumEffects+4] = axis.getX(); |
|
304 |
mUniforms[NUM_UNIFORMS*mNumEffects+5] = axis.getY(); |
|
305 |
mUniforms[NUM_UNIFORMS*mNumEffects+6] = axis.getZ(); |
|
306 |
|
|
289 | 307 |
return addBase(eln); |
290 | 308 |
} |
291 | 309 |
|
... | ... | |
293 | 311 |
} |
294 | 312 |
|
295 | 313 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
296 |
|
|
297 |
synchronized long add(EffectNames eln, Float3D p, Interpolator1D i, float aX, float aY, float aZ) |
|
314 |
// quaternion or rotate - dynamic axis |
|
315 |
|
|
316 |
synchronized long add(EffectNames eln, Data3D center, Data4D data) |
|
298 | 317 |
{ |
299 | 318 |
if( mMax[INDEX]>mNumEffects ) |
300 | 319 |
{ |
301 |
mInterP[mNumEffects] = null; |
|
302 |
mInterI[mNumEffects] = i; |
|
303 |
|
|
304 |
mUniforms[NUM_UNIFORMS*mNumEffects ] = p.getX(); |
|
305 |
mUniforms[NUM_UNIFORMS*mNumEffects+1] = p.getY(); |
|
306 |
mUniforms[NUM_UNIFORMS*mNumEffects+2] = p.getZ(); |
|
307 |
|
|
308 |
mUniforms[NUM_UNIFORMS*mNumEffects+4] = aX; |
|
309 |
mUniforms[NUM_UNIFORMS*mNumEffects+5] = aY; |
|
310 |
mUniforms[NUM_UNIFORMS*mNumEffects+6] = aZ; |
|
311 |
|
|
320 |
if( center instanceof Dynamic3D) mInterP[mNumEffects] = (Dynamic3D)center; |
|
321 |
else if( center instanceof Static3D ) |
|
322 |
{ |
|
323 |
mInterP[mNumEffects] = null; |
|
324 |
mUniforms[NUM_UNIFORMS*mNumEffects ] = ((Static3D)center).getX(); |
|
325 |
mUniforms[NUM_UNIFORMS*mNumEffects+1] = ((Static3D)center).getY(); |
|
326 |
mUniforms[NUM_UNIFORMS*mNumEffects+2] = ((Static3D)center).getZ(); |
|
327 |
} |
|
328 |
else return -1; |
|
329 |
|
|
330 |
if( data instanceof Dynamic4D ) mInterI[mNumEffects] = (Dynamic4D)data; |
|
331 |
else if( data instanceof DynamicQuat) mInterI[mNumEffects] = (DynamicQuat)data; |
|
332 |
else if( data instanceof Static4D ) |
|
333 |
{ |
|
334 |
mInterI[mNumEffects] = null; |
|
335 |
mUniforms[NUM_UNIFORMS*mNumEffects+3] = ((Static4D)data).getX(); |
|
336 |
mUniforms[NUM_UNIFORMS*mNumEffects+4] = ((Static4D)data).getY(); |
|
337 |
mUniforms[NUM_UNIFORMS*mNumEffects+5] = ((Static4D)data).getZ(); |
|
338 |
mUniforms[NUM_UNIFORMS*mNumEffects+6] = ((Static4D)data).getW(); |
|
339 |
} |
|
340 |
else return -1; |
|
341 |
|
|
312 | 342 |
return addBase(eln); |
313 | 343 |
} |
314 |
|
|
344 |
|
|
315 | 345 |
return -1; |
316 | 346 |
} |
317 | 347 |
|
318 | 348 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
319 |
|
|
320 |
synchronized long add(EffectNames eln, Interpolator3D p, Interpolator1D i, float aX, float aY, float aZ) |
|
349 |
// shear |
|
350 |
|
|
351 |
synchronized long add(EffectNames eln, Data3D center, Data3D shear) |
|
321 | 352 |
{ |
322 | 353 |
if( mMax[INDEX]>mNumEffects ) |
323 | 354 |
{ |
324 |
mInterP[mNumEffects] = p; |
|
325 |
mInterI[mNumEffects] = i; |
|
326 |
|
|
327 |
mUniforms[NUM_UNIFORMS*mNumEffects+4] = aX; |
|
328 |
mUniforms[NUM_UNIFORMS*mNumEffects+5] = aY; |
|
329 |
mUniforms[NUM_UNIFORMS*mNumEffects+6] = aZ; |
|
330 |
|
|
355 |
if( center instanceof Dynamic3D) mInterP[mNumEffects] = (Dynamic3D)center; |
|
356 |
else if( center instanceof Static3D ) |
|
357 |
{ |
|
358 |
mInterP[mNumEffects] = null; |
|
359 |
mUniforms[NUM_UNIFORMS*mNumEffects ] = ((Static3D)center).getX(); |
|
360 |
mUniforms[NUM_UNIFORMS*mNumEffects+1] = ((Static3D)center).getY(); |
|
361 |
mUniforms[NUM_UNIFORMS*mNumEffects+2] = ((Static3D)center).getZ(); |
|
362 |
} |
|
363 |
else return -1; |
|
364 |
|
|
365 |
if( shear instanceof Dynamic3D) mInterI[mNumEffects] = (Dynamic3D)shear; |
|
366 |
else if( shear instanceof Static3D ) |
|
367 |
{ |
|
368 |
mInterI[mNumEffects] = null; |
|
369 |
mUniforms[NUM_UNIFORMS*mNumEffects+3] = ((Static3D)shear).getX(); |
|
370 |
mUniforms[NUM_UNIFORMS*mNumEffects+4] = ((Static3D)shear).getY(); |
|
371 |
mUniforms[NUM_UNIFORMS*mNumEffects+5] = ((Static3D)shear).getZ(); |
|
372 |
} |
|
373 |
else return -1; |
|
374 |
|
|
331 | 375 |
return addBase(eln); |
332 | 376 |
} |
333 | 377 |
|
334 | 378 |
return -1; |
335 | 379 |
} |
336 |
|
|
337 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
338 |
|
|
339 |
synchronized long add(EffectNames eln, Float3D p, float aA, float aX, float aY, float aZ) |
|
340 |
{ |
|
341 |
if( mMax[INDEX]>mNumEffects ) |
|
342 |
{ |
|
343 |
mInterP[mNumEffects] = null; |
|
344 |
mInterI[mNumEffects] = null; |
|
345 |
|
|
346 |
mUniforms[NUM_UNIFORMS*mNumEffects ] = p.getX(); |
|
347 |
mUniforms[NUM_UNIFORMS*mNumEffects+1] = p.getY(); |
|
348 |
mUniforms[NUM_UNIFORMS*mNumEffects+2] = p.getZ(); |
|
349 |
mUniforms[NUM_UNIFORMS*mNumEffects+3] = aA; |
|
350 |
mUniforms[NUM_UNIFORMS*mNumEffects+4] = aX; |
|
351 |
mUniforms[NUM_UNIFORMS*mNumEffects+5] = aY; |
|
352 |
mUniforms[NUM_UNIFORMS*mNumEffects+6] = aZ; |
|
353 |
|
|
354 |
return addBase(eln); |
|
355 |
} |
|
356 |
|
|
357 |
return -1; |
|
358 |
} |
|
359 |
|
|
360 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
361 | 380 |
} |
Also available in: Unified diff
Major push towards simplifying DistortedObject's public API.
All MATRIX effects are using the new API - the 'DataND' marker interfaces.