Skip to content

Commit 8c03995

Browse files
committed
Improved kotlin/js webidl codegen
1 parent 9de46b6 commit 8c03995

File tree

96 files changed

+6246
-5626
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

96 files changed

+6246
-5626
lines changed

kool-demo/src/wasmJsMain/kotlin/Main.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import de.fabmax.kool.KoolApplication
22
import de.fabmax.kool.KoolConfigWasm
33
import de.fabmax.kool.demo.demo
4+
import de.fabmax.kool.physics.Physics
45
import de.fabmax.kool.physics2d.Physics2d
56

67
fun main() = KoolApplication(
@@ -9,6 +10,7 @@ fun main() = KoolApplication(
910
deviceScaleLimit = 1.5,
1011
)
1112
) {
13+
Physics.loadPhysics()
1214
Physics2d.loadPhysics2d()
1315
demo(null, ctx)
1416
}

kool-physics-2d/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ webidl {
3838
modelName = "Box2dWasm"
3939

4040
generateKotlinJsInterfaces {
41-
outputDirectory = file("${projectDir}/src/jsMain/kotlin/box2d")
41+
outputDirectory = file("${projectDir}/src/webMain/kotlin/box2d")
4242
packagePrefix = "box2d"
4343
moduleName = "kool-box2d-wasm"
4444
modulePromiseName = "Box2D"
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/*
2+
* Generated from WebIDL by webidl-util
3+
*/
4+
5+
package box2d
6+
7+
import kotlinx.coroutines.await
8+
import kotlin.js.Promise
9+
10+
@JsModule("kool-box2d-wasm")
11+
private external val Box2D: () -> Promise<JsAny>
12+
13+
actual object Box2dWasmLoader {
14+
private var box2dWasmModule: JsAny? = null
15+
private val box2dWasmPromise = Box2D()
16+
private var _isLoaded = false
17+
actual val isLoaded: Boolean get() = _isLoaded
18+
19+
internal actual val box2dWasm: JsAny get() = requireNotNull(box2dWasmModule) {
20+
"Module 'kool-box2d-wasm' is not loaded. Call loadModule() first"
21+
}
22+
23+
actual suspend fun loadModule() {
24+
if (!isLoaded) {
25+
box2dWasmPromise.then<JsAny> { box2dWasmModule = it; it }
26+
}
27+
box2dWasmPromise.await<JsAny>()
28+
_isLoaded = true
29+
}
30+
31+
fun checkIsLoaded() {
32+
if (!isLoaded) {
33+
throw IllegalStateException("Module 'kool-box2d-wasm' is not loaded. Call loadModule() first.")
34+
}
35+
}
36+
}
37+
38+
private fun destroyNative(module: JsAny, obj: DestroyableNative): Unit = js("module.destroy(obj)")
39+
actual fun DestroyableNative.destroy() = destroyNative(Box2dWasmLoader.box2dWasm, this)

kool-physics-2d/src/jsMain/kotlin/box2d/Box2dWasmLoader.kt

Lines changed: 0 additions & 41 deletions
This file was deleted.
Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
/*
2+
* Generated from WebIDL by webidl-util
3+
*/
4+
15
package box2d
26

37
import kotlinx.coroutines.await
@@ -6,32 +10,30 @@ import kotlin.js.Promise
610
@JsModule("kool-box2d-wasm")
711
private external val Box2D: () -> Promise<JsAny>
812

9-
internal actual object Box2dWasmLoader {
13+
actual object Box2dWasmLoader {
1014
private var box2dWasmModule: JsAny? = null
11-
internal actual val box2dWasm: JsAny get() = requireNotNull(box2dWasmModule) { "Module 'kool-box2d-wasm' is not loaded" }
1215
private val box2dWasmPromise = Box2D()
13-
private var isLoaded: Boolean = false
16+
private var _isLoaded = false
17+
actual val isLoaded: Boolean get() = _isLoaded
18+
19+
internal actual val box2dWasm: JsAny get() = requireNotNull(box2dWasmModule) {
20+
"Module 'kool-box2d-wasm' is not loaded. Call loadModule() first"
21+
}
1422

1523
actual suspend fun loadModule() {
1624
if (!isLoaded) {
17-
box2dWasmPromise.then<JsAny> { module ->
18-
box2dWasmModule = module
19-
module
20-
}
25+
box2dWasmPromise.then<JsAny> { box2dWasmModule = it; it }
2126
}
2227
box2dWasmPromise.await<JsAny>()
23-
isLoaded = true
28+
_isLoaded = true
2429
}
2530

2631
fun checkIsLoaded() {
2732
if (!isLoaded) {
28-
throw IllegalStateException("Module 'kool-box2d-wasm' is not loaded. Call loadModule() first and wait for loading to be finished.")
33+
throw IllegalStateException("Module 'kool-box2d-wasm' is not loaded. Call loadModule() first.")
2934
}
3035
}
31-
32-
actual fun destroy(nativeObject: JsAny) {
33-
destroyJsNativeAny(box2dWasm, nativeObject)
34-
}
3536
}
3637

37-
private fun destroyJsNativeAny(module: JsAny, obj: JsAny): Unit = js("module.destroy(obj)")
38+
private fun destroyNative(module: JsAny, obj: DestroyableNative): Unit = js("module.destroy(obj)")
39+
actual fun DestroyableNative.destroy() = destroyNative(Box2dWasmLoader.box2dWasm, this)

0 commit comments

Comments
 (0)