Revision 3bc73279
Added by Leszek Koltunski 6 months ago
| src/main/java/org/distorted/library/mesh/MeshBase.kt | ||
|---|---|---|
| 48 | 48 |
abstract class MeshBase |
| 49 | 49 |
{
|
| 50 | 50 |
var showNormals: Boolean // when rendering this mesh, draw normal vectors? |
| 51 |
private var mVBO1: InternalBuffer? = null
|
|
| 52 |
private var mVBO2: InternalBuffer? = null
|
|
| 51 |
private lateinit var mVBO1: InternalBuffer
|
|
| 52 |
private lateinit var mVBO2: InternalBuffer
|
|
| 53 | 53 |
private var mTFO: InternalBuffer // main vertex buffer and transform feedback buffer |
| 54 | 54 |
private var numVertices: Int = 0 |
| 55 | 55 |
private var mVertAttribs1: FloatArray? = null // packed: PosX,PosY,PosZ, NorX,NorY,NorZ |
| ... | ... | |
| 88 | 88 |
private const val OFFSET_TEX = TEX_ATTRIB*BYTES_PER_FLOAT |
| 89 | 89 |
private const val OFFSET_COM = COM_ATTRIB*BYTES_PER_FLOAT |
| 90 | 90 |
|
| 91 |
private const val TRAN_SIZE = TRAN_ATTRIBS*BYTES_PER_FLOAT |
|
| 91 |
private const val TRAN_SIZE = TRAN_ATTRIBS*BYTES_PER_FLOAT
|
|
| 92 | 92 |
private const val VERT1_SIZE = VERT1_ATTRIBS*BYTES_PER_FLOAT |
| 93 | 93 |
private const val VERT2_SIZE = VERT2_ATTRIBS*BYTES_PER_FLOAT |
| 94 | 94 |
|
| 95 |
private val mCenterBlockIndex = IntArray(EffectQueue.MAIN_VARIANTS)
|
|
| 95 |
private val mCenterBlockIndex= IntArray(EffectQueue.MAIN_VARIANTS) |
|
| 96 | 96 |
private val mAssocBlockIndex = IntArray(EffectQueue.MAIN_VARIANTS) |
| 97 | 97 |
|
| 98 | 98 |
private const val TEX_COMP_SIZE = 5 // 5 four-byte entities inside the component |
| ... | ... | |
| 161 | 161 |
} |
| 162 | 162 |
} |
| 163 | 163 |
|
| 164 |
private var mTexComponent: ArrayList<TexComponent>? = null
|
|
| 165 |
private var mEffComponent: ArrayList<Int>? = null
|
|
| 164 |
private lateinit var mTexComponent: ArrayList<TexComponent>
|
|
| 165 |
private lateinit var mEffComponent: ArrayList<Int>
|
|
| 166 | 166 |
|
| 167 | 167 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 168 | 168 |
internal constructor() |
| ... | ... | |
| 223 | 223 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 224 | 224 |
private fun shallowCopy(original: MeshBase) |
| 225 | 225 |
{
|
| 226 |
val texComSize = original.mTexComponent!!.size
|
|
| 226 |
val texComSize = original.mTexComponent.size |
|
| 227 | 227 |
mTexComponent = ArrayList() |
| 228 | 228 |
|
| 229 | 229 |
for (i in 0 until texComSize) |
| 230 | 230 |
{
|
| 231 |
val comp = TexComponent(original.mTexComponent!![i])
|
|
| 232 |
mTexComponent!!.add(comp)
|
|
| 231 |
val comp = TexComponent(original.mTexComponent[i]) |
|
| 232 |
mTexComponent.add(comp) |
|
| 233 | 233 |
} |
| 234 | 234 |
|
| 235 | 235 |
mEffComponent = ArrayList() |
| 236 |
mEffComponent!!.addAll(original.mEffComponent!!)
|
|
| 236 |
mEffComponent.addAll(original.mEffComponent)
|
|
| 237 | 237 |
|
| 238 | 238 |
mVBO2 = InternalBuffer(GLES30.GL_ARRAY_BUFFER, GLES30.GL_STATIC_DRAW) |
| 239 | 239 |
mVertAttribs2 = original.mVertAttribs2?.copyOf() |
| ... | ... | |
| 242 | 242 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 243 | 243 |
fun mergeTexComponentsNow() |
| 244 | 244 |
{
|
| 245 |
val num = mTexComponent!!.size
|
|
| 245 |
val num = mTexComponent.size |
|
| 246 | 246 |
|
| 247 | 247 |
if (num>1) |
| 248 | 248 |
{
|
| 249 |
mTexComponent!!.clear()
|
|
| 250 |
mTexComponent!!.add(TexComponent(numVertices-1))
|
|
| 251 |
mVBO2!!.invalidate()
|
|
| 249 |
mTexComponent.clear() |
|
| 250 |
mTexComponent.add(TexComponent(numVertices-1)) |
|
| 251 |
mVBO2.invalidate() |
|
| 252 | 252 |
} |
| 253 | 253 |
} |
| 254 | 254 |
|
| 255 | 255 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 256 | 256 |
fun addEmptyTexComponentNow() |
| 257 | 257 |
{
|
| 258 |
mTexComponent!!.add(TexComponent(numVertices-1))
|
|
| 258 |
mTexComponent.add(TexComponent(numVertices-1)) |
|
| 259 | 259 |
} |
| 260 | 260 |
|
| 261 | 261 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 262 | 262 |
fun mergeEffComponentsNow() |
| 263 | 263 |
{
|
| 264 |
val num = mEffComponent!!.size
|
|
| 264 |
val num = mEffComponent.size |
|
| 265 | 265 |
|
| 266 | 266 |
if (num>1) |
| 267 | 267 |
{
|
| 268 |
mEffComponent!!.clear()
|
|
| 269 |
mEffComponent!!.add(numVertices-1)
|
|
| 268 |
mEffComponent.clear() |
|
| 269 |
mEffComponent.add(numVertices-1) |
|
| 270 | 270 |
|
| 271 | 271 |
for (index in 0 until numVertices) |
| 272 | 272 |
{
|
| 273 | 273 |
mVertAttribs2!![VERT2_ATTRIBS*index+COM_ATTRIB] = 0f |
| 274 | 274 |
} |
| 275 | 275 |
|
| 276 |
mVBO2!!.invalidate()
|
|
| 276 |
mVBO2.invalidate() |
|
| 277 | 277 |
} |
| 278 | 278 |
} |
| 279 | 279 |
|
| ... | ... | |
| 285 | 285 |
val uniforms = FloatArray(7) |
| 286 | 286 |
var start: Int |
| 287 | 287 |
var end = -1 |
| 288 |
val numComp = mEffComponent!!.size
|
|
| 288 |
val numComp = mEffComponent.size |
|
| 289 | 289 |
|
| 290 | 290 |
matrixP[15] = 1f |
| 291 | 291 |
matrixP[10] = matrixP[15] |
| 292 |
matrixP[5] = matrixP[10] |
|
| 293 |
matrixP[0] = matrixP[5] |
|
| 292 |
matrixP[ 5] = matrixP[10]
|
|
| 293 |
matrixP[ 0] = matrixP[5]
|
|
| 294 | 294 |
matrixV[15] = 1f |
| 295 | 295 |
matrixV[10] = matrixV[15] |
| 296 |
matrixV[5] = matrixV[10] |
|
| 297 |
matrixV[0] = matrixV[5] |
|
| 296 |
matrixV[ 5] = matrixV[10]
|
|
| 297 |
matrixV[ 0] = matrixV[5]
|
|
| 298 | 298 |
|
| 299 | 299 |
effect.compute(uniforms, 0, 0, 0) |
| 300 | 300 |
effect.apply(matrixP, matrixV, uniforms, 0) |
| ... | ... | |
| 302 | 302 |
for (comp in 0 until numComp) |
| 303 | 303 |
{
|
| 304 | 304 |
start = end+1 |
| 305 |
end = mEffComponent!![comp]
|
|
| 305 |
end = mEffComponent[comp] |
|
| 306 | 306 |
|
| 307 | 307 |
if (mUBA.matchesAssociation(comp, andAssoc, equAssoc)) |
| 308 | 308 |
{
|
| ... | ... | |
| 310 | 310 |
} |
| 311 | 311 |
} |
| 312 | 312 |
|
| 313 |
mVBO1!!.invalidate()
|
|
| 313 |
mVBO1.invalidate() |
|
| 314 | 314 |
} |
| 315 | 315 |
|
| 316 | 316 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 375 | 375 |
|
| 376 | 376 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 377 | 377 |
// when a derived class is done computing its mesh, it has to call this method. |
| 378 |
fun setAttribs(vert1Attribs: FloatArray, vert2Attribs: FloatArray?)
|
|
| 378 |
fun setAttribs(vert1Attribs: FloatArray, vert2Attribs: FloatArray) |
|
| 379 | 379 |
{
|
| 380 | 380 |
numVertices = vert1Attribs.size/VERT1_ATTRIBS |
| 381 | 381 |
mVertAttribs1 = vert1Attribs |
| 382 | 382 |
mVertAttribs2 = vert2Attribs |
| 383 | 383 |
|
| 384 |
mTexComponent!!.add(TexComponent(numVertices-1))
|
|
| 385 |
mEffComponent!!.add(numVertices-1)
|
|
| 384 |
mTexComponent.add(TexComponent(numVertices-1)) |
|
| 385 |
mEffComponent.add(numVertices-1) |
|
| 386 | 386 |
|
| 387 |
mVBO1!!.invalidate()
|
|
| 388 |
mVBO2!!.invalidate()
|
|
| 387 |
mVBO1.invalidate() |
|
| 388 |
mVBO2.invalidate() |
|
| 389 | 389 |
} |
| 390 | 390 |
|
| 391 | 391 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 403 | 403 |
|
| 404 | 404 |
if (origVertices>0) |
| 405 | 405 |
{
|
| 406 |
origTexComponents = mTexComponent!!.size
|
|
| 406 |
origTexComponents = mTexComponent.size |
|
| 407 | 407 |
numVertices += (if (numVertices%2==1) 2 else 1) |
| 408 |
mTexComponent!![origTexComponents-1].mEndIndex = numVertices-1
|
|
| 409 |
origEffComponents = mEffComponent!!.size
|
|
| 410 |
mEffComponent!![origEffComponents-1] = numVertices-1
|
|
| 408 |
mTexComponent[origTexComponents-1].mEndIndex = numVertices-1 |
|
| 409 |
origEffComponents = mEffComponent.size |
|
| 410 |
mEffComponent[origEffComponents-1] = numVertices-1 |
|
| 411 | 411 |
} |
| 412 | 412 |
|
| 413 | 413 |
for (i in 0 until numMeshes) |
| 414 | 414 |
{
|
| 415 | 415 |
mesh = meshes[i] |
| 416 |
numTexComponents = mesh.mTexComponent!!.size
|
|
| 417 |
numEffComponents = mesh.mEffComponent!!.size
|
|
| 416 |
numTexComponents = mesh.mTexComponent.size |
|
| 417 |
numEffComponents = mesh.mEffComponent.size |
|
| 418 | 418 |
numVert = mesh.numVertices |
| 419 | 419 |
|
| 420 | 420 |
val extraVerticesBefore = if (numVertices==0) 0 else 1 |
| ... | ... | |
| 422 | 422 |
|
| 423 | 423 |
for (j in 0 until numTexComponents) |
| 424 | 424 |
{
|
| 425 |
comp = TexComponent(mesh.mTexComponent!![j])
|
|
| 425 |
comp = TexComponent(mesh.mTexComponent[j]) |
|
| 426 | 426 |
comp.mEndIndex += (extraVerticesBefore+numVertices) |
| 427 | 427 |
if (j==numTexComponents-1) comp.mEndIndex += extraVerticesAfter |
| 428 |
mTexComponent!!.add(comp)
|
|
| 428 |
mTexComponent.add(comp) |
|
| 429 | 429 |
} |
| 430 | 430 |
|
| 431 | 431 |
for (j in 0 until numEffComponents) |
| 432 | 432 |
{
|
| 433 |
var index = mesh.mEffComponent!![j]
|
|
| 433 |
var index = mesh.mEffComponent[j] |
|
| 434 | 434 |
index += (extraVerticesBefore+numVertices) |
| 435 | 435 |
if (j==numEffComponents-1) index += extraVerticesAfter |
| 436 |
mEffComponent!!.add(index)
|
|
| 436 |
mEffComponent.add(index) |
|
| 437 | 437 |
|
| 438 | 438 |
if (origEffComponents<maxEffComponents) |
| 439 | 439 |
{
|
| ... | ... | |
| 541 | 541 |
|
| 542 | 542 |
var endIndex: Int |
| 543 | 543 |
var index = 0 |
| 544 |
val numEffComp = mEffComponent!!.size
|
|
| 544 |
val numEffComp = mEffComponent.size |
|
| 545 | 545 |
|
| 546 | 546 |
for (component in 0 until numEffComp) |
| 547 | 547 |
{
|
| 548 |
endIndex = mEffComponent!![component]
|
|
| 548 |
endIndex = mEffComponent[component] |
|
| 549 | 549 |
|
| 550 | 550 |
while (index<=endIndex) |
| 551 | 551 |
{
|
| ... | ... | |
| 556 | 556 |
|
| 557 | 557 |
mVertAttribs1 = newAttribs1 |
| 558 | 558 |
mVertAttribs2 = newAttribs2 |
| 559 |
mVBO1!!.invalidate()
|
|
| 560 |
mVBO2!!.invalidate()
|
|
| 559 |
mVBO1.invalidate() |
|
| 560 |
mVBO2.invalidate() |
|
| 561 | 561 |
} |
| 562 | 562 |
|
| 563 | 563 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 582 | 582 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 583 | 583 |
fun textureMap(maps: Array<Static4D?>, startComponent: Int) |
| 584 | 584 |
{
|
| 585 |
val num_comp = mTexComponent!!.size
|
|
| 585 |
val num_comp = mTexComponent.size |
|
| 586 | 586 |
if (startComponent>num_comp) return |
| 587 | 587 |
|
| 588 | 588 |
val num_maps = maps.size |
| 589 | 589 |
val min = min((num_comp-startComponent).toDouble(), num_maps.toDouble()).toInt() |
| 590 |
var vertex = if (startComponent>0) mTexComponent!![startComponent-1].mEndIndex+1 else 0
|
|
| 590 |
var vertex = if (startComponent>0) mTexComponent[startComponent-1].mEndIndex+1 else 0 |
|
| 591 | 591 |
var newMap: Static4D? |
| 592 | 592 |
var oldMap: Static4D |
| 593 | 593 |
var comp: TexComponent |
| ... | ... | |
| 601 | 601 |
for (i in 0 until min) |
| 602 | 602 |
{
|
| 603 | 603 |
newMap = maps[i] |
| 604 |
comp = mTexComponent!![i+startComponent]
|
|
| 604 |
comp = mTexComponent[i+startComponent] |
|
| 605 | 605 |
|
| 606 | 606 |
if (newMap!=null) |
| 607 | 607 |
{
|
| ... | ... | |
| 619 | 619 |
var index = vertex*VERT2_ATTRIBS+TEX_ATTRIB |
| 620 | 620 |
while (vertex<=comp.mEndIndex) |
| 621 | 621 |
{
|
| 622 |
mVertAttribs2!![index] = ratW*mVertAttribs2!![index]+movX |
|
| 622 |
mVertAttribs2!![index ] = ratW*mVertAttribs2!![index]+movX
|
|
| 623 | 623 |
mVertAttribs2!![index+1] = ratH*mVertAttribs2!![index+1]+movY |
| 624 | 624 |
vertex++ |
| 625 | 625 |
index += VERT2_ATTRIBS |
| ... | ... | |
| 631 | 631 |
vertex = comp.mEndIndex+1 |
| 632 | 632 |
} |
| 633 | 633 |
|
| 634 |
mVBO2!!.invalidate()
|
|
| 634 |
mVBO2.invalidate() |
|
| 635 | 635 |
} |
| 636 | 636 |
|
| 637 | 637 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 647 | 647 |
|
| 648 | 648 |
val feedback = buffer.order(ByteOrder.nativeOrder()).asFloatBuffer() |
| 649 | 649 |
feedback[mVertAttribs1, 0, VERT1_ATTRIBS*numVertices] |
| 650 |
mVBO1!!.updateFloat(mVertAttribs1)
|
|
| 650 |
mVBO1.updateFloat(mVertAttribs1) |
|
| 651 | 651 |
|
| 652 | 652 |
GLES30.glUnmapBuffer(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER) |
| 653 | 653 |
} |
| ... | ... | |
| 678 | 678 |
*/ |
| 679 | 679 |
fun printTexComponent(comp: Int) |
| 680 | 680 |
{
|
| 681 |
if (comp>=0&&comp<numTexComponents)
|
|
| 681 |
if( comp in 0..<numTexComponents )
|
|
| 682 | 682 |
{
|
| 683 |
val beg = if (comp>0) mTexComponent!![comp-1].mEndIndex+1 else 0
|
|
| 684 |
val end = mTexComponent!![comp].mEndIndex
|
|
| 683 |
val beg = if (comp>0) mTexComponent[comp-1].mEndIndex+1 else 0 |
|
| 684 |
val end = mTexComponent[comp].mEndIndex |
|
| 685 | 685 |
val sb = StringBuilder() |
| 686 | 686 |
|
| 687 | 687 |
for (vert in beg..end) |
| ... | ... | |
| 799 | 799 |
|
| 800 | 800 |
for (i in 0 until num) |
| 801 | 801 |
{
|
| 802 |
val end = mTexComponent!![i].mEndIndex
|
|
| 802 |
val end = mTexComponent[i].mEndIndex |
|
| 803 | 803 |
sb.append("\n")
|
| 804 | 804 |
|
| 805 | 805 |
while (vert<=end) |
| ... | ... | |
| 846 | 846 |
{
|
| 847 | 847 |
if (mJobNode[0]!=null) mJobNode[0]!!.execute() // this will set itself to null |
| 848 | 848 |
|
| 849 |
val index1 = mVBO1!!.createImmediatelyFloat(numVertices*VERT1_SIZE, mVertAttribs1)
|
|
| 850 |
val index2 = mVBO2!!.createImmediatelyFloat(numVertices*VERT2_SIZE, mVertAttribs2)
|
|
| 849 |
val index1 = mVBO1.createImmediatelyFloat(numVertices*VERT1_SIZE, mVertAttribs1) |
|
| 850 |
val index2 = mVBO2.createImmediatelyFloat(numVertices*VERT2_SIZE, mVertAttribs2) |
|
| 851 | 851 |
val attr = program.mAttribute |
| 852 | 852 |
|
| 853 | 853 |
when (program.mAttributeLayout) |
| ... | ... | |
| 1002 | 1002 |
tex = TexComponent(index) |
| 1003 | 1003 |
tex.setMap(Static4D(x, y, z, w)) |
| 1004 | 1004 |
|
| 1005 |
mTexComponent!!.add(tex)
|
|
| 1005 |
mTexComponent.add(tex) |
|
| 1006 | 1006 |
texComp++ |
| 1007 | 1007 |
} |
| 1008 | 1008 |
|
| 1009 | 1009 |
for (effComp in 0 until numEff) |
| 1010 | 1010 |
{
|
| 1011 | 1011 |
index = tmp[TEX_COMP_SIZE*texComp+effComp].toInt() |
| 1012 |
mEffComponent!!.add(index)
|
|
| 1012 |
mEffComponent.add(index) |
|
| 1013 | 1013 |
} |
| 1014 | 1014 |
|
| 1015 | 1015 |
////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 1024 | 1024 |
var vert = 0 |
| 1025 | 1025 |
while (vert<numVertices) |
| 1026 | 1026 |
{
|
| 1027 |
mVertAttribs1!![VERT1_ATTRIBS*vert+POS_ATTRIB] = floatBuf[index+POS_ATTRIB]
|
|
| 1027 |
mVertAttribs1!![VERT1_ATTRIBS*vert+POS_ATTRIB ] = floatBuf[index+POS_ATTRIB ]
|
|
| 1028 | 1028 |
mVertAttribs1!![VERT1_ATTRIBS*vert+POS_ATTRIB+1] = floatBuf[index+POS_ATTRIB+1] |
| 1029 | 1029 |
mVertAttribs1!![VERT1_ATTRIBS*vert+POS_ATTRIB+2] = floatBuf[index+POS_ATTRIB+2] |
| 1030 |
mVertAttribs1!![VERT1_ATTRIBS*vert+NOR_ATTRIB] = floatBuf[index+NOR_ATTRIB]
|
|
| 1030 |
mVertAttribs1!![VERT1_ATTRIBS*vert+NOR_ATTRIB ] = floatBuf[index+NOR_ATTRIB ]
|
|
| 1031 | 1031 |
mVertAttribs1!![VERT1_ATTRIBS*vert+NOR_ATTRIB+1] = floatBuf[index+NOR_ATTRIB+1] |
| 1032 | 1032 |
mVertAttribs1!![VERT1_ATTRIBS*vert+NOR_ATTRIB+2] = floatBuf[index+NOR_ATTRIB+2] |
| 1033 | 1033 |
index += vert1InFile |
| ... | ... | |
| 1070 | 1070 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 1071 | 1071 |
fun getLastVertexEff(effComponent: Int): Int |
| 1072 | 1072 |
{
|
| 1073 |
if (effComponent>=0&&effComponent<mTexComponent!!.size)
|
|
| 1073 |
if (effComponent>=0&&effComponent<mTexComponent.size) |
|
| 1074 | 1074 |
{
|
| 1075 |
return mEffComponent!![effComponent]
|
|
| 1075 |
return mEffComponent[effComponent] |
|
| 1076 | 1076 |
} |
| 1077 | 1077 |
|
| 1078 | 1078 |
return 0 |
| ... | ... | |
| 1081 | 1081 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 1082 | 1082 |
fun getLastVertexTex(texComponent: Int): Int |
| 1083 | 1083 |
{
|
| 1084 |
if (texComponent>=0&&texComponent<mTexComponent!!.size)
|
|
| 1084 |
if (texComponent>=0&&texComponent<mTexComponent.size) |
|
| 1085 | 1085 |
{
|
| 1086 |
return mTexComponent!![texComponent].mEndIndex
|
|
| 1086 |
return mTexComponent[texComponent].mEndIndex |
|
| 1087 | 1087 |
} |
| 1088 | 1088 |
|
| 1089 | 1089 |
return 0 |
| ... | ... | |
| 1099 | 1099 |
{
|
| 1100 | 1100 |
var tex: TexComponent |
| 1101 | 1101 |
|
| 1102 |
val numTex = mTexComponent!!.size
|
|
| 1103 |
val numEff = mEffComponent!!.size
|
|
| 1102 |
val numTex = mTexComponent.size |
|
| 1103 |
val numEff = mEffComponent.size |
|
| 1104 | 1104 |
|
| 1105 | 1105 |
try |
| 1106 | 1106 |
{
|
| ... | ... | |
| 1111 | 1111 |
|
| 1112 | 1112 |
for (i in 0 until numTex) |
| 1113 | 1113 |
{
|
| 1114 |
tex = mTexComponent!![i]
|
|
| 1114 |
tex = mTexComponent[i] |
|
| 1115 | 1115 |
|
| 1116 | 1116 |
stream.writeFloat(tex.mEndIndex.toFloat()) |
| 1117 | 1117 |
stream.writeFloat(tex.mTextureMap.get0()) |
| ... | ... | |
| 1122 | 1122 |
|
| 1123 | 1123 |
for (i in 0 until numEff) |
| 1124 | 1124 |
{
|
| 1125 |
stream.writeFloat(mEffComponent!![i].toFloat())
|
|
| 1125 |
stream.writeFloat(mEffComponent[i].toFloat()) |
|
| 1126 | 1126 |
} |
| 1127 | 1127 |
|
| 1128 | 1128 |
val centers = if (useCenters) mUBC!!.backingArray else FloatArray(4*numEff) |
| ... | ... | |
| 1154 | 1154 |
*/ |
| 1155 | 1155 |
fun mergeTexComponents() |
| 1156 | 1156 |
{
|
| 1157 |
if (mJobNode[0]==null) |
|
| 1158 |
{
|
|
| 1159 |
mergeTexComponentsNow() |
|
| 1160 |
} |
|
| 1161 |
else |
|
| 1162 |
{
|
|
| 1163 |
mJobNode[0] = DeferredJobs.mergeTex(this) |
|
| 1164 |
} |
|
| 1157 |
if (mJobNode[0]==null) mergeTexComponentsNow() |
|
| 1158 |
else mJobNode[0] = DeferredJobs.mergeTex(this) |
|
| 1165 | 1159 |
} |
| 1166 | 1160 |
|
| 1167 | 1161 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 1170 | 1164 |
*/ |
| 1171 | 1165 |
fun mergeEffComponents() |
| 1172 | 1166 |
{
|
| 1173 |
if (mJobNode[0]==null) |
|
| 1174 |
{
|
|
| 1175 |
mergeEffComponentsNow() |
|
| 1176 |
} |
|
| 1177 |
else |
|
| 1178 |
{
|
|
| 1179 |
mJobNode[0] = DeferredJobs.mergeEff(this) |
|
| 1180 |
} |
|
| 1167 |
if (mJobNode[0]==null) mergeEffComponentsNow() |
|
| 1168 |
else mJobNode[0] = DeferredJobs.mergeEff(this) |
|
| 1181 | 1169 |
} |
| 1170 |
|
|
| 1182 | 1171 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 1183 | 1172 |
/** |
| 1184 | 1173 |
* Return the number of vertices in this Mesh. |
| ... | ... | |
| 1194 | 1183 |
mVertAttribs1 = null |
| 1195 | 1184 |
mVertAttribs2 = null |
| 1196 | 1185 |
|
| 1197 |
mVBO1!!.markForDeletion()
|
|
| 1198 |
mVBO2!!.markForDeletion()
|
|
| 1186 |
mVBO1.markForDeletion() |
|
| 1187 |
mVBO2.markForDeletion() |
|
| 1199 | 1188 |
mTFO.markForDeletion() |
| 1200 | 1189 |
mUBA.markForDeletion() |
| 1201 | 1190 |
|
| ... | ... | |
| 1218 | 1207 |
*/ |
| 1219 | 1208 |
fun apply(effect: MatrixEffect, andAssoc: Int, equAssoc: Int) |
| 1220 | 1209 |
{
|
| 1221 |
if (mJobNode[0]==null) |
|
| 1222 |
{
|
|
| 1223 |
applyMatrix(effect, andAssoc, equAssoc) |
|
| 1224 |
} |
|
| 1225 |
else |
|
| 1226 |
{
|
|
| 1227 |
mJobNode[0] = DeferredJobs.matrix(this, effect, andAssoc, equAssoc) |
|
| 1228 |
} |
|
| 1210 |
if (mJobNode[0]==null) applyMatrix(effect, andAssoc, equAssoc) |
|
| 1211 |
else mJobNode[0] = DeferredJobs.matrix(this, effect, andAssoc, equAssoc) |
|
| 1229 | 1212 |
} |
| 1230 | 1213 |
|
| 1231 | 1214 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 1241 | 1224 |
*/ |
| 1242 | 1225 |
fun apply(effect: VertexEffect) |
| 1243 | 1226 |
{
|
| 1244 |
mJobNode[0] = DeferredJobs.vertex(this, effect)
|
|
| 1227 |
mJobNode[0] = DeferredJobs.vertex(this,effect) |
|
| 1245 | 1228 |
} |
| 1246 | 1229 |
|
| 1247 | 1230 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 1268 | 1251 |
*/ |
| 1269 | 1252 |
fun setTextureMap(maps: Array<Static4D?>, startComponent: Int) |
| 1270 | 1253 |
{
|
| 1271 |
if (mJobNode[0]==null) |
|
| 1272 |
{
|
|
| 1273 |
textureMap(maps, startComponent) |
|
| 1274 |
} |
|
| 1275 |
else |
|
| 1276 |
{
|
|
| 1277 |
mJobNode[0] = DeferredJobs.textureMap(this, maps, startComponent) |
|
| 1278 |
} |
|
| 1254 |
if (mJobNode[0]==null) textureMap(maps, startComponent) |
|
| 1255 |
else mJobNode[0] = DeferredJobs.textureMap(this, maps, startComponent) |
|
| 1279 | 1256 |
} |
| 1280 | 1257 |
|
| 1281 | 1258 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 1286 | 1263 |
*/ |
| 1287 | 1264 |
fun getTextureMap(component: Int): Static4D? |
| 1288 | 1265 |
{
|
| 1289 |
return if ((component>=0&&component<mTexComponent!!.size)) mTexComponent!![component].mTextureMap else null
|
|
| 1266 |
return if ((component>=0&&component<mTexComponent.size)) mTexComponent[component].mTextureMap else null
|
|
| 1290 | 1267 |
} |
| 1291 | 1268 |
|
| 1292 | 1269 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 1404 | 1381 |
* |
| 1405 | 1382 |
* @return The number of Texture Components of this Mesh. |
| 1406 | 1383 |
*/ |
| 1407 |
val numTexComponents: Int get() = mTexComponent!!.size
|
|
| 1384 |
val numTexComponents: Int get() = mTexComponent.size |
|
| 1408 | 1385 |
|
| 1409 | 1386 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 1410 | 1387 |
/** |
| ... | ... | |
| 1413 | 1390 |
* |
| 1414 | 1391 |
* @return The number of Effect Components of this Mesh. |
| 1415 | 1392 |
*/ |
| 1416 |
val numEffComponents: Int get() = mEffComponent!!.size
|
|
| 1393 |
val numEffComponents: Int get() = mEffComponent.size |
|
| 1417 | 1394 |
|
| 1418 | 1395 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 1419 | 1396 |
/** |
Also available in: Unified diff
minor