Remove ThreeCanvas.kt

This commit is contained in:
Igor Dunaev 2023-12-09 00:41:38 +03:00
parent cb4d8af925
commit 5127e9ba78

View File

@ -1,67 +0,0 @@
package canvas
import kotlinx.browser.window
import org.w3c.dom.Element
import org.w3c.dom.HTMLCanvasElement
import space.kscience.visionforge.Colors
import three.WebGLRenderer
import three.cameras.PerspectiveCamera
import three.core.Object3D
import three.external.controls.OrbitControls
import three.scenes.Scene
/**
* This class is analogous to the class from VisionForge with the same name.
* I keep it here in case imports are broken (they are broken at the time i write this).
*/
internal class ThreeCanvas(
val element: Element,
) {
private val scene = Scene()
private val camera = PerspectiveCamera(75, 4.0 / 3.0, 0.1, 1000)
private val renderer = WebGLRenderer { antialias = true }.apply {
setClearColor(Colors.darkgray, 1)
toneMapping = 4 // ACES filmic tone mapping
}
private val canvas = (renderer.domElement as HTMLCanvasElement).apply {
className += "three-canvas"
style.apply {
width = "100%"
height = "100%"
display = "block"
}
}
init {
element.appendChild(canvas)
camera.position.z = 5.0
OrbitControls(camera, element)
updateSize()
window.onresize = { updateSize() }
renderer.setAnimationLoop {
renderer.render(scene, camera)
}
}
internal fun add(obj: Object3D) {
console.log("Adding objects...")
scene.add(obj)
}
internal fun remove(obj: Object3D) {
console.log("Removing objects...")
scene.remove(obj)
val geometriesInMemotyCount = renderer.asDynamic()["info"]["memory"]["geometries"].toString()
console.log("Geometries: $geometriesInMemotyCount")
}
private fun updateSize() {
val width = element.clientWidth
val height = element.clientHeight
canvas.width = width
canvas.height = height
renderer.setSize(width, height, false)
camera.aspect = width.toDouble() / height.toDouble()
camera.updateProjectionMatrix()
}
}