Revision 98bfe573
Added by Leszek Koltunski 5 months 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