Revision 98bfe573
Added by Leszek Koltunski 8 days ago
src/main/java/org/distorted/library/mesh/MeshBase.kt | ||
---|---|---|
394 | 394 |
var mesh: MeshBase |
395 | 395 |
var comp: TexComponent |
396 | 396 |
val numMeshes = meshes.size |
397 |
var origVertices = this.numVertices |
|
397 |
var origVertices = numVertices |
|
398 |
var numVert: Int |
|
398 | 399 |
val origTexComponents: Int |
399 | 400 |
var numTexComponents: Int |
400 | 401 |
var origEffComponents = 0 |
... | ... | |
403 | 404 |
if (origVertices>0) |
404 | 405 |
{ |
405 | 406 |
origTexComponents = mTexComponent!!.size |
406 |
this.numVertices += (if (this.numVertices%2==1) 2 else 1)
|
|
407 |
mTexComponent!![origTexComponents-1].mEndIndex = this.numVertices-1
|
|
407 |
numVertices += (if (numVertices%2==1) 2 else 1)
|
|
408 |
mTexComponent!![origTexComponents-1].mEndIndex = numVertices-1 |
|
408 | 409 |
origEffComponents = mEffComponent!!.size |
409 |
mEffComponent!![origEffComponents-1] = this.numVertices-1
|
|
410 |
mEffComponent!![origEffComponents-1] = numVertices-1 |
|
410 | 411 |
} |
411 | 412 |
|
412 | 413 |
for (i in 0 until numMeshes) |
... | ... | |
414 | 415 |
mesh = meshes[i] |
415 | 416 |
numTexComponents = mesh.mTexComponent!!.size |
416 | 417 |
numEffComponents = mesh.mEffComponent!!.size |
417 |
numVertices = mesh.numVertices
|
|
418 |
numVert = mesh.numVertices |
|
418 | 419 |
|
419 |
val extraVerticesBefore = if (this.numVertices==0) 0 else 1
|
|
420 |
val extraVerticesAfter = if ((i==numMeshes-1)) 0 else (if (numVertices%2==1) 2 else 1)
|
|
420 |
val extraVerticesBefore = if (numVertices==0) 0 else 1 |
|
421 |
val extraVerticesAfter = if ((i==numMeshes-1)) 0 else (if (numVert%2==1) 2 else 1)
|
|
421 | 422 |
|
422 | 423 |
for (j in 0 until numTexComponents) |
423 | 424 |
{ |
424 | 425 |
comp = TexComponent(mesh.mTexComponent!![j]) |
425 |
comp.mEndIndex += (extraVerticesBefore+this.numVertices)
|
|
426 |
comp.mEndIndex += (extraVerticesBefore+numVertices) |
|
426 | 427 |
if (j==numTexComponents-1) comp.mEndIndex += extraVerticesAfter |
427 | 428 |
mTexComponent!!.add(comp) |
428 | 429 |
} |
... | ... | |
430 | 431 |
for (j in 0 until numEffComponents) |
431 | 432 |
{ |
432 | 433 |
var index = mesh.mEffComponent!![j] |
433 |
index += (extraVerticesBefore+this.numVertices)
|
|
434 |
index += (extraVerticesBefore+numVertices) |
|
434 | 435 |
if (j==numEffComponents-1) index += extraVerticesAfter |
435 | 436 |
mEffComponent!!.add(index) |
436 | 437 |
|
... | ... | |
442 | 443 |
} |
443 | 444 |
} |
444 | 445 |
|
445 |
this.numVertices += (extraVerticesBefore+numVertices+extraVerticesAfter)
|
|
446 |
numVertices += (extraVerticesBefore+numVert+extraVerticesAfter)
|
|
446 | 447 |
} |
447 | 448 |
|
448 |
val newAttribs1 = FloatArray(VERT1_ATTRIBS*this.numVertices)
|
|
449 |
val newAttribs2 = FloatArray(VERT2_ATTRIBS*this.numVertices)
|
|
450 |
numVertices = origVertices
|
|
449 |
val newAttribs1 = FloatArray(VERT1_ATTRIBS*numVertices) |
|
450 |
val newAttribs2 = FloatArray(VERT2_ATTRIBS*numVertices) |
|
451 |
numVert = origVertices |
|
451 | 452 |
|
452 | 453 |
if (origVertices>0) |
453 | 454 |
{ |
... | ... | |
459 | 460 |
mVertAttribs2?.copyInto(newAttribs2, 0 , 0 , v2) |
460 | 461 |
mVertAttribs2?.copyInto(newAttribs2, v2-VERT2_ATTRIBS, v2, v2+VERT2_ATTRIBS) |
461 | 462 |
*/ |
462 |
|
|
463 |
System.arraycopy(mVertAttribs1, 0, newAttribs1, 0, v1) |
|
464 |
System.arraycopy(mVertAttribs1, v1-VERT1_ATTRIBS, newAttribs1, v1, VERT1_ATTRIBS) |
|
465 |
System.arraycopy(mVertAttribs2, 0, newAttribs2, 0, v2) |
|
466 |
System.arraycopy(mVertAttribs2, v2-VERT2_ATTRIBS, newAttribs2, v2, VERT2_ATTRIBS) |
|
467 |
|
|
463 |
System.arraycopy(mVertAttribs1, 0, newAttribs1, 0, VERT1_ATTRIBS*numVert); |
|
464 |
System.arraycopy(mVertAttribs1, v1-VERT1_ATTRIBS, newAttribs1, v1, VERT1_ATTRIBS ); |
|
465 |
System.arraycopy(mVertAttribs2, 0, newAttribs2, 0, VERT2_ATTRIBS*numVert); |
|
466 |
System.arraycopy(mVertAttribs2, v2-VERT2_ATTRIBS, newAttribs2, v2, VERT2_ATTRIBS ); |
|
468 | 467 |
origVertices++ |
469 | 468 |
|
470 |
if (numVertices%2==1)
|
|
469 |
if (numVert%2==1) |
|
471 | 470 |
{ |
472 | 471 |
val w1 = VERT1_ATTRIBS*origVertices |
473 | 472 |
val w2 = VERT2_ATTRIBS*origVertices |
... | ... | |
475 | 474 |
mVertAttribs1?.copyInto(newAttribs1,w1-VERT1_ATTRIBS,w1,w1+VERT1_ATTRIBS) |
476 | 475 |
mVertAttribs2?.copyInto(newAttribs2,w2-VERT2_ATTRIBS,w2,w2+VERT2_ATTRIBS) |
477 | 476 |
*/ |
478 |
|
|
479 | 477 |
System.arraycopy(mVertAttribs1, w1-VERT1_ATTRIBS, newAttribs1, w1, VERT1_ATTRIBS) |
480 | 478 |
System.arraycopy(mVertAttribs2, w2-VERT2_ATTRIBS, newAttribs2, w2, VERT2_ATTRIBS) |
481 |
|
|
482 | 479 |
origVertices++ |
483 | 480 |
} |
484 | 481 |
} |
... | ... | |
486 | 483 |
for (i in 0 until numMeshes) |
487 | 484 |
{ |
488 | 485 |
mesh = meshes[i] |
489 |
numVertices = mesh.numVertices
|
|
486 |
numVert = mesh.numVertices |
|
490 | 487 |
|
491 | 488 |
if (origVertices>0) |
492 | 489 |
{ |
... | ... | |
496 | 493 |
mesh.mVertAttribs1?.copyInto(newAttribs1,0, v1, v1+VERT1_ATTRIBS) |
497 | 494 |
mesh.mVertAttribs2?.copyInto(newAttribs2,0, v2, v2+VERT2_ATTRIBS) |
498 | 495 |
*/ |
499 |
|
|
500 |
System.arraycopy(mesh.mVertAttribs1, 0, newAttribs1, VERT1_ATTRIBS*origVertices, VERT1_ATTRIBS) |
|
501 |
System.arraycopy(mesh.mVertAttribs2, 0, newAttribs2, VERT2_ATTRIBS*origVertices, VERT2_ATTRIBS) |
|
502 |
|
|
496 |
System.arraycopy(mesh.mVertAttribs1, 0, newAttribs1, v1, VERT1_ATTRIBS) |
|
497 |
System.arraycopy(mesh.mVertAttribs2, 0, newAttribs2, v2, VERT2_ATTRIBS) |
|
503 | 498 |
origVertices++ |
504 | 499 |
} |
505 | 500 |
val v1 = VERT1_ATTRIBS*origVertices |
... | ... | |
508 | 503 |
mesh.mVertAttribs1?.copyInto(newAttribs1,0, v1, v1+VERT1_ATTRIBS*numVertices) |
509 | 504 |
mesh.mVertAttribs2?.copyInto(newAttribs2,0, v2, v2+VERT2_ATTRIBS*numVertices) |
510 | 505 |
*/ |
511 |
android.util.Log.e("D", "from: 0 to: "+(VERT1_ATTRIBS*origVertices)+" num: "+(VERT1_ATTRIBS*numVertices) ); |
|
512 |
android.util.Log.e("D", "from len: "+mesh.mVertAttribs1?.size +" to len: "+newAttribs1.size); |
|
513 |
|
|
514 |
System.arraycopy(mesh.mVertAttribs1, 0, newAttribs1, VERT1_ATTRIBS*origVertices, VERT1_ATTRIBS*numVertices) |
|
515 |
|
|
516 |
android.util.Log.e("D", "DONE "); |
|
517 |
|
|
518 |
System.arraycopy(mesh.mVertAttribs2, 0, newAttribs2, VERT2_ATTRIBS*origVertices, VERT2_ATTRIBS*numVertices) |
|
519 |
|
|
520 |
origVertices += numVertices |
|
506 |
System.arraycopy(mesh.mVertAttribs1, 0, newAttribs1, v1, VERT1_ATTRIBS*numVert) |
|
507 |
System.arraycopy(mesh.mVertAttribs2, 0, newAttribs2, v2, VERT2_ATTRIBS*numVert) |
|
508 |
origVertices += numVert |
|
521 | 509 |
|
522 |
if (i<numMeshes-1&&numVertices>0)
|
|
510 |
if( i<numMeshes-1 && numVert>0 )
|
|
523 | 511 |
{ |
524 | 512 |
val w1 = VERT1_ATTRIBS*origVertices |
525 | 513 |
val w2 = VERT2_ATTRIBS*origVertices |
... | ... | |
527 | 515 |
mesh.mVertAttribs1?.copyInto(newAttribs1, VERT1_ATTRIBS*(numVertices-1), w1, w1+VERT1_ATTRIBS) |
528 | 516 |
mesh.mVertAttribs2?.copyInto(newAttribs2, VERT2_ATTRIBS*(numVertices-1), w2, w2+VERT2_ATTRIBS) |
529 | 517 |
*/ |
530 |
System.arraycopy(mesh.mVertAttribs1, VERT1_ATTRIBS*(numVertices-1), newAttribs1, VERT1_ATTRIBS*origVertices, VERT1_ATTRIBS)
|
|
531 |
System.arraycopy(mesh.mVertAttribs2, VERT2_ATTRIBS*(numVertices-1), newAttribs2, VERT2_ATTRIBS*origVertices, VERT2_ATTRIBS)
|
|
518 |
System.arraycopy(mesh.mVertAttribs1, VERT1_ATTRIBS*(numVert-1), newAttribs1, w1, VERT1_ATTRIBS)
|
|
519 |
System.arraycopy(mesh.mVertAttribs2, VERT2_ATTRIBS*(numVert-1), newAttribs2, w2, VERT2_ATTRIBS)
|
|
532 | 520 |
origVertices++ |
533 | 521 |
|
534 |
if (numVertices%2==1)
|
|
522 |
if (numVert%2==1) |
|
535 | 523 |
{ |
536 | 524 |
val z1 = VERT1_ATTRIBS*origVertices |
537 | 525 |
val z2 = VERT2_ATTRIBS*origVertices |
... | ... | |
539 | 527 |
mesh.mVertAttribs1?.copyInto(newAttribs1, VERT1_ATTRIBS*(numVertices-1), z1, z1+VERT1_ATTRIBS) |
540 | 528 |
mesh.mVertAttribs2?.copyInto(newAttribs2, VERT2_ATTRIBS*(numVertices-1), z2, z2+VERT2_ATTRIBS) |
541 | 529 |
*/ |
542 |
System.arraycopy(mesh.mVertAttribs1, VERT1_ATTRIBS*(numVertices-1), newAttribs1, VERT1_ATTRIBS*origVertices, VERT1_ATTRIBS)
|
|
543 |
System.arraycopy(mesh.mVertAttribs2, VERT2_ATTRIBS*(numVertices-1), newAttribs2, VERT2_ATTRIBS*origVertices, VERT2_ATTRIBS)
|
|
530 |
System.arraycopy(mesh.mVertAttribs1, VERT1_ATTRIBS*(numVert-1), newAttribs1, z1, VERT1_ATTRIBS)
|
|
531 |
System.arraycopy(mesh.mVertAttribs2, VERT2_ATTRIBS*(numVert-1), newAttribs2, z2, VERT2_ATTRIBS)
|
|
544 | 532 |
origVertices++ |
545 | 533 |
} |
546 | 534 |
} |
547 | 535 |
} |
548 | 536 |
|
549 |
if (origVertices!=this.numVertices)
|
|
537 |
if( origVertices!=numVertices )
|
|
550 | 538 |
{ |
551 |
DistortedLibrary.logMessage("MeshBase: join: origVertices: "+origVertices+" numVertices: "+this.numVertices)
|
|
539 |
DistortedLibrary.logMessage("MeshBase: join: origVertices: "+origVertices+" numVertices: "+numVertices) |
|
552 | 540 |
} |
553 | 541 |
|
554 | 542 |
var endIndex: Int |
Also available in: Unified diff
fixes for MeshBase