From 050d6b30355036a8eca6b75d5719c2d38190b508 Mon Sep 17 00:00:00 2001 From: Edwin Jakobs Date: Sat, 29 Feb 2020 12:26:52 +0100 Subject: [PATCH] Add support for resolving specific delegated properties --- .../src/main/kotlin/ShaderPreprocessor.kt | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/orx-shader-phrases/src/main/kotlin/ShaderPreprocessor.kt b/orx-shader-phrases/src/main/kotlin/ShaderPreprocessor.kt index 61465c2b..f8927694 100644 --- a/orx-shader-phrases/src/main/kotlin/ShaderPreprocessor.kt +++ b/orx-shader-phrases/src/main/kotlin/ShaderPreprocessor.kt @@ -34,11 +34,18 @@ fun preprocessShader(source: String): String { "/* imported from $packageClass.$it */\n${it.get(null)}\n" }.joinToString("\n") } else { - // TODO add method based phrase resolver like in the wildcard case above. + var result:String? = null try { - c.getDeclaredField(fieldName).get(null) - } catch (e: NoSuchFieldException) { - error("field \"$fieldName\" not found in \"#pragma import $packageClass.$fieldName\" on line ${index + 1}") + val methodName = "get${fieldName.take(1).toUpperCase() + fieldName.drop(1)}" + result = c.getMethod(methodName).invoke(null) as String + result + } catch (e: NoSuchMethodException) { + try { + result = c.getDeclaredField(fieldName).get(null) as String + result + } catch (e: NoSuchFieldException) { + error("field \"$fieldName\" not found in \"#pragma import $packageClass.$fieldName\" on line ${index + 1}") + } } } } else {