Add support for translating gl calls on the jaggl.opengl object

This picks up a glGetString(GL_EXTENSIONS) constant.

Don't translate gl calls within the jaggl.opengl class itself. This
causes failures as there are native methods with 0 and 1 suffixes. These
methods don't exist in the OpenGL registry, causing the transformer to
throw an exception.

Signed-off-by: Graham <gpe@openrs2.dev>
master
Graham 5 years ago
parent 0564bc29b0
commit f4933a2b59
  1. 8
      deob-ast/src/main/java/dev/openrs2/deob/ast/transform/GlConstantTransformer.kt

@ -4,6 +4,7 @@ import com.github.javaparser.ast.CompilationUnit
import com.github.javaparser.ast.NodeList
import com.github.javaparser.ast.body.BodyDeclaration
import com.github.javaparser.ast.body.FieldDeclaration
import com.github.javaparser.ast.body.TypeDeclaration
import com.github.javaparser.ast.body.VariableDeclarator
import com.github.javaparser.ast.expr.BinaryExpr
import com.github.javaparser.ast.expr.Expression
@ -37,6 +38,10 @@ class GlConstantTransformer : Transformer() {
return
}
if (unit.primaryType.flatMap(TypeDeclaration<*>::getFullyQualifiedName).orElse(null) == JAGGL_CLASS) {
return
}
unit.walk { expr: MethodCallExpr ->
if (!expr.nameAsString.startsWith("gl")) {
return@walk
@ -49,7 +54,7 @@ class GlConstantTransformer : Transformer() {
}
val name = type.asReferenceType().qualifiedName
if (name == GL_CLASS) {
if (name == GL_CLASS || name == JAGGL_CLASS) {
transformCall(unit, expr)
}
}
@ -200,6 +205,7 @@ class GlConstantTransformer : Transformer() {
private val logger = InlineLogger()
private const val GL_CLASS_UNQUALIFIED = "GL"
private const val GL_CLASS = "javax.media.opengl.$GL_CLASS_UNQUALIFIED"
private const val JAGGL_CLASS = "jaggl.opengl"
private val REGISTRY = GlRegistry.parse()
private val VENDORS = setOf("ARB", "EXT")

Loading…
Cancel
Save