Skip to content

Commit f90188e

Browse files
authored
Merge pull request #2338 from jMonkeyEngine/yaRnMcDonuts-patch-1
Fix NullPointer in MikktspaceTangentGenerator
2 parents 63d5259 + ae03745 commit f90188e

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

jme3-core/src/main/java/com/jme3/util/mikktspace/MikktspaceTangentGenerator.java

+11-3
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import com.jme3.math.FastMath;
3535
import com.jme3.math.Vector3f;
3636
import com.jme3.scene.*;
37+
import com.jme3.scene.VertexBuffer.Type;
3738
import com.jme3.util.*;
3839

3940
import java.util.ArrayList;
@@ -129,12 +130,19 @@ public static void generate(Mesh mesh) {
129130
private static boolean generateTangents(Mesh mesh) {
130131
Mesh.Mode mode = mesh.getMode();
131132
boolean hasTriangles;
133+
134+
if (mesh.getBuffer(Type.TexCoord) == null || mesh.getBuffer(Type.Normal) == null) {
135+
logger.log(Level.SEVERE, "Tangent generation requires both a normal and texCoord buffer");
136+
return false;
137+
}
138+
132139
switch (mode) {
133140
case Points:
134141
case Lines:
135142
case LineStrip:
136143
case LineLoop:
137144
hasTriangles = false; // skip this mesh
145+
logger.log(Level.SEVERE, "Tangent generation requires a mesh with Triangles", mode);
138146
break;
139147

140148
case Triangles:
@@ -148,12 +156,12 @@ private static boolean generateTangents(Mesh mesh) {
148156
logger.log(Level.SEVERE, "Tangent generation isn't implemented for mode={0}", mode);
149157
return false;
150158
}
151-
159+
152160
if (hasTriangles) {
153161
MikkTSpaceImpl context = new MikkTSpaceImpl(mesh);
154-
boolean result = genTangSpaceDefault(context);
162+
boolean results = genTangSpaceDefault(context);
155163
TangentUtils.generateBindPoseTangentsIfNecessary(mesh);
156-
return result;
164+
return results;
157165
}
158166
return false;
159167
}

0 commit comments

Comments
 (0)