Convert orx-shader-phrases and orx-noise to MPP
This commit is contained in:
24
orx-shader-phrases/src/jvmMain/kotlin/PhraseResource.kt
Normal file
24
orx-shader-phrases/src/jvmMain/kotlin/PhraseResource.kt
Normal file
@@ -0,0 +1,24 @@
|
||||
package org.openrndr.extra.shaderphrases
|
||||
|
||||
import org.openrndr.resourceUrl
|
||||
import java.net.URL
|
||||
import kotlin.properties.ReadOnlyProperty
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
|
||||
/**
|
||||
* PhraseResource can be used as a delegate
|
||||
*/
|
||||
class PhraseResource<R>(private val resourceUrl: String) : ReadOnlyProperty<R, String> {
|
||||
override fun getValue(thisRef: R, property: KProperty<*>): String {
|
||||
return URL(resourceUrl).readText()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* PhraseResource delegate builder function
|
||||
*/
|
||||
fun phraseResource(resource: String) : PhraseResource<Any?> {
|
||||
return PhraseResource(resourceUrl(resource))
|
||||
}
|
||||
26
orx-shader-phrases/src/jvmMain/kotlin/ShaderPhraseBook.kt
Normal file
26
orx-shader-phrases/src/jvmMain/kotlin/ShaderPhraseBook.kt
Normal file
@@ -0,0 +1,26 @@
|
||||
package org.openrndr.extra.shaderphrases
|
||||
|
||||
import kotlin.reflect.KProperty1
|
||||
import kotlin.reflect.full.declaredMemberProperties
|
||||
|
||||
/**
|
||||
* A book of shader phrases.
|
||||
*/
|
||||
actual open class ShaderPhraseBook actual constructor(val bookId: String) {
|
||||
private var registered = false
|
||||
/**
|
||||
* Registers all known shader phrases
|
||||
*/
|
||||
actual fun register() {
|
||||
if (!registered) {
|
||||
this::class.declaredMemberProperties.filter {
|
||||
it.returnType.toString() == "org.openrndr.extra.shaderphrases.ShaderPhrase"
|
||||
}.map {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
val m = it as? KProperty1<ShaderPhraseBook, ShaderPhrase>
|
||||
m?.get(this)?.register(bookId)
|
||||
}
|
||||
registered = true
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user