|
|
|
@ -466,11 +466,11 @@ public class BatchNode extends Node implements Savable { |
|
|
|
|
} else if (VertexBuffer.Type.Position.ordinal() == bufType) { |
|
|
|
|
FloatBuffer inPos = (FloatBuffer) inBuf.getData(); |
|
|
|
|
FloatBuffer outPos = (FloatBuffer) outBuf.getData(); |
|
|
|
|
doCopyBuffer(inPos, globalVertIndex, outPos); |
|
|
|
|
doCopyBuffer(inPos, globalVertIndex, outPos,3); |
|
|
|
|
} else if (VertexBuffer.Type.Normal.ordinal() == bufType || VertexBuffer.Type.Tangent.ordinal() == bufType) { |
|
|
|
|
FloatBuffer inPos = (FloatBuffer) inBuf.getData(); |
|
|
|
|
FloatBuffer outPos = (FloatBuffer) outBuf.getData(); |
|
|
|
|
doCopyBuffer(inPos, globalVertIndex, outPos); |
|
|
|
|
doCopyBuffer(inPos, globalVertIndex, outPos,compsForBuf[bufType]); |
|
|
|
|
if (VertexBuffer.Type.Tangent.ordinal() == bufType) { |
|
|
|
|
useTangents = true; |
|
|
|
|
} |
|
|
|
@ -567,7 +567,6 @@ public class BatchNode extends Node implements Savable { |
|
|
|
|
tan.y = tmpFloatT[tanIndex++]; |
|
|
|
|
tan.z = tmpFloatT[tanIndex++]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
transform.mult(pos, pos); |
|
|
|
|
transform.multNormal(norm, norm); |
|
|
|
|
transform.multNormal(tan, tan); |
|
|
|
@ -586,6 +585,7 @@ public class BatchNode extends Node implements Savable { |
|
|
|
|
tmpFloatT[tanIndex++] = tan.y; |
|
|
|
|
tmpFloatT[tanIndex++] = tan.z; |
|
|
|
|
|
|
|
|
|
//Skipping 4th element of tangent buffer (handedness)
|
|
|
|
|
tanIndex++; |
|
|
|
|
|
|
|
|
|
} |
|
|
|
@ -601,22 +601,22 @@ public class BatchNode extends Node implements Savable { |
|
|
|
|
bufTangents.put(tmpFloatT, 0, tanLength); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void doCopyBuffer(FloatBuffer inBuf, int offset, FloatBuffer outBuf) { |
|
|
|
|
private void doCopyBuffer(FloatBuffer inBuf, int offset, FloatBuffer outBuf, int componentSize) { |
|
|
|
|
TempVars vars = TempVars.get(); |
|
|
|
|
Vector3f pos = vars.vect1; |
|
|
|
|
|
|
|
|
|
// offset is given in element units
|
|
|
|
|
// convert to be in component units
|
|
|
|
|
offset *= 3; |
|
|
|
|
offset *= componentSize; |
|
|
|
|
|
|
|
|
|
for (int i = 0; i < inBuf.capacity() / 3; i++) { |
|
|
|
|
pos.x = inBuf.get(i * 3 + 0); |
|
|
|
|
pos.y = inBuf.get(i * 3 + 1); |
|
|
|
|
pos.z = inBuf.get(i * 3 + 2); |
|
|
|
|
for (int i = 0; i < inBuf.capacity() / componentSize; i++) { |
|
|
|
|
pos.x = inBuf.get(i * componentSize + 0); |
|
|
|
|
pos.y = inBuf.get(i * componentSize + 1); |
|
|
|
|
pos.z = inBuf.get(i * componentSize + 2); |
|
|
|
|
|
|
|
|
|
outBuf.put(offset + i * 3 + 0, pos.x); |
|
|
|
|
outBuf.put(offset + i * 3 + 1, pos.y); |
|
|
|
|
outBuf.put(offset + i * 3 + 2, pos.z); |
|
|
|
|
outBuf.put(offset + i * componentSize + 0, pos.x); |
|
|
|
|
outBuf.put(offset + i * componentSize + 1, pos.y); |
|
|
|
|
outBuf.put(offset + i * componentSize + 2, pos.z); |
|
|
|
|
} |
|
|
|
|
vars.release(); |
|
|
|
|
} |
|
|
|
|