Revision 3bc73279
Added by Leszek Koltunski 5 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